From 030e41607e55c047290a7a27d98b3883bdca3dea Mon Sep 17 00:00:00 2001 From: Roshan <48975233+Pythonberg1997@users.noreply.github.com> Date: Thu, 30 Nov 2023 19:36:54 +0800 Subject: [PATCH 01/28] feat: add new fork block and precompile contract for BEP294 and BEP299 (#1874) --- .github/workflows/build-test.yml | 4 +- .github/workflows/commit-lint.yml | 4 +- .github/workflows/integration-test.yml | 3 - .github/workflows/lint.yml | 6 +- .github/workflows/unit-test.yml | 6 +- accounts/abi/bind/bind_test.go | 2 +- consensus/parlia/abi.go | 5598 ++++++++++++++++-------- consensus/parlia/feynmanfork.go | 223 + consensus/parlia/fusionfork_test.go | 166 + consensus/parlia/parlia.go | 131 +- core/systemcontracts/const.go | 6 + core/systemcontracts/upgrade.go | 182 +- core/types/block.go | 67 +- core/vm/contracts.go | 124 +- core/vm/contracts_lightclient.go | 41 +- core/vm/contracts_lightclient_test.go | 39 + core/vm/contracts_test.go | 12 + core/vm/evm.go | 2 + go.mod | 2 +- go.sum | 4 +- miner/worker.go | 8 +- params/config.go | 40 +- params/protocol_params.go | 1 + signer/core/signed_data.go | 2 +- 24 files changed, 4846 insertions(+), 1827 deletions(-) create mode 100644 consensus/parlia/feynmanfork.go create mode 100644 consensus/parlia/fusionfork_test.go diff --git a/.github/workflows/build-test.yml b/.github/workflows/build-test.yml index f02434778c..159ab63769 100644 --- a/.github/workflows/build-test.yml +++ b/.github/workflows/build-test.yml @@ -7,9 +7,7 @@ on: - develop pull_request: - branches: - - master - - develop + jobs: unit-test: diff --git a/.github/workflows/commit-lint.yml b/.github/workflows/commit-lint.yml index 7df13ebcac..990ac35ffd 100644 --- a/.github/workflows/commit-lint.yml +++ b/.github/workflows/commit-lint.yml @@ -7,9 +7,7 @@ on: - develop pull_request: - branches: - - master - - develop + jobs: commitlint: diff --git a/.github/workflows/integration-test.yml b/.github/workflows/integration-test.yml index 234cbfda5b..0f1c5610df 100644 --- a/.github/workflows/integration-test.yml +++ b/.github/workflows/integration-test.yml @@ -7,9 +7,6 @@ on: - develop pull_request: - branches: - - master - - develop jobs: truffle-test: diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 6de9903987..2dd99153cd 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -7,9 +7,7 @@ on: - develop pull_request: - branches: - - master - - develop + jobs: golang-lint: @@ -44,7 +42,7 @@ jobs: ${{ runner.os }}-go- - run: | - go mod download + go mod tidy - name: golangci-lint uses: golangci/golangci-lint-action@v3 diff --git a/.github/workflows/unit-test.yml b/.github/workflows/unit-test.yml index b08f596363..2aeb4ec385 100644 --- a/.github/workflows/unit-test.yml +++ b/.github/workflows/unit-test.yml @@ -7,9 +7,7 @@ on: - develop pull_request: - branches: - - master - - develop + jobs: unit-test: @@ -50,6 +48,6 @@ jobs: ANDROID_HOME: "" # Skip android test run: | git submodule update --init --depth 1 --recursive - go mod download + go mod tidy make test diff --git a/accounts/abi/bind/bind_test.go b/accounts/abi/bind/bind_test.go index 4f7d7eb68c..fa07212913 100644 --- a/accounts/abi/bind/bind_test.go +++ b/accounts/abi/bind/bind_test.go @@ -2127,7 +2127,7 @@ func TestGolangBindings(t *testing.T) { t.Fatalf("failed to replace binding test dependency to current source tree: %v\n%s", err, out) } - replacer = exec.Command(gocmd, "mod", "edit", "-x", "-require", "github.com/tendermint/tendermint@v0.0.0", "-replace", "github.com/tendermint/tendermint=github.com/bnb-chain/tendermint@v0.31.15") // Repo root + replacer = exec.Command(gocmd, "mod", "edit", "-x", "-require", "github.com/tendermint/tendermint@v0.0.0", "-replace", "github.com/tendermint/tendermint=github.com/bnb-chain/tendermint@v0.31.16") // Repo root replacer.Dir = pkg if out, err := replacer.CombinedOutput(); err != nil { t.Fatalf("failed to replace tendermint dependency to bnb-chain source: %v\n%s", err, out) diff --git a/consensus/parlia/abi.go b/consensus/parlia/abi.go index ffe97a45ce..0b3b879c3a 100644 --- a/consensus/parlia/abi.go +++ b/consensus/parlia/abi.go @@ -1391,1733 +1391,3887 @@ const validatorSetABIBeforeLuban = ` ] ` +// TODO: update ABI const validatorSetABI = ` [ - { - "anonymous":false, - "inputs":[ - { - "indexed":false, - "internalType":"uint256", - "name":"amount", - "type":"uint256" - } - ], - "name":"batchTransfer", - "type":"event" - }, - { - "anonymous":false, - "inputs":[ - { - "indexed":true, - "internalType":"uint256", - "name":"amount", - "type":"uint256" - }, - { - "indexed":false, - "internalType":"string", - "name":"reason", - "type":"string" - } - ], - "name":"batchTransferFailed", - "type":"event" - }, - { - "anonymous":false, - "inputs":[ - { - "indexed":true, - "internalType":"uint256", - "name":"amount", - "type":"uint256" - }, - { - "indexed":false, - "internalType":"bytes", - "name":"reason", - "type":"bytes" - } - ], - "name":"batchTransferLowerFailed", - "type":"event" - }, - { - "anonymous":false, - "inputs":[ - { - "indexed":true, - "internalType":"address", - "name":"validator", - "type":"address" - }, - { - "indexed":false, - "internalType":"uint256", - "name":"amount", - "type":"uint256" - } - ], - "name":"deprecatedDeposit", - "type":"event" - }, - { - "anonymous":false, - "inputs":[ - { - "indexed":true, - "internalType":"address", - "name":"validator", - "type":"address" - }, - { - "indexed":false, - "internalType":"uint256", - "name":"amount", - "type":"uint256" - } - ], - "name":"deprecatedFinalityRewardDeposit", - "type":"event" - }, - { - "anonymous":false, - "inputs":[ - { - "indexed":true, - "internalType":"address payable", - "name":"validator", - "type":"address" - }, - { - "indexed":false, - "internalType":"uint256", - "name":"amount", - "type":"uint256" - } - ], - "name":"directTransfer", - "type":"event" - }, - { - "anonymous":false, - "inputs":[ - { - "indexed":true, - "internalType":"address payable", - "name":"validator", - "type":"address" - }, - { - "indexed":false, - "internalType":"uint256", - "name":"amount", - "type":"uint256" - } - ], - "name":"directTransferFail", - "type":"event" - }, - { - "anonymous":false, - "inputs":[ - { - "indexed":false, - "internalType":"string", - "name":"message", - "type":"string" - } - ], - "name":"failReasonWithStr", - "type":"event" - }, - { - "anonymous":false, - "inputs":[ - { - "indexed":false, - "internalType":"uint256", - "name":"amount", - "type":"uint256" - } - ], - "name":"feeBurned", - "type":"event" - }, - { - "anonymous":false, - "inputs":[ - { - "indexed":true, - "internalType":"address", - "name":"validator", - "type":"address" - }, - { - "indexed":false, - "internalType":"uint256", - "name":"amount", - "type":"uint256" - } - ], - "name":"finalityRewardDeposit", - "type":"event" - }, - { - "anonymous":false, - "inputs":[ - { - "indexed":false, - "internalType":"string", - "name":"key", - "type":"string" - }, - { - "indexed":false, - "internalType":"bytes", - "name":"value", - "type":"bytes" - } - ], - "name":"paramChange", - "type":"event" - }, - { - "anonymous":false, - "inputs":[ - { - "indexed":false, - "internalType":"uint256", - "name":"amount", - "type":"uint256" - } - ], - "name":"systemTransfer", - "type":"event" - }, - { - "anonymous":false, - "inputs":[ - { - "indexed":false, - "internalType":"uint8", - "name":"channelId", - "type":"uint8" - }, - { - "indexed":false, - "internalType":"bytes", - "name":"msgBytes", - "type":"bytes" - } - ], - "name":"unexpectedPackage", - "type":"event" - }, - { - "anonymous":false, - "inputs":[ - { - "indexed":true, - "internalType":"address", - "name":"validator", - "type":"address" - }, - { - "indexed":false, - "internalType":"uint256", - "name":"amount", - "type":"uint256" - } - ], - "name":"validatorDeposit", - "type":"event" - }, - { - "anonymous":false, - "inputs":[ - { - "indexed":true, - "internalType":"address", - "name":"validator", - "type":"address" - } - ], - "name":"validatorEmptyJailed", - "type":"event" - }, - { - "anonymous":false, - "inputs":[ - { - "indexed":true, - "internalType":"address", - "name":"validator", - "type":"address" - } - ], - "name":"validatorEnterMaintenance", - "type":"event" - }, - { - "anonymous":false, - "inputs":[ - { - "indexed":true, - "internalType":"address", - "name":"validator", - "type":"address" - } - ], - "name":"validatorExitMaintenance", - "type":"event" - }, - { - "anonymous":false, - "inputs":[ - { - "indexed":true, - "internalType":"address", - "name":"validator", - "type":"address" - }, - { - "indexed":false, - "internalType":"uint256", - "name":"amount", - "type":"uint256" - } - ], - "name":"validatorFelony", - "type":"event" - }, - { - "anonymous":false, - "inputs":[ - { - "indexed":true, - "internalType":"address", - "name":"validator", - "type":"address" - } - ], - "name":"validatorJailed", - "type":"event" - }, - { - "anonymous":false, - "inputs":[ - { - "indexed":true, - "internalType":"address", - "name":"validator", - "type":"address" - }, - { - "indexed":false, - "internalType":"uint256", - "name":"amount", - "type":"uint256" - } - ], - "name":"validatorMisdemeanor", - "type":"event" - }, - { - "anonymous":false, - "inputs":[ - - ], - "name":"validatorSetUpdated", - "type":"event" - }, - { - "inputs":[ - - ], - "name":"BIND_CHANNELID", - "outputs":[ - { - "internalType":"uint8", - "name":"", - "type":"uint8" - } - ], - "stateMutability":"view", - "type":"function" - }, - { - "inputs":[ - - ], - "name":"BURN_ADDRESS", - "outputs":[ - { - "internalType":"address", - "name":"", - "type":"address" - } - ], - "stateMutability":"view", - "type":"function" - }, - { - "inputs":[ - - ], - "name":"BURN_RATIO_SCALE", - "outputs":[ - { - "internalType":"uint256", - "name":"", - "type":"uint256" - } - ], - "stateMutability":"view", - "type":"function" - }, - { - "inputs":[ - - ], - "name":"CODE_OK", - "outputs":[ - { - "internalType":"uint32", - "name":"", - "type":"uint32" - } - ], - "stateMutability":"view", - "type":"function" - }, - { - "inputs":[ - - ], - "name":"CROSS_CHAIN_CONTRACT_ADDR", - "outputs":[ - { - "internalType":"address", - "name":"", - "type":"address" - } - ], - "stateMutability":"view", - "type":"function" - }, - { - "inputs":[ - - ], - "name":"CROSS_STAKE_CHANNELID", - "outputs":[ - { - "internalType":"uint8", - "name":"", - "type":"uint8" - } - ], - "stateMutability":"view", - "type":"function" - }, - { - "inputs":[ - - ], - "name":"DUSTY_INCOMING", - "outputs":[ - { - "internalType":"uint256", - "name":"", - "type":"uint256" - } - ], - "stateMutability":"view", - "type":"function" - }, - { - "inputs":[ - - ], - "name":"EPOCH", - "outputs":[ - { - "internalType":"uint256", - "name":"", - "type":"uint256" - } - ], - "stateMutability":"view", - "type":"function" - }, - { - "inputs":[ - - ], - "name":"ERROR_FAIL_CHECK_VALIDATORS", - "outputs":[ - { - "internalType":"uint32", - "name":"", - "type":"uint32" - } - ], - "stateMutability":"view", - "type":"function" - }, - { - "inputs":[ - - ], - "name":"ERROR_FAIL_DECODE", - "outputs":[ - { - "internalType":"uint32", - "name":"", - "type":"uint32" - } - ], - "stateMutability":"view", - "type":"function" - }, - { - "inputs":[ - - ], - "name":"ERROR_LEN_OF_VAL_MISMATCH", - "outputs":[ - { - "internalType":"uint32", - "name":"", - "type":"uint32" - } - ], - "stateMutability":"view", - "type":"function" - }, - { - "inputs":[ - - ], - "name":"ERROR_RELAYFEE_TOO_LARGE", - "outputs":[ - { - "internalType":"uint32", - "name":"", - "type":"uint32" - } - ], - "stateMutability":"view", - "type":"function" - }, - { - "inputs":[ - - ], - "name":"ERROR_UNKNOWN_PACKAGE_TYPE", - "outputs":[ - { - "internalType":"uint32", - "name":"", - "type":"uint32" - } - ], - "stateMutability":"view", - "type":"function" - }, - { - "inputs":[ - - ], - "name":"EXPIRE_TIME_SECOND_GAP", - "outputs":[ - { - "internalType":"uint256", - "name":"", - "type":"uint256" - } - ], - "stateMutability":"view", - "type":"function" - }, - { - "inputs":[ - - ], - "name":"GOV_CHANNELID", - "outputs":[ - { - "internalType":"uint8", - "name":"", - "type":"uint8" - } - ], - "stateMutability":"view", - "type":"function" - }, - { - "inputs":[ - - ], - "name":"GOV_HUB_ADDR", - "outputs":[ - { - "internalType":"address", - "name":"", - "type":"address" - } - ], - "stateMutability":"view", - "type":"function" - }, - { - "inputs":[ - - ], - "name":"INCENTIVIZE_ADDR", - "outputs":[ - { - "internalType":"address", - "name":"", - "type":"address" - } - ], - "stateMutability":"view", - "type":"function" - }, - { - "inputs":[ - - ], - "name":"INIT_BURN_RATIO", - "outputs":[ - { - "internalType":"uint256", - "name":"", - "type":"uint256" - } - ], - "stateMutability":"view", - "type":"function" - }, - { - "inputs":[ - - ], - "name":"INIT_FINALITY_REWARD_RATIO", - "outputs":[ - { - "internalType":"uint256", - "name":"", - "type":"uint256" - } - ], - "stateMutability":"view", - "type":"function" - }, - { - "inputs":[ - - ], - "name":"INIT_MAINTAIN_SLASH_SCALE", - "outputs":[ - { - "internalType":"uint256", - "name":"", - "type":"uint256" - } - ], - "stateMutability":"view", - "type":"function" - }, - { - "inputs":[ - - ], - "name":"INIT_MAX_NUM_OF_MAINTAINING", - "outputs":[ - { - "internalType":"uint256", - "name":"", - "type":"uint256" - } - ], - "stateMutability":"view", - "type":"function" - }, - { - "inputs":[ - - ], - "name":"INIT_NUM_OF_CABINETS", - "outputs":[ - { - "internalType":"uint256", - "name":"", - "type":"uint256" - } - ], - "stateMutability":"view", - "type":"function" - }, - { - "inputs":[ - - ], - "name":"INIT_VALIDATORSET_BYTES", - "outputs":[ - { - "internalType":"bytes", - "name":"", - "type":"bytes" - } - ], - "stateMutability":"view", - "type":"function" - }, - { - "inputs":[ - - ], - "name":"JAIL_MESSAGE_TYPE", - "outputs":[ - { - "internalType":"uint8", - "name":"", - "type":"uint8" - } - ], - "stateMutability":"view", - "type":"function" - }, - { - "inputs":[ - - ], - "name":"LIGHT_CLIENT_ADDR", - "outputs":[ - { - "internalType":"address", - "name":"", - "type":"address" - } - ], - "stateMutability":"view", - "type":"function" - }, - { - "inputs":[ - - ], - "name":"MAX_NUM_OF_VALIDATORS", - "outputs":[ - { - "internalType":"uint256", - "name":"", - "type":"uint256" - } - ], - "stateMutability":"view", - "type":"function" - }, - { - "inputs":[ - - ], - "name":"PRECISION", - "outputs":[ - { - "internalType":"uint256", - "name":"", - "type":"uint256" - } - ], - "stateMutability":"view", - "type":"function" - }, - { - "inputs":[ - - ], - "name":"RELAYERHUB_CONTRACT_ADDR", - "outputs":[ - { - "internalType":"address", - "name":"", - "type":"address" - } - ], - "stateMutability":"view", - "type":"function" - }, - { - "inputs":[ - - ], - "name":"SLASH_CHANNELID", - "outputs":[ - { - "internalType":"uint8", - "name":"", - "type":"uint8" - } - ], - "stateMutability":"view", - "type":"function" - }, - { - "inputs":[ - - ], - "name":"SLASH_CONTRACT_ADDR", - "outputs":[ - { - "internalType":"address", - "name":"", - "type":"address" - } - ], - "stateMutability":"view", - "type":"function" - }, - { - "inputs":[ - - ], - "name":"STAKING_CHANNELID", - "outputs":[ - { - "internalType":"uint8", - "name":"", - "type":"uint8" - } - ], - "stateMutability":"view", - "type":"function" - }, - { - "inputs":[ - - ], - "name":"STAKING_CONTRACT_ADDR", - "outputs":[ - { - "internalType":"address", - "name":"", - "type":"address" - } - ], - "stateMutability":"view", - "type":"function" - }, - { - "inputs":[ - - ], - "name":"SYSTEM_REWARD_ADDR", - "outputs":[ - { - "internalType":"address", - "name":"", - "type":"address" - } - ], - "stateMutability":"view", - "type":"function" - }, - { - "inputs":[ - - ], - "name":"TOKEN_HUB_ADDR", - "outputs":[ - { - "internalType":"address", - "name":"", - "type":"address" - } - ], - "stateMutability":"view", - "type":"function" - }, - { - "inputs":[ - - ], - "name":"TOKEN_MANAGER_ADDR", - "outputs":[ - { - "internalType":"address", - "name":"", - "type":"address" - } - ], - "stateMutability":"view", - "type":"function" - }, - { - "inputs":[ - - ], - "name":"TRANSFER_IN_CHANNELID", - "outputs":[ - { - "internalType":"uint8", - "name":"", - "type":"uint8" - } - ], - "stateMutability":"view", - "type":"function" - }, - { - "inputs":[ - - ], - "name":"TRANSFER_OUT_CHANNELID", - "outputs":[ - { - "internalType":"uint8", - "name":"", - "type":"uint8" - } - ], - "stateMutability":"view", - "type":"function" - }, - { - "inputs":[ - - ], - "name":"VALIDATORS_UPDATE_MESSAGE_TYPE", - "outputs":[ - { - "internalType":"uint8", - "name":"", - "type":"uint8" - } - ], - "stateMutability":"view", - "type":"function" - }, - { - "inputs":[ - - ], - "name":"VALIDATOR_CONTRACT_ADDR", - "outputs":[ - { - "internalType":"address", - "name":"", - "type":"address" - } - ], - "stateMutability":"view", - "type":"function" - }, - { - "inputs":[ - - ], - "name":"alreadyInit", - "outputs":[ - { - "internalType":"bool", - "name":"", - "type":"bool" - } - ], - "stateMutability":"view", - "type":"function" - }, - { - "inputs":[ - - ], - "name":"bscChainID", - "outputs":[ - { - "internalType":"uint16", - "name":"", - "type":"uint16" - } - ], - "stateMutability":"view", - "type":"function" - }, - { - "inputs":[ - - ], - "name":"burnRatio", - "outputs":[ - { - "internalType":"uint256", - "name":"", - "type":"uint256" - } - ], - "stateMutability":"view", - "type":"function" - }, - { - "inputs":[ - - ], - "name":"burnRatioInitialized", - "outputs":[ - { - "internalType":"bool", - "name":"", - "type":"bool" - } - ], - "stateMutability":"view", - "type":"function" - }, - { - "inputs":[ - { - "internalType":"uint256", - "name":"index", - "type":"uint256" - } - ], - "name":"canEnterMaintenance", - "outputs":[ - { - "internalType":"bool", - "name":"", - "type":"bool" - } - ], - "stateMutability":"view", - "type":"function" - }, - { - "inputs":[ - { - "internalType":"uint256", - "name":"", - "type":"uint256" - } - ], - "name":"currentValidatorSet", - "outputs":[ - { - "internalType":"address", - "name":"consensusAddress", - "type":"address" - }, - { - "internalType":"address payable", - "name":"feeAddress", - "type":"address" - }, - { - "internalType":"address", - "name":"BBCFeeAddress", - "type":"address" - }, - { - "internalType":"uint64", - "name":"votingPower", - "type":"uint64" - }, - { - "internalType":"bool", - "name":"jailed", - "type":"bool" - }, - { - "internalType":"uint256", - "name":"incoming", - "type":"uint256" - } - ], - "stateMutability":"view", - "type":"function" - }, - { - "inputs":[ - { - "internalType":"address", - "name":"", - "type":"address" - } - ], - "name":"currentValidatorSetMap", - "outputs":[ - { - "internalType":"uint256", - "name":"", - "type":"uint256" - } - ], - "stateMutability":"view", - "type":"function" - }, - { - "inputs":[ - { - "internalType":"address", - "name":"valAddr", - "type":"address" - } - ], - "name":"deposit", - "outputs":[ - - ], - "stateMutability":"payable", - "type":"function" - }, - { - "inputs":[ - { - "internalType":"address[]", - "name":"valAddrs", - "type":"address[]" - }, - { - "internalType":"uint256[]", - "name":"weights", - "type":"uint256[]" - } - ], - "name":"distributeFinalityReward", - "outputs":[ - - ], - "stateMutability":"nonpayable", - "type":"function" - }, - { - "inputs":[ - - ], - "name":"enterMaintenance", - "outputs":[ - - ], - "stateMutability":"nonpayable", - "type":"function" - }, - { - "inputs":[ - - ], - "name":"exitMaintenance", - "outputs":[ - - ], - "stateMutability":"nonpayable", - "type":"function" - }, - { - "inputs":[ - - ], - "name":"expireTimeSecondGap", - "outputs":[ - { - "internalType":"uint256", - "name":"", - "type":"uint256" - } - ], - "stateMutability":"view", - "type":"function" - }, - { - "inputs":[ - { - "internalType":"address", - "name":"validator", - "type":"address" - } - ], - "name":"felony", - "outputs":[ - - ], - "stateMutability":"nonpayable", - "type":"function" - }, - { - "inputs":[ - - ], - "name":"finalityRewardRatio", - "outputs":[ - { - "internalType":"uint256", - "name":"", - "type":"uint256" - } - ], - "stateMutability":"view", - "type":"function" - }, - { - "inputs":[ - { - "internalType":"address", - "name":"_validator", - "type":"address" - } - ], - "name":"getCurrentValidatorIndex", - "outputs":[ - { - "internalType":"uint256", - "name":"", - "type":"uint256" - } - ], - "stateMutability":"view", - "type":"function" - }, - { - "inputs":[ - { - "internalType":"address", - "name":"validator", - "type":"address" - } - ], - "name":"getIncoming", - "outputs":[ - { - "internalType":"uint256", - "name":"", - "type":"uint256" - } - ], - "stateMutability":"view", - "type":"function" - }, - { - "inputs":[ - - ], - "name":"getLivingValidators", - "outputs":[ - { - "internalType":"address[]", - "name":"", - "type":"address[]" - }, - { - "internalType":"bytes[]", - "name":"", - "type":"bytes[]" - } - ], - "stateMutability":"view", - "type":"function" - }, - { - "inputs":[ - - ], - "name":"getMiningValidators", - "outputs":[ - { - "internalType":"address[]", - "name":"", - "type":"address[]" - }, - { - "internalType":"bytes[]", - "name":"", - "type":"bytes[]" - } - ], - "stateMutability":"view", - "type":"function" - }, - { - "inputs":[ - - ], - "name":"getValidators", - "outputs":[ - { - "internalType":"address[]", - "name":"", - "type":"address[]" - } - ], - "stateMutability":"view", - "type":"function" - }, - { - "inputs":[ - - ], - "name":"getWorkingValidatorCount", - "outputs":[ - { - "internalType":"uint256", - "name":"workingValidatorCount", - "type":"uint256" - } - ], - "stateMutability":"view", - "type":"function" - }, - { - "inputs":[ - { - "internalType":"uint8", - "name":"channelId", - "type":"uint8" - }, - { - "internalType":"bytes", - "name":"msgBytes", - "type":"bytes" - } - ], - "name":"handleAckPackage", - "outputs":[ - - ], - "stateMutability":"nonpayable", - "type":"function" - }, - { - "inputs":[ - { - "internalType":"uint8", - "name":"channelId", - "type":"uint8" - }, - { - "internalType":"bytes", - "name":"msgBytes", - "type":"bytes" - } - ], - "name":"handleFailAckPackage", - "outputs":[ - - ], - "stateMutability":"nonpayable", - "type":"function" - }, - { - "inputs":[ - { - "internalType":"uint8", - "name":"", - "type":"uint8" - }, - { - "internalType":"bytes", - "name":"msgBytes", - "type":"bytes" - } - ], - "name":"handleSynPackage", - "outputs":[ - { - "internalType":"bytes", - "name":"responsePayload", - "type":"bytes" - } - ], - "stateMutability":"nonpayable", - "type":"function" - }, - { - "inputs":[ - - ], - "name":"init", - "outputs":[ - - ], - "stateMutability":"nonpayable", - "type":"function" - }, - { - "inputs":[ - { - "internalType":"address", - "name":"validator", - "type":"address" - } - ], - "name":"isCurrentValidator", - "outputs":[ - { - "internalType":"bool", - "name":"", - "type":"bool" - } - ], - "stateMutability":"view", - "type":"function" - }, - { - "inputs":[ - { - "internalType":"uint256", - "name":"index", - "type":"uint256" - } - ], - "name":"isWorkingValidator", - "outputs":[ - { - "internalType":"bool", - "name":"", - "type":"bool" - } - ], - "stateMutability":"view", - "type":"function" - }, - { - "inputs":[ - - ], - "name":"maintainSlashScale", - "outputs":[ - { - "internalType":"uint256", - "name":"", - "type":"uint256" - } - ], - "stateMutability":"view", - "type":"function" - }, - { - "inputs":[ - - ], - "name":"maxNumOfCandidates", - "outputs":[ - { - "internalType":"uint256", - "name":"", - "type":"uint256" - } - ], - "stateMutability":"view", - "type":"function" - }, - { - "inputs":[ - - ], - "name":"maxNumOfMaintaining", - "outputs":[ - { - "internalType":"uint256", - "name":"", - "type":"uint256" - } - ], - "stateMutability":"view", - "type":"function" - }, - { - "inputs":[ - - ], - "name":"maxNumOfWorkingCandidates", - "outputs":[ - { - "internalType":"uint256", - "name":"", - "type":"uint256" - } - ], - "stateMutability":"view", - "type":"function" - }, - { - "inputs":[ - { - "internalType":"address", - "name":"validator", - "type":"address" - } - ], - "name":"misdemeanor", - "outputs":[ - - ], - "stateMutability":"nonpayable", - "type":"function" - }, - { - "inputs":[ - - ], - "name":"numOfCabinets", - "outputs":[ - { - "internalType":"uint256", - "name":"", - "type":"uint256" - } - ], - "stateMutability":"view", - "type":"function" - }, - { - "inputs":[ - - ], - "name":"numOfJailed", - "outputs":[ - { - "internalType":"uint256", - "name":"", - "type":"uint256" - } - ], - "stateMutability":"view", - "type":"function" - }, - { - "inputs":[ - - ], - "name":"numOfMaintaining", - "outputs":[ - { - "internalType":"uint256", - "name":"", - "type":"uint256" - } - ], - "stateMutability":"view", - "type":"function" - }, - { - "inputs":[ - - ], - "name":"previousHeight", - "outputs":[ - { - "internalType":"uint256", - "name":"", - "type":"uint256" - } - ], - "stateMutability":"view", - "type":"function" - }, - { - "inputs":[ - - ], - "name":"totalInComing", - "outputs":[ - { - "internalType":"uint256", - "name":"", - "type":"uint256" - } - ], - "stateMutability":"view", - "type":"function" - }, - { - "inputs":[ - { - "internalType":"string", - "name":"key", - "type":"string" - }, - { - "internalType":"bytes", - "name":"value", - "type":"bytes" - } - ], - "name":"updateParam", - "outputs":[ - - ], - "stateMutability":"nonpayable", - "type":"function" - }, - { - "inputs":[ - { - "internalType":"uint256", - "name":"", - "type":"uint256" - } - ], - "name":"validatorExtraSet", - "outputs":[ - { - "internalType":"uint256", - "name":"enterMaintenanceHeight", - "type":"uint256" - }, - { - "internalType":"bool", - "name":"isMaintaining", - "type":"bool" - }, - { - "internalType":"bytes", - "name":"voteAddress", - "type":"bytes" - } - ], - "stateMutability":"view", - "type":"function" - }, - { - "stateMutability":"payable", - "type":"receive" - } + { + "type": "receive", + "stateMutability": "payable" + }, + { + "type": "function", + "name": "BIND_CHANNELID", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint8", + "internalType": "uint8" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "BURN_ADDRESS", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "BURN_RATIO_SCALE", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "CODE_OK", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint32", + "internalType": "uint32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "CROSS_CHAIN_CONTRACT_ADDR", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "CROSS_STAKE_CHANNELID", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint8", + "internalType": "uint8" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "DUSTY_INCOMING", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "EPOCH", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "ERROR_FAIL_CHECK_VALIDATORS", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint32", + "internalType": "uint32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "ERROR_FAIL_DECODE", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint32", + "internalType": "uint32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "ERROR_LEN_OF_VAL_MISMATCH", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint32", + "internalType": "uint32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "ERROR_RELAYFEE_TOO_LARGE", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint32", + "internalType": "uint32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "ERROR_UNKNOWN_PACKAGE_TYPE", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint32", + "internalType": "uint32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "EXPIRE_TIME_SECOND_GAP", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "GOVERNOR_ADDR", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "GOV_CHANNELID", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint8", + "internalType": "uint8" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "GOV_HUB_ADDR", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "INCENTIVIZE_ADDR", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "INIT_BURN_RATIO", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "INIT_MAINTAIN_SLASH_SCALE", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "INIT_MAX_NUM_OF_MAINTAINING", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "INIT_NUM_OF_CABINETS", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "INIT_SYSTEM_REWARD_RATIO", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "INIT_VALIDATORSET_BYTES", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bytes", + "internalType": "bytes" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "JAIL_MESSAGE_TYPE", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint8", + "internalType": "uint8" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "LIGHT_CLIENT_ADDR", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "MAX_NUM_OF_VALIDATORS", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "MAX_SYSTEM_REWARD_BALANCE", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "PRECISION", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "RELAYERHUB_CONTRACT_ADDR", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "SLASH_CHANNELID", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint8", + "internalType": "uint8" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "SLASH_CONTRACT_ADDR", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "STAKE_HUB_ADDR", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "STAKING_CHANNELID", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint8", + "internalType": "uint8" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "STAKING_CONTRACT_ADDR", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "SYSTEM_REWARD_ADDR", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "SYSTEM_REWARD_RATIO_SCALE", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "TOKEN_HUB_ADDR", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "TOKEN_MANAGER_ADDR", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "TOKEN_RECOVER_PORTAL_ADDR", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "TRANSFER_IN_CHANNELID", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint8", + "internalType": "uint8" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "TRANSFER_OUT_CHANNELID", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint8", + "internalType": "uint8" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "VALIDATORS_UPDATE_MESSAGE_TYPE", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint8", + "internalType": "uint8" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "VALIDATOR_CONTRACT_ADDR", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "alreadyInit", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "bscChainID", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint16", + "internalType": "uint16" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "burnRatio", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "burnRatioInitialized", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "canEnterMaintenance", + "inputs": [ + { + "name": "index", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "currentValidatorSet", + "inputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "consensusAddress", + "type": "address", + "internalType": "address" + }, + { + "name": "feeAddress", + "type": "address", + "internalType": "address payable" + }, + { + "name": "BBCFeeAddress", + "type": "address", + "internalType": "address" + }, + { + "name": "votingPower", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "jailed", + "type": "bool", + "internalType": "bool" + }, + { + "name": "incoming", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "currentValidatorSetMap", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "currentVoteAddrFullSet", + "inputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "bytes", + "internalType": "bytes" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "deposit", + "inputs": [ + { + "name": "valAddr", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "function", + "name": "distributeFinalityReward", + "inputs": [ + { + "name": "valAddrs", + "type": "address[]", + "internalType": "address[]" + }, + { + "name": "weights", + "type": "uint256[]", + "internalType": "uint256[]" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "enterMaintenance", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "exitMaintenance", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "expireTimeSecondGap", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "felony", + "inputs": [ + { + "name": "validator", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "getCurrentValidatorIndex", + "inputs": [ + { + "name": "_validator", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getIncoming", + "inputs": [ + { + "name": "validator", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getLivingValidators", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address[]", + "internalType": "address[]" + }, + { + "name": "", + "type": "bytes[]", + "internalType": "bytes[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getMiningValidators", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address[]", + "internalType": "address[]" + }, + { + "name": "", + "type": "bytes[]", + "internalType": "bytes[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getValidators", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address[]", + "internalType": "address[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getWorkingValidatorCount", + "inputs": [], + "outputs": [ + { + "name": "workingValidatorCount", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "handleAckPackage", + "inputs": [ + { + "name": "channelId", + "type": "uint8", + "internalType": "uint8" + }, + { + "name": "msgBytes", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "handleFailAckPackage", + "inputs": [ + { + "name": "channelId", + "type": "uint8", + "internalType": "uint8" + }, + { + "name": "msgBytes", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "handleSynPackage", + "inputs": [ + { + "name": "", + "type": "uint8", + "internalType": "uint8" + }, + { + "name": "msgBytes", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [ + { + "name": "responsePayload", + "type": "bytes", + "internalType": "bytes" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "init", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "isCurrentValidator", + "inputs": [ + { + "name": "validator", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "isMonitoredForMaliciousVote", + "inputs": [ + { + "name": "voteAddr", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "isSystemRewardIncluded", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "isWorkingValidator", + "inputs": [ + { + "name": "index", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "jailValidator", + "inputs": [ + { + "name": "consensusAddress", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "maintainSlashScale", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "maxNumOfCandidates", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "maxNumOfMaintaining", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "maxNumOfWorkingCandidates", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "misdemeanor", + "inputs": [ + { + "name": "validator", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "numOfCabinets", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "numOfJailed", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "numOfMaintaining", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "previousBalanceOfSystemReward", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "previousHeight", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "previousVoteAddrFullSet", + "inputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "bytes", + "internalType": "bytes" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "systemRewardRatio", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "totalInComing", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "updateParam", + "inputs": [ + { + "name": "key", + "type": "string", + "internalType": "string" + }, + { + "name": "value", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "updateValidatorSetV2", + "inputs": [ + { + "name": "_consensusAddrs", + "type": "address[]", + "internalType": "address[]" + }, + { + "name": "_votingPowers", + "type": "uint64[]", + "internalType": "uint64[]" + }, + { + "name": "_voteAddrs", + "type": "bytes[]", + "internalType": "bytes[]" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "validatorExtraSet", + "inputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "enterMaintenanceHeight", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "isMaintaining", + "type": "bool", + "internalType": "bool" + }, + { + "name": "voteAddress", + "type": "bytes", + "internalType": "bytes" + } + ], + "stateMutability": "view" + }, + { + "type": "event", + "name": "batchTransfer", + "inputs": [ + { + "name": "amount", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "batchTransferFailed", + "inputs": [ + { + "name": "amount", + "type": "uint256", + "indexed": true, + "internalType": "uint256" + }, + { + "name": "reason", + "type": "string", + "indexed": false, + "internalType": "string" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "batchTransferLowerFailed", + "inputs": [ + { + "name": "amount", + "type": "uint256", + "indexed": true, + "internalType": "uint256" + }, + { + "name": "reason", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "deprecatedDeposit", + "inputs": [ + { + "name": "validator", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "deprecatedFinalityRewardDeposit", + "inputs": [ + { + "name": "validator", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "directTransfer", + "inputs": [ + { + "name": "validator", + "type": "address", + "indexed": true, + "internalType": "address payable" + }, + { + "name": "amount", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "directTransferFail", + "inputs": [ + { + "name": "validator", + "type": "address", + "indexed": true, + "internalType": "address payable" + }, + { + "name": "amount", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "failReasonWithStr", + "inputs": [ + { + "name": "message", + "type": "string", + "indexed": false, + "internalType": "string" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "feeBurned", + "inputs": [ + { + "name": "amount", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "finalityRewardDeposit", + "inputs": [ + { + "name": "validator", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "paramChange", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "value", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "systemTransfer", + "inputs": [ + { + "name": "amount", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "unexpectedPackage", + "inputs": [ + { + "name": "channelId", + "type": "uint8", + "indexed": false, + "internalType": "uint8" + }, + { + "name": "msgBytes", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "validatorDeposit", + "inputs": [ + { + "name": "validator", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "validatorEmptyJailed", + "inputs": [ + { + "name": "validator", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "validatorEnterMaintenance", + "inputs": [ + { + "name": "validator", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "validatorExitMaintenance", + "inputs": [ + { + "name": "validator", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "validatorFelony", + "inputs": [ + { + "name": "validator", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "validatorJailed", + "inputs": [ + { + "name": "validator", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "validatorMisdemeanor", + "inputs": [ + { + "name": "validator", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "validatorSetUpdated", + "inputs": [], + "anonymous": false + } ] ` const slashABI = ` [ - { - "anonymous": false, - "inputs": [], - "name": "indicatorCleaned", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "validator", - "type": "address" - } - ], - "name": "validatorSlashed", - "type": "event" - }, - { - "inputs": [], - "name": "FELONY_THRESHOLD", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "MISDEMEANOR_THRESHOLD", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "SYSTEM_ADDRESS", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "VALIDATOR_CONTRACT_ADDR", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "previousHeight", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "validator", - "type": "address" - } - ], - "name": "slash", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "clean", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "validator", - "type": "address" - } - ], - "name": "getSlashIndicator", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - } - ] + { + "anonymous": false, + "inputs": [], + "name": "crashResponse", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "validator", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "slashCount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "failReason", + "type": "bytes" + } + ], + "name": "failedFelony", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "voteAddrSlice", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "failReason", + "type": "bytes" + } + ], + "name": "failedMaliciousVoteSlash", + "type": "event" + }, + { + "anonymous": false, + "inputs": [], + "name": "indicatorCleaned", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint32", + "name": "code", + "type": "uint32" + } + ], + "name": "knownResponse", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "voteAddrSlice", + "type": "bytes32" + } + ], + "name": "maliciousVoteSlashed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "key", + "type": "string" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "value", + "type": "bytes" + } + ], + "name": "paramChange", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint32", + "name": "code", + "type": "uint32" + } + ], + "name": "unKnownResponse", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "validator", + "type": "address" + } + ], + "name": "validatorSlashed", + "type": "event" + }, + { + "inputs": [], + "name": "BIND_CHANNELID", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "BSC_RELAYER_REWARD", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "CODE_OK", + "outputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "CROSS_CHAIN_CONTRACT_ADDR", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "CROSS_STAKE_CHANNELID", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "DECREASE_RATE", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "ERROR_FAIL_DECODE", + "outputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "FELONY_THRESHOLD", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "GOV_CHANNELID", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "GOV_HUB_ADDR", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "INCENTIVIZE_ADDR", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "INIT_FINALITY_SLASH_REWARD_RATIO", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "LIGHT_CLIENT_ADDR", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "MISDEMEANOR_THRESHOLD", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "RELAYERHUB_CONTRACT_ADDR", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "SLASH_CHANNELID", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "SLASH_CONTRACT_ADDR", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "STAKE_HUB_ADDR", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "STAKING_CHANNELID", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "STAKING_CONTRACT_ADDR", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "SYSTEM_REWARD_ADDR", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "TOKEN_HUB_ADDR", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "TOKEN_MANAGER_ADDR", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "TRANSFER_IN_CHANNELID", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "TRANSFER_OUT_CHANNELID", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "VALIDATOR_CONTRACT_ADDR", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "alreadyInit", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "bscChainID", + "outputs": [ + { + "internalType": "uint16", + "name": "", + "type": "uint16" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "clean", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "validator", + "type": "address" + }, + { + "internalType": "uint256", + "name": "count", + "type": "uint256" + } + ], + "name": "downtimeSlash", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "enableMaliciousVoteSlash", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "felonyThreshold", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "finalitySlashRewardRatio", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "validator", + "type": "address" + } + ], + "name": "getSlashIndicator", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getSlashThresholds", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + }, + { + "internalType": "bytes", + "name": "msgBytes", + "type": "bytes" + } + ], + "name": "handleAckPackage", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "name": "handleFailAckPackage", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "name": "handleSynPackage", + "outputs": [ + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "indicators", + "outputs": [ + { + "internalType": "uint256", + "name": "height", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "count", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "exist", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "init", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "misdemeanorThreshold", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "previousHeight", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "validator", + "type": "address" + } + ], + "name": "sendFelonyPackage", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "validator", + "type": "address" + } + ], + "name": "slash", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "header1", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "header2", + "type": "bytes" + } + ], + "name": "submitDoubleSignEvidence", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "components": [ + { + "internalType": "uint256", + "name": "srcNum", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "srcHash", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "tarNum", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "tarHash", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "sig", + "type": "bytes" + } + ], + "internalType": "struct SlashIndicator.VoteData", + "name": "voteA", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "srcNum", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "srcHash", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "tarNum", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "tarHash", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "sig", + "type": "bytes" + } + ], + "internalType": "struct SlashIndicator.VoteData", + "name": "voteB", + "type": "tuple" + }, + { + "internalType": "bytes", + "name": "voteAddr", + "type": "bytes" + } + ], + "internalType": "struct SlashIndicator.FinalityEvidence", + "name": "_evidence", + "type": "tuple" + } + ], + "name": "submitFinalityViolationEvidence", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "key", + "type": "string" + }, + { + "internalType": "bytes", + "name": "value", + "type": "bytes" + } + ], + "name": "updateParam", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "validators", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + } +] +` + +// TODO: update ABI +const stakeABI = ` +[ + { + "type": "receive", + "stateMutability": "payable" + }, + { + "type": "function", + "name": "DEAD_ADDRESS", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "INIT_LOCK_AMOUNT", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "REDELEGATE_FEE_RATE_BASE", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "addToBlackList", + "inputs": [ + { + "name": "account", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "assetProtector", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "blackList", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "claim", + "inputs": [ + { + "name": "operatorAddress", + "type": "address", + "internalType": "address" + }, + { + "name": "requestNumber", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "createValidator", + "inputs": [ + { + "name": "consensusAddress", + "type": "address", + "internalType": "address" + }, + { + "name": "voteAddress", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "blsProof", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "commission", + "type": "tuple", + "internalType": "struct StakeHub.Commission", + "components": [ + { + "name": "rate", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "maxRate", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "maxChangeRate", + "type": "uint64", + "internalType": "uint64" + } + ] + }, + { + "name": "description", + "type": "tuple", + "internalType": "struct StakeHub.Description", + "components": [ + { + "name": "moniker", + "type": "string", + "internalType": "string" + }, + { + "name": "identity", + "type": "string", + "internalType": "string" + }, + { + "name": "website", + "type": "string", + "internalType": "string" + }, + { + "name": "details", + "type": "string", + "internalType": "string" + } + ] + } + ], + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "function", + "name": "delegate", + "inputs": [ + { + "name": "operatorAddress", + "type": "address", + "internalType": "address" + }, + { + "name": "delegateVotePower", + "type": "bool", + "internalType": "bool" + } + ], + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "function", + "name": "distributeReward", + "inputs": [ + { + "name": "consensusAddress", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "function", + "name": "doubleSignSlash", + "inputs": [ + { + "name": "consensusAddress", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "downtimeJailTime", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "downtimeSlash", + "inputs": [ + { + "name": "consensusAddress", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "downtimeSlashAmount", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "editCommissionRate", + "inputs": [ + { + "name": "commissionRate", + "type": "uint64", + "internalType": "uint64" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "editConsensusAddress", + "inputs": [ + { + "name": "newConsensusAddress", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "editDescription", + "inputs": [ + { + "name": "description", + "type": "tuple", + "internalType": "struct StakeHub.Description", + "components": [ + { + "name": "moniker", + "type": "string", + "internalType": "string" + }, + { + "name": "identity", + "type": "string", + "internalType": "string" + }, + { + "name": "website", + "type": "string", + "internalType": "string" + }, + { + "name": "details", + "type": "string", + "internalType": "string" + } + ] + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "editVoteAddress", + "inputs": [ + { + "name": "newVoteAddress", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "blsProof", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "felonyJailTime", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "felonySlashAmount", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getOperatorAddressByConsensusAddress", + "inputs": [ + { + "name": "consensusAddress", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getOperatorAddressByVoteAddress", + "inputs": [ + { + "name": "voteAddress", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getValidatorBasicInfo", + "inputs": [ + { + "name": "operatorAddress", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "consensusAddress", + "type": "address", + "internalType": "address" + }, + { + "name": "creditContract", + "type": "address", + "internalType": "address" + }, + { + "name": "voteAddress", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "jailed", + "type": "bool", + "internalType": "bool" + }, + { + "name": "jailUntil", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getValidatorCommission", + "inputs": [ + { + "name": "operatorAddress", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "tuple", + "internalType": "struct StakeHub.Commission", + "components": [ + { + "name": "rate", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "maxRate", + "type": "uint64", + "internalType": "uint64" + }, + { + "name": "maxChangeRate", + "type": "uint64", + "internalType": "uint64" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getValidatorDescription", + "inputs": [ + { + "name": "operatorAddress", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "tuple", + "internalType": "struct StakeHub.Description", + "components": [ + { + "name": "moniker", + "type": "string", + "internalType": "string" + }, + { + "name": "identity", + "type": "string", + "internalType": "string" + }, + { + "name": "website", + "type": "string", + "internalType": "string" + }, + { + "name": "details", + "type": "string", + "internalType": "string" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getValidatorElectionInfo", + "inputs": [ + { + "name": "offset", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "limit", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "consensusAddrs", + "type": "address[]", + "internalType": "address[]" + }, + { + "name": "votingPowers", + "type": "uint256[]", + "internalType": "uint256[]" + }, + { + "name": "voteAddrs", + "type": "bytes[]", + "internalType": "bytes[]" + }, + { + "name": "totalLength", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "initialize", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "isPaused", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "maliciousVoteSlash", + "inputs": [ + { + "name": "_voteAddr", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "maxElectedValidators", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "minDelegationBNBChange", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "minSelfDelegationBNB", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "numOfJailed", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "pause", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "redelegate", + "inputs": [ + { + "name": "srcValidator", + "type": "address", + "internalType": "address" + }, + { + "name": "dstValidator", + "type": "address", + "internalType": "address" + }, + { + "name": "shares", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "delegateVotePower", + "type": "bool", + "internalType": "bool" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "redelegateFeeRate", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "removeFromBlackList", + "inputs": [ + { + "name": "account", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "resume", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "syncGovToken", + "inputs": [ + { + "name": "operatorAddresses", + "type": "address[]", + "internalType": "address[]" + }, + { + "name": "account", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "transferGasLimit", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "unbondPeriod", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "undelegate", + "inputs": [ + { + "name": "operatorAddress", + "type": "address", + "internalType": "address" + }, + { + "name": "shares", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "unjail", + "inputs": [ + { + "name": "operatorAddress", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "updateParam", + "inputs": [ + { + "name": "key", + "type": "string", + "internalType": "string" + }, + { + "name": "value", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "event", + "name": "Claimed", + "inputs": [ + { + "name": "operatorAddress", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "delegator", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "bnbAmount", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "CommissionRateEdited", + "inputs": [ + { + "name": "operatorAddress", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "commissionRate", + "type": "uint64", + "indexed": false, + "internalType": "uint64" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "ConsensusAddressEdited", + "inputs": [ + { + "name": "operatorAddress", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "newConsensusAddress", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Delegated", + "inputs": [ + { + "name": "operatorAddress", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "delegator", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "shares", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "bnbAmount", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "DescriptionEdited", + "inputs": [ + { + "name": "operatorAddress", + "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": "ParamChange", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "value", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Paused", + "inputs": [], + "anonymous": false + }, + { + "type": "event", + "name": "Redelegated", + "inputs": [ + { + "name": "srcValidator", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "dstValidator", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "delegator", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "oldShares", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "newShares", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "bnbAmount", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Resumed", + "inputs": [], + "anonymous": false + }, + { + "type": "event", + "name": "RewardDistributeFailed", + "inputs": [ + { + "name": "operatorAddress", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "failReason", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "RewardDistributed", + "inputs": [ + { + "name": "operatorAddress", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "reward", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Undelegated", + "inputs": [ + { + "name": "operatorAddress", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "delegator", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "shares", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "bnbAmount", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "ValidatorCreated", + "inputs": [ + { + "name": "consensusAddress", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "operatorAddress", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "creditContract", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "voteAddress", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "ValidatorEmptyJailed", + "inputs": [ + { + "name": "operatorAddress", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "ValidatorJailed", + "inputs": [ + { + "name": "operatorAddress", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "ValidatorSlashed", + "inputs": [ + { + "name": "operatorAddress", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "jailUntil", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "slashAmount", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "slashType", + "type": "uint8", + "indexed": false, + "internalType": "enum StakeHub.SlashType" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "ValidatorUnjailed", + "inputs": [ + { + "name": "operatorAddress", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "VoteAddressEdited", + "inputs": [ + { + "name": "operatorAddress", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "newVoteAddress", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + } + ], + "anonymous": false + }, + { + "type": "error", + "name": "AlreadySlashed", + "inputs": [] + }, + { + "type": "error", + "name": "DelegationAmountTooSmall", + "inputs": [] + }, + { + "type": "error", + "name": "DuplicateConsensusAddress", + "inputs": [] + }, + { + "type": "error", + "name": "DuplicateVoteAddress", + "inputs": [] + }, + { + "type": "error", + "name": "InBlackList", + "inputs": [] + }, + { + "type": "error", + "name": "InvalidCommission", + "inputs": [] + }, + { + "type": "error", + "name": "InvalidConsensusAddress", + "inputs": [] + }, + { + "type": "error", + "name": "InvalidMoniker", + "inputs": [] + }, + { + "type": "error", + "name": "InvalidValue", + "inputs": [ + { + "name": "key", + "type": "string", + "internalType": "string" + }, + { + "name": "value", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "type": "error", + "name": "InvalidVoteAddress", + "inputs": [] + }, + { + "type": "error", + "name": "JailTimeNotExpired", + "inputs": [] + }, + { + "type": "error", + "name": "NoMoreFelonyToday", + "inputs": [] + }, + { + "type": "error", + "name": "OnlyAssetProtector", + "inputs": [] + }, + { + "type": "error", + "name": "OnlyCoinbase", + "inputs": [] + }, + { + "type": "error", + "name": "OnlySelfDelegation", + "inputs": [] + }, + { + "type": "error", + "name": "OnlySystemContract", + "inputs": [ + { + "name": "systemContract", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "error", + "name": "OnlyZeroGasPrice", + "inputs": [] + }, + { + "type": "error", + "name": "SameValidator", + "inputs": [] + }, + { + "type": "error", + "name": "SelfDelegationNotEnough", + "inputs": [] + }, + { + "type": "error", + "name": "StakeHubPaused", + "inputs": [] + }, + { + "type": "error", + "name": "TransferFailed", + "inputs": [] + }, + { + "type": "error", + "name": "UnknownParam", + "inputs": [ + { + "name": "key", + "type": "string", + "internalType": "string" + }, + { + "name": "value", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "type": "error", + "name": "UpdateTooFrequently", + "inputs": [] + }, + { + "type": "error", + "name": "ValidatorExisted", + "inputs": [] + }, + { + "type": "error", + "name": "ValidatorNotExist", + "inputs": [] + }, + { + "type": "error", + "name": "ValidatorNotJailed", + "inputs": [] + }, + { + "type": "error", + "name": "ZeroShares", + "inputs": [] + } +] ` diff --git a/consensus/parlia/feynmanfork.go b/consensus/parlia/feynmanfork.go new file mode 100644 index 0000000000..7ee6a97343 --- /dev/null +++ b/consensus/parlia/feynmanfork.go @@ -0,0 +1,223 @@ +package parlia + +import ( + "container/heap" + "context" + "fmt" + "math" + "math/big" + + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/common/hexutil" + "github.com/ethereum/go-ethereum/core" + "github.com/ethereum/go-ethereum/core/state" + "github.com/ethereum/go-ethereum/core/systemcontracts" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/internal/ethapi" + "github.com/ethereum/go-ethereum/log" + "github.com/ethereum/go-ethereum/rpc" +) + +// initializeFeynmanContract initialize new contracts of Feynman fork +func (p *Parlia) initializeFeynmanContract(state *state.StateDB, header *types.Header, chain core.ChainContext, + txs *[]*types.Transaction, receipts *[]*types.Receipt, receivedTxs *[]*types.Transaction, usedGas *uint64, mining bool, +) error { + // method + method := "initialize" + + // initialize contracts + contracts := []string{ + systemcontracts.StakeHubContract, + systemcontracts.GovernorContract, + systemcontracts.GovTokenContract, + systemcontracts.TimelockContract, + } + // get packed data + data, err := p.stakeHubABI.Pack(method) + if err != nil { + log.Error("Unable to pack tx for initialize feynman contracts", "error", err) + return err + } + for _, c := range contracts { + msg := p.getSystemMessage(header.Coinbase, common.HexToAddress(c), data, common.Big0) + // apply message + log.Info("initialize feynman contract", "block number", header.Number.Uint64(), "contract", c) + err = p.applyTransaction(msg, state, header, chain, txs, receipts, receivedTxs, usedGas, mining) + if err != nil { + return err + } + } + return nil +} + +type ValidatorItem struct { + address common.Address + votingPower *big.Int + voteAddress []byte +} + +// An ValidatorHeap is a max-heap of validator's votingPower. +type ValidatorHeap []ValidatorItem + +func (h *ValidatorHeap) Len() int { return len(*h) } + +func (h *ValidatorHeap) Less(i, j int) bool { + // We want topK validators with max voting power, so we need a max-heap + if (*h)[i].votingPower.Cmp((*h)[j].votingPower) == 0 { + return (*h)[i].address.Hex() < (*h)[j].address.Hex() + } else { + return (*h)[i].votingPower.Cmp((*h)[j].votingPower) == 1 + } +} + +func (h *ValidatorHeap) Swap(i, j int) { (*h)[i], (*h)[j] = (*h)[j], (*h)[i] } + +func (h *ValidatorHeap) Push(x interface{}) { + *h = append(*h, x.(ValidatorItem)) +} + +func (h *ValidatorHeap) Pop() interface{} { + old := *h + n := len(old) + x := old[n-1] + *h = old[0 : n-1] + return x +} + +func (p *Parlia) updateValidatorSetV2(state *state.StateDB, header *types.Header, chain core.ChainContext, + txs *[]*types.Transaction, receipts *[]*types.Receipt, receivedTxs *[]*types.Transaction, usedGas *uint64, mining bool, +) error { + // 1. get all validators and its voting power + blockNr := rpc.BlockNumberOrHashWithHash(header.ParentHash, false) + validatorItems, err := p.getValidatorElectionInfo(blockNr) + if err != nil { + return err + } + maxElectedValidators, err := p.getMaxElectedValidators(blockNr) + if err != nil { + return err + } + + // 2. sort by voting power + eValidators, eVotingPowers, eVoteAddrs := getTopValidatorsByVotingPower(validatorItems, maxElectedValidators) + + // 3. update validator set to system contract + method := "updateValidatorSetV2" + data, err := p.validatorSetABI.Pack(method, eValidators, eVotingPowers, eVoteAddrs) + if err != nil { + log.Error("Unable to pack tx for updateValidatorSetV2", "error", err) + return err + } + + // get system message + msg := p.getSystemMessage(header.Coinbase, common.HexToAddress(systemcontracts.ValidatorContract), data, common.Big0) + // apply message + return p.applyTransaction(msg, state, header, chain, txs, receipts, receivedTxs, usedGas, mining) +} + +func (p *Parlia) getValidatorElectionInfo(blockNr rpc.BlockNumberOrHash) ([]ValidatorItem, error) { + ctx, cancel := context.WithCancel(context.Background()) + defer cancel() + + method := "getValidatorElectionInfo" + toAddress := common.HexToAddress(systemcontracts.StakeHubContract) + gas := (hexutil.Uint64)(uint64(math.MaxUint64 / 2)) + + data, err := p.stakeHubABI.Pack(method, big.NewInt(0), big.NewInt(0)) + if err != nil { + log.Error("Unable to pack tx for getValidatorElectionInfo", "error", err) + return nil, err + } + msgData := (hexutil.Bytes)(data) + + result, err := p.ethAPI.Call(ctx, ethapi.TransactionArgs{ + Gas: &gas, + To: &toAddress, + Data: &msgData, + }, blockNr, nil, nil) + if err != nil { + return nil, err + } + + var validators []common.Address + var votingPowers []*big.Int + var voteAddrs [][]byte + var totalLength *big.Int + if err := p.stakeHubABI.UnpackIntoInterface(&[]interface{}{&validators, &votingPowers, &voteAddrs, &totalLength}, method, result); err != nil { + return nil, err + } + if totalLength.Int64() != int64(len(validators)) || totalLength.Int64() != int64(len(votingPowers)) || totalLength.Int64() != int64(len(voteAddrs)) { + return nil, fmt.Errorf("validator length not match") + } + + validatorItems := make([]ValidatorItem, len(validators)) + for i := 0; i < len(validators); i++ { + validatorItems[i] = ValidatorItem{ + address: validators[i], + votingPower: votingPowers[i], + voteAddress: voteAddrs[i], + } + } + + return validatorItems, nil +} + +func (p *Parlia) getMaxElectedValidators(blockNr rpc.BlockNumberOrHash) (maxElectedValidators *big.Int, err error) { + ctx, cancel := context.WithCancel(context.Background()) + defer cancel() + + method := "maxElectedValidators" + toAddress := common.HexToAddress(systemcontracts.StakeHubContract) + gas := (hexutil.Uint64)(uint64(math.MaxUint64 / 2)) + + data, err := p.stakeHubABI.Pack(method) + if err != nil { + log.Error("Unable to pack tx for maxElectedValidators", "error", err) + return nil, err + } + msgData := (hexutil.Bytes)(data) + + result, err := p.ethAPI.Call(ctx, ethapi.TransactionArgs{ + Gas: &gas, + To: &toAddress, + Data: &msgData, + }, blockNr, nil, nil) + if err != nil { + return nil, err + } + + if err := p.stakeHubABI.UnpackIntoInterface(&maxElectedValidators, method, result); err != nil { + return nil, err + } + + return maxElectedValidators, nil +} + +func getTopValidatorsByVotingPower(validatorItems []ValidatorItem, maxElectedValidators *big.Int) ([]common.Address, []uint64, [][]byte) { + var validatorHeap ValidatorHeap + for i := 0; i < len(validatorItems); i++ { + // only keep validators with voting power > 0 + if validatorItems[i].votingPower.Cmp(big.NewInt(0)) == 1 { + validatorHeap = append(validatorHeap, validatorItems[i]) + } + } + hp := &validatorHeap + heap.Init(hp) + + length := int(maxElectedValidators.Int64()) + if length > len(validatorHeap) { + length = len(validatorHeap) + } + eValidators := make([]common.Address, length) + eVotingPowers := make([]uint64, length) + eVoteAddrs := make([][]byte, length) + for i := 0; i < length; i++ { + item := heap.Pop(hp).(ValidatorItem) + eValidators[i] = item.address + // as the decimal in BNB Beacon Chain is 1e8 and in BNB Smart Chain is 1e18, we need to divide it by 1e10 + eVotingPowers[i] = new(big.Int).Div(item.votingPower, big.NewInt(1e10)).Uint64() + eVoteAddrs[i] = item.voteAddress + } + + return eValidators, eVotingPowers, eVoteAddrs +} diff --git a/consensus/parlia/fusionfork_test.go b/consensus/parlia/fusionfork_test.go new file mode 100644 index 0000000000..2863eddab7 --- /dev/null +++ b/consensus/parlia/fusionfork_test.go @@ -0,0 +1,166 @@ +package parlia + +import ( + "math/big" + "testing" + + "github.com/ethereum/go-ethereum/common" +) + +func TestValidatorHeap(t *testing.T) { + testCases := []struct { + description string + k int64 + validators []ValidatorItem + expected []common.Address + }{ + { + description: "normal case", + k: 2, + validators: []ValidatorItem{ + { + address: common.HexToAddress("0x1"), + votingPower: new(big.Int).Mul(big.NewInt(300), big.NewInt(1e10)), + voteAddress: []byte("0x1"), + }, + { + address: common.HexToAddress("0x2"), + votingPower: new(big.Int).Mul(big.NewInt(200), big.NewInt(1e10)), + voteAddress: []byte("0x2"), + }, + { + address: common.HexToAddress("0x3"), + votingPower: new(big.Int).Mul(big.NewInt(100), big.NewInt(1e10)), + voteAddress: []byte("0x3"), + }, + }, + expected: []common.Address{ + common.HexToAddress("0x1"), + common.HexToAddress("0x2"), + }, + }, + { + description: "same voting power", + k: 2, + validators: []ValidatorItem{ + { + address: common.HexToAddress("0x1"), + votingPower: new(big.Int).Mul(big.NewInt(300), big.NewInt(1e10)), + voteAddress: []byte("0x1"), + }, + { + address: common.HexToAddress("0x2"), + votingPower: new(big.Int).Mul(big.NewInt(100), big.NewInt(1e10)), + voteAddress: []byte("0x2"), + }, + { + address: common.HexToAddress("0x3"), + votingPower: new(big.Int).Mul(big.NewInt(100), big.NewInt(1e10)), + voteAddress: []byte("0x3"), + }, + }, + expected: []common.Address{ + common.HexToAddress("0x1"), + common.HexToAddress("0x2"), + }, + }, + { + description: "zero voting power and k > len(validators)", + k: 5, + validators: []ValidatorItem{ + { + address: common.HexToAddress("0x1"), + votingPower: new(big.Int).Mul(big.NewInt(300), big.NewInt(1e10)), + voteAddress: []byte("0x1"), + }, + { + address: common.HexToAddress("0x2"), + votingPower: big.NewInt(0), + voteAddress: []byte("0x2"), + }, + { + address: common.HexToAddress("0x3"), + votingPower: big.NewInt(0), + voteAddress: []byte("0x3"), + }, + { + address: common.HexToAddress("0x4"), + votingPower: big.NewInt(0), + voteAddress: []byte("0x4"), + }, + }, + expected: []common.Address{ + common.HexToAddress("0x1"), + }, + }, + { + description: "zero voting power and k < len(validators)", + k: 2, + validators: []ValidatorItem{ + { + address: common.HexToAddress("0x1"), + votingPower: new(big.Int).Mul(big.NewInt(300), big.NewInt(1e10)), + voteAddress: []byte("0x1"), + }, + { + address: common.HexToAddress("0x2"), + votingPower: big.NewInt(0), + voteAddress: []byte("0x2"), + }, + { + address: common.HexToAddress("0x3"), + votingPower: big.NewInt(0), + voteAddress: []byte("0x3"), + }, + { + address: common.HexToAddress("0x4"), + votingPower: big.NewInt(0), + voteAddress: []byte("0x4"), + }, + }, + expected: []common.Address{ + common.HexToAddress("0x1"), + }, + }, + { + description: "all zero voting power", + k: 2, + validators: []ValidatorItem{ + { + address: common.HexToAddress("0x1"), + votingPower: big.NewInt(0), + voteAddress: []byte("0x1"), + }, + { + address: common.HexToAddress("0x2"), + votingPower: big.NewInt(0), + voteAddress: []byte("0x2"), + }, + { + address: common.HexToAddress("0x3"), + votingPower: big.NewInt(0), + voteAddress: []byte("0x3"), + }, + { + address: common.HexToAddress("0x4"), + votingPower: big.NewInt(0), + voteAddress: []byte("0x4"), + }, + }, + expected: []common.Address{}, + }, + } + for _, tc := range testCases { + eligibleValidators, _, _ := getTopValidatorsByVotingPower(tc.validators, big.NewInt(tc.k)) + + // check + if len(eligibleValidators) != len(tc.expected) { + t.Errorf("expected %d, got %d", len(tc.expected), len(eligibleValidators)) + } + for i := 0; i < len(tc.expected); i++ { + if eligibleValidators[i] != tc.expected[i] { + t.Errorf("expected %s, got %s", tc.expected[i].Hex(), eligibleValidators[i].Hex()) + } + } + } +} diff --git a/consensus/parlia/parlia.go b/consensus/parlia/parlia.go index a8643cc732..67c0a50aef 100644 --- a/consensus/parlia/parlia.go +++ b/consensus/parlia/parlia.go @@ -6,7 +6,6 @@ import ( "encoding/hex" "errors" "fmt" - "io" "math" "math/big" "math/rand" @@ -91,6 +90,10 @@ var ( common.HexToAddress(systemcontracts.TokenHubContract): true, common.HexToAddress(systemcontracts.RelayerIncentivizeContract): true, common.HexToAddress(systemcontracts.CrossChainContract): true, + common.HexToAddress(systemcontracts.StakeHubContract): true, + common.HexToAddress(systemcontracts.GovernorContract): true, + common.HexToAddress(systemcontracts.GovTokenContract): true, + common.HexToAddress(systemcontracts.TimelockContract): true, } ) @@ -180,7 +183,7 @@ func ecrecover(header *types.Header, sigCache *lru.ARCCache, chainId *big.Int) ( signature := header.Extra[len(header.Extra)-extraSeal:] // Recover the public key and the Ethereum address - pubkey, err := crypto.Ecrecover(SealHash(header, chainId).Bytes(), signature) + pubkey, err := crypto.Ecrecover(types.SealHash(header, chainId).Bytes(), signature) if err != nil { return common.Address{}, err } @@ -200,7 +203,7 @@ func ecrecover(header *types.Header, sigCache *lru.ARCCache, chainId *big.Int) ( // or not), which could be abused to produce different hashes for the same header. func ParliaRLP(header *types.Header, chainId *big.Int) []byte { b := new(bytes.Buffer) - encodeSigHeader(b, header, chainId) + types.EncodeSigHeader(b, header, chainId) return b.Bytes() } @@ -227,6 +230,7 @@ type Parlia struct { validatorSetABIBeforeLuban abi.ABI validatorSetABI abi.ABI slashABI abi.ABI + stakeHubABI abi.ABI // The fields below are for testing only fakeDiff bool // Skip difficulty verifications @@ -268,6 +272,10 @@ func New( if err != nil { panic(err) } + stABI, err := abi.JSON(strings.NewReader(stakeABI)) + if err != nil { + panic(err) + } c := &Parlia{ chainConfig: chainConfig, config: parliaConfig, @@ -279,6 +287,7 @@ func New( validatorSetABIBeforeLuban: vABIBeforeLuban, validatorSetABI: vABI, slashABI: sABI, + stakeHubABI: stABI, signer: types.LatestSigner(chainConfig), } @@ -903,7 +912,7 @@ func (p *Parlia) assembleVoteAttestation(chain consensus.ChainHeaderReader, head // Prepare vote address bitset. for _, valInfo := range snap.Validators { if _, ok := voteAddrSet[valInfo.VoteAddress]; ok { - attestation.VoteAddressSet |= 1 << (valInfo.Index - 1) //Index is offset by 1 + attestation.VoteAddressSet |= 1 << (valInfo.Index - 1) // Index is offset by 1 } } validatorsBitSet := bitset.From([]uint64{uint64(attestation.VoteAddressSet)}) @@ -1153,6 +1162,29 @@ func (p *Parlia) Finalize(chain consensus.ChainHeaderReader, header *types.Heade return err } } + + parent := chain.GetHeaderByHash(header.ParentHash) + if parent == nil { + return errors.New("parent not found") + } + if p.chainConfig.IsOnFeynman(header.Number, parent.Time, header.Time) { + err := p.initializeFeynmanContract(state, header, cx, txs, receipts, systemTxs, usedGas, false) + if err != nil { + log.Error("init feynman contract failed", "error", err) + } + } + + // update validators every day + if p.chainConfig.IsFeynman(header.Number, header.Time) { + // TODO: revert this + // if time.Unix(int64(parent.Time), 0).Day() < time.Unix(int64(header.Time), 0).Day() { + if time.Unix(int64(header.Time), 0).Minute()%5 > time.Unix(int64(parent.Time), 0).Minute()%5 { + if err := p.updateValidatorSetV2(state, header, cx, txs, receipts, systemTxs, usedGas, false); err != nil { + return err + } + } + } + if len(*systemTxs) > 0 { return errors.New("the length of systemTxs do not match") } @@ -1215,6 +1247,28 @@ func (p *Parlia) FinalizeAndAssemble(chain consensus.ChainHeaderReader, header * } } + parent := chain.GetHeaderByHash(header.ParentHash) + if parent == nil { + return nil, nil, errors.New("parent not found") + } + if p.chainConfig.IsOnFeynman(header.Number, parent.Time, header.Time) { + err := p.initializeFeynmanContract(state, header, cx, &txs, &receipts, nil, &header.GasUsed, true) + if err != nil { + log.Error("init feynman contract failed", "error", err) + } + } + + // update validators every day + if p.chainConfig.IsFeynman(header.Number, header.Time) { + // TODO: revert this + // if time.Unix(int64(parent.Time), 0).Day() < time.Unix(int64(header.Time), 0).Day() { + if time.Unix(int64(header.Time), 0).Minute()%5 > time.Unix(int64(parent.Time), 0).Minute()%5 { + if err := p.updateValidatorSetV2(state, header, cx, &txs, &receipts, nil, &header.GasUsed, true); err != nil { + return nil, nil, err + } + } + } + // should not happen. Once happen, stop the node is better than broadcast the block if header.GasLimit < header.GasUsed { return nil, nil, errors.New("gas consumption of system txs exceed the gas limit") @@ -1417,7 +1471,7 @@ func (p *Parlia) Seal(chain consensus.ChainHeaderReader, block *types.Block, res select { case results <- block.WithSeal(header): default: - log.Warn("Sealing result is not read by miner", "sealhash", SealHash(header, p.chainConfig.ChainID)) + log.Warn("Sealing result is not read by miner", "sealhash", types.SealHash(header, p.chainConfig.ChainID)) } }() @@ -1491,7 +1545,7 @@ func CalcDifficulty(snap *Snapshot, signer common.Address) *big.Int { // So it's not the real hash of a block, just used as unique id to distinguish task func (p *Parlia) SealHash(header *types.Header) (hash common.Hash) { hasher := sha3.NewLegacyKeccak256() - encodeSigHeaderWithoutVoteAttestation(hasher, header, p.chainConfig.ChainID) + types.EncodeSigHeaderWithoutVoteAttestation(hasher, header, p.chainConfig.ChainID) hasher.Sum(hash[:0]) return hash } @@ -1549,16 +1603,15 @@ func (p *Parlia) getCurrentValidators(blockHash common.Hash, blockNum *big.Int) var valSet []common.Address var voteAddrSet []types.BLSPublicKey - if err := p.validatorSetABI.UnpackIntoInterface(&[]interface{}{&valSet, &voteAddrSet}, method, result); err != nil { return nil, nil, err } - voteAddrmap := make(map[common.Address]*types.BLSPublicKey, len(valSet)) + voteAddrMap := make(map[common.Address]*types.BLSPublicKey, len(valSet)) for i := 0; i < len(valSet); i++ { - voteAddrmap[valSet[i]] = &(voteAddrSet)[i] + voteAddrMap[valSet[i]] = &(voteAddrSet)[i] } - return valSet, voteAddrmap, nil + return valSet, voteAddrMap, nil } // slash spoiled validators @@ -1575,7 +1628,7 @@ func (p *Parlia) distributeIncoming(val common.Address, state *state.StateDB, he doDistributeSysReward := !p.chainConfig.IsKepler(header.Number, header.Time) && state.GetBalance(common.HexToAddress(systemcontracts.SystemRewardContract)).Cmp(maxSystemBalance) < 0 if doDistributeSysReward { - var rewards = new(big.Int) + rewards := new(big.Int) rewards = rewards.Rsh(balance, systemRewardPercent) if rewards.Cmp(common.Big0) > 0 { err := p.distributeToSystem(rewards, state, header, chain, txs, receipts, receivedTxs, usedGas, mining) @@ -1795,62 +1848,6 @@ func (p *Parlia) GetFinalizedHeader(chain consensus.ChainHeaderReader, header *t } // =========================== utility function ========================== -// SealHash returns the hash of a block prior to it being sealed. -func SealHash(header *types.Header, chainId *big.Int) (hash common.Hash) { - hasher := sha3.NewLegacyKeccak256() - encodeSigHeader(hasher, header, chainId) - hasher.Sum(hash[:0]) - return hash -} - -func encodeSigHeader(w io.Writer, header *types.Header, chainId *big.Int) { - err := rlp.Encode(w, []interface{}{ - chainId, - header.ParentHash, - header.UncleHash, - header.Coinbase, - header.Root, - header.TxHash, - header.ReceiptHash, - header.Bloom, - header.Difficulty, - header.Number, - header.GasLimit, - header.GasUsed, - header.Time, - header.Extra[:len(header.Extra)-extraSeal], // this will panic if extra is too short, should check before calling encodeSigHeader - header.MixDigest, - header.Nonce, - }) - if err != nil { - panic("can't encode: " + err.Error()) - } -} - -func encodeSigHeaderWithoutVoteAttestation(w io.Writer, header *types.Header, chainId *big.Int) { - err := rlp.Encode(w, []interface{}{ - chainId, - header.ParentHash, - header.UncleHash, - header.Coinbase, - header.Root, - header.TxHash, - header.ReceiptHash, - header.Bloom, - header.Difficulty, - header.Number, - header.GasLimit, - header.GasUsed, - header.Time, - header.Extra[:extraVanity], // this will panic if extra is too short, should check before calling encodeSigHeaderWithoutVoteAttestation - header.MixDigest, - header.Nonce, - }) - if err != nil { - panic("can't encode: " + err.Error()) - } -} - func (p *Parlia) backOffTime(snap *Snapshot, header *types.Header, val common.Address) uint64 { if snap.inturn(val) { return 0 diff --git a/core/systemcontracts/const.go b/core/systemcontracts/const.go index a5a74905e0..430000e415 100644 --- a/core/systemcontracts/const.go +++ b/core/systemcontracts/const.go @@ -13,4 +13,10 @@ const ( TokenManagerContract = "0x0000000000000000000000000000000000001008" CrossChainContract = "0x0000000000000000000000000000000000002000" StakingContract = "0x0000000000000000000000000000000000002001" + StakeHubContract = "0x0000000000000000000000000000000000002002" + StakeCreditContract = "0x0000000000000000000000000000000000002003" + GovernorContract = "0x0000000000000000000000000000000000002004" + GovTokenContract = "0x0000000000000000000000000000000000002005" + TimelockContract = "0x0000000000000000000000000000000000002006" + TokenRecoverPortalContract = "0x0000000000000000000000000000000000003000" ) diff --git a/core/systemcontracts/upgrade.go b/core/systemcontracts/upgrade.go index 562020686d..1e2dd9b25b 100644 --- a/core/systemcontracts/upgrade.go +++ b/core/systemcontracts/upgrade.go @@ -58,7 +58,10 @@ var ( keplerUpgrade = make(map[string]*Upgrade) - latestUpgrade = keplerUpgrade + feynmanUpgrade = make(map[string]*Upgrade) + + // TODO: revert this + // latestUpgrade = feynmanUpgrade ) func init() { @@ -762,7 +765,177 @@ func init() { }, } - latestUpgrade[defaultNet] = latestUpgrade[rialtoNet] + // TODO: update to latest + feynmanUpgrade[mainNet] = &Upgrade{ + UpgradeName: "feynman", + Configs: []*UpgradeConfig{ + { + ContractAddr: common.HexToAddress(ValidatorContract), + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/cfc0bd1127186a917ddc38fd38d22903034d3f0b", + Code: "6080604052600436106104da5760003560e01c80638a7beb0111610281578063c6d339451161015a578063e40716a1116100cc578063f92eb86b11610085578063f92eb86b14610ccd578063f9a2bbc714610ce2578063fc3e590814610cf7578063fccc281314610d0c578063fd4ad81f14610d21578063fd6a687914610d50576104e1565b8063e40716a114610c30578063e589b61e14610c45578063ea321e4914610c65578063eb57e20214610c85578063eda5868c14610ca5578063f340fa0114610cba576104e1565b8063d86222d51161011e578063d86222d514610bb2578063daacdb6614610bc7578063dc927faf14610bdc578063df8079e914610bf1578063e086c7b114610c06578063e1c7392a14610c1b576104e1565b8063c6d3394514610b53578063c81b166214610b68578063c8509d811461090d578063ce910b0c14610b7d578063d68fb56a14610b9d576104e1565b8063aa82dce1116101f3578063ad3c9da6116101b7578063ad3c9da614610ad2578063aef198a914610af2578063b7ab4db514610b07578063b8cf4ef114610b29578063bf9f4995146106bd578063c466689d14610b3e576104e1565b8063aa82dce114610a5e578063aad5606314610a73578063aaf5eb6814610a88578063ab51bb9614610a9d578063ac43175114610ab2576104e1565b80639dc09262116102455780639dc09262146109e05780639fe0f816146109f5578063a0dc275814610a0a578063a1a11bf514610a1f578063a5422d5c14610a34578063a78abc1614610a49576104e1565b80638a7beb011461096c5780638b5ad0c9146109815780638d19a410146109965780639369d7de146109b657806396713da9146109cb576104e1565b806351e80672116103b357806370fd5bad116103255780637a84ca2a116102e95780637a84ca2a146108e357806381650b62146108f8578063831d65d11461090d578063853230aa1461092d578063862498821461094257806388b32f1114610957576104e1565b806370fd5bad1461087a578063718a8aa81461088f57806375d47a0a146108a457806378dfed4a146108b95780637942fd05146108ce576104e1565b80635de1e22c116103775780635de1e22c146107e9578063603d86d3146106a857806360eba4fe146107fe57806362b72cf51461081e5780636969a25c146108335780636e47b48214610865576104e1565b806351e806721461076a57806355614fcc1461077f578063565c56b31461079f5780635667515a146107bf5780635d77156c146107d4576104e1565b80633365af3a1161044c57806343756e5c1161041057806343756e5c146106df57806345cf9daf146106f4578063493279b1146107095780634bf6c8821461072b5780634df6e0c3146107405780635192c82c14610755576104e1565b80633365af3a1461064557806335409f7f146106655780633b071dcc146106855780633de0f0d8146106a85780633dffc387146106bd576104e1565b8063152ad3b81161049e578063152ad3b8146105995780631e4c1524146105bb5780631ff18069146105db578063219f22d5146105f0578063300c356714610605578063321d398a14610625576104e1565b806304c4fec6146104e657806307a56847146104fd5780630bee7a67146105285780630e2374a51461054a5780631182b8751461056c576104e1565b366104e157005b600080fd5b3480156104f257600080fd5b506104fb610d65565b005b34801561050957600080fd5b50610512610dd7565b60405161051f9190618c29565b60405180910390f35b34801561053457600080fd5b5061053d610ddd565b60405161051f9190618c53565b34801561055657600080fd5b5061055f610de2565b60405161051f9190617fa5565b34801561057857600080fd5b5061058c610587366004617e8b565b610de8565b60405161051f9190618138565b3480156105a557600080fd5b506105ae6110cb565b60405161051f919061812d565b3480156105c757600080fd5b506104fb6105d6366004617c99565b6110d4565b3480156105e757600080fd5b50610512611774565b3480156105fc57600080fd5b5061053d61177a565b34801561061157600080fd5b506104fb610620366004617c31565b61177f565b34801561063157600080fd5b506105ae610640366004617e38565b611ac8565b34801561065157600080fd5b506105ae610660366004617e38565b611b97565b34801561067157600080fd5b506104fb610680366004617bf9565b611c48565b34801561069157600080fd5b5061069a611da1565b60405161051f929190618043565b3480156106b457600080fd5b5061051261207d565b3480156106c957600080fd5b506106d2612083565b60405161051f9190618c64565b3480156106eb57600080fd5b5061055f612088565b34801561070057600080fd5b5061051261208e565b34801561071557600080fd5b5061071e612094565b60405161051f9190618c1a565b34801561073757600080fd5b506106d2612099565b34801561074c57600080fd5b5061069a61209e565b34801561076157600080fd5b5061051261221c565b34801561077657600080fd5b5061055f612222565b34801561078b57600080fd5b506105ae61079a366004617bf9565b612228565b3480156107ab57600080fd5b506105126107ba366004617bf9565b61225d565b3480156107cb57600080fd5b506106d26122ae565b3480156107e057600080fd5b5061053d6122b3565b3480156107f557600080fd5b506105126122b8565b34801561080a57600080fd5b5061058c610819366004617e38565b6122be565b34801561082a57600080fd5b50610512612364565b34801561083f57600080fd5b5061085361084e366004617e38565b61236a565b60405161051f96959493929190617fd2565b34801561087157600080fd5b5061055f6123ce565b34801561088657600080fd5b506106d26123d4565b34801561089b57600080fd5b506106d26123d9565b3480156108b057600080fd5b5061055f6123de565b3480156108c557600080fd5b506105126122ae565b3480156108da57600080fd5b506106d26123e4565b3480156108ef57600080fd5b506105126123e9565b34801561090457600080fd5b5061053d6123ef565b34801561091957600080fd5b506104fb610928366004617e8b565b6123f4565b34801561093957600080fd5b50610512612455565b34801561094e57600080fd5b5061051261245b565b34801561096357600080fd5b50610512612461565b34801561097857600080fd5b506105ae612467565b34801561098d57600080fd5b50610512612470565b3480156109a257600080fd5b506105126109b1366004617bf9565b612476565b3480156109c257600080fd5b506104fb6124b6565b3480156109d757600080fd5b506106d26125ca565b3480156109ec57600080fd5b5061055f6125cf565b348015610a0157600080fd5b506105126125d5565b348015610a1657600080fd5b506105126125da565b348015610a2b57600080fd5b5061055f6125df565b348015610a4057600080fd5b5061058c6125e5565b348015610a5557600080fd5b506105ae612601565b348015610a6a57600080fd5b5061055f61260a565b348015610a7f57600080fd5b5061055f612610565b348015610a9457600080fd5b50610512612616565b348015610aa957600080fd5b5061053d6122ae565b348015610abe57600080fd5b506104fb610acd366004617ddc565b61261f565b348015610ade57600080fd5b50610512610aed366004617bf9565b612ebd565b348015610afe57600080fd5b50610512612ecf565b348015610b1357600080fd5b50610b1c612edc565b60405161051f9190618030565b348015610b3557600080fd5b50610512612fc8565b348015610b4a57600080fd5b50610512612fcd565b348015610b5f57600080fd5b506105126123d4565b348015610b7457600080fd5b5061055f612fd3565b348015610b8957600080fd5b5061058c610b98366004617e38565b612fd9565b348015610ba957600080fd5b50610512612fe6565b348015610bbe57600080fd5b50610512613025565b348015610bd357600080fd5b50610512613031565b348015610be857600080fd5b5061055f613037565b348015610bfd57600080fd5b5061055f61303d565b348015610c1257600080fd5b50610512610ddd565b348015610c2757600080fd5b506104fb613043565b348015610c3c57600080fd5b506105126131ef565b348015610c5157600080fd5b506104fb610c60366004617bf9565b6131f5565b348015610c7157600080fd5b506105ae610c80366004617d9d565b61333a565b348015610c9157600080fd5b506104fb610ca0366004617bf9565b6134c0565b348015610cb157600080fd5b5061053d6135c4565b6104fb610cc8366004617bf9565b6135c9565b348015610cd957600080fd5b50610512613931565b348015610cee57600080fd5b5061055f613937565b348015610d0357600080fd5b506106d26125d5565b348015610d1857600080fd5b5061055f61393d565b348015610d2d57600080fd5b50610d41610d3c366004617e38565b613943565b60405161051f93929190618c32565b348015610d5c57600080fd5b5061055f613a05565b6000610d7033612476565b9050600b8181548110610d7f57fe5b600091825260209091206001601690920201015460ff16610dbb5760405162461bcd60e51b8152600401610db29061889d565b60405180910390fd5b6000610dc5612fe6565b9050610dd2338383613a0b565b505050565b60095481565b606481565b61200181565b60005460609060ff16610e0d5760405162461bcd60e51b8152600401610db2906182f7565b600b54610ecb57610e1c6177a5565b60015460005b81811015610ec757600b80546001810182556000919091528351600080516020618d368339815191526016909202918201908155602080860151600080516020618d768339815191528401805460ff1916911515919091179055604086015180518794610ea393600080516020618d568339815191529091019201906177d4565b506060820151610eb9906003830190601361784e565b505050806001019050610e22565b5050505b610ed361787b565b6000610f1485858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250613cdc92505050565b9150915080610f3057610f276064613e98565b925050506110c4565b815160009060ff16610f5557610f4e83602001518460400151613ef9565b9050611090565b825160ff166001141561108c57826020015151600114610f9a57600080516020618d16833981519152604051610f8a90618756565b60405180910390a1506067611087565b6000600460008560200151600081518110610fb157fe5b6020026020010151600001516001600160a01b03166001600160a01b0316815260200190815260200160002054905080600014806110195750600180820381548110610ff957fe5b9060005260206000209060040201600201601c9054906101000a900460ff165b1561107957836020015160008151811061102f57fe5b6020026020010151600001516001600160a01b03167fe209c46bebf57cf265d5d9009a00870e256d9150f3ed5281ab9d9eb3cec6e4be60405160405180910390a260009150611085565b6110828161505d565b91505b505b611090565b5060655b63ffffffff81166110b557505060408051600081526020810190915291506110c49050565b6110be81613e98565b93505050505b9392505050565b60075460ff1681565b3341146110f35760405162461bcd60e51b8152600401610db290618a85565b3a156111115760405162461bcd60e51b8152600401610db2906187dc565b825160408051828152602080840282010190915260609082801561114f57816020015b61113c61789f565b8152602001906001900390816111345790505b50905060005b828110156111f9576040518060c0016040528087838151811061117457fe5b60200260200101516001600160a01b0316815260200160006001600160a01b0316815260200160006001600160a01b031681526020018683815181106111b657fe5b60200260200101516001600160401b0316815260200160001515815260200160008152508282815181106111e657fe5b6020908102919091010152600101611155565b5060405163d31f968d60e01b81526120009063d31f968d906112249061100090600890600401618014565b60206040518083038186803b15801561123c57600080fd5b505afa158015611250573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112749190617d7d565b1561156d5780518061128857505050610dd2565b6015548181111561132357815b818110156113215760158054806112a857fe5b60008281526020812060046000199093019283020180546001600160a01b0319908116825560018201805490911690556002810180546001600160e81b031916905560030155905560168054806112fb57fe5b60019003818190600052602060002001600061131791906178d4565b9055600101611295565b505b60005b828110156115635781811061144b57601584828151811061134357fe5b602090810291909101810151825460018181018555600094855293839020825160049092020180546001600160a01b039283166001600160a01b0319918216178255938301519481018054958316958516959095179094556040820151600285018054606085015160808601511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b199590961692909716919091179290921692909217169290921790915560a00151600390910155855160169087908390811061141357fe5b6020908102919091018101518254600181018455600093845292829020815161144594919091019291909101906177d4565b5061155b565b83818151811061145757fe5b60200260200101516015828154811061146c57fe5b6000918252602091829020835160049092020180546001600160a01b039283166001600160a01b0319918216178255928401516001820180549184169185169190911790556040840151600282018054606087015160808801511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b1995909716929097169190911792909216939093171692909217905560a090910151600390910155855186908290811061152757fe5b60200260200101516016828154811061153c57fe5b9060005260206000200190805190602001906115599291906177d4565b505b600101611326565b5050505050610dd2565b60608061157a8386615171565b9150915060005b600154811015611664576001818154811061159857fe5b90600052602060002090600402016003015460001461165c576120026001600160a01b031663092193ab600183815481106115cf57fe5b906000526020600020906004020160030154600184815481106115ee57fe5b60009182526020909120600491820201546040516001600160e01b031960e086901b168152611629926001600160a01b039092169101617fa5565b6000604051808303818588803b15801561164257600080fd5b505af1158015611656573d6000803e3d6000fd5b50505050505b600101611581565b5047156116d2577f6ecc855f9440a9282c90913bbc91619fd44f5ec0b462af28d127b116f130aa4d4760405161169a9190618c29565b60405180910390a1604051611002904780156108fc02916000818181858888f193505050501580156116d0573d6000803e3d6000fd5b505b600060038190556005558151156116ed576116ed82826153aa565b6110016001600160a01b031663fc4333cd6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561172a57600080fd5b505af115801561173e573d6000803e3d6000fd5b50506040517fedd8d7296956dd970ab4de3f2fc03be2b0ffc615d20cd4c72c6e44f928630ebf925060009150a150505050505050565b60035481565b606881565b33411461179e5760405162461bcd60e51b8152600401610db290618a85565b60105443116117bf5760405162461bcd60e51b8152600401610db290618453565b3a156117dd5760405162461bcd60e51b8152600401610db2906187dc565b60005460ff166117ff5760405162461bcd60e51b8152600401610db2906182f7565b60006110023168056bc75e2d631000008111156118365761182f8168056bc75e2d6310000063ffffffff615bb116565b915061183d565b5050611abe565b6040516309a99b4f60e41b815261100290639a99b4f0906118649030908690600401617fb9565b602060405180830381600087803b15801561187e57600080fd5b505af1158015611892573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118b69190617e50565b9150816118c4575050611abe565b6000805b848110156118f2578585828181106118dc57fe5b90506020020135820191508060010190506118c8565b508061190057505050611abe565b6000806000805b89811015611ab6578489898381811061191c57fe5b9050602002013588028161192c57fe5b0493508a8a8281811061193b57fe5b90506020020160208101906119509190617bf9565b6001600160a01b03811660009081526004602052604090205490935091508115611a6c57600060018084038154811061198557fe5b9060005260206000209060040201905080600201601c9054906101000a900460ff16156119f257836001600160a01b03167fb9c75cbbfde137c4281689580799ef5f52144e78858f776a5979b2b212137d85866040516119e59190618c29565b60405180910390a2611a66565b600354611a05908663ffffffff615bf316565b6003908155810154611a1d908663ffffffff615bf316565b60038201556040516001600160a01b038516907fcb0aad6cf9cd03bdf6137e359f541c42f38b39f007cae8e89e88aa7d8c6617b290611a5d908890618c29565b60405180910390a25b50611aae565b826001600160a01b03167fb9c75cbbfde137c4281689580799ef5f52144e78858f776a5979b2b212137d8585604051611aa59190618c29565b60405180910390a25b600101611907565b505050505050505b5050436010555050565b6001546000908210611adc57506000611b92565b60006001600160a01b031660018381548110611af457fe5b60009182526020909120600490910201546001600160a01b03161480611b2457506008541580611b245750600a54155b80611b33575060085460095410155b80611b445750611b4282611b97565b155b80611b6d57506000600b8381548110611b5957fe5b906000526020600020906016020160000154115b80611b8157506001611b7d612edc565b5111155b15611b8e57506000611b92565b5060015b919050565b6001546000908210611bab57506000611b92565b600b548210611be85760018281548110611bc157fe5b9060005260206000209060040201600201601c9054906101000a900460ff16159050611b92565b60018281548110611bf557fe5b9060005260206000209060040201600201601c9054906101000a900460ff16158015611c425750600b8281548110611c2957fe5b600091825260209091206001601690920201015460ff16155b92915050565b3361100114611c695760405162461bcd60e51b8152600401610db290618b9a565b600b54611d2757611c786177a5565b60015460005b81811015611d2357600b80546001810182556000919091528351600080516020618d368339815191526016909202918201908155602080860151600080516020618d768339815191528401805460ff1916911515919091179055604086015180518794611cff93600080516020618d568339815191529091019201906177d4565b506060820151611d15906003830190601361784e565b505050806001019050611c7e565b5050505b6001600160a01b03811660009081526004602052604090205480611d4b5750611d9e565b6001810390506000600b8281548110611d6057fe5b600091825260209091206001601690920201015460ff169050611d838383615c18565b8015611d8c5750805b15610dd2576009805460001901905550505b50565b60015460609081906000805b82811015611df45760018181548110611dc257fe5b9060005260206000209060040201600201601c9054906101000a900460ff16611dec576001909101905b600101611dad565b50606081604051908082528060200260200182016040528015611e21578160200160208202803683370190505b509050606082604051908082528060200260200182016040528015611e5a57816020015b6060815260200190600190039081611e455790505b50600b5460009450909150841415611fd55760005b84811015611fcf5760018181548110611e8457fe5b9060005260206000209060040201600201601c9054906101000a900460ff16611fc75760018181548110611eb457fe5b600091825260209091206004909102015483516001600160a01b0390911690849086908110611edf57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050600b8181548110611f0c57fe5b600091825260209182902060026016909202018101805460408051601f600019610100600186161502019093169490940491820185900485028401850190528083529192909190830182828015611fa45780601f10611f7957610100808354040283529160200191611fa4565b820191906000526020600020905b815481529060010190602001808311611f8757829003601f168201915b5050505050828581518110611fb557fe5b60209081029190910101526001909301925b600101611e6f565b50612071565b60005b8481101561206f5760018181548110611fed57fe5b9060005260206000209060040201600201601c9054906101000a900460ff16612067576001818154811061201d57fe5b600091825260209091206004909102015483516001600160a01b039091169084908690811061204857fe5b6001600160a01b03909216602092830291909101909101526001909301925b600101611fd8565b505b909450925050505b9091565b61271081565b600181565b61100181565b60085481565b603881565b600881565b600e54600c546060918291806120b2575060155b60606120bc612edc565b905060606120c982615fcb565b9050828251116120e0579094509250612079915050565b838383510310156120f2578282510393505b83156121285760c8430461210e83838388880360008a8a616139565b6121268383838888038989038a8b8b8b510301616139565b505b606083604051908082528060200260200182016040528015612154578160200160208202803683370190505b50905060608460405190808252806020026020018201604052801561218d57816020015b60608152602001906001900390816121785790505b50905060005b8581101561220e578481815181106121a757fe5b60200260200101518382815181106121bb57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508381815181106121e757fe5b60200260200101518282815181106121fb57fe5b6020908102919091010152600101612193565b509096509450505050509091565b60065481565b61200081565b6001600160a01b03811660009081526004602052604081205480612250576000915050611b92565b600019016110c481611b97565b6001600160a01b03811660009081526004602052604081205480612285576000915050611b92565b60018082038154811061229457fe5b906000526020600020906004020160030154915050919050565b600081565b606781565b600f5481565b601281815481106122cb57fe5b600091825260209182902001805460408051601f600260001961010060018716150201909416939093049283018590048502810185019091528181529350909183018282801561235c5780601f106123315761010080835404028352916020019161235c565b820191906000526020600020905b81548152906001019060200180831161233f57829003601f168201915b505050505081565b60105481565b6001818154811061237757fe5b600091825260209091206004909102018054600182015460028301546003909301546001600160a01b0392831694509082169291821691600160a01b81046001600160401b031691600160e01b90910460ff169086565b61100581565b600281565b601081565b61100881565b600b81565b600c5481565b606681565b33612000146124155760405162461bcd60e51b8152600401610db290618a36565b7f41ce201247b6ceb957dcdb217d0b8acb50b9ea0e12af9af4f5e7f3890210160583838360405161244893929190618c72565b60405180910390a1505050565b6103e881565b60025481565b60115481565b60145460ff1681565b600a5481565b6001600160a01b038116600090815260046020526040812054806124ac5760405162461bcd60e51b8152600401610db2906189be565b6000190192915050565b600b54612574576124c56177a5565b60015460005b8181101561257057600b80546001810182556000919091528351600080516020618d368339815191526016909202918201908155602080860151600080516020618d768339815191528401805460ff191691151591909117905560408601518051879461254c93600080516020618d568339815191529091019201906177d4565b506060820151612562906003830190601361784e565b5050508060010190506124cb565b5050505b6008546125815760036008555b600a5461258e576002600a555b600061259933612476565b90506125a481611ac8565b6125c05760405162461bcd60e51b8152600401610db290618713565b611d9e3382616290565b600981565b61100781565b600381565b60c881565b61100681565b6040518060a0016040528060788152602001618d966078913981565b60005460ff1681565b61200281565b61300081565b6402540be40081565b60005460ff166126415760405162461bcd60e51b8152600401610db2906182f7565b33611007146126625760405162461bcd60e51b8152600401610db29061880a565b6126cc84848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080518082019091526013815272065787069726554696d655365636f6e6447617606c1b602082015291506163289050565b1561276957602081146126f15760405162461bcd60e51b8152600401610db290618978565b604080516020601f840181900481028201810190925282815260009161272f9185858083850183828082843760009201919091525061638192505050565b9050606481101580156127455750620186a08111155b6127615760405162461bcd60e51b8152600401610db290618603565b600255612e7a565b6127c984848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260098152686275726e526174696f60b81b602082015291506163289050565b1561285857602081146127ee5760405162461bcd60e51b8152600401610db29061817d565b604080516020601f840181900481028201810190925282815260009161282c9185858083850183828082843760009201919091525061638192505050565b90506127108111156128505760405162461bcd60e51b8152600401610db290618495565b600655612e7a565b6128c284848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260138152726d61784e756d4f664d61696e7461696e696e6760681b602082015291506163289050565b1561295c57602081146128e75760405162461bcd60e51b8152600401610db2906181b4565b604080516020601f84018190048102820181019092528281526000916129259185858083850183828082843760009201919091525061638192505050565b600c5490915080612934575060155b8082106129535760405162461bcd60e51b8152600401610db290618508565b50600855612e7a565b6129c584848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260128152716d61696e7461696e536c6173685363616c6560701b602082015291506163289050565b15612a5e57602081146129ea5760405162461bcd60e51b8152600401610db29061827d565b604080516020601f8401819004810282018101909252828152600091612a289185858083850183828082843760009201919091525061638192505050565b9050600081118015612a3a5750600a81105b612a565760405162461bcd60e51b8152600401610db290618b16565b600a55612e7a565b612ad284848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601981527f6d61784e756d4f66576f726b696e6743616e6469646174657300000000000000602082015291506163289050565b15612b615760208114612af75760405162461bcd60e51b8152600401610db290618231565b604080516020601f8401819004810282018101909252828152600091612b359185858083850183828082843760009201919091525061638192505050565b9050600d54811115612b595760405162461bcd60e51b8152600401610db290618679565b600e55612e7a565b612bca84848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260128152716d61784e756d4f6643616e6469646174657360701b602082015291506163289050565b15612c4c5760208114612bef5760405162461bcd60e51b8152600401610db290618858565b604080516020601f8401819004810282018101909252828152600091612c2d9185858083850183828082843760009201919091525061638192505050565b600d819055600e54909150811015612c4657600d54600e555b50612e7a565b612cb084848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600d81526c6e756d4f66436162696e65747360981b602082015291506163289050565b15612d5e5760208114612cd55760405162461bcd60e51b8152600401610db2906182c2565b604080516020601f8401819004810282018101909252828152600091612d139185858083850183828082843760009201919091525061638192505050565b905060008111612d355760405162461bcd60e51b8152600401610db290618365565b6064811115612d565760405162461bcd60e51b8152600401610db2906183ad565b600c55612e7a565b612dc684848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601181527073797374656d526577617264526174696f60781b602082015291506163289050565b15612e625760208114612deb5760405162461bcd60e51b8152600401610db290618ad2565b604080516020601f8401819004810282018101909252828152600091612e299185858083850183828082843760009201919091525061638192505050565b905060018110158015612e3e57506127108111155b612e5a5760405162461bcd60e51b8152600401610db2906185b0565b600f55612e7a565b60405162461bcd60e51b8152600401610db290618b73565b7f6cdb0ac70ab7f2e2d035cca5be60d89906f2dede7648ddbd7402189c1eeed17a84848484604051612eaf949392919061814b565b60405180910390a150505050565b60046020526000908152604090205481565b68056bc75e2d6310000081565b6001546060906000805b82811015612f0b57612ef781611b97565b15612f03578160010191505b600101612ee6565b50606081604051908082528060200260200182016040528015612f38578160200160208202803683370190505b5090506000915060005b83811015612fbf57612f5381611b97565b15612fb75760018181548110612f6557fe5b600091825260209091206004909102015482516001600160a01b0390911690839085908110612f9057fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508260010192505b600101612f42565b50925050505b90565b601581565b61027181565b61100281565b601381815481106122cb57fe5b6000612ff0612edc565b519050600080600c5411613005576015613009565b600c545b905080821115613017578091505b8161302157600191505b5090565b67016345785d8a000081565b60055481565b61100381565b61200481565b60005460ff16156130665760405162461bcd60e51b8152600401610db29061890a565b61306e61787b565b60006130916040518060a0016040528060788152602001618d9660789139613cdc565b91509150806130b25760405162461bcd60e51b8152600401610db2906189f5565b60005b8260200151518110156131d7576001836020015182815181106130d457fe5b60209081029190910181015182546001818101855560009485528385208351600493840290910180546001600160a01b039283166001600160a01b03199182161782558587015182850180549185169183169190911790556040860151600283018054606089015160808a01511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b199590981692909516919091179290921694909417161790915560a0909301516003909301929092559186015180519185019391859081106131aa57fe5b602090810291909101810151516001600160a01b03168252810191909152604001600020556001016130b5565b50506103e8600255506000805460ff19166001179055565b600d5481565b33612002146132165760405162461bcd60e51b8152600401610db290618be3565b60005b60155481101561329e57816001600160a01b03166015828154811061323a57fe5b60009182526020909120600490910201546001600160a01b031614156132965760016015828154811061326957fe5b9060005260206000209060040201600201601c6101000a81548160ff02191690831515021790555061329e565b600101613219565b506001600160a01b0381166000908152600460205260409020548015806132ef57506001808203815481106132cf57fe5b9060005260206000209060040201600201601c9054906101000a900460ff165b1561332d576040516001600160a01b038316907fe209c46bebf57cf265d5d9009a00870e256d9150f3ed5281ab9d9eb3cec6e4be90600090a2613336565b610dd28161505d565b5050565b601354600090815b818110156134435761342b85858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060138054909250859150811061339357fe5b600091825260209182902001805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156134215780601f106133f657610100808354040283529160200191613421565b820191906000526020600020905b81548152906001019060200180831161340457829003601f168201915b5050505050616386565b1561343b57600192505050611c42565b600101613342565b5060125460005b818110156134b45761349b86868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060128054909250859150811061339357fe5b156134ac5760019350505050611c42565b60010161344a565b50600095945050505050565b33611001146134e15760405162461bcd60e51b8152600401610db290618b9a565b600b5461359f576134f06177a5565b60015460005b8181101561359b57600b80546001810182556000919091528351600080516020618d368339815191526016909202918201908155602080860151600080516020618d768339815191528401805460ff191691151591909117905560408601518051879461357793600080516020618d568339815191529091019201906177d4565b50606082015161358d906003830190601361784e565b5050508060010190506134f6565b5050505b60006135aa826163ea565b90506135b581611ac8565b15613336576133368282616290565b606581565b3341146135e85760405162461bcd60e51b8152600401610db290618a85565b60005460ff1661360a5760405162461bcd60e51b8152600401610db2906182f7565b6000341161362a5760405162461bcd60e51b8152600401610db29061864a565b3a156136485760405162461bcd60e51b8152600401610db2906187dc565b6001600160a01b03811660009081526004602052604090205460145434919060ff1661368857610271600f556103aa6006556014805460ff191660011790555b60006136b16127106136a5600f548661658d90919063ffffffff16565b9063ffffffff6165c716565b90508015613721576040516110029082156108fc029083906000818181858888f193505050501580156136e8573d6000803e3d6000fd5b507f6ecc855f9440a9282c90913bbc91619fd44f5ec0b462af28d127b116f130aa4d816040516137189190618c29565b60405180910390a15b60008311801561373357506000600654115b156137d95760006137556127106136a56006548761658d90919063ffffffff16565b905080156137d75760405161dead9082156108fc029083906000818181858888f1935050505015801561378c573d6000803e3d6000fd5b507f627059660ea01c4733a328effb2294d2f86905bf806da763a89cee254de8bee5816040516137bc9190618c29565b60405180910390a16137d4848263ffffffff615bb116565b93505b505b6137e9838263ffffffff615bb116565b925081156138e957600060018084038154811061380257fe5b9060005260206000209060040201905080600201601c9054906101000a900460ff161561386f57846001600160a01b03167ff177e5d6c5764d79c32883ed824111d9b13f5668cf6ab1cc12dd36791dd955b4856040516138629190618c29565b60405180910390a26138e3565b600354613882908563ffffffff615bf316565b600390815581015461389a908563ffffffff615bf316565b60038201556040516001600160a01b038616907f93a090ecc682c002995fad3c85b30c5651d7fd29b0be5da9d784a3302aedc055906138da908790618c29565b60405180910390a25b5061392b565b836001600160a01b03167ff177e5d6c5764d79c32883ed824111d9b13f5668cf6ab1cc12dd36791dd955b4846040516139229190618c29565b60405180910390a25b50505050565b600e5481565b61100081565b61dead81565b600b818154811061395057fe5b6000918252602091829020601691909102018054600180830154600280850180546040805161010096831615969096026000190190911692909204601f810188900488028501880190925281845293965060ff909116949192918301828280156139fb5780601f106139d0576101008083540402835291602001916139fb565b820191906000526020600020905b8154815290600101906020018083116139de57829003601f168201915b5050505050905083565b61100481565b6000600a5460001480613a1c575081155b80613a275750600954155b15613a34575060006110c4565b60096000815460019003919050819055506000613a7f600a546136a5856136a5600b8981548110613a6157fe5b6000918252602090912060169091020154439063ffffffff615bb116565b90506000600b8581548110613a9057fe5b906000526020600020906016020160010160006101000a81548160ff0219169083151502179055506000806110016001600160a01b0316638256ace66040518163ffffffff1660e01b8152600401604080518083038186803b158015613af557600080fd5b505afa158015613b09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b2d9190617e68565b9150915060009350808310613c8c57613b468787615c18565b506040516333c1892360e21b81526000906120029063cf06248c90613b6f908b90600401617fa5565b60206040518083038186803b158015613b8757600080fd5b505afa158015613b9b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613bbf9190617c15565b6001600160a01b031614613c2b576040516313d13bdb60e31b815261100190639e89ded890613bf4908a908790600401617fb9565b600060405180830381600087803b158015613c0e57600080fd5b505af1158015613c22573d6000803e3d6000fd5b50505050613c83565b6040516305bfb49960e41b815261100190635bfb499090613c50908a90600401617fa5565b600060405180830381600087803b158015613c6a57600080fd5b505af1158015613c7e573d6000803e3d6000fd5b505050505b60019350613c9e565b818310613c9e57613c9c876163ea565b505b6040516001600160a01b038816907fb9d38178dc641ff1817967a63c9078cbcd955a9f1fcd75e0e3636de615d44d3b90600090a25050509392505050565b613ce461787b565b6000613cee61787b565b613cf6617918565b613d07613d0286616609565b61662e565b90506000805b613d1683616678565b15613e8a5780613d3b57613d31613d2c84616699565b6166e7565b60ff168452613e82565b8060011415613e7d576060613d57613d5285616699565b616767565b90508051604051908082528060200260200182016040528015613d9457816020015b613d8161789f565b815260200190600190039081613d795790505b5085602001819052508051604051908082528060200260200182016040528015613dd257816020015b6060815260200190600190039081613dbd5790505b50604086015260005b8151811015613e7257613dec61789f565b60606000613e0c858581518110613dff57fe5b6020026020010151616838565b92509250925080613e2c578860009a509a50505050505050505050613e93565b8289602001518581518110613e3d57fe5b60200260200101819052508189604001518581518110613e5957fe5b6020026020010181905250505050806001019050613ddb565b506001925050613e82565b613e8a565b600101613d0d565b50919350909150505b915091565b604080516001808252818301909252606091829190816020015b6060815260200190600190039081613eb2579050509050613ed88363ffffffff16616952565b81600081518110613ee557fe5b60200260200101819052506110c481616965565b6000606483511115613f3057600080516020618d16833981519152604051613f209061840a565b60405180910390a1506066611c42565b60005b8351811015613fce5760005b81811015613fc557848181518110613f5357fe5b6020026020010151600001516001600160a01b0316858381518110613f7457fe5b6020026020010151600001516001600160a01b03161415613fbd57600080516020618d16833981519152604051613faa90618565565b60405180910390a1606692505050611c42565b600101613f3f565b50600101613f33565b5060608060606015805480602002602001604051908101604052809291908181526020016000905b828210156140805760008481526020908190206040805160c0810182526004860290920180546001600160a01b039081168452600180830154821685870152600283015491821693850193909352600160a01b81046001600160401b03166060850152600160e01b900460ff16151560808401526003015460a08301529083529092019101613ff6565b50505050905060606016805480602002602001604051908101604052809291908181526020016000905b828210156141555760008481526020908190208301805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156141415780601f1061411657610100808354040283529160200191614141565b820191906000526020600020905b81548152906001019060200180831161412457829003601f168201915b5050505050815260200190600101906140aa565b50505050905060005b82518110156141b25782818151811061417357fe5b60200260200101516060015160020283828151811061418e57fe5b60209081029190910101516001600160401b0390911660609091015260010161415e565b506060806141c2898986866169ef565b915091506141d08282615171565b6001546040805182815260208084028201019091529298509096506000955085945092506060915082801561420f578160200160208202803683370190505b50905060005b828110156143a05760006001600160a01b03166120026001600160a01b031663cf06248c6001848154811061424657fe5b60009182526020909120600491820201546040516001600160e01b031960e085901b168152614281926001600160a01b039092169101617fa5565b60206040518083038186803b15801561429957600080fd5b505afa1580156142ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142d19190617c15565b6001600160a01b0316146143335760018282815181106142ed57fe5b602002602001019060ff16908160ff16815250506001818154811061430e57fe5b90600052602060002090600402016003015460001461432e578360010193505b614398565b67016345785d8a00006001828154811061434957fe5b9060005260206000209060040201600301541061436b57846001019450614398565b6001818154811061437857fe5b906000526020600020906004020160030154600014614398578360010193505b600101614215565b506060846040519080825280602002602001820160405280156143cd578160200160208202803683370190505b5090506060856040519080825280602002602001820160405280156143fc578160200160208202803683370190505b50905060608660405190808252806020026020018201604052801561442b578160200160208202803683370190505b50905060608760405190808252806020026020018201604052801561445a578160200160208202803683370190505b509050600060608860405190808252806020026020018201604052801561448b578160200160208202803683370190505b5090506060896040519080825280602002602001820160405280156144ba578160200160208202803683370190505b50905060009a506000995060006110046001600160a01b031663149d14d96040518163ffffffff1660e01b815260040160206040518083038186803b15801561450257600080fd5b505afa158015614516573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061453a9190617e50565b905067016345785d8a000081111561458657600080516020618d16833981519152604051614567906188c9565b60405180910390a160689e505050505050505050505050505050611c42565b60005b8a81101561491a5789818151811061459d57fe5b602002602001015160ff166001141561469357600181815481106145bd57fe5b90600052602060002090600402016003015460001461468e57600181815481106145e357fe5b600091825260209091206004909102015484516001600160a01b039091169085908e90811061460e57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250506001818154811061463b57fe5b906000526020600020906004020160030154838d8151811061465957fe5b60200260200101818152505060018a8d8151811061467357fe5b602002602001019060ff16908160ff16815250508b6001019b505b614912565b67016345785d8a0000600182815481106146a957fe5b9060005260206000209060040201600301541061482e57600181815481106146cd57fe5b906000526020600020906004020160020160009054906101000a90046001600160a01b0316898e815181106146fe57fe5b60200260200101906001600160a01b031690816001600160a01b03168152505060006402540be4006001838154811061473357fe5b9060005260206000209060040201600301548161474c57fe5b066001838154811061475a57fe5b9060005260206000209060040201600301540390506147828382615bb190919063ffffffff16565b898f8151811061478e57fe5b602002602001018181525050600182815481106147a757fe5b906000526020600020906004020160010160009054906101000a90046001600160a01b0316878f815181106147d857fe5b60200260200101906001600160a01b031690816001600160a01b03168152505081888f8151811061480557fe5b6020908102919091010152614820868263ffffffff615bf316565b95508d6001019d5050614912565b6001818154811061483b57fe5b906000526020600020906004020160030154600014614912576001818154811061486157fe5b906000526020600020906004020160010160009054906101000a90046001600160a01b0316848d8151811061489257fe5b60200260200101906001600160a01b031690816001600160a01b031681525050600181815481106148bf57fe5b906000526020600020906004020160030154838d815181106148dd57fe5b60200260200101818152505060008a8d815181106148f757fe5b602002602001019060ff16908160ff16815250508b6001019b505b600101614589565b5060008415614b90576002546040516303702b2960e51b815261100491636e056520918891614954918e918e918d914201906004016180b3565b6020604051808303818588803b15801561496d57600080fd5b505af19350505050801561499e575060408051601f3d908101601f1916820190925261499b91810190617d7d565b60015b614b15576040516000815260443d10156149ba57506000614a55565b60046000803e60005160e01c6308c379a081146149db576000915050614a55565b60043d036004833e81513d60248201116001600160401b0382111715614a0657600092505050614a55565b80830180516001600160401b03811115614a27576000945050505050614a55565b8060208301013d8601811115614a4557600095505050505050614a55565b601f01601f191660405250925050505b80614a605750614aa2565b60019150857fa7cdeed7d0db45e3219a6e5d60838824c16f1d39991fcfe3f963029c844bf28082604051614a949190618138565b60405180910390a250614b10565b3d808015614acc576040519150601f19603f3d011682016040523d82523d6000602084013e614ad1565b606091505b5060019150857fbfa884552dd8921b6ce90bfe906952ae5b3b29be0cc1a951d4f62697635a3a4582604051614b069190618138565b60405180910390a2505b614b90565b8015614b57577fa217d08e65f80c73121cd9db834d81652d544bfbf452f6d04922b16c90a37b7086604051614b4a9190618c29565b60405180910390a1614b8e565b857fa7cdeed7d0db45e3219a6e5d60838824c16f1d39991fcfe3f963029c844bf280604051614b85906181fa565b60405180910390a25b505b8015614d465760005b8751811015614d44576000888281518110614bb057fe5b60200260200101519050600060018281548110614bc957fe5b60009182526020909120600160049092020181015481546001600160a01b03909116916108fc9185908110614bfa57fe5b9060005260206000209060040201600301549081150290604051600060405180830381858888f1935050505090508015614cb65760018281548110614c3b57fe5b60009182526020909120600160049092020181015481546001600160a01b03909116917f6c61d60f69a7beb3e1c80db7f39f37b208537cbb19da3174511b477812b2fc7d9185908110614c8a57fe5b906000526020600020906004020160030154604051614ca99190618c29565b60405180910390a2614d3a565b60018281548110614cc357fe5b60009182526020909120600160049092020181015481546001600160a01b03909116917f25d0ce7d2f0cec669a8c17efe49d195c13455bb8872b65fa610ac7f53fe4ca7d9185908110614d1257fe5b906000526020600020906004020160030154604051614d319190618c29565b60405180910390a25b5050600101614b99565b505b835115614f3c5760005b8451811015614f3a578a8181518110614d6557fe5b602002602001015160ff1660011415614e04576120026001600160a01b031663092193ab858381518110614d9557fe5b6020026020010151878481518110614da957fe5b60200260200101516040518363ffffffff1660e01b8152600401614dcd9190617fa5565b6000604051808303818588803b158015614de657600080fd5b505af1158015614dfa573d6000803e3d6000fd5b5050505050614f32565b6000858281518110614e1257fe5b60200260200101516001600160a01b03166108fc868481518110614e3257fe5b60200260200101519081150290604051600060405180830381858888f1935050505090508015614ec857858281518110614e6857fe5b60200260200101516001600160a01b03167f6c61d60f69a7beb3e1c80db7f39f37b208537cbb19da3174511b477812b2fc7d868481518110614ea657fe5b6020026020010151604051614ebb9190618c29565b60405180910390a2614f30565b858281518110614ed457fe5b60200260200101516001600160a01b03167f25d0ce7d2f0cec669a8c17efe49d195c13455bb8872b65fa610ac7f53fe4ca7d868481518110614f1257fe5b6020026020010151604051614f279190618c29565b60405180910390a25b505b600101614d50565b505b505050505050505050505050506000471115614fb9577f6ecc855f9440a9282c90913bbc91619fd44f5ec0b462af28d127b116f130aa4d47604051614f819190618c29565b60405180910390a1604051611002904780156108fc02916000818181858888f19350505050158015614fb7573d6000803e3d6000fd5b505b60006003819055600555815115614fd457614fd482826153aa565b6110016001600160a01b031663fc4333cd6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561501157600080fd5b505af1158015615025573d6000803e3d6000fd5b50506040517fedd8d7296956dd970ab4de3f2fc03be2b0ffc615d20cd4c72c6e44f928630ebf925060009150a1506000949350505050565b600154600554600091906000198201118015906150d05760018085038154811061508357fe5b600091825260208220600490910201546040516001600160a01b03909116917fe209c46bebf57cf265d5d9009a00870e256d9150f3ed5281ab9d9eb3cec6e4be91a2600092505050611b92565b6005805460019081019091558054819060001987019081106150ee57fe5b9060005260206000209060040201600201601c6101000a81548160ff02191690831515021790555060018085038154811061512557fe5b600091825260208220600490910201546040516001600160a01b03909116917ff226e7d8f547ff903d9d419cf5f54e0d7d07efa9584135a53a057c5f1f27f49a91a25060009392505050565b606080600080808080615182612fe6565b6001549091505b801561529057600181039250600b83815481106151a257fe5b600091825260209091206001601690920201015460ff166151c257615287565b600183815481106151cf57fe5b60009182526020909120600490910201546001600160a01b031694506151f6858484613a0b565b9350831580615209575060018a51038610155b1561521357615287565b60005b8a5181101561528557856001600160a01b03168b828151811061523557fe5b6020026020010151600001516001600160a01b0316141561527d5760018b828151811061525e57fe5b6020908102919091010151901515608090910152600190960195615285565b600101615216565b505b60001901615189565b50848951036040519080825280602002602001820160405280156152ce57816020015b6152bb61789f565b8152602001906001900390816152b35790505b5096508489510360405190808252806020026020018201604052801561530857816020015b60608152602001906001900390816152f35790505b5095506000915060005b895181101561539c5789818151811061532757fe5b6020026020010151608001516153945789818151811061534357fe5b602002602001015188848151811061535757fe5b602002602001018190525088818151811061536e57fe5b602002602001015187848151811061538257fe5b60200260200101819052508260010192505b600101615312565b5050505050505b9250929050565b600154825160005b828110156154c75760016153c461789f565b600183815481106153d157fe5b600091825260208083206040805160c08101825260049490940290910180546001600160a01b0390811685526001820154811693850193909352600281015492831691840191909152600160a01b82046001600160401b03166060840152600160e01b90910460ff16151560808301526003015460a082015291505b8481101561549b5787818151811061546157fe5b6020026020010151600001516001600160a01b031682600001516001600160a01b03161415615493576000925061549b565b60010161544d565b5081156154bd5780516001600160a01b03166000908152600460205260408120555b50506001016153b2565b508082111561558657805b828110156155845760018054806154e557fe5b60008281526020812060046000199093019283020180546001600160a01b0319908116825560018201805490911690556002810180546001600160e81b0319169055600301559055600b80548061553857fe5b60008281526020812060166000199093019283020181815560018101805460ff191690559061556a60028301826178d4565b615578600383016000617938565b505090556001016154d2565b505b60008183106155955781615597565b825b905060005b81811015615953576156498682815181106155b357fe5b6020026020010151600183815481106155c857fe5b60009182526020918290206040805160c08101825260049390930290910180546001600160a01b0390811684526001820154811694840194909452600281015493841691830191909152600160a01b83046001600160401b03166060830152600160e01b90920460ff161515608082015260039091015460a0820152616dbb565b6157fd57806001016004600088848151811061566157fe5b6020026020010151600001516001600160a01b03166001600160a01b031681526020019081526020016000208190555085818151811061569d57fe5b6020026020010151600182815481106156b257fe5b6000918252602091829020835160049092020180546001600160a01b039283166001600160a01b0319918216178255928401516001820180549184169185169190911790556040840151600282018054606087015160808801511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b1995909716929097169190911792909216939093171692909217905560a090910151600390910155845185908290811061576d57fe5b6020026020010151600b828154811061578257fe5b906000526020600020906016020160020190805190602001906157a69291906177d4565b506000600b82815481106157b657fe5b60009182526020822060169190910201600101805460ff191692151592909217909155600b8054839081106157e757fe5b600091825260209091206016909102015561594b565b61588e85828151811061580c57fe5b6020026020010151600b838154811061582157fe5b600091825260209182902060026016909202018101805460408051601f6000196101006001861615020190931694909404918201859004850284018501905280835291929091908301828280156134215780601f106133f657610100808354040283529160200191613421565b6158d95784818151811061589e57fe5b6020026020010151600b82815481106158b357fe5b906000526020600020906016020160020190805190602001906158d79291906177d4565b505b6000600182815481106158e857fe5b90600052602060002090600402016003018190555085818151811061590957fe5b6020026020010151608001516001828154811061592257fe5b9060005260206000209060040201600201601c6101000a81548160ff0219169083151502179055505b60010161559c565b5082821115615b2b576159646177a5565b835b83811015615b285785818151811061597a57fe5b60200260200101518260400181905250600187828151811061599857fe5b6020908102919091018101518254600181810185556000948552838520835160049093020180546001600160a01b039384166001600160a01b0319918216178255848601518284018054918616918316919091179055604080860151600284018054606089015160808a01511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b1995909a1692909616919091179290921696909617169190911790935560a090930151600390930192909255600b8054928301815590935284516016909102600080516020618d36833981519152810191825585830151600080516020618d768339815191528201805491151560ff1990921691909117905592850151805186949293615ace93600080516020618d56833981519152019201906177d4565b506060820151615ae4906003830190601361784e565b5050508060010160046000898481518110615afb57fe5b602090810291909101810151516001600160a01b0316825281019190915260400160002055600101615966565b50505b615b33616e3c565b615b3b61701e565b6000600981905560015493505b83811015615ba9576000600b8281548110615b5f57fe5b60009182526020822060169190910201600101805460ff191692151592909217909155600b805483908110615b9057fe5b6000918252602090912060169091020155600101615b48565b505050505050565b60006110c483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061720c565b6000828201838110156110c45760405162461bcd60e51b8152600401610db29061832e565b60008060018381548110615c2857fe5b90600052602060002090600402016003015490506000600180805490500390506001615c52612edc565b5111615c8757600060018581548110615c6757fe5b906000526020600020906004020160030181905550600092505050611c42565b846001600160a01b03167f3b6f9ef90462b512a1293ecec018670bf7b7f1876fb727590a8a6d7643130a7083604051615cc09190618c29565b60405180910390a26001600160a01b038516600090815260046020526040812055835b60015460001901811015615ead5760018160010181548110615d0157fe5b906000526020600020906004020160018281548110615d1c57fe5b60009182526020909120825460049092020180546001600160a01b03199081166001600160a01b0393841617825560018085015481840180548416918616919091179055600280860180549185018054909416919095161780835584546001600160401b03600160a01b91829004160267ffffffffffffffff60a01b1990911617808355935460ff600160e01b918290041615150260ff60e01b19909416939093179055600392830154920191909155600b805490918301908110615ddd57fe5b9060005260206000209060160201600b8281548110615df857fe5b600091825260209091208254601690920201908155600180830154818301805460ff909216151560ff1990921691909117905560028084018054615e4f938386019390821615610100026000190190911604617947565b50615e62600382810190840160136179bc565b50905050806001016004600060018481548110615e7b57fe5b600091825260208083206004909202909101546001600160a01b03168352820192909252604001902055600101615ce3565b506001805480615eb957fe5b60008281526020812060046000199093019283020180546001600160a01b0319908116825560018201805490911690556002810180546001600160e81b0319169055600301559055600b805480615f0c57fe5b60008281526020812060166000199093019283020181815560018101805460ff1916905590615f3e60028301826178d4565b615f4c600383016000617938565b505090556000818381615f5b57fe5b0490508015615fbf5760015460005b81811015615fbc578260018281548110615f8057fe5b9060005260206000209060040201600301540160018281548110615fa057fe5b6000918252602090912060036004909202010155600101615f6a565b50505b50600195945050505050565b60015481516040805182815260208084028201019091526060929190839082801561600a57816020015b6060815260200190600190039081615ff55790505b50600b549091508314616021579250611b92915050565b60005b8281101561613057600b60016004600089858151811061604057fe5b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054038154811061607457fe5b600091825260209182902060026016909202018101805460408051601f60001961010060018616150201909316949094049182018590048502840185019052808352919290919083018282801561610c5780601f106160e15761010080835404028352916020019161610c565b820191906000526020600020905b8154815290600101906020018083116160ef57829003601f168201915b505050505082828151811061611d57fe5b6020908102919091010152600101616024565b50949350505050565b60005b82811015616286576000828783880160405160200161615c929190617f97565b6040516020818303038152906040528051906020012060001c8161617c57fe5b0690508085018287011461627d576000898388018151811061619a57fe5b60200260200101519050606089848901815181106161b457fe5b602002602001015190508a838801815181106161cc57fe5b60200260200101518b858a01815181106161e257fe5b60200260200101906001600160a01b031690816001600160a01b031681525050818b8489018151811061621157fe5b60200260200101906001600160a01b031690816001600160a01b031681525050898388018151811061623f57fe5b60200260200101518a858a018151811061625557fe5b6020026020010181905250808a8489018151811061626f57fe5b602002602001018190525050505b5060010161613c565b5050505050505050565b600980546001908101909155600b8054839081106162aa57fe5b906000526020600020906016020160010160006101000a81548160ff02191690831515021790555043600b82815481106162e057fe5b600091825260208220601690910201919091556040516001600160a01b038416917ff62981a567ec3cec866c6fa93c55bcdf841d6292d18b8d522ececa769375d82d91a25050565b60008160405160200161633b9190617f7b565b60405160208183030381529060405280519060200120836040516020016163629190617f7b565b6040516020818303038152906040528051906020012014905092915050565b015190565b8151815160009160019181148083146163a257600092506163e0565b600160208701838101602088015b6002848385100114156163db5780518351146163cf5760009650600093505b602092830192016163b0565b505050505b5090949350505050565b6001600160a01b0381166000908152600460205260408120548061641357506000199050611b92565b60018103905060006001828154811061642857fe5b906000526020600020906004020160030154905060006001838154811061644b57fe5b6000918252602090912060036004909202010155600154604051600019909101906001600160a01b038616907f8cd4e147d8af98a9e3b6724021b8bf6aed2e5dac71c38f2dce8161b82585b25d906164a4908590618c29565b60405180910390a2806164bc57829350505050611b92565b60008183816164c757fe5b04905080156165835760005b848110156165255781600182815481106164e957fe5b906000526020600020906004020160030154016001828154811061650957fe5b60009182526020909120600360049092020101556001016164d3565b50600180549085015b8181101561658057826001828154811061654457fe5b906000526020600020906004020160030154016001828154811061656457fe5b600091825260209091206003600490920201015560010161652e565b50505b5091949350505050565b60008261659c57506000611c42565b828202828482816165a957fe5b04146110c45760405162461bcd60e51b8152600401610db29061879b565b60006110c483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250617238565b6166116179e6565b506040805180820190915281518152602082810190820152919050565b616636617918565b61663f8261726f565b61664857600080fd5b600061665783602001516172a9565b60208085015160408051808201909152868152920190820152915050919050565b60006166826179e6565b505080518051602091820151919092015191011190565b6166a16179e6565b6166aa82616678565b6166b357600080fd5b602082015160006166c38261730c565b80830160209586015260408051808201909152908152938401919091525090919050565b8051600090158015906166fc57508151602110155b61670557600080fd5b600061671483602001516172a9565b9050808360000151101561673a5760405162461bcd60e51b8152600401610db290618941565b82516020808501518301805192849003929183101561613057506020919091036101000a90049392505050565b60606167728261726f565b61677b57600080fd5b6000616786836173ed565b90506060816040519080825280602002602001820160405280156167c457816020015b6167b16179e6565b8152602001906001900390816167a95790505b50905060006167d685602001516172a9565b60208601510190506000805b8481101561682d576167f38361730c565b915060405180604001604052808381526020018481525084828151811061681657fe5b6020908102919091010152918101916001016167e2565b509195945050505050565b61684061789f565b6060600061684c61789f565b6060616856617918565b61685f8761662e565b90506000805b61686e83616678565b1561694357806168995761688961688484616699565b617449565b6001600160a01b0316855261693b565b80600114156168c1576168ae61688484616699565b6001600160a01b0316602086015261693b565b80600214156168e9576168d661688484616699565b6001600160a01b0316604086015261693b565b8060031415616915576168fe613d2c84616699565b6001600160401b031660608601526001915061693b565b80600414156169365761692f61692a84616699565b617463565b935061693b565b616943565b600101616865565b50929791965091945092505050565b6060611c42616960836174d3565b6175b9565b60608151600014156169865750604080516000815260208101909152611b92565b60608260008151811061699557fe5b602002602001015190506000600190505b83518110156169d6576169cc828583815181106169bf57fe5b602002602001015161760b565b91506001016169a6565b506110c46169e9825160c060ff16617688565b8261760b565b60608060006120026001600160a01b031663c473318f6040518163ffffffff1660e01b815260040160206040518083038186803b158015616a2f57600080fd5b505afa158015616a43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190616a679190617e50565b90508085518851011015616a7c575083518651015b606081604051908082528060200260200182016040528015616ab857816020015b616aa561789f565b815260200190600190039081616a9d5790505b509050606082604051908082528060200260200182016040528015616af157816020015b6060815260200190600190039081616adc5790505b50905060008060005b8b51831080616b095750895182105b8015616b1457508581105b15616da9578b51831415616b8457898281518110616b2e57fe5b6020026020010151858281518110616b4257fe5b6020026020010181905250888281518110616b5957fe5b6020026020010151848281518110616b6d57fe5b602090810291909101015260019182019101616afa565b8951821415616bef578b8381518110616b9957fe5b6020026020010151858281518110616bad57fe5b60200260200101819052508a8381518110616bc457fe5b6020026020010151848281518110616bd857fe5b602090810291909101015260019283019201616afa565b898281518110616bfb57fe5b6020026020010151606001516001600160401b03168c8481518110616c1c57fe5b6020026020010151606001516001600160401b03161115616c98578b8381518110616c4357fe5b6020026020010151858281518110616c5757fe5b60200260200101819052508a8381518110616c6e57fe5b6020026020010151848281518110616c8257fe5b6020026020010181905250826001019250616da1565b898281518110616ca457fe5b6020026020010151606001516001600160401b03168c8481518110616cc557fe5b6020026020010151606001516001600160401b03161015616d4157898281518110616cec57fe5b6020026020010151858281518110616d0057fe5b6020026020010181905250888281518110616d1757fe5b6020026020010151848281518110616d2b57fe5b6020026020010181905250816001019150616da1565b898281518110616d4d57fe5b6020026020010151600001516001600160a01b03168c8481518110616d6e57fe5b6020026020010151600001516001600160a01b03161015616d95578b8381518110616c4357fe5b898281518110616b2e57fe5b600101616afa565b50929a91995090975050505050505050565b805182516000916001600160a01b039182169116148015616df5575081602001516001600160a01b031683602001516001600160a01b0316145b8015616e1a575081604001516001600160a01b031683604001516001600160a01b0316145b80156110c45750506060908101519101516001600160401b0390811691161490565b60125460135480821115616e8757805b82811015616e85576012805480616e5f57fe5b600190038181906000526020600020016000616e7b91906178d4565b9055600101616e4c565b505b6000818310616e965781616e98565b825b905060005b81811015616fb057616f5560128281548110616eb557fe5b600091825260209182902001805460408051601f6002600019610100600187161502019094169390930492830185900485028101850190915281815292830182828015616f435780601f10616f1857610100808354040283529160200191616f43565b820191906000526020600020905b815481529060010190602001808311616f2657829003601f168201915b50505050506013838154811061339357fe5b616fa85760138181548110616f6657fe5b9060005260206000200160128281548110616f7d57fe5b906000526020600020019080546001816001161561010002031660029004616fa6929190617947565b505b600101616e9d565b5082821115610dd257825b8281101561392b57601260138281548110616fd257fe5b6000918252602080832084546001818101875595855291909320929091018054617015949390920192909160026101009282161592909202600019011604617947565b50600101616fbb565b601354600b548082111561706957805b8281101561706757601380548061704157fe5b60019003818190600052602060002001600061705d91906178d4565b905560010161702e565b505b6000818310617078578161707a565b825b905060005b81811015617199576171376013828154811061709757fe5b600091825260209182902001805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156171255780601f106170fa57610100808354040283529160200191617125565b820191906000526020600020905b81548152906001019060200180831161710857829003601f168201915b5050505050600b838154811061582157fe5b61719157600b818154811061714857fe5b90600052602060002090601602016002016013828154811061716657fe5b90600052602060002001908054600181600116156101000203166002900461718f929190617947565b505b60010161707f565b5082821115610dd257825b8281101561392b576013600b82815481106171bb57fe5b60009182526020808320845460018082018755958552919093206016929092029092016002908101805461720395939094019390926000199082161561010002011604617947565b506001016171a4565b600081848411156172305760405162461bcd60e51b8152600401610db29190618138565b505050900390565b600081836172595760405162461bcd60e51b8152600401610db29190618138565b50600083858161726557fe5b0495945050505050565b805160009061728057506000611b92565b6020820151805160001a9060c082101561729f57600092505050611b92565b5060019392505050565b8051600090811a60808110156172c3576000915050611b92565b60b88110806172de575060c081108015906172de575060f881105b156172ed576001915050611b92565b60c08110156173015760b519019050611b92565b60f519019050611b92565b80516000908190811a608081101561732757600191506173e6565b60b881101561733c57607e19810191506173e6565b60c081101561738d57600060b78203600186019550806020036101000a8651049150600181018201935050808310156173875760405162461bcd60e51b8152600401610db2906186e8565b506173e6565b60f88110156173a25760be19810191506173e6565b600060f78203600186019550806020036101000a8651049150600181018201935050808310156173e45760405162461bcd60e51b8152600401610db2906186e8565b505b5092915050565b80516000906173fe57506000611b92565b6000809050600061741284602001516172a9565b602085015185519181019250015b80821015617440576174318261730c565b82019150826001019250617420565b50909392505050565b805160009060151461745a57600080fd5b611c42826166e7565b805160609061747157600080fd5b600061748083602001516172a9565b83516040805191839003808352601f19601f82011683016020019091529192506060908280156174b7576020820181803683370190505b509050600081602001905061613084876020015101828561775a565b604080516020808252818301909252606091829190602082018180368337505050602081018490529050600067ffffffffffffffff1984166175175750601861753b565b6fffffffffffffffffffffffffffffffff1984166175375750601061753b565b5060005b60208110156175715781818151811061755057fe5b01602001516001600160f81b0319161561756957617571565b60010161753b565b60008160200390506060816040519080825280601f01601f1916602001820160405280156175a6576020820181803683370190505b5080830196909652508452509192915050565b6060815160011480156175eb5750607f60f81b826000815181106175d957fe5b01602001516001600160f81b03191611155b156175f7575080611b92565b611c426176098351608060ff16617688565b835b6060806040519050835180825260208201818101602087015b8183101561763c578051835260209283019201617624565b50855184518101855292509050808201602086015b81831015617669578051835260209283019201617651565b508651929092011591909101601f01601f191660405250905092915050565b60606801000000000000000083106176b25760405162461bcd60e51b8152600401610db2906184e0565b6040805160018082528183019092526060916020820181803683370190505090506037841161770c5782840160f81b816000815181106176ee57fe5b60200101906001600160f81b031916908160001a9053509050611c42565b6060617717856174d3565b90508381510160370160f81b8260008151811061773057fe5b60200101906001600160f81b031916908160001a905350617751828261760b565b95945050505050565b8061776457610dd2565b5b60208110617784578251825260209283019290910190601f1901617765565b915181516020939093036101000a6000190180199091169216919091179052565b604051806080016040528060008152602001600015158152602001606081526020016177cf617a00565b905290565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061781557805160ff1916838001178555617842565b82800160010185558215617842579182015b82811115617842578251825591602001919060010190617827565b50613021929150617a1f565b82601381019282156178425791602002820182811115617842578251825591602001919060010190617827565b6040518060600160405280600060ff16815260200160608152602001606081525090565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a081019190915290565b50805460018160011615610100020316600290046000825580601f106178fa5750611d9e565b601f016020900490600052602060002090810190611d9e9190617a1f565b604051806040016040528061792b6179e6565b8152602001600081525090565b50611d9e906013810190617a1f565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106179805780548555617842565b8280016001018555821561784257600052602060002091601f016020900482015b828111156178425782548255916001019190600101906179a1565b826013810192821561784257918201828111156178425782548255916001019190600101906179a1565b604051806040016040528060008152602001600081525090565b6040518061026001604052806013906020820280368337509192915050565b612fc591905b808211156130215760008155600101617a25565b8035611c4281618d00565b60008083601f840112617a55578182fd5b5081356001600160401b03811115617a6b578182fd5b60208301915083602080830285010111156153a357600080fd5b6000601f8381840112617a96578182fd5b8235617aa9617aa482618cb5565b618c8f565b818152925060208084019085810160005b84811015617b3b578135880189603f820112617ad557600080fd5b838101356001600160401b03811115617aed57600080fd5b617afe818901601f19168601618c8f565b81815260408c81848601011115617b1457600080fd5b82818501888401375060009181018601919091528552509282019290820190600101617aba565b50505050505092915050565b600082601f830112617b57578081fd5b8135617b65617aa482618cb5565b818152915060208083019084810181840286018201871015617b8657600080fd5b6000805b85811015617b3b5782356001600160401b0381168114617ba8578283fd5b85529383019391830191600101617b8a565b60008083601f840112617bcb578182fd5b5081356001600160401b03811115617be1578182fd5b6020830191508360208285010111156153a357600080fd5b600060208284031215617c0a578081fd5b81356110c481618d00565b600060208284031215617c26578081fd5b81516110c481618d00565b60008060008060408587031215617c46578283fd5b84356001600160401b0380821115617c5c578485fd5b617c6888838901617a44565b90965094506020870135915080821115617c80578384fd5b50617c8d87828801617a44565b95989497509550505050565b600080600060608486031215617cad578283fd5b83356001600160401b0380821115617cc3578485fd5b81860187601f820112617cd4578586fd5b80359250617ce4617aa484618cb5565b80848252602080830192508084018b828389028701011115617d0457898afd5b8994505b86851015617d2e57617d1a8c82617a39565b845260019490940193928101928101617d08565b509097508801359350505080821115617d45578384fd5b617d5187838801617b47565b93506040860135915080821115617d66578283fd5b50617d7386828701617a85565b9150509250925092565b600060208284031215617d8e578081fd5b815180151581146110c4578182fd5b60008060208385031215617daf578182fd5b82356001600160401b03811115617dc4578283fd5b617dd085828601617bba565b90969095509350505050565b60008060008060408587031215617df1578384fd5b84356001600160401b0380821115617e07578586fd5b617e1388838901617bba565b90965094506020870135915080821115617e2b578384fd5b50617c8d87828801617bba565b600060208284031215617e49578081fd5b5035919050565b600060208284031215617e61578081fd5b5051919050565b60008060408385031215617e7a578182fd5b505080516020909101519092909150565b600080600060408486031215617e9f578081fd5b833560ff81168114617eaf578182fd5b925060208401356001600160401b03811115617ec9578182fd5b617ed586828701617bba565b9497909650939450505050565b6000815180845260208085019450808401835b83811015617f1a5781516001600160a01b031687529582019590820190600101617ef5565b509495945050505050565b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b60008151808452617f67816020860160208601618cd4565b601f01601f19169290920160200192915050565b60008251617f8d818460208701618cd4565b9190910192915050565b918252602082015260400190565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b03968716815294861660208601529290941660408401526001600160401b03166060830152911515608082015260a081019190915260c00190565b6001600160a01b0392909216825260ff16602082015260400190565b6000602082526110c46020830184617ee2565b6000604082526180566040830185617ee2565b602083820381850152818551808452828401915082838202850101838801865b838110156180a457601f19878403018552618092838351617f4f565b94860194925090850190600101618076565b50909998505050505050505050565b6000608082526180c66080830187617ee2565b828103602084810191909152865180835287820192820190845b818110156180fc578451835293830193918301916001016180e0565b505084810360408601526181108188617ee2565b93505050506001600160401b038316606083015295945050505050565b901515815260200190565b6000602082526110c46020830184617f4f565b60006040825261815f604083018688617f25565b8281036020840152618172818587617f25565b979650505050505050565b6020808252601c908201527f6c656e677468206f66206275726e526174696f206d69736d6174636800000000604082015260600190565b60208082526026908201527f6c656e677468206f66206d61784e756d4f664d61696e7461696e696e67206d696040820152650e6dac2e8c6d60d31b606082015260800190565b6020808252601b908201527f6261746368207472616e736665722072657475726e2066616c73650000000000604082015260600190565b6020808252602c908201527f6c656e677468206f66206d61784e756d4f66576f726b696e6743616e6469646160408201526b0e8cae640dad2e6dac2e8c6d60a31b606082015260800190565b60208082526025908201527f6c656e677468206f66206d61696e7461696e536c6173685363616c65206d69736040820152640dac2e8c6d60db1b606082015260800190565b6020808252818101527f6c656e677468206f66206e756d4f66436162696e657473206d69736d61746368604082015260600190565b60208082526019908201527f74686520636f6e7472616374206e6f7420696e69742079657400000000000000604082015260600190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b60208082526028908201527f746865206e756d4f66436162696e657473206d75737420626520677265617465604082015267072207468616e20360c41b606082015260800190565b60208082526039908201527f746865206e756d4f66436162696e657473206d757374206265206c657373207460408201527f68616e204d41585f4e554d5f4f465f56414c494441544f525300000000000000606082015260800190565b60208082526029908201527f746865206e756d626572206f662076616c696461746f727320657863656564206040820152681d1a19481b1a5b5a5d60ba1b606082015260800190565b60208082526022908201527f63616e206e6f7420646f207468697320747769636520696e206f6e6520626c6f604082015261636b60f01b606082015260800190565b6020808252602b908201527f746865206275726e526174696f206d757374206265206e6f206772656174657260408201526a0207468616e2031303030360ac1b606082015260800190565b6020808252600e908201526d696e70757420746f6f206c6f6e6760901b604082015260600190565b60208082526037908201527f746865206d61784e756d4f664d61696e7461696e696e67206d7573742062652060408201527f6c657373207468616e206e756d4f66436162696e657473000000000000000000606082015260800190565b6020808252602b908201527f6475706c696361746520636f6e73656e7375732061646472657373206f66207660408201526a185b1a59185d1bdc94d95d60aa1b606082015260800190565b60208082526033908201527f7468652073797374656d526577617264526174696f206d757374206265206e6f60408201527202067726561746572207468616e20313030303606c1b606082015260800190565b60208082526027908201527f7468652065787069726554696d655365636f6e64476170206973206f7574206f604082015266662072616e676560c81b606082015260800190565b6020808252601590820152746465706f7369742076616c7565206973207a65726f60581b604082015260600190565b60208082526049908201527f746865206d61784e756d4f66576f726b696e6743616e64696461746573206d7560408201527f7374206265206e6f742067726561746572207468616e206d61784e756d4f6643606082015268616e6469646174657360b81b608082015260a00190565b6020808252601190820152706164646974696f6e206f766572666c6f7760781b604082015260600190565b60208082526023908201527f63616e206e6f7420656e7465722054656d706f72617279204d61696e74656e616040820152626e636560e81b606082015260800190565b60208082526025908201527f6c656e677468206f66206a61696c2076616c696461746f7273206d757374206260408201526465206f6e6560d81b606082015260800190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252601490820152736761737072696365206973206e6f74207a65726f60601b604082015260600190565b6020808252602e908201527f746865206d6573736167652073656e646572206d75737420626520676f76657260408201526d1b985b98d94818dbdb9d1c9858dd60921b606082015260800190565b60208082526025908201527f6c656e677468206f66206d61784e756d4f6643616e64696461746573206d69736040820152640dac2e8c6d60db1b606082015260800190565b6020808252601290820152716e6f7420696e206d61696e74656e616e636560701b604082015260600190565b60208082526021908201527f666565206973206c6172676572207468616e2044555354595f494e434f4d494e6040820152604760f81b606082015260800190565b60208082526019908201527f74686520636f6e747261637420616c726561647920696e697400000000000000604082015260600190565b6020808252601a908201527f6c656e677468206973206c657373207468616e206f6666736574000000000000604082015260600190565b60208082526026908201527f6c656e677468206f662065787069726554696d655365636f6e64476170206d696040820152650e6dac2e8c6d60d31b606082015260800190565b60208082526017908201527f6f6e6c792063757272656e742076616c696461746f7273000000000000000000604082015260600190565b60208082526021908201527f6661696c656420746f20706172736520696e69742076616c696461746f7253656040820152601d60fa1b606082015260800190565b6020808252602f908201527f746865206d6573736167652073656e646572206d7573742062652063726f737360408201526e0818da185a5b8818dbdb9d1c9858dd608a1b606082015260800190565b6020808252602d908201527f746865206d6573736167652073656e646572206d75737420626520746865206260408201526c3637b1b590383937b23ab1b2b960991b606082015260800190565b60208082526024908201527f6c656e677468206f662073797374656d526577617264526174696f206d69736d6040820152630c2e8c6d60e31b606082015260800190565b6020808252603e908201527f746865206d61696e7461696e536c6173685363616c65206d757374206265206760408201527f726561746572207468616e203020616e64206c657373207468616e2031300000606082015260800190565b6020808252600d908201526c756e6b6e6f776e20706172616d60981b604082015260600190565b60208082526029908201527f746865206d6573736167652073656e646572206d75737420626520736c6173686040820152680818dbdb9d1c9858dd60ba1b606082015260800190565b6020808252601f908201527f746865206d73672073656e646572206d757374206265207374616b6548756200604082015260600190565b61ffff91909116815260200190565b90815260200190565b60008482528315156020830152606060408301526177516060830184617f4f565b63ffffffff91909116815260200190565b60ff91909116815260200190565b600060ff8516825260406020830152617751604083018486617f25565b6040518181016001600160401b0381118282101715618cad57600080fd5b604052919050565b60006001600160401b03821115618cca578081fd5b5060209081020190565b60005b83811015618cef578181015183820152602001618cd7565b8381111561392b5750506000910152565b6001600160a01b0381168114611d9e57600080fdfe70e72399380dcfb0338abc03dc8d47f9f470ada8e769c9a78d644ea97385ecb20175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db90175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01dbb0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01dbaf87680f873f871949fb29aac15b9a4b7f17c3385939b007540f4d791949fb29aac15b9a4b7f17c3385939b007540f4d791949fb29aac15b9a4b7f17c3385939b007540f4d79164b085e6972fc98cd3c81d64d40e325acfed44365b97a7567a27939c14dbc7512ddcf54cb1284eb637cfa308ae4e00cb5588a164736f6c6343000604000a", + }, + { + ContractAddr: common.HexToAddress(SlashContract), + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/cfc0bd1127186a917ddc38fd38d22903034d3f0b", + Code: "608060405234801561001057600080fd5b50600436106102f15760003560e01c8063831d65d11161019d578063c81b1662116100e9578063df8079e9116100a2578063f9a2bbc71161007c578063f9a2bbc714610575578063fc3e59081461057d578063fc4333cd14610585578063fd6a68791461058d576102f1565b8063df8079e91461055d578063e1c7392a14610565578063eb57bff71461056d576102f1565b8063c81b16621461050c578063c8509d8114610514578063c96be4cb14610527578063cc844b731461053a578063d2a42e4b1461054d578063dc927faf14610555576102f1565b8063aa82dce111610156578063ac0af62911610130578063ac0af629146104e1578063ac431751146104e9578063ae61dc3b146104fc578063c80d4b8f14610504576102f1565b8063aa82dce1146104c9578063aad56063146104d1578063ab51bb96146104d9576102f1565b8063831d65d11461048357806396713da9146104965780639dc092621461049e5780639e89ded8146104a6578063a1a11bf5146104b9578063a78abc16146104c1576102f1565b8063493279b11161025c5780636e47b4821161021557806375d47a0a116101ef57806375d47a0a146104635780637912a65d1461046b5780637942fd05146104735780638256ace61461047b576102f1565b80636e47b4821461044b57806370fd5bad14610453578063718a8aa81461045b576102f1565b8063493279b1146104035780634bf6c8821461041857806351e8067214610420578063567a372d146104285780635bfb49901461043057806362b72cf514610443576102f1565b806335aa2e44116102ae57806335aa2e441461039557806337c8dab9146103a8578063389f4f71146103c95780633a63f4b1146103de5780633dffc387146103e657806343756e5c146103fb576102f1565b80630bee7a67146102f65780630e2374a5146103145780631182b8751461032957806322d1e80b1461034957806323bac5a21461035e5780632796211814610380575b600080fd5b6102fe610595565b60405161030b9190613dd9565b60405180910390f35b61031c61059a565b60405161030b91906135ac565b61033c6103373660046134e2565b6105a0565b60405161030b91906135e4565b610351610606565b60405161030b91906135d9565b61037161036c3660046131f9565b61060f565b60405161030b93929190613dc1565b61039361038e36600461333f565b610632565b005b61031c6103a33660046134b2565b610a4c565b6103bb6103b63660046131f9565b610a73565b60405161030b929190613db3565b6103d1610aca565b60405161030b9190613d89565b6103d1610ad0565b6103ee610ad6565b60405161030b9190613dea565b61031c610adb565b61040b610ae1565b60405161030b9190613d7a565b6103ee610ae6565b61031c610aeb565b6103d1610af1565b61039361043e3660046131f9565b610af7565b6103d1610ba2565b61031c610ba8565b6103ee610bae565b6103ee610bb3565b61031c610bb8565b6103d1610bbe565b6103ee610bc3565b6103bb610bc8565b6103936104913660046134e2565b610bd2565b6103ee610ce5565b61031c610cea565b6103936104b4366004613231565b610cf0565b61031c610d1f565b610351610d25565b61031c610d2e565b61031c610d34565b6102fe610d3a565b6103d1610d3f565b6103936104f7366004613396565b610d44565b6103d16112f4565b6103d16112fb565b61031c611300565b6103936105223660046134e2565b611306565b6103936105353660046131f9565b611377565b6103936105483660046133ff565b6117f8565b6103d1611e43565b61031c611e48565b61031c611e4e565b610393611e54565b6103d1611e91565b61031c611e97565b6103ee611e9d565b610393611ea2565b61031c6122eb565b606481565b61200181565b606033612000146105cc5760405162461bcd60e51b81526004016105c390613bd2565b60405180910390fd5b60005460ff166105ee5760405162461bcd60e51b81526004016105c390613702565b60405162461bcd60e51b81526004016105c390613cc3565b60075460ff1681565b600260208190526000918252604090912080546001820154919092015460ff1683565b60005460ff166106545760405162461bcd60e51b81526004016105c390613702565b8151158015906106645750805115155b6106805760405162461bcd60e51b81526004016105c390613b30565b60408051600380825260808201909252606091816020015b60608152602001906001900390816106985790505090506106b960386122f1565b816000815181106106c657fe5b60200260200101819052506106da8361230c565b816001815181106106e757fe5b60200260200101819052506106fb8261230c565b8160028151811061070857fe5b6020026020010181905250606061071e82612362565b60408051603480825260608281019093529293509091602082018180368337019050509050815160346020830182602086016068600019fa61075f57600080fd5b50601481015160348201516040516333c1892360e21b81526000906120029063cf06248c906107929086906004016135ac565b60206040518083038186803b1580156107aa57600080fd5b505afa1580156107be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107e29190613215565b6001600160a01b031614156108095760405162461bcd60e51b81526004016105c3906136d2565b4281621baf8001101561082e5760405162461bcd60e51b81526004016105c390613673565b60606110006001600160a01b0316633b071dcc6040518163ffffffff1660e01b815260040160006040518083038186803b15801561086b57600080fd5b505afa15801561087f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526108a7919081019061325c565b50905060005b81518110156109ea578181815181106108c257fe5b60200260200101516001600160a01b0316846001600160a01b031614156109e2576006546040516309a99b4f60e41b815260646110028031909302049190639a99b4f09061091690339085906004016135c0565b602060405180830381600087803b15801561093057600080fd5b505af1158015610944573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061096891906134ca565b506110006001600160a01b03166335409f7f84848151811061098657fe5b60200260200101516040518263ffffffff1660e01b81526004016109aa91906135ac565b600060405180830381600087803b1580156109c457600080fd5b505af11580156109d8573d6000803e3d6000fd5b50505050506109ea565b6001016108ad565b50604051631871f7d960e31b81526120029063c38fbec890610a109086906004016135ac565b600060405180830381600087803b158015610a2a57600080fd5b505af1158015610a3e573d6000803e3d6000fd5b505050505050505050505050565b60018181548110610a5957fe5b6000918252602090912001546001600160a01b0316905081565b600080610a7e612fe0565b5050506001600160a01b0316600090815260026020818152604092839020835160608101855281548082526001830154938201849052919093015460ff16151592909301919091529091565b60055481565b60065481565b600181565b61100181565b603881565b600881565b61200081565b60045481565b3361100014610b185760405162461bcd60e51b81526004016105c390613991565b60005460ff16610b3a5760405162461bcd60e51b81526004016105c390613702565b61200063f7a251d7600b610b4d846123f3565b60006040518463ffffffff1660e01b8152600401610b6d93929190613df8565b600060405180830381600087803b158015610b8757600080fd5b505af1158015610b9b573d6000803e3d6000fd5b5050505050565b60035481565b61100581565b600281565b601081565b61100881565b600581565b600b81565b6004546005549091565b3361200014610bf35760405162461bcd60e51b81526004016105c390613bd2565b60005460ff16610c155760405162461bcd60e51b81526004016105c390613702565b610c1d613003565b6000610c5e84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506124bc92505050565b915091508015610ca55781516040517f7f0956d47419b9525356e7111652b653b530ec6f5096dccc04589bc38e62996791610c9891613dd9565b60405180910390a1610b9b565b81516040517f7d45f62d17443dd4547bca8a8112c60e2385669318dc300ec61a5d2492f262e791610cd591613dd9565b60405180910390a150505b505050565b600981565b61100781565b3361100014610d115760405162461bcd60e51b81526004016105c390613991565b610d1b828261253c565b5050565b61100681565b60005460ff1681565b61200281565b61300081565b600081565b600481565b60005460ff16610d665760405162461bcd60e51b81526004016105c390613702565b3361100714610d875760405162461bcd60e51b81526004016105c390613a69565b610df284848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260148152731b5a5cd9195b59585b9bdc951a1c995cda1bdb1960621b602082015291506127139050565b15610e8d5760208114610e175760405162461bcd60e51b81526004016105c39061391d565b604080516020601f8401819004810282018101909252828152600091610e559185858083850183828082843760009201919091525061276d92505050565b905060018110158015610e69575060055481105b610e855760405162461bcd60e51b81526004016105c390613b8d565b6004556112b1565b610ef384848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600f81526e19995b1bdb9e551a1c995cda1bdb19608a1b602082015291506127139050565b15610f8f5760208114610f185760405162461bcd60e51b81526004016105c390613ab7565b604080516020601f8401819004810282018101909252828152600091610f569185858083850183828082843760009201919091525061276d92505050565b90506103e88111158015610f6b575060045481115b610f875760405162461bcd60e51b81526004016105c3906137bb565b6005556112b1565b61100384848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601881527f66696e616c697479536c617368526577617264526174696f0000000000000000602082015291506127139050565b1561109d57602081146110285760405162461bcd60e51b81526004016105c390613cfa565b604080516020601f84018190048102820181019092528281526000916110669185858083850183828082843760009201919091525061276d92505050565b9050600a81101580156110795750606481105b6110955760405162461bcd60e51b81526004016105c3906138d1565b6006556112b1565b61111184848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601881527f656e61626c654d616c6963696f7573566f7465536c6173680000000000000000602082015291506127139050565b1561118857602081146111365760405162461bcd60e51b81526004016105c3906137f0565b604080516020601f8401819004810282018101909252828152611172919084848083850183828082843760009201919091525061277292505050565b6007805460ff19169115159190911790556112b1565b6111fc84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601781527f6d616c6963696f7573566f7465536c61736853636f7065000000000000000000602082015291506127139050565b1561129957602081146112215760405162461bcd60e51b81526004016105c390613629565b604080516020601f840181900481028201810190925282815260009161125f9185858083850183828082843760009201919091525061276d92505050565b905061708081101580156112755750620d2f0081105b6112915760405162461bcd60e51b81526004016105c390613739565b6008556112b1565b60405162461bcd60e51b81526004016105c390613c6e565b7f6cdb0ac70ab7f2e2d035cca5be60d89906f2dede7648ddbd7402189c1eeed17a848484846040516112e694939291906135f7565b60405180910390a150505050565b6201518081565b600a81565b61100281565b33612000146113275760405162461bcd60e51b81526004016105c390613bd2565b60005460ff166113495760405162461bcd60e51b81526004016105c390613702565b6040517f07db600eebe2ac176be8dcebad61858c245a4961bb32ca2aa3d159b09aa0810e90600090a1505050565b3341146113965760405162461bcd60e51b81526004016105c390613c21565b60005460ff166113b85760405162461bcd60e51b81526004016105c390613702565b60035443116113d95760405162461bcd60e51b81526004016105c390613d45565b3a156113f75760405162461bcd60e51b81526004016105c390613a0c565b60405163155853f360e21b8152611000906355614fcc9061141c9084906004016135ac565b60206040518083038186803b15801561143457600080fd5b505afa158015611448573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061146c919061331f565b611475576117f1565b61147d612fe0565b506001600160a01b0381166000908152600260208181526040928390208351606081018552815481526001820154928101929092529091015460ff1615801592820192909252906114d8576020810180516001019052611531565b60016040820181905260208201819052805480820182556000919091527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180546001600160a01b0319166001600160a01b0384161790555b43815260055460208201518161154357fe5b0661171f57600060208201526040516335409f7f60e01b8152611000906335409f7f906115749085906004016135ac565b600060405180830381600087803b15801561158e57600080fd5b505af11580156115a2573d6000803e3d6000fd5b50506040516333c1892360e21b815260009250612002915063cf06248c906115ce9086906004016135ac565b60206040518083038186803b1580156115e657600080fd5b505afa1580156115fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061161e9190613215565b6001600160a01b03161461163f5761163a82826020015161253c565b61171a565b61200063f7a251d7600b611652856123f3565b60006040518463ffffffff1660e01b815260040161167293929190613df8565b600060405180830381600087803b15801561168c57600080fd5b505af192505050801561169d575060015b61171a573d8080156116cb576040519150601f19603f3d011682016040523d82523d6000602084013e6116d0565b606091505b50826001600160a01b03167fd7bc86ff5d08c8ab043edec743302aba2520e6635172a428bc956721db9e2d1c836020015183604051611710929190613d92565b60405180910390a2505b61178b565b60045481602001518161172e57fe5b0661178b576040516375abf10160e11b81526110009063eb57e202906117589085906004016135ac565b600060405180830381600087803b15801561177257600080fd5b505af1158015611786573d6000803e3d6000fd5b505050505b6001600160a01b0382166000818152600260208181526040808420865181559186015160018301558581015191909201805460ff1916911515919091179055517fddb6012116e51abf5436d956a4f0ebd927e92c576ff96d7918290c8782291e3e9190a2505b5043600355565b60005460ff1661181a5760405162461bcd60e51b81526004016105c390613702565b60075460ff1661183c5760405162461bcd60e51b81526004016105c39061369d565b6006546118495760146006555b60085461185857620151806008555b60085481516040015143910111801561187c57504360085482602001516040015101115b6118985760405162461bcd60e51b81526004016105c390613c95565b8060200151602001518160000151602001511480156118c65750806020015160600151816000015160600151145b156118e35760405162461bcd60e51b81526004016105c390613964565b8051604081015190511080156119025750602081015160408101519051105b61191e5760405162461bcd60e51b81526004016105c39061389a565b6020810151518151511080156119435750806000015160400151816020015160400151105b8061196e575080515160208201515110801561196e5750806020015160400151816000015160400151105b806119885750806020015160400151816000015160400151145b6119a45760405162461bcd60e51b81526004016105c390613784565b604080820151905163ea321e4960e01b81526110009163ea321e49916119cd91906004016135e4565b60206040518083038186803b1580156119e557600080fd5b505afa1580156119f9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a1d919061331f565b611a395760405162461bcd60e51b81526004016105c390613a3a565b611a4b8160000151826040015161279a565b8015611a645750611a648160200151826040015161279a565b611a805760405162461bcd60e51b81526004016105c39061383b565b6060806110006001600160a01b0316633b071dcc6040518163ffffffff1660e01b815260040160006040518083038186803b158015611abe57600080fd5b505afa158015611ad2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611afa919081019061325c565b9150915060005b8151811015611c3757611b2b828281518110611b1957fe5b60200260200101518560400151612972565b15611c2f576006546040516309a99b4f60e41b815260646110028031909302049190639a99b4f090611b6390339085906004016135c0565b602060405180830381600087803b158015611b7d57600080fd5b505af1158015611b91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bb591906134ca565b506110006001600160a01b03166335409f7f858481518110611bd357fe5b60200260200101516040518263ffffffff1660e01b8152600401611bf791906135ac565b600060405180830381600087803b158015611c1157600080fd5b505af1158015611c25573d6000803e3d6000fd5b5050505050611c37565b600101611b01565b506040808401519051630f5b9efd60e31b815260009161200291637adcf7e891611c63916004016135e4565b60206040518083038186803b158015611c7b57600080fd5b505afa158015611c8f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cb39190613215565b6001600160a01b031614611d21576040808401519051630e9fbf5160e01b815261200291630e9fbf5191611cea91906004016135e4565b600060405180830381600087803b158015611d0457600080fd5b505af1158015611d18573d6000803e3d6000fd5b50505050610ce0565b6000611d32846040015160006129d6565b90506120006001600160a01b031663f7a251d7600b611d5487604001516129f2565b60006040518463ffffffff1660e01b8152600401611d7493929190613df8565b600060405180830381600087803b158015611d8e57600080fd5b505af1925050508015611d9f575060015b611e11573d808015611dcd576040519150601f19603f3d011682016040523d82523d6000602084013e611dd2565b606091505b50817fd58d1183100bd0932c0588f31c4205d6bc6168909765a96c41adbed3115f362882604051611e0391906135e4565b60405180910390a250611e3d565b60405181907f7b78aadacff901d8b63d0dba4f86283d4db8aef27f9ed70413dd860f1c9532b690600090a25b50505050565b601481565b61100381565b61200481565b60005460ff1615611e775760405162461bcd60e51b81526004016105c390613af9565b60056004819055600a90556000805460ff19166001179055565b60085481565b61100081565b600381565b3361100014611ec35760405162461bcd60e51b81526004016105c390613991565b60005460ff16611ee55760405162461bcd60e51b81526004016105c390613702565b600154611ef1576122e9565b600154600090600019015b8082116122bd576000805b8284101561202057611f17612fe0565b6002600060018781548110611f2857fe5b60009182526020808320909101546001600160a01b0316835282810193909352604091820190208151606081018352815481526001820154938101939093526002015460ff16151590820152600554909150600490048160200151111561200a57600460055481611f9557fe5b04816020015103816020018181525050806002600060018881548110611fb757fe5b6000918252602080832091909101546001600160a01b0316835282810193909352604091820190208351815591830151600183015591909101516002909101805460ff1916911515919091179055612014565b6001925050612020565b50836001019350611f07565b8284116121b75761202f612fe0565b600260006001868154811061204057fe5b60009182526020808320909101546001600160a01b0316835282810193909352604091820190208151606081018352815481526001820154938101939093526002015460ff161515908201526005549091506004900481602001511115612128576004600554816120ad57fe5b048160200151038160200181815250508060026000600187815481106120cf57fe5b6000918252602080832091909101546001600160a01b03168352828101939093526040918201902083518155918301516001808401919091559201516002909101805460ff191691151591909117905591506121b79050565b600260006001868154811061213957fe5b60009182526020808320909101546001600160a01b031683528201929092526040018120818155600181810192909255600201805460ff1916905580548061217d57fe5b600082815260209020810160001990810180546001600160a01b0319169055019055836121aa57506121b7565b5060001990920191612020565b8180156121c15750805b156122a05760026000600186815481106121d757fe5b60009182526020808320909101546001600160a01b031683528201929092526040018120818155600181810192909255600201805460ff1916905580548490811061221e57fe5b600091825260209091200154600180546001600160a01b03909216918690811061224457fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600180548061227d57fe5b600082815260209020810160001990810180546001600160a01b03191690550190555b826122ac5750506122bd565b505060019091019060001901611efc565b6040517fcfdb3b6ccaeccbdc68be3c59c840e3b3c90f0a7c491f5fff1cf56cfda200dd9c90600090a150505b565b61100481565b60606123046122ff83612a2d565b61230c565b90505b919050565b60608151600114801561233e5750607f60f81b8260008151811061232c57fe5b01602001516001600160f81b03191611155b1561234a575080612307565b61230461235c8351608060ff16612b13565b83612be5565b60608151600014156123835750604080516000815260208101909152612307565b60608260008151811061239257fe5b602002602001015190506000600190505b83518110156123d3576123c9828583815181106123bc57fe5b6020026020010151612be5565b91506001016123a3565b506123ec6123e6825160c060ff16612b13565b82612be5565b9392505050565b60408051600480825260a08201909252606091829190816020015b606081526020019060019003908161240e579050509050612437836001600160a01b0316612c62565b8160008151811061244457fe5b6020026020010181905250612458436122f1565b8160018151811061246557fe5b602090810291909101015261247a60386122f1565b8160028151811061248757fe5b602002602001018190525061249b426122f1565b816003815181106124a857fe5b60200260200101819052506123ec81612362565b6124c4613003565b60006124ce613003565b6124d6613015565b6124e76124e286612c85565b612caa565b90506000805b6124f683612cf4565b1561252f57806125225761251161250c84612d15565b612d63565b63ffffffff16845260019150612527565b61252f565b6001016124ed565b5091935090915050915091565b6040516375cc7d8960e01b8152612002906375cc7d89906125619085906004016135ac565b600060405180830381600087803b15801561257b57600080fd5b505af192505050801561258c575060015b610d1b576040516000815260443d10156125a857506000612645565b60046000803e60005160e01c6308c379a081146125c9576000915050612645565b60043d036004833e81513d602482011167ffffffffffffffff821117156125f557600092505050612645565b808301805167ffffffffffffffff811115612617576000945050505050612645565b8060208301013d860181111561263557600095505050505050612645565b601f01601f191660405250925050505b806126505750612699565b826001600160a01b03167fd7bc86ff5d08c8ab043edec743302aba2520e6635172a428bc956721db9e2d1c838360405161268b929190613d92565b60405180910390a25061270e565b3d8080156126c3576040519150601f19603f3d011682016040523d82523d6000602084013e6126c8565b606091505b50826001600160a01b03167fd7bc86ff5d08c8ab043edec743302aba2520e6635172a428bc956721db9e2d1c8383604051612704929190613d92565b60405180910390a2505b610d1b565b6000816040516020016127269190613590565b604051602081830303815290604052805190602001208360405160200161274d9190613590565b604051602081830303815290604052805190602001201490505b92915050565b015190565b8082015160009060ff81161561278c576001915081612792565b60009150815b505092915050565b60408051600480825260a0820190925260009160609190816020015b60608152602001906001900390816127b65750506040805160208082528183019092529192506060919080820181803683370190505090506127fb85600001516122f1565b8260008151811061280857fe5b60200260200101819052506128236020866020015183612de5565b61282c8161230c565b8260018151811061283957fe5b602002602001018190525061285185604001516122f1565b8260028151811061285e57fe5b60200260200101819052506128796020866060015183612de5565b6128828161230c565b8260038151811061288f57fe5b60200260200101819052506128b560206128a884612362565b8051906020012083612de5565b6040805160b080825260e082019092526060916020820181803683370190505090506128e5818360006020612df5565b6128f781876080015160206060612df5565b612905818660806030612df5565b604080516001808252818301909252606091602082018180368337019050509050815160016020830182602086016066600019fa61294257600080fd5b506001612950826000612e48565b60ff1614612965576000945050505050612767565b5060019695505050505050565b81518151600091600191811480831461298e57600092506129cc565b600160208701838101602088015b6002848385100114156129c75780518351146129bb5760009650600093505b6020928301920161299c565b505050505b5090949350505050565b600081602001835110156129e957600080fd5b50016020015190565b60408051600480825260a08201909252606091829190816020015b6060815260200190600190039081612a0d5790505090506124378361230c565b604080516020808252818301909252606091829190602082018180368337505050602081018490529050600067ffffffffffffffff198416612a7157506018612a95565b6fffffffffffffffffffffffffffffffff198416612a9157506010612a95565b5060005b6020811015612acb57818181518110612aaa57fe5b01602001516001600160f81b03191615612ac357612acb565b600101612a95565b60008160200390506060816040519080825280601f01601f191660200182016040528015612b00576020820181803683370190505b5080830196909652508452509192915050565b6060680100000000000000008310612b3d5760405162461bcd60e51b81526004016105c390613872565b60408051600180825281830190925260609160208201818036833701905050905060378411612b975782840160f81b81600081518110612b7957fe5b60200101906001600160f81b031916908160001a9053509050612767565b6060612ba285612a2d565b90508381510160370160f81b82600081518110612bbb57fe5b60200101906001600160f81b031916908160001a905350612bdc8282612be5565b95945050505050565b6060806040519050835180825260208201818101602087015b81831015612c16578051835260209283019201612bfe565b50855184518101855292509050808201602086015b81831015612c43578051835260209283019201612c2b565b508651929092011591909101601f01601f191660405250905092915050565b60408051600560a21b83186014820152603481019091526060906123ec8161230c565b612c8d613035565b506040805180820190915281518152602082810190820152919050565b612cb2613015565b612cbb82612e64565b612cc457600080fd5b6000612cd38360200151612e9e565b60208085015160408051808201909152868152920190820152915050919050565b6000612cfe613035565b505080518051602091820151919092015191011190565b612d1d613035565b612d2682612cf4565b612d2f57600080fd5b60208201516000612d3f82612f01565b80830160209586015260408051808201909152908152938401919091525090919050565b805160009015801590612d7857508151602110155b612d8157600080fd5b6000612d908360200151612e9e565b90508083600001511015612db65760405162461bcd60e51b81526004016105c390613b56565b825160208085015183018051928490039291831015612ddc57826020036101000a820491505b50949350505050565b9091018181526020918201910152565b60005b81811015610b9b57838181518110612e0c57fe5b602001015160f81c60f81b858480600101955081518110612e2957fe5b60200101906001600160f81b031916908160001a905350600101612df8565b60008160010183511015612e5b57600080fd5b50016001015190565b8051600090612e7557506000612307565b6020820151805160001a9060c0821015612e9457600092505050612307565b5060019392505050565b8051600090811a6080811015612eb8576000915050612307565b60b8811080612ed3575060c08110801590612ed3575060f881105b15612ee2576001915050612307565b60c0811015612ef65760b519019050612307565b60f519019050612307565b80516000908190811a6080811015612f1c5760019150612fd9565b60b8811015612f3157607e1981019150612fd9565b60c0811015612f8257600060b78203600186019550806020036101000a865104915060018101820193505080831015612f7c5760405162461bcd60e51b81526004016105c3906139e1565b50612fd9565b60f8811015612f975760be1981019150612fd9565b600060f78203600186019550806020036101000a8651049150600181018201935050808310156127925760405162461bcd60e51b81526004016105c3906139e1565b5092915050565b604051806060016040528060008152602001600081526020016000151581525090565b60408051602081019091526000815290565b6040518060400160405280613028613035565b8152602001600081525090565b604051806040016040528060008152602001600081525090565b600082601f83011261305f578081fd5b815161307261306d82613e4b565b613e24565b818152915060208083019084810160005b848110156130e8578151870188603f82011261309e57600080fd5b838101516130ae61306d82613e6b565b81815260408b818486010111156130c457600080fd5b6130d383888401838701613e8f565b50865250509282019290820190600101613083565b505050505092915050565b60008083601f840112613104578182fd5b50813567ffffffffffffffff81111561311b578182fd5b60208301915083602082850101111561313357600080fd5b9250929050565b600082601f83011261314a578081fd5b813561315861306d82613e6b565b915080825283602082850101111561316f57600080fd5b8060208401602084013760009082016020015292915050565b600060a08284031215613199578081fd5b6131a360a0613e24565b905081358152602082013560208201526040820135604082015260608201356060820152608082013567ffffffffffffffff8111156131e157600080fd5b6131ed8482850161313a565b60808301525092915050565b60006020828403121561320a578081fd5b81356123ec81613ebb565b600060208284031215613226578081fd5b81516123ec81613ebb565b60008060408385031215613243578081fd5b823561324e81613ebb565b946020939093013593505050565b6000806040838503121561326e578182fd5b825167ffffffffffffffff80821115613285578384fd5b81850186601f820112613296578485fd5b805192506132a661306d84613e4b565b80848252602080830192508084018a8283890287010111156132c6578889fd5b8894505b868510156132f15780516132dd81613ebb565b8452600194909401939281019281016132ca565b508801519096509350505080821115613308578283fd5b506133158582860161304f565b9150509250929050565b600060208284031215613330578081fd5b815180151581146123ec578182fd5b60008060408385031215613351578182fd5b823567ffffffffffffffff80821115613368578384fd5b6133748683870161313a565b93506020850135915080821115613389578283fd5b506133158582860161313a565b600080600080604085870312156133ab578182fd5b843567ffffffffffffffff808211156133c2578384fd5b6133ce888389016130f3565b909650945060208701359150808211156133e6578384fd5b506133f3878288016130f3565b95989497509550505050565b600060208284031215613410578081fd5b813567ffffffffffffffff80821115613427578283fd5b81840160608187031215613439578384fd5b6134436060613e24565b9250803582811115613453578485fd5b61345f87828401613188565b845250602081013582811115613473578485fd5b61347f87828401613188565b602085015250604081013582811115613496578485fd5b6134a28782840161313a565b6040850152509195945050505050565b6000602082840312156134c3578081fd5b5035919050565b6000602082840312156134db578081fd5b5051919050565b6000806000604084860312156134f6578081fd5b833560ff81168114613506578182fd5b9250602084013567ffffffffffffffff811115613521578182fd5b61352d868287016130f3565b9497909650939450505050565b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b6000815180845261357c816020860160208601613e8f565b601f01601f19169290920160200192915050565b600082516135a2818460208701613e8f565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b901515815260200190565b6000602082526123ec6020830184613564565b60006040825261360b60408301868861353a565b828103602084015261361e81858761353a565b979650505050505050565b6020808252602a908201527f6c656e677468206f66206d616c6963696f7573566f7465536c61736853636f706040820152690ca40dad2e6dac2e8c6d60b31b606082015260800190565b60208082526010908201526f195d9a59195b98d9481d1bdbc81bdb1960821b604082015260600190565b6020808252818101527f6d616c6963696f757320766f746520736c617368206e6f7420656e61626c6564604082015260600190565b6020808252601690820152751d985b1a59185d1bdc881b9bdd081b5a59dc985d195960521b604082015260600190565b60208082526019908201527f74686520636f6e7472616374206e6f7420696e69742079657400000000000000604082015260600190565b6020808252602b908201527f746865206d616c6963696f757320766f746520736c6173682073636f7065206f60408201526a7574206f662072616e676560a81b606082015260800190565b6020808252601a908201527f6e6f2076696f6c6174696f6e206f6620766f74652072756c6573000000000000604082015260600190565b6020808252818101527f7468652066656c6f6e795468726573686f6c64206f7574206f662072616e6765604082015260600190565b6020808252602b908201527f6c656e677468206f6620656e61626c654d616c6963696f7573566f7465536c6160408201526a0e6d040dad2e6dac2e8c6d60ab1b606082015260800190565b60208082526017908201527f766572696679207369676e6174757265206661696c6564000000000000000000604082015260600190565b6020808252600e908201526d696e70757420746f6f206c6f6e6760901b604082015260600190565b60208082526019908201527f7372634e756d20626967676572207468616e207461724e756d00000000000000604082015260600190565b6020808252602c908201527f7468652066696e616c69747920736c6173682072657761726420726174696f2060408201526b6f7574206f662072616e676560a01b606082015260800190565b60208082526027908201527f6c656e677468206f66206d697364656d65616e6f725468726573686f6c64206d6040820152660d2e6dac2e8c6d60cb1b606082015260800190565b60208082526013908201527274776f206964656e746963616c20766f74657360681b604082015260600190565b60208082526030908201527f746865206d6573736167652073656e646572206d7573742062652076616c696460408201526f185d1bdc94d95d0818dbdb9d1c9858dd60821b606082015260800190565b6020808252601190820152706164646974696f6e206f766572666c6f7760781b604082015260600190565b6020808252601490820152736761737072696365206973206e6f74207a65726f60601b604082015260600190565b6020808252601590820152741d9bdd195059191c881a5cc81b9bdd08199bdd5b99605a1b604082015260600190565b6020808252602e908201527f746865206d6573736167652073656e646572206d75737420626520676f76657260408201526d1b985b98d94818dbdb9d1c9858dd60921b606082015260800190565b60208082526022908201527f6c656e677468206f662066656c6f6e795468726573686f6c64206d69736d61746040820152610c6d60f31b606082015260800190565b60208082526019908201527f74686520636f6e747261637420616c726561647920696e697400000000000000604082015260600190565b6020808252600c908201526b32b6b83a3c903432b0b232b960a11b604082015260600190565b6020808252601a908201527f6c656e677468206973206c657373207468616e206f6666736574000000000000604082015260600190565b60208082526025908201527f746865206d697364656d65616e6f725468726573686f6c64206f7574206f662060408201526472616e676560d81b606082015260800190565b6020808252602f908201527f746865206d6573736167652073656e646572206d7573742062652063726f737360408201526e0818da185a5b8818dbdb9d1c9858dd608a1b606082015260800190565b6020808252602d908201527f746865206d6573736167652073656e646572206d75737420626520746865206260408201526c3637b1b590383937b23ab1b2b960991b606082015260800190565b6020808252600d908201526c756e6b6e6f776e20706172616d60981b604082015260600190565b6020808252601490820152731d185c99d95d08189b1bd8dac81d1bdbc81bdb1960621b604082015260600190565b6020808252601e908201527f7265636569766520756e65787065637465642073796e207061636b6167650000604082015260600190565b6020808252602b908201527f6c656e677468206f662066696e616c697479536c61736852657761726452617460408201526a0d2de40dad2e6dac2e8c6d60ab1b606082015260800190565b6020808252818101527f63616e206e6f7420736c61736820747769636520696e206f6e6520626c6f636b604082015260600190565b61ffff91909116815260200190565b90815260200190565b600083825260406020830152613dab6040830184613564565b949350505050565b918252602082015260400190565b92835260208301919091521515604082015260600190565b63ffffffff91909116815260200190565b60ff91909116815260200190565b600060ff8516825260606020830152613e146060830185613564565b9050826040830152949350505050565b60405181810167ffffffffffffffff81118282101715613e4357600080fd5b604052919050565b600067ffffffffffffffff821115613e61578081fd5b5060209081020190565b600067ffffffffffffffff821115613e81578081fd5b50601f01601f191660200190565b60005b83811015613eaa578181015183820152602001613e92565b83811115611e3d5750506000910152565b6001600160a01b0381168114613ed057600080fd5b5056fea164736f6c6343000604000a", + }, + { + ContractAddr: common.HexToAddress(StakingContract), + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/cfc0bd1127186a917ddc38fd38d22903034d3f0b", + Code: "6080604052600436106103a65760003560e01c8063718a8aa8116101e7578063b88a802f1161010d578063dc927faf116100a0578063f9a2bbc71161006f578063f9a2bbc714610ca0578063fa03f79714610cb5578063fc3e590814610692578063fd6a687914610cca576103ad565b8063dc927faf14610c1c578063df8079e914610c31578063edc1a5b014610c46578063f45fd80b14610c5b576103ad565b8063c81b1662116100dc578063c81b166214610b47578063c8509d8114610b5c578063d61b9b9314610be1578063d7ecfcb61461083a576103ad565b8063b88a802f14610acd578063baaafd3b14610ae2578063bf8546ca14610af7578063c2117d8214610b32576103ad565b80639dc0926211610185578063aad5606311610154578063aad56063146109c3578063ab51bb96146109d8578063ac431751146109ed578063b14315df14610ab8576103ad565b80639dc092621461095b578063a1a11bf514610970578063a78abc1614610985578063aa82dce1146109ae576103ad565b80637942fd05116101c15780637942fd05146108ac578063831d65d1146108c157806392b888a41461063e57806396713da914610946576103ad565b8063718a8aa81461084f57806375aca5931461086457806375d47a0a14610897576103ad565b8063413d9c3a116102cc5780635d17c8bd1161026a5780636bd8f804116102395780636bd8f804146107bc5780636e47b482146107f25780636fb7f7eb1461080757806370fd5bad1461083a576103ad565b80635d17c8bd146107685780635d499b1b1461077d57806362b171d21461079257806369b635b6146107a7576103ad565b80634bf6c882116102a65780634bf6c882146106fd5780634d99dd161461071257806351e806721461073e578063552aaf9314610753576103ad565b8063413d9c3a146106a757806343756e5c146106bc578063493279b1146106d1576103ad565b806311fe9ec611610344578063333ad3e711610313578063333ad3e71461066857806334c433541461067d5780633dffc3871461063e5780633fdfa7e414610692576103ad565b806311fe9ec6146105e0578063151817e31461061357806317c9efb01461063e5780632fdeb11114610653576103ad565b80630bee7a67116103805780630bee7a67146104725780630c795715146104a05780630e2374a5146104b55780631182b875146104e6576103ad565b8063026e402b146103b257806302985992146103e0578063047636d114610407576103ad565b366103ad57005b600080fd5b6103de600480360360408110156103c857600080fd5b506001600160a01b038135169060200135610cdf565b005b3480156103ec57600080fd5b506103f5610d1c565b60408051918252519081900360200190f35b34801561041357600080fd5b5061043a6004803603602081101561042a57600080fd5b50356001600160a01b0316610d22565b6040518082606080838360005b8381101561045f578181015183820152602001610447565b5050505090500191505060405180910390f35b34801561047e57600080fd5b50610487610d76565b6040805163ffffffff9092168252519081900360200190f35b3480156104ac57600080fd5b506103f5610d7b565b3480156104c157600080fd5b506104ca610d81565b604080516001600160a01b039092168252519081900360200190f35b3480156104f257600080fd5b5061056b6004803603604081101561050957600080fd5b60ff8235169190810190604081016020820135600160201b81111561052d57600080fd5b82018360208201111561053f57600080fd5b803590602001918460018302840111600160201b8311171561056057600080fd5b509092509050610d87565b6040805160208082528351818301528351919283929083019185019080838360005b838110156105a557818101518382015260200161058d565b50505050905090810190601f1680156105d25780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156105ec57600080fd5b506103f56004803603602081101561060357600080fd5b50356001600160a01b0316610f43565b34801561061f57600080fd5b50610628610f5e565b6040805160ff9092168252519081900360200190f35b34801561064a57600080fd5b50610628610f63565b34801561065f57600080fd5b506103f5610f68565b34801561067457600080fd5b50610487610f6e565b34801561068957600080fd5b506103f5610f73565b34801561069e57600080fd5b50610628610f7e565b3480156106b357600080fd5b506103f5610f83565b3480156106c857600080fd5b506104ca610f8a565b3480156106dd57600080fd5b506106e6610f90565b6040805161ffff9092168252519081900360200190f35b34801561070957600080fd5b50610628610f95565b6103de6004803603604081101561072857600080fd5b506001600160a01b038135169060200135610f9a565b34801561074a57600080fd5b506104ca6115c7565b34801561075f57600080fd5b506106286115cd565b34801561077457600080fd5b506103f56115d2565b34801561078957600080fd5b506103f56115d8565b34801561079e57600080fd5b506103f56115e1565b3480156107b357600080fd5b506103f5611781565b6103de600480360360608110156107d257600080fd5b506001600160a01b03813581169160208101359091169060400135610cdf565b3480156107fe57600080fd5b506104ca611787565b34801561081357600080fd5b506103f56004803603602081101561082a57600080fd5b50356001600160a01b031661178d565b34801561084657600080fd5b506106286117a8565b34801561085b57600080fd5b506106286117ad565b34801561087057600080fd5b506103f56004803603602081101561088757600080fd5b50356001600160a01b03166117b2565b3480156108a357600080fd5b506104ca6117cd565b3480156108b857600080fd5b506106286117d3565b3480156108cd57600080fd5b506103de600480360360408110156108e457600080fd5b60ff8235169190810190604081016020820135600160201b81111561090857600080fd5b82018360208201111561091a57600080fd5b803590602001918460018302840111600160201b8311171561093b57600080fd5b5090925090506117d8565b34801561095257600080fd5b50610628611aa0565b34801561096757600080fd5b506104ca611aa5565b34801561097c57600080fd5b506104ca611aab565b34801561099157600080fd5b5061099a611ab1565b604080519115158252519081900360200190f35b3480156109ba57600080fd5b506104ca611aba565b3480156109cf57600080fd5b506104ca611ac0565b3480156109e457600080fd5b506104876115cd565b3480156109f957600080fd5b506103de60048036036040811015610a1057600080fd5b810190602081018135600160201b811115610a2a57600080fd5b820183602082011115610a3c57600080fd5b803590602001918460018302840111600160201b83111715610a5d57600080fd5b919390929091602081019035600160201b811115610a7a57600080fd5b820183602082011115610a8c57600080fd5b803590602001918460018302840111600160201b83111715610aad57600080fd5b509092509050611ac6565b348015610ac457600080fd5b50610628612258565b348015610ad957600080fd5b506103f561225d565b348015610aee57600080fd5b506103f56123fa565b348015610b0357600080fd5b506103f560048036036040811015610b1a57600080fd5b506001600160a01b0381358116916020013516612405565b348015610b3e57600080fd5b506103f5612432565b348015610b5357600080fd5b506104ca612438565b348015610b6857600080fd5b506103de60048036036040811015610b7f57600080fd5b60ff8235169190810190604081016020820135600160201b811115610ba357600080fd5b820183602082011115610bb557600080fd5b803590602001918460018302840111600160201b83111715610bd657600080fd5b50909250905061243e565b348015610bed57600080fd5b506103f560048036036040811015610c0457600080fd5b506001600160a01b0381358116916020013516612661565b348015610c2857600080fd5b506104ca61268c565b348015610c3d57600080fd5b506104ca612692565b348015610c5257600080fd5b506103f5612698565b348015610c6757600080fd5b506103f560048036036060811015610c7e57600080fd5b506001600160a01b0381358116916020810135821691604090910135166126a5565b348015610cac57600080fd5b506104ca6126da565b348015610cc157600080fd5b506103f56126e0565b348015610cd657600080fd5b506104ca6126e6565b6040805162461bcd60e51b815260206004820152600d60248201526c1b9bdd081cdd5c1c1bdc9d1959609a1b604482015290519081900360640190fd5b60035481565b610d2a614621565b610d32614621565b6001600160a01b0383166000818152600b60209081526040808320548552838352600c82528083205485830152928252600d9052819020549082015290505b919050565b606481565b6108fc81565b61200181565b60603361200014610dc95760405162461bcd60e51b815260040180806020018281038252602f815260200180614804602f913960400191505060405180910390fd5b60005460ff16610e0c576638d7ea4c6800006001908155662386f26fc1000060025568056bc75e2d631000006003556108fc6011556000805460ff191690911790555b610e1461463f565b610e5b610e5685858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506126ec92505050565b612711565b90506000610e70610e6b8361275b565b6127a9565b90506000606060ff831660041415610e9557610e8b84612860565b9092509050610eec565b60ff831660051415610eaa57610e8b84612a40565b6040805162461bcd60e51b8152602060048201526012602482015271756e6b6e6f776e206576656e74207479706560701b604482015290519081900360640190fd5b63ffffffff821615610f38576040805163ffffffff84168152905160ff8516917f391d6e5ea6ab6c49b9a0abb1782cae5def8d711f973b00c729658c0b2a80b31b919081900360200190a25b979650505050505050565b6001600160a01b031660009081526006602052604090205490565b600581565b600181565b60015481565b606581565b662386f26fc1000081565b600381565b620a8c0081565b61100181565b603881565b600881565b60105460ff1660021415610fe6576040805162461bcd60e51b815260206004820152600e60248201526d4e6f2072652d656e7472616e637960901b604482015290519081900360640190fd5b6010805460ff19166002179055806402540be400340615801561100e57506402540be4008106155b61105f576040805162461bcd60e51b815260206004820152601c60248201527f707265636973696f6e206c6f737320696e20636f6e76657273696f6e00000000604482015290519081900360640190fd5b60005460ff166110a2576638d7ea4c6800006001908155662386f26fc1000060025568056bc75e2d631000006003556108fc6011556000805460ff191690911790555b6001543410156110f0576040805162461bcd60e51b81526020600482015260146024820152736e6f7420656e6f7567682072656c61792066656560601b604482015290519081900360640190fd5b6003548210156111ab573360009081526005602090815260408083206001600160a01b03871684529091529020548214611162576040805162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a5908185b5bdd5b9d60921b604482015290519081900360640190fd5b60025482116111ab576040805162461bcd60e51b815260206004820152601060248201526f6e6f7420656e6f7567682066756e647360801b604482015290519081900360640190fd5b3360009081526007602090815260408083206001600160a01b0387168452909152902054421015611223576040805162461bcd60e51b815260206004820152601a60248201527f70656e64696e6720756e64656c65676174696f6e206578697374000000000000604482015290519081900360640190fd5b604080518082018252601081526f6e6f7420656e6f7567682066756e647360801b602080830191909152336000908152600582528381206001600160a01b03881682529091529182205461127e91859063ffffffff612c5c16565b905080156112c65760025481116112c65760405162461bcd60e51b81526004018080602001828103825260258152602001806147df6025913960400191505060405180910390fd5b60006112dd846402540be40063ffffffff612cf316565b60025490915034906000906112f990839063ffffffff612d3c16565b6040805160038082526080820190925291925060609190816020015b606081526020019060019003908161131557905050905061133533612d7e565b8160008151811061134257fe5b602002602001018190525061135f886001600160a01b0316612d7e565b8160018151811061136c57fe5b602002602001018190525061138084612da1565b8160028151811061138d57fe5b602002602001018190525060606113ad60026113a884612db4565b612e3e565b8051602080830191909120600f80546000908152600a845260408082209390935581546001908101909255338152600c90935291208054909101905590506113fe42620a8c0063ffffffff612ec416565b3360009081526007602090815260408083206001600160a01b038e16845290915290205561200063f7a251d7601083611442876402540be40063ffffffff612cf316565b6040518463ffffffff1660e01b8152600401808460ff1660ff16815260200180602001838152602001828103825284818151815260200191508051906020019080838360005b838110156114a0578181015183820152602001611488565b50505050905090810190601f1680156114cd5780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b1580156114ee57600080fd5b505af1158015611502573d6000803e3d6000fd5b5050604051611004925085156108fc02915085906000818181858888f19350505050158015611535573d6000803e3d6000fd5b506002546040516110029180156108fc02916000818181858888f19350505050158015611566573d6000803e3d6000fd5b50604080518981526020810185905281516001600160a01b038c169233927fdf0b6ac27f3f3bb31cee3dab0f4fe40cc19c6a3f8daaec52e06b261e58a12519929081900390910190a350506010805460ff1916600117905550505050505050565b61200081565b600081565b60025481565b6402540be40081565b60105460009060ff1660021415611630576040805162461bcd60e51b815260206004820152600e60248201526d4e6f2072652d656e7472616e637960901b604482015290519081900360640190fd5b506010805460ff191660021790553360009081526008602052604090205480611697576040805162461bcd60e51b81526020600482015260146024820152736e6f20756e64656c6567617465642066756e647360601b604482015290519081900360640190fd5b336000818152600860205260408082208290556011549051919291849084818181858888f193505050503d80600081146116ed576040519150601f19603f3d011682016040523d82523d6000602084013e6116f2565b606091505b505090508061173a576040805162461bcd60e51b815260206004820152600f60248201526e1d1c985b9cd9995c8819985a5b1959608a1b604482015290519081900360640190fd5b60408051838152905133917fc712d133b8d448221aaed2198ed1f0db6dfc860fb01bc3a630916fe6cbef946f919081900360200190a2506010805460ff1916600117905590565b60035490565b61100581565b6001600160a01b031660009081526004602052604090205490565b600281565b601081565b6001600160a01b031660009081526008602052604090205490565b61100881565b600b81565b33612000146118185760405162461bcd60e51b815260040180806020018281038252602f815260200180614804602f913960400191505060405180910390fd5b60005460ff1661185b576638d7ea4c6800006001908155662386f26fc1000060025568056bc75e2d631000006003556108fc6011556000805460ff191690911790555b61186361463f565b6118a5610e5684848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506126ec92505050565b905060008060606000805b6118b986612f1e565b1561192457806118d6576118cf610e6b8761275b565b945061191c565b80600114156118f2576118eb610e6b8761275b565b935061191c565b80600214156119175761190c6119078761275b565b612f3f565b92506001915061191c565b611924565b6001016118b0565b8161196a576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b61197383612faf565b6119b6576040805162461bcd60e51b815260206004820152600f60248201526e0eee4dedcce40e0c2c6d640d0c2e6d608b1b604482015290519081900360640190fd5b6119c2610e56846126ec565b955060006119d2610e6b8861275b565b90506119dc61463f565b6119e588612f1e565b15611a0857611a01610e566119fc6119078b61275b565b6126ec565b9050611a49565b6040805162461bcd60e51b8152602060048201526011602482015270656d7074792061636b207061636b61676560781b604482015290519081900360640190fd5b60ff821660011415611a6557611a60818888613003565b611a93565b60ff821660021415611a7c57611a608188886133ba565b60ff821660031415610eaa57611a60818888613687565b5050505050505050505050565b600981565b61100781565b61100681565b60005460ff1681565b61200281565b61300081565b60005460ff16611b1d576040805162461bcd60e51b815260206004820152601960248201527f74686520636f6e7472616374206e6f7420696e69742079657400000000000000604482015290519081900360640190fd5b3361100714611b5d5760405162461bcd60e51b815260040180806020018281038252602e815260200180614755602e913960400191505060405180910390fd5b611bbe84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600a81526972656c6179657246656560b01b602082015291506139ec9050565b15611d245760208114611c18576040805162461bcd60e51b815260206004820152601d60248201527f6c656e677468206f662072656c61796572466565206d69736d61746368000000604482015290519081900360640190fd5b604080516020601f8401819004810282018101909252828152600091611c5691858580838501838280828437600092019190915250613ad392505050565b90506003548110611c985760405162461bcd60e51b815260040180806020018281038252602e815260200180614783602e913960400191505060405180910390fd5b6002548111611cd85760405162461bcd60e51b815260040180806020018281038252602e8152602001806147b1602e913960400191505060405180910390fd5b6402540be400810615611d1c5760405162461bcd60e51b815260040180806020018281038252602c815260200180614729602c913960400191505060405180910390fd5b6001556121c6565b611d8884848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600d81526c62534352656c6179657246656560981b602082015291506139ec9050565b15611eea5760208114611de2576040805162461bcd60e51b815260206004820181905260248201527f6c656e677468206f662062534352656c61796572466565206d69736d61746368604482015290519081900360640190fd5b604080516020601f8401819004810282018101909252828152600091611e2091858580838501838280828437600092019190915250613ad392505050565b905080611e5e5760405162461bcd60e51b81526004018080602001828103825260228152602001806148336022913960400191505060405180910390fd5b6001548110611e9e5760405162461bcd60e51b815260040180806020018281038252602e8152602001806146a9602e913960400191505060405180910390fd5b6402540be400810615611ee25760405162461bcd60e51b815260040180806020018281038252602f81526020018061467a602f913960400191505060405180910390fd5b6002556121c6565b611f4e84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600d81526c36b4b72232b632b3b0ba34b7b760991b602082015291506139ec9050565b156120305760208114611fa8576040805162461bcd60e51b815260206004820181905260248201527f6c656e677468206f66206d696e44656c65676174696f6e206d69736d61746368604482015290519081900360640190fd5b604080516020601f8401819004810282018101909252828152600091611fe691858580838501838280828437600092019190915250613ad392505050565b905060015481116120285760405162461bcd60e51b81526004018080602001828103825260318152602001806146d76031913960400191505060405180910390fd5b6003556121c6565b61209284848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600b81526a7472616e7366657247617360a81b602082015291506139ec9050565b1561218957602081146120ec576040805162461bcd60e51b815260206004820152601e60248201527f6c656e677468206f66207472616e73666572476173206d69736d617463680000604482015290519081900360640190fd5b604080516020601f840181900481028201810190925282815260009161212a91858580838501838280828437600092019190915250613ad392505050565b905060008111612181576040805162461bcd60e51b815260206004820152601e60248201527f746865207472616e736665724761732063616e6e6f74206265207a65726f0000604482015290519081900360640190fd5b6011556121c6565b6040805162461bcd60e51b815260206004820152600d60248201526c756e6b6e6f776e20706172616d60981b604482015290519081900360640190fd5b7f6cdb0ac70ab7f2e2d035cca5be60d89906f2dede7648ddbd7402189c1eeed17a848484846040518080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600083820152604051601f909101601f19169092018290039850909650505050505050a150505050565b600481565b60105460009060ff16600214156122ac576040805162461bcd60e51b815260206004820152600e60248201526d4e6f2072652d656e7472616e637960901b604482015290519081900360640190fd5b506010805460ff191660021790553360009081526006602052604090205480612310576040805162461bcd60e51b81526020600482015260116024820152701b9bc81c195b991a5b99c81c995dd85c99607a1b604482015290519081900360640190fd5b336000818152600660205260408082208290556011549051919291849084818181858888f193505050503d8060008114612366576040519150601f19603f3d011682016040523d82523d6000602084013e61236b565b606091505b50509050806123b3576040805162461bcd60e51b815260206004820152600f60248201526e1d1c985b9cd9995c8819985a5b1959608a1b604482015290519081900360640190fd5b60408051838152905133917f83b78188b13346b2ffb484da70d42ee27de7fbf9f2bd8045269e10ed643ccd76919081900360200190a2506010805460ff1916600117905590565b6638d7ea4c68000081565b6001600160a01b038083166000908152600760209081526040808320938516835292905220545b92915050565b60015490565b61100281565b336120001461247e5760405162461bcd60e51b815260040180806020018281038252602f815260200180614804602f913960400191505060405180910390fd5b60005460ff166124c1576638d7ea4c6800006001908155662386f26fc1000060025568056bc75e2d631000006003556108fc6011556000805460ff191690911790555b61250082828080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612faf92505050565b612543576040805162461bcd60e51b815260206004820152600f60248201526e0eee4dedcce40e0c2c6d640d0c2e6d608b1b604482015290519081900360640190fd5b61254b61463f565b61258d610e5684848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506126ec92505050565b9050600061259d610e6b8361275b565b90506125a761463f565b6125b083612f1e565b156125ce576125c7610e566119fc6119078661275b565b9050612614565b6040805162461bcd60e51b8152602060048201526016602482015275656d707479206661696c2061636b207061636b61676560501b604482015290519081900360640190fd5b60ff82166001141561262e5761262981613ad8565b612658565b60ff8216600214156126435761262981613cf2565b60ff821660031415610eaa5761262981613e1c565b5050505b505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b61100381565b61200481565b68056bc75e2d6310000081565b6001600160a01b0392831660009081526009602090815260408083209486168352938152838220929094168152925290205490565b61100081565b60115481565b61100481565b6126f461465f565b506040805180820190915281518152602082810190820152919050565b61271961463f565b61272282613f81565b61272b57600080fd5b600061273a8360200151613fbb565b60208085015160408051808201909152868152920190820152915050919050565b61276361465f565b61276c82612f1e565b61277557600080fd5b602082015160006127858261401e565b80830160209586015260408051808201909152908152938401919091525090919050565b8051600090158015906127be57508151602110155b6127c757600080fd5b60006127d68360200151613fbb565b90508083600001511015612831576040805162461bcd60e51b815260206004820152601a60248201527f6c656e677468206973206c657373207468616e206f6666736574000000000000604482015290519081900360640190fd5b82516020808501518301805192849003929183101561285757826020036101000a820491505b50949350505050565b600060606000806000805b61287487612f1e565b156128c657826128965761288f61288a8861275b565b614151565b91506128bb565b82600114156128b6576128ab610e6b8861275b565b9050600193506128bb565b6128c6565b82600101925061286b565b8361290c576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b60006110046001600160a01b031663727be1f8836040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b15801561295657600080fd5b505af115801561296a573d6000803e3d6000fd5b505050506040513d602081101561298057600080fd5b50519050806129a55761299760048484606561416b565b965096505050505050612a3b565b6001600160a01b0383166000908152600660205260409020546129ce908363ffffffff612ec416565b6001600160a01b038416600081815260066020908152604091829020939093558051858152905191927f7cc266c7b444f808013fa187f7b904d470a051a6564e78f482aa496581ba4bf892918290030190a260408051600080825260208201909252909750955050505050505b915091565b6000606060008060008060005b612a5688612f1e565b15612abf5783612a7357612a6c61288a8961275b565b9250612ab4565b8360011415612a8f57612a8861288a8961275b565b9150612ab4565b8360021415612aaf57612aa4610e6b8961275b565b905060019450612ab4565b612abf565b836001019350612a4d565b84612b05576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b60006110046001600160a01b031663727be1f8836040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b158015612b4f57600080fd5b505af1158015612b63573d6000803e3d6000fd5b505050506040513d6020811015612b7957600080fd5b5051905080612b9f57612b9060058584606561416b565b97509750505050505050612a3b565b6001600160a01b038085166000818152600760209081526040808320948816835293815283822082905591815260089091522054612be3908363ffffffff612ec416565b6001600160a01b0380861660008181526008602090815260409182902094909455805186815290519287169391927f35a799836f74fac7eccf5c73902823b970543d2274d3b93d8da3d37a255772a2929181900390910190a3604080516000808252602082019092529098509650505050505050915091565b60008184841115612ceb5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612cb0578181015183820152602001612c98565b50505050905090810190601f168015612cdd5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000612d3583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614267565b9392505050565b6000612d3583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612c5c565b60408051600560a21b8318601482015260348101909152606090612d35816142cc565b606061242c612daf83614322565b6142cc565b6060815160001415612dd55750604080516000815260208101909152610d71565b606082600081518110612de457fe5b602002602001015190506000600190505b8351811015612e2557612e1b82858381518110612e0e57fe5b6020026020010151614408565b9150600101612df5565b50612d35612e38825160c060ff16614485565b82614408565b6040805160028082526060828101909352829190816020015b6060815260200190600190039081612e57579050509050612e7a8460ff16612da1565b81600081518110612e8757fe5b6020026020010181905250612e9b836142cc565b81600181518110612ea857fe5b6020026020010181905250612ebc81612db4565b949350505050565b600082820183811015612d35576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000612f2861465f565b505080518051602091820151919092015191011190565b8051606090612f4d57600080fd5b6000612f5c8360200151613fbb565b83516040805191839003808352601f19601f8201168301602001909152919250606090828015612f93576020820181803683370190505b509050600081602001905061285784876020015101828561457d565b8051602080830191909120600e546000908152600a9092526040822054808214612fde57600092505050610d71565b5050600e80546000908152600a60205260408120558054600190810190915592915050565b60008060008060005b61301588612f1e565b1561307e57836130325761302b61288a8961275b565b9250613073565b836001141561304e5761304761288a8961275b565b9150613073565b836002141561306e57613063610e6b8961275b565b905060019450613073565b61307e565b83600101935061300c565b846130c4576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b60006130db826402540be40063ffffffff6145c816565b6001600160a01b0385166000908152600b602052604090208054600019019055905060ff8816600114156132215760ff87161561314e576040805162461bcd60e51b815260206004820152600c60248201526b77726f6e672073746174757360a01b604482015290519081900360640190fd5b6001600160a01b038416600090815260046020526040902054613177908263ffffffff612ec416565b6001600160a01b038086166000908152600460209081526040808320949094556005815283822092871682529190915220546131b9908263ffffffff612ec416565b6001600160a01b038086166000818152600560209081526040808320948916808452948252918290209490945580518581529051929391927f9a57c81564ab02642f34fd87e41baa9b074c18342cec3b7268b62bf752018fd1929181900390910190a36133af565b60ff8816613373576001600160a01b038416600090815260086020526040902054613252908263ffffffff612ec416565b6001600160a01b0385166000908152600860209081526040808320939093558251630e4f7c3f60e31b81526004810185905292516110049363727be1f89360248083019493928390030190829087803b1580156132ae57600080fd5b505af11580156132c2573d6000803e3d6000fd5b505050506040513d60208110156132d857600080fd5b5051613321576040805162461bcd60e51b81526020600482015260136024820152721dda5d1a191c985dc8189b988819985a5b1959606a1b604482015290519081900360640190fd5b6040805182815260ff8916602082015281516001600160a01b0380871693908816927fcbd481ae600289fad8c0484d07ce0ffe4f010d7c844ecfdeaf2a13fead52886e929081900390910190a36133af565b6040805162461bcd60e51b815260206004820152600c60248201526b77726f6e672073746174757360a01b604482015290519081900360640190fd5b505050505050505050565b60008060008060005b6133cc88612f1e565b1561343557836133e9576133e261288a8961275b565b925061342a565b8360011415613405576133fe61288a8961275b565b915061342a565b83600214156134255761341a610e6b8961275b565b90506001945061342a565b613435565b8360010193506133c3565b8461347b576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b6000613492826402540be40063ffffffff6145c816565b6001600160a01b0385166000908152600c602052604090208054600019019055905060ff8816600114156136115760ff871615613505576040805162461bcd60e51b815260206004820152600c60248201526b77726f6e672073746174757360a01b604482015290519081900360640190fd5b6001600160a01b03841660009081526004602052604090205461352e908263ffffffff612d3c16565b6001600160a01b03808616600090815260046020908152604080832094909455600581528382209287168252919091522054613570908263ffffffff612d3c16565b6001600160a01b038086166000908152600560209081526040808320938816835292905220556135a942620a8c0063ffffffff612ec416565b6001600160a01b038086166000818152600760209081526040808320948916808452948252918290209490945580518581529051929391927fd6f878a5bcbbe79a64e6418bb0d56aaa20b9a60587d45749819df88dfc7c3c44929181900390910190a36133af565b60ff8816613373576001600160a01b03808516600081815260076020908152604080832094881680845294825280832092909255815185815260ff8c169181019190915281517f4417d10c1e33efa83a770b8d4f47176e78c08c1298d534901ad3b16bb585fa2e929181900390910190a36133af565b6000806000806000805b61369a89612f1e565b1561371f57846136b7576136b061288a8a61275b565b9350613714565b84600114156136d3576136cc61288a8a61275b565b9250613714565b84600214156136ef576136e861288a8a61275b565b9150613714565b846003141561370f57613704610e6b8a61275b565b905060019550613714565b61371f565b846001019450613691565b85613765576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b600061377c826402540be40063ffffffff6145c816565b6001600160a01b0386166000908152600d602052604090208054600019019055905060ff89166001141561394f5760ff8816156137ef576040805162461bcd60e51b815260206004820152600c60248201526b77726f6e672073746174757360a01b604482015290519081900360640190fd5b6001600160a01b03808616600090815260056020908152604080832093881683529290522054613825908263ffffffff612d3c16565b6001600160a01b038681166000908152600560209081526040808320898516845290915280822093909355908516815220546138619082612ec4565b6001600160a01b0380871660009081526005602090815260408083209388168352929052205561389a42620a8c0063ffffffff612ec416565b6001600160a01b03808716600090815260096020908152604080832089851684528252808320938816835292905220556138dd42620a8c0063ffffffff612ec416565b6001600160a01b038087166000818152600960209081526040808320898616808552908352818420958b1680855295835292819020959095558451868152945191947f78bffae3f8c6691ac7fc1a3bff800cb2d612f5ad9ae5b0444cfe2eb15c189e18929081900390910190a46139e0565b60ff8916613373576001600160a01b038581166000818152600960209081526040808320898616808552818452828520968a16808652968452828520859055908352818420818552835281842093909355805186815260ff8e169281019290925280519293927fb93bee5c59f85ede6b074a99f4ffcd3e3fc0d5c3d8156de331de89a49e0ce77c9281900390910190a45b50505050505050505050565b6000816040516020018082805190602001908083835b60208310613a215780518252601f199092019160209182019101613a02565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405280519060200120836040516020018082805190602001908083835b60208310613a8f5780518252601f199092019160209182019101613a70565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040528051906020012014905092915050565b015190565b60008060008060005b613aea86612f1e565b15613b535783613b0757613b0061288a8761275b565b9250613b48565b8360011415613b2357613b1c61288a8761275b565b9150613b48565b8360021415613b4357613b38610e6b8761275b565b905060019450613b48565b613b53565b836001019350613ae1565b84613b99576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b6000613bb0826402540be40063ffffffff6145c816565b6001600160a01b0385166000908152600b6020908152604080832080546000190190556008909152902054909150613bee908263ffffffff612ec416565b6001600160a01b0385166000908152600860209081526040808320939093558251630e4f7c3f60e31b81526004810185905292516110049363727be1f89360248083019493928390030190829087803b158015613c4a57600080fd5b505af1158015613c5e573d6000803e3d6000fd5b505050506040513d6020811015613c7457600080fd5b5051613cbd576040805162461bcd60e51b81526020600482015260136024820152721dda5d1a191c985dc8189b988819985a5b1959606a1b604482015290519081900360640190fd5b6040516001907ff83de021914a4585482db5ca47d520a5657165b443fa2c7ef8ed4635f054da9b90600090a250505050505050565b60008060008060005b613d0486612f1e565b15613d6d5783613d2157613d1a61288a8761275b565b9250613d62565b8360011415613d3d57613d3661288a8761275b565b9150613d62565b8360021415613d5d57613d52610e6b8761275b565b905060019450613d62565b613d6d565b836001019350613cfb565b84613db3576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b6001600160a01b038084166000908152600c60209081526040808320805460001901905560078252808320938616835292905281812081905590516002917ff83de021914a4585482db5ca47d520a5657165b443fa2c7ef8ed4635f054da9b91a2505050505050565b6000806000806000805b613e2f87612f1e565b15613eb45784613e4c57613e4561288a8861275b565b9350613ea9565b8460011415613e6857613e6161288a8861275b565b9250613ea9565b8460021415613e8457613e7d61288a8861275b565b9150613ea9565b8460031415613ea457613e99610e6b8861275b565b905060019550613ea9565b613eb4565b846001019450613e26565b85613efa576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b6001600160a01b038481166000908152600d602090815260408083208054600019019055600982528083208785168085528184528285209588168552948352818420849055825280832093835292905281812081905590516003917ff83de021914a4585482db5ca47d520a5657165b443fa2c7ef8ed4635f054da9b91a250505050505050565b8051600090613f9257506000610d71565b6020820151805160001a9060c0821015613fb157600092505050610d71565b5060019392505050565b8051600090811a6080811015613fd5576000915050610d71565b60b8811080613ff0575060c08110801590613ff0575060f881105b15613fff576001915050610d71565b60c08110156140135760b519019050610d71565b60f519019050610d71565b80516000908190811a6080811015614039576001915061414a565b60b881101561404e57607e198101915061414a565b60c08110156140c857600060b78203600186019550806020036101000a8651049150600181018201935050808310156140c2576040805162461bcd60e51b81526020600482015260116024820152706164646974696f6e206f766572666c6f7760781b604482015290519081900360640190fd5b5061414a565b60f88110156140dd5760be198101915061414a565b600060f78203600186019550806020036101000a865104915060018101820193505080831015614148576040805162461bcd60e51b81526020600482015260116024820152706164646974696f6e206f766572666c6f7760781b604482015290519081900360640190fd5b505b5092915050565b805160009060151461416257600080fd5b61242c826127a9565b60006060614184846402540be40063ffffffff612cf316565b60408051600480825260a0820190925291955060609190816020015b60608152602001906001900390816141a05790505090506141c38760ff16612da1565b816000815181106141d057fe5b60200260200101819052506141ed866001600160a01b0316612d7e565b816001815181106141fa57fe5b602002602001018190525061420e85612da1565b8160028151811061421b57fe5b60200260200101819052506142358463ffffffff16612da1565b8160038151811061424257fe5b6020026020010181905250606061425882612db4565b94989497509395505050505050565b600081836142b65760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315612cb0578181015183820152602001612c98565b5060008385816142c257fe5b0495945050505050565b6060815160011480156142fe5750607f60f81b826000815181106142ec57fe5b01602001516001600160f81b03191611155b1561430a575080610d71565b61242c61431c8351608060ff16614485565b83614408565b604080516020808252818301909252606091829190602082018180368337505050602081018490529050600067ffffffffffffffff1984166143665750601861438a565b6fffffffffffffffffffffffffffffffff1984166143865750601061438a565b5060005b60208110156143c05781818151811061439f57fe5b01602001516001600160f81b031916156143b8576143c0565b60010161438a565b60008160200390506060816040519080825280601f01601f1916602001820160405280156143f5576020820181803683370190505b5080830196909652508452509192915050565b6060806040519050835180825260208201818101602087015b81831015614439578051835260209283019201614421565b50855184518101855292509050808201602086015b8183101561446657805183526020928301920161444e565b508651929092011591909101601f01601f191660405250905092915050565b60606801000000000000000083106144d5576040805162461bcd60e51b815260206004820152600e60248201526d696e70757420746f6f206c6f6e6760901b604482015290519081900360640190fd5b6040805160018082528183019092526060916020820181803683370190505090506037841161452f5782840160f81b8160008151811061451157fe5b60200101906001600160f81b031916908160001a905350905061242c565b606061453a85614322565b90508381510160370160f81b8260008151811061455357fe5b60200101906001600160f81b031916908160001a9053506145748282614408565b95945050505050565b806145875761265c565b5b602081106145a7578251825260209283019290910190601f1901614588565b915181516020939093036101000a6000190180199091169216919091179052565b6000826145d75750600061242c565b828202828482816145e457fe5b0414612d355760405162461bcd60e51b81526004018080602001828103825260218152602001806147086021913960400191505060405180910390fd5b60405180606001604052806003906020820280368337509192915050565b604051806040016040528061465261465f565b8152602001600081525090565b60405180604001604052806000815260200160008152509056fe7468652042534352656c61796572466565206d6f642074656e20646563696d616c73206d757374206265207a65726f7468652042534352656c61796572466565206d757374206265206c657373207468616e2072656c61796572466565746865206d696e44656c65676174696f6e206d7573742062652067726561746572207468616e2072656c61796572466565536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f777468652072656c61796572466565206d6f642074656e20646563696d616c73206d757374206265207a65726f746865206d6573736167652073656e646572206d75737420626520676f7665726e616e636520636f6e74726163747468652072656c61796572466565206d757374206265206c657373207468616e206d696e44656c65676174696f6e7468652072656c61796572466565206d757374206265206d6f7265207468616e2042534352656c61796572466565696e73756666696369656e742062616c616e636520616674657220756e64656c6567617465746865206d6573736167652073656e646572206d7573742062652063726f737320636861696e20636f6e74726163747468652042534352656c61796572466565206d757374206e6f74206265207a65726fa164736f6c6343000604000a", + }, + { + ContractAddr: common.HexToAddress(StakeHubContract), + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/cfc0bd1127186a917ddc38fd38d22903034d3f0b", + Code: "6080604052600436106200029f5760003560e01c8063982ef0a7116200015f578063cf06248c11620000c5578063de88700b1162000084578063de88700b146200083d578063e8f67c3b146200085f578063e992aaf51462000877578063f1f74d84146200088f578063fb50b31f14620008a7578063fc0c5ff114620008cc57600080fd5b8063cf06248c1462000793578063d115a20614620007d0578063d6ca429d14620007e8578063d8ca511f146200080d578063daacdb66146200082557600080fd5b8063b187bd26116200011e578063b187bd2614620006c1578063baa7199e14620006e1578063bdceadf31462000706578063c38fbec8146200071e578063c473318f1462000743578063cbb04d9d146200075b57600080fd5b8063982ef0a7146200060e578063a43569b31462000625578063aad3ec961462000659578063ac431751146200067e578063ae0f336d14620006a357600080fd5b80634e6fd6c411620002055780636ec01b2711620001c45780636ec01b27146200052457806375cc7d89146200057c57806376e7d6d614620005a15780637adcf7e814620005b95780638129fc1c14620005de5780638456cb5914620005f657600080fd5b80634e6fd6c4146200045b57806359491871146200048c5780635e7cc1c914620004b157806363a036b514620004d657806364028fbd146200050d57600080fd5b8063417c73a7116200025e578063417c73a7146200035d578063449ecfe6146200038257806345211bfd14620003a75780634838d16514620003cc5780634a49ac4c14620004115780634d99dd16146200043657600080fd5b8063046f7da214620002c65780630661806e14620002de578063092193ab14620003095780630e9fbf51146200032057806338409988146200034557600080fd5b36620002c1576000546301000000900460ff16600114620002bf57600080fd5b005b600080fd5b348015620002d357600080fd5b50620002bf620008e4565b348015620002eb57600080fd5b50620002f660025481565b6040519081526020015b60405180910390f35b620002bf6200031a36600462006971565b62000945565b3480156200032d57600080fd5b50620002bf6200033f366004620069d5565b62000ec1565b3480156200035257600080fd5b50620002f660035481565b3480156200036a57600080fd5b50620002bf6200037c36600462006971565b6200113f565b3480156200038f57600080fd5b50620002bf620003a136600462006971565b6200118f565b348015620003b457600080fd5b50620002bf620003c636600462006971565b62001342565b348015620003d957600080fd5b5062000400620003eb36600462006971565b60176020526000908152604090205460ff1681565b604051901515815260200162000300565b3480156200041e57600080fd5b50620002bf6200043036600462006971565b62001505565b3480156200044357600080fd5b50620002bf6200045536600462006a1a565b62001552565b3480156200046857600080fd5b506200047361dead81565b6040516001600160a01b03909116815260200162000300565b3480156200049957600080fd5b50620002bf620004ab36600462006a5f565b62001b70565b348015620004be57600080fd5b50620002bf620004d036600462006acd565b62002942565b348015620004e357600080fd5b50620004fb620004f536600462006aed565b62002b49565b60405162000300949392919062006baa565b620002bf6200051e36600462006c79565b620031d1565b3480156200053157600080fd5b50620005496200054336600462006971565b620036a1565b6040805182516001600160401b039081168252602080850151821690830152928201519092169082015260600162000300565b3480156200058957600080fd5b50620002bf6200059b36600462006971565b6200374b565b348015620005ae57600080fd5b50620002f660095481565b348015620005c657600080fd5b5062000473620005d8366004620069d5565b6200391e565b348015620005eb57600080fd5b50620002bf62003956565b3480156200060357600080fd5b50620002bf62003c6c565b620002bf6200061f36600462006d4b565b62003cd2565b3480156200063257600080fd5b506200064a6200064436600462006971565b62004377565b60405162000300919062006d85565b3480156200066657600080fd5b50620002bf6200067836600462006a1a565b62004664565b3480156200068b57600080fd5b50620002bf6200069d36600462006e0b565b620047cd565b348015620006b057600080fd5b50620002f6670de0b6b3a764000081565b348015620006ce57600080fd5b5060005462010000900460ff1662000400565b348015620006ee57600080fd5b50620002bf6200070036600462006e7d565b6200562b565b3480156200071357600080fd5b50620002f660085481565b3480156200072b57600080fd5b50620002bf6200073d36600462006971565b620057f8565b3480156200075057600080fd5b50620002f660045481565b3480156200076857600080fd5b50620007806200077a36600462006971565b62005a16565b6040516200030095949392919062006f09565b348015620007a057600080fd5b5062000473620007b236600462006971565b6001600160a01b039081166000908152600f60205260409020541690565b348015620007dd57600080fd5b50620002f661271081565b348015620007f557600080fd5b50620002bf6200080736600462006f4b565b62005e75565b3480156200081a57600080fd5b50620002f660075481565b3480156200083257600080fd5b50620002f660135481565b3480156200084a57600080fd5b5060165462000473906001600160a01b031681565b3480156200086c57600080fd5b50620002f660015481565b3480156200088457600080fd5b50620002f660065481565b3480156200089c57600080fd5b50620002f6600a5481565b348015620008b457600080fd5b50620002bf620008c636600462006e0b565b62005fc4565b348015620008d957600080fd5b50620002f660055481565b6016546001600160a01b03163314620009105760405163f2771a9960e01b815260040160405180910390fd5b6000805462ff0000191681556040517f62451d457bc659158be6e6247f56ec1df424a5c7597f71c20c2bc44e0965c8f99190a1565b33611000146200097157604051630f22c43960e41b815261100060048201526024015b60405180910390fd5b6001600160a01b038082166000908152600f60209081526040808320548416808452600d83528184208251610140810184528154871681526001820154871694810194909452600281015490951691830191909152600384018054919491606084019190620009e09062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462000a0e9062006f83565b801562000a5f5780601f1062000a335761010080835404028352916020019162000a5f565b820191906000526020600020905b81548152906001019060200180831162000a4157829003601f168201915b505050505081526020016004820160405180608001604052908160008201805462000a8a9062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462000ab89062006f83565b801562000b095780601f1062000add5761010080835404028352916020019162000b09565b820191906000526020600020905b81548152906001019060200180831162000aeb57829003601f168201915b5050505050815260200160018201805462000b249062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462000b529062006f83565b801562000ba35780601f1062000b775761010080835404028352916020019162000ba3565b820191906000526020600020905b81548152906001019060200180831162000b8557829003601f168201915b5050505050815260200160028201805462000bbe9062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462000bec9062006f83565b801562000c3d5780601f1062000c115761010080835404028352916020019162000c3d565b820191906000526020600020905b81548152906001019060200180831162000c1f57829003601f168201915b5050505050815260200160038201805462000c589062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462000c869062006f83565b801562000cd75780601f1062000cab5761010080835404028352916020019162000cd7565b820191906000526020600020905b81548152906001019060200180831162000cb957829003601f168201915b505050919092525050508152604080516060808201835260088501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600984015460ff16151582840152600a84015490830152600b8301546080830152805161028081019182905260a09092019190600c84019060149082845b81548152602001906001019080831162000d63575050509190925250505060408101519091506001600160a01b0316158062000da057508060c001515b1562000e1157816001600160a01b03167ffc8bff675087dd2da069cc3fb517b9ed001e19750c0865241a5542dba1ba170d60405162000e049060208082526011908201527024a72b20a624a22fab20a624a220aa27a960791b604082015260600190565b60405180910390a2505050565b60408181015160a0830151519151632f303ebb60e11b81526001600160401b0390921660048301526001600160a01b031690635e607d769034906024016000604051808303818588803b15801562000e6857600080fd5b505af115801562000e7d573d6000803e3d6000fd5b5050505050816001600160a01b03167fe34918ff1c7084970068b53fd71ad6d8b04e9f15d3886cbf006443e6cdc52ea63460405162000e0491815260200190565b50565b336110011462000ee957604051630f22c43960e41b8152611001600482015260240162000968565b6000600e838360405162000eff92919062006fb9565b908152604051908190036020019020546001600160a01b0316905062000f27600b82620061e6565b62000f455760405163fdf4600b60e01b815260040160405180910390fd5b6001600160a01b0381166000908152600d602052604081209062000f6d620151804262006fdf565b6014546000828152601560205260409020549192501162000fa15760405163413361db60e01b815260040160405180910390fd5b600081815260156020526040812080546001929062000fc290849062007002565b90915550600090508062000fd88560026200620b565b915091508162000ffb57604051631b919bb160e11b815260040160405180910390fd5b600284015460085460405163045bc4d160e41b815260048101919091526000916001600160a01b0316906345bc4d10906024016020604051808303816000875af11580156200104e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001074919062007018565b905062001082858362006295565b856001600160a01b03167f6e9a2ee7aee95665e3a774a212eb11441b217e3e4656ab9563793094689aabb283836002604051620010c29392919062007032565b60405180910390a26002850154604051633041949b60e01b81526001600160a01b039182166004820152908716602482015261200590633041949b90604401600060405180830381600087803b1580156200111c57600080fd5b505af115801562001131573d6000803e3d6000fd5b505050505050505050505050565b6016546001600160a01b031633146200116b5760405163f2771a9960e01b815260040160405180910390fd5b6001600160a01b03166000908152601760205260409020805460ff19166001179055565b60005462010000900460ff1615620011ba5760405163d7485e8f60e01b815260040160405180910390fd5b80620011c8600b82620061e6565b620011e65760405163fdf4600b60e01b815260040160405180910390fd5b6001600160a01b0382166000908152600d60205260409020600981015460ff166200122457604051634b6b857d60e01b815260040160405180910390fd5b6002805490820154604051630913db4760e01b81526001600160a01b03868116600483015290911690630913db4790602401602060405180830381865afa15801562001274573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200129a919062007018565b1015620012ba576040516317b204bf60e11b815260040160405180910390fd5b4281600a01541115620012e05760405163170cb76760e21b815260040160405180910390fd5b60098101805460ff191690556013805460019190600090620013049084906200706d565b90915550506040516001600160a01b038416907f9390b453426557da5ebdc31f19a37753ca04addf656d32f35232211bb2af3f1990600090a2505050565b60005462010000900460ff16156200136d5760405163d7485e8f60e01b815260040160405180910390fd5b3360009081526017602052604090205460ff16156200139f5760405163b1d02c3d60e01b815260040160405180910390fd5b33620013ad600b82620061e6565b620013cb5760405163fdf4600b60e01b815260040160405180910390fd5b6001600160a01b038216620013f357604051636520611b60e11b815260040160405180910390fd5b6001600160a01b038281166000908152600f6020526040902054161515806200143457506001600160a01b03821660009081526011602052604090205460ff165b156200145357604051631e6f587560e11b815260040160405180910390fd5b336000818152600d60205260409020600b810154429062001478906201518062007002565b11156200149857604051631f92cdbd60e11b815260040160405180910390fd5b80546001600160a01b038086166001600160a01b03199283168117845542600b8501556000818152600f60205260408082208054948816949095168417909455925190927f6e4e747ca35203f16401c69805c7dd52fff67ef60b0ebc5c7fe16890530f223591a350505050565b6016546001600160a01b03163314620015315760405163f2771a9960e01b815260040160405180910390fd5b6001600160a01b03166000908152601760205260409020805460ff19169055565b60005462010000900460ff16156200157d5760405163d7485e8f60e01b815260040160405180910390fd5b3360009081526017602052604090205460ff1615620015af5760405163b1d02c3d60e01b815260040160405180910390fd5b81620015bd600b82620061e6565b620015db5760405163fdf4600b60e01b815260040160405180910390fd5b81600003620015fd57604051639811e0c760e01b815260040160405180910390fd5b6001600160a01b038084166000908152600d60209081526040808320815161014081018352815486168152600182015486169381019390935260028101549094169082015260038301805433949160608401916200165b9062006f83565b80601f0160208091040260200160405190810160405280929190818152602001828054620016899062006f83565b8015620016da5780601f10620016ae57610100808354040283529160200191620016da565b820191906000526020600020905b815481529060010190602001808311620016bc57829003601f168201915b5050505050815260200160048201604051806080016040529081600082018054620017059062006f83565b80601f0160208091040260200160405190810160405280929190818152602001828054620017339062006f83565b8015620017845780601f10620017585761010080835404028352916020019162001784565b820191906000526020600020905b8154815290600101906020018083116200176657829003601f168201915b505050505081526020016001820180546200179f9062006f83565b80601f0160208091040260200160405190810160405280929190818152602001828054620017cd9062006f83565b80156200181e5780601f10620017f2576101008083540402835291602001916200181e565b820191906000526020600020905b8154815290600101906020018083116200180057829003601f168201915b50505050508152602001600282018054620018399062006f83565b80601f0160208091040260200160405190810160405280929190818152602001828054620018679062006f83565b8015620018b85780601f106200188c57610100808354040283529160200191620018b8565b820191906000526020600020905b8154815290600101906020018083116200189a57829003601f168201915b50505050508152602001600382018054620018d39062006f83565b80601f0160208091040260200160405190810160405280929190818152602001828054620019019062006f83565b8015620019525780601f10620019265761010080835404028352916020019162001952565b820191906000526020600020905b8154815290600101906020018083116200193457829003601f168201915b505050919092525050508152604080516060808201835260088501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600984015460ff16151582840152600a84015490830152600b8301546080830152805161028081019182905260a09092019190600c84019060149082845b815481526020019060010190808311620019de575050509190925250505060408082015190516326ccee8b60e11b81526001600160a01b0385811660048301526024820188905292935060009290911690634d99dd16906044016020604051808303816000875af115801562001a58573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001a7e919062007018565b9050826001600160a01b0316866001600160a01b03167f3aace7340547de7b9156593a7652dc07ee900cea3fd8f82cb6c9d38b40829802878460405162001acf929190918252602082015260400190565b60405180910390a3856001600160a01b0316836001600160a01b03160362001afc5762001afc866200638a565b6040828101519051633041949b60e01b81526001600160a01b039182166004820152908416602482015261200590633041949b906044015b600060405180830381600087803b15801562001b4f57600080fd5b505af115801562001b64573d6000803e3d6000fd5b50505050505050505050565b60005462010000900460ff161562001b9b5760405163d7485e8f60e01b815260040160405180910390fd5b3360009081526017602052604090205460ff161562001bcd5760405163b1d02c3d60e01b815260040160405180910390fd5b8362001bdb600b82620061e6565b62001bf95760405163fdf4600b60e01b815260040160405180910390fd5b8362001c07600b82620061e6565b62001c255760405163fdf4600b60e01b815260040160405180910390fd5b8360000362001c4757604051639811e0c760e01b815260040160405180910390fd5b846001600160a01b0316866001600160a01b03160362001c7a5760405163f0e3e62960e01b815260040160405180910390fd5b6001600160a01b038087166000908152600d602090815260408083208151610140810183528154861681526001820154861693810193909352600281015490941690820152600383018054339491606084019162001cd89062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462001d069062006f83565b801562001d575780601f1062001d2b5761010080835404028352916020019162001d57565b820191906000526020600020905b81548152906001019060200180831162001d3957829003601f168201915b505050505081526020016004820160405180608001604052908160008201805462001d829062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462001db09062006f83565b801562001e015780601f1062001dd55761010080835404028352916020019162001e01565b820191906000526020600020905b81548152906001019060200180831162001de357829003601f168201915b5050505050815260200160018201805462001e1c9062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462001e4a9062006f83565b801562001e9b5780601f1062001e6f5761010080835404028352916020019162001e9b565b820191906000526020600020905b81548152906001019060200180831162001e7d57829003601f168201915b5050505050815260200160028201805462001eb69062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462001ee49062006f83565b801562001f355780601f1062001f095761010080835404028352916020019162001f35565b820191906000526020600020905b81548152906001019060200180831162001f1757829003601f168201915b5050505050815260200160038201805462001f509062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462001f7e9062006f83565b801562001fcf5780601f1062001fa35761010080835404028352916020019162001fcf565b820191906000526020600020905b81548152906001019060200180831162001fb157829003601f168201915b505050919092525050508152604080516060808201835260088501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600984015460ff16151582840152600a84015490830152600b8301546080830152805161028081019182905260a09092019190600c84019060149082845b8154815260200190600101908083116200205b57505050919092525050506001600160a01b038089166000908152600d60209081526040808320815161014081018352815486168152600182015486169381019390935260028101549094169082015260038301805494955091939092916060840191620020dc9062006f83565b80601f01602080910402602001604051908101604052809291908181526020018280546200210a9062006f83565b80156200215b5780601f106200212f576101008083540402835291602001916200215b565b820191906000526020600020905b8154815290600101906020018083116200213d57829003601f168201915b5050505050815260200160048201604051806080016040529081600082018054620021869062006f83565b80601f0160208091040260200160405190810160405280929190818152602001828054620021b49062006f83565b8015620022055780601f10620021d95761010080835404028352916020019162002205565b820191906000526020600020905b815481529060010190602001808311620021e757829003601f168201915b50505050508152602001600182018054620022209062006f83565b80601f01602080910402602001604051908101604052809291908181526020018280546200224e9062006f83565b80156200229f5780601f1062002273576101008083540402835291602001916200229f565b820191906000526020600020905b8154815290600101906020018083116200228157829003601f168201915b50505050508152602001600282018054620022ba9062006f83565b80601f0160208091040260200160405190810160405280929190818152602001828054620022e89062006f83565b8015620023395780601f106200230d5761010080835404028352916020019162002339565b820191906000526020600020905b8154815290600101906020018083116200231b57829003601f168201915b50505050508152602001600382018054620023549062006f83565b80601f0160208091040260200160405190810160405280929190818152602001828054620023829062006f83565b8015620023d35780601f10620023a757610100808354040283529160200191620023d3565b820191906000526020600020905b815481529060010190602001808311620023b557829003601f168201915b505050919092525050508152604080516060808201835260088501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600984015460ff16151582840152600a84015490830152600b8301546080830152805161028081019182905260a09092019190600c84019060149082845b8154815260200190600101908083116200245f5750505050508152505090508060c001518015620024a25750876001600160a01b0316836001600160a01b031614155b15620024c157604051636468920360e01b815260040160405180910390fd5b6000805463ff0000001916630100000017815560408381015190516352e82ce560e11b81526001600160a01b038681166004830152602482018b90529091169063a5d059ca906044016020604051808303816000875af11580156200252a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002550919062007018565b9050600354811015620025765760405163dc6f0bdd60e01b815260040160405180910390fd5b896001600160a01b0316846001600160a01b03161480156200260b57506002546040808501519051630913db4760e01b81526001600160a01b038d8116600483015290911690630913db4790602401602060405180830381865afa158015620025e3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002609919062007018565b105b156200262a576040516317b204bf60e11b815260040160405180910390fd5b6000612710600654836200263f919062007083565b6200264b919062006fdf565b9050600083604001516001600160a01b03168260405160006040518083038185875af1925050503d8060008114620026a0576040519150601f19603f3d011682016040523d82523d6000602084013e620026a5565b606091505b5050905080620026c8576040516312171d8360e31b815260040160405180910390fd5b620026d482846200706d565b60408086015190516317066a5760e21b81526001600160a01b03898116600483015292955060009290911690635c19a95c90869060240160206040518083038185885af11580156200272a573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019062002751919062007018565b905060008060036101000a81548160ff021916908360ff160217905550866001600160a01b03168c6001600160a01b03168e6001600160a01b03167ffdac6e81913996d95abcc289e90f2d8bd235487ce6fe6f821e7d21002a1915b48e8589604051620027d1939291909283526020830191909152604082015260600190565b60405180910390a4604080516002808252606082018352600092602083019080368337019050509050866040015181600081518110620028155762002815620070b3565b60200260200101906001600160a01b031690816001600160a01b031681525050856040015181600181518110620028505762002850620070b3565b6001600160a01b0390921660209283029190910190910152604051634484077560e01b815261200590634484077590620028919084908c90600401620070c9565b600060405180830381600087803b158015620028ac57600080fd5b505af1158015620028c1573d6000803e3d6000fd5b505050508a1562002932576040516372f6ad8f60e11b81526001600160a01b0389811660048301528e1660248201526120059063e5ed5b1e90604401600060405180830381600087803b1580156200291857600080fd5b505af11580156200292d573d6000803e3d6000fd5b505050505b5050505050505050505050505050565b60005462010000900460ff16156200296d5760405163d7485e8f60e01b815260040160405180910390fd5b3360009081526017602052604090205460ff16156200299f5760405163b1d02c3d60e01b815260040160405180910390fd5b33620029ad600b82620061e6565b620029cb5760405163fdf4600b60e01b815260040160405180910390fd5b336000818152600d60205260409020600b8101544290620029f0906201518062007002565b111562002a1057604051631f92cdbd60e11b815260040160405180910390fd5b60088101546001600160401b03600160401b9091048116908516111562002a4a5760405163dc81db8560e01b815260040160405180910390fd5b60088101546000906001600160401b03908116908616101562002a8857600882015462002a829086906001600160401b0316620070f5565b62002aa2565b600882015462002aa2906001600160401b031686620070f5565b60088301546001600160401b039182169250600160801b90041681111562002add5760405163dc81db8560e01b815260040160405180910390fd5b60088201805467ffffffffffffffff19166001600160401b03871690811790915542600b8401556040519081526001600160a01b038416907f78cdd96edf59e09cfd4d26ef6ef6c92d166effe6a40970c54821206d541932cb9060200160405180910390a25050505050565b6060806060600062002b5c600b620064a3565b905080861015620031c857841562002b75578462002b77565b805b945060008562002b8888846200706d565b1162002ba05762002b9a87836200706d565b62002ba2565b855b9050806001600160401b0381111562002bbf5762002bbf6200709d565b60405190808252806020026020018201604052801562002be9578160200160208202803683370190505b509450806001600160401b0381111562002c075762002c076200709d565b60405190808252806020026020018201604052801562002c31578160200160208202803683370190505b509350806001600160401b0381111562002c4f5762002c4f6200709d565b60405190808252806020026020018201604052801562002c8457816020015b606081526020019060019003908162002c6e5790505b50925060005b81811015620031c557600062002cae62002ca5838b62007002565b600b90620064ae565b6001600160a01b038082166000908152600d6020908152604080832081516101408101835281548616815260018201548616938101939093526002810154909416908201526003830180549495509193909291606084019162002d119062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462002d3f9062006f83565b801562002d905780601f1062002d645761010080835404028352916020019162002d90565b820191906000526020600020905b81548152906001019060200180831162002d7257829003601f168201915b505050505081526020016004820160405180608001604052908160008201805462002dbb9062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462002de99062006f83565b801562002e3a5780601f1062002e0e5761010080835404028352916020019162002e3a565b820191906000526020600020905b81548152906001019060200180831162002e1c57829003601f168201915b5050505050815260200160018201805462002e559062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462002e839062006f83565b801562002ed45780601f1062002ea85761010080835404028352916020019162002ed4565b820191906000526020600020905b81548152906001019060200180831162002eb657829003601f168201915b5050505050815260200160028201805462002eef9062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462002f1d9062006f83565b801562002f6e5780601f1062002f425761010080835404028352916020019162002f6e565b820191906000526020600020905b81548152906001019060200180831162002f5057829003601f168201915b5050505050815260200160038201805462002f899062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462002fb79062006f83565b8015620030085780601f1062002fdc5761010080835404028352916020019162003008565b820191906000526020600020905b81548152906001019060200180831162002fea57829003601f168201915b505050919092525050508152604080516060808201835260088501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600984015460ff16151582840152600a84015490830152600b8301546080830152805161028081019182905260a09092019190600c84019060149082845b815481526020019060010190808311620030945750505050508152505090508060000151888481518110620030cd57620030cd620070b3565b60200260200101906001600160a01b031690816001600160a01b0316815250508060c00151620031665780604001516001600160a01b03166315d1f8986040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200313a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003160919062007018565b62003169565b60005b8784815181106200317e576200317e620070b3565b6020026020010181815250508060600151868481518110620031a457620031a4620070b3565b6020026020010181905250505080620031bd906200711f565b905062002c8a565b50505b92959194509250565b60005462010000900460ff1615620031fc5760405163d7485e8f60e01b815260040160405180910390fd5b3360009081526017602052604090205460ff16156200322e5760405163b1d02c3d60e01b815260040160405180910390fd5b336200323c600b82620061e6565b156200325b57604051635f28f62b60e01b815260040160405180910390fd5b6001600160a01b038881166000908152600f6020526040902054161515806200329c57506001600160a01b03881660009081526011602052604090205460ff165b15620032bb57604051631e6f587560e11b815260040160405180910390fd5b60006001600160a01b0316600e8888604051620032da92919062006fb9565b908152604051908190036020019020546001600160a01b0316141580620033245750601287876040516200331092919062006fb9565b9081526040519081900360200190205460ff165b1562003343576040516311fdb94760e01b815260040160405180910390fd5b60025434906200335d90670de0b6b3a76400009062007002565b8110156200337e576040516317b204bf60e11b815260040160405180910390fd5b6001600160a01b038916620033a657604051636520611b60e11b815260040160405180910390fd5b611388620033bb604086016020870162006acd565b6001600160401b03161180620034015750620033de604085016020860162006acd565b6001600160401b0316620033f6602086018662006acd565b6001600160401b0316115b806200344057506200341a604085016020860162006acd565b6001600160401b031662003435606086016040870162006acd565b6001600160401b0316115b156200345f5760405163dc81db8560e01b815260040160405180910390fd5b620034aa6200346f84806200713b565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250620064bc92505050565b620034c857604051635dba5ad760e01b815260040160405180910390fd5b620034d6888888886200665e565b620034f457604051631647e3cb60e11b815260040160405180910390fd5b600062003542836200350786806200713b565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506200678b92505050565b905062003551600b8462006855565b506001600160a01b038381166000818152600d6020526040902080546001600160a01b03199081168e8516178255600182018054821690931790925560028101805490921692841692909217905560038101620035b08a8c83620071ce565b508460048201620035c282826200729b565b5086905060088201620035d68282620073d8565b505042600b8201556001600160a01b038b81166000908152600f60205260409081902080546001600160a01b03191692871692909217909155518490600e9062003624908d908d9062006fb9565b90815260405190819003602001812080546001600160a01b039384166001600160a01b03199091161790558382169186811691908e16907faecd9fb95e79c75a3a1de93362c6be5fe6ab65770d8614be583884161cd8228d906200368c908f908f90620074a8565b60405180910390a45050505050505050505050565b604080516060810182526000808252602082018190529181019190915281620036cc600b82620061e6565b620036ea5760405163fdf4600b60e01b815260040160405180910390fd5b6001600160a01b0383166000908152600d602090815260409182902082516060810184526008909101546001600160401b038082168352600160401b8204811693830193909352600160801b90049091169181019190915291505b50919050565b33611001146200377357604051630f22c43960e41b8152611001600482015260240162000968565b6001600160a01b038082166000908152600f6020526040902054166200379b600b82620061e6565b620037b95760405163fdf4600b60e01b815260040160405180910390fd5b6001600160a01b038181166000908152600d60205260408082206002810154600754925163045bc4d160e41b81526004810193909352909316906345bc4d10906024016020604051808303816000875af11580156200381c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003842919062007018565b905060006009544262003856919062007002565b905062003864838262006295565b836001600160a01b03167f6e9a2ee7aee95665e3a774a212eb11441b217e3e4656ab9563793094689aabb282846001604051620038a49392919062007032565b60405180910390a26002830154604051633041949b60e01b81526001600160a01b039182166004820152908516602482015261200590633041949b90604401600060405180830381600087803b158015620038fe57600080fd5b505af115801562003913573d6000803e3d6000fd5b505050505050505050565b6000600e83836040516200393492919062006fb9565b908152604051908190036020019020546001600160a01b031690505b92915050565b600054610100900460ff1615808015620039775750600054600160ff909116105b80620039935750303b15801562003993575060005460ff166001145b620039f85760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840162000968565b6000805460ff19166001179055801562003a1c576000805461ff0019166101001790555b33411462003a3d5760405163022d8c9560e31b815260040160405180910390fd5b3a1562003a5d576040516383f1b1d360e01b815260040160405180910390fd5b611388600155686c6b935b8bbd4000006002908155670de0b6b3a7640000600355601d60045562093a806005556006819055678ac7230489e80000600755680ad78ebc5ac62000006008556202a30060095562278d00600a5560145560408051606081810183528282529182919062008671602083013980602001905181019062003ae9919062007517565b9150604051806060016040528060408152602001620086716040913980602001905181019062003b1a9190620075c1565b905060005b825181101562003b895760016011600085848151811062003b445762003b44620070b3565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905562003b81816200711f565b905062003b1f565b5060005b815181101562003bfa576001601283838151811062003bb05762003bb0620070b3565b602002602001015160405162003bc79190620076d7565b908152604051908190036020019020805491151560ff1990921691909117905562003bf2816200711f565b905062003b8d565b5050601680546001600160a01b03191673df87f0e2b8519ea2dd4abd8b639cdd628497ed2517905550801562000ebe576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b6016546001600160a01b0316331462003c985760405163f2771a9960e01b815260040160405180910390fd5b6000805462ff00001916620100001781556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e7529190a1565b60005462010000900460ff161562003cfd5760405163d7485e8f60e01b815260040160405180910390fd5b3360009081526017602052604090205460ff161562003d2f5760405163b1d02c3d60e01b815260040160405180910390fd5b8162003d3d600b82620061e6565b62003d5b5760405163fdf4600b60e01b815260040160405180910390fd5b600354349081101562003d815760405163dc6f0bdd60e01b815260040160405180910390fd5b6001600160a01b038085166000908152600d602090815260408083208151610140810183528154861681526001820154861693810193909352600281015490941690820152600383018054339491606084019162003ddf9062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462003e0d9062006f83565b801562003e5e5780601f1062003e325761010080835404028352916020019162003e5e565b820191906000526020600020905b81548152906001019060200180831162003e4057829003601f168201915b505050505081526020016004820160405180608001604052908160008201805462003e899062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462003eb79062006f83565b801562003f085780601f1062003edc5761010080835404028352916020019162003f08565b820191906000526020600020905b81548152906001019060200180831162003eea57829003601f168201915b5050505050815260200160018201805462003f239062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462003f519062006f83565b801562003fa25780601f1062003f765761010080835404028352916020019162003fa2565b820191906000526020600020905b81548152906001019060200180831162003f8457829003601f168201915b5050505050815260200160028201805462003fbd9062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462003feb9062006f83565b80156200403c5780601f1062004010576101008083540402835291602001916200403c565b820191906000526020600020905b8154815290600101906020018083116200401e57829003601f168201915b50505050508152602001600382018054620040579062006f83565b80601f0160208091040260200160405190810160405280929190818152602001828054620040859062006f83565b8015620040d65780601f10620040aa57610100808354040283529160200191620040d6565b820191906000526020600020905b815481529060010190602001808311620040b857829003601f168201915b505050919092525050508152604080516060808201835260088501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600984015460ff16151582840152600a84015490830152600b8301546080830152805161028081019182905260a09092019190600c84019060149082845b815481526020019060010190808311620041625750505050508152505090508060c001518015620041a55750856001600160a01b0316826001600160a01b031614155b15620041c457604051636468920360e01b815260040160405180910390fd5b60408082015190516317066a5760e21b81526001600160a01b0384811660048301526000921690635c19a95c90869060240160206040518083038185885af115801562004215573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906200423c919062007018565b9050826001600160a01b0316876001600160a01b03167f24d7bda8602b916d64417f0dbfe2e2e88ec9b1157bd9f596dfdb91ba26624e0483876040516200428d929190918252602082015260400190565b60405180910390a36040828101519051633041949b60e01b81526001600160a01b039182166004820152908416602482015261200590633041949b90604401600060405180830381600087803b158015620042e757600080fd5b505af1158015620042fc573d6000803e3d6000fd5b5050505085156200436e576040516372f6ad8f60e11b81526001600160a01b038085166004830152881660248201526120059063e5ed5b1e906044015b600060405180830381600087803b1580156200435457600080fd5b505af115801562004369573d6000803e3d6000fd5b505050505b50505050505050565b620043a36040518060800160405280606081526020016060815260200160608152602001606081525090565b81620043b1600b82620061e6565b620043cf5760405163fdf4600b60e01b815260040160405180910390fd5b6001600160a01b0383166000908152600d602052604090819020815160808101909252600401805482908290620044069062006f83565b80601f0160208091040260200160405190810160405280929190818152602001828054620044349062006f83565b8015620044855780601f10620044595761010080835404028352916020019162004485565b820191906000526020600020905b8154815290600101906020018083116200446757829003601f168201915b50505050508152602001600182018054620044a09062006f83565b80601f0160208091040260200160405190810160405280929190818152602001828054620044ce9062006f83565b80156200451f5780601f10620044f3576101008083540402835291602001916200451f565b820191906000526020600020905b8154815290600101906020018083116200450157829003601f168201915b505050505081526020016002820180546200453a9062006f83565b80601f0160208091040260200160405190810160405280929190818152602001828054620045689062006f83565b8015620045b95780601f106200458d57610100808354040283529160200191620045b9565b820191906000526020600020905b8154815290600101906020018083116200459b57829003601f168201915b50505050508152602001600382018054620045d49062006f83565b80601f0160208091040260200160405190810160405280929190818152602001828054620046029062006f83565b8015620046535780601f10620046275761010080835404028352916020019162004653565b820191906000526020600020905b8154815290600101906020018083116200463557829003601f168201915b505050505081525050915050919050565b60005462010000900460ff16156200468f5760405163d7485e8f60e01b815260040160405180910390fd5b3360009081526017602052604090205460ff1615620046c15760405163b1d02c3d60e01b815260040160405180910390fd5b81620046cf600b82620061e6565b620046ed5760405163fdf4600b60e01b815260040160405180910390fd5b6001600160a01b038381166000908152600d6020526040808220600201549051635569f64b60e11b8152336004820152602481018690529192169063aad3ec96906044016020604051808303816000875af115801562004751573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004777919062007018565b9050336001600160a01b0316846001600160a01b03167ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd399268383604051620047bf91815260200190565b60405180910390a350505050565b3361100714620047f557604051630f22c43960e41b8152611007600482015260240162000968565b620048626040518060400160405280601081526020016f1d1c985b9cd9995c91d85cd31a5b5a5d60821b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200686c9050565b15620049105760208114620048945783838383604051630a5a604160e01b8152600401620009689493929190620076f5565b604080516020601f8401819004810282018101909252828152600091620048d7918585808385018382808284376000920191909152509293925050620068c99050565b90506108fc811015620049075784848484604051630a5a604160e01b8152600401620009689493929190620076f5565b600155620055e6565b620049816040518060400160405280601481526020017336b4b729b2b6332232b632b3b0ba34b7b721272160611b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200686c9050565b1562004a365760208114620049b35783838383604051630a5a604160e01b8152600401620009689493929190620076f5565b604080516020601f8401819004810282018101909252828152600091620049f6918585808385018382808284376000920191909152509293925050620068c99050565b9050683635c9adc5dea0000081101562004a2d5784848484604051630a5a604160e01b8152600401620009689493929190620076f5565b600255620055e6565b62004aa9604051806040016040528060168152602001756d696e44656c65676174696f6e424e424368616e676560501b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200686c9050565b1562004b5d576020811462004adb5783838383604051630a5a604160e01b8152600401620009689493929190620076f5565b604080516020601f840181900481028201810190925282815260009162004b1e918585808385018382808284376000920191909152509293925050620068c99050565b905067016345785d8a000081101562004b545784848484604051630a5a604160e01b8152600401620009689493929190620076f5565b600355620055e6565b62004bce604051806040016040528060148152602001736d6178456c656374656456616c696461746f727360601b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200686c9050565b1562004c88576020811462004c005783838383604051630a5a604160e01b8152600401620009689493929190620076f5565b604080516020601f840181900481028201810190925282815260009162004c43918585808385018382808284376000920191909152509293925050620068c99050565b9050600181108062004c5657506101f481115b1562004c7f5784848484604051630a5a604160e01b8152600401620009689493929190620076f5565b600455620055e6565b62004cf16040518060400160405280600c81526020016b1d5b989bdb9914195c9a5bd960a21b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200686c9050565b1562004da0576020811462004d235783838383604051630a5a604160e01b8152600401620009689493929190620076f5565b604080516020601f840181900481028201810190925282815260009162004d66918585808385018382808284376000920191909152509293925050620068c99050565b90506203f48081101562004d975784848484604051630a5a604160e01b8152600401620009689493929190620076f5565b600555620055e6565b62004e0e60405180604001604052806011815260200170726564656c65676174654665655261746560781b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200686c9050565b1562004ebb576020811462004e405783838383604051630a5a604160e01b8152600401620009689493929190620076f5565b604080516020601f840181900481028201810190925282815260009162004e83918585808385018382808284376000920191909152509293925050620068c99050565b9050606481111562004eb25784848484604051630a5a604160e01b8152600401620009689493929190620076f5565b600655620055e6565b62004f2b60405180604001604052806013815260200172191bdddb9d1a5b5954db185cda105b5bdd5b9d606a1b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200686c9050565b1562004fec576020811462004f5d5783838383604051630a5a604160e01b8152600401620009689493929190620076f5565b604080516020601f840181900481028201810190925282815260009162004fa0918585808385018382808284376000920191909152509293925050620068c99050565b9050674563918244f4000081108062004fba575060085481115b1562004fe35784848484604051630a5a604160e01b8152600401620009689493929190620076f5565b600755620055e6565b6200505a6040518060400160405280601181526020017019995b1bdb9e54db185cda105b5bdd5b9d607a1b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200686c9050565b156200511d57602081146200508c5783838383604051630a5a604160e01b8152600401620009689493929190620076f5565b604080516020601f8401819004810282018101909252828152600091620050cf918585808385018382808284376000920191909152509293925050620068c99050565b905068056bc75e2d63100000811080620050eb57506007548111155b15620051145784848484604051630a5a604160e01b8152600401620009689493929190620076f5565b600855620055e6565b6200518a6040518060400160405280601081526020016f646f776e74696d654a61696c54696d6560801b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200686c9050565b15620052475760208114620051bc5783838383604051630a5a604160e01b8152600401620009689493929190620076f5565b604080516020601f8401819004810282018101909252828152600091620051ff918585808385018382808284376000920191909152509293925050620068c99050565b90506202a300811080620052155750600a548110155b156200523e5784848484604051630a5a604160e01b8152600401620009689493929190620076f5565b600955620055e6565b620052b26040518060400160405280600e81526020016d66656c6f6e794a61696c54696d6560901b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200686c9050565b156200536f5760208114620052e45783838383604051630a5a604160e01b8152600401620009689493929190620076f5565b604080516020601f840181900481028201810190925282815260009162005327918585808385018382808284376000920191909152509293925050620068c99050565b9050620d2f008110806200533d57506009548111155b15620053665784848484604051630a5a604160e01b8152600401620009689493929190620076f5565b600a55620055e6565b620053d86040518060400160405280600c81526020016b66656c6f6e7950657244617960a01b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200686c9050565b156200548457602081146200540a5783838383604051630a5a604160e01b8152600401620009689493929190620076f5565b604080516020601f84018190048102820181019092528281526000916200544d918585808385018382808284376000920191909152509293925050620068c99050565b9050806000036200547b5784848484604051630a5a604160e01b8152600401620009689493929190620076f5565b601455620055e6565b620054ef6040518060400160405280600e81526020016d30b9b9b2ba283937ba32b1ba37b960911b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200686c9050565b15620055c35760148114620055215783838383604051630a5a604160e01b8152600401620009689493929190620076f5565b600062005569601484848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050620068c99050565b90506001600160a01b0381166200559d5784848484604051630a5a604160e01b8152600401620009689493929190620076f5565b601680546001600160a01b0319166001600160a01b0392909216919091179055620055e6565b838383836040516325ee20d560e21b8152600401620009689493929190620076f5565b7ff1ce9b2cbf50eeb05769a29e2543fd350cab46894a7dd9978a12d534bb20e633848484846040516200561d9493929190620076f5565b60405180910390a150505050565b60005462010000900460ff1615620056565760405163d7485e8f60e01b815260040160405180910390fd5b3360009081526017602052604090205460ff1615620056885760405163b1d02c3d60e01b815260040160405180910390fd5b816000816001600160401b03811115620056a657620056a66200709d565b604051908082528060200260200182016040528015620056d0578160200160208202803683370190505b5090506000805b83811015620057ce5762005719878783818110620056f957620056f9620070b3565b905060200201602081019062005710919062006971565b600b90620061e6565b620057375760405163fdf4600b60e01b815260040160405180910390fd5b600d6000888884818110620057505762005750620070b3565b905060200201602081019062005767919062006971565b6001600160a01b0390811682526020820192909252604001600020600201548451911692508290849083908110620057a357620057a3620070b3565b6001600160a01b0390921660209283029190910190910152620057c6816200711f565b9050620056d7565b50604051634484077560e01b81526120059063448407759062001b349085908890600401620070c9565b33611001146200582057604051630f22c43960e41b8152611001600482015260240162000968565b6001600160a01b038082166000908152600f60205260409020541662005848600b82620061e6565b620058665760405163fdf4600b60e01b815260040160405180910390fd5b6001600160a01b0381166000908152600d60209081526040808320601454428086526015909452919093205410620058b15760405163413361db60e01b815260040160405180910390fd5b6000818152601560205260408120805460019290620058d290849062007002565b909155506000905080620058e785826200620b565b91509150816200590a57604051631b919bb160e11b815260040160405180910390fd5b600284015460085460405163045bc4d160e41b815260048101919091526000916001600160a01b0316906345bc4d10906024016020604051808303816000875af11580156200595d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005983919062007018565b905062005991858362006295565b856001600160a01b03167f6e9a2ee7aee95665e3a774a212eb11441b217e3e4656ab9563793094689aabb283836000604051620059d19392919062007032565b60405180910390a26002850154604051633041949b60e01b81526001600160a01b039182166004820152908716602482015261200590633041949b9060440162004339565b600080606081808562005a2b600b82620061e6565b62005a495760405163fdf4600b60e01b815260040160405180910390fd5b6001600160a01b038088166000908152600d6020908152604080832081516101408101835281548616815260018201548616938101939093526002810154909416908201526003830180549293919260608401919062005aa99062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462005ad79062006f83565b801562005b285780601f1062005afc5761010080835404028352916020019162005b28565b820191906000526020600020905b81548152906001019060200180831162005b0a57829003601f168201915b505050505081526020016004820160405180608001604052908160008201805462005b539062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462005b819062006f83565b801562005bd25780601f1062005ba65761010080835404028352916020019162005bd2565b820191906000526020600020905b81548152906001019060200180831162005bb457829003601f168201915b5050505050815260200160018201805462005bed9062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462005c1b9062006f83565b801562005c6c5780601f1062005c405761010080835404028352916020019162005c6c565b820191906000526020600020905b81548152906001019060200180831162005c4e57829003601f168201915b5050505050815260200160028201805462005c879062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462005cb59062006f83565b801562005d065780601f1062005cda5761010080835404028352916020019162005d06565b820191906000526020600020905b81548152906001019060200180831162005ce857829003601f168201915b5050505050815260200160038201805462005d219062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462005d4f9062006f83565b801562005da05780601f1062005d745761010080835404028352916020019162005da0565b820191906000526020600020905b81548152906001019060200180831162005d8257829003601f168201915b505050919092525050508152604080516060808201835260088501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600984015460ff16151582840152600a84015490830152600b8301546080830152805161028081019182905260a09092019190600c84019060149082845b81548152602001906001019080831162005e2c5750505091909252505081516040830151606084015160c085015160e090950151929d919c509a50929850965090945050505050565b60005462010000900460ff161562005ea05760405163d7485e8f60e01b815260040160405180910390fd5b3360009081526017602052604090205460ff161562005ed25760405163b1d02c3d60e01b815260040160405180910390fd5b3362005ee0600b82620061e6565b62005efe5760405163fdf4600b60e01b815260040160405180910390fd5b62005f0e6200346f83806200713b565b62005f2c57604051635dba5ad760e01b815260040160405180910390fd5b336000818152600d60205260409020600b810154429062005f51906201518062007002565b111562005f7157604051631f92cdbd60e11b815260040160405180910390fd5b836004820162005f8282826200729b565b505042600b8201556040516001600160a01b038316907f85d6366b336ade7f106987ec7a8eac1e8799e508aeab045a39d2f63e0dc969d990600090a250505050565b60005462010000900460ff161562005fef5760405163d7485e8f60e01b815260040160405180910390fd5b3360009081526017602052604090205460ff1615620060215760405163b1d02c3d60e01b815260040160405180910390fd5b336200602f600b82620061e6565b6200604d5760405163fdf4600b60e01b815260040160405180910390fd5b6200605b858585856200665e565b6200607957604051631647e3cb60e11b815260040160405180910390fd5b60006001600160a01b0316600e86866040516200609892919062006fb9565b908152604051908190036020019020546001600160a01b0316141580620060e2575060128585604051620060ce92919062006fb9565b9081526040519081900360200190205460ff165b1562006101576040516311fdb94760e01b815260040160405180910390fd5b336000818152600d60205260409020600b810154429062006126906201518062007002565b11156200614657604051631f92cdbd60e11b815260040160405180910390fd5b6003810162006157878983620071ce565b5042600b8201556040518290600e9062006175908a908a9062006fb9565b90815260405190819003602001812080546001600160a01b039384166001600160a01b0319909116179055908316907f783156582145bd0ff7924fae6953ba054cf1233eb60739a200ddb10de068ff0d90620061d5908a908a90620074a8565b60405180910390a250505050505050565b6001600160a01b038116600090815260018301602052604081205415155b9392505050565b600080600084846040516020016200622592919062007720565b60408051601f198184030181529181528151602092830120600081815260109093529120549091504281111562006265576000809350935050506200628e565b600a5462006274904262007002565b600092835260106020526040909220829055506001925090505b9250929050565b60006001620062a5600b620064a3565b620062b191906200706d565b6013541080159150620062fd5760018301546040516001600160a01b03909116907f2afdc18061ac21cff7d9f11527ab9c8dec6fabd4edf6f894ed634bebd6a20d4590600090a2505050565b82600a01548211156200631257600a83018290555b600983015460ff16620063855760098301805460ff19166001908117909155601380546000906200634590849062007002565b909155505060018301546040516001600160a01b03909116907f4905ac32602da3fb8b4b7b00c285e5fc4c6c2308cc908b4a1e4e9625a29c90a390600090a25b505050565b6001600160a01b0381166000908152600d60205260409020600981015460ff1615620063b4575050565b6002805490820154604051630913db4760e01b81526001600160a01b03858116600483015290911690630913db4790602401602060405180830381865afa15801562006404573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200642a919062007018565b10156200649f576200643e81600062006295565b80546040516372c4db0f60e11b81526001600160a01b0390911660048201526110009063e589b61e90602401600060405180830381600087803b1580156200648557600080fd5b505af11580156200649a573d6000803e3d6000fd5b505050505b5050565b600062003950825490565b6000620062048383620068ce565b600080829050600381511080620064d4575060098151115b15620064e35750600092915050565b604181600081518110620064fb57620064fb620070b3565b016020015160f81c10806200652d5750605a81600081518110620065235762006523620070b3565b016020015160f81c115b156200653c5750600092915050565b60015b815181101562006654576030828281518110620065605762006560620070b3565b016020015160f81c10806200659157506039828281518110620065875762006587620070b3565b016020015160f81c115b8015620065e157506041828281518110620065b057620065b0620070b3565b016020015160f81c1080620065e15750605a828281518110620065d757620065d7620070b3565b016020015160f81c115b80156200663157506061828281518110620066005762006600620070b3565b016020015160f81c1080620066315750607a828281518110620066275762006627620070b3565b016020015160f81c115b1562006641575060009392505050565b6200664c816200711f565b90506200653f565b5060019392505050565b600060308414158062006672575060608214155b15620066815750600062006783565b60008585466040516020016200669a939291906200776a565b60408051808303601f1901815282825280516020918201208184528383019092529092506000919060208201818036833701905050905081602082015260008186868a8a604051602001620066f49594939291906200777c565b60408051808303601f190181526001808452838301909252925060009190602082018180368337019050509050815160016020830182602086016066600019fa6200673e57600080fd5b50600081600081518110620067575762006757620070b3565b016020015160f81c905060018114620067795760009550505050505062006783565b6001955050505050505b949350505050565b60008061200361dead604051620067a2906200694d565b6001600160a01b03928316815291166020820152606060408201819052600090820152608001604051809103906000f080158015620067e5573d6000803e3d6000fd5b509050806001600160a01b031663f399e22e3486866040518463ffffffff1660e01b815260040162006819929190620077b4565b6000604051808303818588803b1580156200683357600080fd5b505af115801562006848573d6000803e3d6000fd5b5093979650505050505050565b600062006204836001600160a01b038416620068fb565b600081604051602001620068819190620076d7565b6040516020818303038152906040528051906020012083604051602001620068aa9190620076d7565b6040516020818303038152906040528051906020012014905092915050565b015190565b6000826000018281548110620068e857620068e8620070b3565b9060005260206000200154905092915050565b6000818152600183016020526040812054620069445750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915562003950565b50600062003950565b610e9680620077db83390190565b6001600160a01b038116811462000ebe57600080fd5b6000602082840312156200698457600080fd5b813562006204816200695b565b60008083601f840112620069a457600080fd5b5081356001600160401b03811115620069bc57600080fd5b6020830191508360208285010111156200628e57600080fd5b60008060208385031215620069e957600080fd5b82356001600160401b0381111562006a0057600080fd5b62006a0e8582860162006991565b90969095509350505050565b6000806040838503121562006a2e57600080fd5b823562006a3b816200695b565b946020939093013593505050565b8035801515811462006a5a57600080fd5b919050565b6000806000806080858703121562006a7657600080fd5b843562006a83816200695b565b9350602085013562006a95816200695b565b92506040850135915062006aac6060860162006a49565b905092959194509250565b6001600160401b038116811462000ebe57600080fd5b60006020828403121562006ae057600080fd5b8135620062048162006ab7565b6000806040838503121562006b0157600080fd5b50508035926020909101359150565b600081518084526020808501945080840160005b8381101562006b4b5781516001600160a01b03168752958201959082019060010162006b24565b509495945050505050565b60005b8381101562006b7357818101518382015260200162006b59565b50506000910152565b6000815180845262006b9681602086016020860162006b56565b601f01601f19169290920160200192915050565b60808152600062006bbf608083018762006b10565b82810360208481019190915286518083528782019282019060005b8181101562006bf85784518352938301939183019160010162006bda565b5050848103604086015286518082528282019350600581901b8201830183890160005b8381101562006c4d57601f1985840301875262006c3a83835162006b7c565b9686019692509085019060010162006c1b565b5050809550505050505082606083015295945050505050565b6000608082840312156200374557600080fd5b600080600080600080600087890360e081121562006c9657600080fd5b883562006ca3816200695b565b975060208901356001600160401b038082111562006cc057600080fd5b62006cce8c838d0162006991565b909950975060408b013591508082111562006ce857600080fd5b62006cf68c838d0162006991565b90975095508591506060605f198401121562006d1157600080fd5b60608b01945060c08b013592508083111562006d2c57600080fd5b505062006d3c8a828b0162006c66565b91505092959891949750929550565b6000806040838503121562006d5f57600080fd5b823562006d6c816200695b565b915062006d7c6020840162006a49565b90509250929050565b60208152600082516080602084015262006da360a084018262006b7c565b90506020840151601f198085840301604086015262006dc3838362006b7c565b9250604086015191508085840301606086015262006de2838362006b7c565b925060608601519150808584030160808601525062006e02828262006b7c565b95945050505050565b6000806000806040858703121562006e2257600080fd5b84356001600160401b038082111562006e3a57600080fd5b62006e488883890162006991565b9096509450602087013591508082111562006e6257600080fd5b5062006e718782880162006991565b95989497509550505050565b60008060006040848603121562006e9357600080fd5b83356001600160401b038082111562006eab57600080fd5b818601915086601f83011262006ec057600080fd5b81358181111562006ed057600080fd5b8760208260051b850101111562006ee657600080fd5b6020928301955093505084013562006efe816200695b565b809150509250925092565b6001600160a01b0386811682528516602082015260a06040820181905260009062006f379083018662006b7c565b931515606083015250608001529392505050565b60006020828403121562006f5e57600080fd5b81356001600160401b0381111562006f7557600080fd5b620067838482850162006c66565b600181811c9082168062006f9857607f821691505b6020821081036200374557634e487b7160e01b600052602260045260246000fd5b8183823760009101908152919050565b634e487b7160e01b600052601160045260246000fd5b60008262006ffd57634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111562003950576200395062006fc9565b6000602082840312156200702b57600080fd5b5051919050565b8381526020810183905260608101600383106200705f57634e487b7160e01b600052602160045260246000fd5b826040830152949350505050565b8181038181111562003950576200395062006fc9565b808202811582820484141762003950576200395062006fc9565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b604081526000620070de604083018562006b10565b905060018060a01b03831660208301529392505050565b6001600160401b0382811682821603908082111562007118576200711862006fc9565b5092915050565b60006001820162007134576200713462006fc9565b5060010190565b6000808335601e198436030181126200715357600080fd5b8301803591506001600160401b038211156200716e57600080fd5b6020019150368190038213156200628e57600080fd5b601f8211156200638557600081815260208120601f850160051c81016020861015620071ad5750805b601f850160051c820191505b818110156200649a57828155600101620071b9565b6001600160401b03831115620071e857620071e86200709d565b6200720083620071f9835462006f83565b8362007184565b6000601f8411600181146200723757600085156200721e5750838201355b600019600387901b1c1916600186901b17835562007294565b600083815260209020601f19861690835b828110156200726a578685013582556020948501946001909201910162007248565b5086821015620072885760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b620072a782836200713b565b6001600160401b03811115620072c157620072c16200709d565b620072d981620072d2855462006f83565b8562007184565b6000601f821160018114620073105760008315620072f75750838201355b600019600385901b1c1916600184901b1785556200736d565b600085815260209020601f19841690835b8281101562007343578685013582556020948501946001909201910162007321565b5084821015620073615760001960f88660031b161c19848701351681555b505060018360011b0185555b505050506200738060208301836200713b565b62007390818360018601620071ce565b5050620073a160408301836200713b565b620073b1818360028601620071ce565b5050620073c260608301836200713b565b620073d2818360038601620071ce565b50505050565b8135620073e58162006ab7565b6001600160401b03811690508154816001600160401b031982161783556020840135620074128162006ab7565b6fffffffffffffffff0000000000000000604091821b166fffffffffffffffffffffffffffffffff19831684178117855590850135620074528162006ab7565b6001600160c01b0319929092169092179190911760809190911b67ffffffffffffffff60801b1617905550565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b602081526000620067836020830184866200747f565b604051601f8201601f191681016001600160401b0381118282101715620074e957620074e96200709d565b604052919050565b60006001600160401b038211156200750d576200750d6200709d565b5060051b60200190565b600060208083850312156200752b57600080fd5b82516001600160401b038111156200754257600080fd5b8301601f810185136200755457600080fd5b80516200756b6200756582620074f1565b620074be565b81815260059190911b820183019083810190878311156200758b57600080fd5b928401925b82841015620075b6578351620075a6816200695b565b8252928401929084019062007590565b979650505050505050565b60006020808385031215620075d557600080fd5b82516001600160401b0380821115620075ed57600080fd5b8185019150601f86818401126200760357600080fd5b8251620076146200756582620074f1565b81815260059190911b840185019085810190898311156200763457600080fd5b8686015b83811015620076c957805186811115620076525760008081fd5b8701603f81018c13620076655760008081fd5b888101516040888211156200767e576200767e6200709d565b62007691828901601f19168c01620074be565b8281528e82848601011115620076a75760008081fd5b620076b8838d830184870162006b56565b865250505091870191870162007638565b509998505050505050505050565b60008251620076eb81846020870162006b56565b9190910192915050565b6040815260006200770b6040830186886200747f565b8281036020840152620075b68185876200747f565b6bffffffffffffffffffffffff198360601b1681526000600383106200775657634e487b7160e01b600052602160045260246000fd5b5060f89190911b6014820152601501919050565b82848237909101908152602001919050565b6000865162007790818460208b0162006b56565b82018587823760009086019081528385823760009301928352509095945050505050565b6001600160a01b0383168152604060208201819052600090620067839083018462006b7c56fe608060405260405162000e9638038062000e96833981016040819052620000269162000497565b828162000036828260006200004d565b50620000449050826200008a565b505050620005ca565b6200005883620000e5565b600082511180620000665750805b1562000085576200008383836200012760201b620001691760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f620000b562000156565b604080516001600160a01b03928316815291841660208301520160405180910390a1620000e2816200018f565b50565b620000f08162000244565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606200014f838360405180606001604052806027815260200162000e6f60279139620002f8565b9392505050565b60006200018060008051602062000e4f83398151915260001b6200037760201b620001951760201c565b546001600160a01b0316919050565b6001600160a01b038116620001fa5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b806200022360008051602062000e4f83398151915260001b6200037760201b620001951760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6200025a816200037a60201b620001981760201c565b620002be5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401620001f1565b80620002237f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b6200037760201b620001951760201c565b6060600080856001600160a01b03168560405162000317919062000577565b600060405180830381855af49150503d806000811462000354576040519150601f19603f3d011682016040523d82523d6000602084013e62000359565b606091505b5090925090506200036d8683838762000389565b9695505050505050565b90565b6001600160a01b03163b151590565b60608315620003fd578251600003620003f5576001600160a01b0385163b620003f55760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401620001f1565b508162000409565b62000409838362000411565b949350505050565b815115620004225781518083602001fd5b8060405162461bcd60e51b8152600401620001f1919062000595565b80516001600160a01b03811681146200045657600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200048e57818101518382015260200162000474565b50506000910152565b600080600060608486031215620004ad57600080fd5b620004b8846200043e565b9250620004c8602085016200043e565b60408501519092506001600160401b0380821115620004e657600080fd5b818601915086601f830112620004fb57600080fd5b8151818111156200051057620005106200045b565b604051601f8201601f19908116603f011681019083821181831017156200053b576200053b6200045b565b816040528281528960208487010111156200055557600080fd5b6200056883602083016020880162000471565b80955050505050509250925092565b600082516200058b81846020870162000471565b9190910192915050565b6020815260008251806020840152620005b681604085016020870162000471565b601f01601f19169190910160400192915050565b61087580620005da6000396000f3fe60806040523661001357610011610017565b005b6100115b61001f6101a7565b6001600160a01b0316330361015f5760606001600160e01b0319600035166364d3180d60e11b810161005a576100536101da565b9150610157565b63587086bd60e11b6001600160e01b031982160161007a57610053610231565b63070d7c6960e41b6001600160e01b031982160161009a57610053610277565b621eb96f60e61b6001600160e01b03198216016100b9576100536102a8565b63a39f25e560e01b6001600160e01b03198216016100d9576100536102e8565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101676102fc565b565b606061018e83836040518060600160405280602781526020016108426027913961030c565b9392505050565b90565b6001600160a01b03163b151590565b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101e4610384565b60006101f33660048184610695565b81019061020091906106db565b905061021d8160405180602001604052806000815250600061038f565b505060408051602081019091526000815290565b60606000806102433660048184610695565b810190610250919061070c565b915091506102608282600161038f565b604051806020016040528060008152509250505090565b6060610281610384565b60006102903660048184610695565b81019061029d91906106db565b905061021d816103bb565b60606102b2610384565b60006102bc6101a7565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102f2610384565b60006102bc610412565b610167610307610412565b610421565b6060600080856001600160a01b03168560405161032991906107f2565b600060405180830381855af49150503d8060008114610364576040519150601f19603f3d011682016040523d82523d6000602084013e610369565b606091505b509150915061037a86838387610445565b9695505050505050565b341561016757600080fd5b610398836104c6565b6000825111806103a55750805b156103b6576103b48383610169565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103e46101a7565b604080516001600160a01b03928316815291841660208301520160405180910390a161040f81610506565b50565b600061041c6105af565b905090565b3660008037600080366000845af43d6000803e808015610440573d6000f35b3d6000fd5b606083156104b45782516000036104ad576001600160a01b0385163b6104ad5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014e565b50816104be565b6104be83836105d7565b949350505050565b6104cf81610601565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b03811661056b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014e565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101cb565b8151156105e75781518083602001fd5b8060405162461bcd60e51b815260040161014e919061080e565b6001600160a01b0381163b61066e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014e565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61058e565b600080858511156106a557600080fd5b838611156106b257600080fd5b5050820193919092039150565b80356001600160a01b03811681146106d657600080fd5b919050565b6000602082840312156106ed57600080fd5b61018e826106bf565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561071f57600080fd5b610728836106bf565b9150602083013567ffffffffffffffff8082111561074557600080fd5b818501915085601f83011261075957600080fd5b81358181111561076b5761076b6106f6565b604051601f8201601f19908116603f01168101908382118183101715610793576107936106f6565b816040528281528860208487010111156107ac57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60005b838110156107e95781810151838201526020016107d1565b50506000910152565b600082516108048184602087016107ce565b9190910192915050565b602081526000825180602084015261082d8160408501602087016107ce565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000ab53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c656400000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000a164736f6c6343000811000a", + }, + { + ContractAddr: common.HexToAddress(StakeCreditContract), + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/cfc0bd1127186a917ddc38fd38d22903034d3f0b", + Code: "6080604052600436106101855760003560e01c80635e607d76116100d1578063a5d059ca1161008a578063c2cde2b211610064578063c2cde2b2146104af578063d241c1ea146104cf578063dd62ed3e14610516578063f399e22e1461053657600080fd5b8063a5d059ca1461044f578063a9059cbb1461046f578063aad3ec961461048f57600080fd5b80635e607d761461038f578063647df759146103a457806370a08231146103c457806391faf0b4146103fa57806395d89b411461041a578063a457c2d71461042f57600080fd5b8063313ce5671161013e5780634056852d116101185780634056852d1461031c57806345bc4d101461033c5780634d99dd161461035c5780635c19a95c1461037c57600080fd5b8063313ce567146102a857806339509351146102c45780633a5381b5146102e457600080fd5b806306fdde03146101d45780630913db47146101ff578063095ea7b31461022d57806315d1f8981461025d57806318160ddd1461027357806323b872dd1461028857600080fd5b366101cf5733612002146101b557604051630f22c43960e41b815261200260048201526024015b60405180910390fd5b34609860008282546101c791906119f0565b925050819055005b600080fd5b3480156101e057600080fd5b506101e9610549565b6040516101f69190611a03565b60405180910390f35b34801561020b57600080fd5b5061021f61021a366004611a69565b6105db565b6040519081526020016101f6565b34801561023957600080fd5b5061024d610248366004611a8d565b610603565b60405190151581526020016101f6565b34801561026957600080fd5b5061021f60985481565b34801561027f57600080fd5b5060675461021f565b34801561029457600080fd5b5061024d6102a3366004611ab9565b61061b565b3480156102b457600080fd5b50604051601281526020016101f6565b3480156102d057600080fd5b5061024d6102df366004611a8d565b61063f565b3480156102f057600080fd5b50609754610304906001600160a01b031681565b6040516001600160a01b0390911681526020016101f6565b34801561032857600080fd5b5061021f610337366004611a69565b610661565b34801561034857600080fd5b5061021f610357366004611afa565b610728565b34801561036857600080fd5b5061021f610377366004611a8d565b61081b565b61021f61038a366004611a69565b610a02565b6103a261039d366004611b13565b610a55565b005b3480156103b057600080fd5b5061021f6103bf366004611afa565b610b1d565b3480156103d057600080fd5b5061021f6103df366004611a69565b6001600160a01b031660009081526065602052604090205490565b34801561040657600080fd5b5061021f610415366004611afa565b610b5c565b34801561042657600080fd5b506101e9610b97565b34801561043b57600080fd5b5061024d61044a366004611a8d565b610ba6565b34801561045b57600080fd5b5061021f61046a366004611a8d565b610c21565b34801561047b57600080fd5b5061024d61048a366004611a8d565b610d22565b34801561049b57600080fd5b5061021f6104aa366004611a8d565b610d30565b3480156104bb57600080fd5b5061021f6104ca366004611a69565b610ff2565b3480156104db57600080fd5b506104ef6104ea366004611a8d565b611010565b604080518351815260208085015190820152928101519083015260608201526080016101f6565b34801561052257600080fd5b5061021f610531366004611b3d565b6110c0565b6103a2610544366004611b76565b6110eb565b60606068805461055890611bfb565b80601f016020809104026020016040519081016040528092919081815260200182805461058490611bfb565b80156105d15780601f106105a6576101008083540402835291602001916105d1565b820191906000526020600020905b8154815290600101906020018083116105b457829003601f168201915b5050505050905090565b6001600160a01b0381166000908152606560205260408120546105fd90610b5c565b92915050565b600033610611818585611295565b5060019392505050565b6000336106298582856112ae565b610634858585611322565b506001949350505050565b60003361061181858561065283836110c0565b61065c91906119f0565b611295565b6001600160a01b0381166000908152609a6020526040812054600f81810b600160801b909204900b0380820361069a5750600092915050565b6000805b82811015610720576001600160a01b0385166000908152609a602052604081206106c79061133b565b6000818152609960209081526040918290208251606081018452815481526001820154928101839052600290910154928101929092529192509061070b90856119f0565b935050508061071990611c2f565b905061069e565b509392505050565b6000336120021461075057604051630f22c43960e41b815261200260048201526024016101ac565b6097546001600160a01b03166000908152606560205260408120549061077584610b1d565b90508181116107845780610786565b815b6097549091506000906107a2906001600160a01b03168361138f565b6040519091506000906110029083908381818185875af1925050503d80600081146107e9576040519150601f19603f3d011682016040523d82523d6000602084013e6107ee565b606091505b5050905080610810576040516312171d8360e31b815260040160405180910390fd5b50925050505b919050565b6000336120021461084357604051630f22c43960e41b815261200260048201526024016101ac565b8160000361086457604051631f2a200560e01b815260040160405180910390fd5b6001600160a01b03831660009081526065602052604090205482111561089d57604051631e9acf1760e31b815260040160405180910390fd5b6108a7838361138f565b905060006120026001600160a01b031663fc0c5ff16040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061090f9190611c48565b61091990426119f0565b6040805160608101825285815260208101859052908101829052909150600085610942816113c4565b60405160609290921b6bffffffffffffffffffffffff19166020830152603482015260540160408051601f19818403018152918152815160209283012060008181526099845282812086518155868501516001820155868401516002909101556001600160a01b038a168152609a90935291209091506109f990828154600160801b90819004600f0b6000818152600180860160205260409091209390935583546001600160801b03908116939091011602179055565b50505092915050565b60003361200214610a2a57604051630f22c43960e41b815261200260048201526024016101ac565b34600003610a4b57604051631f2a200560e01b815260040160405180910390fd5b6105fd82346113ec565b3361200214610a7b57604051630f22c43960e41b815261200260048201526024016101ac565b346000612710610a9567ffffffffffffffff851684611c61565b610a9f9190611c78565b90506000610aad8284611c9a565b90508060986000828254610ac191906119f0565b9091555050609754610adc906001600160a01b0316836113ec565b5060408051828152602081018490527ffb0e1482d62102ab9594f69d4c6d693749e3e2bf1c21af272f5456b2d5a4f6b591015b60405180910390a150505050565b6000609854600003610b42576040516307b76ce760e51b815260040160405180910390fd5b609854606754610b529084611c61565b6105fd9190611c78565b6000610b6760675490565b600003610b8757604051632fe8dae960e01b815260040160405180910390fd5b606754609854610b529084611c61565b60606069805461055890611bfb565b60003381610bb482866110c0565b905083811015610c145760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016101ac565b6106348286868403611295565b60003361200214610c4957604051630f22c43960e41b815261200260048201526024016101ac565b81600003610c6a57604051631f2a200560e01b815260040160405180910390fd5b6001600160a01b038316600090815260656020526040902054821115610ca357604051631e9acf1760e31b815260040160405180910390fd5b610cad838361138f565b6040519091506000906120029083908381818185875af1925050503d8060008114610cf4576040519150601f19603f3d011682016040523d82523d6000602084013e610cf9565b606091505b5050905080610d1b576040516312171d8360e31b815260040160405180910390fd5b5092915050565b600033610611818585611322565b60003361200214610d5857604051630f22c43960e41b815261200260048201526024016101ac565b610d60611415565b6001600160a01b0383166000908152609a6020526040902054600f81810b600160801b909204900b03600003610da95760405163ad41893760e01b815260040160405180910390fd5b811580610ddd57506001600160a01b0383166000908152609a6020526040902054600f81810b600160801b909204900b0382115b610de75781610e11565b6001600160a01b0383166000908152609a6020526040902054600f81810b600160801b909204900b035b915060005b8215610ee6576001600160a01b0384166000908152609a60205260408120610e3d9061133b565b60008181526099602090815260409182902082516060810184528154815260018201549281019290925260020154918101829052919250421015610e82575050610ee6565b6001600160a01b0386166000908152609a60205260409020610ea39061146e565b50600082815260996020908152604082208281556001810183905560020191909155810151610ed290846119f0565b9250610edd85611cad565b94505050610e16565b80600003610f07576040516303cd8e0960e21b815260040160405180910390fd5b60006120026001600160a01b031663e8f67c3b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f6d9190611c48565b90506000856001600160a01b03168284604051600060405180830381858888f193505050503d8060008114610fbe576040519150601f19603f3d011682016040523d82523d6000602084013e610fc3565b606091505b5050905080610fe5576040516312171d8360e31b815260040160405180910390fd5b50506001805590506105fd565b6001600160a01b0381166000908152609b60205260408120546105fd565b61103460405180606001604052806000815260200160008152602001600081525090565b6001600160a01b0383166000908152609a60205260408120819061105890856114ed565b60008181526099602090815260408083206001600160a01b038a168452609a9092529091205491925090600f81810b600160801b909204900b036040805160608101825283548152600184015460208201526002909301549083015290969095509350505050565b6001600160a01b03918216600090815260666020908152604080832093909416825291909152205490565b600054610100900460ff161580801561110b5750600054600160ff909116105b806111255750303b158015611125575060005460ff166001145b6111885760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016101ac565b6000805460ff1916600117905580156111ab576000805461ff0019166101001790555b33612002146111d157604051630f22c43960e41b815261200260048201526024016101ac565b600083836040516020016111e6929190611cc4565b60405160208183030381529060405290506000848460405160200161120c929190611cf4565b6040516020818303038152906040529050611227828261155e565b609780546001600160a01b0319166001600160a01b03881617905561124b346115a3565b5050801561128f576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602001610b0f565b50505050565b604051632028747160e01b815260040160405180910390fd5b60006112ba84846110c0565b9050600019811461128f57818110156113155760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016101ac565b61128f8484848403611295565b604051638cd22d1960e01b815260040160405180910390fd5b60006113568254600f81810b600160801b909204900b131590565b1561137457604051631ed9509560e11b815260040160405180910390fd5b508054600f0b60009081526001909101602052604090205490565b600061139a82610b5c565b90506113a68383611713565b80609860008282546113b89190611c9a565b90915550909392505050565b6001600160a01b0381166000908152609b602052604090208054600181018255905b50919050565b60006113f782610b1d565b90506114038382611847565b81609860008282546113b891906119f0565b6002600154036114675760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016101ac565b6002600155565b60006114898254600f81810b600160801b909204900b131590565b156114a757604051631ed9509560e11b815260040160405180910390fd5b508054600f0b6000818152600180840160205260408220805492905583546fffffffffffffffffffffffffffffffff191692016001600160801b03169190911790915590565b6000806115106114fc84611908565b855461150b9190600f0b611d12565b611976565b8454909150600160801b9004600f90810b9082900b1261154357604051632d0483c560e21b815260040160405180910390fd5b600f0b60009081526001939093016020525050604090205490565b600054610100900460ff166115855760405162461bcd60e51b81526004016101ac90611d3a565b60686115918382611de9565b50606961159e8282611de9565b505050565b600054610100900460ff166115ca5760405162461bcd60e51b81526004016101ac90611d3a565b60006120026001600160a01b031663ae0f336d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561160c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116309190611c48565b9050808211158061164a57506097546001600160a01b0316155b80611656575060675415155b1561167457604051632163e6b960e21b815260040160405180910390fd5b60006120026001600160a01b0316634e6fd6c46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116da9190611ea9565b90506116e68183611847565b60006116f28385611c9a565b60975490915061170b906001600160a01b031682611847565b505050609855565b6001600160a01b0382166117735760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016101ac565b6001600160a01b038216600090815260656020526040902054818110156117e75760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016101ac565b6001600160a01b03831660008181526065602090815260408083208686039055606780548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b6001600160a01b03821661189d5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016101ac565b80606760008282546118af91906119f0565b90915550506001600160a01b0382166000818152606560209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b60006001600160ff1b038211156119725760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b60648201526084016101ac565b5090565b80600f81900b81146108165760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20316044820152663238206269747360c81b60648201526084016101ac565b634e487b7160e01b600052601160045260246000fd5b808201808211156105fd576105fd6119da565b600060208083528351808285015260005b81811015611a3057858101830151858201604001528201611a14565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611a6657600080fd5b50565b600060208284031215611a7b57600080fd5b8135611a8681611a51565b9392505050565b60008060408385031215611aa057600080fd5b8235611aab81611a51565b946020939093013593505050565b600080600060608486031215611ace57600080fd5b8335611ad981611a51565b92506020840135611ae981611a51565b929592945050506040919091013590565b600060208284031215611b0c57600080fd5b5035919050565b600060208284031215611b2557600080fd5b813567ffffffffffffffff81168114611a8657600080fd5b60008060408385031215611b5057600080fd5b8235611b5b81611a51565b91506020830135611b6b81611a51565b809150509250929050565b600080600060408486031215611b8b57600080fd5b8335611b9681611a51565b9250602084013567ffffffffffffffff80821115611bb357600080fd5b818601915086601f830112611bc757600080fd5b813581811115611bd657600080fd5b876020828501011115611be857600080fd5b6020830194508093505050509250925092565b600181811c90821680611c0f57607f821691505b6020821081036113e657634e487b7160e01b600052602260045260246000fd5b600060018201611c4157611c416119da565b5060010190565b600060208284031215611c5a57600080fd5b5051919050565b80820281158282048414176105fd576105fd6119da565b600082611c9557634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156105fd576105fd6119da565b600081611cbc57611cbc6119da565b506000190190565b65029ba30b5b2960d51b815281836006830137660810dc99591a5d60ca1b91016006810191909152600d01919050565b611cdd60f21b81528183600283013760009101600201908152919050565b8082018281126000831280158216821582161715611d3257611d326119da565b505092915050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b634e487b7160e01b600052604160045260246000fd5b601f82111561159e57600081815260208120601f850160051c81016020861015611dc25750805b601f850160051c820191505b81811015611de157828155600101611dce565b505050505050565b815167ffffffffffffffff811115611e0357611e03611d85565b611e1781611e118454611bfb565b84611d9b565b602080601f831160018114611e4c5760008415611e345750858301515b600019600386901b1c1916600185901b178555611de1565b600085815260208120601f198616915b82811015611e7b57888601518255948401946001909101908401611e5c565b5085821015611e995787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060208284031215611ebb57600080fd5b8151611a8681611a5156fea164736f6c6343000811000a", + }, + { + ContractAddr: common.HexToAddress(GovernorContract), + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/cfc0bd1127186a917ddc38fd38d22903034d3f0b", + Code: "6080604052600436106103905760003560e01c80637d5e81e2116101dc578063c59057e411610102578063e23a9a52116100a0578063f23a6e611161006f578063f23a6e6114610cd6578063f8ce560a14610d02578063fc0c546a14610d22578063fe0d94c114610d4357600080fd5b8063e23a9a5214610bab578063ea0217cf14610c76578063eb9019d414610c96578063ece40cc114610cb657600080fd5b8063da95691a116100dc578063da95691a14610af1578063dd4e2ba514610b11578063ddf0b00914610b57578063deaaa7cc14610b7757600080fd5b8063c59057e414610a92578063d07f91e914610ab2578063d33219b414610ad257600080fd5b8063a890c9101161017a578063bc197c8111610149578063bc197c8114610a18578063c01f9e3714610a44578063c170ec0b14610a64578063c28bc2fa14610a7f57600080fd5b8063a890c910146109a3578063ab58fb8e146109c3578063ac431751146109e3578063b58131b014610a0357600080fd5b806391ddadf4116101b657806391ddadf41461092e57806397c3d3341461095a5780639a802a6d1461096e578063a7713a701461098e57600080fd5b80637d5e81e2146108d15780638129fc1c146108f157806384b0196e1461090657600080fd5b806332b8113e116102c15780634bf5d7e91161025f5780635f398a141161022e5780635f398a141461085157806360c4247f1461087157806370b0f660146108915780637b3c71d3146108b157600080fd5b80634bf5d7e9146107c1578063533ddd14146107d657806354fd4d5014610807578063567813881461083157600080fd5b80633e4f49e61161029b5780633e4f49e61461070957806340e58ee5146107365780634385963214610756578063452115d6146107a157600080fd5b806332b8113e146106aa5780633932abb1146106d35780633bccf4fd146106e957600080fd5b8063150b7a021161032e5780632656227d116103085780632656227d146105fc5780632d63f6931461060f5780632fe3e26114610646578063328dd9821461067a57600080fd5b8063150b7a0214610583578063160cbed7146105c757806324bc1a64146105e757600080fd5b8063034201811161036a57806303420181146104cb57806306f3f9e6146104eb57806306fdde031461050b578063143489d01461052d57600080fd5b8063013cf08b1461040057806301ffc9a71461047b57806302a251a3146104ab57600080fd5b366103fb573061039e610d56565b6001600160a01b0316146103f95760405162461bcd60e51b815260206004820152601f60248201527f476f7665726e6f723a206d7573742073656e6420746f206578656375746f720060448201526064015b60405180910390fd5b005b600080fd5b34801561040c57600080fd5b5061042061041b3660046156a8565b610d70565b604080519a8b526001600160a01b0390991660208b0152978901969096526060880194909452608087019290925260a086015260c085015260e084015215156101008301521515610120820152610140015b60405180910390f35b34801561048757600080fd5b5061049b6104963660046156c1565b610e2b565b6040519015158152602001610472565b3480156104b757600080fd5b50610162545b604051908152602001610472565b3480156104d757600080fd5b506104bd6104e6366004615807565b610e3c565b3480156104f757600080fd5b506103f96105063660046156a8565b610f34565b34801561051757600080fd5b50610520610fbf565b60405161047291906158fd565b34801561053957600080fd5b5061056b6105483660046156a8565b60009081526101306020526040902054600160401b90046001600160a01b031690565b6040516001600160a01b039091168152602001610472565b34801561058f57600080fd5b506105ae61059e366004615925565b630a85bd0160e11b949350505050565b6040516001600160e01b03199091168152602001610472565b3480156105d357600080fd5b506104bd6105e2366004615afc565b611052565b3480156105f357600080fd5b506104bd611257565b6104bd61060a366004615afc565b61127d565b34801561061b57600080fd5b506104bd61062a3660046156a8565b600090815261013060205260409020546001600160401b031690565b34801561065257600080fd5b506104bd7fb3b3f3b703cd84ce352197dcff232b1b5d3cfb2025ce47cf04742d0651f1af8881565b34801561068657600080fd5b5061069a6106953660046156a8565b611370565b6040516104729493929190615c54565b3480156106b657600080fd5b5061025c546040516001600160401b039091168152602001610472565b3480156106df57600080fd5b50610161546104bd565b3480156106f557600080fd5b506104bd610704366004615ca1565b611602565b34801561071557600080fd5b506107296107243660046156a8565b611678565b6040516104729190615d05565b34801561074257600080fd5b506103f96107513660046156a8565b611683565b34801561076257600080fd5b5061049b610771366004615d2d565b6000828152610193602090815260408083206001600160a01b038516845260080190915290205460ff1692915050565b3480156107ad57600080fd5b506104bd6107bc366004615afc565b6116ae565b3480156107cd57600080fd5b506105206116c5565b3480156107e257600080fd5b5061049b6107f1366004615d5d565b61028e6020526000908152604090205460ff1681565b34801561081357600080fd5b506040805180820190915260018152603160f81b6020820152610520565b34801561083d57600080fd5b506104bd61084c366004615d7a565b611772565b34801561085d57600080fd5b506104bd61086c366004615da6565b61179b565b34801561087d57600080fd5b506104bd61088c3660046156a8565b6117e5565b34801561089d57600080fd5b506103f96108ac3660046156a8565b61189a565b3480156108bd57600080fd5b506104bd6108cc366004615e29565b611922565b3480156108dd57600080fd5b506104bd6108ec366004615e82565b611974565b3480156108fd57600080fd5b506103f9611a04565b34801561091257600080fd5b5061091b611e41565b6040516104729796959493929190615f22565b34801561093a57600080fd5b50610943611edf565b60405165ffffffffffff9091168152602001610472565b34801561096657600080fd5b5060646104bd565b34801561097a57600080fd5b506104bd610989366004615f84565b611f53565b34801561099a57600080fd5b506104bd611f6a565b3480156109af57600080fd5b506103f96109be366004615d5d565b611f97565b3480156109cf57600080fd5b506104bd6109de3660046156a8565b61201f565b3480156109ef57600080fd5b506103f96109fe366004615fdc565b6120bb565b348015610a0f57600080fd5b506104bd61269a565b348015610a2457600080fd5b506105ae610a3336600461603b565b63bc197c8160e01b95945050505050565b348015610a5057600080fd5b506104bd610a5f3660046156a8565b6126a6565b348015610a7057600080fd5b5061028f5461049b9060ff1681565b6103f9610a8d3660046160ce565b6126b1565b348015610a9e57600080fd5b506104bd610aad366004615afc565b6127c1565b348015610abe57600080fd5b506103f9610acd366004616111565b6127fb565b348015610ade57600080fd5b506101f8546001600160a01b031661056b565b348015610afd57600080fd5b506104bd610b0c36600461613a565b612883565b348015610b1d57600080fd5b5060408051808201909152601a81527f737570706f72743d627261766f2671756f72756d3d627261766f0000000000006020820152610520565b348015610b6357600080fd5b506103f9610b723660046156a8565b61290a565b348015610b8357600080fd5b506104bd7f150214d74d59b7d1e90c73fc22ef3d991dd0a76b046543d4d80ab92d2a50328f81565b348015610bb757600080fd5b50610c46610bc6366004615d2d565b6040805160608101825260008082526020820181905291810191909152506000918252610193602090815260408084206001600160a01b0393909316845260089092018152918190208151606081018352905460ff8082161515835261010082041693820193909352620100009092046001600160601b03169082015290565b6040805182511515815260208084015160ff1690820152918101516001600160601b031690820152606001610472565b348015610c8257600080fd5b506103f9610c913660046156a8565b61292d565b348015610ca257600080fd5b506104bd610cb13660046161db565b6129b5565b348015610cc257600080fd5b506103f9610cd13660046156a8565b6129d6565b348015610ce257600080fd5b506105ae610cf1366004616207565b63f23a6e6160e01b95945050505050565b348015610d0e57600080fd5b506104bd610d1d3660046156a8565b612a5e565b348015610d2e57600080fd5b506101c55461056b906001600160a01b031681565b6103f9610d513660046156a8565b612aed565b6000610d6b6101f8546001600160a01b031690565b905090565b8060008080808080808080610d848a61201f565b60008c815261013060205260409020549098506001600160401b03169650610dab8b6126a6565b60008c81526101936020526040812080546005820154600683015460078401546001600160a01b039093169e50949a509850929650919450610dec8d611678565b90506002816007811115610e0257610e02615cef565b1493506007816007811115610e1957610e19615cef565b14925050509193959799509193959799565b6000610e3682612b10565b92915050565b600080610ee0610ed87fb3b3f3b703cd84ce352197dcff232b1b5d3cfb2025ce47cf04742d0651f1af888c8c8c8c604051610e7892919061626f565b60405180910390208b80519060200120604051602001610ebd959493929190948552602085019390935260ff9190911660408401526060830152608082015260a00190565b60405160208183030381529060405280519060200120612b35565b868686612b62565b9050610f268a828b8b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508d9250612b80915050565b9a9950505050505050505050565b610f3c610d56565b6001600160a01b0316336001600160a01b031614610f6c5760405162461bcd60e51b81526004016103f09061627f565b30610f75610d56565b6001600160a01b031614610fb35760008036604051610f9592919061626f565b604051809103902090505b80610fac610131612b8f565b03610fa057505b610fbc81612c0e565b50565b606061012f8054610fcf906162b6565b80601f0160208091040260200160405190810160405280929190818152602001828054610ffb906162b6565b80156110485780601f1061101d57610100808354040283529160200191611048565b820191906000526020600020905b81548152906001019060200180831161102b57829003601f168201915b5050505050905090565b600080611061868686866127c1565b9050600461106e82611678565b600781111561107f5761107f615cef565b1461109c5760405162461bcd60e51b81526004016103f0906162f0565b6101f8546040805163793d064960e11b815290516000926001600160a01b03169163f27a0c929160048083019260209291908290030181865afa1580156110e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061110b9190616331565b6101f85460405163b1c5f42760e01b81529192506001600160a01b03169063b1c5f42790611146908a908a908a906000908b9060040161634a565b602060405180830381865afa158015611163573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111879190616331565b60008381526101f96020526040808220929092556101f85491516308f2a0bb60e41b81526001600160a01b0390921691638f2a0bb0916111d4918b918b918b91908b908990600401616398565b600060405180830381600087803b1580156111ee57600080fd5b505af1158015611202573d6000803e3d6000fd5b505050507f9a2e42fd6722813d69113e7d0079d3d940171428df7373df9c7f7617cfda28928282426112349190616406565b604080519283526020830191909152015b60405180910390a15095945050505050565b6000610d6b6001611266611edf565b6112709190616419565b65ffffffffffff16612a5e565b60008061128c868686866127c1565b9050600061129982611678565b905060048160078111156112af576112af615cef565b14806112cc575060058160078111156112ca576112ca615cef565b145b6112e85760405162461bcd60e51b81526004016103f0906162f0565b6000828152610130602052604090819020600201805460ff19166001179055517f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f906113379084815260200190565b60405180910390a161134c8288888888612d7f565b6113598288888888612e20565b6113668288888888612ea7565b5095945050505050565b60608060608060006101936000878152602001908152602001600020905080600101816002018260030183600401838054806020026020016040519081016040528092919081815260200182805480156113f357602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116113d5575b505050505093508280548060200260200160405190810160405280929190818152602001828054801561144557602002820191906000526020600020905b815481526020019060010190808311611431575b5050505050925081805480602002602001604051908101604052809291908181526020016000905b8282101561151957838290600052602060002001805461148c906162b6565b80601f01602080910402602001604051908101604052809291908181526020018280546114b8906162b6565b80156115055780601f106114da57610100808354040283529160200191611505565b820191906000526020600020905b8154815290600101906020018083116114e857829003601f168201915b50505050508152602001906001019061146d565b50505050915080805480602002602001604051908101604052809291908181526020016000905b828210156115ec57838290600052602060002001805461155f906162b6565b80601f016020809104026020016040519081016040528092919081815260200182805461158b906162b6565b80156115d85780601f106115ad576101008083540402835291602001916115d8565b820191906000526020600020905b8154815290600101906020018083116115bb57829003601f168201915b505050505081526020019060010190611540565b5050505090509450945094509450509193509193565b604080517f150214d74d59b7d1e90c73fc22ef3d991dd0a76b046543d4d80ab92d2a50328f602082015290810186905260ff85166060820152600090819061165090610ed890608001610ebd565b905061166d87828860405180602001604052806000815250612ee2565b979650505050505050565b6000610e3682612f05565b60008060008061169285613052565b93509350935093506116a6848484846116ae565b505050505050565b60006116bc858585856132e3565b95945050505050565b6101c55460408051634bf5d7e960e01b815290516060926001600160a01b031691634bf5d7e99160048083019260009291908290030181865afa92505050801561173157506040513d6000823e601f3d908101601f1916820160405261172e919081019061643f565b60015b61176d575060408051808201909152601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c74000000602082015290565b919050565b60008033905061179384828560405180602001604052806000815250612ee2565b949350505050565b60008033905061166d87828888888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a9250612b80915050565b61022b546000908082036117fe57505061022a54919050565b600061022b61180e6001846164ac565b8154811061181e5761181e6164bf565b60009182526020918290206040805180820190915291015463ffffffff8116808352600160201b9091046001600160e01b0316928201929092529150841061187457602001516001600160e01b03169392505050565b611889611880856133ae565b61022b90613417565b6001600160e01b0316949350505050565b6118a2610d56565b6001600160a01b0316336001600160a01b0316146118d25760405162461bcd60e51b81526004016103f09061627f565b306118db610d56565b6001600160a01b03161461191957600080366040516118fb92919061626f565b604051809103902090505b80611912610131612b8f565b0361190657505b610fbc816134ca565b60008033905061196a86828787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612ee292505050565b9695505050505050565b600061197e61350d565b60005b85518110156119f75761028e60008783815181106119a1576119a16164bf565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff166119e557604051630b094f2760e31b815260040160405180910390fd5b806119ef816164d5565b915050611981565b506116bc858585856135b8565b600054610100900460ff1615808015611a245750600054600160ff909116105b80611a3e5750303b158015611a3e575060005460ff166001145b611aa15760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016103f0565b6000805460ff191660011790558015611ac4576000805461ff0019166101001790555b334114611ae45760405163022d8c9560e31b815260040160405180910390fd5b3a15611b03576040516383f1b1d360e01b815260040160405180910390fd5b611b2f6040518060400160405280600b81526020016a2129a1a3b7bb32b93737b960a91b815250613620565b611b49620151806212750068056bc75e2d63100000613677565b611b516136ae565b611b5c6120056136d5565b611b67612006613705565b611b71600a613735565b611b7d62015180613765565b61028e6020527ff0f52cefb444f33092ac77280e2ff9c808a9c078a96d3cd7513137548137ed8f8054600160ff1991821681179092557fb2c9e894c6f17bfc84a6708e0ea85c2729271d7cae0a8d875cd1080fb415e7a080548216831790557fd8ceb939a734f5a4e0a6fede9e31504e16ac856b555e8bac20ad743b9ff2976a80548216831790557f2a7b967fc66f4b36023165170b23a76f880d3dbbf244a856aeee9e670cef725980548216831790557fdb1a1113bac2e4f0e6f8c2f2bc4f6dbecf1fccb033d5df1b55b5c5ad6c20ac7980548216831790557f8b1888b379fb3b749668d86c5bf8aaada8e2276c6ced3a4efcc1e877827ce0b380548216831790557feeeea8d485053a64711f2c5802d2cc63251dd394956c140a2e30db7cef242ec580548216831790557f4cdb1a6c4b56f62f27f7202d75e865c2405f138cb32ec45019c0f2ca8f91e47280548216831790557f49d6c403a3197b15e024f109c83eb730d7af1a8b49fc6f820e09bad2597c14c980548216831790557f7a41b38ceb33f296c1ff3db5ffcc6542acb091d5fb27586f3c551dd2ebac063880548216831790557f701fe333ee20fad5d5a6a9930dddd3fb815af1d976d5250e394e39d6e4123e3880548216831790557fee7ba9842df249188adc0fc380980c3099f608b602924e083dd61e8e70845b4a80548216831790557f29973aeebf3c17f2c3a9cf7ace17f2798aa544e1ea7427938024cde6df46bac180548216831790557f74c0d6e29c82d6628d5f083f86fc15f0c6acef97321252a1eee0bd893dae276580548216831790556120066000527f1bdfc01e60036e5be56ae85d8394ddf727e1021b3d74de5b554fedea2de43767805490911690911790558015610fbc576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b6000606080600080600060606065546000801b148015611e615750606654155b611ea55760405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b60448201526064016103f0565b611ead613795565b611eb56137a4565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b6101c554604080516324776b7d60e21b815290516000926001600160a01b0316916391ddadf49160048083019260209291908290030181865afa925050508015611f46575060408051601f3d908101601f19168201909252611f43918101906164ee565b60015b61176d57610d6b436137b3565b6000611f6084848461381a565b90505b9392505050565b61022b5460009015611f8f57611f8161022b613891565b6001600160e01b0316905090565b5061022a5490565b611f9f610d56565b6001600160a01b0316336001600160a01b031614611fcf5760405162461bcd60e51b81526004016103f09061627f565b30611fd8610d56565b6001600160a01b0316146120165760008036604051611ff892919061626f565b604051809103902090505b8061200f610131612b8f565b0361200357505b610fbc816138c1565b6101f85460008281526101f9602052604080822054905163d45c443560e01b81526004810191909152909182916001600160a01b039091169063d45c443590602401602060405180830381865afa15801561207e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120a29190616331565b9050806001146120b25780611f63565b60009392505050565b33611007146120e157604051630f22c43960e41b815261100760048201526024016103f0565b6121476040518060400160405280600b81526020016a766f74696e6744656c617960a81b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505061392c9050565b156121f057602081146121755783838383604051630a5a604160e01b81526004016103f0949392919061653f565b604080516020601f84018190048102820181019092528281526000916121b69185858083850183828082843760009201919091525092939250506139859050565b9050806000036121e15784848484604051630a5a604160e01b81526004016103f0949392919061653f565b6121ea816134ca565b50612657565b6122576040518060400160405280600c81526020016b1d9bdd1a5b99d4195c9a5bd960a21b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505061392c9050565b156122fa57602081146122855783838383604051630a5a604160e01b81526004016103f0949392919061653f565b604080516020601f84018190048102820181019092528281526000916122c69185858083850183828082843760009201919091525092939250506139859050565b9050806000036122f15784848484604051630a5a604160e01b81526004016103f0949392919061653f565b6121ea8161398a565b612366604051806040016040528060118152602001701c1c9bdc1bdcd85b151a1c995cda1bdb19607a1b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505061392c9050565b1561240957602081146123945783838383604051630a5a604160e01b81526004016103f0949392919061653f565b604080516020601f84018190048102820181019092528281526000916123d59185858083850183828082843760009201919091525092939250506139859050565b9050806000036124005784848484604051630a5a604160e01b81526004016103f0949392919061653f565b6121ea81613a2d565b6124736040518060400160405280600f81526020016e38bab7b93ab6a73ab6b2b930ba37b960891b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505061392c9050565b1561251657602081146124a15783838383604051630a5a604160e01b81526004016103f0949392919061653f565b604080516020601f84018190048102820181019092528281526000916124e29185858083850183828082843760009201919091525092939250506139859050565b90508060000361250d5784848484604051630a5a604160e01b81526004016103f0949392919061653f565b6121ea81612c0e565b612585604051806040016040528060148152602001736d696e506572696f64416674657251756f72756d60601b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505061392c9050565b1561263657600881146125b35783838383604051630a5a604160e01b81526004016103f0949392919061653f565b60006125f9600884848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506139859050565b9050806001600160401b031660000361262d5784848484604051630a5a604160e01b81526004016103f0949392919061653f565b6121ea81613a70565b838383836040516325ee20d560e21b81526004016103f0949392919061653f565b7ff1ce9b2cbf50eeb05769a29e2543fd350cab46894a7dd9978a12d534bb20e6338484848460405161268c949392919061653f565b60405180910390a150505050565b6000610d6b6101635490565b6000610e3682613adc565b6126b9610d56565b6001600160a01b0316336001600160a01b0316146126e95760405162461bcd60e51b81526004016103f09061627f565b306126f2610d56565b6001600160a01b031614612730576000803660405161271292919061626f565b604051809103902090505b80612729610131612b8f565b0361271d57505b600080856001600160a01b031685858560405161274e92919061626f565b60006040518083038185875af1925050503d806000811461278b576040519150601f19603f3d011682016040523d82523d6000602084013e612790565b606091505b50915091506127b8828260405180606001604052806028815260200161692760289139613b1a565b50505050505050565b6000848484846040516020016127da9493929190616566565b60408051601f19818403018152919052805160209091012095945050505050565b612803610d56565b6001600160a01b0316336001600160a01b0316146128335760405162461bcd60e51b81526004016103f09061627f565b3061283c610d56565b6001600160a01b03161461287a576000803660405161285c92919061626f565b604051809103902090505b80612873610131612b8f565b0361286757505b610fbc81613a70565b600082518451146128e75760405162461bcd60e51b815260206004820152602860248201527f476f7665726e6f72427261766f3a20696e76616c6964207369676e61747572656044820152670e640d8cadccee8d60c31b60648201526084016103f0565b6128f5338787878787613b33565b61196a86866129048787613bf1565b85611974565b60008060008061291985613052565b93509350935093506116a684848484611052565b612935610d56565b6001600160a01b0316336001600160a01b0316146129655760405162461bcd60e51b81526004016103f09061627f565b3061296e610d56565b6001600160a01b0316146129ac576000803660405161298e92919061626f565b604051809103902090505b806129a5610131612b8f565b0361299957505b610fbc8161398a565b6000611f6383836129d160408051602081019091526000815290565b61381a565b6129de610d56565b6001600160a01b0316336001600160a01b031614612a0e5760405162461bcd60e51b81526004016103f09061627f565b30612a17610d56565b6001600160a01b031614612a555760008036604051612a3792919061626f565b604051809103902090505b80612a4e610131612b8f565b03612a4257505b610fbc81613a2d565b60006064612a6b836117e5565b6101c554604051632394e7a360e21b8152600481018690526001600160a01b0390911690638e539e8c90602401602060405180830381865afa158015612ab5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ad99190616331565b612ae391906165b1565b610e3691906165de565b600080600080612afc85613052565b93509350935093506116a68484848461127d565b60006001600160e01b03198216636e665ced60e01b1480610e365750610e3682613d23565b6000610e36612b42613dbf565b8360405161190160f01b8152600281019290925260228201526042902090565b6000806000612b7387878787613dc9565b9150915061136681613e8d565b600061196a8686868686613fd7565b6000612baa8254600f81810b600160801b909204900b131590565b15612bc857604051631ed9509560e11b815260040160405180910390fd5b508054600f0b6000818152600180840160205260408220805492905583546fffffffffffffffffffffffffffffffff191692016001600160801b03169190911790915590565b6064811115612c915760405162461bcd60e51b815260206004820152604360248201527f476f7665726e6f72566f74657351756f72756d4672616374696f6e3a2071756f60448201527f72756d4e756d657261746f72206f7665722071756f72756d44656e6f6d696e616064820152623a37b960e91b608482015260a4016103f0565b6000612c9b611f6a565b90508015801590612cad575061022b54155b15612d1257604080518082019091526000815261022b9060208101612cd1846140da565b6001600160e01b039081169091528254600181018455600093845260209384902083519490930151909116600160201b0263ffffffff909316929092179101555b612d40612d2d612d20611edf565b65ffffffffffff166133ae565b612d36846140da565b61022b9190614143565b505060408051828152602081018490527f0553476bf02ef2726e8ce5ced78d63e26e602e4a2257b1f559418e24b4633997910160405180910390a15050565b30612d88610d56565b6001600160a01b031614612e195760005b84518110156116a657306001600160a01b0316858281518110612dbe57612dbe6164bf565b60200260200101516001600160a01b031603612e0957612e09838281518110612de957612de96164bf565b60200260200101518051906020012061013161415e90919063ffffffff16565b612e12816164d5565b9050612d99565b5050505050565b60005b8451811015612e995761028e6000868381518110612e4357612e436164bf565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16612e8757604051630b094f2760e31b815260040160405180910390fd5b80612e91816164d5565b915050612e23565b50612e19858585858561419a565b30612eb0610d56565b6001600160a01b031614612e195761013154600f81810b600160801b909204900b1315612e1957600061013155612e19565b60006116bc85858585612f0060408051602081019091526000815290565b612b80565b600080612f118361420f565b90506004816007811115612f2757612f27615cef565b14612f325792915050565b60008381526101f9602052604090205480612f4e575092915050565b6101f854604051632ab0f52960e01b8152600481018390526001600160a01b0390911690632ab0f52990602401602060405180830381865afa158015612f98573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fbc9190616600565b15612fcb575060079392505050565b6101f854604051632c258a9f60e11b8152600481018390526001600160a01b039091169063584b153e90602401602060405180830381865afa158015613015573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130399190616600565b15613048575060059392505050565b5060029392505050565b606080606060008061019360008781526020019081526020016000209050806001018160020161322483600301805480602002602001604051908101604052809291908181526020016000905b8282101561314b5783829060005260206000200180546130be906162b6565b80601f01602080910402602001604051908101604052809291908181526020018280546130ea906162b6565b80156131375780601f1061310c57610100808354040283529160200191613137565b820191906000526020600020905b81548152906001019060200180831161311a57829003601f168201915b50505050508152602001906001019061309f565b50505060048601805460408051602080840282018101909252828152935060009084015b8282101561321b57838290600052602060002001805461318e906162b6565b80601f01602080910402602001604051908101604052809291908181526020018280546131ba906162b6565b80156132075780601f106131dc57610100808354040283529160200191613207565b820191906000526020600020905b8154815290600101906020018083116131ea57829003601f168201915b50505050508152602001906001019061316f565b50505050613bf1565b600984015483546040805160208084028201810190925282815291869183018282801561327a57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161325c575b50505050509350828054806020026020016040519081016040528092919081815260200182805480156132cc57602002820191906000526020600020905b8154815260200190600101908083116132b8575b505050505092509450945094509450509193509193565b6000806132f2868686866127c1565b600081815261019360205260409020549091506001600160a01b031633811480613346575061331f61269a565b61334482600161332d611edf565b6133379190616419565b65ffffffffffff166129b5565b105b6133a25760405162461bcd60e51b815260206004820152602760248201527f476f7665726e6f72427261766f3a2070726f706f7365722061626f76652074686044820152661c995cda1bdb1960ca1b60648201526084016103f0565b61166d87878787614347565b600063ffffffff8211156134135760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201526532206269747360d01b60648201526084016103f0565b5090565b81546000908181600581111561347457600061343284614355565b61343c90856164ac565b60008881526020902090915081015463ffffffff908116908716101561346457809150613472565b61346f816001616406565b92505b505b60006134828787858561443d565b905080156134bd576134a7876134996001846164ac565b600091825260209091200190565b54600160201b90046001600160e01b031661166d565b6000979650505050505050565b6101615460408051918252602082018390527fc565b045403dc03c2eea82b81a0465edad9e2e7fc4d97e11421c209da93d7a93910160405180910390a161016155565b61028f5460ff166135b6576a084595161401484a0000006120056001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613564573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135889190616331565b10156135a7576040516311b6707f60e01b815260040160405180910390fd5b61028f805460ff191660011790555b565b600061361433868686516001600160401b038111156135d9576135d9615744565b60405190808252806020026020018201604052801561360c57816020015b60608152602001906001900390816135f75790505b508787613b33565b6116bc85858585614493565b600054610100900460ff166136475760405162461bcd60e51b81526004016103f090616622565b61366e816136696040805180820190915260018152603160f81b602082015290565b614872565b610fbc816148c1565b600054610100900460ff1661369e5760405162461bcd60e51b81526004016103f090616622565b6136a98383836148f9565b505050565b600054610100900460ff166135b65760405162461bcd60e51b81526004016103f090616622565b600054610100900460ff166136fc5760405162461bcd60e51b81526004016103f090616622565b610fbc8161493b565b600054610100900460ff1661372c5760405162461bcd60e51b81526004016103f090616622565b610fbc81614985565b600054610100900460ff1661375c5760405162461bcd60e51b81526004016103f090616622565b610fbc816149ac565b600054610100900460ff1661378c5760405162461bcd60e51b81526004016103f090616622565b610fbc816149d3565b606060678054610fcf906162b6565b606060688054610fcf906162b6565b600065ffffffffffff8211156134135760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203460448201526538206269747360d01b60648201526084016103f0565b6101c554604051630748d63560e31b81526001600160a01b038581166004830152602482018590526000921690633a46b1a890604401602060405180830381865afa15801561386d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f609190616331565b805460009080156120b2576138ab836134996001846164ac565b54600160201b90046001600160e01b0316611f63565b6101f854604080516001600160a01b03928316815291831660208301527f08f74ea46ef7894f65eabfb5e6e695de773a000b47c529ab559178069b226401910160405180910390a16101f880546001600160a01b0319166001600160a01b0392909216919091179055565b60008160405160200161393f919061666d565b6040516020818303038152906040528051906020012083604051602001613966919061666d565b6040516020818303038152906040528051906020012014905092915050565b015190565b600081116139ea5760405162461bcd60e51b815260206004820152602760248201527f476f7665726e6f7253657474696e67733a20766f74696e6720706572696f6420604482015266746f6f206c6f7760c81b60648201526084016103f0565b6101625460408051918252602082018390527f7e3f7f0708a84de9203036abaa450dccc85ad5ff52f78c170f3edb55cf5e8828910160405180910390a161016255565b6101635460408051918252602082018390527fccb45da8d5717e6c4544694297c4ba5cf151d455c9bb0ed4fc7a38411bc05461910160405180910390a161016355565b61025c54604080516001600160401b03928316815291831660208301527f7ca4ac117ed3cdce75c1161d8207c440389b1a15d69d096831664657c07dafc2910160405180910390a161025c805467ffffffffffffffff19166001600160401b0392909216919091179055565b60008181526101306020526040812060010154610e36906001600160401b0316600084815261025d60205260409020546001600160401b03166149fa565b60608315613b29575081611f63565b611f638383614a10565b805160208201206000613b518787613b4b8888613bf1565b856127c1565b600081815261019360205260409020600981015491925090613be65780546001600160a01b0319166001600160a01b038a161781558751613b9b90600183019060208b01906154df565b508651613bb190600283019060208a0190615540565b508551613bc7906003830190602089019061557b565b508451613bdd90600483019060208801906155cd565b50600981018390555b505050505050505050565b6060600082516001600160401b03811115613c0e57613c0e615744565b604051908082528060200260200182016040528015613c4157816020015b6060815260200190600190039081613c2c5790505b50905060005b8151811015613d1b57848181518110613c6257613c626164bf565b602002602001015151600014613cd257848181518110613c8457613c846164bf565b602002602001015180519060200120848281518110613ca557613ca56164bf565b6020026020010151604051602001613cbe929190616689565b604051602081830303815290604052613ced565b838181518110613ce457613ce46164bf565b60200260200101515b828281518110613cff57613cff6164bf565b602002602001018190525080613d14906164d5565b9050613c47565b509392505050565b600063288ace0360e11b6318df743f60e31b63bf26d89760e01b6379dd796f60e01b6001600160e01b03198616821480613d6957506001600160e01b0319868116908216145b80613d8057506001600160e01b0319868116908516145b80613d9b57506001600160e01b03198616630271189760e51b145b8061196a57506301ffc9a760e01b6001600160e01b03198716149695505050505050565b6000610d6b614a3a565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115613e005750600090506003613e84565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015613e54573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116613e7d57600060019250925050613e84565b9150600090505b94509492505050565b6000816004811115613ea157613ea1615cef565b03613ea95750565b6001816004811115613ebd57613ebd615cef565b03613f0a5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016103f0565b6002816004811115613f1e57613f1e615cef565b03613f6b5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016103f0565b6003816004811115613f7f57613f7f615cef565b03610fbc5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016103f0565b600080613fe78787878787614aae565b600088815261025d60205260409020549091506001600160401b0316158015614014575061401487614c04565b1561196a57600061402e61025c546001600160401b031690565b614036611edf565b65ffffffffffff1661404891906166ba565b9050614053886126a6565b816001600160401b031611156140a2576040516001600160401b038216815288907f541f725fb9f7c98a30cc9c0ff32fbb14358cd7159c847a3aa20a2bdc442ba5119060200160405180910390a25b600088815261025d60205260409020805467ffffffffffffffff19166001600160401b03929092169190911790559695505050505050565b60006001600160e01b038211156134135760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20326044820152663234206269747360c81b60648201526084016103f0565b600080614151858585614c44565b915091505b935093915050565b8154600160801b90819004600f0b6000818152600180860160205260409091209390935583546001600160801b03908116939091011602179055565b6101f85460405163e38335e560e01b81526001600160a01b039091169063e38335e59034906141d690889088908890600090899060040161634a565b6000604051808303818588803b1580156141ef57600080fd5b505af1158015614203573d6000803e3d6000fd5b50505050505050505050565b600081815261013060205260408120600281015460ff16156142345750600792915050565b6002810154610100900460ff161561424f5750600292915050565b600083815261013060205260408120546001600160401b0316908190036142b85760405162461bcd60e51b815260206004820152601d60248201527f476f7665726e6f723a20756e6b6e6f776e2070726f706f73616c20696400000060448201526064016103f0565b60006142c2611edf565b65ffffffffffff1690508082106142de57506000949350505050565b60006142e9866126a6565b90508181106142fe5750600195945050505050565b61430786614c04565b801561432a57506000868152610193602052604090206006810154600590910154115b1561433b5750600495945050505050565b50600395945050505050565b60006116bc85858585614de3565b60008160000361436757506000919050565b6000600161437484614e99565b901c6001901b9050600181848161438d5761438d6165c8565b048201901c905060018184816143a5576143a56165c8565b048201901c905060018184816143bd576143bd6165c8565b048201901c905060018184816143d5576143d56165c8565b048201901c905060018184816143ed576143ed6165c8565b048201901c90506001818481614405576144056165c8565b048201901c9050600181848161441d5761441d6165c8565b048201901c9050611f6381828581614437576144376165c8565b04614f2d565b60005b81831015613d1b5760006144548484614f3c565b60008781526020902090915063ffffffff86169082015463ffffffff16111561447f5780925061448d565b61448a816001616406565b93505b50614440565b6000336144a08184614f57565b6144ec5760405162461bcd60e51b815260206004820152601d60248201527f476f7665726e6f723a2070726f706f736572207265737472696374656400000060448201526064016103f0565b60006144f6611edf565b65ffffffffffff16905061450861269a565b61451783610cb16001856164ac565b101561457f5760405162461bcd60e51b815260206004820152603160248201527f476f7665726e6f723a2070726f706f73657220766f7465732062656c6f7720706044820152701c9bdc1bdcd85b081d1a1c995cda1bdb19607a1b60648201526084016103f0565b600061459488888888805190602001206127c1565b905086518851146145b75760405162461bcd60e51b81526004016103f0906166da565b85518851146145d85760405162461bcd60e51b81526004016103f0906166da565b60008851116146295760405162461bcd60e51b815260206004820152601860248201527f476f7665726e6f723a20656d7074792070726f706f73616c000000000000000060448201526064016103f0565b600081815261013060205260409020546001600160401b0316156146995760405162461bcd60e51b815260206004820152602160248201527f476f7665726e6f723a2070726f706f73616c20616c72656164792065786973746044820152607360f81b60648201526084016103f0565b60006146a56101615490565b6146af9084616406565b905060006146bd6101625490565b6146c79083616406565b90506040518060e001604052806146dd84615048565b6001600160401b031681526001600160a01b03871660208201526000604082015260600161470a83615048565b6001600160401b03908116825260006020808401829052604080850183905260609485018390528883526101308252918290208551815492870151878501519186166001600160e01b031990941693909317600160401b6001600160a01b039094168402176001600160e01b0316600160e01b60e09290921c91909102178155938501516080860151908416921c0217600183015560a08301516002909201805460c09094015161ffff1990941692151561ff00191692909217610100931515939093029290921790558a517f7d84a6263ae0d98d3329bd7b46bb4e8d6f98cd35a7adb45c274c8b7fd5ebd5e091859188918e918e9181111561480f5761480f615744565b60405190808252806020026020018201604052801561484257816020015b606081526020019060019003908161482d5790505b508d88888f60405161485c9998979695949392919061671b565b60405180910390a1509098975050505050505050565b600054610100900460ff166148995760405162461bcd60e51b81526004016103f090616622565b60676148a583826167f9565b5060686148b282826167f9565b50506000606581905560665550565b600054610100900460ff166148e85760405162461bcd60e51b81526004016103f090616622565b61012f6148f582826167f9565b5050565b600054610100900460ff166149205760405162461bcd60e51b81526004016103f090616622565b614929836134ca565b6149328261398a565b6136a981613a2d565b600054610100900460ff166149625760405162461bcd60e51b81526004016103f090616622565b6101c580546001600160a01b0319166001600160a01b0392909216919091179055565b600054610100900460ff166120165760405162461bcd60e51b81526004016103f090616622565b600054610100900460ff16610fb35760405162461bcd60e51b81526004016103f090616622565b600054610100900460ff1661287a5760405162461bcd60e51b81526004016103f090616622565b6000818311614a095781611f63565b5090919050565b815115614a205781518083602001fd5b8060405162461bcd60e51b81526004016103f091906158fd565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f614a656150b0565b614a6d615109565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b6000858152610130602052604081206001614ac888611678565b6007811115614ad957614ad9615cef565b14614b325760405162461bcd60e51b815260206004820152602360248201527f476f7665726e6f723a20766f7465206e6f742063757272656e746c792061637460448201526269766560e81b60648201526084016103f0565b8054600090614b4c9088906001600160401b03168661381a565b9050614b5b888888848861513a565b8351600003614bb057866001600160a01b03167fb8e138887d0aa13bab447e82de9d5c1777041ecd21ca36ba824ff1e6c07ddda489888489604051614ba394939291906168b8565b60405180910390a261166d565b866001600160a01b03167fe2babfbac5889a709b63bb7f598b324e08bc5a4fb9ec647fb3cbc9ec07eb87128988848989604051614bf19594939291906168e0565b60405180910390a2979650505050505050565b6000818152610193602052604081206005810154614c3b610d1d85600090815261013060205260409020546001600160401b031690565b11159392505050565b825460009081908015614d8a576000614c62876134996001856164ac565b60408051808201909152905463ffffffff808216808452600160201b9092046001600160e01b031660208401529192509087161015614ce35760405162461bcd60e51b815260206004820152601b60248201527f436865636b706f696e743a2064656372656173696e67206b657973000000000060448201526064016103f0565b805163ffffffff808816911603614d2b5784614d04886134996001866164ac565b80546001600160e01b0392909216600160201b0263ffffffff909216919091179055614d7a565b6040805180820190915263ffffffff80881682526001600160e01b0380881660208085019182528b54600181018d5560008d81529190912094519151909216600160201b029216919091179101555b6020015192508391506141569050565b50506040805180820190915263ffffffff80851682526001600160e01b0380851660208085019182528854600181018a5560008a815291822095519251909316600160201b029190931617920191909155905081614156565b600080614df2868686866152d8565b60008181526101f96020526040902054909150156116bc576101f85460008281526101f960205260409081902054905163c4d252f560e01b81526001600160a01b039092169163c4d252f591614e4e9160040190815260200190565b600060405180830381600087803b158015614e6857600080fd5b505af1158015614e7c573d6000803e3d6000fd5b50505060008281526101f960205260408120555095945050505050565b600080608083901c15614eae57608092831c92015b604083901c15614ec057604092831c92015b602083901c15614ed257602092831c92015b601083901c15614ee457601092831c92015b600883901c15614ef657600892831c92015b600483901c15614f0857600492831c92015b600283901c15614f1a57600292831c92015b600183901c15610e365760010192915050565b6000818310614a095781611f63565b6000614f4b60028484186165de565b611f6390848416616406565b80516000906034811015614f6f576001915050610e36565b82810160131901516001600160a01b031981166b046e0e4dee0dee6cae47a60f60a31b14614fa257600192505050610e36565b600080614fb06028856164ac565b90505b8381101561502757600080614fe7888481518110614fd357614fd36164bf565b01602001516001600160f81b0319166153e5565b9150915081614fff5760019650505050505050610e36565b8060ff166004856001600160a01b0316901b179350505080615020906164d5565b9050614fb3565b50856001600160a01b0316816001600160a01b031614935050505092915050565b60006001600160401b038211156134135760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203660448201526534206269747360d01b60648201526084016103f0565b6000806150bb613795565b8051909150156150d2578051602090910120919050565b60655480156150e15792915050565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4709250505090565b6000806151146137a4565b80519091501561512b578051602090910120919050565b60665480156150e15792915050565b6000858152610193602090815260408083206001600160a01b038816845260088101909252909120805460ff16156151ca5760405162461bcd60e51b815260206004820152602d60248201527f476f7665726e6f72436f6d7061746962696c697479427261766f3a20766f746560448201526c08185b1c9958591e4818d85cdd609a1b60648201526084016103f0565b805460ff86166101000261ffff199091161760011781556151ea84615477565b81546001600160601b039190911662010000026dffffffffffffffffffffffff00001990911617815560ff851661523a578382600601600082825461522f9190616406565b909155506127b89050565b60001960ff86160161525a578382600501600082825461522f9190616406565b60011960ff86160161527a578382600701600082825461522f9190616406565b60405162461bcd60e51b815260206004820152602d60248201527f476f7665726e6f72436f6d7061746962696c697479427261766f3a20696e766160448201526c6c696420766f7465207479706560981b60648201526084016103f0565b6000806152e7868686866127c1565b905060006152f482611678565b9050600281600781111561530a5761530a615cef565b1415801561532a5750600681600781111561532757615327615cef565b14155b80156153485750600781600781111561534557615345615cef565b14155b6153945760405162461bcd60e51b815260206004820152601d60248201527f476f7665726e6f723a2070726f706f73616c206e6f742061637469766500000060448201526064016103f0565b6000828152610130602052604090819020600201805461ff001916610100179055517f789cf55be980739dad1d0699b93b58e806b51c9d96619bfa8fe0a28abaa7b30c906112459084815260200190565b60008060f883901c602f811180156154005750603a8160ff16105b1561541557600194602f199091019350915050565b8060ff16604010801561542b575060478160ff16105b15615440576001946036199091019350915050565b8060ff166060108015615456575060678160ff16105b1561546b576001946056199091019350915050565b50600093849350915050565b60006001600160601b038211156134135760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203960448201526536206269747360d01b60648201526084016103f0565b828054828255906000526020600020908101928215615534579160200282015b8281111561553457825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906154ff565b5061341392915061561f565b828054828255906000526020600020908101928215615534579160200282015b82811115615534578251825591602001919060010190615560565b8280548282559060005260206000209081019282156155c1579160200282015b828111156155c157825182906155b190826167f9565b509160200191906001019061559b565b50613413929150615634565b828054828255906000526020600020908101928215615613579160200282015b82811115615613578251829061560390826167f9565b50916020019190600101906155ed565b50613413929150615651565b5b808211156134135760008155600101615620565b80821115613413576000615648828261566e565b50600101615634565b80821115613413576000615665828261566e565b50600101615651565b50805461567a906162b6565b6000825580601f1061568a575050565b601f016020900490600052602060002090810190610fbc919061561f565b6000602082840312156156ba57600080fd5b5035919050565b6000602082840312156156d357600080fd5b81356001600160e01b031981168114611f6357600080fd5b803560ff8116811461176d57600080fd5b60008083601f84011261570e57600080fd5b5081356001600160401b0381111561572557600080fd5b60208301915083602082850101111561573d57600080fd5b9250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561578257615782615744565b604052919050565b60006001600160401b038211156157a3576157a3615744565b50601f01601f191660200190565b600082601f8301126157c257600080fd5b81356157d56157d08261578a565b61575a565b8181528460208386010111156157ea57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060008060008060e0898b03121561582357600080fd5b8835975061583360208a016156eb565b965060408901356001600160401b038082111561584f57600080fd5b61585b8c838d016156fc565b909850965060608b013591508082111561587457600080fd5b506158818b828c016157b1565b94505061589060808a016156eb565b925060a0890135915060c089013590509295985092959890939650565b60005b838110156158c85781810151838201526020016158b0565b50506000910152565b600081518084526158e98160208601602086016158ad565b601f01601f19169290920160200192915050565b602081526000611f6360208301846158d1565b6001600160a01b0381168114610fbc57600080fd5b6000806000806080858703121561593b57600080fd5b843561594681615910565b9350602085013561595681615910565b92506040850135915060608501356001600160401b0381111561597857600080fd5b615984878288016157b1565b91505092959194509250565b60006001600160401b038211156159a9576159a9615744565b5060051b60200190565b600082601f8301126159c457600080fd5b813560206159d46157d083615990565b82815260059290921b840181019181810190868411156159f357600080fd5b8286015b84811015615a17578035615a0a81615910565b83529183019183016159f7565b509695505050505050565b600082601f830112615a3357600080fd5b81356020615a436157d083615990565b82815260059290921b84018101918181019086841115615a6257600080fd5b8286015b84811015615a175780358352918301918301615a66565b600082601f830112615a8e57600080fd5b81356020615a9e6157d083615990565b82815260059290921b84018101918181019086841115615abd57600080fd5b8286015b84811015615a175780356001600160401b03811115615ae05760008081fd5b615aee8986838b01016157b1565b845250918301918301615ac1565b60008060008060808587031215615b1257600080fd5b84356001600160401b0380821115615b2957600080fd5b615b35888389016159b3565b95506020870135915080821115615b4b57600080fd5b615b5788838901615a22565b94506040870135915080821115615b6d57600080fd5b50615b7a87828801615a7d565b949793965093946060013593505050565b600081518084526020808501945080840160005b83811015615bc45781516001600160a01b031687529582019590820190600101615b9f565b509495945050505050565b600081518084526020808501945080840160005b83811015615bc457815187529582019590820190600101615be3565b600081518084526020808501808196508360051b8101915082860160005b85811015615c47578284038952615c358483516158d1565b98850198935090840190600101615c1d565b5091979650505050505050565b608081526000615c676080830187615b8b565b8281036020840152615c798187615bcf565b90508281036040840152615c8d8186615bff565b9050828103606084015261166d8185615bff565b600080600080600060a08688031215615cb957600080fd5b85359450615cc9602087016156eb565b9350615cd7604087016156eb565b94979396509394606081013594506080013592915050565b634e487b7160e01b600052602160045260246000fd5b6020810160088310615d2757634e487b7160e01b600052602160045260246000fd5b91905290565b60008060408385031215615d4057600080fd5b823591506020830135615d5281615910565b809150509250929050565b600060208284031215615d6f57600080fd5b8135611f6381615910565b60008060408385031215615d8d57600080fd5b82359150615d9d602084016156eb565b90509250929050565b600080600080600060808688031215615dbe57600080fd5b85359450615dce602087016156eb565b935060408601356001600160401b0380821115615dea57600080fd5b615df689838a016156fc565b90955093506060880135915080821115615e0f57600080fd5b50615e1c888289016157b1565b9150509295509295909350565b60008060008060608587031215615e3f57600080fd5b84359350615e4f602086016156eb565b925060408501356001600160401b03811115615e6a57600080fd5b615e76878288016156fc565b95989497509550505050565b60008060008060808587031215615e9857600080fd5b84356001600160401b0380821115615eaf57600080fd5b615ebb888389016159b3565b95506020870135915080821115615ed157600080fd5b615edd88838901615a22565b94506040870135915080821115615ef357600080fd5b615eff88838901615a7d565b93506060870135915080821115615f1557600080fd5b50615984878288016157b1565b60ff60f81b8816815260e060208201526000615f4160e08301896158d1565b8281036040840152615f5381896158d1565b606084018890526001600160a01b038716608085015260a0840186905283810360c08501529050610f268185615bcf565b600080600060608486031215615f9957600080fd5b8335615fa481615910565b92506020840135915060408401356001600160401b03811115615fc657600080fd5b615fd2868287016157b1565b9150509250925092565b60008060008060408587031215615ff257600080fd5b84356001600160401b038082111561600957600080fd5b616015888389016156fc565b9096509450602087013591508082111561602e57600080fd5b50615e76878288016156fc565b600080600080600060a0868803121561605357600080fd5b853561605e81615910565b9450602086013561606e81615910565b935060408601356001600160401b038082111561608a57600080fd5b61609689838a01615a22565b945060608801359150808211156160ac57600080fd5b6160b889838a01615a22565b93506080880135915080821115615e0f57600080fd5b600080600080606085870312156160e457600080fd5b84356160ef81615910565b93506020850135925060408501356001600160401b03811115615e6a57600080fd5b60006020828403121561612357600080fd5b81356001600160401b0381168114611f6357600080fd5b600080600080600060a0868803121561615257600080fd5b85356001600160401b038082111561616957600080fd5b61617589838a016159b3565b9650602088013591508082111561618b57600080fd5b61619789838a01615a22565b955060408801359150808211156161ad57600080fd5b6161b989838a01615a7d565b945060608801359150808211156161cf57600080fd5b6160b889838a01615a7d565b600080604083850312156161ee57600080fd5b82356161f981615910565b946020939093013593505050565b600080600080600060a0868803121561621f57600080fd5b853561622a81615910565b9450602086013561623a81615910565b9350604086013592506060860135915060808601356001600160401b0381111561626357600080fd5b615e1c888289016157b1565b8183823760009101908152919050565b60208082526018908201527f476f7665726e6f723a206f6e6c79476f7665726e616e63650000000000000000604082015260600190565b600181811c908216806162ca57607f821691505b6020821081036162ea57634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526021908201527f476f7665726e6f723a2070726f706f73616c206e6f74207375636365737366756040820152601b60fa1b606082015260800190565b60006020828403121561634357600080fd5b5051919050565b60a08152600061635d60a0830188615b8b565b828103602084015261636f8188615bcf565b905082810360408401526163838187615bff565b60608401959095525050608001529392505050565b60c0815260006163ab60c0830189615b8b565b82810360208401526163bd8189615bcf565b905082810360408401526163d18188615bff565b60608401969096525050608081019290925260a0909101529392505050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610e3657610e366163f0565b65ffffffffffff828116828216039080821115616438576164386163f0565b5092915050565b60006020828403121561645157600080fd5b81516001600160401b0381111561646757600080fd5b8201601f8101841361647857600080fd5b80516164866157d08261578a565b81815285602083850101111561649b57600080fd5b6116bc8260208301602086016158ad565b81810381811115610e3657610e366163f0565b634e487b7160e01b600052603260045260246000fd5b6000600182016164e7576164e76163f0565b5060010190565b60006020828403121561650057600080fd5b815165ffffffffffff81168114611f6357600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b604081526000616553604083018688616516565b828103602084015261166d818587616516565b6080815260006165796080830187615b8b565b828103602084015261658b8187615bcf565b9050828103604084015261659f8186615bff565b91505082606083015295945050505050565b8082028115828204841417610e3657610e366163f0565b634e487b7160e01b600052601260045260246000fd5b6000826165fb57634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561661257600080fd5b81518015158114611f6357600080fd5b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6000825161667f8184602087016158ad565b9190910192915050565b6001600160e01b03198316815281516000906166ac8160048501602087016158ad565b919091016004019392505050565b6001600160401b03818116838216019080821115616438576164386163f0565b60208082526021908201527f476f7665726e6f723a20696e76616c69642070726f706f73616c206c656e67746040820152600d60fb1b606082015260800190565b8981526001600160a01b0389166020820152610120604082018190526000906167468382018b615b8b565b9050828103606084015261675a818a615bcf565b9050828103608084015261676e8189615bff565b905082810360a08401526167828188615bff565b90508560c08401528460e08401528281036101008401526167a381856158d1565b9c9b505050505050505050505050565b601f8211156136a957600081815260208120601f850160051c810160208610156167da5750805b601f850160051c820191505b818110156116a6578281556001016167e6565b81516001600160401b0381111561681257616812615744565b6168268161682084546162b6565b846167b3565b602080601f83116001811461685b57600084156168435750858301515b600019600386901b1c1916600185901b1785556116a6565b600085815260208120601f198616915b8281101561688a5788860151825594840194600190910190840161686b565b50858210156168a85787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b84815260ff8416602082015282604082015260806060820152600061196a60808301846158d1565b85815260ff8516602082015283604082015260a06060820152600061690860a08301856158d1565b828103608084015261691a81856158d1565b9897505050505050505056fe476f7665726e6f723a2072656c617920726576657274656420776974686f7574206d657373616765a164736f6c6343000811000a", + }, + { + ContractAddr: common.HexToAddress(GovTokenContract), + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/cfc0bd1127186a917ddc38fd38d22903034d3f0b", + Code: "608060405234801561001057600080fd5b50600436106101f05760003560e01c806370a082311161010f5780639ab24eb0116100a2578063d505accf11610071578063d505accf1461047e578063dd62ed3e14610491578063e5ed5b1e146104a4578063f1127ed8146104b757600080fd5b80639ab24eb014610432578063a457c2d714610445578063a9059cbb14610458578063c3cda5201461046b57600080fd5b806384b0196e116100de57806384b0196e146103dd5780638e539e8c146103f857806391ddadf41461040b57806395d89b411461042a57600080fd5b806370a082311461038657806379cc6790146103af5780637ecebe00146103c25780638129fc1c146103d557600080fd5b806339509351116101875780634bf5d7e9116101565780634bf5d7e9146102ff578063587cde1e146103075780635c19a95c1461034b5780636fcfff451461035e57600080fd5b806339509351146102b35780633a46b1a8146102c657806342966c68146102d957806344840775146102ec57600080fd5b806323b872dd116101c357806323b872dd146102745780633041949b14610287578063313ce5671461029c5780633644e515146102ab57600080fd5b8063039c91fc146101f557806306fdde0314610234578063095ea7b31461024957806318160ddd1461026c575b600080fd5b610221610203366004612099565b61013060209081526000928352604080842090915290825290205481565b6040519081526020015b60405180910390f35b61023c6104f4565b60405161022b9190612112565b61025c610257366004612125565b610586565b604051901515815260200161022b565b603554610221565b61025c61028236600461214f565b6105a0565b61029a610295366004612099565b6105c4565b005b6040516012815260200161022b565b6102216105fd565b61025c6102c1366004612125565b61060c565b6102216102d4366004612125565b61062e565b61029a6102e736600461218b565b6106b3565b61029a6102fa3660046121a4565b6106c0565b61023c610739565b610333610315366004612228565b6001600160a01b03908116600090815260fe60205260409020541690565b6040516001600160a01b03909116815260200161022b565b61029a610359366004612228565b6107d1565b61037161036c366004612228565b6107db565b60405163ffffffff909116815260200161022b565b610221610394366004612228565b6001600160a01b031660009081526033602052604090205490565b61029a6103bd366004612125565b6107fd565b6102216103d0366004612228565b610812565b61029a610830565b6103e5610a10565b60405161022b9796959493929190612243565b61022161040636600461218b565b610aae565b610413610b16565b60405165ffffffffffff909116815260200161022b565b61023c610b21565b610221610440366004612228565b610b30565b61025c610453366004612125565b610bb2565b61025c610466366004612125565b610c2d565b61029a6104793660046122ea565b610c3b565b61029a61048c366004612342565b610d71565b61022161049f366004612099565b610ed5565b61029a6104b2366004612099565b610f00565b6104ca6104c53660046123ac565b610f30565b60408051825163ffffffff1681526020928301516001600160e01b0316928101929092520161022b565b606060368054610503906123ec565b80601f016020809104026020016040519081016040528092919081815260200182805461052f906123ec565b801561057c5780601f106105515761010080835404028352916020019161057c565b820191906000526020600020905b81548152906001019060200180831161055f57829003601f168201915b5050505050905090565b600033610594818585610fb4565b60019150505b92915050565b6000336105ae858285610fcd565b6105b9858585611047565b506001949350505050565b33612002146105ef57604051630f22c43960e41b815261200260048201526024015b60405180910390fd5b6105f98282611060565b5050565b6000610607611190565b905090565b60003361059481858561061f8383610ed5565b6106299190612436565b610fb4565b6000610638610b16565b65ffffffffffff16821061068a5760405162461bcd60e51b815260206004820152601960248201527804552433230566f7465733a20667574757265206c6f6f6b757603c1b60448201526064016105e6565b6001600160a01b038316600090815260ff602052604090206106ac908361119a565b9392505050565b6106bd3382611283565b50565b33612002146106e657604051630f22c43960e41b815261200260048201526024016105e6565b8160005b818110156107325761072285858381811061070757610707612449565b905060200201602081019061071c9190612228565b84611060565b61072b8161245f565b90506106ea565b5050505050565b606043610744610b16565b65ffffffffffff16146107995760405162461bcd60e51b815260206004820152601d60248201527f4552433230566f7465733a2062726f6b656e20636c6f636b206d6f646500000060448201526064016105e6565b5060408051808201909152601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c74000000602082015290565b6106bd338261128d565b6001600160a01b038116600090815260ff602052604081205461059a90611307565b610808823383610fcd565b6105f98282611283565b6001600160a01b038116600090815260cb602052604081205461059a565b600054610100900460ff16158080156108505750600054600160ff909116105b8061086a5750303b15801561086a575060005460ff166001145b6108cd5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016105e6565b6000805460ff1916600117905580156108f0576000805461ff0019166101001790555b3341146109105760405163022d8c9560e31b815260040160405180910390fd5b3a1561092f576040516383f1b1d360e01b815260040160405180910390fd5b610983604051806040016040528060148152602001732129a19023b7bb32b93730b731b2902a37b5b2b760611b8152506040518060400160405280600681526020016533b7bb21272160d11b815250611370565b61098b6113a1565b6109c0604051806040016040528060148152602001732129a19023b7bb32b93730b731b2902a37b5b2b760611b8152506113ca565b6109c86113a1565b80156106bd576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b6000606080600080600060606097546000801b148015610a305750609854155b610a745760405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b60448201526064016105e6565b610a7c611414565b610a84611423565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b6000610ab8610b16565b65ffffffffffff168210610b0a5760405162461bcd60e51b815260206004820152601960248201527804552433230566f7465733a20667574757265206c6f6f6b757603c1b60448201526064016105e6565b61059a6101008361119a565b600061060743611432565b606060378054610503906123ec565b6001600160a01b038116600090815260ff60205260408120548015610b9f576001600160a01b038316600090815260ff6020526040902080546000198301908110610b7d57610b7d612449565b60009182526020909120015464010000000090046001600160e01b0316610ba2565b60005b6001600160e01b03169392505050565b60003381610bc08286610ed5565b905083811015610c205760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016105e6565b6105b98286868403610fb4565b600033610594818585611047565b83421115610c8b5760405162461bcd60e51b815260206004820152601d60248201527f4552433230566f7465733a207369676e6174757265206578706972656400000060448201526064016105e6565b604080517fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60208201526001600160a01b038816918101919091526060810186905260808101859052600090610d0590610cfd9060a00160405160208183030381529060405280519060200120611499565b8585856114c6565b9050610d10816114ee565b8614610d5e5760405162461bcd60e51b815260206004820152601960248201527f4552433230566f7465733a20696e76616c6964206e6f6e63650000000000000060448201526064016105e6565b610d68818861128d565b50505050505050565b83421115610dc15760405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e6500000060448201526064016105e6565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9888888610df08c6114ee565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090506000610e4b82611499565b90506000610e5b828787876114c6565b9050896001600160a01b0316816001600160a01b031614610ebe5760405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e6174757265000060448201526064016105e6565b610ec98a8a8a610fb4565b50505050505050505050565b6001600160a01b03918216600090815260346020908152604080832093909416825291909152205490565b3361200214610f2657604051630f22c43960e41b815261200260048201526024016105e6565b6105f9828261128d565b60408051808201909152600080825260208201526001600160a01b038316600090815260ff60205260409020805463ffffffff8416908110610f7457610f74612449565b60009182526020918290206040805180820190915291015463ffffffff8116825264010000000090046001600160e01b0316918101919091529392505050565b604051632028747160e01b815260040160405180910390fd5b6000610fd98484610ed5565b9050600019811461104157818110156110345760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016105e6565b6110418484848403610fb4565b50505050565b604051638cd22d1960e01b815260040160405180910390fd5b604051630913db4760e01b81526001600160a01b03828116600483015260009190841690630913db4790602401602060405180830381865afa1580156110aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110ce919061248e565b6001600160a01b03808516600090815261013060209081526040808320938716835292905220549091508181101561114757600061110c82846124a7565b6001600160a01b0380871660009081526101306020908152604080832093891683529290522084905590506111418482611516565b50611041565b8181111561104157600061115b83836124a7565b6001600160a01b0380871660009081526101306020908152604080832093891683529290522084905590506107328482611283565b6000610607611520565b8154600090818160058111156111f45760006111b584611594565b6111bf90856124a7565b600088815260209020909150869082015463ffffffff1611156111e4578091506111f2565b6111ef816001612436565b92505b505b80821015611241576000611208838361167c565b600088815260209020909150869082015463ffffffff16111561122d5780915061123b565b611238816001612436565b92505b506111f4565b801561126d576000868152602090208101600019015464010000000090046001600160e01b0316611270565b60005b6001600160e01b03169695505050505050565b6105f98282611697565b6001600160a01b03828116600081815260fe6020818152604080842080546033845282862054949093528787166001600160a01b03198416811790915590519190951694919391928592917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a46110418284836116b0565b600063ffffffff82111561136c5760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201526532206269747360d01b60648201526084016105e6565b5090565b600054610100900460ff166113975760405162461bcd60e51b81526004016105e6906124ba565b6105f982826117ee565b600054610100900460ff166113c85760405162461bcd60e51b81526004016105e6906124ba565b565b600054610100900460ff166113f15760405162461bcd60e51b81526004016105e6906124ba565b6106bd81604051806040016040528060018152602001603160f81b81525061182e565b606060998054610503906123ec565b6060609a8054610503906123ec565b600065ffffffffffff82111561136c5760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203460448201526538206269747360d01b60648201526084016105e6565b600061059a6114a6611190565b8360405161190160f01b8152600281019290925260228201526042902090565b60008060006114d78787878761187d565b915091506114e481611941565b5095945050505050565b6001600160a01b038116600090815260cb602052604090208054600181018255905b50919050565b6105f98282611a8b565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f61154b611b16565b611553611b6f565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b6000816000036115a657506000919050565b600060016115b384611ba0565b901c6001901b905060018184816115cc576115cc612505565b048201901c905060018184816115e4576115e4612505565b048201901c905060018184816115fc576115fc612505565b048201901c9050600181848161161457611614612505565b048201901c9050600181848161162c5761162c612505565b048201901c9050600181848161164457611644612505565b048201901c9050600181848161165c5761165c612505565b048201901c90506106ac8182858161167657611676612505565b04611c34565b600061168b600284841861251b565b6106ac90848416612436565b6116a18282611c4a565b611041610100611d8583611d91565b816001600160a01b0316836001600160a01b0316141580156116d25750600081115b156117e9576001600160a01b03831615611760576001600160a01b038316600090815260ff60205260408120819061170d90611d8585611d91565b91509150846001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248383604051611755929190918252602082015260400190565b60405180910390a250505b6001600160a01b038216156117e9576001600160a01b038216600090815260ff60205260408120819061179690611f0685611d91565b91509150836001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72483836040516117de929190918252602082015260400190565b60405180910390a250505b505050565b600054610100900460ff166118155760405162461bcd60e51b81526004016105e6906124ba565b6036611821838261258b565b5060376117e9828261258b565b600054610100900460ff166118555760405162461bcd60e51b81526004016105e6906124ba565b6099611861838261258b565b50609a61186e828261258b565b50506000609781905560985550565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156118b45750600090506003611938565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611908573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661193157600060019250925050611938565b9150600090505b94509492505050565b60008160048111156119555761195561264b565b0361195d5750565b60018160048111156119715761197161264b565b036119be5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016105e6565b60028160048111156119d2576119d261264b565b03611a1f5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016105e6565b6003816004811115611a3357611a3361264b565b036106bd5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016105e6565b611a958282611f12565b6035546001600160e01b031015611b075760405162461bcd60e51b815260206004820152603060248201527f4552433230566f7465733a20746f74616c20737570706c79207269736b73206f60448201526f766572666c6f77696e6720766f74657360801b60648201526084016105e6565b611041610100611f0683611d91565b600080611b21611414565b805190915015611b38578051602090910120919050565b6097548015611b475792915050565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4709250505090565b600080611b7a611423565b805190915015611b91578051602090910120919050565b6098548015611b475792915050565b600080608083901c15611bb557608092831c92015b604083901c15611bc757604092831c92015b602083901c15611bd957602092831c92015b601083901c15611beb57601092831c92015b600883901c15611bfd57600892831c92015b600483901c15611c0f57600492831c92015b600283901c15611c2157600292831c92015b600183901c1561059a5760010192915050565b6000818310611c4357816106ac565b5090919050565b6001600160a01b038216611caa5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016105e6565b6001600160a01b03821660009081526033602052604090205481811015611d1e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016105e6565b6001600160a01b03831660008181526033602090815260408083208686039055603580548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36117e983600084611fd7565b60006106ac82846124a7565b82546000908190818115611dde5760008781526020902082016000190160408051808201909152905463ffffffff8116825264010000000090046001600160e01b03166020820152611df3565b60408051808201909152600080825260208201525b905080602001516001600160e01b03169350611e1384868863ffffffff16565b9250600082118015611e3d5750611e28610b16565b65ffffffffffff16816000015163ffffffff16145b15611e8257611e4b83611fe2565b60008881526020902083016000190180546001600160e01b03929092166401000000000263ffffffff909216919091179055611efc565b866040518060400160405280611ea6611e99610b16565b65ffffffffffff16611307565b63ffffffff168152602001611eba86611fe2565b6001600160e01b0390811690915282546001810184556000938452602093849020835194909301519091166401000000000263ffffffff909316929092179101555b5050935093915050565b60006106ac8284612436565b6001600160a01b038216611f685760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016105e6565b8060356000828254611f7a9190612436565b90915550506001600160a01b0382166000818152603360209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36105f9600083835b6117e983838361204b565b60006001600160e01b0382111561136c5760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20326044820152663234206269747360c81b60648201526084016105e6565b6001600160a01b03838116600090815260fe60205260408082205485841683529120546117e9929182169116836116b0565b80356001600160a01b038116811461209457600080fd5b919050565b600080604083850312156120ac57600080fd5b6120b58361207d565b91506120c36020840161207d565b90509250929050565b6000815180845260005b818110156120f2576020818501810151868301820152016120d6565b506000602082860101526020601f19601f83011685010191505092915050565b6020815260006106ac60208301846120cc565b6000806040838503121561213857600080fd5b6121418361207d565b946020939093013593505050565b60008060006060848603121561216457600080fd5b61216d8461207d565b925061217b6020850161207d565b9150604084013590509250925092565b60006020828403121561219d57600080fd5b5035919050565b6000806000604084860312156121b957600080fd5b833567ffffffffffffffff808211156121d157600080fd5b818601915086601f8301126121e557600080fd5b8135818111156121f457600080fd5b8760208260051b850101111561220957600080fd5b60209283019550935061221f918601905061207d565b90509250925092565b60006020828403121561223a57600080fd5b6106ac8261207d565b60ff60f81b881681526000602060e08184015261226360e084018a6120cc565b8381036040850152612275818a6120cc565b606085018990526001600160a01b038816608086015260a0850187905284810360c0860152855180825283870192509083019060005b818110156122c7578351835292840192918401916001016122ab565b50909c9b505050505050505050505050565b803560ff8116811461209457600080fd5b60008060008060008060c0878903121561230357600080fd5b61230c8761207d565b95506020870135945060408701359350612328606088016122d9565b92506080870135915060a087013590509295509295509295565b600080600080600080600060e0888a03121561235d57600080fd5b6123668861207d565b96506123746020890161207d565b95506040880135945060608801359350612390608089016122d9565b925060a0880135915060c0880135905092959891949750929550565b600080604083850312156123bf57600080fd5b6123c88361207d565b9150602083013563ffffffff811681146123e157600080fd5b809150509250929050565b600181811c9082168061240057607f821691505b60208210810361151057634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b8082018082111561059a5761059a612420565b634e487b7160e01b600052603260045260246000fd5b60006001820161247157612471612420565b5060010190565b634e487b7160e01b600052604160045260246000fd5b6000602082840312156124a057600080fd5b5051919050565b8181038181111561059a5761059a612420565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b634e487b7160e01b600052601260045260246000fd5b60008261253857634e487b7160e01b600052601260045260246000fd5b500490565b601f8211156117e957600081815260208120601f850160051c810160208610156125645750805b601f850160051c820191505b8181101561258357828155600101612570565b505050505050565b815167ffffffffffffffff8111156125a5576125a5612478565b6125b9816125b384546123ec565b8461253d565b602080601f8311600181146125ee57600084156125d65750858301515b600019600386901b1c1916600185901b178555612583565b600085815260208120601f198616915b8281101561261d578886015182559484019460019091019084016125fe565b508582101561263b5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052602160045260246000fdfea164736f6c6343000811000a", + }, + { + ContractAddr: common.HexToAddress(TimelockContract), + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/cfc0bd1127186a917ddc38fd38d22903034d3f0b", + Code: "6080604052600436106101d15760003560e01c80638129fc1c116100f7578063b1c5f42711610095578063d547741f11610064578063d547741f14610584578063e38335e5146105a4578063f23a6e61146105b7578063f27a0c92146105e357600080fd5b8063b1c5f427146104eb578063bc197c811461050b578063c4d252f514610537578063d45c44351461055757600080fd5b806391d14854116100d157806391d1485414610474578063a217fddf14610494578063ac431751146104a9578063b08e51c0146104c957600080fd5b80638129fc1c1461041d5780638f2a0bb0146104325780638f61f4f51461045257600080fd5b8063248a9ca31161016f57806336568abe1161013e57806336568abe1461039d578063584b153e146103bd57806364d62353146103dd5780638065657f146103fd57600080fd5b8063248a9ca3146102fd5780632ab0f5291461032d5780632f2ff15d1461035d57806331d507501461037d57600080fd5b80630d3cf6fc116101ab5780630d3cf6fc14610264578063134008d31461028657806313bc9f2014610299578063150b7a02146102b957600080fd5b806301d5062a146101dd57806301ffc9a7146101ff57806307bd02651461023457600080fd5b366101d857005b600080fd5b3480156101e957600080fd5b506101fd6101f8366004611a54565b6105f8565b005b34801561020b57600080fd5b5061021f61021a366004611ac8565b6106bc565b60405190151581526020015b60405180910390f35b34801561024057600080fd5b5061025660008051602061253b83398151915281565b60405190815260200161022b565b34801561027057600080fd5b506102566000805160206124fb83398151915281565b6101fd610294366004611af2565b6106e7565b3480156102a557600080fd5b5061021f6102b4366004611b5d565b61078a565b3480156102c557600080fd5b506102e46102d4366004611c2b565b630a85bd0160e11b949350505050565b6040516001600160e01b0319909116815260200161022b565b34801561030957600080fd5b50610256610318366004611b5d565b60009081526065602052604090206001015490565b34801561033957600080fd5b5061021f610348366004611b5d565b60009081526097602052604090205460011490565b34801561036957600080fd5b506101fd610378366004611c92565b6107b0565b34801561038957600080fd5b5061021f610398366004611b5d565b6107da565b3480156103a957600080fd5b506101fd6103b8366004611c92565b6107f3565b3480156103c957600080fd5b5061021f6103d8366004611b5d565b610876565b3480156103e957600080fd5b506101fd6103f8366004611b5d565b61088d565b34801561040957600080fd5b50610256610418366004611af2565b610931565b34801561042957600080fd5b506101fd610970565b34801561043e57600080fd5b506101fd61044d366004611d02565b610b22565b34801561045e57600080fd5b5061025660008051602061251b83398151915281565b34801561048057600080fd5b5061021f61048f366004611c92565b610ca3565b3480156104a057600080fd5b50610256600081565b3480156104b557600080fd5b506101fd6104c4366004611db3565b610cce565b3480156104d557600080fd5b5061025660008051602061255b83398151915281565b3480156104f757600080fd5b50610256610506366004611e1e565b610eb8565b34801561051757600080fd5b506102e4610526366004611f45565b63bc197c8160e01b95945050505050565b34801561054357600080fd5b506101fd610552366004611b5d565b610efd565b34801561056357600080fd5b50610256610572366004611b5d565b60009081526097602052604090205490565b34801561059057600080fd5b506101fd61059f366004611c92565b610fc0565b6101fd6105b2366004611e1e565b610fe5565b3480156105c357600080fd5b506102e46105d2366004611fee565b63f23a6e6160e01b95945050505050565b3480156105ef57600080fd5b50609854610256565b60008051602061251b8339815191526106108161115d565b6000610620898989898989610931565b905061062c8184611167565b6000817f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8b8b8b8b8b8a6040516106689695949392919061207b565b60405180910390a383156106b157807f20fda5fd27a1ea7bf5b9567f143ac5470bb059374a27e8f67cb44f946f6d0387856040516106a891815260200190565b60405180910390a25b505050505050505050565b60006001600160e01b03198216630271189760e51b14806106e157506106e182611256565b92915050565b60008051602061253b833981519152610701816000610ca3565b61070f5761070f813361128b565b600061071f888888888888610931565b905061072b81856112e4565b6107378888888861137f565b6000817fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b588a8a8a8a60405161076f94939291906120b8565b60405180910390a361078081611452565b5050505050505050565b6000818152609760205260408120546001811180156107a95750428111155b9392505050565b6000828152606560205260409020600101546107cb8161115d565b6107d5838361148b565b505050565b60008181526097602052604081205481905b1192915050565b6001600160a01b03811633146108685760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b6108728282611511565b5050565b6000818152609760205260408120546001906107ec565b3330146108f05760405162461bcd60e51b815260206004820152602b60248201527f54696d656c6f636b436f6e74726f6c6c65723a2063616c6c6572206d7573742060448201526a62652074696d656c6f636b60a81b606482015260840161085f565b60985460408051918252602082018390527f11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d5910160405180910390a1609855565b600086868686868660405160200161094e9695949392919061207b565b6040516020818303038152906040528051906020012090509695505050505050565b600054610100900460ff16158080156109905750600054600160ff909116105b806109aa5750303b1580156109aa575060005460ff166001145b610a0d5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161085f565b6000805460ff191660011790558015610a30576000805461ff0019166101001790555b334114610a505760405163022d8c9560e31b815260040160405180910390fd5b3a15610a6f576040516383f1b1d360e01b815260040160405180910390fd5b6040805160018082528183019092526000916020808301908036833701905050905061200481600081518110610aa757610aa76120ea565b60200260200101906001600160a01b031690816001600160a01b031681525050610ad8620151808283612004611578565b508015610b1f576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b60008051602061251b833981519152610b3a8161115d565b888714610b595760405162461bcd60e51b815260040161085f90612100565b888514610b785760405162461bcd60e51b815260040161085f90612100565b6000610b8a8b8b8b8b8b8b8b8b610eb8565b9050610b968184611167565b60005b8a811015610c545780827f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8e8e85818110610bd657610bd66120ea565b9050602002016020810190610beb9190612143565b8d8d86818110610bfd57610bfd6120ea565b905060200201358c8c87818110610c1657610c166120ea565b9050602002810190610c28919061215e565b8c8b604051610c3c9695949392919061207b565b60405180910390a3610c4d816121ba565b9050610b99565b508315610c9657807f20fda5fd27a1ea7bf5b9567f143ac5470bb059374a27e8f67cb44f946f6d038785604051610c8d91815260200190565b60405180910390a25b5050505050505050505050565b60009182526065602090815260408084206001600160a01b0393909316845291905290205460ff1690565b3361100714610cf457604051630f22c43960e41b8152611007600482015260240161085f565b610d57604051806040016040528060088152602001676d696e44656c617960c01b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506115b19050565b15610e545760208114610d855783838383604051630a5a604160e01b815260040161085f94939291906121d3565b604080516020601f8401819004810282018101909252828152600091610dc691858580838501838280828437600092019190915250929392505061160a9050565b9050801580610dd757506212750081115b15610dfd5784848484604051630a5a604160e01b815260040161085f94939291906121d3565b6040516364d6235360e01b81526004810182905230906364d6235390602401600060405180830381600087803b158015610e3657600080fd5b505af1158015610e4a573d6000803e3d6000fd5b5050505050610e75565b838383836040516325ee20d560e21b815260040161085f94939291906121d3565b7ff1ce9b2cbf50eeb05769a29e2543fd350cab46894a7dd9978a12d534bb20e63384848484604051610eaa94939291906121d3565b60405180910390a150505050565b60008888888888888888604051602001610ed998979695949392919061228b565b60405160208183030381529060405280519060200120905098975050505050505050565b60008051602061255b833981519152610f158161115d565b610f1e82610876565b610f845760405162461bcd60e51b815260206004820152603160248201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e2063616044820152701b9b9bdd0818994818d85b98d95b1b1959607a1b606482015260840161085f565b6000828152609760205260408082208290555183917fbaa1eb22f2a492ba1a5fea61b8df4d27c6c8b5f3971e63bb58fa14ff72eedb7091a25050565b600082815260656020526040902060010154610fdb8161115d565b6107d58383611511565b60008051602061253b833981519152610fff816000610ca3565b61100d5761100d813361128b565b87861461102c5760405162461bcd60e51b815260040161085f90612100565b87841461104b5760405162461bcd60e51b815260040161085f90612100565b600061105d8a8a8a8a8a8a8a8a610eb8565b905061106981856112e4565b60005b898110156111475760008b8b83818110611088576110886120ea565b905060200201602081019061109d9190612143565b905060008a8a848181106110b3576110b36120ea565b9050602002013590503660008a8a868181106110d1576110d16120ea565b90506020028101906110e3919061215e565b915091506110f38484848461137f565b84867fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b588686868660405161112a94939291906120b8565b60405180910390a35050505080611140906121ba565b905061106c565b5061115181611452565b50505050505050505050565b610b1f813361128b565b611170826107da565b156111d55760405162461bcd60e51b815260206004820152602f60248201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e20616c60448201526e1c9958591e481cd8da19591d5b1959608a1b606482015260840161085f565b6098548110156112365760405162461bcd60e51b815260206004820152602660248201527f54696d656c6f636b436f6e74726f6c6c65723a20696e73756666696369656e746044820152652064656c617960d01b606482015260840161085f565b611240814261232c565b6000928352609760205260409092209190915550565b60006001600160e01b03198216637965db0b60e01b14806106e157506301ffc9a760e01b6001600160e01b03198316146106e1565b6112958282610ca3565b610872576112a28161160f565b6112ad836020611621565b6040516020016112be929190612363565b60408051601f198184030181529082905262461bcd60e51b825261085f916004016123d8565b6112ed8261078a565b6113095760405162461bcd60e51b815260040161085f9061240b565b80158061132457506000818152609760205260409020546001145b6108725760405162461bcd60e51b815260206004820152602660248201527f54696d656c6f636b436f6e74726f6c6c65723a206d697373696e6720646570656044820152656e64656e637960d01b606482015260840161085f565b6000846001600160a01b031684848460405161139c929190612455565b60006040518083038185875af1925050503d80600081146113d9576040519150601f19603f3d011682016040523d82523d6000602084013e6113de565b606091505b505090508061144b5760405162461bcd60e51b815260206004820152603360248201527f54696d656c6f636b436f6e74726f6c6c65723a20756e6465726c79696e6720746044820152721c985b9cd858dd1a5bdb881c995d995c9d1959606a1b606482015260840161085f565b5050505050565b61145b8161078a565b6114775760405162461bcd60e51b815260040161085f9061240b565b600090815260976020526040902060019055565b6114958282610ca3565b6108725760008281526065602090815260408083206001600160a01b03851684529091529020805460ff191660011790556114cd3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b61151b8282610ca3565b156108725760008281526065602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b600054610100900460ff1661159f5760405162461bcd60e51b815260040161085f90612465565b6115ab848484846117bc565b50505050565b6000816040516020016115c491906124b0565b60405160208183030381529060405280519060200120836040516020016115eb91906124b0565b6040516020818303038152906040528051906020012014905092915050565b015190565b60606106e16001600160a01b03831660145b606060006116308360026124cc565b61163b90600261232c565b6001600160401b0381111561165257611652611b76565b6040519080825280601f01601f19166020018201604052801561167c576020820181803683370190505b509050600360fc1b81600081518110611697576116976120ea565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106116c6576116c66120ea565b60200101906001600160f81b031916908160001a90535060006116ea8460026124cc565b6116f590600161232c565b90505b600181111561176d576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110611729576117296120ea565b1a60f81b82828151811061173f5761173f6120ea565b60200101906001600160f81b031916908160001a90535060049490941c93611766816124e3565b90506116f8565b5083156107a95760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161085f565b600054610100900460ff166117e35760405162461bcd60e51b815260040161085f90612465565b6117fb6000805160206124fb8339815191528061199b565b61182160008051602061251b8339815191526000805160206124fb83398151915261199b565b61184760008051602061253b8339815191526000805160206124fb83398151915261199b565b61186d60008051602061255b8339815191526000805160206124fb83398151915261199b565b6118856000805160206124fb833981519152306119e6565b6001600160a01b038116156118ac576118ac6000805160206124fb833981519152826119e6565b60005b835181101561191d576118e960008051602061251b8339815191528583815181106118dc576118dc6120ea565b60200260200101516119e6565b61190d60008051602061255b8339815191528583815181106118dc576118dc6120ea565b611916816121ba565b90506118af565b5060005b825181101561195e5761194e60008051602061253b8339815191528483815181106118dc576118dc6120ea565b611957816121ba565b9050611921565b5060988490556040805160008152602081018690527f11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d59101610eaa565b600082815260656020526040808220600101805490849055905190918391839186917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a4505050565b610872828261148b565b80356001600160a01b0381168114611a0757600080fd5b919050565b60008083601f840112611a1e57600080fd5b5081356001600160401b03811115611a3557600080fd5b602083019150836020828501011115611a4d57600080fd5b9250929050565b600080600080600080600060c0888a031215611a6f57600080fd5b611a78886119f0565b96506020880135955060408801356001600160401b03811115611a9a57600080fd5b611aa68a828b01611a0c565b989b979a50986060810135976080820135975060a09091013595509350505050565b600060208284031215611ada57600080fd5b81356001600160e01b0319811681146107a957600080fd5b60008060008060008060a08789031215611b0b57600080fd5b611b14876119f0565b95506020870135945060408701356001600160401b03811115611b3657600080fd5b611b4289828a01611a0c565b979a9699509760608101359660809091013595509350505050565b600060208284031215611b6f57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715611bb457611bb4611b76565b604052919050565b600082601f830112611bcd57600080fd5b81356001600160401b03811115611be657611be6611b76565b611bf9601f8201601f1916602001611b8c565b818152846020838601011115611c0e57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060808587031215611c4157600080fd5b611c4a856119f0565b9350611c58602086016119f0565b92506040850135915060608501356001600160401b03811115611c7a57600080fd5b611c8687828801611bbc565b91505092959194509250565b60008060408385031215611ca557600080fd5b82359150611cb5602084016119f0565b90509250929050565b60008083601f840112611cd057600080fd5b5081356001600160401b03811115611ce757600080fd5b6020830191508360208260051b8501011115611a4d57600080fd5b600080600080600080600080600060c08a8c031215611d2057600080fd5b89356001600160401b0380821115611d3757600080fd5b611d438d838e01611cbe565b909b50995060208c0135915080821115611d5c57600080fd5b611d688d838e01611cbe565b909950975060408c0135915080821115611d8157600080fd5b50611d8e8c828d01611cbe565b9a9d999c50979a969997986060880135976080810135975060a0013595509350505050565b60008060008060408587031215611dc957600080fd5b84356001600160401b0380821115611de057600080fd5b611dec88838901611a0c565b90965094506020870135915080821115611e0557600080fd5b50611e1287828801611a0c565b95989497509550505050565b60008060008060008060008060a0898b031215611e3a57600080fd5b88356001600160401b0380821115611e5157600080fd5b611e5d8c838d01611cbe565b909a50985060208b0135915080821115611e7657600080fd5b611e828c838d01611cbe565b909850965060408b0135915080821115611e9b57600080fd5b50611ea88b828c01611cbe565b999c989b509699959896976060870135966080013595509350505050565b600082601f830112611ed757600080fd5b813560206001600160401b03821115611ef257611ef2611b76565b8160051b611f01828201611b8c565b9283528481018201928281019087851115611f1b57600080fd5b83870192505b84831015611f3a57823582529183019190830190611f21565b979650505050505050565b600080600080600060a08688031215611f5d57600080fd5b611f66866119f0565b9450611f74602087016119f0565b935060408601356001600160401b0380821115611f9057600080fd5b611f9c89838a01611ec6565b94506060880135915080821115611fb257600080fd5b611fbe89838a01611ec6565b93506080880135915080821115611fd457600080fd5b50611fe188828901611bbc565b9150509295509295909350565b600080600080600060a0868803121561200657600080fd5b61200f866119f0565b945061201d602087016119f0565b9350604086013592506060860135915060808601356001600160401b0381111561204657600080fd5b611fe188828901611bbc565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60018060a01b038716815285602082015260a0604082015260006120a360a083018688612052565b60608301949094525060800152949350505050565b60018060a01b03851681528360208201526060604082015260006120e0606083018486612052565b9695505050505050565b634e487b7160e01b600052603260045260246000fd5b60208082526023908201527f54696d656c6f636b436f6e74726f6c6c65723a206c656e677468206d69736d616040820152620e8c6d60eb1b606082015260800190565b60006020828403121561215557600080fd5b6107a9826119f0565b6000808335601e1984360301811261217557600080fd5b8301803591506001600160401b0382111561218f57600080fd5b602001915036819003821315611a4d57600080fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016121cc576121cc6121a4565b5060010190565b6040815260006121e7604083018688612052565b8281036020840152611f3a818587612052565b81835260006020808501808196508560051b810191508460005b8781101561227e5782840389528135601e1988360301811261223557600080fd5b870185810190356001600160401b0381111561225057600080fd5b80360382131561225f57600080fd5b61226a868284612052565b9a87019a9550505090840190600101612214565b5091979650505050505050565b60a0808252810188905260008960c08301825b8b8110156122cc576001600160a01b036122b7846119f0565b1682526020928301929091019060010161229e565b5083810360208501528881526001600160fb1b038911156122ec57600080fd5b8860051b9150818a6020830137018281036020908101604085015261231490820187896121fa565b60608401959095525050608001529695505050505050565b808201808211156106e1576106e16121a4565b60005b8381101561235a578181015183820152602001612342565b50506000910152565b7f416363657373436f6e74726f6c3a206163636f756e742000000000000000000081526000835161239b81601785016020880161233f565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516123cc81602884016020880161233f565b01602801949350505050565b60208152600082518060208401526123f781604085016020870161233f565b601f01601f19169190910160400192915050565b6020808252602a908201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e206973604082015269206e6f7420726561647960b01b606082015260800190565b8183823760009101908152919050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b600082516124c281846020870161233f565b9190910192915050565b80820281158282048414176106e1576106e16121a4565b6000816124f2576124f26121a4565b50600019019056fe5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca5b09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc1d8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e63fd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f783a164736f6c6343000811000a", + }, + { + ContractAddr: common.HexToAddress(TokenRecoverPortalContract), + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/cfc0bd1127186a917ddc38fd38d22903034d3f0b", + Code: "608060405234801561001057600080fd5b50600436106100a95760003560e01c80639fcb5012116100715780639fcb50121461012f578063ac4317511461014c578063bfb5a6a11461015f578063de88700b14610172578063e33f8d321461019d578063f4b88300146101c057600080fd5b8063046f7da2146100ae5780632eb4a7ab146100b85780634c335368146100d4578063572c9980146101145780638456cb5914610127575b600080fd5b6100b66101d3565b005b6100c160345481565b6040519081526020015b60405180910390f35b6101076040518060400160405280601481526020017342696e616e63652d436861696e2d47616e67657360601b81525081565b6040516100cb91906113eb565b6100b661012236600461141e565b610236565b6100b66102c7565b60355461013c9060ff1681565b60405190151581526020016100cb565b6100b661015a36600461149c565b610330565b6100b661016d36600461154d565b610756565b603754610185906001600160a01b031681565b6040516001600160a01b0390911681526020016100cb565b61013c6101ab366004611627565b60009081526036602052604090205460ff1690565b603354610185906001600160a01b031681565b6037546001600160a01b031633146101fe5760405163f2771a9960e01b815260040160405180910390fd5b6037805460ff60a01b191690556040517f62451d457bc659158be6e6247f56ec1df424a5c7597f71c20c2bc44e0965c8f990600090a1565b6037546001600160a01b031633146102615760405163f2771a9960e01b815260040160405180910390fd5b604051638525db0360e01b8152600481018390526001600160a01b038216602482015261100490638525db0390604401600060405180830381600087803b1580156102ab57600080fd5b505af11580156102bf573d6000803e3d6000fd5b505050505050565b6037546001600160a01b031633146102f25760405163f2771a9960e01b815260040160405180910390fd5b6037805460ff60a01b1916600160a01b1790556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e75290600090a1565b336110071461035b57604051630f22c43960e41b815261100760048201526024015b60405180910390fd5b6103c56040518060400160405280600f81526020016e617070726f7665724164647265737360881b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610a989050565b1561048d57601481146103f35783838383604051630a5a604160e01b81526004016103529493929190611669565b600061043783838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060149250610af2915050565b90506001600160a01b0381166104685784848484604051630a5a604160e01b81526004016103529493929190611669565b603380546001600160a01b0319166001600160a01b0392909216919091179055610713565b6104f26040518060400160405280600a8152602001691b595c9adb19549bdbdd60b21b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610a989050565b156105bf5760355460ff161561051b576040516379b3306f60e11b815260040160405180910390fd5b602081146105445783838383604051630a5a604160e01b81526004016103529493929190611669565b604080516020601f840181900481028201810190925282815260009161058491858580838501838280828437600092019190915250869250610af7915050565b806105aa5784848484604051630a5a604160e01b81526004016103529493929190611669565b6034556035805460ff19166001179055610713565b6106286040518060400160405280600e81526020016d30b9b9b2ba283937ba32b1ba37b960911b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610a989050565b156106f257601481146106565783838383604051630a5a604160e01b81526004016103529493929190611669565b600061069c601484848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610af29050565b90506001600160a01b0381166106cd5784848484604051630a5a604160e01b81526004016103529493929190611669565b603780546001600160a01b0319166001600160a01b0392909216919091179055610713565b838383836040516325ee20d560e21b81526004016103529493929190611669565b7ff1ce9b2cbf50eeb05769a29e2543fd350cab46894a7dd9978a12d534bb20e633848484846040516107489493929190611669565b60405180910390a150505050565b60355460ff1661077957604051635740729760e01b815260040160405180910390fd5b60345461079957604051635740729760e01b815260040160405180910390fd5b603754600160a01b900460ff16156107c45760405163c629ac8160e01b815260040160405180910390fd5b6107cc610b06565b600061085a89898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8d018190048102820181019092528b815292508b91508a9081908401838280828437600081840152601f19601f820116905080830192505050505050506108558e8e33610b5f565b610c80565b90506000818c8c6040516020016108739392919061169b565b6040516020818303038152906040528051906020012090506108a48160009081526036602052604090205460ff1690565b156108c157604051623e493160e81b815260040160405180910390fd5b6109693389898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8d018190048102820181019092528b815292508b91508a908190840183828082843760009201919091525050604080516020808c0282810182019093528b82528994509092508b918b91829190850190849080828437600092019190915250610d7492505050565b6109aa848480806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250506034549150849050610e7f565b6109c7576040516309bde33960e01b815260040160405180910390fd5b60008181526036602052604090819020805460ff191660011790555163799758b960e01b8152600481018d9052336024820152604481018c90526110049063799758b990606401600060405180830381600087803b158015610a2857600080fd5b505af1158015610a3c573d6000803e3d6000fd5b5050604080518f81523360208201529081018e90527f4ba6833d14341f931aa6ef39835b58eb5d657ebf0d968db68dbc7dd49d073f6d9250606001905060405180910390a15050610a8c60018055565b50505050505050505050565b600081604051602001610aab91906116c2565b6040516020818303038152906040528051906020012083604051602001610ad291906116c2565b604051602081830303815290604052805190602001201490505b92915050565b015190565b91018082526020908101910152565b600260015403610b585760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610352565b6002600155565b600060026040518060400160405280601481526020017342696e616e63652d436861696e2d47616e67657360601b815250610bbc85604051602001610ba691815260200190565b6040516020818303038152906040526000610e95565b6040516bffffffffffffffffffffffff19606087901b166020820152610bf5906034016040516020818303038152906040526001610e95565b610c0b88604051602001610ba691815260200190565b604051602001610c1e94939291906116de565b60408051601f1981840301815290829052610c38916116c2565b602060405180830381855afa158015610c55573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610c78919061180d565b949350505050565b60608351602114610ca457604051638152ea1b60e01b815260040160405180910390fd5b8251604014610cc657604051635e4bd79760e11b815260040160405180910390fd5b60408051608180825260c08201909252600091602082018180368337019050509050610cf6818660006021611067565b610d04818560216040611067565b610d338184604051602001610d1b91815260200190565b60405160208183030381529060405260616020611067565b604080516014808252818301909252600091602082018180368337019050509050815160148282856069600019fa610d6a57600080fd5b5095945050505050565b606060005b8251811015610dd25781838281518110610d9557610d9561183c565b6020026020010151604051602001610dae929190611852565b60405160208183030381529060405291508080610dca9061188a565b915050610d79565b5060006040518060400160405280601481526020017342696e616e63652d436861696e2d47616e67657360601b81525087878660345486604051602001610e1e969594939291906118a3565b60408051601f1981840301815291905280516020909101206033549091506001600160a01b0316610e4f82876110de565b6001600160a01b031614610e7657604051636eb5c6cb60e11b815260040160405180910390fd5b50505050505050565b600082610e8c85846110fa565b14949350505050565b6060600083516002610ea79190611914565b67ffffffffffffffff811115610ebf57610ebf611826565b6040519080825280601f01601f191660200182016040528015610ee9576020820181803683370190505b5060408051808201909152601081526f181899199a1a9b1b9c1cb0b131b232b360811b602082015290915060005b855181101561102f57818251878381518110610f3557610f3561183c565b0160200151610f47919060f81c611941565b81518110610f5757610f5761183c565b01602001516001600160f81b03191683610f72836002611914565b81518110610f8257610f8261183c565b60200101906001600160f81b031916908160001a905350818251878381518110610fae57610fae61183c565b0160200151610fc0919060f81c611955565b81518110610fd057610fd061183c565b01602001516001600160f81b03191683610feb836002611914565b610ff6906001611969565b815181106110065761100661183c565b60200101906001600160f81b031916908160001a905350806110278161188a565b915050610f17565b50831561105f5781604051602001611047919061197c565b60405160208183030381529060405292505050610aec565b509392505050565b60005b818110156110d7578381815181106110845761108461183c565b01602001516001600160f81b031916858461109e8161188a565b9550815181106110b0576110b061183c565b60200101906001600160f81b031916908160001a9053506110d08161188a565b905061106a565b5050505050565b60008060006110ed858561113f565b9150915061105f81611184565b600081815b845181101561105f5761112b8286838151811061111e5761111e61183c565b60200260200101516112d1565b9150806111378161188a565b9150506110ff565b60008082516041036111755760208301516040840151606085015160001a61116987828585611303565b9450945050505061117d565b506000905060025b9250929050565b6000816004811115611198576111986119a6565b036111a05750565b60018160048111156111b4576111b46119a6565b036112015760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610352565b6002816004811115611215576112156119a6565b036112625760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610352565b6003816004811115611276576112766119a6565b036112ce5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610352565b50565b60008183106112ed5760008281526020849052604090206112fc565b60008381526020839052604090205b9392505050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561133a57506000905060036113be565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa15801561138e573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166113b7576000600192509250506113be565b9150600090505b94509492505050565b60005b838110156113e25781810151838201526020016113ca565b50506000910152565b602081526000825180602084015261140a8160408501602087016113c7565b601f01601f19169190910160400192915050565b6000806040838503121561143157600080fd5b8235915060208301356001600160a01b038116811461144f57600080fd5b809150509250929050565b60008083601f84011261146c57600080fd5b50813567ffffffffffffffff81111561148457600080fd5b60208301915083602082850101111561117d57600080fd5b600080600080604085870312156114b257600080fd5b843567ffffffffffffffff808211156114ca57600080fd5b6114d68883890161145a565b909650945060208701359150808211156114ef57600080fd5b506114fc8782880161145a565b95989497509550505050565b60008083601f84011261151a57600080fd5b50813567ffffffffffffffff81111561153257600080fd5b6020830191508360208260051b850101111561117d57600080fd5b60008060008060008060008060008060c08b8d03121561156c57600080fd5b8a35995060208b0135985060408b013567ffffffffffffffff8082111561159257600080fd5b61159e8e838f0161145a565b909a50985060608d01359150808211156115b757600080fd5b6115c38e838f0161145a565b909850965060808d01359150808211156115dc57600080fd5b6115e88e838f0161145a565b909650945060a08d013591508082111561160157600080fd5b5061160e8d828e01611508565b915080935050809150509295989b9194979a5092959850565b60006020828403121561163957600080fd5b5035919050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60408152600061167d604083018688611640565b8281036020840152611690818587611640565b979650505050505050565b600084516116ad8184602089016113c7565b91909101928352506020820152604001919050565b600082516116d48184602087016113c7565b9190910192915050565b7f7b226163636f756e745f6e756d626572223a2230222c22636861696e5f6964228152611d1160f11b602082015260008551611721816022850160208a016113c7565b7f222c2264617461223a6e756c6c2c226d656d6f223a22222c226d736773223a5b6022918401918201526a3d9130b6b7bab73a111d1160a91b6042820152855161177281604d840160208a016113c7565b6e1116113932b1b4b834b2b73a111d1160891b604d929091019182015284516117a281605c8401602089016113c7565b711116113a37b5b2b72fb9bcb6b137b6111d1160711b605c929091019182015283516117d581606e8401602088016113c7565b7f227d5d2c2273657175656e6365223a2230222c22736f75726365223a2230227d606e9290910191820152608e019695505050505050565b60006020828403121561181f57600080fd5b5051919050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b600083516118648184602088016113c7565b9190910191825250602001919050565b634e487b7160e01b600052601160045260246000fd5b60006001820161189c5761189c611874565b5060010190565b600087516118b5818460208c016113c7565b606088901b6bffffffffffffffffffffffff191690830190815286516118e2816014840160208b016113c7565b01601481018690526034810185905283516119048160548401602088016113c7565b0160540198975050505050505050565b8082028115828204841417610aec57610aec611874565b634e487b7160e01b600052601260045260246000fd5b6000826119505761195061192b565b500490565b6000826119645761196461192b565b500690565b80820180821115610aec57610aec611874565b61060f60f31b8152600082516119998160028501602087016113c7565b9190910160020192915050565b634e487b7160e01b600052602160045260246000fdfea164736f6c6343000811000a", + }, + { + ContractAddr: common.HexToAddress(TokenRecoverPortalContract), + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/0f352c4623898d92664a46cbfc26c52b79aad838", + Code: "0", // TODO: update this when contract was ready + }, + }, + } + + feynmanUpgrade[chapelNet] = &Upgrade{ + UpgradeName: "feynman", + Configs: []*UpgradeConfig{ + { + ContractAddr: common.HexToAddress(ValidatorContract), + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/cfc0bd1127186a917ddc38fd38d22903034d3f0b", + Code: "6080604052600436106104da5760003560e01c80638a7beb0111610281578063c6d339451161015a578063e40716a1116100cc578063f92eb86b11610085578063f92eb86b14610ccd578063f9a2bbc714610ce2578063fc3e590814610cf7578063fccc281314610d0c578063fd4ad81f14610d21578063fd6a687914610d50576104e1565b8063e40716a114610c30578063e589b61e14610c45578063ea321e4914610c65578063eb57e20214610c85578063eda5868c14610ca5578063f340fa0114610cba576104e1565b8063d86222d51161011e578063d86222d514610bb2578063daacdb6614610bc7578063dc927faf14610bdc578063df8079e914610bf1578063e086c7b114610c06578063e1c7392a14610c1b576104e1565b8063c6d3394514610b53578063c81b166214610b68578063c8509d811461090d578063ce910b0c14610b7d578063d68fb56a14610b9d576104e1565b8063aa82dce1116101f3578063ad3c9da6116101b7578063ad3c9da614610ad2578063aef198a914610af2578063b7ab4db514610b07578063b8cf4ef114610b29578063bf9f4995146106bd578063c466689d14610b3e576104e1565b8063aa82dce114610a5e578063aad5606314610a73578063aaf5eb6814610a88578063ab51bb9614610a9d578063ac43175114610ab2576104e1565b80639dc09262116102455780639dc09262146109e05780639fe0f816146109f5578063a0dc275814610a0a578063a1a11bf514610a1f578063a5422d5c14610a34578063a78abc1614610a49576104e1565b80638a7beb011461096c5780638b5ad0c9146109815780638d19a410146109965780639369d7de146109b657806396713da9146109cb576104e1565b806351e80672116103b357806370fd5bad116103255780637a84ca2a116102e95780637a84ca2a146108e357806381650b62146108f8578063831d65d11461090d578063853230aa1461092d578063862498821461094257806388b32f1114610957576104e1565b806370fd5bad1461087a578063718a8aa81461088f57806375d47a0a146108a457806378dfed4a146108b95780637942fd05146108ce576104e1565b80635de1e22c116103775780635de1e22c146107e9578063603d86d3146106a857806360eba4fe146107fe57806362b72cf51461081e5780636969a25c146108335780636e47b48214610865576104e1565b806351e806721461076a57806355614fcc1461077f578063565c56b31461079f5780635667515a146107bf5780635d77156c146107d4576104e1565b80633365af3a1161044c57806343756e5c1161041057806343756e5c146106df57806345cf9daf146106f4578063493279b1146107095780634bf6c8821461072b5780634df6e0c3146107405780635192c82c14610755576104e1565b80633365af3a1461064557806335409f7f146106655780633b071dcc146106855780633de0f0d8146106a85780633dffc387146106bd576104e1565b8063152ad3b81161049e578063152ad3b8146105995780631e4c1524146105bb5780631ff18069146105db578063219f22d5146105f0578063300c356714610605578063321d398a14610625576104e1565b806304c4fec6146104e657806307a56847146104fd5780630bee7a67146105285780630e2374a51461054a5780631182b8751461056c576104e1565b366104e157005b600080fd5b3480156104f257600080fd5b506104fb610d65565b005b34801561050957600080fd5b50610512610dd7565b60405161051f9190618c29565b60405180910390f35b34801561053457600080fd5b5061053d610ddd565b60405161051f9190618c53565b34801561055657600080fd5b5061055f610de2565b60405161051f9190617fa5565b34801561057857600080fd5b5061058c610587366004617e8b565b610de8565b60405161051f9190618138565b3480156105a557600080fd5b506105ae6110cb565b60405161051f919061812d565b3480156105c757600080fd5b506104fb6105d6366004617c99565b6110d4565b3480156105e757600080fd5b50610512611774565b3480156105fc57600080fd5b5061053d61177a565b34801561061157600080fd5b506104fb610620366004617c31565b61177f565b34801561063157600080fd5b506105ae610640366004617e38565b611ac8565b34801561065157600080fd5b506105ae610660366004617e38565b611b97565b34801561067157600080fd5b506104fb610680366004617bf9565b611c48565b34801561069157600080fd5b5061069a611da1565b60405161051f929190618043565b3480156106b457600080fd5b5061051261207d565b3480156106c957600080fd5b506106d2612083565b60405161051f9190618c64565b3480156106eb57600080fd5b5061055f612088565b34801561070057600080fd5b5061051261208e565b34801561071557600080fd5b5061071e612094565b60405161051f9190618c1a565b34801561073757600080fd5b506106d2612099565b34801561074c57600080fd5b5061069a61209e565b34801561076157600080fd5b5061051261221c565b34801561077657600080fd5b5061055f612222565b34801561078b57600080fd5b506105ae61079a366004617bf9565b612228565b3480156107ab57600080fd5b506105126107ba366004617bf9565b61225d565b3480156107cb57600080fd5b506106d26122ae565b3480156107e057600080fd5b5061053d6122b3565b3480156107f557600080fd5b506105126122b8565b34801561080a57600080fd5b5061058c610819366004617e38565b6122be565b34801561082a57600080fd5b50610512612364565b34801561083f57600080fd5b5061085361084e366004617e38565b61236a565b60405161051f96959493929190617fd2565b34801561087157600080fd5b5061055f6123ce565b34801561088657600080fd5b506106d26123d4565b34801561089b57600080fd5b506106d26123d9565b3480156108b057600080fd5b5061055f6123de565b3480156108c557600080fd5b506105126122ae565b3480156108da57600080fd5b506106d26123e4565b3480156108ef57600080fd5b506105126123e9565b34801561090457600080fd5b5061053d6123ef565b34801561091957600080fd5b506104fb610928366004617e8b565b6123f4565b34801561093957600080fd5b50610512612455565b34801561094e57600080fd5b5061051261245b565b34801561096357600080fd5b50610512612461565b34801561097857600080fd5b506105ae612467565b34801561098d57600080fd5b50610512612470565b3480156109a257600080fd5b506105126109b1366004617bf9565b612476565b3480156109c257600080fd5b506104fb6124b6565b3480156109d757600080fd5b506106d26125ca565b3480156109ec57600080fd5b5061055f6125cf565b348015610a0157600080fd5b506105126125d5565b348015610a1657600080fd5b506105126125da565b348015610a2b57600080fd5b5061055f6125df565b348015610a4057600080fd5b5061058c6125e5565b348015610a5557600080fd5b506105ae612601565b348015610a6a57600080fd5b5061055f61260a565b348015610a7f57600080fd5b5061055f612610565b348015610a9457600080fd5b50610512612616565b348015610aa957600080fd5b5061053d6122ae565b348015610abe57600080fd5b506104fb610acd366004617ddc565b61261f565b348015610ade57600080fd5b50610512610aed366004617bf9565b612ebd565b348015610afe57600080fd5b50610512612ecf565b348015610b1357600080fd5b50610b1c612edc565b60405161051f9190618030565b348015610b3557600080fd5b50610512612fc8565b348015610b4a57600080fd5b50610512612fcd565b348015610b5f57600080fd5b506105126123d4565b348015610b7457600080fd5b5061055f612fd3565b348015610b8957600080fd5b5061058c610b98366004617e38565b612fd9565b348015610ba957600080fd5b50610512612fe6565b348015610bbe57600080fd5b50610512613025565b348015610bd357600080fd5b50610512613031565b348015610be857600080fd5b5061055f613037565b348015610bfd57600080fd5b5061055f61303d565b348015610c1257600080fd5b50610512610ddd565b348015610c2757600080fd5b506104fb613043565b348015610c3c57600080fd5b506105126131ef565b348015610c5157600080fd5b506104fb610c60366004617bf9565b6131f5565b348015610c7157600080fd5b506105ae610c80366004617d9d565b61333a565b348015610c9157600080fd5b506104fb610ca0366004617bf9565b6134c0565b348015610cb157600080fd5b5061053d6135c4565b6104fb610cc8366004617bf9565b6135c9565b348015610cd957600080fd5b50610512613931565b348015610cee57600080fd5b5061055f613937565b348015610d0357600080fd5b506106d26125d5565b348015610d1857600080fd5b5061055f61393d565b348015610d2d57600080fd5b50610d41610d3c366004617e38565b613943565b60405161051f93929190618c32565b348015610d5c57600080fd5b5061055f613a05565b6000610d7033612476565b9050600b8181548110610d7f57fe5b600091825260209091206001601690920201015460ff16610dbb5760405162461bcd60e51b8152600401610db29061889d565b60405180910390fd5b6000610dc5612fe6565b9050610dd2338383613a0b565b505050565b60095481565b606481565b61200181565b60005460609060ff16610e0d5760405162461bcd60e51b8152600401610db2906182f7565b600b54610ecb57610e1c6177a5565b60015460005b81811015610ec757600b80546001810182556000919091528351600080516020618d368339815191526016909202918201908155602080860151600080516020618d768339815191528401805460ff1916911515919091179055604086015180518794610ea393600080516020618d568339815191529091019201906177d4565b506060820151610eb9906003830190601361784e565b505050806001019050610e22565b5050505b610ed361787b565b6000610f1485858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250613cdc92505050565b9150915080610f3057610f276064613e98565b925050506110c4565b815160009060ff16610f5557610f4e83602001518460400151613ef9565b9050611090565b825160ff166001141561108c57826020015151600114610f9a57600080516020618d16833981519152604051610f8a90618756565b60405180910390a1506067611087565b6000600460008560200151600081518110610fb157fe5b6020026020010151600001516001600160a01b03166001600160a01b0316815260200190815260200160002054905080600014806110195750600180820381548110610ff957fe5b9060005260206000209060040201600201601c9054906101000a900460ff165b1561107957836020015160008151811061102f57fe5b6020026020010151600001516001600160a01b03167fe209c46bebf57cf265d5d9009a00870e256d9150f3ed5281ab9d9eb3cec6e4be60405160405180910390a260009150611085565b6110828161505d565b91505b505b611090565b5060655b63ffffffff81166110b557505060408051600081526020810190915291506110c49050565b6110be81613e98565b93505050505b9392505050565b60075460ff1681565b3341146110f35760405162461bcd60e51b8152600401610db290618a85565b3a156111115760405162461bcd60e51b8152600401610db2906187dc565b825160408051828152602080840282010190915260609082801561114f57816020015b61113c61789f565b8152602001906001900390816111345790505b50905060005b828110156111f9576040518060c0016040528087838151811061117457fe5b60200260200101516001600160a01b0316815260200160006001600160a01b0316815260200160006001600160a01b031681526020018683815181106111b657fe5b60200260200101516001600160401b0316815260200160001515815260200160008152508282815181106111e657fe5b6020908102919091010152600101611155565b5060405163d31f968d60e01b81526120009063d31f968d906112249061100090600890600401618014565b60206040518083038186803b15801561123c57600080fd5b505afa158015611250573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112749190617d7d565b1561156d5780518061128857505050610dd2565b6015548181111561132357815b818110156113215760158054806112a857fe5b60008281526020812060046000199093019283020180546001600160a01b0319908116825560018201805490911690556002810180546001600160e81b031916905560030155905560168054806112fb57fe5b60019003818190600052602060002001600061131791906178d4565b9055600101611295565b505b60005b828110156115635781811061144b57601584828151811061134357fe5b602090810291909101810151825460018181018555600094855293839020825160049092020180546001600160a01b039283166001600160a01b0319918216178255938301519481018054958316958516959095179094556040820151600285018054606085015160808601511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b199590961692909716919091179290921692909217169290921790915560a00151600390910155855160169087908390811061141357fe5b6020908102919091018101518254600181018455600093845292829020815161144594919091019291909101906177d4565b5061155b565b83818151811061145757fe5b60200260200101516015828154811061146c57fe5b6000918252602091829020835160049092020180546001600160a01b039283166001600160a01b0319918216178255928401516001820180549184169185169190911790556040840151600282018054606087015160808801511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b1995909716929097169190911792909216939093171692909217905560a090910151600390910155855186908290811061152757fe5b60200260200101516016828154811061153c57fe5b9060005260206000200190805190602001906115599291906177d4565b505b600101611326565b5050505050610dd2565b60608061157a8386615171565b9150915060005b600154811015611664576001818154811061159857fe5b90600052602060002090600402016003015460001461165c576120026001600160a01b031663092193ab600183815481106115cf57fe5b906000526020600020906004020160030154600184815481106115ee57fe5b60009182526020909120600491820201546040516001600160e01b031960e086901b168152611629926001600160a01b039092169101617fa5565b6000604051808303818588803b15801561164257600080fd5b505af1158015611656573d6000803e3d6000fd5b50505050505b600101611581565b5047156116d2577f6ecc855f9440a9282c90913bbc91619fd44f5ec0b462af28d127b116f130aa4d4760405161169a9190618c29565b60405180910390a1604051611002904780156108fc02916000818181858888f193505050501580156116d0573d6000803e3d6000fd5b505b600060038190556005558151156116ed576116ed82826153aa565b6110016001600160a01b031663fc4333cd6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561172a57600080fd5b505af115801561173e573d6000803e3d6000fd5b50506040517fedd8d7296956dd970ab4de3f2fc03be2b0ffc615d20cd4c72c6e44f928630ebf925060009150a150505050505050565b60035481565b606881565b33411461179e5760405162461bcd60e51b8152600401610db290618a85565b60105443116117bf5760405162461bcd60e51b8152600401610db290618453565b3a156117dd5760405162461bcd60e51b8152600401610db2906187dc565b60005460ff166117ff5760405162461bcd60e51b8152600401610db2906182f7565b60006110023168056bc75e2d631000008111156118365761182f8168056bc75e2d6310000063ffffffff615bb116565b915061183d565b5050611abe565b6040516309a99b4f60e41b815261100290639a99b4f0906118649030908690600401617fb9565b602060405180830381600087803b15801561187e57600080fd5b505af1158015611892573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118b69190617e50565b9150816118c4575050611abe565b6000805b848110156118f2578585828181106118dc57fe5b90506020020135820191508060010190506118c8565b508061190057505050611abe565b6000806000805b89811015611ab6578489898381811061191c57fe5b9050602002013588028161192c57fe5b0493508a8a8281811061193b57fe5b90506020020160208101906119509190617bf9565b6001600160a01b03811660009081526004602052604090205490935091508115611a6c57600060018084038154811061198557fe5b9060005260206000209060040201905080600201601c9054906101000a900460ff16156119f257836001600160a01b03167fb9c75cbbfde137c4281689580799ef5f52144e78858f776a5979b2b212137d85866040516119e59190618c29565b60405180910390a2611a66565b600354611a05908663ffffffff615bf316565b6003908155810154611a1d908663ffffffff615bf316565b60038201556040516001600160a01b038516907fcb0aad6cf9cd03bdf6137e359f541c42f38b39f007cae8e89e88aa7d8c6617b290611a5d908890618c29565b60405180910390a25b50611aae565b826001600160a01b03167fb9c75cbbfde137c4281689580799ef5f52144e78858f776a5979b2b212137d8585604051611aa59190618c29565b60405180910390a25b600101611907565b505050505050505b5050436010555050565b6001546000908210611adc57506000611b92565b60006001600160a01b031660018381548110611af457fe5b60009182526020909120600490910201546001600160a01b03161480611b2457506008541580611b245750600a54155b80611b33575060085460095410155b80611b445750611b4282611b97565b155b80611b6d57506000600b8381548110611b5957fe5b906000526020600020906016020160000154115b80611b8157506001611b7d612edc565b5111155b15611b8e57506000611b92565b5060015b919050565b6001546000908210611bab57506000611b92565b600b548210611be85760018281548110611bc157fe5b9060005260206000209060040201600201601c9054906101000a900460ff16159050611b92565b60018281548110611bf557fe5b9060005260206000209060040201600201601c9054906101000a900460ff16158015611c425750600b8281548110611c2957fe5b600091825260209091206001601690920201015460ff16155b92915050565b3361100114611c695760405162461bcd60e51b8152600401610db290618b9a565b600b54611d2757611c786177a5565b60015460005b81811015611d2357600b80546001810182556000919091528351600080516020618d368339815191526016909202918201908155602080860151600080516020618d768339815191528401805460ff1916911515919091179055604086015180518794611cff93600080516020618d568339815191529091019201906177d4565b506060820151611d15906003830190601361784e565b505050806001019050611c7e565b5050505b6001600160a01b03811660009081526004602052604090205480611d4b5750611d9e565b6001810390506000600b8281548110611d6057fe5b600091825260209091206001601690920201015460ff169050611d838383615c18565b8015611d8c5750805b15610dd2576009805460001901905550505b50565b60015460609081906000805b82811015611df45760018181548110611dc257fe5b9060005260206000209060040201600201601c9054906101000a900460ff16611dec576001909101905b600101611dad565b50606081604051908082528060200260200182016040528015611e21578160200160208202803683370190505b509050606082604051908082528060200260200182016040528015611e5a57816020015b6060815260200190600190039081611e455790505b50600b5460009450909150841415611fd55760005b84811015611fcf5760018181548110611e8457fe5b9060005260206000209060040201600201601c9054906101000a900460ff16611fc75760018181548110611eb457fe5b600091825260209091206004909102015483516001600160a01b0390911690849086908110611edf57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050600b8181548110611f0c57fe5b600091825260209182902060026016909202018101805460408051601f600019610100600186161502019093169490940491820185900485028401850190528083529192909190830182828015611fa45780601f10611f7957610100808354040283529160200191611fa4565b820191906000526020600020905b815481529060010190602001808311611f8757829003601f168201915b5050505050828581518110611fb557fe5b60209081029190910101526001909301925b600101611e6f565b50612071565b60005b8481101561206f5760018181548110611fed57fe5b9060005260206000209060040201600201601c9054906101000a900460ff16612067576001818154811061201d57fe5b600091825260209091206004909102015483516001600160a01b039091169084908690811061204857fe5b6001600160a01b03909216602092830291909101909101526001909301925b600101611fd8565b505b909450925050505b9091565b61271081565b600181565b61100181565b60085481565b603881565b600881565b600e54600c546060918291806120b2575060155b60606120bc612edc565b905060606120c982615fcb565b9050828251116120e0579094509250612079915050565b838383510310156120f2578282510393505b83156121285760c8430461210e83838388880360008a8a616139565b6121268383838888038989038a8b8b8b510301616139565b505b606083604051908082528060200260200182016040528015612154578160200160208202803683370190505b50905060608460405190808252806020026020018201604052801561218d57816020015b60608152602001906001900390816121785790505b50905060005b8581101561220e578481815181106121a757fe5b60200260200101518382815181106121bb57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508381815181106121e757fe5b60200260200101518282815181106121fb57fe5b6020908102919091010152600101612193565b509096509450505050509091565b60065481565b61200081565b6001600160a01b03811660009081526004602052604081205480612250576000915050611b92565b600019016110c481611b97565b6001600160a01b03811660009081526004602052604081205480612285576000915050611b92565b60018082038154811061229457fe5b906000526020600020906004020160030154915050919050565b600081565b606781565b600f5481565b601281815481106122cb57fe5b600091825260209182902001805460408051601f600260001961010060018716150201909416939093049283018590048502810185019091528181529350909183018282801561235c5780601f106123315761010080835404028352916020019161235c565b820191906000526020600020905b81548152906001019060200180831161233f57829003601f168201915b505050505081565b60105481565b6001818154811061237757fe5b600091825260209091206004909102018054600182015460028301546003909301546001600160a01b0392831694509082169291821691600160a01b81046001600160401b031691600160e01b90910460ff169086565b61100581565b600281565b601081565b61100881565b600b81565b600c5481565b606681565b33612000146124155760405162461bcd60e51b8152600401610db290618a36565b7f41ce201247b6ceb957dcdb217d0b8acb50b9ea0e12af9af4f5e7f3890210160583838360405161244893929190618c72565b60405180910390a1505050565b6103e881565b60025481565b60115481565b60145460ff1681565b600a5481565b6001600160a01b038116600090815260046020526040812054806124ac5760405162461bcd60e51b8152600401610db2906189be565b6000190192915050565b600b54612574576124c56177a5565b60015460005b8181101561257057600b80546001810182556000919091528351600080516020618d368339815191526016909202918201908155602080860151600080516020618d768339815191528401805460ff191691151591909117905560408601518051879461254c93600080516020618d568339815191529091019201906177d4565b506060820151612562906003830190601361784e565b5050508060010190506124cb565b5050505b6008546125815760036008555b600a5461258e576002600a555b600061259933612476565b90506125a481611ac8565b6125c05760405162461bcd60e51b8152600401610db290618713565b611d9e3382616290565b600981565b61100781565b600381565b60c881565b61100681565b6040518060a0016040528060788152602001618d966078913981565b60005460ff1681565b61200281565b61300081565b6402540be40081565b60005460ff166126415760405162461bcd60e51b8152600401610db2906182f7565b33611007146126625760405162461bcd60e51b8152600401610db29061880a565b6126cc84848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080518082019091526013815272065787069726554696d655365636f6e6447617606c1b602082015291506163289050565b1561276957602081146126f15760405162461bcd60e51b8152600401610db290618978565b604080516020601f840181900481028201810190925282815260009161272f9185858083850183828082843760009201919091525061638192505050565b9050606481101580156127455750620186a08111155b6127615760405162461bcd60e51b8152600401610db290618603565b600255612e7a565b6127c984848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260098152686275726e526174696f60b81b602082015291506163289050565b1561285857602081146127ee5760405162461bcd60e51b8152600401610db29061817d565b604080516020601f840181900481028201810190925282815260009161282c9185858083850183828082843760009201919091525061638192505050565b90506127108111156128505760405162461bcd60e51b8152600401610db290618495565b600655612e7a565b6128c284848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260138152726d61784e756d4f664d61696e7461696e696e6760681b602082015291506163289050565b1561295c57602081146128e75760405162461bcd60e51b8152600401610db2906181b4565b604080516020601f84018190048102820181019092528281526000916129259185858083850183828082843760009201919091525061638192505050565b600c5490915080612934575060155b8082106129535760405162461bcd60e51b8152600401610db290618508565b50600855612e7a565b6129c584848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260128152716d61696e7461696e536c6173685363616c6560701b602082015291506163289050565b15612a5e57602081146129ea5760405162461bcd60e51b8152600401610db29061827d565b604080516020601f8401819004810282018101909252828152600091612a289185858083850183828082843760009201919091525061638192505050565b9050600081118015612a3a5750600a81105b612a565760405162461bcd60e51b8152600401610db290618b16565b600a55612e7a565b612ad284848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601981527f6d61784e756d4f66576f726b696e6743616e6469646174657300000000000000602082015291506163289050565b15612b615760208114612af75760405162461bcd60e51b8152600401610db290618231565b604080516020601f8401819004810282018101909252828152600091612b359185858083850183828082843760009201919091525061638192505050565b9050600d54811115612b595760405162461bcd60e51b8152600401610db290618679565b600e55612e7a565b612bca84848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260128152716d61784e756d4f6643616e6469646174657360701b602082015291506163289050565b15612c4c5760208114612bef5760405162461bcd60e51b8152600401610db290618858565b604080516020601f8401819004810282018101909252828152600091612c2d9185858083850183828082843760009201919091525061638192505050565b600d819055600e54909150811015612c4657600d54600e555b50612e7a565b612cb084848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600d81526c6e756d4f66436162696e65747360981b602082015291506163289050565b15612d5e5760208114612cd55760405162461bcd60e51b8152600401610db2906182c2565b604080516020601f8401819004810282018101909252828152600091612d139185858083850183828082843760009201919091525061638192505050565b905060008111612d355760405162461bcd60e51b8152600401610db290618365565b6064811115612d565760405162461bcd60e51b8152600401610db2906183ad565b600c55612e7a565b612dc684848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601181527073797374656d526577617264526174696f60781b602082015291506163289050565b15612e625760208114612deb5760405162461bcd60e51b8152600401610db290618ad2565b604080516020601f8401819004810282018101909252828152600091612e299185858083850183828082843760009201919091525061638192505050565b905060018110158015612e3e57506127108111155b612e5a5760405162461bcd60e51b8152600401610db2906185b0565b600f55612e7a565b60405162461bcd60e51b8152600401610db290618b73565b7f6cdb0ac70ab7f2e2d035cca5be60d89906f2dede7648ddbd7402189c1eeed17a84848484604051612eaf949392919061814b565b60405180910390a150505050565b60046020526000908152604090205481565b68056bc75e2d6310000081565b6001546060906000805b82811015612f0b57612ef781611b97565b15612f03578160010191505b600101612ee6565b50606081604051908082528060200260200182016040528015612f38578160200160208202803683370190505b5090506000915060005b83811015612fbf57612f5381611b97565b15612fb75760018181548110612f6557fe5b600091825260209091206004909102015482516001600160a01b0390911690839085908110612f9057fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508260010192505b600101612f42565b50925050505b90565b601581565b61027181565b61100281565b601381815481106122cb57fe5b6000612ff0612edc565b519050600080600c5411613005576015613009565b600c545b905080821115613017578091505b8161302157600191505b5090565b67016345785d8a000081565b60055481565b61100381565b61200481565b60005460ff16156130665760405162461bcd60e51b8152600401610db29061890a565b61306e61787b565b60006130916040518060a0016040528060788152602001618d9660789139613cdc565b91509150806130b25760405162461bcd60e51b8152600401610db2906189f5565b60005b8260200151518110156131d7576001836020015182815181106130d457fe5b60209081029190910181015182546001818101855560009485528385208351600493840290910180546001600160a01b039283166001600160a01b03199182161782558587015182850180549185169183169190911790556040860151600283018054606089015160808a01511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b199590981692909516919091179290921694909417161790915560a0909301516003909301929092559186015180519185019391859081106131aa57fe5b602090810291909101810151516001600160a01b03168252810191909152604001600020556001016130b5565b50506103e8600255506000805460ff19166001179055565b600d5481565b33612002146132165760405162461bcd60e51b8152600401610db290618be3565b60005b60155481101561329e57816001600160a01b03166015828154811061323a57fe5b60009182526020909120600490910201546001600160a01b031614156132965760016015828154811061326957fe5b9060005260206000209060040201600201601c6101000a81548160ff02191690831515021790555061329e565b600101613219565b506001600160a01b0381166000908152600460205260409020548015806132ef57506001808203815481106132cf57fe5b9060005260206000209060040201600201601c9054906101000a900460ff165b1561332d576040516001600160a01b038316907fe209c46bebf57cf265d5d9009a00870e256d9150f3ed5281ab9d9eb3cec6e4be90600090a2613336565b610dd28161505d565b5050565b601354600090815b818110156134435761342b85858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060138054909250859150811061339357fe5b600091825260209182902001805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156134215780601f106133f657610100808354040283529160200191613421565b820191906000526020600020905b81548152906001019060200180831161340457829003601f168201915b5050505050616386565b1561343b57600192505050611c42565b600101613342565b5060125460005b818110156134b45761349b86868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060128054909250859150811061339357fe5b156134ac5760019350505050611c42565b60010161344a565b50600095945050505050565b33611001146134e15760405162461bcd60e51b8152600401610db290618b9a565b600b5461359f576134f06177a5565b60015460005b8181101561359b57600b80546001810182556000919091528351600080516020618d368339815191526016909202918201908155602080860151600080516020618d768339815191528401805460ff191691151591909117905560408601518051879461357793600080516020618d568339815191529091019201906177d4565b50606082015161358d906003830190601361784e565b5050508060010190506134f6565b5050505b60006135aa826163ea565b90506135b581611ac8565b15613336576133368282616290565b606581565b3341146135e85760405162461bcd60e51b8152600401610db290618a85565b60005460ff1661360a5760405162461bcd60e51b8152600401610db2906182f7565b6000341161362a5760405162461bcd60e51b8152600401610db29061864a565b3a156136485760405162461bcd60e51b8152600401610db2906187dc565b6001600160a01b03811660009081526004602052604090205460145434919060ff1661368857610271600f556103aa6006556014805460ff191660011790555b60006136b16127106136a5600f548661658d90919063ffffffff16565b9063ffffffff6165c716565b90508015613721576040516110029082156108fc029083906000818181858888f193505050501580156136e8573d6000803e3d6000fd5b507f6ecc855f9440a9282c90913bbc91619fd44f5ec0b462af28d127b116f130aa4d816040516137189190618c29565b60405180910390a15b60008311801561373357506000600654115b156137d95760006137556127106136a56006548761658d90919063ffffffff16565b905080156137d75760405161dead9082156108fc029083906000818181858888f1935050505015801561378c573d6000803e3d6000fd5b507f627059660ea01c4733a328effb2294d2f86905bf806da763a89cee254de8bee5816040516137bc9190618c29565b60405180910390a16137d4848263ffffffff615bb116565b93505b505b6137e9838263ffffffff615bb116565b925081156138e957600060018084038154811061380257fe5b9060005260206000209060040201905080600201601c9054906101000a900460ff161561386f57846001600160a01b03167ff177e5d6c5764d79c32883ed824111d9b13f5668cf6ab1cc12dd36791dd955b4856040516138629190618c29565b60405180910390a26138e3565b600354613882908563ffffffff615bf316565b600390815581015461389a908563ffffffff615bf316565b60038201556040516001600160a01b038616907f93a090ecc682c002995fad3c85b30c5651d7fd29b0be5da9d784a3302aedc055906138da908790618c29565b60405180910390a25b5061392b565b836001600160a01b03167ff177e5d6c5764d79c32883ed824111d9b13f5668cf6ab1cc12dd36791dd955b4846040516139229190618c29565b60405180910390a25b50505050565b600e5481565b61100081565b61dead81565b600b818154811061395057fe5b6000918252602091829020601691909102018054600180830154600280850180546040805161010096831615969096026000190190911692909204601f810188900488028501880190925281845293965060ff909116949192918301828280156139fb5780601f106139d0576101008083540402835291602001916139fb565b820191906000526020600020905b8154815290600101906020018083116139de57829003601f168201915b5050505050905083565b61100481565b6000600a5460001480613a1c575081155b80613a275750600954155b15613a34575060006110c4565b60096000815460019003919050819055506000613a7f600a546136a5856136a5600b8981548110613a6157fe5b6000918252602090912060169091020154439063ffffffff615bb116565b90506000600b8581548110613a9057fe5b906000526020600020906016020160010160006101000a81548160ff0219169083151502179055506000806110016001600160a01b0316638256ace66040518163ffffffff1660e01b8152600401604080518083038186803b158015613af557600080fd5b505afa158015613b09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b2d9190617e68565b9150915060009350808310613c8c57613b468787615c18565b506040516333c1892360e21b81526000906120029063cf06248c90613b6f908b90600401617fa5565b60206040518083038186803b158015613b8757600080fd5b505afa158015613b9b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613bbf9190617c15565b6001600160a01b031614613c2b576040516313d13bdb60e31b815261100190639e89ded890613bf4908a908790600401617fb9565b600060405180830381600087803b158015613c0e57600080fd5b505af1158015613c22573d6000803e3d6000fd5b50505050613c83565b6040516305bfb49960e41b815261100190635bfb499090613c50908a90600401617fa5565b600060405180830381600087803b158015613c6a57600080fd5b505af1158015613c7e573d6000803e3d6000fd5b505050505b60019350613c9e565b818310613c9e57613c9c876163ea565b505b6040516001600160a01b038816907fb9d38178dc641ff1817967a63c9078cbcd955a9f1fcd75e0e3636de615d44d3b90600090a25050509392505050565b613ce461787b565b6000613cee61787b565b613cf6617918565b613d07613d0286616609565b61662e565b90506000805b613d1683616678565b15613e8a5780613d3b57613d31613d2c84616699565b6166e7565b60ff168452613e82565b8060011415613e7d576060613d57613d5285616699565b616767565b90508051604051908082528060200260200182016040528015613d9457816020015b613d8161789f565b815260200190600190039081613d795790505b5085602001819052508051604051908082528060200260200182016040528015613dd257816020015b6060815260200190600190039081613dbd5790505b50604086015260005b8151811015613e7257613dec61789f565b60606000613e0c858581518110613dff57fe5b6020026020010151616838565b92509250925080613e2c578860009a509a50505050505050505050613e93565b8289602001518581518110613e3d57fe5b60200260200101819052508189604001518581518110613e5957fe5b6020026020010181905250505050806001019050613ddb565b506001925050613e82565b613e8a565b600101613d0d565b50919350909150505b915091565b604080516001808252818301909252606091829190816020015b6060815260200190600190039081613eb2579050509050613ed88363ffffffff16616952565b81600081518110613ee557fe5b60200260200101819052506110c481616965565b6000606483511115613f3057600080516020618d16833981519152604051613f209061840a565b60405180910390a1506066611c42565b60005b8351811015613fce5760005b81811015613fc557848181518110613f5357fe5b6020026020010151600001516001600160a01b0316858381518110613f7457fe5b6020026020010151600001516001600160a01b03161415613fbd57600080516020618d16833981519152604051613faa90618565565b60405180910390a1606692505050611c42565b600101613f3f565b50600101613f33565b5060608060606015805480602002602001604051908101604052809291908181526020016000905b828210156140805760008481526020908190206040805160c0810182526004860290920180546001600160a01b039081168452600180830154821685870152600283015491821693850193909352600160a01b81046001600160401b03166060850152600160e01b900460ff16151560808401526003015460a08301529083529092019101613ff6565b50505050905060606016805480602002602001604051908101604052809291908181526020016000905b828210156141555760008481526020908190208301805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156141415780601f1061411657610100808354040283529160200191614141565b820191906000526020600020905b81548152906001019060200180831161412457829003601f168201915b5050505050815260200190600101906140aa565b50505050905060005b82518110156141b25782818151811061417357fe5b60200260200101516060015160020283828151811061418e57fe5b60209081029190910101516001600160401b0390911660609091015260010161415e565b506060806141c2898986866169ef565b915091506141d08282615171565b6001546040805182815260208084028201019091529298509096506000955085945092506060915082801561420f578160200160208202803683370190505b50905060005b828110156143a05760006001600160a01b03166120026001600160a01b031663cf06248c6001848154811061424657fe5b60009182526020909120600491820201546040516001600160e01b031960e085901b168152614281926001600160a01b039092169101617fa5565b60206040518083038186803b15801561429957600080fd5b505afa1580156142ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142d19190617c15565b6001600160a01b0316146143335760018282815181106142ed57fe5b602002602001019060ff16908160ff16815250506001818154811061430e57fe5b90600052602060002090600402016003015460001461432e578360010193505b614398565b67016345785d8a00006001828154811061434957fe5b9060005260206000209060040201600301541061436b57846001019450614398565b6001818154811061437857fe5b906000526020600020906004020160030154600014614398578360010193505b600101614215565b506060846040519080825280602002602001820160405280156143cd578160200160208202803683370190505b5090506060856040519080825280602002602001820160405280156143fc578160200160208202803683370190505b50905060608660405190808252806020026020018201604052801561442b578160200160208202803683370190505b50905060608760405190808252806020026020018201604052801561445a578160200160208202803683370190505b509050600060608860405190808252806020026020018201604052801561448b578160200160208202803683370190505b5090506060896040519080825280602002602001820160405280156144ba578160200160208202803683370190505b50905060009a506000995060006110046001600160a01b031663149d14d96040518163ffffffff1660e01b815260040160206040518083038186803b15801561450257600080fd5b505afa158015614516573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061453a9190617e50565b905067016345785d8a000081111561458657600080516020618d16833981519152604051614567906188c9565b60405180910390a160689e505050505050505050505050505050611c42565b60005b8a81101561491a5789818151811061459d57fe5b602002602001015160ff166001141561469357600181815481106145bd57fe5b90600052602060002090600402016003015460001461468e57600181815481106145e357fe5b600091825260209091206004909102015484516001600160a01b039091169085908e90811061460e57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250506001818154811061463b57fe5b906000526020600020906004020160030154838d8151811061465957fe5b60200260200101818152505060018a8d8151811061467357fe5b602002602001019060ff16908160ff16815250508b6001019b505b614912565b67016345785d8a0000600182815481106146a957fe5b9060005260206000209060040201600301541061482e57600181815481106146cd57fe5b906000526020600020906004020160020160009054906101000a90046001600160a01b0316898e815181106146fe57fe5b60200260200101906001600160a01b031690816001600160a01b03168152505060006402540be4006001838154811061473357fe5b9060005260206000209060040201600301548161474c57fe5b066001838154811061475a57fe5b9060005260206000209060040201600301540390506147828382615bb190919063ffffffff16565b898f8151811061478e57fe5b602002602001018181525050600182815481106147a757fe5b906000526020600020906004020160010160009054906101000a90046001600160a01b0316878f815181106147d857fe5b60200260200101906001600160a01b031690816001600160a01b03168152505081888f8151811061480557fe5b6020908102919091010152614820868263ffffffff615bf316565b95508d6001019d5050614912565b6001818154811061483b57fe5b906000526020600020906004020160030154600014614912576001818154811061486157fe5b906000526020600020906004020160010160009054906101000a90046001600160a01b0316848d8151811061489257fe5b60200260200101906001600160a01b031690816001600160a01b031681525050600181815481106148bf57fe5b906000526020600020906004020160030154838d815181106148dd57fe5b60200260200101818152505060008a8d815181106148f757fe5b602002602001019060ff16908160ff16815250508b6001019b505b600101614589565b5060008415614b90576002546040516303702b2960e51b815261100491636e056520918891614954918e918e918d914201906004016180b3565b6020604051808303818588803b15801561496d57600080fd5b505af19350505050801561499e575060408051601f3d908101601f1916820190925261499b91810190617d7d565b60015b614b15576040516000815260443d10156149ba57506000614a55565b60046000803e60005160e01c6308c379a081146149db576000915050614a55565b60043d036004833e81513d60248201116001600160401b0382111715614a0657600092505050614a55565b80830180516001600160401b03811115614a27576000945050505050614a55565b8060208301013d8601811115614a4557600095505050505050614a55565b601f01601f191660405250925050505b80614a605750614aa2565b60019150857fa7cdeed7d0db45e3219a6e5d60838824c16f1d39991fcfe3f963029c844bf28082604051614a949190618138565b60405180910390a250614b10565b3d808015614acc576040519150601f19603f3d011682016040523d82523d6000602084013e614ad1565b606091505b5060019150857fbfa884552dd8921b6ce90bfe906952ae5b3b29be0cc1a951d4f62697635a3a4582604051614b069190618138565b60405180910390a2505b614b90565b8015614b57577fa217d08e65f80c73121cd9db834d81652d544bfbf452f6d04922b16c90a37b7086604051614b4a9190618c29565b60405180910390a1614b8e565b857fa7cdeed7d0db45e3219a6e5d60838824c16f1d39991fcfe3f963029c844bf280604051614b85906181fa565b60405180910390a25b505b8015614d465760005b8751811015614d44576000888281518110614bb057fe5b60200260200101519050600060018281548110614bc957fe5b60009182526020909120600160049092020181015481546001600160a01b03909116916108fc9185908110614bfa57fe5b9060005260206000209060040201600301549081150290604051600060405180830381858888f1935050505090508015614cb65760018281548110614c3b57fe5b60009182526020909120600160049092020181015481546001600160a01b03909116917f6c61d60f69a7beb3e1c80db7f39f37b208537cbb19da3174511b477812b2fc7d9185908110614c8a57fe5b906000526020600020906004020160030154604051614ca99190618c29565b60405180910390a2614d3a565b60018281548110614cc357fe5b60009182526020909120600160049092020181015481546001600160a01b03909116917f25d0ce7d2f0cec669a8c17efe49d195c13455bb8872b65fa610ac7f53fe4ca7d9185908110614d1257fe5b906000526020600020906004020160030154604051614d319190618c29565b60405180910390a25b5050600101614b99565b505b835115614f3c5760005b8451811015614f3a578a8181518110614d6557fe5b602002602001015160ff1660011415614e04576120026001600160a01b031663092193ab858381518110614d9557fe5b6020026020010151878481518110614da957fe5b60200260200101516040518363ffffffff1660e01b8152600401614dcd9190617fa5565b6000604051808303818588803b158015614de657600080fd5b505af1158015614dfa573d6000803e3d6000fd5b5050505050614f32565b6000858281518110614e1257fe5b60200260200101516001600160a01b03166108fc868481518110614e3257fe5b60200260200101519081150290604051600060405180830381858888f1935050505090508015614ec857858281518110614e6857fe5b60200260200101516001600160a01b03167f6c61d60f69a7beb3e1c80db7f39f37b208537cbb19da3174511b477812b2fc7d868481518110614ea657fe5b6020026020010151604051614ebb9190618c29565b60405180910390a2614f30565b858281518110614ed457fe5b60200260200101516001600160a01b03167f25d0ce7d2f0cec669a8c17efe49d195c13455bb8872b65fa610ac7f53fe4ca7d868481518110614f1257fe5b6020026020010151604051614f279190618c29565b60405180910390a25b505b600101614d50565b505b505050505050505050505050506000471115614fb9577f6ecc855f9440a9282c90913bbc91619fd44f5ec0b462af28d127b116f130aa4d47604051614f819190618c29565b60405180910390a1604051611002904780156108fc02916000818181858888f19350505050158015614fb7573d6000803e3d6000fd5b505b60006003819055600555815115614fd457614fd482826153aa565b6110016001600160a01b031663fc4333cd6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561501157600080fd5b505af1158015615025573d6000803e3d6000fd5b50506040517fedd8d7296956dd970ab4de3f2fc03be2b0ffc615d20cd4c72c6e44f928630ebf925060009150a1506000949350505050565b600154600554600091906000198201118015906150d05760018085038154811061508357fe5b600091825260208220600490910201546040516001600160a01b03909116917fe209c46bebf57cf265d5d9009a00870e256d9150f3ed5281ab9d9eb3cec6e4be91a2600092505050611b92565b6005805460019081019091558054819060001987019081106150ee57fe5b9060005260206000209060040201600201601c6101000a81548160ff02191690831515021790555060018085038154811061512557fe5b600091825260208220600490910201546040516001600160a01b03909116917ff226e7d8f547ff903d9d419cf5f54e0d7d07efa9584135a53a057c5f1f27f49a91a25060009392505050565b606080600080808080615182612fe6565b6001549091505b801561529057600181039250600b83815481106151a257fe5b600091825260209091206001601690920201015460ff166151c257615287565b600183815481106151cf57fe5b60009182526020909120600490910201546001600160a01b031694506151f6858484613a0b565b9350831580615209575060018a51038610155b1561521357615287565b60005b8a5181101561528557856001600160a01b03168b828151811061523557fe5b6020026020010151600001516001600160a01b0316141561527d5760018b828151811061525e57fe5b6020908102919091010151901515608090910152600190960195615285565b600101615216565b505b60001901615189565b50848951036040519080825280602002602001820160405280156152ce57816020015b6152bb61789f565b8152602001906001900390816152b35790505b5096508489510360405190808252806020026020018201604052801561530857816020015b60608152602001906001900390816152f35790505b5095506000915060005b895181101561539c5789818151811061532757fe5b6020026020010151608001516153945789818151811061534357fe5b602002602001015188848151811061535757fe5b602002602001018190525088818151811061536e57fe5b602002602001015187848151811061538257fe5b60200260200101819052508260010192505b600101615312565b5050505050505b9250929050565b600154825160005b828110156154c75760016153c461789f565b600183815481106153d157fe5b600091825260208083206040805160c08101825260049490940290910180546001600160a01b0390811685526001820154811693850193909352600281015492831691840191909152600160a01b82046001600160401b03166060840152600160e01b90910460ff16151560808301526003015460a082015291505b8481101561549b5787818151811061546157fe5b6020026020010151600001516001600160a01b031682600001516001600160a01b03161415615493576000925061549b565b60010161544d565b5081156154bd5780516001600160a01b03166000908152600460205260408120555b50506001016153b2565b508082111561558657805b828110156155845760018054806154e557fe5b60008281526020812060046000199093019283020180546001600160a01b0319908116825560018201805490911690556002810180546001600160e81b0319169055600301559055600b80548061553857fe5b60008281526020812060166000199093019283020181815560018101805460ff191690559061556a60028301826178d4565b615578600383016000617938565b505090556001016154d2565b505b60008183106155955781615597565b825b905060005b81811015615953576156498682815181106155b357fe5b6020026020010151600183815481106155c857fe5b60009182526020918290206040805160c08101825260049390930290910180546001600160a01b0390811684526001820154811694840194909452600281015493841691830191909152600160a01b83046001600160401b03166060830152600160e01b90920460ff161515608082015260039091015460a0820152616dbb565b6157fd57806001016004600088848151811061566157fe5b6020026020010151600001516001600160a01b03166001600160a01b031681526020019081526020016000208190555085818151811061569d57fe5b6020026020010151600182815481106156b257fe5b6000918252602091829020835160049092020180546001600160a01b039283166001600160a01b0319918216178255928401516001820180549184169185169190911790556040840151600282018054606087015160808801511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b1995909716929097169190911792909216939093171692909217905560a090910151600390910155845185908290811061576d57fe5b6020026020010151600b828154811061578257fe5b906000526020600020906016020160020190805190602001906157a69291906177d4565b506000600b82815481106157b657fe5b60009182526020822060169190910201600101805460ff191692151592909217909155600b8054839081106157e757fe5b600091825260209091206016909102015561594b565b61588e85828151811061580c57fe5b6020026020010151600b838154811061582157fe5b600091825260209182902060026016909202018101805460408051601f6000196101006001861615020190931694909404918201859004850284018501905280835291929091908301828280156134215780601f106133f657610100808354040283529160200191613421565b6158d95784818151811061589e57fe5b6020026020010151600b82815481106158b357fe5b906000526020600020906016020160020190805190602001906158d79291906177d4565b505b6000600182815481106158e857fe5b90600052602060002090600402016003018190555085818151811061590957fe5b6020026020010151608001516001828154811061592257fe5b9060005260206000209060040201600201601c6101000a81548160ff0219169083151502179055505b60010161559c565b5082821115615b2b576159646177a5565b835b83811015615b285785818151811061597a57fe5b60200260200101518260400181905250600187828151811061599857fe5b6020908102919091018101518254600181810185556000948552838520835160049093020180546001600160a01b039384166001600160a01b0319918216178255848601518284018054918616918316919091179055604080860151600284018054606089015160808a01511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b1995909a1692909616919091179290921696909617169190911790935560a090930151600390930192909255600b8054928301815590935284516016909102600080516020618d36833981519152810191825585830151600080516020618d768339815191528201805491151560ff1990921691909117905592850151805186949293615ace93600080516020618d56833981519152019201906177d4565b506060820151615ae4906003830190601361784e565b5050508060010160046000898481518110615afb57fe5b602090810291909101810151516001600160a01b0316825281019190915260400160002055600101615966565b50505b615b33616e3c565b615b3b61701e565b6000600981905560015493505b83811015615ba9576000600b8281548110615b5f57fe5b60009182526020822060169190910201600101805460ff191692151592909217909155600b805483908110615b9057fe5b6000918252602090912060169091020155600101615b48565b505050505050565b60006110c483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061720c565b6000828201838110156110c45760405162461bcd60e51b8152600401610db29061832e565b60008060018381548110615c2857fe5b90600052602060002090600402016003015490506000600180805490500390506001615c52612edc565b5111615c8757600060018581548110615c6757fe5b906000526020600020906004020160030181905550600092505050611c42565b846001600160a01b03167f3b6f9ef90462b512a1293ecec018670bf7b7f1876fb727590a8a6d7643130a7083604051615cc09190618c29565b60405180910390a26001600160a01b038516600090815260046020526040812055835b60015460001901811015615ead5760018160010181548110615d0157fe5b906000526020600020906004020160018281548110615d1c57fe5b60009182526020909120825460049092020180546001600160a01b03199081166001600160a01b0393841617825560018085015481840180548416918616919091179055600280860180549185018054909416919095161780835584546001600160401b03600160a01b91829004160267ffffffffffffffff60a01b1990911617808355935460ff600160e01b918290041615150260ff60e01b19909416939093179055600392830154920191909155600b805490918301908110615ddd57fe5b9060005260206000209060160201600b8281548110615df857fe5b600091825260209091208254601690920201908155600180830154818301805460ff909216151560ff1990921691909117905560028084018054615e4f938386019390821615610100026000190190911604617947565b50615e62600382810190840160136179bc565b50905050806001016004600060018481548110615e7b57fe5b600091825260208083206004909202909101546001600160a01b03168352820192909252604001902055600101615ce3565b506001805480615eb957fe5b60008281526020812060046000199093019283020180546001600160a01b0319908116825560018201805490911690556002810180546001600160e81b0319169055600301559055600b805480615f0c57fe5b60008281526020812060166000199093019283020181815560018101805460ff1916905590615f3e60028301826178d4565b615f4c600383016000617938565b505090556000818381615f5b57fe5b0490508015615fbf5760015460005b81811015615fbc578260018281548110615f8057fe5b9060005260206000209060040201600301540160018281548110615fa057fe5b6000918252602090912060036004909202010155600101615f6a565b50505b50600195945050505050565b60015481516040805182815260208084028201019091526060929190839082801561600a57816020015b6060815260200190600190039081615ff55790505b50600b549091508314616021579250611b92915050565b60005b8281101561613057600b60016004600089858151811061604057fe5b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054038154811061607457fe5b600091825260209182902060026016909202018101805460408051601f60001961010060018616150201909316949094049182018590048502840185019052808352919290919083018282801561610c5780601f106160e15761010080835404028352916020019161610c565b820191906000526020600020905b8154815290600101906020018083116160ef57829003601f168201915b505050505082828151811061611d57fe5b6020908102919091010152600101616024565b50949350505050565b60005b82811015616286576000828783880160405160200161615c929190617f97565b6040516020818303038152906040528051906020012060001c8161617c57fe5b0690508085018287011461627d576000898388018151811061619a57fe5b60200260200101519050606089848901815181106161b457fe5b602002602001015190508a838801815181106161cc57fe5b60200260200101518b858a01815181106161e257fe5b60200260200101906001600160a01b031690816001600160a01b031681525050818b8489018151811061621157fe5b60200260200101906001600160a01b031690816001600160a01b031681525050898388018151811061623f57fe5b60200260200101518a858a018151811061625557fe5b6020026020010181905250808a8489018151811061626f57fe5b602002602001018190525050505b5060010161613c565b5050505050505050565b600980546001908101909155600b8054839081106162aa57fe5b906000526020600020906016020160010160006101000a81548160ff02191690831515021790555043600b82815481106162e057fe5b600091825260208220601690910201919091556040516001600160a01b038416917ff62981a567ec3cec866c6fa93c55bcdf841d6292d18b8d522ececa769375d82d91a25050565b60008160405160200161633b9190617f7b565b60405160208183030381529060405280519060200120836040516020016163629190617f7b565b6040516020818303038152906040528051906020012014905092915050565b015190565b8151815160009160019181148083146163a257600092506163e0565b600160208701838101602088015b6002848385100114156163db5780518351146163cf5760009650600093505b602092830192016163b0565b505050505b5090949350505050565b6001600160a01b0381166000908152600460205260408120548061641357506000199050611b92565b60018103905060006001828154811061642857fe5b906000526020600020906004020160030154905060006001838154811061644b57fe5b6000918252602090912060036004909202010155600154604051600019909101906001600160a01b038616907f8cd4e147d8af98a9e3b6724021b8bf6aed2e5dac71c38f2dce8161b82585b25d906164a4908590618c29565b60405180910390a2806164bc57829350505050611b92565b60008183816164c757fe5b04905080156165835760005b848110156165255781600182815481106164e957fe5b906000526020600020906004020160030154016001828154811061650957fe5b60009182526020909120600360049092020101556001016164d3565b50600180549085015b8181101561658057826001828154811061654457fe5b906000526020600020906004020160030154016001828154811061656457fe5b600091825260209091206003600490920201015560010161652e565b50505b5091949350505050565b60008261659c57506000611c42565b828202828482816165a957fe5b04146110c45760405162461bcd60e51b8152600401610db29061879b565b60006110c483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250617238565b6166116179e6565b506040805180820190915281518152602082810190820152919050565b616636617918565b61663f8261726f565b61664857600080fd5b600061665783602001516172a9565b60208085015160408051808201909152868152920190820152915050919050565b60006166826179e6565b505080518051602091820151919092015191011190565b6166a16179e6565b6166aa82616678565b6166b357600080fd5b602082015160006166c38261730c565b80830160209586015260408051808201909152908152938401919091525090919050565b8051600090158015906166fc57508151602110155b61670557600080fd5b600061671483602001516172a9565b9050808360000151101561673a5760405162461bcd60e51b8152600401610db290618941565b82516020808501518301805192849003929183101561613057506020919091036101000a90049392505050565b60606167728261726f565b61677b57600080fd5b6000616786836173ed565b90506060816040519080825280602002602001820160405280156167c457816020015b6167b16179e6565b8152602001906001900390816167a95790505b50905060006167d685602001516172a9565b60208601510190506000805b8481101561682d576167f38361730c565b915060405180604001604052808381526020018481525084828151811061681657fe5b6020908102919091010152918101916001016167e2565b509195945050505050565b61684061789f565b6060600061684c61789f565b6060616856617918565b61685f8761662e565b90506000805b61686e83616678565b1561694357806168995761688961688484616699565b617449565b6001600160a01b0316855261693b565b80600114156168c1576168ae61688484616699565b6001600160a01b0316602086015261693b565b80600214156168e9576168d661688484616699565b6001600160a01b0316604086015261693b565b8060031415616915576168fe613d2c84616699565b6001600160401b031660608601526001915061693b565b80600414156169365761692f61692a84616699565b617463565b935061693b565b616943565b600101616865565b50929791965091945092505050565b6060611c42616960836174d3565b6175b9565b60608151600014156169865750604080516000815260208101909152611b92565b60608260008151811061699557fe5b602002602001015190506000600190505b83518110156169d6576169cc828583815181106169bf57fe5b602002602001015161760b565b91506001016169a6565b506110c46169e9825160c060ff16617688565b8261760b565b60608060006120026001600160a01b031663c473318f6040518163ffffffff1660e01b815260040160206040518083038186803b158015616a2f57600080fd5b505afa158015616a43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190616a679190617e50565b90508085518851011015616a7c575083518651015b606081604051908082528060200260200182016040528015616ab857816020015b616aa561789f565b815260200190600190039081616a9d5790505b509050606082604051908082528060200260200182016040528015616af157816020015b6060815260200190600190039081616adc5790505b50905060008060005b8b51831080616b095750895182105b8015616b1457508581105b15616da9578b51831415616b8457898281518110616b2e57fe5b6020026020010151858281518110616b4257fe5b6020026020010181905250888281518110616b5957fe5b6020026020010151848281518110616b6d57fe5b602090810291909101015260019182019101616afa565b8951821415616bef578b8381518110616b9957fe5b6020026020010151858281518110616bad57fe5b60200260200101819052508a8381518110616bc457fe5b6020026020010151848281518110616bd857fe5b602090810291909101015260019283019201616afa565b898281518110616bfb57fe5b6020026020010151606001516001600160401b03168c8481518110616c1c57fe5b6020026020010151606001516001600160401b03161115616c98578b8381518110616c4357fe5b6020026020010151858281518110616c5757fe5b60200260200101819052508a8381518110616c6e57fe5b6020026020010151848281518110616c8257fe5b6020026020010181905250826001019250616da1565b898281518110616ca457fe5b6020026020010151606001516001600160401b03168c8481518110616cc557fe5b6020026020010151606001516001600160401b03161015616d4157898281518110616cec57fe5b6020026020010151858281518110616d0057fe5b6020026020010181905250888281518110616d1757fe5b6020026020010151848281518110616d2b57fe5b6020026020010181905250816001019150616da1565b898281518110616d4d57fe5b6020026020010151600001516001600160a01b03168c8481518110616d6e57fe5b6020026020010151600001516001600160a01b03161015616d95578b8381518110616c4357fe5b898281518110616b2e57fe5b600101616afa565b50929a91995090975050505050505050565b805182516000916001600160a01b039182169116148015616df5575081602001516001600160a01b031683602001516001600160a01b0316145b8015616e1a575081604001516001600160a01b031683604001516001600160a01b0316145b80156110c45750506060908101519101516001600160401b0390811691161490565b60125460135480821115616e8757805b82811015616e85576012805480616e5f57fe5b600190038181906000526020600020016000616e7b91906178d4565b9055600101616e4c565b505b6000818310616e965781616e98565b825b905060005b81811015616fb057616f5560128281548110616eb557fe5b600091825260209182902001805460408051601f6002600019610100600187161502019094169390930492830185900485028101850190915281815292830182828015616f435780601f10616f1857610100808354040283529160200191616f43565b820191906000526020600020905b815481529060010190602001808311616f2657829003601f168201915b50505050506013838154811061339357fe5b616fa85760138181548110616f6657fe5b9060005260206000200160128281548110616f7d57fe5b906000526020600020019080546001816001161561010002031660029004616fa6929190617947565b505b600101616e9d565b5082821115610dd257825b8281101561392b57601260138281548110616fd257fe5b6000918252602080832084546001818101875595855291909320929091018054617015949390920192909160026101009282161592909202600019011604617947565b50600101616fbb565b601354600b548082111561706957805b8281101561706757601380548061704157fe5b60019003818190600052602060002001600061705d91906178d4565b905560010161702e565b505b6000818310617078578161707a565b825b905060005b81811015617199576171376013828154811061709757fe5b600091825260209182902001805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156171255780601f106170fa57610100808354040283529160200191617125565b820191906000526020600020905b81548152906001019060200180831161710857829003601f168201915b5050505050600b838154811061582157fe5b61719157600b818154811061714857fe5b90600052602060002090601602016002016013828154811061716657fe5b90600052602060002001908054600181600116156101000203166002900461718f929190617947565b505b60010161707f565b5082821115610dd257825b8281101561392b576013600b82815481106171bb57fe5b60009182526020808320845460018082018755958552919093206016929092029092016002908101805461720395939094019390926000199082161561010002011604617947565b506001016171a4565b600081848411156172305760405162461bcd60e51b8152600401610db29190618138565b505050900390565b600081836172595760405162461bcd60e51b8152600401610db29190618138565b50600083858161726557fe5b0495945050505050565b805160009061728057506000611b92565b6020820151805160001a9060c082101561729f57600092505050611b92565b5060019392505050565b8051600090811a60808110156172c3576000915050611b92565b60b88110806172de575060c081108015906172de575060f881105b156172ed576001915050611b92565b60c08110156173015760b519019050611b92565b60f519019050611b92565b80516000908190811a608081101561732757600191506173e6565b60b881101561733c57607e19810191506173e6565b60c081101561738d57600060b78203600186019550806020036101000a8651049150600181018201935050808310156173875760405162461bcd60e51b8152600401610db2906186e8565b506173e6565b60f88110156173a25760be19810191506173e6565b600060f78203600186019550806020036101000a8651049150600181018201935050808310156173e45760405162461bcd60e51b8152600401610db2906186e8565b505b5092915050565b80516000906173fe57506000611b92565b6000809050600061741284602001516172a9565b602085015185519181019250015b80821015617440576174318261730c565b82019150826001019250617420565b50909392505050565b805160009060151461745a57600080fd5b611c42826166e7565b805160609061747157600080fd5b600061748083602001516172a9565b83516040805191839003808352601f19601f82011683016020019091529192506060908280156174b7576020820181803683370190505b509050600081602001905061613084876020015101828561775a565b604080516020808252818301909252606091829190602082018180368337505050602081018490529050600067ffffffffffffffff1984166175175750601861753b565b6fffffffffffffffffffffffffffffffff1984166175375750601061753b565b5060005b60208110156175715781818151811061755057fe5b01602001516001600160f81b0319161561756957617571565b60010161753b565b60008160200390506060816040519080825280601f01601f1916602001820160405280156175a6576020820181803683370190505b5080830196909652508452509192915050565b6060815160011480156175eb5750607f60f81b826000815181106175d957fe5b01602001516001600160f81b03191611155b156175f7575080611b92565b611c426176098351608060ff16617688565b835b6060806040519050835180825260208201818101602087015b8183101561763c578051835260209283019201617624565b50855184518101855292509050808201602086015b81831015617669578051835260209283019201617651565b508651929092011591909101601f01601f191660405250905092915050565b60606801000000000000000083106176b25760405162461bcd60e51b8152600401610db2906184e0565b6040805160018082528183019092526060916020820181803683370190505090506037841161770c5782840160f81b816000815181106176ee57fe5b60200101906001600160f81b031916908160001a9053509050611c42565b6060617717856174d3565b90508381510160370160f81b8260008151811061773057fe5b60200101906001600160f81b031916908160001a905350617751828261760b565b95945050505050565b8061776457610dd2565b5b60208110617784578251825260209283019290910190601f1901617765565b915181516020939093036101000a6000190180199091169216919091179052565b604051806080016040528060008152602001600015158152602001606081526020016177cf617a00565b905290565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061781557805160ff1916838001178555617842565b82800160010185558215617842579182015b82811115617842578251825591602001919060010190617827565b50613021929150617a1f565b82601381019282156178425791602002820182811115617842578251825591602001919060010190617827565b6040518060600160405280600060ff16815260200160608152602001606081525090565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a081019190915290565b50805460018160011615610100020316600290046000825580601f106178fa5750611d9e565b601f016020900490600052602060002090810190611d9e9190617a1f565b604051806040016040528061792b6179e6565b8152602001600081525090565b50611d9e906013810190617a1f565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106179805780548555617842565b8280016001018555821561784257600052602060002091601f016020900482015b828111156178425782548255916001019190600101906179a1565b826013810192821561784257918201828111156178425782548255916001019190600101906179a1565b604051806040016040528060008152602001600081525090565b6040518061026001604052806013906020820280368337509192915050565b612fc591905b808211156130215760008155600101617a25565b8035611c4281618d00565b60008083601f840112617a55578182fd5b5081356001600160401b03811115617a6b578182fd5b60208301915083602080830285010111156153a357600080fd5b6000601f8381840112617a96578182fd5b8235617aa9617aa482618cb5565b618c8f565b818152925060208084019085810160005b84811015617b3b578135880189603f820112617ad557600080fd5b838101356001600160401b03811115617aed57600080fd5b617afe818901601f19168601618c8f565b81815260408c81848601011115617b1457600080fd5b82818501888401375060009181018601919091528552509282019290820190600101617aba565b50505050505092915050565b600082601f830112617b57578081fd5b8135617b65617aa482618cb5565b818152915060208083019084810181840286018201871015617b8657600080fd5b6000805b85811015617b3b5782356001600160401b0381168114617ba8578283fd5b85529383019391830191600101617b8a565b60008083601f840112617bcb578182fd5b5081356001600160401b03811115617be1578182fd5b6020830191508360208285010111156153a357600080fd5b600060208284031215617c0a578081fd5b81356110c481618d00565b600060208284031215617c26578081fd5b81516110c481618d00565b60008060008060408587031215617c46578283fd5b84356001600160401b0380821115617c5c578485fd5b617c6888838901617a44565b90965094506020870135915080821115617c80578384fd5b50617c8d87828801617a44565b95989497509550505050565b600080600060608486031215617cad578283fd5b83356001600160401b0380821115617cc3578485fd5b81860187601f820112617cd4578586fd5b80359250617ce4617aa484618cb5565b80848252602080830192508084018b828389028701011115617d0457898afd5b8994505b86851015617d2e57617d1a8c82617a39565b845260019490940193928101928101617d08565b509097508801359350505080821115617d45578384fd5b617d5187838801617b47565b93506040860135915080821115617d66578283fd5b50617d7386828701617a85565b9150509250925092565b600060208284031215617d8e578081fd5b815180151581146110c4578182fd5b60008060208385031215617daf578182fd5b82356001600160401b03811115617dc4578283fd5b617dd085828601617bba565b90969095509350505050565b60008060008060408587031215617df1578384fd5b84356001600160401b0380821115617e07578586fd5b617e1388838901617bba565b90965094506020870135915080821115617e2b578384fd5b50617c8d87828801617bba565b600060208284031215617e49578081fd5b5035919050565b600060208284031215617e61578081fd5b5051919050565b60008060408385031215617e7a578182fd5b505080516020909101519092909150565b600080600060408486031215617e9f578081fd5b833560ff81168114617eaf578182fd5b925060208401356001600160401b03811115617ec9578182fd5b617ed586828701617bba565b9497909650939450505050565b6000815180845260208085019450808401835b83811015617f1a5781516001600160a01b031687529582019590820190600101617ef5565b509495945050505050565b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b60008151808452617f67816020860160208601618cd4565b601f01601f19169290920160200192915050565b60008251617f8d818460208701618cd4565b9190910192915050565b918252602082015260400190565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b03968716815294861660208601529290941660408401526001600160401b03166060830152911515608082015260a081019190915260c00190565b6001600160a01b0392909216825260ff16602082015260400190565b6000602082526110c46020830184617ee2565b6000604082526180566040830185617ee2565b602083820381850152818551808452828401915082838202850101838801865b838110156180a457601f19878403018552618092838351617f4f565b94860194925090850190600101618076565b50909998505050505050505050565b6000608082526180c66080830187617ee2565b828103602084810191909152865180835287820192820190845b818110156180fc578451835293830193918301916001016180e0565b505084810360408601526181108188617ee2565b93505050506001600160401b038316606083015295945050505050565b901515815260200190565b6000602082526110c46020830184617f4f565b60006040825261815f604083018688617f25565b8281036020840152618172818587617f25565b979650505050505050565b6020808252601c908201527f6c656e677468206f66206275726e526174696f206d69736d6174636800000000604082015260600190565b60208082526026908201527f6c656e677468206f66206d61784e756d4f664d61696e7461696e696e67206d696040820152650e6dac2e8c6d60d31b606082015260800190565b6020808252601b908201527f6261746368207472616e736665722072657475726e2066616c73650000000000604082015260600190565b6020808252602c908201527f6c656e677468206f66206d61784e756d4f66576f726b696e6743616e6469646160408201526b0e8cae640dad2e6dac2e8c6d60a31b606082015260800190565b60208082526025908201527f6c656e677468206f66206d61696e7461696e536c6173685363616c65206d69736040820152640dac2e8c6d60db1b606082015260800190565b6020808252818101527f6c656e677468206f66206e756d4f66436162696e657473206d69736d61746368604082015260600190565b60208082526019908201527f74686520636f6e7472616374206e6f7420696e69742079657400000000000000604082015260600190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b60208082526028908201527f746865206e756d4f66436162696e657473206d75737420626520677265617465604082015267072207468616e20360c41b606082015260800190565b60208082526039908201527f746865206e756d4f66436162696e657473206d757374206265206c657373207460408201527f68616e204d41585f4e554d5f4f465f56414c494441544f525300000000000000606082015260800190565b60208082526029908201527f746865206e756d626572206f662076616c696461746f727320657863656564206040820152681d1a19481b1a5b5a5d60ba1b606082015260800190565b60208082526022908201527f63616e206e6f7420646f207468697320747769636520696e206f6e6520626c6f604082015261636b60f01b606082015260800190565b6020808252602b908201527f746865206275726e526174696f206d757374206265206e6f206772656174657260408201526a0207468616e2031303030360ac1b606082015260800190565b6020808252600e908201526d696e70757420746f6f206c6f6e6760901b604082015260600190565b60208082526037908201527f746865206d61784e756d4f664d61696e7461696e696e67206d7573742062652060408201527f6c657373207468616e206e756d4f66436162696e657473000000000000000000606082015260800190565b6020808252602b908201527f6475706c696361746520636f6e73656e7375732061646472657373206f66207660408201526a185b1a59185d1bdc94d95d60aa1b606082015260800190565b60208082526033908201527f7468652073797374656d526577617264526174696f206d757374206265206e6f60408201527202067726561746572207468616e20313030303606c1b606082015260800190565b60208082526027908201527f7468652065787069726554696d655365636f6e64476170206973206f7574206f604082015266662072616e676560c81b606082015260800190565b6020808252601590820152746465706f7369742076616c7565206973207a65726f60581b604082015260600190565b60208082526049908201527f746865206d61784e756d4f66576f726b696e6743616e64696461746573206d7560408201527f7374206265206e6f742067726561746572207468616e206d61784e756d4f6643606082015268616e6469646174657360b81b608082015260a00190565b6020808252601190820152706164646974696f6e206f766572666c6f7760781b604082015260600190565b60208082526023908201527f63616e206e6f7420656e7465722054656d706f72617279204d61696e74656e616040820152626e636560e81b606082015260800190565b60208082526025908201527f6c656e677468206f66206a61696c2076616c696461746f7273206d757374206260408201526465206f6e6560d81b606082015260800190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252601490820152736761737072696365206973206e6f74207a65726f60601b604082015260600190565b6020808252602e908201527f746865206d6573736167652073656e646572206d75737420626520676f76657260408201526d1b985b98d94818dbdb9d1c9858dd60921b606082015260800190565b60208082526025908201527f6c656e677468206f66206d61784e756d4f6643616e64696461746573206d69736040820152640dac2e8c6d60db1b606082015260800190565b6020808252601290820152716e6f7420696e206d61696e74656e616e636560701b604082015260600190565b60208082526021908201527f666565206973206c6172676572207468616e2044555354595f494e434f4d494e6040820152604760f81b606082015260800190565b60208082526019908201527f74686520636f6e747261637420616c726561647920696e697400000000000000604082015260600190565b6020808252601a908201527f6c656e677468206973206c657373207468616e206f6666736574000000000000604082015260600190565b60208082526026908201527f6c656e677468206f662065787069726554696d655365636f6e64476170206d696040820152650e6dac2e8c6d60d31b606082015260800190565b60208082526017908201527f6f6e6c792063757272656e742076616c696461746f7273000000000000000000604082015260600190565b60208082526021908201527f6661696c656420746f20706172736520696e69742076616c696461746f7253656040820152601d60fa1b606082015260800190565b6020808252602f908201527f746865206d6573736167652073656e646572206d7573742062652063726f737360408201526e0818da185a5b8818dbdb9d1c9858dd608a1b606082015260800190565b6020808252602d908201527f746865206d6573736167652073656e646572206d75737420626520746865206260408201526c3637b1b590383937b23ab1b2b960991b606082015260800190565b60208082526024908201527f6c656e677468206f662073797374656d526577617264526174696f206d69736d6040820152630c2e8c6d60e31b606082015260800190565b6020808252603e908201527f746865206d61696e7461696e536c6173685363616c65206d757374206265206760408201527f726561746572207468616e203020616e64206c657373207468616e2031300000606082015260800190565b6020808252600d908201526c756e6b6e6f776e20706172616d60981b604082015260600190565b60208082526029908201527f746865206d6573736167652073656e646572206d75737420626520736c6173686040820152680818dbdb9d1c9858dd60ba1b606082015260800190565b6020808252601f908201527f746865206d73672073656e646572206d757374206265207374616b6548756200604082015260600190565b61ffff91909116815260200190565b90815260200190565b60008482528315156020830152606060408301526177516060830184617f4f565b63ffffffff91909116815260200190565b60ff91909116815260200190565b600060ff8516825260406020830152617751604083018486617f25565b6040518181016001600160401b0381118282101715618cad57600080fd5b604052919050565b60006001600160401b03821115618cca578081fd5b5060209081020190565b60005b83811015618cef578181015183820152602001618cd7565b8381111561392b5750506000910152565b6001600160a01b0381168114611d9e57600080fdfe70e72399380dcfb0338abc03dc8d47f9f470ada8e769c9a78d644ea97385ecb20175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db90175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01dbb0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01dbaf87680f873f871949fb29aac15b9a4b7f17c3385939b007540f4d791949fb29aac15b9a4b7f17c3385939b007540f4d791949fb29aac15b9a4b7f17c3385939b007540f4d79164b085e6972fc98cd3c81d64d40e325acfed44365b97a7567a27939c14dbc7512ddcf54cb1284eb637cfa308ae4e00cb5588a164736f6c6343000604000a", + }, + { + ContractAddr: common.HexToAddress(SlashContract), + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/cfc0bd1127186a917ddc38fd38d22903034d3f0b", + Code: "608060405234801561001057600080fd5b50600436106102f15760003560e01c8063831d65d11161019d578063c81b1662116100e9578063df8079e9116100a2578063f9a2bbc71161007c578063f9a2bbc714610575578063fc3e59081461057d578063fc4333cd14610585578063fd6a68791461058d576102f1565b8063df8079e91461055d578063e1c7392a14610565578063eb57bff71461056d576102f1565b8063c81b16621461050c578063c8509d8114610514578063c96be4cb14610527578063cc844b731461053a578063d2a42e4b1461054d578063dc927faf14610555576102f1565b8063aa82dce111610156578063ac0af62911610130578063ac0af629146104e1578063ac431751146104e9578063ae61dc3b146104fc578063c80d4b8f14610504576102f1565b8063aa82dce1146104c9578063aad56063146104d1578063ab51bb96146104d9576102f1565b8063831d65d11461048357806396713da9146104965780639dc092621461049e5780639e89ded8146104a6578063a1a11bf5146104b9578063a78abc16146104c1576102f1565b8063493279b11161025c5780636e47b4821161021557806375d47a0a116101ef57806375d47a0a146104635780637912a65d1461046b5780637942fd05146104735780638256ace61461047b576102f1565b80636e47b4821461044b57806370fd5bad14610453578063718a8aa81461045b576102f1565b8063493279b1146104035780634bf6c8821461041857806351e8067214610420578063567a372d146104285780635bfb49901461043057806362b72cf514610443576102f1565b806335aa2e44116102ae57806335aa2e441461039557806337c8dab9146103a8578063389f4f71146103c95780633a63f4b1146103de5780633dffc387146103e657806343756e5c146103fb576102f1565b80630bee7a67146102f65780630e2374a5146103145780631182b8751461032957806322d1e80b1461034957806323bac5a21461035e5780632796211814610380575b600080fd5b6102fe610595565b60405161030b9190613dd9565b60405180910390f35b61031c61059a565b60405161030b91906135ac565b61033c6103373660046134e2565b6105a0565b60405161030b91906135e4565b610351610606565b60405161030b91906135d9565b61037161036c3660046131f9565b61060f565b60405161030b93929190613dc1565b61039361038e36600461333f565b610632565b005b61031c6103a33660046134b2565b610a4c565b6103bb6103b63660046131f9565b610a73565b60405161030b929190613db3565b6103d1610aca565b60405161030b9190613d89565b6103d1610ad0565b6103ee610ad6565b60405161030b9190613dea565b61031c610adb565b61040b610ae1565b60405161030b9190613d7a565b6103ee610ae6565b61031c610aeb565b6103d1610af1565b61039361043e3660046131f9565b610af7565b6103d1610ba2565b61031c610ba8565b6103ee610bae565b6103ee610bb3565b61031c610bb8565b6103d1610bbe565b6103ee610bc3565b6103bb610bc8565b6103936104913660046134e2565b610bd2565b6103ee610ce5565b61031c610cea565b6103936104b4366004613231565b610cf0565b61031c610d1f565b610351610d25565b61031c610d2e565b61031c610d34565b6102fe610d3a565b6103d1610d3f565b6103936104f7366004613396565b610d44565b6103d16112f4565b6103d16112fb565b61031c611300565b6103936105223660046134e2565b611306565b6103936105353660046131f9565b611377565b6103936105483660046133ff565b6117f8565b6103d1611e43565b61031c611e48565b61031c611e4e565b610393611e54565b6103d1611e91565b61031c611e97565b6103ee611e9d565b610393611ea2565b61031c6122eb565b606481565b61200181565b606033612000146105cc5760405162461bcd60e51b81526004016105c390613bd2565b60405180910390fd5b60005460ff166105ee5760405162461bcd60e51b81526004016105c390613702565b60405162461bcd60e51b81526004016105c390613cc3565b60075460ff1681565b600260208190526000918252604090912080546001820154919092015460ff1683565b60005460ff166106545760405162461bcd60e51b81526004016105c390613702565b8151158015906106645750805115155b6106805760405162461bcd60e51b81526004016105c390613b30565b60408051600380825260808201909252606091816020015b60608152602001906001900390816106985790505090506106b960386122f1565b816000815181106106c657fe5b60200260200101819052506106da8361230c565b816001815181106106e757fe5b60200260200101819052506106fb8261230c565b8160028151811061070857fe5b6020026020010181905250606061071e82612362565b60408051603480825260608281019093529293509091602082018180368337019050509050815160346020830182602086016068600019fa61075f57600080fd5b50601481015160348201516040516333c1892360e21b81526000906120029063cf06248c906107929086906004016135ac565b60206040518083038186803b1580156107aa57600080fd5b505afa1580156107be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107e29190613215565b6001600160a01b031614156108095760405162461bcd60e51b81526004016105c3906136d2565b4281621baf8001101561082e5760405162461bcd60e51b81526004016105c390613673565b60606110006001600160a01b0316633b071dcc6040518163ffffffff1660e01b815260040160006040518083038186803b15801561086b57600080fd5b505afa15801561087f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526108a7919081019061325c565b50905060005b81518110156109ea578181815181106108c257fe5b60200260200101516001600160a01b0316846001600160a01b031614156109e2576006546040516309a99b4f60e41b815260646110028031909302049190639a99b4f09061091690339085906004016135c0565b602060405180830381600087803b15801561093057600080fd5b505af1158015610944573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061096891906134ca565b506110006001600160a01b03166335409f7f84848151811061098657fe5b60200260200101516040518263ffffffff1660e01b81526004016109aa91906135ac565b600060405180830381600087803b1580156109c457600080fd5b505af11580156109d8573d6000803e3d6000fd5b50505050506109ea565b6001016108ad565b50604051631871f7d960e31b81526120029063c38fbec890610a109086906004016135ac565b600060405180830381600087803b158015610a2a57600080fd5b505af1158015610a3e573d6000803e3d6000fd5b505050505050505050505050565b60018181548110610a5957fe5b6000918252602090912001546001600160a01b0316905081565b600080610a7e612fe0565b5050506001600160a01b0316600090815260026020818152604092839020835160608101855281548082526001830154938201849052919093015460ff16151592909301919091529091565b60055481565b60065481565b600181565b61100181565b603881565b600881565b61200081565b60045481565b3361100014610b185760405162461bcd60e51b81526004016105c390613991565b60005460ff16610b3a5760405162461bcd60e51b81526004016105c390613702565b61200063f7a251d7600b610b4d846123f3565b60006040518463ffffffff1660e01b8152600401610b6d93929190613df8565b600060405180830381600087803b158015610b8757600080fd5b505af1158015610b9b573d6000803e3d6000fd5b5050505050565b60035481565b61100581565b600281565b601081565b61100881565b600581565b600b81565b6004546005549091565b3361200014610bf35760405162461bcd60e51b81526004016105c390613bd2565b60005460ff16610c155760405162461bcd60e51b81526004016105c390613702565b610c1d613003565b6000610c5e84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506124bc92505050565b915091508015610ca55781516040517f7f0956d47419b9525356e7111652b653b530ec6f5096dccc04589bc38e62996791610c9891613dd9565b60405180910390a1610b9b565b81516040517f7d45f62d17443dd4547bca8a8112c60e2385669318dc300ec61a5d2492f262e791610cd591613dd9565b60405180910390a150505b505050565b600981565b61100781565b3361100014610d115760405162461bcd60e51b81526004016105c390613991565b610d1b828261253c565b5050565b61100681565b60005460ff1681565b61200281565b61300081565b600081565b600481565b60005460ff16610d665760405162461bcd60e51b81526004016105c390613702565b3361100714610d875760405162461bcd60e51b81526004016105c390613a69565b610df284848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260148152731b5a5cd9195b59585b9bdc951a1c995cda1bdb1960621b602082015291506127139050565b15610e8d5760208114610e175760405162461bcd60e51b81526004016105c39061391d565b604080516020601f8401819004810282018101909252828152600091610e559185858083850183828082843760009201919091525061276d92505050565b905060018110158015610e69575060055481105b610e855760405162461bcd60e51b81526004016105c390613b8d565b6004556112b1565b610ef384848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600f81526e19995b1bdb9e551a1c995cda1bdb19608a1b602082015291506127139050565b15610f8f5760208114610f185760405162461bcd60e51b81526004016105c390613ab7565b604080516020601f8401819004810282018101909252828152600091610f569185858083850183828082843760009201919091525061276d92505050565b90506103e88111158015610f6b575060045481115b610f875760405162461bcd60e51b81526004016105c3906137bb565b6005556112b1565b61100384848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601881527f66696e616c697479536c617368526577617264526174696f0000000000000000602082015291506127139050565b1561109d57602081146110285760405162461bcd60e51b81526004016105c390613cfa565b604080516020601f84018190048102820181019092528281526000916110669185858083850183828082843760009201919091525061276d92505050565b9050600a81101580156110795750606481105b6110955760405162461bcd60e51b81526004016105c3906138d1565b6006556112b1565b61111184848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601881527f656e61626c654d616c6963696f7573566f7465536c6173680000000000000000602082015291506127139050565b1561118857602081146111365760405162461bcd60e51b81526004016105c3906137f0565b604080516020601f8401819004810282018101909252828152611172919084848083850183828082843760009201919091525061277292505050565b6007805460ff19169115159190911790556112b1565b6111fc84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601781527f6d616c6963696f7573566f7465536c61736853636f7065000000000000000000602082015291506127139050565b1561129957602081146112215760405162461bcd60e51b81526004016105c390613629565b604080516020601f840181900481028201810190925282815260009161125f9185858083850183828082843760009201919091525061276d92505050565b905061708081101580156112755750620d2f0081105b6112915760405162461bcd60e51b81526004016105c390613739565b6008556112b1565b60405162461bcd60e51b81526004016105c390613c6e565b7f6cdb0ac70ab7f2e2d035cca5be60d89906f2dede7648ddbd7402189c1eeed17a848484846040516112e694939291906135f7565b60405180910390a150505050565b6201518081565b600a81565b61100281565b33612000146113275760405162461bcd60e51b81526004016105c390613bd2565b60005460ff166113495760405162461bcd60e51b81526004016105c390613702565b6040517f07db600eebe2ac176be8dcebad61858c245a4961bb32ca2aa3d159b09aa0810e90600090a1505050565b3341146113965760405162461bcd60e51b81526004016105c390613c21565b60005460ff166113b85760405162461bcd60e51b81526004016105c390613702565b60035443116113d95760405162461bcd60e51b81526004016105c390613d45565b3a156113f75760405162461bcd60e51b81526004016105c390613a0c565b60405163155853f360e21b8152611000906355614fcc9061141c9084906004016135ac565b60206040518083038186803b15801561143457600080fd5b505afa158015611448573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061146c919061331f565b611475576117f1565b61147d612fe0565b506001600160a01b0381166000908152600260208181526040928390208351606081018552815481526001820154928101929092529091015460ff1615801592820192909252906114d8576020810180516001019052611531565b60016040820181905260208201819052805480820182556000919091527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180546001600160a01b0319166001600160a01b0384161790555b43815260055460208201518161154357fe5b0661171f57600060208201526040516335409f7f60e01b8152611000906335409f7f906115749085906004016135ac565b600060405180830381600087803b15801561158e57600080fd5b505af11580156115a2573d6000803e3d6000fd5b50506040516333c1892360e21b815260009250612002915063cf06248c906115ce9086906004016135ac565b60206040518083038186803b1580156115e657600080fd5b505afa1580156115fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061161e9190613215565b6001600160a01b03161461163f5761163a82826020015161253c565b61171a565b61200063f7a251d7600b611652856123f3565b60006040518463ffffffff1660e01b815260040161167293929190613df8565b600060405180830381600087803b15801561168c57600080fd5b505af192505050801561169d575060015b61171a573d8080156116cb576040519150601f19603f3d011682016040523d82523d6000602084013e6116d0565b606091505b50826001600160a01b03167fd7bc86ff5d08c8ab043edec743302aba2520e6635172a428bc956721db9e2d1c836020015183604051611710929190613d92565b60405180910390a2505b61178b565b60045481602001518161172e57fe5b0661178b576040516375abf10160e11b81526110009063eb57e202906117589085906004016135ac565b600060405180830381600087803b15801561177257600080fd5b505af1158015611786573d6000803e3d6000fd5b505050505b6001600160a01b0382166000818152600260208181526040808420865181559186015160018301558581015191909201805460ff1916911515919091179055517fddb6012116e51abf5436d956a4f0ebd927e92c576ff96d7918290c8782291e3e9190a2505b5043600355565b60005460ff1661181a5760405162461bcd60e51b81526004016105c390613702565b60075460ff1661183c5760405162461bcd60e51b81526004016105c39061369d565b6006546118495760146006555b60085461185857620151806008555b60085481516040015143910111801561187c57504360085482602001516040015101115b6118985760405162461bcd60e51b81526004016105c390613c95565b8060200151602001518160000151602001511480156118c65750806020015160600151816000015160600151145b156118e35760405162461bcd60e51b81526004016105c390613964565b8051604081015190511080156119025750602081015160408101519051105b61191e5760405162461bcd60e51b81526004016105c39061389a565b6020810151518151511080156119435750806000015160400151816020015160400151105b8061196e575080515160208201515110801561196e5750806020015160400151816000015160400151105b806119885750806020015160400151816000015160400151145b6119a45760405162461bcd60e51b81526004016105c390613784565b604080820151905163ea321e4960e01b81526110009163ea321e49916119cd91906004016135e4565b60206040518083038186803b1580156119e557600080fd5b505afa1580156119f9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a1d919061331f565b611a395760405162461bcd60e51b81526004016105c390613a3a565b611a4b8160000151826040015161279a565b8015611a645750611a648160200151826040015161279a565b611a805760405162461bcd60e51b81526004016105c39061383b565b6060806110006001600160a01b0316633b071dcc6040518163ffffffff1660e01b815260040160006040518083038186803b158015611abe57600080fd5b505afa158015611ad2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611afa919081019061325c565b9150915060005b8151811015611c3757611b2b828281518110611b1957fe5b60200260200101518560400151612972565b15611c2f576006546040516309a99b4f60e41b815260646110028031909302049190639a99b4f090611b6390339085906004016135c0565b602060405180830381600087803b158015611b7d57600080fd5b505af1158015611b91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bb591906134ca565b506110006001600160a01b03166335409f7f858481518110611bd357fe5b60200260200101516040518263ffffffff1660e01b8152600401611bf791906135ac565b600060405180830381600087803b158015611c1157600080fd5b505af1158015611c25573d6000803e3d6000fd5b5050505050611c37565b600101611b01565b506040808401519051630f5b9efd60e31b815260009161200291637adcf7e891611c63916004016135e4565b60206040518083038186803b158015611c7b57600080fd5b505afa158015611c8f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cb39190613215565b6001600160a01b031614611d21576040808401519051630e9fbf5160e01b815261200291630e9fbf5191611cea91906004016135e4565b600060405180830381600087803b158015611d0457600080fd5b505af1158015611d18573d6000803e3d6000fd5b50505050610ce0565b6000611d32846040015160006129d6565b90506120006001600160a01b031663f7a251d7600b611d5487604001516129f2565b60006040518463ffffffff1660e01b8152600401611d7493929190613df8565b600060405180830381600087803b158015611d8e57600080fd5b505af1925050508015611d9f575060015b611e11573d808015611dcd576040519150601f19603f3d011682016040523d82523d6000602084013e611dd2565b606091505b50817fd58d1183100bd0932c0588f31c4205d6bc6168909765a96c41adbed3115f362882604051611e0391906135e4565b60405180910390a250611e3d565b60405181907f7b78aadacff901d8b63d0dba4f86283d4db8aef27f9ed70413dd860f1c9532b690600090a25b50505050565b601481565b61100381565b61200481565b60005460ff1615611e775760405162461bcd60e51b81526004016105c390613af9565b60056004819055600a90556000805460ff19166001179055565b60085481565b61100081565b600381565b3361100014611ec35760405162461bcd60e51b81526004016105c390613991565b60005460ff16611ee55760405162461bcd60e51b81526004016105c390613702565b600154611ef1576122e9565b600154600090600019015b8082116122bd576000805b8284101561202057611f17612fe0565b6002600060018781548110611f2857fe5b60009182526020808320909101546001600160a01b0316835282810193909352604091820190208151606081018352815481526001820154938101939093526002015460ff16151590820152600554909150600490048160200151111561200a57600460055481611f9557fe5b04816020015103816020018181525050806002600060018881548110611fb757fe5b6000918252602080832091909101546001600160a01b0316835282810193909352604091820190208351815591830151600183015591909101516002909101805460ff1916911515919091179055612014565b6001925050612020565b50836001019350611f07565b8284116121b75761202f612fe0565b600260006001868154811061204057fe5b60009182526020808320909101546001600160a01b0316835282810193909352604091820190208151606081018352815481526001820154938101939093526002015460ff161515908201526005549091506004900481602001511115612128576004600554816120ad57fe5b048160200151038160200181815250508060026000600187815481106120cf57fe5b6000918252602080832091909101546001600160a01b03168352828101939093526040918201902083518155918301516001808401919091559201516002909101805460ff191691151591909117905591506121b79050565b600260006001868154811061213957fe5b60009182526020808320909101546001600160a01b031683528201929092526040018120818155600181810192909255600201805460ff1916905580548061217d57fe5b600082815260209020810160001990810180546001600160a01b0319169055019055836121aa57506121b7565b5060001990920191612020565b8180156121c15750805b156122a05760026000600186815481106121d757fe5b60009182526020808320909101546001600160a01b031683528201929092526040018120818155600181810192909255600201805460ff1916905580548490811061221e57fe5b600091825260209091200154600180546001600160a01b03909216918690811061224457fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600180548061227d57fe5b600082815260209020810160001990810180546001600160a01b03191690550190555b826122ac5750506122bd565b505060019091019060001901611efc565b6040517fcfdb3b6ccaeccbdc68be3c59c840e3b3c90f0a7c491f5fff1cf56cfda200dd9c90600090a150505b565b61100481565b60606123046122ff83612a2d565b61230c565b90505b919050565b60608151600114801561233e5750607f60f81b8260008151811061232c57fe5b01602001516001600160f81b03191611155b1561234a575080612307565b61230461235c8351608060ff16612b13565b83612be5565b60608151600014156123835750604080516000815260208101909152612307565b60608260008151811061239257fe5b602002602001015190506000600190505b83518110156123d3576123c9828583815181106123bc57fe5b6020026020010151612be5565b91506001016123a3565b506123ec6123e6825160c060ff16612b13565b82612be5565b9392505050565b60408051600480825260a08201909252606091829190816020015b606081526020019060019003908161240e579050509050612437836001600160a01b0316612c62565b8160008151811061244457fe5b6020026020010181905250612458436122f1565b8160018151811061246557fe5b602090810291909101015261247a60386122f1565b8160028151811061248757fe5b602002602001018190525061249b426122f1565b816003815181106124a857fe5b60200260200101819052506123ec81612362565b6124c4613003565b60006124ce613003565b6124d6613015565b6124e76124e286612c85565b612caa565b90506000805b6124f683612cf4565b1561252f57806125225761251161250c84612d15565b612d63565b63ffffffff16845260019150612527565b61252f565b6001016124ed565b5091935090915050915091565b6040516375cc7d8960e01b8152612002906375cc7d89906125619085906004016135ac565b600060405180830381600087803b15801561257b57600080fd5b505af192505050801561258c575060015b610d1b576040516000815260443d10156125a857506000612645565b60046000803e60005160e01c6308c379a081146125c9576000915050612645565b60043d036004833e81513d602482011167ffffffffffffffff821117156125f557600092505050612645565b808301805167ffffffffffffffff811115612617576000945050505050612645565b8060208301013d860181111561263557600095505050505050612645565b601f01601f191660405250925050505b806126505750612699565b826001600160a01b03167fd7bc86ff5d08c8ab043edec743302aba2520e6635172a428bc956721db9e2d1c838360405161268b929190613d92565b60405180910390a25061270e565b3d8080156126c3576040519150601f19603f3d011682016040523d82523d6000602084013e6126c8565b606091505b50826001600160a01b03167fd7bc86ff5d08c8ab043edec743302aba2520e6635172a428bc956721db9e2d1c8383604051612704929190613d92565b60405180910390a2505b610d1b565b6000816040516020016127269190613590565b604051602081830303815290604052805190602001208360405160200161274d9190613590565b604051602081830303815290604052805190602001201490505b92915050565b015190565b8082015160009060ff81161561278c576001915081612792565b60009150815b505092915050565b60408051600480825260a0820190925260009160609190816020015b60608152602001906001900390816127b65750506040805160208082528183019092529192506060919080820181803683370190505090506127fb85600001516122f1565b8260008151811061280857fe5b60200260200101819052506128236020866020015183612de5565b61282c8161230c565b8260018151811061283957fe5b602002602001018190525061285185604001516122f1565b8260028151811061285e57fe5b60200260200101819052506128796020866060015183612de5565b6128828161230c565b8260038151811061288f57fe5b60200260200101819052506128b560206128a884612362565b8051906020012083612de5565b6040805160b080825260e082019092526060916020820181803683370190505090506128e5818360006020612df5565b6128f781876080015160206060612df5565b612905818660806030612df5565b604080516001808252818301909252606091602082018180368337019050509050815160016020830182602086016066600019fa61294257600080fd5b506001612950826000612e48565b60ff1614612965576000945050505050612767565b5060019695505050505050565b81518151600091600191811480831461298e57600092506129cc565b600160208701838101602088015b6002848385100114156129c75780518351146129bb5760009650600093505b6020928301920161299c565b505050505b5090949350505050565b600081602001835110156129e957600080fd5b50016020015190565b60408051600480825260a08201909252606091829190816020015b6060815260200190600190039081612a0d5790505090506124378361230c565b604080516020808252818301909252606091829190602082018180368337505050602081018490529050600067ffffffffffffffff198416612a7157506018612a95565b6fffffffffffffffffffffffffffffffff198416612a9157506010612a95565b5060005b6020811015612acb57818181518110612aaa57fe5b01602001516001600160f81b03191615612ac357612acb565b600101612a95565b60008160200390506060816040519080825280601f01601f191660200182016040528015612b00576020820181803683370190505b5080830196909652508452509192915050565b6060680100000000000000008310612b3d5760405162461bcd60e51b81526004016105c390613872565b60408051600180825281830190925260609160208201818036833701905050905060378411612b975782840160f81b81600081518110612b7957fe5b60200101906001600160f81b031916908160001a9053509050612767565b6060612ba285612a2d565b90508381510160370160f81b82600081518110612bbb57fe5b60200101906001600160f81b031916908160001a905350612bdc8282612be5565b95945050505050565b6060806040519050835180825260208201818101602087015b81831015612c16578051835260209283019201612bfe565b50855184518101855292509050808201602086015b81831015612c43578051835260209283019201612c2b565b508651929092011591909101601f01601f191660405250905092915050565b60408051600560a21b83186014820152603481019091526060906123ec8161230c565b612c8d613035565b506040805180820190915281518152602082810190820152919050565b612cb2613015565b612cbb82612e64565b612cc457600080fd5b6000612cd38360200151612e9e565b60208085015160408051808201909152868152920190820152915050919050565b6000612cfe613035565b505080518051602091820151919092015191011190565b612d1d613035565b612d2682612cf4565b612d2f57600080fd5b60208201516000612d3f82612f01565b80830160209586015260408051808201909152908152938401919091525090919050565b805160009015801590612d7857508151602110155b612d8157600080fd5b6000612d908360200151612e9e565b90508083600001511015612db65760405162461bcd60e51b81526004016105c390613b56565b825160208085015183018051928490039291831015612ddc57826020036101000a820491505b50949350505050565b9091018181526020918201910152565b60005b81811015610b9b57838181518110612e0c57fe5b602001015160f81c60f81b858480600101955081518110612e2957fe5b60200101906001600160f81b031916908160001a905350600101612df8565b60008160010183511015612e5b57600080fd5b50016001015190565b8051600090612e7557506000612307565b6020820151805160001a9060c0821015612e9457600092505050612307565b5060019392505050565b8051600090811a6080811015612eb8576000915050612307565b60b8811080612ed3575060c08110801590612ed3575060f881105b15612ee2576001915050612307565b60c0811015612ef65760b519019050612307565b60f519019050612307565b80516000908190811a6080811015612f1c5760019150612fd9565b60b8811015612f3157607e1981019150612fd9565b60c0811015612f8257600060b78203600186019550806020036101000a865104915060018101820193505080831015612f7c5760405162461bcd60e51b81526004016105c3906139e1565b50612fd9565b60f8811015612f975760be1981019150612fd9565b600060f78203600186019550806020036101000a8651049150600181018201935050808310156127925760405162461bcd60e51b81526004016105c3906139e1565b5092915050565b604051806060016040528060008152602001600081526020016000151581525090565b60408051602081019091526000815290565b6040518060400160405280613028613035565b8152602001600081525090565b604051806040016040528060008152602001600081525090565b600082601f83011261305f578081fd5b815161307261306d82613e4b565b613e24565b818152915060208083019084810160005b848110156130e8578151870188603f82011261309e57600080fd5b838101516130ae61306d82613e6b565b81815260408b818486010111156130c457600080fd5b6130d383888401838701613e8f565b50865250509282019290820190600101613083565b505050505092915050565b60008083601f840112613104578182fd5b50813567ffffffffffffffff81111561311b578182fd5b60208301915083602082850101111561313357600080fd5b9250929050565b600082601f83011261314a578081fd5b813561315861306d82613e6b565b915080825283602082850101111561316f57600080fd5b8060208401602084013760009082016020015292915050565b600060a08284031215613199578081fd5b6131a360a0613e24565b905081358152602082013560208201526040820135604082015260608201356060820152608082013567ffffffffffffffff8111156131e157600080fd5b6131ed8482850161313a565b60808301525092915050565b60006020828403121561320a578081fd5b81356123ec81613ebb565b600060208284031215613226578081fd5b81516123ec81613ebb565b60008060408385031215613243578081fd5b823561324e81613ebb565b946020939093013593505050565b6000806040838503121561326e578182fd5b825167ffffffffffffffff80821115613285578384fd5b81850186601f820112613296578485fd5b805192506132a661306d84613e4b565b80848252602080830192508084018a8283890287010111156132c6578889fd5b8894505b868510156132f15780516132dd81613ebb565b8452600194909401939281019281016132ca565b508801519096509350505080821115613308578283fd5b506133158582860161304f565b9150509250929050565b600060208284031215613330578081fd5b815180151581146123ec578182fd5b60008060408385031215613351578182fd5b823567ffffffffffffffff80821115613368578384fd5b6133748683870161313a565b93506020850135915080821115613389578283fd5b506133158582860161313a565b600080600080604085870312156133ab578182fd5b843567ffffffffffffffff808211156133c2578384fd5b6133ce888389016130f3565b909650945060208701359150808211156133e6578384fd5b506133f3878288016130f3565b95989497509550505050565b600060208284031215613410578081fd5b813567ffffffffffffffff80821115613427578283fd5b81840160608187031215613439578384fd5b6134436060613e24565b9250803582811115613453578485fd5b61345f87828401613188565b845250602081013582811115613473578485fd5b61347f87828401613188565b602085015250604081013582811115613496578485fd5b6134a28782840161313a565b6040850152509195945050505050565b6000602082840312156134c3578081fd5b5035919050565b6000602082840312156134db578081fd5b5051919050565b6000806000604084860312156134f6578081fd5b833560ff81168114613506578182fd5b9250602084013567ffffffffffffffff811115613521578182fd5b61352d868287016130f3565b9497909650939450505050565b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b6000815180845261357c816020860160208601613e8f565b601f01601f19169290920160200192915050565b600082516135a2818460208701613e8f565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b901515815260200190565b6000602082526123ec6020830184613564565b60006040825261360b60408301868861353a565b828103602084015261361e81858761353a565b979650505050505050565b6020808252602a908201527f6c656e677468206f66206d616c6963696f7573566f7465536c61736853636f706040820152690ca40dad2e6dac2e8c6d60b31b606082015260800190565b60208082526010908201526f195d9a59195b98d9481d1bdbc81bdb1960821b604082015260600190565b6020808252818101527f6d616c6963696f757320766f746520736c617368206e6f7420656e61626c6564604082015260600190565b6020808252601690820152751d985b1a59185d1bdc881b9bdd081b5a59dc985d195960521b604082015260600190565b60208082526019908201527f74686520636f6e7472616374206e6f7420696e69742079657400000000000000604082015260600190565b6020808252602b908201527f746865206d616c6963696f757320766f746520736c6173682073636f7065206f60408201526a7574206f662072616e676560a81b606082015260800190565b6020808252601a908201527f6e6f2076696f6c6174696f6e206f6620766f74652072756c6573000000000000604082015260600190565b6020808252818101527f7468652066656c6f6e795468726573686f6c64206f7574206f662072616e6765604082015260600190565b6020808252602b908201527f6c656e677468206f6620656e61626c654d616c6963696f7573566f7465536c6160408201526a0e6d040dad2e6dac2e8c6d60ab1b606082015260800190565b60208082526017908201527f766572696679207369676e6174757265206661696c6564000000000000000000604082015260600190565b6020808252600e908201526d696e70757420746f6f206c6f6e6760901b604082015260600190565b60208082526019908201527f7372634e756d20626967676572207468616e207461724e756d00000000000000604082015260600190565b6020808252602c908201527f7468652066696e616c69747920736c6173682072657761726420726174696f2060408201526b6f7574206f662072616e676560a01b606082015260800190565b60208082526027908201527f6c656e677468206f66206d697364656d65616e6f725468726573686f6c64206d6040820152660d2e6dac2e8c6d60cb1b606082015260800190565b60208082526013908201527274776f206964656e746963616c20766f74657360681b604082015260600190565b60208082526030908201527f746865206d6573736167652073656e646572206d7573742062652076616c696460408201526f185d1bdc94d95d0818dbdb9d1c9858dd60821b606082015260800190565b6020808252601190820152706164646974696f6e206f766572666c6f7760781b604082015260600190565b6020808252601490820152736761737072696365206973206e6f74207a65726f60601b604082015260600190565b6020808252601590820152741d9bdd195059191c881a5cc81b9bdd08199bdd5b99605a1b604082015260600190565b6020808252602e908201527f746865206d6573736167652073656e646572206d75737420626520676f76657260408201526d1b985b98d94818dbdb9d1c9858dd60921b606082015260800190565b60208082526022908201527f6c656e677468206f662066656c6f6e795468726573686f6c64206d69736d61746040820152610c6d60f31b606082015260800190565b60208082526019908201527f74686520636f6e747261637420616c726561647920696e697400000000000000604082015260600190565b6020808252600c908201526b32b6b83a3c903432b0b232b960a11b604082015260600190565b6020808252601a908201527f6c656e677468206973206c657373207468616e206f6666736574000000000000604082015260600190565b60208082526025908201527f746865206d697364656d65616e6f725468726573686f6c64206f7574206f662060408201526472616e676560d81b606082015260800190565b6020808252602f908201527f746865206d6573736167652073656e646572206d7573742062652063726f737360408201526e0818da185a5b8818dbdb9d1c9858dd608a1b606082015260800190565b6020808252602d908201527f746865206d6573736167652073656e646572206d75737420626520746865206260408201526c3637b1b590383937b23ab1b2b960991b606082015260800190565b6020808252600d908201526c756e6b6e6f776e20706172616d60981b604082015260600190565b6020808252601490820152731d185c99d95d08189b1bd8dac81d1bdbc81bdb1960621b604082015260600190565b6020808252601e908201527f7265636569766520756e65787065637465642073796e207061636b6167650000604082015260600190565b6020808252602b908201527f6c656e677468206f662066696e616c697479536c61736852657761726452617460408201526a0d2de40dad2e6dac2e8c6d60ab1b606082015260800190565b6020808252818101527f63616e206e6f7420736c61736820747769636520696e206f6e6520626c6f636b604082015260600190565b61ffff91909116815260200190565b90815260200190565b600083825260406020830152613dab6040830184613564565b949350505050565b918252602082015260400190565b92835260208301919091521515604082015260600190565b63ffffffff91909116815260200190565b60ff91909116815260200190565b600060ff8516825260606020830152613e146060830185613564565b9050826040830152949350505050565b60405181810167ffffffffffffffff81118282101715613e4357600080fd5b604052919050565b600067ffffffffffffffff821115613e61578081fd5b5060209081020190565b600067ffffffffffffffff821115613e81578081fd5b50601f01601f191660200190565b60005b83811015613eaa578181015183820152602001613e92565b83811115611e3d5750506000910152565b6001600160a01b0381168114613ed057600080fd5b5056fea164736f6c6343000604000a", + }, + { + ContractAddr: common.HexToAddress(StakingContract), + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/cfc0bd1127186a917ddc38fd38d22903034d3f0b", + Code: "6080604052600436106103a65760003560e01c8063718a8aa8116101e7578063b88a802f1161010d578063dc927faf116100a0578063f9a2bbc71161006f578063f9a2bbc714610ca0578063fa03f79714610cb5578063fc3e590814610692578063fd6a687914610cca576103ad565b8063dc927faf14610c1c578063df8079e914610c31578063edc1a5b014610c46578063f45fd80b14610c5b576103ad565b8063c81b1662116100dc578063c81b166214610b47578063c8509d8114610b5c578063d61b9b9314610be1578063d7ecfcb61461083a576103ad565b8063b88a802f14610acd578063baaafd3b14610ae2578063bf8546ca14610af7578063c2117d8214610b32576103ad565b80639dc0926211610185578063aad5606311610154578063aad56063146109c3578063ab51bb96146109d8578063ac431751146109ed578063b14315df14610ab8576103ad565b80639dc092621461095b578063a1a11bf514610970578063a78abc1614610985578063aa82dce1146109ae576103ad565b80637942fd05116101c15780637942fd05146108ac578063831d65d1146108c157806392b888a41461063e57806396713da914610946576103ad565b8063718a8aa81461084f57806375aca5931461086457806375d47a0a14610897576103ad565b8063413d9c3a116102cc5780635d17c8bd1161026a5780636bd8f804116102395780636bd8f804146107bc5780636e47b482146107f25780636fb7f7eb1461080757806370fd5bad1461083a576103ad565b80635d17c8bd146107685780635d499b1b1461077d57806362b171d21461079257806369b635b6146107a7576103ad565b80634bf6c882116102a65780634bf6c882146106fd5780634d99dd161461071257806351e806721461073e578063552aaf9314610753576103ad565b8063413d9c3a146106a757806343756e5c146106bc578063493279b1146106d1576103ad565b806311fe9ec611610344578063333ad3e711610313578063333ad3e71461066857806334c433541461067d5780633dffc3871461063e5780633fdfa7e414610692576103ad565b806311fe9ec6146105e0578063151817e31461061357806317c9efb01461063e5780632fdeb11114610653576103ad565b80630bee7a67116103805780630bee7a67146104725780630c795715146104a05780630e2374a5146104b55780631182b875146104e6576103ad565b8063026e402b146103b257806302985992146103e0578063047636d114610407576103ad565b366103ad57005b600080fd5b6103de600480360360408110156103c857600080fd5b506001600160a01b038135169060200135610cdf565b005b3480156103ec57600080fd5b506103f5610d1c565b60408051918252519081900360200190f35b34801561041357600080fd5b5061043a6004803603602081101561042a57600080fd5b50356001600160a01b0316610d22565b6040518082606080838360005b8381101561045f578181015183820152602001610447565b5050505090500191505060405180910390f35b34801561047e57600080fd5b50610487610d76565b6040805163ffffffff9092168252519081900360200190f35b3480156104ac57600080fd5b506103f5610d7b565b3480156104c157600080fd5b506104ca610d81565b604080516001600160a01b039092168252519081900360200190f35b3480156104f257600080fd5b5061056b6004803603604081101561050957600080fd5b60ff8235169190810190604081016020820135600160201b81111561052d57600080fd5b82018360208201111561053f57600080fd5b803590602001918460018302840111600160201b8311171561056057600080fd5b509092509050610d87565b6040805160208082528351818301528351919283929083019185019080838360005b838110156105a557818101518382015260200161058d565b50505050905090810190601f1680156105d25780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156105ec57600080fd5b506103f56004803603602081101561060357600080fd5b50356001600160a01b0316610f43565b34801561061f57600080fd5b50610628610f5e565b6040805160ff9092168252519081900360200190f35b34801561064a57600080fd5b50610628610f63565b34801561065f57600080fd5b506103f5610f68565b34801561067457600080fd5b50610487610f6e565b34801561068957600080fd5b506103f5610f73565b34801561069e57600080fd5b50610628610f7e565b3480156106b357600080fd5b506103f5610f83565b3480156106c857600080fd5b506104ca610f8a565b3480156106dd57600080fd5b506106e6610f90565b6040805161ffff9092168252519081900360200190f35b34801561070957600080fd5b50610628610f95565b6103de6004803603604081101561072857600080fd5b506001600160a01b038135169060200135610f9a565b34801561074a57600080fd5b506104ca6115c7565b34801561075f57600080fd5b506106286115cd565b34801561077457600080fd5b506103f56115d2565b34801561078957600080fd5b506103f56115d8565b34801561079e57600080fd5b506103f56115e1565b3480156107b357600080fd5b506103f5611781565b6103de600480360360608110156107d257600080fd5b506001600160a01b03813581169160208101359091169060400135610cdf565b3480156107fe57600080fd5b506104ca611787565b34801561081357600080fd5b506103f56004803603602081101561082a57600080fd5b50356001600160a01b031661178d565b34801561084657600080fd5b506106286117a8565b34801561085b57600080fd5b506106286117ad565b34801561087057600080fd5b506103f56004803603602081101561088757600080fd5b50356001600160a01b03166117b2565b3480156108a357600080fd5b506104ca6117cd565b3480156108b857600080fd5b506106286117d3565b3480156108cd57600080fd5b506103de600480360360408110156108e457600080fd5b60ff8235169190810190604081016020820135600160201b81111561090857600080fd5b82018360208201111561091a57600080fd5b803590602001918460018302840111600160201b8311171561093b57600080fd5b5090925090506117d8565b34801561095257600080fd5b50610628611aa0565b34801561096757600080fd5b506104ca611aa5565b34801561097c57600080fd5b506104ca611aab565b34801561099157600080fd5b5061099a611ab1565b604080519115158252519081900360200190f35b3480156109ba57600080fd5b506104ca611aba565b3480156109cf57600080fd5b506104ca611ac0565b3480156109e457600080fd5b506104876115cd565b3480156109f957600080fd5b506103de60048036036040811015610a1057600080fd5b810190602081018135600160201b811115610a2a57600080fd5b820183602082011115610a3c57600080fd5b803590602001918460018302840111600160201b83111715610a5d57600080fd5b919390929091602081019035600160201b811115610a7a57600080fd5b820183602082011115610a8c57600080fd5b803590602001918460018302840111600160201b83111715610aad57600080fd5b509092509050611ac6565b348015610ac457600080fd5b50610628612258565b348015610ad957600080fd5b506103f561225d565b348015610aee57600080fd5b506103f56123fa565b348015610b0357600080fd5b506103f560048036036040811015610b1a57600080fd5b506001600160a01b0381358116916020013516612405565b348015610b3e57600080fd5b506103f5612432565b348015610b5357600080fd5b506104ca612438565b348015610b6857600080fd5b506103de60048036036040811015610b7f57600080fd5b60ff8235169190810190604081016020820135600160201b811115610ba357600080fd5b820183602082011115610bb557600080fd5b803590602001918460018302840111600160201b83111715610bd657600080fd5b50909250905061243e565b348015610bed57600080fd5b506103f560048036036040811015610c0457600080fd5b506001600160a01b0381358116916020013516612661565b348015610c2857600080fd5b506104ca61268c565b348015610c3d57600080fd5b506104ca612692565b348015610c5257600080fd5b506103f5612698565b348015610c6757600080fd5b506103f560048036036060811015610c7e57600080fd5b506001600160a01b0381358116916020810135821691604090910135166126a5565b348015610cac57600080fd5b506104ca6126da565b348015610cc157600080fd5b506103f56126e0565b348015610cd657600080fd5b506104ca6126e6565b6040805162461bcd60e51b815260206004820152600d60248201526c1b9bdd081cdd5c1c1bdc9d1959609a1b604482015290519081900360640190fd5b60035481565b610d2a614621565b610d32614621565b6001600160a01b0383166000818152600b60209081526040808320548552838352600c82528083205485830152928252600d9052819020549082015290505b919050565b606481565b6108fc81565b61200181565b60603361200014610dc95760405162461bcd60e51b815260040180806020018281038252602f815260200180614804602f913960400191505060405180910390fd5b60005460ff16610e0c576638d7ea4c6800006001908155662386f26fc1000060025568056bc75e2d631000006003556108fc6011556000805460ff191690911790555b610e1461463f565b610e5b610e5685858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506126ec92505050565b612711565b90506000610e70610e6b8361275b565b6127a9565b90506000606060ff831660041415610e9557610e8b84612860565b9092509050610eec565b60ff831660051415610eaa57610e8b84612a40565b6040805162461bcd60e51b8152602060048201526012602482015271756e6b6e6f776e206576656e74207479706560701b604482015290519081900360640190fd5b63ffffffff821615610f38576040805163ffffffff84168152905160ff8516917f391d6e5ea6ab6c49b9a0abb1782cae5def8d711f973b00c729658c0b2a80b31b919081900360200190a25b979650505050505050565b6001600160a01b031660009081526006602052604090205490565b600581565b600181565b60015481565b606581565b662386f26fc1000081565b600381565b620a8c0081565b61100181565b603881565b600881565b60105460ff1660021415610fe6576040805162461bcd60e51b815260206004820152600e60248201526d4e6f2072652d656e7472616e637960901b604482015290519081900360640190fd5b6010805460ff19166002179055806402540be400340615801561100e57506402540be4008106155b61105f576040805162461bcd60e51b815260206004820152601c60248201527f707265636973696f6e206c6f737320696e20636f6e76657273696f6e00000000604482015290519081900360640190fd5b60005460ff166110a2576638d7ea4c6800006001908155662386f26fc1000060025568056bc75e2d631000006003556108fc6011556000805460ff191690911790555b6001543410156110f0576040805162461bcd60e51b81526020600482015260146024820152736e6f7420656e6f7567682072656c61792066656560601b604482015290519081900360640190fd5b6003548210156111ab573360009081526005602090815260408083206001600160a01b03871684529091529020548214611162576040805162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a5908185b5bdd5b9d60921b604482015290519081900360640190fd5b60025482116111ab576040805162461bcd60e51b815260206004820152601060248201526f6e6f7420656e6f7567682066756e647360801b604482015290519081900360640190fd5b3360009081526007602090815260408083206001600160a01b0387168452909152902054421015611223576040805162461bcd60e51b815260206004820152601a60248201527f70656e64696e6720756e64656c65676174696f6e206578697374000000000000604482015290519081900360640190fd5b604080518082018252601081526f6e6f7420656e6f7567682066756e647360801b602080830191909152336000908152600582528381206001600160a01b03881682529091529182205461127e91859063ffffffff612c5c16565b905080156112c65760025481116112c65760405162461bcd60e51b81526004018080602001828103825260258152602001806147df6025913960400191505060405180910390fd5b60006112dd846402540be40063ffffffff612cf316565b60025490915034906000906112f990839063ffffffff612d3c16565b6040805160038082526080820190925291925060609190816020015b606081526020019060019003908161131557905050905061133533612d7e565b8160008151811061134257fe5b602002602001018190525061135f886001600160a01b0316612d7e565b8160018151811061136c57fe5b602002602001018190525061138084612da1565b8160028151811061138d57fe5b602002602001018190525060606113ad60026113a884612db4565b612e3e565b8051602080830191909120600f80546000908152600a845260408082209390935581546001908101909255338152600c90935291208054909101905590506113fe42620a8c0063ffffffff612ec416565b3360009081526007602090815260408083206001600160a01b038e16845290915290205561200063f7a251d7601083611442876402540be40063ffffffff612cf316565b6040518463ffffffff1660e01b8152600401808460ff1660ff16815260200180602001838152602001828103825284818151815260200191508051906020019080838360005b838110156114a0578181015183820152602001611488565b50505050905090810190601f1680156114cd5780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b1580156114ee57600080fd5b505af1158015611502573d6000803e3d6000fd5b5050604051611004925085156108fc02915085906000818181858888f19350505050158015611535573d6000803e3d6000fd5b506002546040516110029180156108fc02916000818181858888f19350505050158015611566573d6000803e3d6000fd5b50604080518981526020810185905281516001600160a01b038c169233927fdf0b6ac27f3f3bb31cee3dab0f4fe40cc19c6a3f8daaec52e06b261e58a12519929081900390910190a350506010805460ff1916600117905550505050505050565b61200081565b600081565b60025481565b6402540be40081565b60105460009060ff1660021415611630576040805162461bcd60e51b815260206004820152600e60248201526d4e6f2072652d656e7472616e637960901b604482015290519081900360640190fd5b506010805460ff191660021790553360009081526008602052604090205480611697576040805162461bcd60e51b81526020600482015260146024820152736e6f20756e64656c6567617465642066756e647360601b604482015290519081900360640190fd5b336000818152600860205260408082208290556011549051919291849084818181858888f193505050503d80600081146116ed576040519150601f19603f3d011682016040523d82523d6000602084013e6116f2565b606091505b505090508061173a576040805162461bcd60e51b815260206004820152600f60248201526e1d1c985b9cd9995c8819985a5b1959608a1b604482015290519081900360640190fd5b60408051838152905133917fc712d133b8d448221aaed2198ed1f0db6dfc860fb01bc3a630916fe6cbef946f919081900360200190a2506010805460ff1916600117905590565b60035490565b61100581565b6001600160a01b031660009081526004602052604090205490565b600281565b601081565b6001600160a01b031660009081526008602052604090205490565b61100881565b600b81565b33612000146118185760405162461bcd60e51b815260040180806020018281038252602f815260200180614804602f913960400191505060405180910390fd5b60005460ff1661185b576638d7ea4c6800006001908155662386f26fc1000060025568056bc75e2d631000006003556108fc6011556000805460ff191690911790555b61186361463f565b6118a5610e5684848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506126ec92505050565b905060008060606000805b6118b986612f1e565b1561192457806118d6576118cf610e6b8761275b565b945061191c565b80600114156118f2576118eb610e6b8761275b565b935061191c565b80600214156119175761190c6119078761275b565b612f3f565b92506001915061191c565b611924565b6001016118b0565b8161196a576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b61197383612faf565b6119b6576040805162461bcd60e51b815260206004820152600f60248201526e0eee4dedcce40e0c2c6d640d0c2e6d608b1b604482015290519081900360640190fd5b6119c2610e56846126ec565b955060006119d2610e6b8861275b565b90506119dc61463f565b6119e588612f1e565b15611a0857611a01610e566119fc6119078b61275b565b6126ec565b9050611a49565b6040805162461bcd60e51b8152602060048201526011602482015270656d7074792061636b207061636b61676560781b604482015290519081900360640190fd5b60ff821660011415611a6557611a60818888613003565b611a93565b60ff821660021415611a7c57611a608188886133ba565b60ff821660031415610eaa57611a60818888613687565b5050505050505050505050565b600981565b61100781565b61100681565b60005460ff1681565b61200281565b61300081565b60005460ff16611b1d576040805162461bcd60e51b815260206004820152601960248201527f74686520636f6e7472616374206e6f7420696e69742079657400000000000000604482015290519081900360640190fd5b3361100714611b5d5760405162461bcd60e51b815260040180806020018281038252602e815260200180614755602e913960400191505060405180910390fd5b611bbe84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600a81526972656c6179657246656560b01b602082015291506139ec9050565b15611d245760208114611c18576040805162461bcd60e51b815260206004820152601d60248201527f6c656e677468206f662072656c61796572466565206d69736d61746368000000604482015290519081900360640190fd5b604080516020601f8401819004810282018101909252828152600091611c5691858580838501838280828437600092019190915250613ad392505050565b90506003548110611c985760405162461bcd60e51b815260040180806020018281038252602e815260200180614783602e913960400191505060405180910390fd5b6002548111611cd85760405162461bcd60e51b815260040180806020018281038252602e8152602001806147b1602e913960400191505060405180910390fd5b6402540be400810615611d1c5760405162461bcd60e51b815260040180806020018281038252602c815260200180614729602c913960400191505060405180910390fd5b6001556121c6565b611d8884848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600d81526c62534352656c6179657246656560981b602082015291506139ec9050565b15611eea5760208114611de2576040805162461bcd60e51b815260206004820181905260248201527f6c656e677468206f662062534352656c61796572466565206d69736d61746368604482015290519081900360640190fd5b604080516020601f8401819004810282018101909252828152600091611e2091858580838501838280828437600092019190915250613ad392505050565b905080611e5e5760405162461bcd60e51b81526004018080602001828103825260228152602001806148336022913960400191505060405180910390fd5b6001548110611e9e5760405162461bcd60e51b815260040180806020018281038252602e8152602001806146a9602e913960400191505060405180910390fd5b6402540be400810615611ee25760405162461bcd60e51b815260040180806020018281038252602f81526020018061467a602f913960400191505060405180910390fd5b6002556121c6565b611f4e84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600d81526c36b4b72232b632b3b0ba34b7b760991b602082015291506139ec9050565b156120305760208114611fa8576040805162461bcd60e51b815260206004820181905260248201527f6c656e677468206f66206d696e44656c65676174696f6e206d69736d61746368604482015290519081900360640190fd5b604080516020601f8401819004810282018101909252828152600091611fe691858580838501838280828437600092019190915250613ad392505050565b905060015481116120285760405162461bcd60e51b81526004018080602001828103825260318152602001806146d76031913960400191505060405180910390fd5b6003556121c6565b61209284848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600b81526a7472616e7366657247617360a81b602082015291506139ec9050565b1561218957602081146120ec576040805162461bcd60e51b815260206004820152601e60248201527f6c656e677468206f66207472616e73666572476173206d69736d617463680000604482015290519081900360640190fd5b604080516020601f840181900481028201810190925282815260009161212a91858580838501838280828437600092019190915250613ad392505050565b905060008111612181576040805162461bcd60e51b815260206004820152601e60248201527f746865207472616e736665724761732063616e6e6f74206265207a65726f0000604482015290519081900360640190fd5b6011556121c6565b6040805162461bcd60e51b815260206004820152600d60248201526c756e6b6e6f776e20706172616d60981b604482015290519081900360640190fd5b7f6cdb0ac70ab7f2e2d035cca5be60d89906f2dede7648ddbd7402189c1eeed17a848484846040518080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600083820152604051601f909101601f19169092018290039850909650505050505050a150505050565b600481565b60105460009060ff16600214156122ac576040805162461bcd60e51b815260206004820152600e60248201526d4e6f2072652d656e7472616e637960901b604482015290519081900360640190fd5b506010805460ff191660021790553360009081526006602052604090205480612310576040805162461bcd60e51b81526020600482015260116024820152701b9bc81c195b991a5b99c81c995dd85c99607a1b604482015290519081900360640190fd5b336000818152600660205260408082208290556011549051919291849084818181858888f193505050503d8060008114612366576040519150601f19603f3d011682016040523d82523d6000602084013e61236b565b606091505b50509050806123b3576040805162461bcd60e51b815260206004820152600f60248201526e1d1c985b9cd9995c8819985a5b1959608a1b604482015290519081900360640190fd5b60408051838152905133917f83b78188b13346b2ffb484da70d42ee27de7fbf9f2bd8045269e10ed643ccd76919081900360200190a2506010805460ff1916600117905590565b6638d7ea4c68000081565b6001600160a01b038083166000908152600760209081526040808320938516835292905220545b92915050565b60015490565b61100281565b336120001461247e5760405162461bcd60e51b815260040180806020018281038252602f815260200180614804602f913960400191505060405180910390fd5b60005460ff166124c1576638d7ea4c6800006001908155662386f26fc1000060025568056bc75e2d631000006003556108fc6011556000805460ff191690911790555b61250082828080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612faf92505050565b612543576040805162461bcd60e51b815260206004820152600f60248201526e0eee4dedcce40e0c2c6d640d0c2e6d608b1b604482015290519081900360640190fd5b61254b61463f565b61258d610e5684848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506126ec92505050565b9050600061259d610e6b8361275b565b90506125a761463f565b6125b083612f1e565b156125ce576125c7610e566119fc6119078661275b565b9050612614565b6040805162461bcd60e51b8152602060048201526016602482015275656d707479206661696c2061636b207061636b61676560501b604482015290519081900360640190fd5b60ff82166001141561262e5761262981613ad8565b612658565b60ff8216600214156126435761262981613cf2565b60ff821660031415610eaa5761262981613e1c565b5050505b505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b61100381565b61200481565b68056bc75e2d6310000081565b6001600160a01b0392831660009081526009602090815260408083209486168352938152838220929094168152925290205490565b61100081565b60115481565b61100481565b6126f461465f565b506040805180820190915281518152602082810190820152919050565b61271961463f565b61272282613f81565b61272b57600080fd5b600061273a8360200151613fbb565b60208085015160408051808201909152868152920190820152915050919050565b61276361465f565b61276c82612f1e565b61277557600080fd5b602082015160006127858261401e565b80830160209586015260408051808201909152908152938401919091525090919050565b8051600090158015906127be57508151602110155b6127c757600080fd5b60006127d68360200151613fbb565b90508083600001511015612831576040805162461bcd60e51b815260206004820152601a60248201527f6c656e677468206973206c657373207468616e206f6666736574000000000000604482015290519081900360640190fd5b82516020808501518301805192849003929183101561285757826020036101000a820491505b50949350505050565b600060606000806000805b61287487612f1e565b156128c657826128965761288f61288a8861275b565b614151565b91506128bb565b82600114156128b6576128ab610e6b8861275b565b9050600193506128bb565b6128c6565b82600101925061286b565b8361290c576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b60006110046001600160a01b031663727be1f8836040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b15801561295657600080fd5b505af115801561296a573d6000803e3d6000fd5b505050506040513d602081101561298057600080fd5b50519050806129a55761299760048484606561416b565b965096505050505050612a3b565b6001600160a01b0383166000908152600660205260409020546129ce908363ffffffff612ec416565b6001600160a01b038416600081815260066020908152604091829020939093558051858152905191927f7cc266c7b444f808013fa187f7b904d470a051a6564e78f482aa496581ba4bf892918290030190a260408051600080825260208201909252909750955050505050505b915091565b6000606060008060008060005b612a5688612f1e565b15612abf5783612a7357612a6c61288a8961275b565b9250612ab4565b8360011415612a8f57612a8861288a8961275b565b9150612ab4565b8360021415612aaf57612aa4610e6b8961275b565b905060019450612ab4565b612abf565b836001019350612a4d565b84612b05576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b60006110046001600160a01b031663727be1f8836040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b158015612b4f57600080fd5b505af1158015612b63573d6000803e3d6000fd5b505050506040513d6020811015612b7957600080fd5b5051905080612b9f57612b9060058584606561416b565b97509750505050505050612a3b565b6001600160a01b038085166000818152600760209081526040808320948816835293815283822082905591815260089091522054612be3908363ffffffff612ec416565b6001600160a01b0380861660008181526008602090815260409182902094909455805186815290519287169391927f35a799836f74fac7eccf5c73902823b970543d2274d3b93d8da3d37a255772a2929181900390910190a3604080516000808252602082019092529098509650505050505050915091565b60008184841115612ceb5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612cb0578181015183820152602001612c98565b50505050905090810190601f168015612cdd5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000612d3583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614267565b9392505050565b6000612d3583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612c5c565b60408051600560a21b8318601482015260348101909152606090612d35816142cc565b606061242c612daf83614322565b6142cc565b6060815160001415612dd55750604080516000815260208101909152610d71565b606082600081518110612de457fe5b602002602001015190506000600190505b8351811015612e2557612e1b82858381518110612e0e57fe5b6020026020010151614408565b9150600101612df5565b50612d35612e38825160c060ff16614485565b82614408565b6040805160028082526060828101909352829190816020015b6060815260200190600190039081612e57579050509050612e7a8460ff16612da1565b81600081518110612e8757fe5b6020026020010181905250612e9b836142cc565b81600181518110612ea857fe5b6020026020010181905250612ebc81612db4565b949350505050565b600082820183811015612d35576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000612f2861465f565b505080518051602091820151919092015191011190565b8051606090612f4d57600080fd5b6000612f5c8360200151613fbb565b83516040805191839003808352601f19601f8201168301602001909152919250606090828015612f93576020820181803683370190505b509050600081602001905061285784876020015101828561457d565b8051602080830191909120600e546000908152600a9092526040822054808214612fde57600092505050610d71565b5050600e80546000908152600a60205260408120558054600190810190915592915050565b60008060008060005b61301588612f1e565b1561307e57836130325761302b61288a8961275b565b9250613073565b836001141561304e5761304761288a8961275b565b9150613073565b836002141561306e57613063610e6b8961275b565b905060019450613073565b61307e565b83600101935061300c565b846130c4576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b60006130db826402540be40063ffffffff6145c816565b6001600160a01b0385166000908152600b602052604090208054600019019055905060ff8816600114156132215760ff87161561314e576040805162461bcd60e51b815260206004820152600c60248201526b77726f6e672073746174757360a01b604482015290519081900360640190fd5b6001600160a01b038416600090815260046020526040902054613177908263ffffffff612ec416565b6001600160a01b038086166000908152600460209081526040808320949094556005815283822092871682529190915220546131b9908263ffffffff612ec416565b6001600160a01b038086166000818152600560209081526040808320948916808452948252918290209490945580518581529051929391927f9a57c81564ab02642f34fd87e41baa9b074c18342cec3b7268b62bf752018fd1929181900390910190a36133af565b60ff8816613373576001600160a01b038416600090815260086020526040902054613252908263ffffffff612ec416565b6001600160a01b0385166000908152600860209081526040808320939093558251630e4f7c3f60e31b81526004810185905292516110049363727be1f89360248083019493928390030190829087803b1580156132ae57600080fd5b505af11580156132c2573d6000803e3d6000fd5b505050506040513d60208110156132d857600080fd5b5051613321576040805162461bcd60e51b81526020600482015260136024820152721dda5d1a191c985dc8189b988819985a5b1959606a1b604482015290519081900360640190fd5b6040805182815260ff8916602082015281516001600160a01b0380871693908816927fcbd481ae600289fad8c0484d07ce0ffe4f010d7c844ecfdeaf2a13fead52886e929081900390910190a36133af565b6040805162461bcd60e51b815260206004820152600c60248201526b77726f6e672073746174757360a01b604482015290519081900360640190fd5b505050505050505050565b60008060008060005b6133cc88612f1e565b1561343557836133e9576133e261288a8961275b565b925061342a565b8360011415613405576133fe61288a8961275b565b915061342a565b83600214156134255761341a610e6b8961275b565b90506001945061342a565b613435565b8360010193506133c3565b8461347b576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b6000613492826402540be40063ffffffff6145c816565b6001600160a01b0385166000908152600c602052604090208054600019019055905060ff8816600114156136115760ff871615613505576040805162461bcd60e51b815260206004820152600c60248201526b77726f6e672073746174757360a01b604482015290519081900360640190fd5b6001600160a01b03841660009081526004602052604090205461352e908263ffffffff612d3c16565b6001600160a01b03808616600090815260046020908152604080832094909455600581528382209287168252919091522054613570908263ffffffff612d3c16565b6001600160a01b038086166000908152600560209081526040808320938816835292905220556135a942620a8c0063ffffffff612ec416565b6001600160a01b038086166000818152600760209081526040808320948916808452948252918290209490945580518581529051929391927fd6f878a5bcbbe79a64e6418bb0d56aaa20b9a60587d45749819df88dfc7c3c44929181900390910190a36133af565b60ff8816613373576001600160a01b03808516600081815260076020908152604080832094881680845294825280832092909255815185815260ff8c169181019190915281517f4417d10c1e33efa83a770b8d4f47176e78c08c1298d534901ad3b16bb585fa2e929181900390910190a36133af565b6000806000806000805b61369a89612f1e565b1561371f57846136b7576136b061288a8a61275b565b9350613714565b84600114156136d3576136cc61288a8a61275b565b9250613714565b84600214156136ef576136e861288a8a61275b565b9150613714565b846003141561370f57613704610e6b8a61275b565b905060019550613714565b61371f565b846001019450613691565b85613765576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b600061377c826402540be40063ffffffff6145c816565b6001600160a01b0386166000908152600d602052604090208054600019019055905060ff89166001141561394f5760ff8816156137ef576040805162461bcd60e51b815260206004820152600c60248201526b77726f6e672073746174757360a01b604482015290519081900360640190fd5b6001600160a01b03808616600090815260056020908152604080832093881683529290522054613825908263ffffffff612d3c16565b6001600160a01b038681166000908152600560209081526040808320898516845290915280822093909355908516815220546138619082612ec4565b6001600160a01b0380871660009081526005602090815260408083209388168352929052205561389a42620a8c0063ffffffff612ec416565b6001600160a01b03808716600090815260096020908152604080832089851684528252808320938816835292905220556138dd42620a8c0063ffffffff612ec416565b6001600160a01b038087166000818152600960209081526040808320898616808552908352818420958b1680855295835292819020959095558451868152945191947f78bffae3f8c6691ac7fc1a3bff800cb2d612f5ad9ae5b0444cfe2eb15c189e18929081900390910190a46139e0565b60ff8916613373576001600160a01b038581166000818152600960209081526040808320898616808552818452828520968a16808652968452828520859055908352818420818552835281842093909355805186815260ff8e169281019290925280519293927fb93bee5c59f85ede6b074a99f4ffcd3e3fc0d5c3d8156de331de89a49e0ce77c9281900390910190a45b50505050505050505050565b6000816040516020018082805190602001908083835b60208310613a215780518252601f199092019160209182019101613a02565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405280519060200120836040516020018082805190602001908083835b60208310613a8f5780518252601f199092019160209182019101613a70565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040528051906020012014905092915050565b015190565b60008060008060005b613aea86612f1e565b15613b535783613b0757613b0061288a8761275b565b9250613b48565b8360011415613b2357613b1c61288a8761275b565b9150613b48565b8360021415613b4357613b38610e6b8761275b565b905060019450613b48565b613b53565b836001019350613ae1565b84613b99576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b6000613bb0826402540be40063ffffffff6145c816565b6001600160a01b0385166000908152600b6020908152604080832080546000190190556008909152902054909150613bee908263ffffffff612ec416565b6001600160a01b0385166000908152600860209081526040808320939093558251630e4f7c3f60e31b81526004810185905292516110049363727be1f89360248083019493928390030190829087803b158015613c4a57600080fd5b505af1158015613c5e573d6000803e3d6000fd5b505050506040513d6020811015613c7457600080fd5b5051613cbd576040805162461bcd60e51b81526020600482015260136024820152721dda5d1a191c985dc8189b988819985a5b1959606a1b604482015290519081900360640190fd5b6040516001907ff83de021914a4585482db5ca47d520a5657165b443fa2c7ef8ed4635f054da9b90600090a250505050505050565b60008060008060005b613d0486612f1e565b15613d6d5783613d2157613d1a61288a8761275b565b9250613d62565b8360011415613d3d57613d3661288a8761275b565b9150613d62565b8360021415613d5d57613d52610e6b8761275b565b905060019450613d62565b613d6d565b836001019350613cfb565b84613db3576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b6001600160a01b038084166000908152600c60209081526040808320805460001901905560078252808320938616835292905281812081905590516002917ff83de021914a4585482db5ca47d520a5657165b443fa2c7ef8ed4635f054da9b91a2505050505050565b6000806000806000805b613e2f87612f1e565b15613eb45784613e4c57613e4561288a8861275b565b9350613ea9565b8460011415613e6857613e6161288a8861275b565b9250613ea9565b8460021415613e8457613e7d61288a8861275b565b9150613ea9565b8460031415613ea457613e99610e6b8861275b565b905060019550613ea9565b613eb4565b846001019450613e26565b85613efa576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b6001600160a01b038481166000908152600d602090815260408083208054600019019055600982528083208785168085528184528285209588168552948352818420849055825280832093835292905281812081905590516003917ff83de021914a4585482db5ca47d520a5657165b443fa2c7ef8ed4635f054da9b91a250505050505050565b8051600090613f9257506000610d71565b6020820151805160001a9060c0821015613fb157600092505050610d71565b5060019392505050565b8051600090811a6080811015613fd5576000915050610d71565b60b8811080613ff0575060c08110801590613ff0575060f881105b15613fff576001915050610d71565b60c08110156140135760b519019050610d71565b60f519019050610d71565b80516000908190811a6080811015614039576001915061414a565b60b881101561404e57607e198101915061414a565b60c08110156140c857600060b78203600186019550806020036101000a8651049150600181018201935050808310156140c2576040805162461bcd60e51b81526020600482015260116024820152706164646974696f6e206f766572666c6f7760781b604482015290519081900360640190fd5b5061414a565b60f88110156140dd5760be198101915061414a565b600060f78203600186019550806020036101000a865104915060018101820193505080831015614148576040805162461bcd60e51b81526020600482015260116024820152706164646974696f6e206f766572666c6f7760781b604482015290519081900360640190fd5b505b5092915050565b805160009060151461416257600080fd5b61242c826127a9565b60006060614184846402540be40063ffffffff612cf316565b60408051600480825260a0820190925291955060609190816020015b60608152602001906001900390816141a05790505090506141c38760ff16612da1565b816000815181106141d057fe5b60200260200101819052506141ed866001600160a01b0316612d7e565b816001815181106141fa57fe5b602002602001018190525061420e85612da1565b8160028151811061421b57fe5b60200260200101819052506142358463ffffffff16612da1565b8160038151811061424257fe5b6020026020010181905250606061425882612db4565b94989497509395505050505050565b600081836142b65760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315612cb0578181015183820152602001612c98565b5060008385816142c257fe5b0495945050505050565b6060815160011480156142fe5750607f60f81b826000815181106142ec57fe5b01602001516001600160f81b03191611155b1561430a575080610d71565b61242c61431c8351608060ff16614485565b83614408565b604080516020808252818301909252606091829190602082018180368337505050602081018490529050600067ffffffffffffffff1984166143665750601861438a565b6fffffffffffffffffffffffffffffffff1984166143865750601061438a565b5060005b60208110156143c05781818151811061439f57fe5b01602001516001600160f81b031916156143b8576143c0565b60010161438a565b60008160200390506060816040519080825280601f01601f1916602001820160405280156143f5576020820181803683370190505b5080830196909652508452509192915050565b6060806040519050835180825260208201818101602087015b81831015614439578051835260209283019201614421565b50855184518101855292509050808201602086015b8183101561446657805183526020928301920161444e565b508651929092011591909101601f01601f191660405250905092915050565b60606801000000000000000083106144d5576040805162461bcd60e51b815260206004820152600e60248201526d696e70757420746f6f206c6f6e6760901b604482015290519081900360640190fd5b6040805160018082528183019092526060916020820181803683370190505090506037841161452f5782840160f81b8160008151811061451157fe5b60200101906001600160f81b031916908160001a905350905061242c565b606061453a85614322565b90508381510160370160f81b8260008151811061455357fe5b60200101906001600160f81b031916908160001a9053506145748282614408565b95945050505050565b806145875761265c565b5b602081106145a7578251825260209283019290910190601f1901614588565b915181516020939093036101000a6000190180199091169216919091179052565b6000826145d75750600061242c565b828202828482816145e457fe5b0414612d355760405162461bcd60e51b81526004018080602001828103825260218152602001806147086021913960400191505060405180910390fd5b60405180606001604052806003906020820280368337509192915050565b604051806040016040528061465261465f565b8152602001600081525090565b60405180604001604052806000815260200160008152509056fe7468652042534352656c61796572466565206d6f642074656e20646563696d616c73206d757374206265207a65726f7468652042534352656c61796572466565206d757374206265206c657373207468616e2072656c61796572466565746865206d696e44656c65676174696f6e206d7573742062652067726561746572207468616e2072656c61796572466565536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f777468652072656c61796572466565206d6f642074656e20646563696d616c73206d757374206265207a65726f746865206d6573736167652073656e646572206d75737420626520676f7665726e616e636520636f6e74726163747468652072656c61796572466565206d757374206265206c657373207468616e206d696e44656c65676174696f6e7468652072656c61796572466565206d757374206265206d6f7265207468616e2042534352656c61796572466565696e73756666696369656e742062616c616e636520616674657220756e64656c6567617465746865206d6573736167652073656e646572206d7573742062652063726f737320636861696e20636f6e74726163747468652042534352656c61796572466565206d757374206e6f74206265207a65726fa164736f6c6343000604000a", + }, + { + ContractAddr: common.HexToAddress(StakeHubContract), + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/cfc0bd1127186a917ddc38fd38d22903034d3f0b", + Code: "6080604052600436106200029f5760003560e01c8063982ef0a7116200015f578063cf06248c11620000c5578063de88700b1162000084578063de88700b146200083d578063e8f67c3b146200085f578063e992aaf51462000877578063f1f74d84146200088f578063fb50b31f14620008a7578063fc0c5ff114620008cc57600080fd5b8063cf06248c1462000793578063d115a20614620007d0578063d6ca429d14620007e8578063d8ca511f146200080d578063daacdb66146200082557600080fd5b8063b187bd26116200011e578063b187bd2614620006c1578063baa7199e14620006e1578063bdceadf31462000706578063c38fbec8146200071e578063c473318f1462000743578063cbb04d9d146200075b57600080fd5b8063982ef0a7146200060e578063a43569b31462000625578063aad3ec961462000659578063ac431751146200067e578063ae0f336d14620006a357600080fd5b80634e6fd6c411620002055780636ec01b2711620001c45780636ec01b27146200052457806375cc7d89146200057c57806376e7d6d614620005a15780637adcf7e814620005b95780638129fc1c14620005de5780638456cb5914620005f657600080fd5b80634e6fd6c4146200045b57806359491871146200048c5780635e7cc1c914620004b157806363a036b514620004d657806364028fbd146200050d57600080fd5b8063417c73a7116200025e578063417c73a7146200035d578063449ecfe6146200038257806345211bfd14620003a75780634838d16514620003cc5780634a49ac4c14620004115780634d99dd16146200043657600080fd5b8063046f7da214620002c65780630661806e14620002de578063092193ab14620003095780630e9fbf51146200032057806338409988146200034557600080fd5b36620002c1576000546301000000900460ff16600114620002bf57600080fd5b005b600080fd5b348015620002d357600080fd5b50620002bf620008e4565b348015620002eb57600080fd5b50620002f660025481565b6040519081526020015b60405180910390f35b620002bf6200031a36600462006971565b62000945565b3480156200032d57600080fd5b50620002bf6200033f366004620069d5565b62000ec1565b3480156200035257600080fd5b50620002f660035481565b3480156200036a57600080fd5b50620002bf6200037c36600462006971565b6200113f565b3480156200038f57600080fd5b50620002bf620003a136600462006971565b6200118f565b348015620003b457600080fd5b50620002bf620003c636600462006971565b62001342565b348015620003d957600080fd5b5062000400620003eb36600462006971565b60176020526000908152604090205460ff1681565b604051901515815260200162000300565b3480156200041e57600080fd5b50620002bf6200043036600462006971565b62001505565b3480156200044357600080fd5b50620002bf6200045536600462006a1a565b62001552565b3480156200046857600080fd5b506200047361dead81565b6040516001600160a01b03909116815260200162000300565b3480156200049957600080fd5b50620002bf620004ab36600462006a5f565b62001b70565b348015620004be57600080fd5b50620002bf620004d036600462006acd565b62002942565b348015620004e357600080fd5b50620004fb620004f536600462006aed565b62002b49565b60405162000300949392919062006baa565b620002bf6200051e36600462006c79565b620031d1565b3480156200053157600080fd5b50620005496200054336600462006971565b620036a1565b6040805182516001600160401b039081168252602080850151821690830152928201519092169082015260600162000300565b3480156200058957600080fd5b50620002bf6200059b36600462006971565b6200374b565b348015620005ae57600080fd5b50620002f660095481565b348015620005c657600080fd5b5062000473620005d8366004620069d5565b6200391e565b348015620005eb57600080fd5b50620002bf62003956565b3480156200060357600080fd5b50620002bf62003c6c565b620002bf6200061f36600462006d4b565b62003cd2565b3480156200063257600080fd5b506200064a6200064436600462006971565b62004377565b60405162000300919062006d85565b3480156200066657600080fd5b50620002bf6200067836600462006a1a565b62004664565b3480156200068b57600080fd5b50620002bf6200069d36600462006e0b565b620047cd565b348015620006b057600080fd5b50620002f6670de0b6b3a764000081565b348015620006ce57600080fd5b5060005462010000900460ff1662000400565b348015620006ee57600080fd5b50620002bf6200070036600462006e7d565b6200562b565b3480156200071357600080fd5b50620002f660085481565b3480156200072b57600080fd5b50620002bf6200073d36600462006971565b620057f8565b3480156200075057600080fd5b50620002f660045481565b3480156200076857600080fd5b50620007806200077a36600462006971565b62005a16565b6040516200030095949392919062006f09565b348015620007a057600080fd5b5062000473620007b236600462006971565b6001600160a01b039081166000908152600f60205260409020541690565b348015620007dd57600080fd5b50620002f661271081565b348015620007f557600080fd5b50620002bf6200080736600462006f4b565b62005e75565b3480156200081a57600080fd5b50620002f660075481565b3480156200083257600080fd5b50620002f660135481565b3480156200084a57600080fd5b5060165462000473906001600160a01b031681565b3480156200086c57600080fd5b50620002f660015481565b3480156200088457600080fd5b50620002f660065481565b3480156200089c57600080fd5b50620002f6600a5481565b348015620008b457600080fd5b50620002bf620008c636600462006e0b565b62005fc4565b348015620008d957600080fd5b50620002f660055481565b6016546001600160a01b03163314620009105760405163f2771a9960e01b815260040160405180910390fd5b6000805462ff0000191681556040517f62451d457bc659158be6e6247f56ec1df424a5c7597f71c20c2bc44e0965c8f99190a1565b33611000146200097157604051630f22c43960e41b815261100060048201526024015b60405180910390fd5b6001600160a01b038082166000908152600f60209081526040808320548416808452600d83528184208251610140810184528154871681526001820154871694810194909452600281015490951691830191909152600384018054919491606084019190620009e09062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462000a0e9062006f83565b801562000a5f5780601f1062000a335761010080835404028352916020019162000a5f565b820191906000526020600020905b81548152906001019060200180831162000a4157829003601f168201915b505050505081526020016004820160405180608001604052908160008201805462000a8a9062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462000ab89062006f83565b801562000b095780601f1062000add5761010080835404028352916020019162000b09565b820191906000526020600020905b81548152906001019060200180831162000aeb57829003601f168201915b5050505050815260200160018201805462000b249062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462000b529062006f83565b801562000ba35780601f1062000b775761010080835404028352916020019162000ba3565b820191906000526020600020905b81548152906001019060200180831162000b8557829003601f168201915b5050505050815260200160028201805462000bbe9062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462000bec9062006f83565b801562000c3d5780601f1062000c115761010080835404028352916020019162000c3d565b820191906000526020600020905b81548152906001019060200180831162000c1f57829003601f168201915b5050505050815260200160038201805462000c589062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462000c869062006f83565b801562000cd75780601f1062000cab5761010080835404028352916020019162000cd7565b820191906000526020600020905b81548152906001019060200180831162000cb957829003601f168201915b505050919092525050508152604080516060808201835260088501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600984015460ff16151582840152600a84015490830152600b8301546080830152805161028081019182905260a09092019190600c84019060149082845b81548152602001906001019080831162000d63575050509190925250505060408101519091506001600160a01b0316158062000da057508060c001515b1562000e1157816001600160a01b03167ffc8bff675087dd2da069cc3fb517b9ed001e19750c0865241a5542dba1ba170d60405162000e049060208082526011908201527024a72b20a624a22fab20a624a220aa27a960791b604082015260600190565b60405180910390a2505050565b60408181015160a0830151519151632f303ebb60e11b81526001600160401b0390921660048301526001600160a01b031690635e607d769034906024016000604051808303818588803b15801562000e6857600080fd5b505af115801562000e7d573d6000803e3d6000fd5b5050505050816001600160a01b03167fe34918ff1c7084970068b53fd71ad6d8b04e9f15d3886cbf006443e6cdc52ea63460405162000e0491815260200190565b50565b336110011462000ee957604051630f22c43960e41b8152611001600482015260240162000968565b6000600e838360405162000eff92919062006fb9565b908152604051908190036020019020546001600160a01b0316905062000f27600b82620061e6565b62000f455760405163fdf4600b60e01b815260040160405180910390fd5b6001600160a01b0381166000908152600d602052604081209062000f6d620151804262006fdf565b6014546000828152601560205260409020549192501162000fa15760405163413361db60e01b815260040160405180910390fd5b600081815260156020526040812080546001929062000fc290849062007002565b90915550600090508062000fd88560026200620b565b915091508162000ffb57604051631b919bb160e11b815260040160405180910390fd5b600284015460085460405163045bc4d160e41b815260048101919091526000916001600160a01b0316906345bc4d10906024016020604051808303816000875af11580156200104e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001074919062007018565b905062001082858362006295565b856001600160a01b03167f6e9a2ee7aee95665e3a774a212eb11441b217e3e4656ab9563793094689aabb283836002604051620010c29392919062007032565b60405180910390a26002850154604051633041949b60e01b81526001600160a01b039182166004820152908716602482015261200590633041949b90604401600060405180830381600087803b1580156200111c57600080fd5b505af115801562001131573d6000803e3d6000fd5b505050505050505050505050565b6016546001600160a01b031633146200116b5760405163f2771a9960e01b815260040160405180910390fd5b6001600160a01b03166000908152601760205260409020805460ff19166001179055565b60005462010000900460ff1615620011ba5760405163d7485e8f60e01b815260040160405180910390fd5b80620011c8600b82620061e6565b620011e65760405163fdf4600b60e01b815260040160405180910390fd5b6001600160a01b0382166000908152600d60205260409020600981015460ff166200122457604051634b6b857d60e01b815260040160405180910390fd5b6002805490820154604051630913db4760e01b81526001600160a01b03868116600483015290911690630913db4790602401602060405180830381865afa15801562001274573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200129a919062007018565b1015620012ba576040516317b204bf60e11b815260040160405180910390fd5b4281600a01541115620012e05760405163170cb76760e21b815260040160405180910390fd5b60098101805460ff191690556013805460019190600090620013049084906200706d565b90915550506040516001600160a01b038416907f9390b453426557da5ebdc31f19a37753ca04addf656d32f35232211bb2af3f1990600090a2505050565b60005462010000900460ff16156200136d5760405163d7485e8f60e01b815260040160405180910390fd5b3360009081526017602052604090205460ff16156200139f5760405163b1d02c3d60e01b815260040160405180910390fd5b33620013ad600b82620061e6565b620013cb5760405163fdf4600b60e01b815260040160405180910390fd5b6001600160a01b038216620013f357604051636520611b60e11b815260040160405180910390fd5b6001600160a01b038281166000908152600f6020526040902054161515806200143457506001600160a01b03821660009081526011602052604090205460ff165b156200145357604051631e6f587560e11b815260040160405180910390fd5b336000818152600d60205260409020600b810154429062001478906201518062007002565b11156200149857604051631f92cdbd60e11b815260040160405180910390fd5b80546001600160a01b038086166001600160a01b03199283168117845542600b8501556000818152600f60205260408082208054948816949095168417909455925190927f6e4e747ca35203f16401c69805c7dd52fff67ef60b0ebc5c7fe16890530f223591a350505050565b6016546001600160a01b03163314620015315760405163f2771a9960e01b815260040160405180910390fd5b6001600160a01b03166000908152601760205260409020805460ff19169055565b60005462010000900460ff16156200157d5760405163d7485e8f60e01b815260040160405180910390fd5b3360009081526017602052604090205460ff1615620015af5760405163b1d02c3d60e01b815260040160405180910390fd5b81620015bd600b82620061e6565b620015db5760405163fdf4600b60e01b815260040160405180910390fd5b81600003620015fd57604051639811e0c760e01b815260040160405180910390fd5b6001600160a01b038084166000908152600d60209081526040808320815161014081018352815486168152600182015486169381019390935260028101549094169082015260038301805433949160608401916200165b9062006f83565b80601f0160208091040260200160405190810160405280929190818152602001828054620016899062006f83565b8015620016da5780601f10620016ae57610100808354040283529160200191620016da565b820191906000526020600020905b815481529060010190602001808311620016bc57829003601f168201915b5050505050815260200160048201604051806080016040529081600082018054620017059062006f83565b80601f0160208091040260200160405190810160405280929190818152602001828054620017339062006f83565b8015620017845780601f10620017585761010080835404028352916020019162001784565b820191906000526020600020905b8154815290600101906020018083116200176657829003601f168201915b505050505081526020016001820180546200179f9062006f83565b80601f0160208091040260200160405190810160405280929190818152602001828054620017cd9062006f83565b80156200181e5780601f10620017f2576101008083540402835291602001916200181e565b820191906000526020600020905b8154815290600101906020018083116200180057829003601f168201915b50505050508152602001600282018054620018399062006f83565b80601f0160208091040260200160405190810160405280929190818152602001828054620018679062006f83565b8015620018b85780601f106200188c57610100808354040283529160200191620018b8565b820191906000526020600020905b8154815290600101906020018083116200189a57829003601f168201915b50505050508152602001600382018054620018d39062006f83565b80601f0160208091040260200160405190810160405280929190818152602001828054620019019062006f83565b8015620019525780601f10620019265761010080835404028352916020019162001952565b820191906000526020600020905b8154815290600101906020018083116200193457829003601f168201915b505050919092525050508152604080516060808201835260088501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600984015460ff16151582840152600a84015490830152600b8301546080830152805161028081019182905260a09092019190600c84019060149082845b815481526020019060010190808311620019de575050509190925250505060408082015190516326ccee8b60e11b81526001600160a01b0385811660048301526024820188905292935060009290911690634d99dd16906044016020604051808303816000875af115801562001a58573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001a7e919062007018565b9050826001600160a01b0316866001600160a01b03167f3aace7340547de7b9156593a7652dc07ee900cea3fd8f82cb6c9d38b40829802878460405162001acf929190918252602082015260400190565b60405180910390a3856001600160a01b0316836001600160a01b03160362001afc5762001afc866200638a565b6040828101519051633041949b60e01b81526001600160a01b039182166004820152908416602482015261200590633041949b906044015b600060405180830381600087803b15801562001b4f57600080fd5b505af115801562001b64573d6000803e3d6000fd5b50505050505050505050565b60005462010000900460ff161562001b9b5760405163d7485e8f60e01b815260040160405180910390fd5b3360009081526017602052604090205460ff161562001bcd5760405163b1d02c3d60e01b815260040160405180910390fd5b8362001bdb600b82620061e6565b62001bf95760405163fdf4600b60e01b815260040160405180910390fd5b8362001c07600b82620061e6565b62001c255760405163fdf4600b60e01b815260040160405180910390fd5b8360000362001c4757604051639811e0c760e01b815260040160405180910390fd5b846001600160a01b0316866001600160a01b03160362001c7a5760405163f0e3e62960e01b815260040160405180910390fd5b6001600160a01b038087166000908152600d602090815260408083208151610140810183528154861681526001820154861693810193909352600281015490941690820152600383018054339491606084019162001cd89062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462001d069062006f83565b801562001d575780601f1062001d2b5761010080835404028352916020019162001d57565b820191906000526020600020905b81548152906001019060200180831162001d3957829003601f168201915b505050505081526020016004820160405180608001604052908160008201805462001d829062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462001db09062006f83565b801562001e015780601f1062001dd55761010080835404028352916020019162001e01565b820191906000526020600020905b81548152906001019060200180831162001de357829003601f168201915b5050505050815260200160018201805462001e1c9062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462001e4a9062006f83565b801562001e9b5780601f1062001e6f5761010080835404028352916020019162001e9b565b820191906000526020600020905b81548152906001019060200180831162001e7d57829003601f168201915b5050505050815260200160028201805462001eb69062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462001ee49062006f83565b801562001f355780601f1062001f095761010080835404028352916020019162001f35565b820191906000526020600020905b81548152906001019060200180831162001f1757829003601f168201915b5050505050815260200160038201805462001f509062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462001f7e9062006f83565b801562001fcf5780601f1062001fa35761010080835404028352916020019162001fcf565b820191906000526020600020905b81548152906001019060200180831162001fb157829003601f168201915b505050919092525050508152604080516060808201835260088501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600984015460ff16151582840152600a84015490830152600b8301546080830152805161028081019182905260a09092019190600c84019060149082845b8154815260200190600101908083116200205b57505050919092525050506001600160a01b038089166000908152600d60209081526040808320815161014081018352815486168152600182015486169381019390935260028101549094169082015260038301805494955091939092916060840191620020dc9062006f83565b80601f01602080910402602001604051908101604052809291908181526020018280546200210a9062006f83565b80156200215b5780601f106200212f576101008083540402835291602001916200215b565b820191906000526020600020905b8154815290600101906020018083116200213d57829003601f168201915b5050505050815260200160048201604051806080016040529081600082018054620021869062006f83565b80601f0160208091040260200160405190810160405280929190818152602001828054620021b49062006f83565b8015620022055780601f10620021d95761010080835404028352916020019162002205565b820191906000526020600020905b815481529060010190602001808311620021e757829003601f168201915b50505050508152602001600182018054620022209062006f83565b80601f01602080910402602001604051908101604052809291908181526020018280546200224e9062006f83565b80156200229f5780601f1062002273576101008083540402835291602001916200229f565b820191906000526020600020905b8154815290600101906020018083116200228157829003601f168201915b50505050508152602001600282018054620022ba9062006f83565b80601f0160208091040260200160405190810160405280929190818152602001828054620022e89062006f83565b8015620023395780601f106200230d5761010080835404028352916020019162002339565b820191906000526020600020905b8154815290600101906020018083116200231b57829003601f168201915b50505050508152602001600382018054620023549062006f83565b80601f0160208091040260200160405190810160405280929190818152602001828054620023829062006f83565b8015620023d35780601f10620023a757610100808354040283529160200191620023d3565b820191906000526020600020905b815481529060010190602001808311620023b557829003601f168201915b505050919092525050508152604080516060808201835260088501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600984015460ff16151582840152600a84015490830152600b8301546080830152805161028081019182905260a09092019190600c84019060149082845b8154815260200190600101908083116200245f5750505050508152505090508060c001518015620024a25750876001600160a01b0316836001600160a01b031614155b15620024c157604051636468920360e01b815260040160405180910390fd5b6000805463ff0000001916630100000017815560408381015190516352e82ce560e11b81526001600160a01b038681166004830152602482018b90529091169063a5d059ca906044016020604051808303816000875af11580156200252a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002550919062007018565b9050600354811015620025765760405163dc6f0bdd60e01b815260040160405180910390fd5b896001600160a01b0316846001600160a01b03161480156200260b57506002546040808501519051630913db4760e01b81526001600160a01b038d8116600483015290911690630913db4790602401602060405180830381865afa158015620025e3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002609919062007018565b105b156200262a576040516317b204bf60e11b815260040160405180910390fd5b6000612710600654836200263f919062007083565b6200264b919062006fdf565b9050600083604001516001600160a01b03168260405160006040518083038185875af1925050503d8060008114620026a0576040519150601f19603f3d011682016040523d82523d6000602084013e620026a5565b606091505b5050905080620026c8576040516312171d8360e31b815260040160405180910390fd5b620026d482846200706d565b60408086015190516317066a5760e21b81526001600160a01b03898116600483015292955060009290911690635c19a95c90869060240160206040518083038185885af11580156200272a573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019062002751919062007018565b905060008060036101000a81548160ff021916908360ff160217905550866001600160a01b03168c6001600160a01b03168e6001600160a01b03167ffdac6e81913996d95abcc289e90f2d8bd235487ce6fe6f821e7d21002a1915b48e8589604051620027d1939291909283526020830191909152604082015260600190565b60405180910390a4604080516002808252606082018352600092602083019080368337019050509050866040015181600081518110620028155762002815620070b3565b60200260200101906001600160a01b031690816001600160a01b031681525050856040015181600181518110620028505762002850620070b3565b6001600160a01b0390921660209283029190910190910152604051634484077560e01b815261200590634484077590620028919084908c90600401620070c9565b600060405180830381600087803b158015620028ac57600080fd5b505af1158015620028c1573d6000803e3d6000fd5b505050508a1562002932576040516372f6ad8f60e11b81526001600160a01b0389811660048301528e1660248201526120059063e5ed5b1e90604401600060405180830381600087803b1580156200291857600080fd5b505af11580156200292d573d6000803e3d6000fd5b505050505b5050505050505050505050505050565b60005462010000900460ff16156200296d5760405163d7485e8f60e01b815260040160405180910390fd5b3360009081526017602052604090205460ff16156200299f5760405163b1d02c3d60e01b815260040160405180910390fd5b33620029ad600b82620061e6565b620029cb5760405163fdf4600b60e01b815260040160405180910390fd5b336000818152600d60205260409020600b8101544290620029f0906201518062007002565b111562002a1057604051631f92cdbd60e11b815260040160405180910390fd5b60088101546001600160401b03600160401b9091048116908516111562002a4a5760405163dc81db8560e01b815260040160405180910390fd5b60088101546000906001600160401b03908116908616101562002a8857600882015462002a829086906001600160401b0316620070f5565b62002aa2565b600882015462002aa2906001600160401b031686620070f5565b60088301546001600160401b039182169250600160801b90041681111562002add5760405163dc81db8560e01b815260040160405180910390fd5b60088201805467ffffffffffffffff19166001600160401b03871690811790915542600b8401556040519081526001600160a01b038416907f78cdd96edf59e09cfd4d26ef6ef6c92d166effe6a40970c54821206d541932cb9060200160405180910390a25050505050565b6060806060600062002b5c600b620064a3565b905080861015620031c857841562002b75578462002b77565b805b945060008562002b8888846200706d565b1162002ba05762002b9a87836200706d565b62002ba2565b855b9050806001600160401b0381111562002bbf5762002bbf6200709d565b60405190808252806020026020018201604052801562002be9578160200160208202803683370190505b509450806001600160401b0381111562002c075762002c076200709d565b60405190808252806020026020018201604052801562002c31578160200160208202803683370190505b509350806001600160401b0381111562002c4f5762002c4f6200709d565b60405190808252806020026020018201604052801562002c8457816020015b606081526020019060019003908162002c6e5790505b50925060005b81811015620031c557600062002cae62002ca5838b62007002565b600b90620064ae565b6001600160a01b038082166000908152600d6020908152604080832081516101408101835281548616815260018201548616938101939093526002810154909416908201526003830180549495509193909291606084019162002d119062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462002d3f9062006f83565b801562002d905780601f1062002d645761010080835404028352916020019162002d90565b820191906000526020600020905b81548152906001019060200180831162002d7257829003601f168201915b505050505081526020016004820160405180608001604052908160008201805462002dbb9062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462002de99062006f83565b801562002e3a5780601f1062002e0e5761010080835404028352916020019162002e3a565b820191906000526020600020905b81548152906001019060200180831162002e1c57829003601f168201915b5050505050815260200160018201805462002e559062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462002e839062006f83565b801562002ed45780601f1062002ea85761010080835404028352916020019162002ed4565b820191906000526020600020905b81548152906001019060200180831162002eb657829003601f168201915b5050505050815260200160028201805462002eef9062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462002f1d9062006f83565b801562002f6e5780601f1062002f425761010080835404028352916020019162002f6e565b820191906000526020600020905b81548152906001019060200180831162002f5057829003601f168201915b5050505050815260200160038201805462002f899062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462002fb79062006f83565b8015620030085780601f1062002fdc5761010080835404028352916020019162003008565b820191906000526020600020905b81548152906001019060200180831162002fea57829003601f168201915b505050919092525050508152604080516060808201835260088501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600984015460ff16151582840152600a84015490830152600b8301546080830152805161028081019182905260a09092019190600c84019060149082845b815481526020019060010190808311620030945750505050508152505090508060000151888481518110620030cd57620030cd620070b3565b60200260200101906001600160a01b031690816001600160a01b0316815250508060c00151620031665780604001516001600160a01b03166315d1f8986040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200313a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003160919062007018565b62003169565b60005b8784815181106200317e576200317e620070b3565b6020026020010181815250508060600151868481518110620031a457620031a4620070b3565b6020026020010181905250505080620031bd906200711f565b905062002c8a565b50505b92959194509250565b60005462010000900460ff1615620031fc5760405163d7485e8f60e01b815260040160405180910390fd5b3360009081526017602052604090205460ff16156200322e5760405163b1d02c3d60e01b815260040160405180910390fd5b336200323c600b82620061e6565b156200325b57604051635f28f62b60e01b815260040160405180910390fd5b6001600160a01b038881166000908152600f6020526040902054161515806200329c57506001600160a01b03881660009081526011602052604090205460ff165b15620032bb57604051631e6f587560e11b815260040160405180910390fd5b60006001600160a01b0316600e8888604051620032da92919062006fb9565b908152604051908190036020019020546001600160a01b0316141580620033245750601287876040516200331092919062006fb9565b9081526040519081900360200190205460ff165b1562003343576040516311fdb94760e01b815260040160405180910390fd5b60025434906200335d90670de0b6b3a76400009062007002565b8110156200337e576040516317b204bf60e11b815260040160405180910390fd5b6001600160a01b038916620033a657604051636520611b60e11b815260040160405180910390fd5b611388620033bb604086016020870162006acd565b6001600160401b03161180620034015750620033de604085016020860162006acd565b6001600160401b0316620033f6602086018662006acd565b6001600160401b0316115b806200344057506200341a604085016020860162006acd565b6001600160401b031662003435606086016040870162006acd565b6001600160401b0316115b156200345f5760405163dc81db8560e01b815260040160405180910390fd5b620034aa6200346f84806200713b565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250620064bc92505050565b620034c857604051635dba5ad760e01b815260040160405180910390fd5b620034d6888888886200665e565b620034f457604051631647e3cb60e11b815260040160405180910390fd5b600062003542836200350786806200713b565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506200678b92505050565b905062003551600b8462006855565b506001600160a01b038381166000818152600d6020526040902080546001600160a01b03199081168e8516178255600182018054821690931790925560028101805490921692841692909217905560038101620035b08a8c83620071ce565b508460048201620035c282826200729b565b5086905060088201620035d68282620073d8565b505042600b8201556001600160a01b038b81166000908152600f60205260409081902080546001600160a01b03191692871692909217909155518490600e9062003624908d908d9062006fb9565b90815260405190819003602001812080546001600160a01b039384166001600160a01b03199091161790558382169186811691908e16907faecd9fb95e79c75a3a1de93362c6be5fe6ab65770d8614be583884161cd8228d906200368c908f908f90620074a8565b60405180910390a45050505050505050505050565b604080516060810182526000808252602082018190529181019190915281620036cc600b82620061e6565b620036ea5760405163fdf4600b60e01b815260040160405180910390fd5b6001600160a01b0383166000908152600d602090815260409182902082516060810184526008909101546001600160401b038082168352600160401b8204811693830193909352600160801b90049091169181019190915291505b50919050565b33611001146200377357604051630f22c43960e41b8152611001600482015260240162000968565b6001600160a01b038082166000908152600f6020526040902054166200379b600b82620061e6565b620037b95760405163fdf4600b60e01b815260040160405180910390fd5b6001600160a01b038181166000908152600d60205260408082206002810154600754925163045bc4d160e41b81526004810193909352909316906345bc4d10906024016020604051808303816000875af11580156200381c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003842919062007018565b905060006009544262003856919062007002565b905062003864838262006295565b836001600160a01b03167f6e9a2ee7aee95665e3a774a212eb11441b217e3e4656ab9563793094689aabb282846001604051620038a49392919062007032565b60405180910390a26002830154604051633041949b60e01b81526001600160a01b039182166004820152908516602482015261200590633041949b90604401600060405180830381600087803b158015620038fe57600080fd5b505af115801562003913573d6000803e3d6000fd5b505050505050505050565b6000600e83836040516200393492919062006fb9565b908152604051908190036020019020546001600160a01b031690505b92915050565b600054610100900460ff1615808015620039775750600054600160ff909116105b80620039935750303b15801562003993575060005460ff166001145b620039f85760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840162000968565b6000805460ff19166001179055801562003a1c576000805461ff0019166101001790555b33411462003a3d5760405163022d8c9560e31b815260040160405180910390fd5b3a1562003a5d576040516383f1b1d360e01b815260040160405180910390fd5b611388600155686c6b935b8bbd4000006002908155670de0b6b3a7640000600355601d60045562093a806005556006819055678ac7230489e80000600755680ad78ebc5ac62000006008556202a30060095562278d00600a5560145560408051606081810183528282529182919062008671602083013980602001905181019062003ae9919062007517565b9150604051806060016040528060408152602001620086716040913980602001905181019062003b1a9190620075c1565b905060005b825181101562003b895760016011600085848151811062003b445762003b44620070b3565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905562003b81816200711f565b905062003b1f565b5060005b815181101562003bfa576001601283838151811062003bb05762003bb0620070b3565b602002602001015160405162003bc79190620076d7565b908152604051908190036020019020805491151560ff1990921691909117905562003bf2816200711f565b905062003b8d565b5050601680546001600160a01b03191673df87f0e2b8519ea2dd4abd8b639cdd628497ed2517905550801562000ebe576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b6016546001600160a01b0316331462003c985760405163f2771a9960e01b815260040160405180910390fd5b6000805462ff00001916620100001781556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e7529190a1565b60005462010000900460ff161562003cfd5760405163d7485e8f60e01b815260040160405180910390fd5b3360009081526017602052604090205460ff161562003d2f5760405163b1d02c3d60e01b815260040160405180910390fd5b8162003d3d600b82620061e6565b62003d5b5760405163fdf4600b60e01b815260040160405180910390fd5b600354349081101562003d815760405163dc6f0bdd60e01b815260040160405180910390fd5b6001600160a01b038085166000908152600d602090815260408083208151610140810183528154861681526001820154861693810193909352600281015490941690820152600383018054339491606084019162003ddf9062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462003e0d9062006f83565b801562003e5e5780601f1062003e325761010080835404028352916020019162003e5e565b820191906000526020600020905b81548152906001019060200180831162003e4057829003601f168201915b505050505081526020016004820160405180608001604052908160008201805462003e899062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462003eb79062006f83565b801562003f085780601f1062003edc5761010080835404028352916020019162003f08565b820191906000526020600020905b81548152906001019060200180831162003eea57829003601f168201915b5050505050815260200160018201805462003f239062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462003f519062006f83565b801562003fa25780601f1062003f765761010080835404028352916020019162003fa2565b820191906000526020600020905b81548152906001019060200180831162003f8457829003601f168201915b5050505050815260200160028201805462003fbd9062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462003feb9062006f83565b80156200403c5780601f1062004010576101008083540402835291602001916200403c565b820191906000526020600020905b8154815290600101906020018083116200401e57829003601f168201915b50505050508152602001600382018054620040579062006f83565b80601f0160208091040260200160405190810160405280929190818152602001828054620040859062006f83565b8015620040d65780601f10620040aa57610100808354040283529160200191620040d6565b820191906000526020600020905b815481529060010190602001808311620040b857829003601f168201915b505050919092525050508152604080516060808201835260088501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600984015460ff16151582840152600a84015490830152600b8301546080830152805161028081019182905260a09092019190600c84019060149082845b815481526020019060010190808311620041625750505050508152505090508060c001518015620041a55750856001600160a01b0316826001600160a01b031614155b15620041c457604051636468920360e01b815260040160405180910390fd5b60408082015190516317066a5760e21b81526001600160a01b0384811660048301526000921690635c19a95c90869060240160206040518083038185885af115801562004215573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906200423c919062007018565b9050826001600160a01b0316876001600160a01b03167f24d7bda8602b916d64417f0dbfe2e2e88ec9b1157bd9f596dfdb91ba26624e0483876040516200428d929190918252602082015260400190565b60405180910390a36040828101519051633041949b60e01b81526001600160a01b039182166004820152908416602482015261200590633041949b90604401600060405180830381600087803b158015620042e757600080fd5b505af1158015620042fc573d6000803e3d6000fd5b5050505085156200436e576040516372f6ad8f60e11b81526001600160a01b038085166004830152881660248201526120059063e5ed5b1e906044015b600060405180830381600087803b1580156200435457600080fd5b505af115801562004369573d6000803e3d6000fd5b505050505b50505050505050565b620043a36040518060800160405280606081526020016060815260200160608152602001606081525090565b81620043b1600b82620061e6565b620043cf5760405163fdf4600b60e01b815260040160405180910390fd5b6001600160a01b0383166000908152600d602052604090819020815160808101909252600401805482908290620044069062006f83565b80601f0160208091040260200160405190810160405280929190818152602001828054620044349062006f83565b8015620044855780601f10620044595761010080835404028352916020019162004485565b820191906000526020600020905b8154815290600101906020018083116200446757829003601f168201915b50505050508152602001600182018054620044a09062006f83565b80601f0160208091040260200160405190810160405280929190818152602001828054620044ce9062006f83565b80156200451f5780601f10620044f3576101008083540402835291602001916200451f565b820191906000526020600020905b8154815290600101906020018083116200450157829003601f168201915b505050505081526020016002820180546200453a9062006f83565b80601f0160208091040260200160405190810160405280929190818152602001828054620045689062006f83565b8015620045b95780601f106200458d57610100808354040283529160200191620045b9565b820191906000526020600020905b8154815290600101906020018083116200459b57829003601f168201915b50505050508152602001600382018054620045d49062006f83565b80601f0160208091040260200160405190810160405280929190818152602001828054620046029062006f83565b8015620046535780601f10620046275761010080835404028352916020019162004653565b820191906000526020600020905b8154815290600101906020018083116200463557829003601f168201915b505050505081525050915050919050565b60005462010000900460ff16156200468f5760405163d7485e8f60e01b815260040160405180910390fd5b3360009081526017602052604090205460ff1615620046c15760405163b1d02c3d60e01b815260040160405180910390fd5b81620046cf600b82620061e6565b620046ed5760405163fdf4600b60e01b815260040160405180910390fd5b6001600160a01b038381166000908152600d6020526040808220600201549051635569f64b60e11b8152336004820152602481018690529192169063aad3ec96906044016020604051808303816000875af115801562004751573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004777919062007018565b9050336001600160a01b0316846001600160a01b03167ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd399268383604051620047bf91815260200190565b60405180910390a350505050565b3361100714620047f557604051630f22c43960e41b8152611007600482015260240162000968565b620048626040518060400160405280601081526020016f1d1c985b9cd9995c91d85cd31a5b5a5d60821b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200686c9050565b15620049105760208114620048945783838383604051630a5a604160e01b8152600401620009689493929190620076f5565b604080516020601f8401819004810282018101909252828152600091620048d7918585808385018382808284376000920191909152509293925050620068c99050565b90506108fc811015620049075784848484604051630a5a604160e01b8152600401620009689493929190620076f5565b600155620055e6565b620049816040518060400160405280601481526020017336b4b729b2b6332232b632b3b0ba34b7b721272160611b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200686c9050565b1562004a365760208114620049b35783838383604051630a5a604160e01b8152600401620009689493929190620076f5565b604080516020601f8401819004810282018101909252828152600091620049f6918585808385018382808284376000920191909152509293925050620068c99050565b9050683635c9adc5dea0000081101562004a2d5784848484604051630a5a604160e01b8152600401620009689493929190620076f5565b600255620055e6565b62004aa9604051806040016040528060168152602001756d696e44656c65676174696f6e424e424368616e676560501b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200686c9050565b1562004b5d576020811462004adb5783838383604051630a5a604160e01b8152600401620009689493929190620076f5565b604080516020601f840181900481028201810190925282815260009162004b1e918585808385018382808284376000920191909152509293925050620068c99050565b905067016345785d8a000081101562004b545784848484604051630a5a604160e01b8152600401620009689493929190620076f5565b600355620055e6565b62004bce604051806040016040528060148152602001736d6178456c656374656456616c696461746f727360601b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200686c9050565b1562004c88576020811462004c005783838383604051630a5a604160e01b8152600401620009689493929190620076f5565b604080516020601f840181900481028201810190925282815260009162004c43918585808385018382808284376000920191909152509293925050620068c99050565b9050600181108062004c5657506101f481115b1562004c7f5784848484604051630a5a604160e01b8152600401620009689493929190620076f5565b600455620055e6565b62004cf16040518060400160405280600c81526020016b1d5b989bdb9914195c9a5bd960a21b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200686c9050565b1562004da0576020811462004d235783838383604051630a5a604160e01b8152600401620009689493929190620076f5565b604080516020601f840181900481028201810190925282815260009162004d66918585808385018382808284376000920191909152509293925050620068c99050565b90506203f48081101562004d975784848484604051630a5a604160e01b8152600401620009689493929190620076f5565b600555620055e6565b62004e0e60405180604001604052806011815260200170726564656c65676174654665655261746560781b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200686c9050565b1562004ebb576020811462004e405783838383604051630a5a604160e01b8152600401620009689493929190620076f5565b604080516020601f840181900481028201810190925282815260009162004e83918585808385018382808284376000920191909152509293925050620068c99050565b9050606481111562004eb25784848484604051630a5a604160e01b8152600401620009689493929190620076f5565b600655620055e6565b62004f2b60405180604001604052806013815260200172191bdddb9d1a5b5954db185cda105b5bdd5b9d606a1b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200686c9050565b1562004fec576020811462004f5d5783838383604051630a5a604160e01b8152600401620009689493929190620076f5565b604080516020601f840181900481028201810190925282815260009162004fa0918585808385018382808284376000920191909152509293925050620068c99050565b9050674563918244f4000081108062004fba575060085481115b1562004fe35784848484604051630a5a604160e01b8152600401620009689493929190620076f5565b600755620055e6565b6200505a6040518060400160405280601181526020017019995b1bdb9e54db185cda105b5bdd5b9d607a1b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200686c9050565b156200511d57602081146200508c5783838383604051630a5a604160e01b8152600401620009689493929190620076f5565b604080516020601f8401819004810282018101909252828152600091620050cf918585808385018382808284376000920191909152509293925050620068c99050565b905068056bc75e2d63100000811080620050eb57506007548111155b15620051145784848484604051630a5a604160e01b8152600401620009689493929190620076f5565b600855620055e6565b6200518a6040518060400160405280601081526020016f646f776e74696d654a61696c54696d6560801b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200686c9050565b15620052475760208114620051bc5783838383604051630a5a604160e01b8152600401620009689493929190620076f5565b604080516020601f8401819004810282018101909252828152600091620051ff918585808385018382808284376000920191909152509293925050620068c99050565b90506202a300811080620052155750600a548110155b156200523e5784848484604051630a5a604160e01b8152600401620009689493929190620076f5565b600955620055e6565b620052b26040518060400160405280600e81526020016d66656c6f6e794a61696c54696d6560901b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200686c9050565b156200536f5760208114620052e45783838383604051630a5a604160e01b8152600401620009689493929190620076f5565b604080516020601f840181900481028201810190925282815260009162005327918585808385018382808284376000920191909152509293925050620068c99050565b9050620d2f008110806200533d57506009548111155b15620053665784848484604051630a5a604160e01b8152600401620009689493929190620076f5565b600a55620055e6565b620053d86040518060400160405280600c81526020016b66656c6f6e7950657244617960a01b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200686c9050565b156200548457602081146200540a5783838383604051630a5a604160e01b8152600401620009689493929190620076f5565b604080516020601f84018190048102820181019092528281526000916200544d918585808385018382808284376000920191909152509293925050620068c99050565b9050806000036200547b5784848484604051630a5a604160e01b8152600401620009689493929190620076f5565b601455620055e6565b620054ef6040518060400160405280600e81526020016d30b9b9b2ba283937ba32b1ba37b960911b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200686c9050565b15620055c35760148114620055215783838383604051630a5a604160e01b8152600401620009689493929190620076f5565b600062005569601484848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050620068c99050565b90506001600160a01b0381166200559d5784848484604051630a5a604160e01b8152600401620009689493929190620076f5565b601680546001600160a01b0319166001600160a01b0392909216919091179055620055e6565b838383836040516325ee20d560e21b8152600401620009689493929190620076f5565b7ff1ce9b2cbf50eeb05769a29e2543fd350cab46894a7dd9978a12d534bb20e633848484846040516200561d9493929190620076f5565b60405180910390a150505050565b60005462010000900460ff1615620056565760405163d7485e8f60e01b815260040160405180910390fd5b3360009081526017602052604090205460ff1615620056885760405163b1d02c3d60e01b815260040160405180910390fd5b816000816001600160401b03811115620056a657620056a66200709d565b604051908082528060200260200182016040528015620056d0578160200160208202803683370190505b5090506000805b83811015620057ce5762005719878783818110620056f957620056f9620070b3565b905060200201602081019062005710919062006971565b600b90620061e6565b620057375760405163fdf4600b60e01b815260040160405180910390fd5b600d6000888884818110620057505762005750620070b3565b905060200201602081019062005767919062006971565b6001600160a01b0390811682526020820192909252604001600020600201548451911692508290849083908110620057a357620057a3620070b3565b6001600160a01b0390921660209283029190910190910152620057c6816200711f565b9050620056d7565b50604051634484077560e01b81526120059063448407759062001b349085908890600401620070c9565b33611001146200582057604051630f22c43960e41b8152611001600482015260240162000968565b6001600160a01b038082166000908152600f60205260409020541662005848600b82620061e6565b620058665760405163fdf4600b60e01b815260040160405180910390fd5b6001600160a01b0381166000908152600d60209081526040808320601454428086526015909452919093205410620058b15760405163413361db60e01b815260040160405180910390fd5b6000818152601560205260408120805460019290620058d290849062007002565b909155506000905080620058e785826200620b565b91509150816200590a57604051631b919bb160e11b815260040160405180910390fd5b600284015460085460405163045bc4d160e41b815260048101919091526000916001600160a01b0316906345bc4d10906024016020604051808303816000875af11580156200595d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005983919062007018565b905062005991858362006295565b856001600160a01b03167f6e9a2ee7aee95665e3a774a212eb11441b217e3e4656ab9563793094689aabb283836000604051620059d19392919062007032565b60405180910390a26002850154604051633041949b60e01b81526001600160a01b039182166004820152908716602482015261200590633041949b9060440162004339565b600080606081808562005a2b600b82620061e6565b62005a495760405163fdf4600b60e01b815260040160405180910390fd5b6001600160a01b038088166000908152600d6020908152604080832081516101408101835281548616815260018201548616938101939093526002810154909416908201526003830180549293919260608401919062005aa99062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462005ad79062006f83565b801562005b285780601f1062005afc5761010080835404028352916020019162005b28565b820191906000526020600020905b81548152906001019060200180831162005b0a57829003601f168201915b505050505081526020016004820160405180608001604052908160008201805462005b539062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462005b819062006f83565b801562005bd25780601f1062005ba65761010080835404028352916020019162005bd2565b820191906000526020600020905b81548152906001019060200180831162005bb457829003601f168201915b5050505050815260200160018201805462005bed9062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462005c1b9062006f83565b801562005c6c5780601f1062005c405761010080835404028352916020019162005c6c565b820191906000526020600020905b81548152906001019060200180831162005c4e57829003601f168201915b5050505050815260200160028201805462005c879062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462005cb59062006f83565b801562005d065780601f1062005cda5761010080835404028352916020019162005d06565b820191906000526020600020905b81548152906001019060200180831162005ce857829003601f168201915b5050505050815260200160038201805462005d219062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462005d4f9062006f83565b801562005da05780601f1062005d745761010080835404028352916020019162005da0565b820191906000526020600020905b81548152906001019060200180831162005d8257829003601f168201915b505050919092525050508152604080516060808201835260088501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600984015460ff16151582840152600a84015490830152600b8301546080830152805161028081019182905260a09092019190600c84019060149082845b81548152602001906001019080831162005e2c5750505091909252505081516040830151606084015160c085015160e090950151929d919c509a50929850965090945050505050565b60005462010000900460ff161562005ea05760405163d7485e8f60e01b815260040160405180910390fd5b3360009081526017602052604090205460ff161562005ed25760405163b1d02c3d60e01b815260040160405180910390fd5b3362005ee0600b82620061e6565b62005efe5760405163fdf4600b60e01b815260040160405180910390fd5b62005f0e6200346f83806200713b565b62005f2c57604051635dba5ad760e01b815260040160405180910390fd5b336000818152600d60205260409020600b810154429062005f51906201518062007002565b111562005f7157604051631f92cdbd60e11b815260040160405180910390fd5b836004820162005f8282826200729b565b505042600b8201556040516001600160a01b038316907f85d6366b336ade7f106987ec7a8eac1e8799e508aeab045a39d2f63e0dc969d990600090a250505050565b60005462010000900460ff161562005fef5760405163d7485e8f60e01b815260040160405180910390fd5b3360009081526017602052604090205460ff1615620060215760405163b1d02c3d60e01b815260040160405180910390fd5b336200602f600b82620061e6565b6200604d5760405163fdf4600b60e01b815260040160405180910390fd5b6200605b858585856200665e565b6200607957604051631647e3cb60e11b815260040160405180910390fd5b60006001600160a01b0316600e86866040516200609892919062006fb9565b908152604051908190036020019020546001600160a01b0316141580620060e2575060128585604051620060ce92919062006fb9565b9081526040519081900360200190205460ff165b1562006101576040516311fdb94760e01b815260040160405180910390fd5b336000818152600d60205260409020600b810154429062006126906201518062007002565b11156200614657604051631f92cdbd60e11b815260040160405180910390fd5b6003810162006157878983620071ce565b5042600b8201556040518290600e9062006175908a908a9062006fb9565b90815260405190819003602001812080546001600160a01b039384166001600160a01b0319909116179055908316907f783156582145bd0ff7924fae6953ba054cf1233eb60739a200ddb10de068ff0d90620061d5908a908a90620074a8565b60405180910390a250505050505050565b6001600160a01b038116600090815260018301602052604081205415155b9392505050565b600080600084846040516020016200622592919062007720565b60408051601f198184030181529181528151602092830120600081815260109093529120549091504281111562006265576000809350935050506200628e565b600a5462006274904262007002565b600092835260106020526040909220829055506001925090505b9250929050565b60006001620062a5600b620064a3565b620062b191906200706d565b6013541080159150620062fd5760018301546040516001600160a01b03909116907f2afdc18061ac21cff7d9f11527ab9c8dec6fabd4edf6f894ed634bebd6a20d4590600090a2505050565b82600a01548211156200631257600a83018290555b600983015460ff16620063855760098301805460ff19166001908117909155601380546000906200634590849062007002565b909155505060018301546040516001600160a01b03909116907f4905ac32602da3fb8b4b7b00c285e5fc4c6c2308cc908b4a1e4e9625a29c90a390600090a25b505050565b6001600160a01b0381166000908152600d60205260409020600981015460ff1615620063b4575050565b6002805490820154604051630913db4760e01b81526001600160a01b03858116600483015290911690630913db4790602401602060405180830381865afa15801562006404573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200642a919062007018565b10156200649f576200643e81600062006295565b80546040516372c4db0f60e11b81526001600160a01b0390911660048201526110009063e589b61e90602401600060405180830381600087803b1580156200648557600080fd5b505af11580156200649a573d6000803e3d6000fd5b505050505b5050565b600062003950825490565b6000620062048383620068ce565b600080829050600381511080620064d4575060098151115b15620064e35750600092915050565b604181600081518110620064fb57620064fb620070b3565b016020015160f81c10806200652d5750605a81600081518110620065235762006523620070b3565b016020015160f81c115b156200653c5750600092915050565b60015b815181101562006654576030828281518110620065605762006560620070b3565b016020015160f81c10806200659157506039828281518110620065875762006587620070b3565b016020015160f81c115b8015620065e157506041828281518110620065b057620065b0620070b3565b016020015160f81c1080620065e15750605a828281518110620065d757620065d7620070b3565b016020015160f81c115b80156200663157506061828281518110620066005762006600620070b3565b016020015160f81c1080620066315750607a828281518110620066275762006627620070b3565b016020015160f81c115b1562006641575060009392505050565b6200664c816200711f565b90506200653f565b5060019392505050565b600060308414158062006672575060608214155b15620066815750600062006783565b60008585466040516020016200669a939291906200776a565b60408051808303601f1901815282825280516020918201208184528383019092529092506000919060208201818036833701905050905081602082015260008186868a8a604051602001620066f49594939291906200777c565b60408051808303601f190181526001808452838301909252925060009190602082018180368337019050509050815160016020830182602086016066600019fa6200673e57600080fd5b50600081600081518110620067575762006757620070b3565b016020015160f81c905060018114620067795760009550505050505062006783565b6001955050505050505b949350505050565b60008061200361dead604051620067a2906200694d565b6001600160a01b03928316815291166020820152606060408201819052600090820152608001604051809103906000f080158015620067e5573d6000803e3d6000fd5b509050806001600160a01b031663f399e22e3486866040518463ffffffff1660e01b815260040162006819929190620077b4565b6000604051808303818588803b1580156200683357600080fd5b505af115801562006848573d6000803e3d6000fd5b5093979650505050505050565b600062006204836001600160a01b038416620068fb565b600081604051602001620068819190620076d7565b6040516020818303038152906040528051906020012083604051602001620068aa9190620076d7565b6040516020818303038152906040528051906020012014905092915050565b015190565b6000826000018281548110620068e857620068e8620070b3565b9060005260206000200154905092915050565b6000818152600183016020526040812054620069445750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915562003950565b50600062003950565b610e9680620077db83390190565b6001600160a01b038116811462000ebe57600080fd5b6000602082840312156200698457600080fd5b813562006204816200695b565b60008083601f840112620069a457600080fd5b5081356001600160401b03811115620069bc57600080fd5b6020830191508360208285010111156200628e57600080fd5b60008060208385031215620069e957600080fd5b82356001600160401b0381111562006a0057600080fd5b62006a0e8582860162006991565b90969095509350505050565b6000806040838503121562006a2e57600080fd5b823562006a3b816200695b565b946020939093013593505050565b8035801515811462006a5a57600080fd5b919050565b6000806000806080858703121562006a7657600080fd5b843562006a83816200695b565b9350602085013562006a95816200695b565b92506040850135915062006aac6060860162006a49565b905092959194509250565b6001600160401b038116811462000ebe57600080fd5b60006020828403121562006ae057600080fd5b8135620062048162006ab7565b6000806040838503121562006b0157600080fd5b50508035926020909101359150565b600081518084526020808501945080840160005b8381101562006b4b5781516001600160a01b03168752958201959082019060010162006b24565b509495945050505050565b60005b8381101562006b7357818101518382015260200162006b59565b50506000910152565b6000815180845262006b9681602086016020860162006b56565b601f01601f19169290920160200192915050565b60808152600062006bbf608083018762006b10565b82810360208481019190915286518083528782019282019060005b8181101562006bf85784518352938301939183019160010162006bda565b5050848103604086015286518082528282019350600581901b8201830183890160005b8381101562006c4d57601f1985840301875262006c3a83835162006b7c565b9686019692509085019060010162006c1b565b5050809550505050505082606083015295945050505050565b6000608082840312156200374557600080fd5b600080600080600080600087890360e081121562006c9657600080fd5b883562006ca3816200695b565b975060208901356001600160401b038082111562006cc057600080fd5b62006cce8c838d0162006991565b909950975060408b013591508082111562006ce857600080fd5b62006cf68c838d0162006991565b90975095508591506060605f198401121562006d1157600080fd5b60608b01945060c08b013592508083111562006d2c57600080fd5b505062006d3c8a828b0162006c66565b91505092959891949750929550565b6000806040838503121562006d5f57600080fd5b823562006d6c816200695b565b915062006d7c6020840162006a49565b90509250929050565b60208152600082516080602084015262006da360a084018262006b7c565b90506020840151601f198085840301604086015262006dc3838362006b7c565b9250604086015191508085840301606086015262006de2838362006b7c565b925060608601519150808584030160808601525062006e02828262006b7c565b95945050505050565b6000806000806040858703121562006e2257600080fd5b84356001600160401b038082111562006e3a57600080fd5b62006e488883890162006991565b9096509450602087013591508082111562006e6257600080fd5b5062006e718782880162006991565b95989497509550505050565b60008060006040848603121562006e9357600080fd5b83356001600160401b038082111562006eab57600080fd5b818601915086601f83011262006ec057600080fd5b81358181111562006ed057600080fd5b8760208260051b850101111562006ee657600080fd5b6020928301955093505084013562006efe816200695b565b809150509250925092565b6001600160a01b0386811682528516602082015260a06040820181905260009062006f379083018662006b7c565b931515606083015250608001529392505050565b60006020828403121562006f5e57600080fd5b81356001600160401b0381111562006f7557600080fd5b620067838482850162006c66565b600181811c9082168062006f9857607f821691505b6020821081036200374557634e487b7160e01b600052602260045260246000fd5b8183823760009101908152919050565b634e487b7160e01b600052601160045260246000fd5b60008262006ffd57634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111562003950576200395062006fc9565b6000602082840312156200702b57600080fd5b5051919050565b8381526020810183905260608101600383106200705f57634e487b7160e01b600052602160045260246000fd5b826040830152949350505050565b8181038181111562003950576200395062006fc9565b808202811582820484141762003950576200395062006fc9565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b604081526000620070de604083018562006b10565b905060018060a01b03831660208301529392505050565b6001600160401b0382811682821603908082111562007118576200711862006fc9565b5092915050565b60006001820162007134576200713462006fc9565b5060010190565b6000808335601e198436030181126200715357600080fd5b8301803591506001600160401b038211156200716e57600080fd5b6020019150368190038213156200628e57600080fd5b601f8211156200638557600081815260208120601f850160051c81016020861015620071ad5750805b601f850160051c820191505b818110156200649a57828155600101620071b9565b6001600160401b03831115620071e857620071e86200709d565b6200720083620071f9835462006f83565b8362007184565b6000601f8411600181146200723757600085156200721e5750838201355b600019600387901b1c1916600186901b17835562007294565b600083815260209020601f19861690835b828110156200726a578685013582556020948501946001909201910162007248565b5086821015620072885760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b620072a782836200713b565b6001600160401b03811115620072c157620072c16200709d565b620072d981620072d2855462006f83565b8562007184565b6000601f821160018114620073105760008315620072f75750838201355b600019600385901b1c1916600184901b1785556200736d565b600085815260209020601f19841690835b8281101562007343578685013582556020948501946001909201910162007321565b5084821015620073615760001960f88660031b161c19848701351681555b505060018360011b0185555b505050506200738060208301836200713b565b62007390818360018601620071ce565b5050620073a160408301836200713b565b620073b1818360028601620071ce565b5050620073c260608301836200713b565b620073d2818360038601620071ce565b50505050565b8135620073e58162006ab7565b6001600160401b03811690508154816001600160401b031982161783556020840135620074128162006ab7565b6fffffffffffffffff0000000000000000604091821b166fffffffffffffffffffffffffffffffff19831684178117855590850135620074528162006ab7565b6001600160c01b0319929092169092179190911760809190911b67ffffffffffffffff60801b1617905550565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b602081526000620067836020830184866200747f565b604051601f8201601f191681016001600160401b0381118282101715620074e957620074e96200709d565b604052919050565b60006001600160401b038211156200750d576200750d6200709d565b5060051b60200190565b600060208083850312156200752b57600080fd5b82516001600160401b038111156200754257600080fd5b8301601f810185136200755457600080fd5b80516200756b6200756582620074f1565b620074be565b81815260059190911b820183019083810190878311156200758b57600080fd5b928401925b82841015620075b6578351620075a6816200695b565b8252928401929084019062007590565b979650505050505050565b60006020808385031215620075d557600080fd5b82516001600160401b0380821115620075ed57600080fd5b8185019150601f86818401126200760357600080fd5b8251620076146200756582620074f1565b81815260059190911b840185019085810190898311156200763457600080fd5b8686015b83811015620076c957805186811115620076525760008081fd5b8701603f81018c13620076655760008081fd5b888101516040888211156200767e576200767e6200709d565b62007691828901601f19168c01620074be565b8281528e82848601011115620076a75760008081fd5b620076b8838d830184870162006b56565b865250505091870191870162007638565b509998505050505050505050565b60008251620076eb81846020870162006b56565b9190910192915050565b6040815260006200770b6040830186886200747f565b8281036020840152620075b68185876200747f565b6bffffffffffffffffffffffff198360601b1681526000600383106200775657634e487b7160e01b600052602160045260246000fd5b5060f89190911b6014820152601501919050565b82848237909101908152602001919050565b6000865162007790818460208b0162006b56565b82018587823760009086019081528385823760009301928352509095945050505050565b6001600160a01b0383168152604060208201819052600090620067839083018462006b7c56fe608060405260405162000e9638038062000e96833981016040819052620000269162000497565b828162000036828260006200004d565b50620000449050826200008a565b505050620005ca565b6200005883620000e5565b600082511180620000665750805b1562000085576200008383836200012760201b620001691760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f620000b562000156565b604080516001600160a01b03928316815291841660208301520160405180910390a1620000e2816200018f565b50565b620000f08162000244565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606200014f838360405180606001604052806027815260200162000e6f60279139620002f8565b9392505050565b60006200018060008051602062000e4f83398151915260001b6200037760201b620001951760201c565b546001600160a01b0316919050565b6001600160a01b038116620001fa5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b806200022360008051602062000e4f83398151915260001b6200037760201b620001951760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6200025a816200037a60201b620001981760201c565b620002be5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401620001f1565b80620002237f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b6200037760201b620001951760201c565b6060600080856001600160a01b03168560405162000317919062000577565b600060405180830381855af49150503d806000811462000354576040519150601f19603f3d011682016040523d82523d6000602084013e62000359565b606091505b5090925090506200036d8683838762000389565b9695505050505050565b90565b6001600160a01b03163b151590565b60608315620003fd578251600003620003f5576001600160a01b0385163b620003f55760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401620001f1565b508162000409565b62000409838362000411565b949350505050565b815115620004225781518083602001fd5b8060405162461bcd60e51b8152600401620001f1919062000595565b80516001600160a01b03811681146200045657600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200048e57818101518382015260200162000474565b50506000910152565b600080600060608486031215620004ad57600080fd5b620004b8846200043e565b9250620004c8602085016200043e565b60408501519092506001600160401b0380821115620004e657600080fd5b818601915086601f830112620004fb57600080fd5b8151818111156200051057620005106200045b565b604051601f8201601f19908116603f011681019083821181831017156200053b576200053b6200045b565b816040528281528960208487010111156200055557600080fd5b6200056883602083016020880162000471565b80955050505050509250925092565b600082516200058b81846020870162000471565b9190910192915050565b6020815260008251806020840152620005b681604085016020870162000471565b601f01601f19169190910160400192915050565b61087580620005da6000396000f3fe60806040523661001357610011610017565b005b6100115b61001f6101a7565b6001600160a01b0316330361015f5760606001600160e01b0319600035166364d3180d60e11b810161005a576100536101da565b9150610157565b63587086bd60e11b6001600160e01b031982160161007a57610053610231565b63070d7c6960e41b6001600160e01b031982160161009a57610053610277565b621eb96f60e61b6001600160e01b03198216016100b9576100536102a8565b63a39f25e560e01b6001600160e01b03198216016100d9576100536102e8565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101676102fc565b565b606061018e83836040518060600160405280602781526020016108426027913961030c565b9392505050565b90565b6001600160a01b03163b151590565b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101e4610384565b60006101f33660048184610695565b81019061020091906106db565b905061021d8160405180602001604052806000815250600061038f565b505060408051602081019091526000815290565b60606000806102433660048184610695565b810190610250919061070c565b915091506102608282600161038f565b604051806020016040528060008152509250505090565b6060610281610384565b60006102903660048184610695565b81019061029d91906106db565b905061021d816103bb565b60606102b2610384565b60006102bc6101a7565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102f2610384565b60006102bc610412565b610167610307610412565b610421565b6060600080856001600160a01b03168560405161032991906107f2565b600060405180830381855af49150503d8060008114610364576040519150601f19603f3d011682016040523d82523d6000602084013e610369565b606091505b509150915061037a86838387610445565b9695505050505050565b341561016757600080fd5b610398836104c6565b6000825111806103a55750805b156103b6576103b48383610169565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103e46101a7565b604080516001600160a01b03928316815291841660208301520160405180910390a161040f81610506565b50565b600061041c6105af565b905090565b3660008037600080366000845af43d6000803e808015610440573d6000f35b3d6000fd5b606083156104b45782516000036104ad576001600160a01b0385163b6104ad5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014e565b50816104be565b6104be83836105d7565b949350505050565b6104cf81610601565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b03811661056b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014e565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101cb565b8151156105e75781518083602001fd5b8060405162461bcd60e51b815260040161014e919061080e565b6001600160a01b0381163b61066e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014e565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61058e565b600080858511156106a557600080fd5b838611156106b257600080fd5b5050820193919092039150565b80356001600160a01b03811681146106d657600080fd5b919050565b6000602082840312156106ed57600080fd5b61018e826106bf565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561071f57600080fd5b610728836106bf565b9150602083013567ffffffffffffffff8082111561074557600080fd5b818501915085601f83011261075957600080fd5b81358181111561076b5761076b6106f6565b604051601f8201601f19908116603f01168101908382118183101715610793576107936106f6565b816040528281528860208487010111156107ac57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60005b838110156107e95781810151838201526020016107d1565b50506000910152565b600082516108048184602087016107ce565b9190910192915050565b602081526000825180602084015261082d8160408501602087016107ce565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000ab53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c656400000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000a164736f6c6343000811000a", + }, + { + ContractAddr: common.HexToAddress(StakeCreditContract), + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/cfc0bd1127186a917ddc38fd38d22903034d3f0b", + Code: "6080604052600436106101855760003560e01c80635e607d76116100d1578063a5d059ca1161008a578063c2cde2b211610064578063c2cde2b2146104af578063d241c1ea146104cf578063dd62ed3e14610516578063f399e22e1461053657600080fd5b8063a5d059ca1461044f578063a9059cbb1461046f578063aad3ec961461048f57600080fd5b80635e607d761461038f578063647df759146103a457806370a08231146103c457806391faf0b4146103fa57806395d89b411461041a578063a457c2d71461042f57600080fd5b8063313ce5671161013e5780634056852d116101185780634056852d1461031c57806345bc4d101461033c5780634d99dd161461035c5780635c19a95c1461037c57600080fd5b8063313ce567146102a857806339509351146102c45780633a5381b5146102e457600080fd5b806306fdde03146101d45780630913db47146101ff578063095ea7b31461022d57806315d1f8981461025d57806318160ddd1461027357806323b872dd1461028857600080fd5b366101cf5733612002146101b557604051630f22c43960e41b815261200260048201526024015b60405180910390fd5b34609860008282546101c791906119f0565b925050819055005b600080fd5b3480156101e057600080fd5b506101e9610549565b6040516101f69190611a03565b60405180910390f35b34801561020b57600080fd5b5061021f61021a366004611a69565b6105db565b6040519081526020016101f6565b34801561023957600080fd5b5061024d610248366004611a8d565b610603565b60405190151581526020016101f6565b34801561026957600080fd5b5061021f60985481565b34801561027f57600080fd5b5060675461021f565b34801561029457600080fd5b5061024d6102a3366004611ab9565b61061b565b3480156102b457600080fd5b50604051601281526020016101f6565b3480156102d057600080fd5b5061024d6102df366004611a8d565b61063f565b3480156102f057600080fd5b50609754610304906001600160a01b031681565b6040516001600160a01b0390911681526020016101f6565b34801561032857600080fd5b5061021f610337366004611a69565b610661565b34801561034857600080fd5b5061021f610357366004611afa565b610728565b34801561036857600080fd5b5061021f610377366004611a8d565b61081b565b61021f61038a366004611a69565b610a02565b6103a261039d366004611b13565b610a55565b005b3480156103b057600080fd5b5061021f6103bf366004611afa565b610b1d565b3480156103d057600080fd5b5061021f6103df366004611a69565b6001600160a01b031660009081526065602052604090205490565b34801561040657600080fd5b5061021f610415366004611afa565b610b5c565b34801561042657600080fd5b506101e9610b97565b34801561043b57600080fd5b5061024d61044a366004611a8d565b610ba6565b34801561045b57600080fd5b5061021f61046a366004611a8d565b610c21565b34801561047b57600080fd5b5061024d61048a366004611a8d565b610d22565b34801561049b57600080fd5b5061021f6104aa366004611a8d565b610d30565b3480156104bb57600080fd5b5061021f6104ca366004611a69565b610ff2565b3480156104db57600080fd5b506104ef6104ea366004611a8d565b611010565b604080518351815260208085015190820152928101519083015260608201526080016101f6565b34801561052257600080fd5b5061021f610531366004611b3d565b6110c0565b6103a2610544366004611b76565b6110eb565b60606068805461055890611bfb565b80601f016020809104026020016040519081016040528092919081815260200182805461058490611bfb565b80156105d15780601f106105a6576101008083540402835291602001916105d1565b820191906000526020600020905b8154815290600101906020018083116105b457829003601f168201915b5050505050905090565b6001600160a01b0381166000908152606560205260408120546105fd90610b5c565b92915050565b600033610611818585611295565b5060019392505050565b6000336106298582856112ae565b610634858585611322565b506001949350505050565b60003361061181858561065283836110c0565b61065c91906119f0565b611295565b6001600160a01b0381166000908152609a6020526040812054600f81810b600160801b909204900b0380820361069a5750600092915050565b6000805b82811015610720576001600160a01b0385166000908152609a602052604081206106c79061133b565b6000818152609960209081526040918290208251606081018452815481526001820154928101839052600290910154928101929092529192509061070b90856119f0565b935050508061071990611c2f565b905061069e565b509392505050565b6000336120021461075057604051630f22c43960e41b815261200260048201526024016101ac565b6097546001600160a01b03166000908152606560205260408120549061077584610b1d565b90508181116107845780610786565b815b6097549091506000906107a2906001600160a01b03168361138f565b6040519091506000906110029083908381818185875af1925050503d80600081146107e9576040519150601f19603f3d011682016040523d82523d6000602084013e6107ee565b606091505b5050905080610810576040516312171d8360e31b815260040160405180910390fd5b50925050505b919050565b6000336120021461084357604051630f22c43960e41b815261200260048201526024016101ac565b8160000361086457604051631f2a200560e01b815260040160405180910390fd5b6001600160a01b03831660009081526065602052604090205482111561089d57604051631e9acf1760e31b815260040160405180910390fd5b6108a7838361138f565b905060006120026001600160a01b031663fc0c5ff16040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061090f9190611c48565b61091990426119f0565b6040805160608101825285815260208101859052908101829052909150600085610942816113c4565b60405160609290921b6bffffffffffffffffffffffff19166020830152603482015260540160408051601f19818403018152918152815160209283012060008181526099845282812086518155868501516001820155868401516002909101556001600160a01b038a168152609a90935291209091506109f990828154600160801b90819004600f0b6000818152600180860160205260409091209390935583546001600160801b03908116939091011602179055565b50505092915050565b60003361200214610a2a57604051630f22c43960e41b815261200260048201526024016101ac565b34600003610a4b57604051631f2a200560e01b815260040160405180910390fd5b6105fd82346113ec565b3361200214610a7b57604051630f22c43960e41b815261200260048201526024016101ac565b346000612710610a9567ffffffffffffffff851684611c61565b610a9f9190611c78565b90506000610aad8284611c9a565b90508060986000828254610ac191906119f0565b9091555050609754610adc906001600160a01b0316836113ec565b5060408051828152602081018490527ffb0e1482d62102ab9594f69d4c6d693749e3e2bf1c21af272f5456b2d5a4f6b591015b60405180910390a150505050565b6000609854600003610b42576040516307b76ce760e51b815260040160405180910390fd5b609854606754610b529084611c61565b6105fd9190611c78565b6000610b6760675490565b600003610b8757604051632fe8dae960e01b815260040160405180910390fd5b606754609854610b529084611c61565b60606069805461055890611bfb565b60003381610bb482866110c0565b905083811015610c145760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016101ac565b6106348286868403611295565b60003361200214610c4957604051630f22c43960e41b815261200260048201526024016101ac565b81600003610c6a57604051631f2a200560e01b815260040160405180910390fd5b6001600160a01b038316600090815260656020526040902054821115610ca357604051631e9acf1760e31b815260040160405180910390fd5b610cad838361138f565b6040519091506000906120029083908381818185875af1925050503d8060008114610cf4576040519150601f19603f3d011682016040523d82523d6000602084013e610cf9565b606091505b5050905080610d1b576040516312171d8360e31b815260040160405180910390fd5b5092915050565b600033610611818585611322565b60003361200214610d5857604051630f22c43960e41b815261200260048201526024016101ac565b610d60611415565b6001600160a01b0383166000908152609a6020526040902054600f81810b600160801b909204900b03600003610da95760405163ad41893760e01b815260040160405180910390fd5b811580610ddd57506001600160a01b0383166000908152609a6020526040902054600f81810b600160801b909204900b0382115b610de75781610e11565b6001600160a01b0383166000908152609a6020526040902054600f81810b600160801b909204900b035b915060005b8215610ee6576001600160a01b0384166000908152609a60205260408120610e3d9061133b565b60008181526099602090815260409182902082516060810184528154815260018201549281019290925260020154918101829052919250421015610e82575050610ee6565b6001600160a01b0386166000908152609a60205260409020610ea39061146e565b50600082815260996020908152604082208281556001810183905560020191909155810151610ed290846119f0565b9250610edd85611cad565b94505050610e16565b80600003610f07576040516303cd8e0960e21b815260040160405180910390fd5b60006120026001600160a01b031663e8f67c3b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f6d9190611c48565b90506000856001600160a01b03168284604051600060405180830381858888f193505050503d8060008114610fbe576040519150601f19603f3d011682016040523d82523d6000602084013e610fc3565b606091505b5050905080610fe5576040516312171d8360e31b815260040160405180910390fd5b50506001805590506105fd565b6001600160a01b0381166000908152609b60205260408120546105fd565b61103460405180606001604052806000815260200160008152602001600081525090565b6001600160a01b0383166000908152609a60205260408120819061105890856114ed565b60008181526099602090815260408083206001600160a01b038a168452609a9092529091205491925090600f81810b600160801b909204900b036040805160608101825283548152600184015460208201526002909301549083015290969095509350505050565b6001600160a01b03918216600090815260666020908152604080832093909416825291909152205490565b600054610100900460ff161580801561110b5750600054600160ff909116105b806111255750303b158015611125575060005460ff166001145b6111885760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016101ac565b6000805460ff1916600117905580156111ab576000805461ff0019166101001790555b33612002146111d157604051630f22c43960e41b815261200260048201526024016101ac565b600083836040516020016111e6929190611cc4565b60405160208183030381529060405290506000848460405160200161120c929190611cf4565b6040516020818303038152906040529050611227828261155e565b609780546001600160a01b0319166001600160a01b03881617905561124b346115a3565b5050801561128f576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602001610b0f565b50505050565b604051632028747160e01b815260040160405180910390fd5b60006112ba84846110c0565b9050600019811461128f57818110156113155760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016101ac565b61128f8484848403611295565b604051638cd22d1960e01b815260040160405180910390fd5b60006113568254600f81810b600160801b909204900b131590565b1561137457604051631ed9509560e11b815260040160405180910390fd5b508054600f0b60009081526001909101602052604090205490565b600061139a82610b5c565b90506113a68383611713565b80609860008282546113b89190611c9a565b90915550909392505050565b6001600160a01b0381166000908152609b602052604090208054600181018255905b50919050565b60006113f782610b1d565b90506114038382611847565b81609860008282546113b891906119f0565b6002600154036114675760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016101ac565b6002600155565b60006114898254600f81810b600160801b909204900b131590565b156114a757604051631ed9509560e11b815260040160405180910390fd5b508054600f0b6000818152600180840160205260408220805492905583546fffffffffffffffffffffffffffffffff191692016001600160801b03169190911790915590565b6000806115106114fc84611908565b855461150b9190600f0b611d12565b611976565b8454909150600160801b9004600f90810b9082900b1261154357604051632d0483c560e21b815260040160405180910390fd5b600f0b60009081526001939093016020525050604090205490565b600054610100900460ff166115855760405162461bcd60e51b81526004016101ac90611d3a565b60686115918382611de9565b50606961159e8282611de9565b505050565b600054610100900460ff166115ca5760405162461bcd60e51b81526004016101ac90611d3a565b60006120026001600160a01b031663ae0f336d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561160c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116309190611c48565b9050808211158061164a57506097546001600160a01b0316155b80611656575060675415155b1561167457604051632163e6b960e21b815260040160405180910390fd5b60006120026001600160a01b0316634e6fd6c46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116da9190611ea9565b90506116e68183611847565b60006116f28385611c9a565b60975490915061170b906001600160a01b031682611847565b505050609855565b6001600160a01b0382166117735760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016101ac565b6001600160a01b038216600090815260656020526040902054818110156117e75760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016101ac565b6001600160a01b03831660008181526065602090815260408083208686039055606780548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b6001600160a01b03821661189d5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016101ac565b80606760008282546118af91906119f0565b90915550506001600160a01b0382166000818152606560209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b60006001600160ff1b038211156119725760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b60648201526084016101ac565b5090565b80600f81900b81146108165760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20316044820152663238206269747360c81b60648201526084016101ac565b634e487b7160e01b600052601160045260246000fd5b808201808211156105fd576105fd6119da565b600060208083528351808285015260005b81811015611a3057858101830151858201604001528201611a14565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611a6657600080fd5b50565b600060208284031215611a7b57600080fd5b8135611a8681611a51565b9392505050565b60008060408385031215611aa057600080fd5b8235611aab81611a51565b946020939093013593505050565b600080600060608486031215611ace57600080fd5b8335611ad981611a51565b92506020840135611ae981611a51565b929592945050506040919091013590565b600060208284031215611b0c57600080fd5b5035919050565b600060208284031215611b2557600080fd5b813567ffffffffffffffff81168114611a8657600080fd5b60008060408385031215611b5057600080fd5b8235611b5b81611a51565b91506020830135611b6b81611a51565b809150509250929050565b600080600060408486031215611b8b57600080fd5b8335611b9681611a51565b9250602084013567ffffffffffffffff80821115611bb357600080fd5b818601915086601f830112611bc757600080fd5b813581811115611bd657600080fd5b876020828501011115611be857600080fd5b6020830194508093505050509250925092565b600181811c90821680611c0f57607f821691505b6020821081036113e657634e487b7160e01b600052602260045260246000fd5b600060018201611c4157611c416119da565b5060010190565b600060208284031215611c5a57600080fd5b5051919050565b80820281158282048414176105fd576105fd6119da565b600082611c9557634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156105fd576105fd6119da565b600081611cbc57611cbc6119da565b506000190190565b65029ba30b5b2960d51b815281836006830137660810dc99591a5d60ca1b91016006810191909152600d01919050565b611cdd60f21b81528183600283013760009101600201908152919050565b8082018281126000831280158216821582161715611d3257611d326119da565b505092915050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b634e487b7160e01b600052604160045260246000fd5b601f82111561159e57600081815260208120601f850160051c81016020861015611dc25750805b601f850160051c820191505b81811015611de157828155600101611dce565b505050505050565b815167ffffffffffffffff811115611e0357611e03611d85565b611e1781611e118454611bfb565b84611d9b565b602080601f831160018114611e4c5760008415611e345750858301515b600019600386901b1c1916600185901b178555611de1565b600085815260208120601f198616915b82811015611e7b57888601518255948401946001909101908401611e5c565b5085821015611e995787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060208284031215611ebb57600080fd5b8151611a8681611a5156fea164736f6c6343000811000a", + }, + { + ContractAddr: common.HexToAddress(GovernorContract), + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/cfc0bd1127186a917ddc38fd38d22903034d3f0b", + Code: "6080604052600436106103905760003560e01c80637d5e81e2116101dc578063c59057e411610102578063e23a9a52116100a0578063f23a6e611161006f578063f23a6e6114610cd6578063f8ce560a14610d02578063fc0c546a14610d22578063fe0d94c114610d4357600080fd5b8063e23a9a5214610bab578063ea0217cf14610c76578063eb9019d414610c96578063ece40cc114610cb657600080fd5b8063da95691a116100dc578063da95691a14610af1578063dd4e2ba514610b11578063ddf0b00914610b57578063deaaa7cc14610b7757600080fd5b8063c59057e414610a92578063d07f91e914610ab2578063d33219b414610ad257600080fd5b8063a890c9101161017a578063bc197c8111610149578063bc197c8114610a18578063c01f9e3714610a44578063c170ec0b14610a64578063c28bc2fa14610a7f57600080fd5b8063a890c910146109a3578063ab58fb8e146109c3578063ac431751146109e3578063b58131b014610a0357600080fd5b806391ddadf4116101b657806391ddadf41461092e57806397c3d3341461095a5780639a802a6d1461096e578063a7713a701461098e57600080fd5b80637d5e81e2146108d15780638129fc1c146108f157806384b0196e1461090657600080fd5b806332b8113e116102c15780634bf5d7e91161025f5780635f398a141161022e5780635f398a141461085157806360c4247f1461087157806370b0f660146108915780637b3c71d3146108b157600080fd5b80634bf5d7e9146107c1578063533ddd14146107d657806354fd4d5014610807578063567813881461083157600080fd5b80633e4f49e61161029b5780633e4f49e61461070957806340e58ee5146107365780634385963214610756578063452115d6146107a157600080fd5b806332b8113e146106aa5780633932abb1146106d35780633bccf4fd146106e957600080fd5b8063150b7a021161032e5780632656227d116103085780632656227d146105fc5780632d63f6931461060f5780632fe3e26114610646578063328dd9821461067a57600080fd5b8063150b7a0214610583578063160cbed7146105c757806324bc1a64146105e757600080fd5b8063034201811161036a57806303420181146104cb57806306f3f9e6146104eb57806306fdde031461050b578063143489d01461052d57600080fd5b8063013cf08b1461040057806301ffc9a71461047b57806302a251a3146104ab57600080fd5b366103fb573061039e610d56565b6001600160a01b0316146103f95760405162461bcd60e51b815260206004820152601f60248201527f476f7665726e6f723a206d7573742073656e6420746f206578656375746f720060448201526064015b60405180910390fd5b005b600080fd5b34801561040c57600080fd5b5061042061041b3660046156a8565b610d70565b604080519a8b526001600160a01b0390991660208b0152978901969096526060880194909452608087019290925260a086015260c085015260e084015215156101008301521515610120820152610140015b60405180910390f35b34801561048757600080fd5b5061049b6104963660046156c1565b610e2b565b6040519015158152602001610472565b3480156104b757600080fd5b50610162545b604051908152602001610472565b3480156104d757600080fd5b506104bd6104e6366004615807565b610e3c565b3480156104f757600080fd5b506103f96105063660046156a8565b610f34565b34801561051757600080fd5b50610520610fbf565b60405161047291906158fd565b34801561053957600080fd5b5061056b6105483660046156a8565b60009081526101306020526040902054600160401b90046001600160a01b031690565b6040516001600160a01b039091168152602001610472565b34801561058f57600080fd5b506105ae61059e366004615925565b630a85bd0160e11b949350505050565b6040516001600160e01b03199091168152602001610472565b3480156105d357600080fd5b506104bd6105e2366004615afc565b611052565b3480156105f357600080fd5b506104bd611257565b6104bd61060a366004615afc565b61127d565b34801561061b57600080fd5b506104bd61062a3660046156a8565b600090815261013060205260409020546001600160401b031690565b34801561065257600080fd5b506104bd7fb3b3f3b703cd84ce352197dcff232b1b5d3cfb2025ce47cf04742d0651f1af8881565b34801561068657600080fd5b5061069a6106953660046156a8565b611370565b6040516104729493929190615c54565b3480156106b657600080fd5b5061025c546040516001600160401b039091168152602001610472565b3480156106df57600080fd5b50610161546104bd565b3480156106f557600080fd5b506104bd610704366004615ca1565b611602565b34801561071557600080fd5b506107296107243660046156a8565b611678565b6040516104729190615d05565b34801561074257600080fd5b506103f96107513660046156a8565b611683565b34801561076257600080fd5b5061049b610771366004615d2d565b6000828152610193602090815260408083206001600160a01b038516845260080190915290205460ff1692915050565b3480156107ad57600080fd5b506104bd6107bc366004615afc565b6116ae565b3480156107cd57600080fd5b506105206116c5565b3480156107e257600080fd5b5061049b6107f1366004615d5d565b61028e6020526000908152604090205460ff1681565b34801561081357600080fd5b506040805180820190915260018152603160f81b6020820152610520565b34801561083d57600080fd5b506104bd61084c366004615d7a565b611772565b34801561085d57600080fd5b506104bd61086c366004615da6565b61179b565b34801561087d57600080fd5b506104bd61088c3660046156a8565b6117e5565b34801561089d57600080fd5b506103f96108ac3660046156a8565b61189a565b3480156108bd57600080fd5b506104bd6108cc366004615e29565b611922565b3480156108dd57600080fd5b506104bd6108ec366004615e82565b611974565b3480156108fd57600080fd5b506103f9611a04565b34801561091257600080fd5b5061091b611e41565b6040516104729796959493929190615f22565b34801561093a57600080fd5b50610943611edf565b60405165ffffffffffff9091168152602001610472565b34801561096657600080fd5b5060646104bd565b34801561097a57600080fd5b506104bd610989366004615f84565b611f53565b34801561099a57600080fd5b506104bd611f6a565b3480156109af57600080fd5b506103f96109be366004615d5d565b611f97565b3480156109cf57600080fd5b506104bd6109de3660046156a8565b61201f565b3480156109ef57600080fd5b506103f96109fe366004615fdc565b6120bb565b348015610a0f57600080fd5b506104bd61269a565b348015610a2457600080fd5b506105ae610a3336600461603b565b63bc197c8160e01b95945050505050565b348015610a5057600080fd5b506104bd610a5f3660046156a8565b6126a6565b348015610a7057600080fd5b5061028f5461049b9060ff1681565b6103f9610a8d3660046160ce565b6126b1565b348015610a9e57600080fd5b506104bd610aad366004615afc565b6127c1565b348015610abe57600080fd5b506103f9610acd366004616111565b6127fb565b348015610ade57600080fd5b506101f8546001600160a01b031661056b565b348015610afd57600080fd5b506104bd610b0c36600461613a565b612883565b348015610b1d57600080fd5b5060408051808201909152601a81527f737570706f72743d627261766f2671756f72756d3d627261766f0000000000006020820152610520565b348015610b6357600080fd5b506103f9610b723660046156a8565b61290a565b348015610b8357600080fd5b506104bd7f150214d74d59b7d1e90c73fc22ef3d991dd0a76b046543d4d80ab92d2a50328f81565b348015610bb757600080fd5b50610c46610bc6366004615d2d565b6040805160608101825260008082526020820181905291810191909152506000918252610193602090815260408084206001600160a01b0393909316845260089092018152918190208151606081018352905460ff8082161515835261010082041693820193909352620100009092046001600160601b03169082015290565b6040805182511515815260208084015160ff1690820152918101516001600160601b031690820152606001610472565b348015610c8257600080fd5b506103f9610c913660046156a8565b61292d565b348015610ca257600080fd5b506104bd610cb13660046161db565b6129b5565b348015610cc257600080fd5b506103f9610cd13660046156a8565b6129d6565b348015610ce257600080fd5b506105ae610cf1366004616207565b63f23a6e6160e01b95945050505050565b348015610d0e57600080fd5b506104bd610d1d3660046156a8565b612a5e565b348015610d2e57600080fd5b506101c55461056b906001600160a01b031681565b6103f9610d513660046156a8565b612aed565b6000610d6b6101f8546001600160a01b031690565b905090565b8060008080808080808080610d848a61201f565b60008c815261013060205260409020549098506001600160401b03169650610dab8b6126a6565b60008c81526101936020526040812080546005820154600683015460078401546001600160a01b039093169e50949a509850929650919450610dec8d611678565b90506002816007811115610e0257610e02615cef565b1493506007816007811115610e1957610e19615cef565b14925050509193959799509193959799565b6000610e3682612b10565b92915050565b600080610ee0610ed87fb3b3f3b703cd84ce352197dcff232b1b5d3cfb2025ce47cf04742d0651f1af888c8c8c8c604051610e7892919061626f565b60405180910390208b80519060200120604051602001610ebd959493929190948552602085019390935260ff9190911660408401526060830152608082015260a00190565b60405160208183030381529060405280519060200120612b35565b868686612b62565b9050610f268a828b8b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508d9250612b80915050565b9a9950505050505050505050565b610f3c610d56565b6001600160a01b0316336001600160a01b031614610f6c5760405162461bcd60e51b81526004016103f09061627f565b30610f75610d56565b6001600160a01b031614610fb35760008036604051610f9592919061626f565b604051809103902090505b80610fac610131612b8f565b03610fa057505b610fbc81612c0e565b50565b606061012f8054610fcf906162b6565b80601f0160208091040260200160405190810160405280929190818152602001828054610ffb906162b6565b80156110485780601f1061101d57610100808354040283529160200191611048565b820191906000526020600020905b81548152906001019060200180831161102b57829003601f168201915b5050505050905090565b600080611061868686866127c1565b9050600461106e82611678565b600781111561107f5761107f615cef565b1461109c5760405162461bcd60e51b81526004016103f0906162f0565b6101f8546040805163793d064960e11b815290516000926001600160a01b03169163f27a0c929160048083019260209291908290030181865afa1580156110e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061110b9190616331565b6101f85460405163b1c5f42760e01b81529192506001600160a01b03169063b1c5f42790611146908a908a908a906000908b9060040161634a565b602060405180830381865afa158015611163573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111879190616331565b60008381526101f96020526040808220929092556101f85491516308f2a0bb60e41b81526001600160a01b0390921691638f2a0bb0916111d4918b918b918b91908b908990600401616398565b600060405180830381600087803b1580156111ee57600080fd5b505af1158015611202573d6000803e3d6000fd5b505050507f9a2e42fd6722813d69113e7d0079d3d940171428df7373df9c7f7617cfda28928282426112349190616406565b604080519283526020830191909152015b60405180910390a15095945050505050565b6000610d6b6001611266611edf565b6112709190616419565b65ffffffffffff16612a5e565b60008061128c868686866127c1565b9050600061129982611678565b905060048160078111156112af576112af615cef565b14806112cc575060058160078111156112ca576112ca615cef565b145b6112e85760405162461bcd60e51b81526004016103f0906162f0565b6000828152610130602052604090819020600201805460ff19166001179055517f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f906113379084815260200190565b60405180910390a161134c8288888888612d7f565b6113598288888888612e20565b6113668288888888612ea7565b5095945050505050565b60608060608060006101936000878152602001908152602001600020905080600101816002018260030183600401838054806020026020016040519081016040528092919081815260200182805480156113f357602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116113d5575b505050505093508280548060200260200160405190810160405280929190818152602001828054801561144557602002820191906000526020600020905b815481526020019060010190808311611431575b5050505050925081805480602002602001604051908101604052809291908181526020016000905b8282101561151957838290600052602060002001805461148c906162b6565b80601f01602080910402602001604051908101604052809291908181526020018280546114b8906162b6565b80156115055780601f106114da57610100808354040283529160200191611505565b820191906000526020600020905b8154815290600101906020018083116114e857829003601f168201915b50505050508152602001906001019061146d565b50505050915080805480602002602001604051908101604052809291908181526020016000905b828210156115ec57838290600052602060002001805461155f906162b6565b80601f016020809104026020016040519081016040528092919081815260200182805461158b906162b6565b80156115d85780601f106115ad576101008083540402835291602001916115d8565b820191906000526020600020905b8154815290600101906020018083116115bb57829003601f168201915b505050505081526020019060010190611540565b5050505090509450945094509450509193509193565b604080517f150214d74d59b7d1e90c73fc22ef3d991dd0a76b046543d4d80ab92d2a50328f602082015290810186905260ff85166060820152600090819061165090610ed890608001610ebd565b905061166d87828860405180602001604052806000815250612ee2565b979650505050505050565b6000610e3682612f05565b60008060008061169285613052565b93509350935093506116a6848484846116ae565b505050505050565b60006116bc858585856132e3565b95945050505050565b6101c55460408051634bf5d7e960e01b815290516060926001600160a01b031691634bf5d7e99160048083019260009291908290030181865afa92505050801561173157506040513d6000823e601f3d908101601f1916820160405261172e919081019061643f565b60015b61176d575060408051808201909152601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c74000000602082015290565b919050565b60008033905061179384828560405180602001604052806000815250612ee2565b949350505050565b60008033905061166d87828888888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a9250612b80915050565b61022b546000908082036117fe57505061022a54919050565b600061022b61180e6001846164ac565b8154811061181e5761181e6164bf565b60009182526020918290206040805180820190915291015463ffffffff8116808352600160201b9091046001600160e01b0316928201929092529150841061187457602001516001600160e01b03169392505050565b611889611880856133ae565b61022b90613417565b6001600160e01b0316949350505050565b6118a2610d56565b6001600160a01b0316336001600160a01b0316146118d25760405162461bcd60e51b81526004016103f09061627f565b306118db610d56565b6001600160a01b03161461191957600080366040516118fb92919061626f565b604051809103902090505b80611912610131612b8f565b0361190657505b610fbc816134ca565b60008033905061196a86828787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612ee292505050565b9695505050505050565b600061197e61350d565b60005b85518110156119f75761028e60008783815181106119a1576119a16164bf565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff166119e557604051630b094f2760e31b815260040160405180910390fd5b806119ef816164d5565b915050611981565b506116bc858585856135b8565b600054610100900460ff1615808015611a245750600054600160ff909116105b80611a3e5750303b158015611a3e575060005460ff166001145b611aa15760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016103f0565b6000805460ff191660011790558015611ac4576000805461ff0019166101001790555b334114611ae45760405163022d8c9560e31b815260040160405180910390fd5b3a15611b03576040516383f1b1d360e01b815260040160405180910390fd5b611b2f6040518060400160405280600b81526020016a2129a1a3b7bb32b93737b960a91b815250613620565b611b49620151806212750068056bc75e2d63100000613677565b611b516136ae565b611b5c6120056136d5565b611b67612006613705565b611b71600a613735565b611b7d62015180613765565b61028e6020527ff0f52cefb444f33092ac77280e2ff9c808a9c078a96d3cd7513137548137ed8f8054600160ff1991821681179092557fb2c9e894c6f17bfc84a6708e0ea85c2729271d7cae0a8d875cd1080fb415e7a080548216831790557fd8ceb939a734f5a4e0a6fede9e31504e16ac856b555e8bac20ad743b9ff2976a80548216831790557f2a7b967fc66f4b36023165170b23a76f880d3dbbf244a856aeee9e670cef725980548216831790557fdb1a1113bac2e4f0e6f8c2f2bc4f6dbecf1fccb033d5df1b55b5c5ad6c20ac7980548216831790557f8b1888b379fb3b749668d86c5bf8aaada8e2276c6ced3a4efcc1e877827ce0b380548216831790557feeeea8d485053a64711f2c5802d2cc63251dd394956c140a2e30db7cef242ec580548216831790557f4cdb1a6c4b56f62f27f7202d75e865c2405f138cb32ec45019c0f2ca8f91e47280548216831790557f49d6c403a3197b15e024f109c83eb730d7af1a8b49fc6f820e09bad2597c14c980548216831790557f7a41b38ceb33f296c1ff3db5ffcc6542acb091d5fb27586f3c551dd2ebac063880548216831790557f701fe333ee20fad5d5a6a9930dddd3fb815af1d976d5250e394e39d6e4123e3880548216831790557fee7ba9842df249188adc0fc380980c3099f608b602924e083dd61e8e70845b4a80548216831790557f29973aeebf3c17f2c3a9cf7ace17f2798aa544e1ea7427938024cde6df46bac180548216831790557f74c0d6e29c82d6628d5f083f86fc15f0c6acef97321252a1eee0bd893dae276580548216831790556120066000527f1bdfc01e60036e5be56ae85d8394ddf727e1021b3d74de5b554fedea2de43767805490911690911790558015610fbc576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b6000606080600080600060606065546000801b148015611e615750606654155b611ea55760405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b60448201526064016103f0565b611ead613795565b611eb56137a4565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b6101c554604080516324776b7d60e21b815290516000926001600160a01b0316916391ddadf49160048083019260209291908290030181865afa925050508015611f46575060408051601f3d908101601f19168201909252611f43918101906164ee565b60015b61176d57610d6b436137b3565b6000611f6084848461381a565b90505b9392505050565b61022b5460009015611f8f57611f8161022b613891565b6001600160e01b0316905090565b5061022a5490565b611f9f610d56565b6001600160a01b0316336001600160a01b031614611fcf5760405162461bcd60e51b81526004016103f09061627f565b30611fd8610d56565b6001600160a01b0316146120165760008036604051611ff892919061626f565b604051809103902090505b8061200f610131612b8f565b0361200357505b610fbc816138c1565b6101f85460008281526101f9602052604080822054905163d45c443560e01b81526004810191909152909182916001600160a01b039091169063d45c443590602401602060405180830381865afa15801561207e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120a29190616331565b9050806001146120b25780611f63565b60009392505050565b33611007146120e157604051630f22c43960e41b815261100760048201526024016103f0565b6121476040518060400160405280600b81526020016a766f74696e6744656c617960a81b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505061392c9050565b156121f057602081146121755783838383604051630a5a604160e01b81526004016103f0949392919061653f565b604080516020601f84018190048102820181019092528281526000916121b69185858083850183828082843760009201919091525092939250506139859050565b9050806000036121e15784848484604051630a5a604160e01b81526004016103f0949392919061653f565b6121ea816134ca565b50612657565b6122576040518060400160405280600c81526020016b1d9bdd1a5b99d4195c9a5bd960a21b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505061392c9050565b156122fa57602081146122855783838383604051630a5a604160e01b81526004016103f0949392919061653f565b604080516020601f84018190048102820181019092528281526000916122c69185858083850183828082843760009201919091525092939250506139859050565b9050806000036122f15784848484604051630a5a604160e01b81526004016103f0949392919061653f565b6121ea8161398a565b612366604051806040016040528060118152602001701c1c9bdc1bdcd85b151a1c995cda1bdb19607a1b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505061392c9050565b1561240957602081146123945783838383604051630a5a604160e01b81526004016103f0949392919061653f565b604080516020601f84018190048102820181019092528281526000916123d59185858083850183828082843760009201919091525092939250506139859050565b9050806000036124005784848484604051630a5a604160e01b81526004016103f0949392919061653f565b6121ea81613a2d565b6124736040518060400160405280600f81526020016e38bab7b93ab6a73ab6b2b930ba37b960891b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505061392c9050565b1561251657602081146124a15783838383604051630a5a604160e01b81526004016103f0949392919061653f565b604080516020601f84018190048102820181019092528281526000916124e29185858083850183828082843760009201919091525092939250506139859050565b90508060000361250d5784848484604051630a5a604160e01b81526004016103f0949392919061653f565b6121ea81612c0e565b612585604051806040016040528060148152602001736d696e506572696f64416674657251756f72756d60601b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505061392c9050565b1561263657600881146125b35783838383604051630a5a604160e01b81526004016103f0949392919061653f565b60006125f9600884848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506139859050565b9050806001600160401b031660000361262d5784848484604051630a5a604160e01b81526004016103f0949392919061653f565b6121ea81613a70565b838383836040516325ee20d560e21b81526004016103f0949392919061653f565b7ff1ce9b2cbf50eeb05769a29e2543fd350cab46894a7dd9978a12d534bb20e6338484848460405161268c949392919061653f565b60405180910390a150505050565b6000610d6b6101635490565b6000610e3682613adc565b6126b9610d56565b6001600160a01b0316336001600160a01b0316146126e95760405162461bcd60e51b81526004016103f09061627f565b306126f2610d56565b6001600160a01b031614612730576000803660405161271292919061626f565b604051809103902090505b80612729610131612b8f565b0361271d57505b600080856001600160a01b031685858560405161274e92919061626f565b60006040518083038185875af1925050503d806000811461278b576040519150601f19603f3d011682016040523d82523d6000602084013e612790565b606091505b50915091506127b8828260405180606001604052806028815260200161692760289139613b1a565b50505050505050565b6000848484846040516020016127da9493929190616566565b60408051601f19818403018152919052805160209091012095945050505050565b612803610d56565b6001600160a01b0316336001600160a01b0316146128335760405162461bcd60e51b81526004016103f09061627f565b3061283c610d56565b6001600160a01b03161461287a576000803660405161285c92919061626f565b604051809103902090505b80612873610131612b8f565b0361286757505b610fbc81613a70565b600082518451146128e75760405162461bcd60e51b815260206004820152602860248201527f476f7665726e6f72427261766f3a20696e76616c6964207369676e61747572656044820152670e640d8cadccee8d60c31b60648201526084016103f0565b6128f5338787878787613b33565b61196a86866129048787613bf1565b85611974565b60008060008061291985613052565b93509350935093506116a684848484611052565b612935610d56565b6001600160a01b0316336001600160a01b0316146129655760405162461bcd60e51b81526004016103f09061627f565b3061296e610d56565b6001600160a01b0316146129ac576000803660405161298e92919061626f565b604051809103902090505b806129a5610131612b8f565b0361299957505b610fbc8161398a565b6000611f6383836129d160408051602081019091526000815290565b61381a565b6129de610d56565b6001600160a01b0316336001600160a01b031614612a0e5760405162461bcd60e51b81526004016103f09061627f565b30612a17610d56565b6001600160a01b031614612a555760008036604051612a3792919061626f565b604051809103902090505b80612a4e610131612b8f565b03612a4257505b610fbc81613a2d565b60006064612a6b836117e5565b6101c554604051632394e7a360e21b8152600481018690526001600160a01b0390911690638e539e8c90602401602060405180830381865afa158015612ab5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ad99190616331565b612ae391906165b1565b610e3691906165de565b600080600080612afc85613052565b93509350935093506116a68484848461127d565b60006001600160e01b03198216636e665ced60e01b1480610e365750610e3682613d23565b6000610e36612b42613dbf565b8360405161190160f01b8152600281019290925260228201526042902090565b6000806000612b7387878787613dc9565b9150915061136681613e8d565b600061196a8686868686613fd7565b6000612baa8254600f81810b600160801b909204900b131590565b15612bc857604051631ed9509560e11b815260040160405180910390fd5b508054600f0b6000818152600180840160205260408220805492905583546fffffffffffffffffffffffffffffffff191692016001600160801b03169190911790915590565b6064811115612c915760405162461bcd60e51b815260206004820152604360248201527f476f7665726e6f72566f74657351756f72756d4672616374696f6e3a2071756f60448201527f72756d4e756d657261746f72206f7665722071756f72756d44656e6f6d696e616064820152623a37b960e91b608482015260a4016103f0565b6000612c9b611f6a565b90508015801590612cad575061022b54155b15612d1257604080518082019091526000815261022b9060208101612cd1846140da565b6001600160e01b039081169091528254600181018455600093845260209384902083519490930151909116600160201b0263ffffffff909316929092179101555b612d40612d2d612d20611edf565b65ffffffffffff166133ae565b612d36846140da565b61022b9190614143565b505060408051828152602081018490527f0553476bf02ef2726e8ce5ced78d63e26e602e4a2257b1f559418e24b4633997910160405180910390a15050565b30612d88610d56565b6001600160a01b031614612e195760005b84518110156116a657306001600160a01b0316858281518110612dbe57612dbe6164bf565b60200260200101516001600160a01b031603612e0957612e09838281518110612de957612de96164bf565b60200260200101518051906020012061013161415e90919063ffffffff16565b612e12816164d5565b9050612d99565b5050505050565b60005b8451811015612e995761028e6000868381518110612e4357612e436164bf565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16612e8757604051630b094f2760e31b815260040160405180910390fd5b80612e91816164d5565b915050612e23565b50612e19858585858561419a565b30612eb0610d56565b6001600160a01b031614612e195761013154600f81810b600160801b909204900b1315612e1957600061013155612e19565b60006116bc85858585612f0060408051602081019091526000815290565b612b80565b600080612f118361420f565b90506004816007811115612f2757612f27615cef565b14612f325792915050565b60008381526101f9602052604090205480612f4e575092915050565b6101f854604051632ab0f52960e01b8152600481018390526001600160a01b0390911690632ab0f52990602401602060405180830381865afa158015612f98573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fbc9190616600565b15612fcb575060079392505050565b6101f854604051632c258a9f60e11b8152600481018390526001600160a01b039091169063584b153e90602401602060405180830381865afa158015613015573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130399190616600565b15613048575060059392505050565b5060029392505050565b606080606060008061019360008781526020019081526020016000209050806001018160020161322483600301805480602002602001604051908101604052809291908181526020016000905b8282101561314b5783829060005260206000200180546130be906162b6565b80601f01602080910402602001604051908101604052809291908181526020018280546130ea906162b6565b80156131375780601f1061310c57610100808354040283529160200191613137565b820191906000526020600020905b81548152906001019060200180831161311a57829003601f168201915b50505050508152602001906001019061309f565b50505060048601805460408051602080840282018101909252828152935060009084015b8282101561321b57838290600052602060002001805461318e906162b6565b80601f01602080910402602001604051908101604052809291908181526020018280546131ba906162b6565b80156132075780601f106131dc57610100808354040283529160200191613207565b820191906000526020600020905b8154815290600101906020018083116131ea57829003601f168201915b50505050508152602001906001019061316f565b50505050613bf1565b600984015483546040805160208084028201810190925282815291869183018282801561327a57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161325c575b50505050509350828054806020026020016040519081016040528092919081815260200182805480156132cc57602002820191906000526020600020905b8154815260200190600101908083116132b8575b505050505092509450945094509450509193509193565b6000806132f2868686866127c1565b600081815261019360205260409020549091506001600160a01b031633811480613346575061331f61269a565b61334482600161332d611edf565b6133379190616419565b65ffffffffffff166129b5565b105b6133a25760405162461bcd60e51b815260206004820152602760248201527f476f7665726e6f72427261766f3a2070726f706f7365722061626f76652074686044820152661c995cda1bdb1960ca1b60648201526084016103f0565b61166d87878787614347565b600063ffffffff8211156134135760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201526532206269747360d01b60648201526084016103f0565b5090565b81546000908181600581111561347457600061343284614355565b61343c90856164ac565b60008881526020902090915081015463ffffffff908116908716101561346457809150613472565b61346f816001616406565b92505b505b60006134828787858561443d565b905080156134bd576134a7876134996001846164ac565b600091825260209091200190565b54600160201b90046001600160e01b031661166d565b6000979650505050505050565b6101615460408051918252602082018390527fc565b045403dc03c2eea82b81a0465edad9e2e7fc4d97e11421c209da93d7a93910160405180910390a161016155565b61028f5460ff166135b6576a084595161401484a0000006120056001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613564573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135889190616331565b10156135a7576040516311b6707f60e01b815260040160405180910390fd5b61028f805460ff191660011790555b565b600061361433868686516001600160401b038111156135d9576135d9615744565b60405190808252806020026020018201604052801561360c57816020015b60608152602001906001900390816135f75790505b508787613b33565b6116bc85858585614493565b600054610100900460ff166136475760405162461bcd60e51b81526004016103f090616622565b61366e816136696040805180820190915260018152603160f81b602082015290565b614872565b610fbc816148c1565b600054610100900460ff1661369e5760405162461bcd60e51b81526004016103f090616622565b6136a98383836148f9565b505050565b600054610100900460ff166135b65760405162461bcd60e51b81526004016103f090616622565b600054610100900460ff166136fc5760405162461bcd60e51b81526004016103f090616622565b610fbc8161493b565b600054610100900460ff1661372c5760405162461bcd60e51b81526004016103f090616622565b610fbc81614985565b600054610100900460ff1661375c5760405162461bcd60e51b81526004016103f090616622565b610fbc816149ac565b600054610100900460ff1661378c5760405162461bcd60e51b81526004016103f090616622565b610fbc816149d3565b606060678054610fcf906162b6565b606060688054610fcf906162b6565b600065ffffffffffff8211156134135760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203460448201526538206269747360d01b60648201526084016103f0565b6101c554604051630748d63560e31b81526001600160a01b038581166004830152602482018590526000921690633a46b1a890604401602060405180830381865afa15801561386d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f609190616331565b805460009080156120b2576138ab836134996001846164ac565b54600160201b90046001600160e01b0316611f63565b6101f854604080516001600160a01b03928316815291831660208301527f08f74ea46ef7894f65eabfb5e6e695de773a000b47c529ab559178069b226401910160405180910390a16101f880546001600160a01b0319166001600160a01b0392909216919091179055565b60008160405160200161393f919061666d565b6040516020818303038152906040528051906020012083604051602001613966919061666d565b6040516020818303038152906040528051906020012014905092915050565b015190565b600081116139ea5760405162461bcd60e51b815260206004820152602760248201527f476f7665726e6f7253657474696e67733a20766f74696e6720706572696f6420604482015266746f6f206c6f7760c81b60648201526084016103f0565b6101625460408051918252602082018390527f7e3f7f0708a84de9203036abaa450dccc85ad5ff52f78c170f3edb55cf5e8828910160405180910390a161016255565b6101635460408051918252602082018390527fccb45da8d5717e6c4544694297c4ba5cf151d455c9bb0ed4fc7a38411bc05461910160405180910390a161016355565b61025c54604080516001600160401b03928316815291831660208301527f7ca4ac117ed3cdce75c1161d8207c440389b1a15d69d096831664657c07dafc2910160405180910390a161025c805467ffffffffffffffff19166001600160401b0392909216919091179055565b60008181526101306020526040812060010154610e36906001600160401b0316600084815261025d60205260409020546001600160401b03166149fa565b60608315613b29575081611f63565b611f638383614a10565b805160208201206000613b518787613b4b8888613bf1565b856127c1565b600081815261019360205260409020600981015491925090613be65780546001600160a01b0319166001600160a01b038a161781558751613b9b90600183019060208b01906154df565b508651613bb190600283019060208a0190615540565b508551613bc7906003830190602089019061557b565b508451613bdd90600483019060208801906155cd565b50600981018390555b505050505050505050565b6060600082516001600160401b03811115613c0e57613c0e615744565b604051908082528060200260200182016040528015613c4157816020015b6060815260200190600190039081613c2c5790505b50905060005b8151811015613d1b57848181518110613c6257613c626164bf565b602002602001015151600014613cd257848181518110613c8457613c846164bf565b602002602001015180519060200120848281518110613ca557613ca56164bf565b6020026020010151604051602001613cbe929190616689565b604051602081830303815290604052613ced565b838181518110613ce457613ce46164bf565b60200260200101515b828281518110613cff57613cff6164bf565b602002602001018190525080613d14906164d5565b9050613c47565b509392505050565b600063288ace0360e11b6318df743f60e31b63bf26d89760e01b6379dd796f60e01b6001600160e01b03198616821480613d6957506001600160e01b0319868116908216145b80613d8057506001600160e01b0319868116908516145b80613d9b57506001600160e01b03198616630271189760e51b145b8061196a57506301ffc9a760e01b6001600160e01b03198716149695505050505050565b6000610d6b614a3a565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115613e005750600090506003613e84565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015613e54573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116613e7d57600060019250925050613e84565b9150600090505b94509492505050565b6000816004811115613ea157613ea1615cef565b03613ea95750565b6001816004811115613ebd57613ebd615cef565b03613f0a5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016103f0565b6002816004811115613f1e57613f1e615cef565b03613f6b5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016103f0565b6003816004811115613f7f57613f7f615cef565b03610fbc5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016103f0565b600080613fe78787878787614aae565b600088815261025d60205260409020549091506001600160401b0316158015614014575061401487614c04565b1561196a57600061402e61025c546001600160401b031690565b614036611edf565b65ffffffffffff1661404891906166ba565b9050614053886126a6565b816001600160401b031611156140a2576040516001600160401b038216815288907f541f725fb9f7c98a30cc9c0ff32fbb14358cd7159c847a3aa20a2bdc442ba5119060200160405180910390a25b600088815261025d60205260409020805467ffffffffffffffff19166001600160401b03929092169190911790559695505050505050565b60006001600160e01b038211156134135760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20326044820152663234206269747360c81b60648201526084016103f0565b600080614151858585614c44565b915091505b935093915050565b8154600160801b90819004600f0b6000818152600180860160205260409091209390935583546001600160801b03908116939091011602179055565b6101f85460405163e38335e560e01b81526001600160a01b039091169063e38335e59034906141d690889088908890600090899060040161634a565b6000604051808303818588803b1580156141ef57600080fd5b505af1158015614203573d6000803e3d6000fd5b50505050505050505050565b600081815261013060205260408120600281015460ff16156142345750600792915050565b6002810154610100900460ff161561424f5750600292915050565b600083815261013060205260408120546001600160401b0316908190036142b85760405162461bcd60e51b815260206004820152601d60248201527f476f7665726e6f723a20756e6b6e6f776e2070726f706f73616c20696400000060448201526064016103f0565b60006142c2611edf565b65ffffffffffff1690508082106142de57506000949350505050565b60006142e9866126a6565b90508181106142fe5750600195945050505050565b61430786614c04565b801561432a57506000868152610193602052604090206006810154600590910154115b1561433b5750600495945050505050565b50600395945050505050565b60006116bc85858585614de3565b60008160000361436757506000919050565b6000600161437484614e99565b901c6001901b9050600181848161438d5761438d6165c8565b048201901c905060018184816143a5576143a56165c8565b048201901c905060018184816143bd576143bd6165c8565b048201901c905060018184816143d5576143d56165c8565b048201901c905060018184816143ed576143ed6165c8565b048201901c90506001818481614405576144056165c8565b048201901c9050600181848161441d5761441d6165c8565b048201901c9050611f6381828581614437576144376165c8565b04614f2d565b60005b81831015613d1b5760006144548484614f3c565b60008781526020902090915063ffffffff86169082015463ffffffff16111561447f5780925061448d565b61448a816001616406565b93505b50614440565b6000336144a08184614f57565b6144ec5760405162461bcd60e51b815260206004820152601d60248201527f476f7665726e6f723a2070726f706f736572207265737472696374656400000060448201526064016103f0565b60006144f6611edf565b65ffffffffffff16905061450861269a565b61451783610cb16001856164ac565b101561457f5760405162461bcd60e51b815260206004820152603160248201527f476f7665726e6f723a2070726f706f73657220766f7465732062656c6f7720706044820152701c9bdc1bdcd85b081d1a1c995cda1bdb19607a1b60648201526084016103f0565b600061459488888888805190602001206127c1565b905086518851146145b75760405162461bcd60e51b81526004016103f0906166da565b85518851146145d85760405162461bcd60e51b81526004016103f0906166da565b60008851116146295760405162461bcd60e51b815260206004820152601860248201527f476f7665726e6f723a20656d7074792070726f706f73616c000000000000000060448201526064016103f0565b600081815261013060205260409020546001600160401b0316156146995760405162461bcd60e51b815260206004820152602160248201527f476f7665726e6f723a2070726f706f73616c20616c72656164792065786973746044820152607360f81b60648201526084016103f0565b60006146a56101615490565b6146af9084616406565b905060006146bd6101625490565b6146c79083616406565b90506040518060e001604052806146dd84615048565b6001600160401b031681526001600160a01b03871660208201526000604082015260600161470a83615048565b6001600160401b03908116825260006020808401829052604080850183905260609485018390528883526101308252918290208551815492870151878501519186166001600160e01b031990941693909317600160401b6001600160a01b039094168402176001600160e01b0316600160e01b60e09290921c91909102178155938501516080860151908416921c0217600183015560a08301516002909201805460c09094015161ffff1990941692151561ff00191692909217610100931515939093029290921790558a517f7d84a6263ae0d98d3329bd7b46bb4e8d6f98cd35a7adb45c274c8b7fd5ebd5e091859188918e918e9181111561480f5761480f615744565b60405190808252806020026020018201604052801561484257816020015b606081526020019060019003908161482d5790505b508d88888f60405161485c9998979695949392919061671b565b60405180910390a1509098975050505050505050565b600054610100900460ff166148995760405162461bcd60e51b81526004016103f090616622565b60676148a583826167f9565b5060686148b282826167f9565b50506000606581905560665550565b600054610100900460ff166148e85760405162461bcd60e51b81526004016103f090616622565b61012f6148f582826167f9565b5050565b600054610100900460ff166149205760405162461bcd60e51b81526004016103f090616622565b614929836134ca565b6149328261398a565b6136a981613a2d565b600054610100900460ff166149625760405162461bcd60e51b81526004016103f090616622565b6101c580546001600160a01b0319166001600160a01b0392909216919091179055565b600054610100900460ff166120165760405162461bcd60e51b81526004016103f090616622565b600054610100900460ff16610fb35760405162461bcd60e51b81526004016103f090616622565b600054610100900460ff1661287a5760405162461bcd60e51b81526004016103f090616622565b6000818311614a095781611f63565b5090919050565b815115614a205781518083602001fd5b8060405162461bcd60e51b81526004016103f091906158fd565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f614a656150b0565b614a6d615109565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b6000858152610130602052604081206001614ac888611678565b6007811115614ad957614ad9615cef565b14614b325760405162461bcd60e51b815260206004820152602360248201527f476f7665726e6f723a20766f7465206e6f742063757272656e746c792061637460448201526269766560e81b60648201526084016103f0565b8054600090614b4c9088906001600160401b03168661381a565b9050614b5b888888848861513a565b8351600003614bb057866001600160a01b03167fb8e138887d0aa13bab447e82de9d5c1777041ecd21ca36ba824ff1e6c07ddda489888489604051614ba394939291906168b8565b60405180910390a261166d565b866001600160a01b03167fe2babfbac5889a709b63bb7f598b324e08bc5a4fb9ec647fb3cbc9ec07eb87128988848989604051614bf19594939291906168e0565b60405180910390a2979650505050505050565b6000818152610193602052604081206005810154614c3b610d1d85600090815261013060205260409020546001600160401b031690565b11159392505050565b825460009081908015614d8a576000614c62876134996001856164ac565b60408051808201909152905463ffffffff808216808452600160201b9092046001600160e01b031660208401529192509087161015614ce35760405162461bcd60e51b815260206004820152601b60248201527f436865636b706f696e743a2064656372656173696e67206b657973000000000060448201526064016103f0565b805163ffffffff808816911603614d2b5784614d04886134996001866164ac565b80546001600160e01b0392909216600160201b0263ffffffff909216919091179055614d7a565b6040805180820190915263ffffffff80881682526001600160e01b0380881660208085019182528b54600181018d5560008d81529190912094519151909216600160201b029216919091179101555b6020015192508391506141569050565b50506040805180820190915263ffffffff80851682526001600160e01b0380851660208085019182528854600181018a5560008a815291822095519251909316600160201b029190931617920191909155905081614156565b600080614df2868686866152d8565b60008181526101f96020526040902054909150156116bc576101f85460008281526101f960205260409081902054905163c4d252f560e01b81526001600160a01b039092169163c4d252f591614e4e9160040190815260200190565b600060405180830381600087803b158015614e6857600080fd5b505af1158015614e7c573d6000803e3d6000fd5b50505060008281526101f960205260408120555095945050505050565b600080608083901c15614eae57608092831c92015b604083901c15614ec057604092831c92015b602083901c15614ed257602092831c92015b601083901c15614ee457601092831c92015b600883901c15614ef657600892831c92015b600483901c15614f0857600492831c92015b600283901c15614f1a57600292831c92015b600183901c15610e365760010192915050565b6000818310614a095781611f63565b6000614f4b60028484186165de565b611f6390848416616406565b80516000906034811015614f6f576001915050610e36565b82810160131901516001600160a01b031981166b046e0e4dee0dee6cae47a60f60a31b14614fa257600192505050610e36565b600080614fb06028856164ac565b90505b8381101561502757600080614fe7888481518110614fd357614fd36164bf565b01602001516001600160f81b0319166153e5565b9150915081614fff5760019650505050505050610e36565b8060ff166004856001600160a01b0316901b179350505080615020906164d5565b9050614fb3565b50856001600160a01b0316816001600160a01b031614935050505092915050565b60006001600160401b038211156134135760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203660448201526534206269747360d01b60648201526084016103f0565b6000806150bb613795565b8051909150156150d2578051602090910120919050565b60655480156150e15792915050565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4709250505090565b6000806151146137a4565b80519091501561512b578051602090910120919050565b60665480156150e15792915050565b6000858152610193602090815260408083206001600160a01b038816845260088101909252909120805460ff16156151ca5760405162461bcd60e51b815260206004820152602d60248201527f476f7665726e6f72436f6d7061746962696c697479427261766f3a20766f746560448201526c08185b1c9958591e4818d85cdd609a1b60648201526084016103f0565b805460ff86166101000261ffff199091161760011781556151ea84615477565b81546001600160601b039190911662010000026dffffffffffffffffffffffff00001990911617815560ff851661523a578382600601600082825461522f9190616406565b909155506127b89050565b60001960ff86160161525a578382600501600082825461522f9190616406565b60011960ff86160161527a578382600701600082825461522f9190616406565b60405162461bcd60e51b815260206004820152602d60248201527f476f7665726e6f72436f6d7061746962696c697479427261766f3a20696e766160448201526c6c696420766f7465207479706560981b60648201526084016103f0565b6000806152e7868686866127c1565b905060006152f482611678565b9050600281600781111561530a5761530a615cef565b1415801561532a5750600681600781111561532757615327615cef565b14155b80156153485750600781600781111561534557615345615cef565b14155b6153945760405162461bcd60e51b815260206004820152601d60248201527f476f7665726e6f723a2070726f706f73616c206e6f742061637469766500000060448201526064016103f0565b6000828152610130602052604090819020600201805461ff001916610100179055517f789cf55be980739dad1d0699b93b58e806b51c9d96619bfa8fe0a28abaa7b30c906112459084815260200190565b60008060f883901c602f811180156154005750603a8160ff16105b1561541557600194602f199091019350915050565b8060ff16604010801561542b575060478160ff16105b15615440576001946036199091019350915050565b8060ff166060108015615456575060678160ff16105b1561546b576001946056199091019350915050565b50600093849350915050565b60006001600160601b038211156134135760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203960448201526536206269747360d01b60648201526084016103f0565b828054828255906000526020600020908101928215615534579160200282015b8281111561553457825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906154ff565b5061341392915061561f565b828054828255906000526020600020908101928215615534579160200282015b82811115615534578251825591602001919060010190615560565b8280548282559060005260206000209081019282156155c1579160200282015b828111156155c157825182906155b190826167f9565b509160200191906001019061559b565b50613413929150615634565b828054828255906000526020600020908101928215615613579160200282015b82811115615613578251829061560390826167f9565b50916020019190600101906155ed565b50613413929150615651565b5b808211156134135760008155600101615620565b80821115613413576000615648828261566e565b50600101615634565b80821115613413576000615665828261566e565b50600101615651565b50805461567a906162b6565b6000825580601f1061568a575050565b601f016020900490600052602060002090810190610fbc919061561f565b6000602082840312156156ba57600080fd5b5035919050565b6000602082840312156156d357600080fd5b81356001600160e01b031981168114611f6357600080fd5b803560ff8116811461176d57600080fd5b60008083601f84011261570e57600080fd5b5081356001600160401b0381111561572557600080fd5b60208301915083602082850101111561573d57600080fd5b9250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561578257615782615744565b604052919050565b60006001600160401b038211156157a3576157a3615744565b50601f01601f191660200190565b600082601f8301126157c257600080fd5b81356157d56157d08261578a565b61575a565b8181528460208386010111156157ea57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060008060008060e0898b03121561582357600080fd5b8835975061583360208a016156eb565b965060408901356001600160401b038082111561584f57600080fd5b61585b8c838d016156fc565b909850965060608b013591508082111561587457600080fd5b506158818b828c016157b1565b94505061589060808a016156eb565b925060a0890135915060c089013590509295985092959890939650565b60005b838110156158c85781810151838201526020016158b0565b50506000910152565b600081518084526158e98160208601602086016158ad565b601f01601f19169290920160200192915050565b602081526000611f6360208301846158d1565b6001600160a01b0381168114610fbc57600080fd5b6000806000806080858703121561593b57600080fd5b843561594681615910565b9350602085013561595681615910565b92506040850135915060608501356001600160401b0381111561597857600080fd5b615984878288016157b1565b91505092959194509250565b60006001600160401b038211156159a9576159a9615744565b5060051b60200190565b600082601f8301126159c457600080fd5b813560206159d46157d083615990565b82815260059290921b840181019181810190868411156159f357600080fd5b8286015b84811015615a17578035615a0a81615910565b83529183019183016159f7565b509695505050505050565b600082601f830112615a3357600080fd5b81356020615a436157d083615990565b82815260059290921b84018101918181019086841115615a6257600080fd5b8286015b84811015615a175780358352918301918301615a66565b600082601f830112615a8e57600080fd5b81356020615a9e6157d083615990565b82815260059290921b84018101918181019086841115615abd57600080fd5b8286015b84811015615a175780356001600160401b03811115615ae05760008081fd5b615aee8986838b01016157b1565b845250918301918301615ac1565b60008060008060808587031215615b1257600080fd5b84356001600160401b0380821115615b2957600080fd5b615b35888389016159b3565b95506020870135915080821115615b4b57600080fd5b615b5788838901615a22565b94506040870135915080821115615b6d57600080fd5b50615b7a87828801615a7d565b949793965093946060013593505050565b600081518084526020808501945080840160005b83811015615bc45781516001600160a01b031687529582019590820190600101615b9f565b509495945050505050565b600081518084526020808501945080840160005b83811015615bc457815187529582019590820190600101615be3565b600081518084526020808501808196508360051b8101915082860160005b85811015615c47578284038952615c358483516158d1565b98850198935090840190600101615c1d565b5091979650505050505050565b608081526000615c676080830187615b8b565b8281036020840152615c798187615bcf565b90508281036040840152615c8d8186615bff565b9050828103606084015261166d8185615bff565b600080600080600060a08688031215615cb957600080fd5b85359450615cc9602087016156eb565b9350615cd7604087016156eb565b94979396509394606081013594506080013592915050565b634e487b7160e01b600052602160045260246000fd5b6020810160088310615d2757634e487b7160e01b600052602160045260246000fd5b91905290565b60008060408385031215615d4057600080fd5b823591506020830135615d5281615910565b809150509250929050565b600060208284031215615d6f57600080fd5b8135611f6381615910565b60008060408385031215615d8d57600080fd5b82359150615d9d602084016156eb565b90509250929050565b600080600080600060808688031215615dbe57600080fd5b85359450615dce602087016156eb565b935060408601356001600160401b0380821115615dea57600080fd5b615df689838a016156fc565b90955093506060880135915080821115615e0f57600080fd5b50615e1c888289016157b1565b9150509295509295909350565b60008060008060608587031215615e3f57600080fd5b84359350615e4f602086016156eb565b925060408501356001600160401b03811115615e6a57600080fd5b615e76878288016156fc565b95989497509550505050565b60008060008060808587031215615e9857600080fd5b84356001600160401b0380821115615eaf57600080fd5b615ebb888389016159b3565b95506020870135915080821115615ed157600080fd5b615edd88838901615a22565b94506040870135915080821115615ef357600080fd5b615eff88838901615a7d565b93506060870135915080821115615f1557600080fd5b50615984878288016157b1565b60ff60f81b8816815260e060208201526000615f4160e08301896158d1565b8281036040840152615f5381896158d1565b606084018890526001600160a01b038716608085015260a0840186905283810360c08501529050610f268185615bcf565b600080600060608486031215615f9957600080fd5b8335615fa481615910565b92506020840135915060408401356001600160401b03811115615fc657600080fd5b615fd2868287016157b1565b9150509250925092565b60008060008060408587031215615ff257600080fd5b84356001600160401b038082111561600957600080fd5b616015888389016156fc565b9096509450602087013591508082111561602e57600080fd5b50615e76878288016156fc565b600080600080600060a0868803121561605357600080fd5b853561605e81615910565b9450602086013561606e81615910565b935060408601356001600160401b038082111561608a57600080fd5b61609689838a01615a22565b945060608801359150808211156160ac57600080fd5b6160b889838a01615a22565b93506080880135915080821115615e0f57600080fd5b600080600080606085870312156160e457600080fd5b84356160ef81615910565b93506020850135925060408501356001600160401b03811115615e6a57600080fd5b60006020828403121561612357600080fd5b81356001600160401b0381168114611f6357600080fd5b600080600080600060a0868803121561615257600080fd5b85356001600160401b038082111561616957600080fd5b61617589838a016159b3565b9650602088013591508082111561618b57600080fd5b61619789838a01615a22565b955060408801359150808211156161ad57600080fd5b6161b989838a01615a7d565b945060608801359150808211156161cf57600080fd5b6160b889838a01615a7d565b600080604083850312156161ee57600080fd5b82356161f981615910565b946020939093013593505050565b600080600080600060a0868803121561621f57600080fd5b853561622a81615910565b9450602086013561623a81615910565b9350604086013592506060860135915060808601356001600160401b0381111561626357600080fd5b615e1c888289016157b1565b8183823760009101908152919050565b60208082526018908201527f476f7665726e6f723a206f6e6c79476f7665726e616e63650000000000000000604082015260600190565b600181811c908216806162ca57607f821691505b6020821081036162ea57634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526021908201527f476f7665726e6f723a2070726f706f73616c206e6f74207375636365737366756040820152601b60fa1b606082015260800190565b60006020828403121561634357600080fd5b5051919050565b60a08152600061635d60a0830188615b8b565b828103602084015261636f8188615bcf565b905082810360408401526163838187615bff565b60608401959095525050608001529392505050565b60c0815260006163ab60c0830189615b8b565b82810360208401526163bd8189615bcf565b905082810360408401526163d18188615bff565b60608401969096525050608081019290925260a0909101529392505050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610e3657610e366163f0565b65ffffffffffff828116828216039080821115616438576164386163f0565b5092915050565b60006020828403121561645157600080fd5b81516001600160401b0381111561646757600080fd5b8201601f8101841361647857600080fd5b80516164866157d08261578a565b81815285602083850101111561649b57600080fd5b6116bc8260208301602086016158ad565b81810381811115610e3657610e366163f0565b634e487b7160e01b600052603260045260246000fd5b6000600182016164e7576164e76163f0565b5060010190565b60006020828403121561650057600080fd5b815165ffffffffffff81168114611f6357600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b604081526000616553604083018688616516565b828103602084015261166d818587616516565b6080815260006165796080830187615b8b565b828103602084015261658b8187615bcf565b9050828103604084015261659f8186615bff565b91505082606083015295945050505050565b8082028115828204841417610e3657610e366163f0565b634e487b7160e01b600052601260045260246000fd5b6000826165fb57634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561661257600080fd5b81518015158114611f6357600080fd5b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6000825161667f8184602087016158ad565b9190910192915050565b6001600160e01b03198316815281516000906166ac8160048501602087016158ad565b919091016004019392505050565b6001600160401b03818116838216019080821115616438576164386163f0565b60208082526021908201527f476f7665726e6f723a20696e76616c69642070726f706f73616c206c656e67746040820152600d60fb1b606082015260800190565b8981526001600160a01b0389166020820152610120604082018190526000906167468382018b615b8b565b9050828103606084015261675a818a615bcf565b9050828103608084015261676e8189615bff565b905082810360a08401526167828188615bff565b90508560c08401528460e08401528281036101008401526167a381856158d1565b9c9b505050505050505050505050565b601f8211156136a957600081815260208120601f850160051c810160208610156167da5750805b601f850160051c820191505b818110156116a6578281556001016167e6565b81516001600160401b0381111561681257616812615744565b6168268161682084546162b6565b846167b3565b602080601f83116001811461685b57600084156168435750858301515b600019600386901b1c1916600185901b1785556116a6565b600085815260208120601f198616915b8281101561688a5788860151825594840194600190910190840161686b565b50858210156168a85787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b84815260ff8416602082015282604082015260806060820152600061196a60808301846158d1565b85815260ff8516602082015283604082015260a06060820152600061690860a08301856158d1565b828103608084015261691a81856158d1565b9897505050505050505056fe476f7665726e6f723a2072656c617920726576657274656420776974686f7574206d657373616765a164736f6c6343000811000a", + }, + { + ContractAddr: common.HexToAddress(GovTokenContract), + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/cfc0bd1127186a917ddc38fd38d22903034d3f0b", + Code: "608060405234801561001057600080fd5b50600436106101f05760003560e01c806370a082311161010f5780639ab24eb0116100a2578063d505accf11610071578063d505accf1461047e578063dd62ed3e14610491578063e5ed5b1e146104a4578063f1127ed8146104b757600080fd5b80639ab24eb014610432578063a457c2d714610445578063a9059cbb14610458578063c3cda5201461046b57600080fd5b806384b0196e116100de57806384b0196e146103dd5780638e539e8c146103f857806391ddadf41461040b57806395d89b411461042a57600080fd5b806370a082311461038657806379cc6790146103af5780637ecebe00146103c25780638129fc1c146103d557600080fd5b806339509351116101875780634bf5d7e9116101565780634bf5d7e9146102ff578063587cde1e146103075780635c19a95c1461034b5780636fcfff451461035e57600080fd5b806339509351146102b35780633a46b1a8146102c657806342966c68146102d957806344840775146102ec57600080fd5b806323b872dd116101c357806323b872dd146102745780633041949b14610287578063313ce5671461029c5780633644e515146102ab57600080fd5b8063039c91fc146101f557806306fdde0314610234578063095ea7b31461024957806318160ddd1461026c575b600080fd5b610221610203366004612099565b61013060209081526000928352604080842090915290825290205481565b6040519081526020015b60405180910390f35b61023c6104f4565b60405161022b9190612112565b61025c610257366004612125565b610586565b604051901515815260200161022b565b603554610221565b61025c61028236600461214f565b6105a0565b61029a610295366004612099565b6105c4565b005b6040516012815260200161022b565b6102216105fd565b61025c6102c1366004612125565b61060c565b6102216102d4366004612125565b61062e565b61029a6102e736600461218b565b6106b3565b61029a6102fa3660046121a4565b6106c0565b61023c610739565b610333610315366004612228565b6001600160a01b03908116600090815260fe60205260409020541690565b6040516001600160a01b03909116815260200161022b565b61029a610359366004612228565b6107d1565b61037161036c366004612228565b6107db565b60405163ffffffff909116815260200161022b565b610221610394366004612228565b6001600160a01b031660009081526033602052604090205490565b61029a6103bd366004612125565b6107fd565b6102216103d0366004612228565b610812565b61029a610830565b6103e5610a10565b60405161022b9796959493929190612243565b61022161040636600461218b565b610aae565b610413610b16565b60405165ffffffffffff909116815260200161022b565b61023c610b21565b610221610440366004612228565b610b30565b61025c610453366004612125565b610bb2565b61025c610466366004612125565b610c2d565b61029a6104793660046122ea565b610c3b565b61029a61048c366004612342565b610d71565b61022161049f366004612099565b610ed5565b61029a6104b2366004612099565b610f00565b6104ca6104c53660046123ac565b610f30565b60408051825163ffffffff1681526020928301516001600160e01b0316928101929092520161022b565b606060368054610503906123ec565b80601f016020809104026020016040519081016040528092919081815260200182805461052f906123ec565b801561057c5780601f106105515761010080835404028352916020019161057c565b820191906000526020600020905b81548152906001019060200180831161055f57829003601f168201915b5050505050905090565b600033610594818585610fb4565b60019150505b92915050565b6000336105ae858285610fcd565b6105b9858585611047565b506001949350505050565b33612002146105ef57604051630f22c43960e41b815261200260048201526024015b60405180910390fd5b6105f98282611060565b5050565b6000610607611190565b905090565b60003361059481858561061f8383610ed5565b6106299190612436565b610fb4565b6000610638610b16565b65ffffffffffff16821061068a5760405162461bcd60e51b815260206004820152601960248201527804552433230566f7465733a20667574757265206c6f6f6b757603c1b60448201526064016105e6565b6001600160a01b038316600090815260ff602052604090206106ac908361119a565b9392505050565b6106bd3382611283565b50565b33612002146106e657604051630f22c43960e41b815261200260048201526024016105e6565b8160005b818110156107325761072285858381811061070757610707612449565b905060200201602081019061071c9190612228565b84611060565b61072b8161245f565b90506106ea565b5050505050565b606043610744610b16565b65ffffffffffff16146107995760405162461bcd60e51b815260206004820152601d60248201527f4552433230566f7465733a2062726f6b656e20636c6f636b206d6f646500000060448201526064016105e6565b5060408051808201909152601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c74000000602082015290565b6106bd338261128d565b6001600160a01b038116600090815260ff602052604081205461059a90611307565b610808823383610fcd565b6105f98282611283565b6001600160a01b038116600090815260cb602052604081205461059a565b600054610100900460ff16158080156108505750600054600160ff909116105b8061086a5750303b15801561086a575060005460ff166001145b6108cd5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016105e6565b6000805460ff1916600117905580156108f0576000805461ff0019166101001790555b3341146109105760405163022d8c9560e31b815260040160405180910390fd5b3a1561092f576040516383f1b1d360e01b815260040160405180910390fd5b610983604051806040016040528060148152602001732129a19023b7bb32b93730b731b2902a37b5b2b760611b8152506040518060400160405280600681526020016533b7bb21272160d11b815250611370565b61098b6113a1565b6109c0604051806040016040528060148152602001732129a19023b7bb32b93730b731b2902a37b5b2b760611b8152506113ca565b6109c86113a1565b80156106bd576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b6000606080600080600060606097546000801b148015610a305750609854155b610a745760405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b60448201526064016105e6565b610a7c611414565b610a84611423565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b6000610ab8610b16565b65ffffffffffff168210610b0a5760405162461bcd60e51b815260206004820152601960248201527804552433230566f7465733a20667574757265206c6f6f6b757603c1b60448201526064016105e6565b61059a6101008361119a565b600061060743611432565b606060378054610503906123ec565b6001600160a01b038116600090815260ff60205260408120548015610b9f576001600160a01b038316600090815260ff6020526040902080546000198301908110610b7d57610b7d612449565b60009182526020909120015464010000000090046001600160e01b0316610ba2565b60005b6001600160e01b03169392505050565b60003381610bc08286610ed5565b905083811015610c205760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016105e6565b6105b98286868403610fb4565b600033610594818585611047565b83421115610c8b5760405162461bcd60e51b815260206004820152601d60248201527f4552433230566f7465733a207369676e6174757265206578706972656400000060448201526064016105e6565b604080517fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60208201526001600160a01b038816918101919091526060810186905260808101859052600090610d0590610cfd9060a00160405160208183030381529060405280519060200120611499565b8585856114c6565b9050610d10816114ee565b8614610d5e5760405162461bcd60e51b815260206004820152601960248201527f4552433230566f7465733a20696e76616c6964206e6f6e63650000000000000060448201526064016105e6565b610d68818861128d565b50505050505050565b83421115610dc15760405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e6500000060448201526064016105e6565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9888888610df08c6114ee565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090506000610e4b82611499565b90506000610e5b828787876114c6565b9050896001600160a01b0316816001600160a01b031614610ebe5760405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e6174757265000060448201526064016105e6565b610ec98a8a8a610fb4565b50505050505050505050565b6001600160a01b03918216600090815260346020908152604080832093909416825291909152205490565b3361200214610f2657604051630f22c43960e41b815261200260048201526024016105e6565b6105f9828261128d565b60408051808201909152600080825260208201526001600160a01b038316600090815260ff60205260409020805463ffffffff8416908110610f7457610f74612449565b60009182526020918290206040805180820190915291015463ffffffff8116825264010000000090046001600160e01b0316918101919091529392505050565b604051632028747160e01b815260040160405180910390fd5b6000610fd98484610ed5565b9050600019811461104157818110156110345760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016105e6565b6110418484848403610fb4565b50505050565b604051638cd22d1960e01b815260040160405180910390fd5b604051630913db4760e01b81526001600160a01b03828116600483015260009190841690630913db4790602401602060405180830381865afa1580156110aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110ce919061248e565b6001600160a01b03808516600090815261013060209081526040808320938716835292905220549091508181101561114757600061110c82846124a7565b6001600160a01b0380871660009081526101306020908152604080832093891683529290522084905590506111418482611516565b50611041565b8181111561104157600061115b83836124a7565b6001600160a01b0380871660009081526101306020908152604080832093891683529290522084905590506107328482611283565b6000610607611520565b8154600090818160058111156111f45760006111b584611594565b6111bf90856124a7565b600088815260209020909150869082015463ffffffff1611156111e4578091506111f2565b6111ef816001612436565b92505b505b80821015611241576000611208838361167c565b600088815260209020909150869082015463ffffffff16111561122d5780915061123b565b611238816001612436565b92505b506111f4565b801561126d576000868152602090208101600019015464010000000090046001600160e01b0316611270565b60005b6001600160e01b03169695505050505050565b6105f98282611697565b6001600160a01b03828116600081815260fe6020818152604080842080546033845282862054949093528787166001600160a01b03198416811790915590519190951694919391928592917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a46110418284836116b0565b600063ffffffff82111561136c5760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201526532206269747360d01b60648201526084016105e6565b5090565b600054610100900460ff166113975760405162461bcd60e51b81526004016105e6906124ba565b6105f982826117ee565b600054610100900460ff166113c85760405162461bcd60e51b81526004016105e6906124ba565b565b600054610100900460ff166113f15760405162461bcd60e51b81526004016105e6906124ba565b6106bd81604051806040016040528060018152602001603160f81b81525061182e565b606060998054610503906123ec565b6060609a8054610503906123ec565b600065ffffffffffff82111561136c5760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203460448201526538206269747360d01b60648201526084016105e6565b600061059a6114a6611190565b8360405161190160f01b8152600281019290925260228201526042902090565b60008060006114d78787878761187d565b915091506114e481611941565b5095945050505050565b6001600160a01b038116600090815260cb602052604090208054600181018255905b50919050565b6105f98282611a8b565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f61154b611b16565b611553611b6f565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b6000816000036115a657506000919050565b600060016115b384611ba0565b901c6001901b905060018184816115cc576115cc612505565b048201901c905060018184816115e4576115e4612505565b048201901c905060018184816115fc576115fc612505565b048201901c9050600181848161161457611614612505565b048201901c9050600181848161162c5761162c612505565b048201901c9050600181848161164457611644612505565b048201901c9050600181848161165c5761165c612505565b048201901c90506106ac8182858161167657611676612505565b04611c34565b600061168b600284841861251b565b6106ac90848416612436565b6116a18282611c4a565b611041610100611d8583611d91565b816001600160a01b0316836001600160a01b0316141580156116d25750600081115b156117e9576001600160a01b03831615611760576001600160a01b038316600090815260ff60205260408120819061170d90611d8585611d91565b91509150846001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248383604051611755929190918252602082015260400190565b60405180910390a250505b6001600160a01b038216156117e9576001600160a01b038216600090815260ff60205260408120819061179690611f0685611d91565b91509150836001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72483836040516117de929190918252602082015260400190565b60405180910390a250505b505050565b600054610100900460ff166118155760405162461bcd60e51b81526004016105e6906124ba565b6036611821838261258b565b5060376117e9828261258b565b600054610100900460ff166118555760405162461bcd60e51b81526004016105e6906124ba565b6099611861838261258b565b50609a61186e828261258b565b50506000609781905560985550565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156118b45750600090506003611938565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611908573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661193157600060019250925050611938565b9150600090505b94509492505050565b60008160048111156119555761195561264b565b0361195d5750565b60018160048111156119715761197161264b565b036119be5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016105e6565b60028160048111156119d2576119d261264b565b03611a1f5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016105e6565b6003816004811115611a3357611a3361264b565b036106bd5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016105e6565b611a958282611f12565b6035546001600160e01b031015611b075760405162461bcd60e51b815260206004820152603060248201527f4552433230566f7465733a20746f74616c20737570706c79207269736b73206f60448201526f766572666c6f77696e6720766f74657360801b60648201526084016105e6565b611041610100611f0683611d91565b600080611b21611414565b805190915015611b38578051602090910120919050565b6097548015611b475792915050565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4709250505090565b600080611b7a611423565b805190915015611b91578051602090910120919050565b6098548015611b475792915050565b600080608083901c15611bb557608092831c92015b604083901c15611bc757604092831c92015b602083901c15611bd957602092831c92015b601083901c15611beb57601092831c92015b600883901c15611bfd57600892831c92015b600483901c15611c0f57600492831c92015b600283901c15611c2157600292831c92015b600183901c1561059a5760010192915050565b6000818310611c4357816106ac565b5090919050565b6001600160a01b038216611caa5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016105e6565b6001600160a01b03821660009081526033602052604090205481811015611d1e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016105e6565b6001600160a01b03831660008181526033602090815260408083208686039055603580548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36117e983600084611fd7565b60006106ac82846124a7565b82546000908190818115611dde5760008781526020902082016000190160408051808201909152905463ffffffff8116825264010000000090046001600160e01b03166020820152611df3565b60408051808201909152600080825260208201525b905080602001516001600160e01b03169350611e1384868863ffffffff16565b9250600082118015611e3d5750611e28610b16565b65ffffffffffff16816000015163ffffffff16145b15611e8257611e4b83611fe2565b60008881526020902083016000190180546001600160e01b03929092166401000000000263ffffffff909216919091179055611efc565b866040518060400160405280611ea6611e99610b16565b65ffffffffffff16611307565b63ffffffff168152602001611eba86611fe2565b6001600160e01b0390811690915282546001810184556000938452602093849020835194909301519091166401000000000263ffffffff909316929092179101555b5050935093915050565b60006106ac8284612436565b6001600160a01b038216611f685760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016105e6565b8060356000828254611f7a9190612436565b90915550506001600160a01b0382166000818152603360209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36105f9600083835b6117e983838361204b565b60006001600160e01b0382111561136c5760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20326044820152663234206269747360c81b60648201526084016105e6565b6001600160a01b03838116600090815260fe60205260408082205485841683529120546117e9929182169116836116b0565b80356001600160a01b038116811461209457600080fd5b919050565b600080604083850312156120ac57600080fd5b6120b58361207d565b91506120c36020840161207d565b90509250929050565b6000815180845260005b818110156120f2576020818501810151868301820152016120d6565b506000602082860101526020601f19601f83011685010191505092915050565b6020815260006106ac60208301846120cc565b6000806040838503121561213857600080fd5b6121418361207d565b946020939093013593505050565b60008060006060848603121561216457600080fd5b61216d8461207d565b925061217b6020850161207d565b9150604084013590509250925092565b60006020828403121561219d57600080fd5b5035919050565b6000806000604084860312156121b957600080fd5b833567ffffffffffffffff808211156121d157600080fd5b818601915086601f8301126121e557600080fd5b8135818111156121f457600080fd5b8760208260051b850101111561220957600080fd5b60209283019550935061221f918601905061207d565b90509250925092565b60006020828403121561223a57600080fd5b6106ac8261207d565b60ff60f81b881681526000602060e08184015261226360e084018a6120cc565b8381036040850152612275818a6120cc565b606085018990526001600160a01b038816608086015260a0850187905284810360c0860152855180825283870192509083019060005b818110156122c7578351835292840192918401916001016122ab565b50909c9b505050505050505050505050565b803560ff8116811461209457600080fd5b60008060008060008060c0878903121561230357600080fd5b61230c8761207d565b95506020870135945060408701359350612328606088016122d9565b92506080870135915060a087013590509295509295509295565b600080600080600080600060e0888a03121561235d57600080fd5b6123668861207d565b96506123746020890161207d565b95506040880135945060608801359350612390608089016122d9565b925060a0880135915060c0880135905092959891949750929550565b600080604083850312156123bf57600080fd5b6123c88361207d565b9150602083013563ffffffff811681146123e157600080fd5b809150509250929050565b600181811c9082168061240057607f821691505b60208210810361151057634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b8082018082111561059a5761059a612420565b634e487b7160e01b600052603260045260246000fd5b60006001820161247157612471612420565b5060010190565b634e487b7160e01b600052604160045260246000fd5b6000602082840312156124a057600080fd5b5051919050565b8181038181111561059a5761059a612420565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b634e487b7160e01b600052601260045260246000fd5b60008261253857634e487b7160e01b600052601260045260246000fd5b500490565b601f8211156117e957600081815260208120601f850160051c810160208610156125645750805b601f850160051c820191505b8181101561258357828155600101612570565b505050505050565b815167ffffffffffffffff8111156125a5576125a5612478565b6125b9816125b384546123ec565b8461253d565b602080601f8311600181146125ee57600084156125d65750858301515b600019600386901b1c1916600185901b178555612583565b600085815260208120601f198616915b8281101561261d578886015182559484019460019091019084016125fe565b508582101561263b5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052602160045260246000fdfea164736f6c6343000811000a", + }, + { + ContractAddr: common.HexToAddress(TimelockContract), + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/cfc0bd1127186a917ddc38fd38d22903034d3f0b", + Code: "6080604052600436106101d15760003560e01c80638129fc1c116100f7578063b1c5f42711610095578063d547741f11610064578063d547741f14610584578063e38335e5146105a4578063f23a6e61146105b7578063f27a0c92146105e357600080fd5b8063b1c5f427146104eb578063bc197c811461050b578063c4d252f514610537578063d45c44351461055757600080fd5b806391d14854116100d157806391d1485414610474578063a217fddf14610494578063ac431751146104a9578063b08e51c0146104c957600080fd5b80638129fc1c1461041d5780638f2a0bb0146104325780638f61f4f51461045257600080fd5b8063248a9ca31161016f57806336568abe1161013e57806336568abe1461039d578063584b153e146103bd57806364d62353146103dd5780638065657f146103fd57600080fd5b8063248a9ca3146102fd5780632ab0f5291461032d5780632f2ff15d1461035d57806331d507501461037d57600080fd5b80630d3cf6fc116101ab5780630d3cf6fc14610264578063134008d31461028657806313bc9f2014610299578063150b7a02146102b957600080fd5b806301d5062a146101dd57806301ffc9a7146101ff57806307bd02651461023457600080fd5b366101d857005b600080fd5b3480156101e957600080fd5b506101fd6101f8366004611a54565b6105f8565b005b34801561020b57600080fd5b5061021f61021a366004611ac8565b6106bc565b60405190151581526020015b60405180910390f35b34801561024057600080fd5b5061025660008051602061253b83398151915281565b60405190815260200161022b565b34801561027057600080fd5b506102566000805160206124fb83398151915281565b6101fd610294366004611af2565b6106e7565b3480156102a557600080fd5b5061021f6102b4366004611b5d565b61078a565b3480156102c557600080fd5b506102e46102d4366004611c2b565b630a85bd0160e11b949350505050565b6040516001600160e01b0319909116815260200161022b565b34801561030957600080fd5b50610256610318366004611b5d565b60009081526065602052604090206001015490565b34801561033957600080fd5b5061021f610348366004611b5d565b60009081526097602052604090205460011490565b34801561036957600080fd5b506101fd610378366004611c92565b6107b0565b34801561038957600080fd5b5061021f610398366004611b5d565b6107da565b3480156103a957600080fd5b506101fd6103b8366004611c92565b6107f3565b3480156103c957600080fd5b5061021f6103d8366004611b5d565b610876565b3480156103e957600080fd5b506101fd6103f8366004611b5d565b61088d565b34801561040957600080fd5b50610256610418366004611af2565b610931565b34801561042957600080fd5b506101fd610970565b34801561043e57600080fd5b506101fd61044d366004611d02565b610b22565b34801561045e57600080fd5b5061025660008051602061251b83398151915281565b34801561048057600080fd5b5061021f61048f366004611c92565b610ca3565b3480156104a057600080fd5b50610256600081565b3480156104b557600080fd5b506101fd6104c4366004611db3565b610cce565b3480156104d557600080fd5b5061025660008051602061255b83398151915281565b3480156104f757600080fd5b50610256610506366004611e1e565b610eb8565b34801561051757600080fd5b506102e4610526366004611f45565b63bc197c8160e01b95945050505050565b34801561054357600080fd5b506101fd610552366004611b5d565b610efd565b34801561056357600080fd5b50610256610572366004611b5d565b60009081526097602052604090205490565b34801561059057600080fd5b506101fd61059f366004611c92565b610fc0565b6101fd6105b2366004611e1e565b610fe5565b3480156105c357600080fd5b506102e46105d2366004611fee565b63f23a6e6160e01b95945050505050565b3480156105ef57600080fd5b50609854610256565b60008051602061251b8339815191526106108161115d565b6000610620898989898989610931565b905061062c8184611167565b6000817f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8b8b8b8b8b8a6040516106689695949392919061207b565b60405180910390a383156106b157807f20fda5fd27a1ea7bf5b9567f143ac5470bb059374a27e8f67cb44f946f6d0387856040516106a891815260200190565b60405180910390a25b505050505050505050565b60006001600160e01b03198216630271189760e51b14806106e157506106e182611256565b92915050565b60008051602061253b833981519152610701816000610ca3565b61070f5761070f813361128b565b600061071f888888888888610931565b905061072b81856112e4565b6107378888888861137f565b6000817fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b588a8a8a8a60405161076f94939291906120b8565b60405180910390a361078081611452565b5050505050505050565b6000818152609760205260408120546001811180156107a95750428111155b9392505050565b6000828152606560205260409020600101546107cb8161115d565b6107d5838361148b565b505050565b60008181526097602052604081205481905b1192915050565b6001600160a01b03811633146108685760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b6108728282611511565b5050565b6000818152609760205260408120546001906107ec565b3330146108f05760405162461bcd60e51b815260206004820152602b60248201527f54696d656c6f636b436f6e74726f6c6c65723a2063616c6c6572206d7573742060448201526a62652074696d656c6f636b60a81b606482015260840161085f565b60985460408051918252602082018390527f11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d5910160405180910390a1609855565b600086868686868660405160200161094e9695949392919061207b565b6040516020818303038152906040528051906020012090509695505050505050565b600054610100900460ff16158080156109905750600054600160ff909116105b806109aa5750303b1580156109aa575060005460ff166001145b610a0d5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161085f565b6000805460ff191660011790558015610a30576000805461ff0019166101001790555b334114610a505760405163022d8c9560e31b815260040160405180910390fd5b3a15610a6f576040516383f1b1d360e01b815260040160405180910390fd5b6040805160018082528183019092526000916020808301908036833701905050905061200481600081518110610aa757610aa76120ea565b60200260200101906001600160a01b031690816001600160a01b031681525050610ad8620151808283612004611578565b508015610b1f576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b60008051602061251b833981519152610b3a8161115d565b888714610b595760405162461bcd60e51b815260040161085f90612100565b888514610b785760405162461bcd60e51b815260040161085f90612100565b6000610b8a8b8b8b8b8b8b8b8b610eb8565b9050610b968184611167565b60005b8a811015610c545780827f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8e8e85818110610bd657610bd66120ea565b9050602002016020810190610beb9190612143565b8d8d86818110610bfd57610bfd6120ea565b905060200201358c8c87818110610c1657610c166120ea565b9050602002810190610c28919061215e565b8c8b604051610c3c9695949392919061207b565b60405180910390a3610c4d816121ba565b9050610b99565b508315610c9657807f20fda5fd27a1ea7bf5b9567f143ac5470bb059374a27e8f67cb44f946f6d038785604051610c8d91815260200190565b60405180910390a25b5050505050505050505050565b60009182526065602090815260408084206001600160a01b0393909316845291905290205460ff1690565b3361100714610cf457604051630f22c43960e41b8152611007600482015260240161085f565b610d57604051806040016040528060088152602001676d696e44656c617960c01b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506115b19050565b15610e545760208114610d855783838383604051630a5a604160e01b815260040161085f94939291906121d3565b604080516020601f8401819004810282018101909252828152600091610dc691858580838501838280828437600092019190915250929392505061160a9050565b9050801580610dd757506212750081115b15610dfd5784848484604051630a5a604160e01b815260040161085f94939291906121d3565b6040516364d6235360e01b81526004810182905230906364d6235390602401600060405180830381600087803b158015610e3657600080fd5b505af1158015610e4a573d6000803e3d6000fd5b5050505050610e75565b838383836040516325ee20d560e21b815260040161085f94939291906121d3565b7ff1ce9b2cbf50eeb05769a29e2543fd350cab46894a7dd9978a12d534bb20e63384848484604051610eaa94939291906121d3565b60405180910390a150505050565b60008888888888888888604051602001610ed998979695949392919061228b565b60405160208183030381529060405280519060200120905098975050505050505050565b60008051602061255b833981519152610f158161115d565b610f1e82610876565b610f845760405162461bcd60e51b815260206004820152603160248201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e2063616044820152701b9b9bdd0818994818d85b98d95b1b1959607a1b606482015260840161085f565b6000828152609760205260408082208290555183917fbaa1eb22f2a492ba1a5fea61b8df4d27c6c8b5f3971e63bb58fa14ff72eedb7091a25050565b600082815260656020526040902060010154610fdb8161115d565b6107d58383611511565b60008051602061253b833981519152610fff816000610ca3565b61100d5761100d813361128b565b87861461102c5760405162461bcd60e51b815260040161085f90612100565b87841461104b5760405162461bcd60e51b815260040161085f90612100565b600061105d8a8a8a8a8a8a8a8a610eb8565b905061106981856112e4565b60005b898110156111475760008b8b83818110611088576110886120ea565b905060200201602081019061109d9190612143565b905060008a8a848181106110b3576110b36120ea565b9050602002013590503660008a8a868181106110d1576110d16120ea565b90506020028101906110e3919061215e565b915091506110f38484848461137f565b84867fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b588686868660405161112a94939291906120b8565b60405180910390a35050505080611140906121ba565b905061106c565b5061115181611452565b50505050505050505050565b610b1f813361128b565b611170826107da565b156111d55760405162461bcd60e51b815260206004820152602f60248201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e20616c60448201526e1c9958591e481cd8da19591d5b1959608a1b606482015260840161085f565b6098548110156112365760405162461bcd60e51b815260206004820152602660248201527f54696d656c6f636b436f6e74726f6c6c65723a20696e73756666696369656e746044820152652064656c617960d01b606482015260840161085f565b611240814261232c565b6000928352609760205260409092209190915550565b60006001600160e01b03198216637965db0b60e01b14806106e157506301ffc9a760e01b6001600160e01b03198316146106e1565b6112958282610ca3565b610872576112a28161160f565b6112ad836020611621565b6040516020016112be929190612363565b60408051601f198184030181529082905262461bcd60e51b825261085f916004016123d8565b6112ed8261078a565b6113095760405162461bcd60e51b815260040161085f9061240b565b80158061132457506000818152609760205260409020546001145b6108725760405162461bcd60e51b815260206004820152602660248201527f54696d656c6f636b436f6e74726f6c6c65723a206d697373696e6720646570656044820152656e64656e637960d01b606482015260840161085f565b6000846001600160a01b031684848460405161139c929190612455565b60006040518083038185875af1925050503d80600081146113d9576040519150601f19603f3d011682016040523d82523d6000602084013e6113de565b606091505b505090508061144b5760405162461bcd60e51b815260206004820152603360248201527f54696d656c6f636b436f6e74726f6c6c65723a20756e6465726c79696e6720746044820152721c985b9cd858dd1a5bdb881c995d995c9d1959606a1b606482015260840161085f565b5050505050565b61145b8161078a565b6114775760405162461bcd60e51b815260040161085f9061240b565b600090815260976020526040902060019055565b6114958282610ca3565b6108725760008281526065602090815260408083206001600160a01b03851684529091529020805460ff191660011790556114cd3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b61151b8282610ca3565b156108725760008281526065602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b600054610100900460ff1661159f5760405162461bcd60e51b815260040161085f90612465565b6115ab848484846117bc565b50505050565b6000816040516020016115c491906124b0565b60405160208183030381529060405280519060200120836040516020016115eb91906124b0565b6040516020818303038152906040528051906020012014905092915050565b015190565b60606106e16001600160a01b03831660145b606060006116308360026124cc565b61163b90600261232c565b6001600160401b0381111561165257611652611b76565b6040519080825280601f01601f19166020018201604052801561167c576020820181803683370190505b509050600360fc1b81600081518110611697576116976120ea565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106116c6576116c66120ea565b60200101906001600160f81b031916908160001a90535060006116ea8460026124cc565b6116f590600161232c565b90505b600181111561176d576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110611729576117296120ea565b1a60f81b82828151811061173f5761173f6120ea565b60200101906001600160f81b031916908160001a90535060049490941c93611766816124e3565b90506116f8565b5083156107a95760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161085f565b600054610100900460ff166117e35760405162461bcd60e51b815260040161085f90612465565b6117fb6000805160206124fb8339815191528061199b565b61182160008051602061251b8339815191526000805160206124fb83398151915261199b565b61184760008051602061253b8339815191526000805160206124fb83398151915261199b565b61186d60008051602061255b8339815191526000805160206124fb83398151915261199b565b6118856000805160206124fb833981519152306119e6565b6001600160a01b038116156118ac576118ac6000805160206124fb833981519152826119e6565b60005b835181101561191d576118e960008051602061251b8339815191528583815181106118dc576118dc6120ea565b60200260200101516119e6565b61190d60008051602061255b8339815191528583815181106118dc576118dc6120ea565b611916816121ba565b90506118af565b5060005b825181101561195e5761194e60008051602061253b8339815191528483815181106118dc576118dc6120ea565b611957816121ba565b9050611921565b5060988490556040805160008152602081018690527f11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d59101610eaa565b600082815260656020526040808220600101805490849055905190918391839186917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a4505050565b610872828261148b565b80356001600160a01b0381168114611a0757600080fd5b919050565b60008083601f840112611a1e57600080fd5b5081356001600160401b03811115611a3557600080fd5b602083019150836020828501011115611a4d57600080fd5b9250929050565b600080600080600080600060c0888a031215611a6f57600080fd5b611a78886119f0565b96506020880135955060408801356001600160401b03811115611a9a57600080fd5b611aa68a828b01611a0c565b989b979a50986060810135976080820135975060a09091013595509350505050565b600060208284031215611ada57600080fd5b81356001600160e01b0319811681146107a957600080fd5b60008060008060008060a08789031215611b0b57600080fd5b611b14876119f0565b95506020870135945060408701356001600160401b03811115611b3657600080fd5b611b4289828a01611a0c565b979a9699509760608101359660809091013595509350505050565b600060208284031215611b6f57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715611bb457611bb4611b76565b604052919050565b600082601f830112611bcd57600080fd5b81356001600160401b03811115611be657611be6611b76565b611bf9601f8201601f1916602001611b8c565b818152846020838601011115611c0e57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060808587031215611c4157600080fd5b611c4a856119f0565b9350611c58602086016119f0565b92506040850135915060608501356001600160401b03811115611c7a57600080fd5b611c8687828801611bbc565b91505092959194509250565b60008060408385031215611ca557600080fd5b82359150611cb5602084016119f0565b90509250929050565b60008083601f840112611cd057600080fd5b5081356001600160401b03811115611ce757600080fd5b6020830191508360208260051b8501011115611a4d57600080fd5b600080600080600080600080600060c08a8c031215611d2057600080fd5b89356001600160401b0380821115611d3757600080fd5b611d438d838e01611cbe565b909b50995060208c0135915080821115611d5c57600080fd5b611d688d838e01611cbe565b909950975060408c0135915080821115611d8157600080fd5b50611d8e8c828d01611cbe565b9a9d999c50979a969997986060880135976080810135975060a0013595509350505050565b60008060008060408587031215611dc957600080fd5b84356001600160401b0380821115611de057600080fd5b611dec88838901611a0c565b90965094506020870135915080821115611e0557600080fd5b50611e1287828801611a0c565b95989497509550505050565b60008060008060008060008060a0898b031215611e3a57600080fd5b88356001600160401b0380821115611e5157600080fd5b611e5d8c838d01611cbe565b909a50985060208b0135915080821115611e7657600080fd5b611e828c838d01611cbe565b909850965060408b0135915080821115611e9b57600080fd5b50611ea88b828c01611cbe565b999c989b509699959896976060870135966080013595509350505050565b600082601f830112611ed757600080fd5b813560206001600160401b03821115611ef257611ef2611b76565b8160051b611f01828201611b8c565b9283528481018201928281019087851115611f1b57600080fd5b83870192505b84831015611f3a57823582529183019190830190611f21565b979650505050505050565b600080600080600060a08688031215611f5d57600080fd5b611f66866119f0565b9450611f74602087016119f0565b935060408601356001600160401b0380821115611f9057600080fd5b611f9c89838a01611ec6565b94506060880135915080821115611fb257600080fd5b611fbe89838a01611ec6565b93506080880135915080821115611fd457600080fd5b50611fe188828901611bbc565b9150509295509295909350565b600080600080600060a0868803121561200657600080fd5b61200f866119f0565b945061201d602087016119f0565b9350604086013592506060860135915060808601356001600160401b0381111561204657600080fd5b611fe188828901611bbc565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60018060a01b038716815285602082015260a0604082015260006120a360a083018688612052565b60608301949094525060800152949350505050565b60018060a01b03851681528360208201526060604082015260006120e0606083018486612052565b9695505050505050565b634e487b7160e01b600052603260045260246000fd5b60208082526023908201527f54696d656c6f636b436f6e74726f6c6c65723a206c656e677468206d69736d616040820152620e8c6d60eb1b606082015260800190565b60006020828403121561215557600080fd5b6107a9826119f0565b6000808335601e1984360301811261217557600080fd5b8301803591506001600160401b0382111561218f57600080fd5b602001915036819003821315611a4d57600080fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016121cc576121cc6121a4565b5060010190565b6040815260006121e7604083018688612052565b8281036020840152611f3a818587612052565b81835260006020808501808196508560051b810191508460005b8781101561227e5782840389528135601e1988360301811261223557600080fd5b870185810190356001600160401b0381111561225057600080fd5b80360382131561225f57600080fd5b61226a868284612052565b9a87019a9550505090840190600101612214565b5091979650505050505050565b60a0808252810188905260008960c08301825b8b8110156122cc576001600160a01b036122b7846119f0565b1682526020928301929091019060010161229e565b5083810360208501528881526001600160fb1b038911156122ec57600080fd5b8860051b9150818a6020830137018281036020908101604085015261231490820187896121fa565b60608401959095525050608001529695505050505050565b808201808211156106e1576106e16121a4565b60005b8381101561235a578181015183820152602001612342565b50506000910152565b7f416363657373436f6e74726f6c3a206163636f756e742000000000000000000081526000835161239b81601785016020880161233f565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516123cc81602884016020880161233f565b01602801949350505050565b60208152600082518060208401526123f781604085016020870161233f565b601f01601f19169190910160400192915050565b6020808252602a908201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e206973604082015269206e6f7420726561647960b01b606082015260800190565b8183823760009101908152919050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b600082516124c281846020870161233f565b9190910192915050565b80820281158282048414176106e1576106e16121a4565b6000816124f2576124f26121a4565b50600019019056fe5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca5b09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc1d8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e63fd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f783a164736f6c6343000811000a", + }, + { + ContractAddr: common.HexToAddress(TokenRecoverPortalContract), + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/cfc0bd1127186a917ddc38fd38d22903034d3f0b", + Code: "608060405234801561001057600080fd5b50600436106100a95760003560e01c80639fcb5012116100715780639fcb50121461012f578063ac4317511461014c578063bfb5a6a11461015f578063de88700b14610172578063e33f8d321461019d578063f4b88300146101c057600080fd5b8063046f7da2146100ae5780632eb4a7ab146100b85780634c335368146100d4578063572c9980146101145780638456cb5914610127575b600080fd5b6100b66101d3565b005b6100c160345481565b6040519081526020015b60405180910390f35b6101076040518060400160405280601481526020017342696e616e63652d436861696e2d47616e67657360601b81525081565b6040516100cb91906113eb565b6100b661012236600461141e565b610236565b6100b66102c7565b60355461013c9060ff1681565b60405190151581526020016100cb565b6100b661015a36600461149c565b610330565b6100b661016d36600461154d565b610756565b603754610185906001600160a01b031681565b6040516001600160a01b0390911681526020016100cb565b61013c6101ab366004611627565b60009081526036602052604090205460ff1690565b603354610185906001600160a01b031681565b6037546001600160a01b031633146101fe5760405163f2771a9960e01b815260040160405180910390fd5b6037805460ff60a01b191690556040517f62451d457bc659158be6e6247f56ec1df424a5c7597f71c20c2bc44e0965c8f990600090a1565b6037546001600160a01b031633146102615760405163f2771a9960e01b815260040160405180910390fd5b604051638525db0360e01b8152600481018390526001600160a01b038216602482015261100490638525db0390604401600060405180830381600087803b1580156102ab57600080fd5b505af11580156102bf573d6000803e3d6000fd5b505050505050565b6037546001600160a01b031633146102f25760405163f2771a9960e01b815260040160405180910390fd5b6037805460ff60a01b1916600160a01b1790556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e75290600090a1565b336110071461035b57604051630f22c43960e41b815261100760048201526024015b60405180910390fd5b6103c56040518060400160405280600f81526020016e617070726f7665724164647265737360881b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610a989050565b1561048d57601481146103f35783838383604051630a5a604160e01b81526004016103529493929190611669565b600061043783838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060149250610af2915050565b90506001600160a01b0381166104685784848484604051630a5a604160e01b81526004016103529493929190611669565b603380546001600160a01b0319166001600160a01b0392909216919091179055610713565b6104f26040518060400160405280600a8152602001691b595c9adb19549bdbdd60b21b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610a989050565b156105bf5760355460ff161561051b576040516379b3306f60e11b815260040160405180910390fd5b602081146105445783838383604051630a5a604160e01b81526004016103529493929190611669565b604080516020601f840181900481028201810190925282815260009161058491858580838501838280828437600092019190915250869250610af7915050565b806105aa5784848484604051630a5a604160e01b81526004016103529493929190611669565b6034556035805460ff19166001179055610713565b6106286040518060400160405280600e81526020016d30b9b9b2ba283937ba32b1ba37b960911b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610a989050565b156106f257601481146106565783838383604051630a5a604160e01b81526004016103529493929190611669565b600061069c601484848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610af29050565b90506001600160a01b0381166106cd5784848484604051630a5a604160e01b81526004016103529493929190611669565b603780546001600160a01b0319166001600160a01b0392909216919091179055610713565b838383836040516325ee20d560e21b81526004016103529493929190611669565b7ff1ce9b2cbf50eeb05769a29e2543fd350cab46894a7dd9978a12d534bb20e633848484846040516107489493929190611669565b60405180910390a150505050565b60355460ff1661077957604051635740729760e01b815260040160405180910390fd5b60345461079957604051635740729760e01b815260040160405180910390fd5b603754600160a01b900460ff16156107c45760405163c629ac8160e01b815260040160405180910390fd5b6107cc610b06565b600061085a89898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8d018190048102820181019092528b815292508b91508a9081908401838280828437600081840152601f19601f820116905080830192505050505050506108558e8e33610b5f565b610c80565b90506000818c8c6040516020016108739392919061169b565b6040516020818303038152906040528051906020012090506108a48160009081526036602052604090205460ff1690565b156108c157604051623e493160e81b815260040160405180910390fd5b6109693389898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8d018190048102820181019092528b815292508b91508a908190840183828082843760009201919091525050604080516020808c0282810182019093528b82528994509092508b918b91829190850190849080828437600092019190915250610d7492505050565b6109aa848480806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250506034549150849050610e7f565b6109c7576040516309bde33960e01b815260040160405180910390fd5b60008181526036602052604090819020805460ff191660011790555163799758b960e01b8152600481018d9052336024820152604481018c90526110049063799758b990606401600060405180830381600087803b158015610a2857600080fd5b505af1158015610a3c573d6000803e3d6000fd5b5050604080518f81523360208201529081018e90527f4ba6833d14341f931aa6ef39835b58eb5d657ebf0d968db68dbc7dd49d073f6d9250606001905060405180910390a15050610a8c60018055565b50505050505050505050565b600081604051602001610aab91906116c2565b6040516020818303038152906040528051906020012083604051602001610ad291906116c2565b604051602081830303815290604052805190602001201490505b92915050565b015190565b91018082526020908101910152565b600260015403610b585760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610352565b6002600155565b600060026040518060400160405280601481526020017342696e616e63652d436861696e2d47616e67657360601b815250610bbc85604051602001610ba691815260200190565b6040516020818303038152906040526000610e95565b6040516bffffffffffffffffffffffff19606087901b166020820152610bf5906034016040516020818303038152906040526001610e95565b610c0b88604051602001610ba691815260200190565b604051602001610c1e94939291906116de565b60408051601f1981840301815290829052610c38916116c2565b602060405180830381855afa158015610c55573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610c78919061180d565b949350505050565b60608351602114610ca457604051638152ea1b60e01b815260040160405180910390fd5b8251604014610cc657604051635e4bd79760e11b815260040160405180910390fd5b60408051608180825260c08201909252600091602082018180368337019050509050610cf6818660006021611067565b610d04818560216040611067565b610d338184604051602001610d1b91815260200190565b60405160208183030381529060405260616020611067565b604080516014808252818301909252600091602082018180368337019050509050815160148282856069600019fa610d6a57600080fd5b5095945050505050565b606060005b8251811015610dd25781838281518110610d9557610d9561183c565b6020026020010151604051602001610dae929190611852565b60405160208183030381529060405291508080610dca9061188a565b915050610d79565b5060006040518060400160405280601481526020017342696e616e63652d436861696e2d47616e67657360601b81525087878660345486604051602001610e1e969594939291906118a3565b60408051601f1981840301815291905280516020909101206033549091506001600160a01b0316610e4f82876110de565b6001600160a01b031614610e7657604051636eb5c6cb60e11b815260040160405180910390fd5b50505050505050565b600082610e8c85846110fa565b14949350505050565b6060600083516002610ea79190611914565b67ffffffffffffffff811115610ebf57610ebf611826565b6040519080825280601f01601f191660200182016040528015610ee9576020820181803683370190505b5060408051808201909152601081526f181899199a1a9b1b9c1cb0b131b232b360811b602082015290915060005b855181101561102f57818251878381518110610f3557610f3561183c565b0160200151610f47919060f81c611941565b81518110610f5757610f5761183c565b01602001516001600160f81b03191683610f72836002611914565b81518110610f8257610f8261183c565b60200101906001600160f81b031916908160001a905350818251878381518110610fae57610fae61183c565b0160200151610fc0919060f81c611955565b81518110610fd057610fd061183c565b01602001516001600160f81b03191683610feb836002611914565b610ff6906001611969565b815181106110065761100661183c565b60200101906001600160f81b031916908160001a905350806110278161188a565b915050610f17565b50831561105f5781604051602001611047919061197c565b60405160208183030381529060405292505050610aec565b509392505050565b60005b818110156110d7578381815181106110845761108461183c565b01602001516001600160f81b031916858461109e8161188a565b9550815181106110b0576110b061183c565b60200101906001600160f81b031916908160001a9053506110d08161188a565b905061106a565b5050505050565b60008060006110ed858561113f565b9150915061105f81611184565b600081815b845181101561105f5761112b8286838151811061111e5761111e61183c565b60200260200101516112d1565b9150806111378161188a565b9150506110ff565b60008082516041036111755760208301516040840151606085015160001a61116987828585611303565b9450945050505061117d565b506000905060025b9250929050565b6000816004811115611198576111986119a6565b036111a05750565b60018160048111156111b4576111b46119a6565b036112015760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610352565b6002816004811115611215576112156119a6565b036112625760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610352565b6003816004811115611276576112766119a6565b036112ce5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610352565b50565b60008183106112ed5760008281526020849052604090206112fc565b60008381526020839052604090205b9392505050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561133a57506000905060036113be565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa15801561138e573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166113b7576000600192509250506113be565b9150600090505b94509492505050565b60005b838110156113e25781810151838201526020016113ca565b50506000910152565b602081526000825180602084015261140a8160408501602087016113c7565b601f01601f19169190910160400192915050565b6000806040838503121561143157600080fd5b8235915060208301356001600160a01b038116811461144f57600080fd5b809150509250929050565b60008083601f84011261146c57600080fd5b50813567ffffffffffffffff81111561148457600080fd5b60208301915083602082850101111561117d57600080fd5b600080600080604085870312156114b257600080fd5b843567ffffffffffffffff808211156114ca57600080fd5b6114d68883890161145a565b909650945060208701359150808211156114ef57600080fd5b506114fc8782880161145a565b95989497509550505050565b60008083601f84011261151a57600080fd5b50813567ffffffffffffffff81111561153257600080fd5b6020830191508360208260051b850101111561117d57600080fd5b60008060008060008060008060008060c08b8d03121561156c57600080fd5b8a35995060208b0135985060408b013567ffffffffffffffff8082111561159257600080fd5b61159e8e838f0161145a565b909a50985060608d01359150808211156115b757600080fd5b6115c38e838f0161145a565b909850965060808d01359150808211156115dc57600080fd5b6115e88e838f0161145a565b909650945060a08d013591508082111561160157600080fd5b5061160e8d828e01611508565b915080935050809150509295989b9194979a5092959850565b60006020828403121561163957600080fd5b5035919050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60408152600061167d604083018688611640565b8281036020840152611690818587611640565b979650505050505050565b600084516116ad8184602089016113c7565b91909101928352506020820152604001919050565b600082516116d48184602087016113c7565b9190910192915050565b7f7b226163636f756e745f6e756d626572223a2230222c22636861696e5f6964228152611d1160f11b602082015260008551611721816022850160208a016113c7565b7f222c2264617461223a6e756c6c2c226d656d6f223a22222c226d736773223a5b6022918401918201526a3d9130b6b7bab73a111d1160a91b6042820152855161177281604d840160208a016113c7565b6e1116113932b1b4b834b2b73a111d1160891b604d929091019182015284516117a281605c8401602089016113c7565b711116113a37b5b2b72fb9bcb6b137b6111d1160711b605c929091019182015283516117d581606e8401602088016113c7565b7f227d5d2c2273657175656e6365223a2230222c22736f75726365223a2230227d606e9290910191820152608e019695505050505050565b60006020828403121561181f57600080fd5b5051919050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b600083516118648184602088016113c7565b9190910191825250602001919050565b634e487b7160e01b600052601160045260246000fd5b60006001820161189c5761189c611874565b5060010190565b600087516118b5818460208c016113c7565b606088901b6bffffffffffffffffffffffff191690830190815286516118e2816014840160208b016113c7565b01601481018690526034810185905283516119048160548401602088016113c7565b0160540198975050505050505050565b8082028115828204841417610aec57610aec611874565b634e487b7160e01b600052601260045260246000fd5b6000826119505761195061192b565b500490565b6000826119645761196461192b565b500690565b80820180821115610aec57610aec611874565b61060f60f31b8152600082516119998160028501602087016113c7565b9190910160020192915050565b634e487b7160e01b600052602160045260246000fdfea164736f6c6343000811000a", + }, + { + ContractAddr: common.HexToAddress(TokenRecoverPortalContract), + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/0f352c4623898d92664a46cbfc26c52b79aad838", + Code: "0", // TODO: update this when contract was ready + }, + }, + } + + feynmanUpgrade[rialtoNet] = &Upgrade{ + UpgradeName: "feynman", + Configs: []*UpgradeConfig{ + { + ContractAddr: common.HexToAddress(ValidatorContract), + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/cfc0bd1127186a917ddc38fd38d22903034d3f0b", + Code: "6080604052600436106104da5760003560e01c80638a7beb0111610281578063c6d339451161015a578063e40716a1116100cc578063f92eb86b11610085578063f92eb86b14610ccd578063f9a2bbc714610ce2578063fc3e590814610cf7578063fccc281314610d0c578063fd4ad81f14610d21578063fd6a687914610d50576104e1565b8063e40716a114610c30578063e589b61e14610c45578063ea321e4914610c65578063eb57e20214610c85578063eda5868c14610ca5578063f340fa0114610cba576104e1565b8063d86222d51161011e578063d86222d514610bb2578063daacdb6614610bc7578063dc927faf14610bdc578063df8079e914610bf1578063e086c7b114610c06578063e1c7392a14610c1b576104e1565b8063c6d3394514610b53578063c81b166214610b68578063c8509d811461090d578063ce910b0c14610b7d578063d68fb56a14610b9d576104e1565b8063aa82dce1116101f3578063ad3c9da6116101b7578063ad3c9da614610ad2578063aef198a914610af2578063b7ab4db514610b07578063b8cf4ef114610b29578063bf9f4995146106bd578063c466689d14610b3e576104e1565b8063aa82dce114610a5e578063aad5606314610a73578063aaf5eb6814610a88578063ab51bb9614610a9d578063ac43175114610ab2576104e1565b80639dc09262116102455780639dc09262146109e05780639fe0f816146109f5578063a0dc275814610a0a578063a1a11bf514610a1f578063a5422d5c14610a34578063a78abc1614610a49576104e1565b80638a7beb011461096c5780638b5ad0c9146109815780638d19a410146109965780639369d7de146109b657806396713da9146109cb576104e1565b806351e80672116103b357806370fd5bad116103255780637a84ca2a116102e95780637a84ca2a146108e357806381650b62146108f8578063831d65d11461090d578063853230aa1461092d578063862498821461094257806388b32f1114610957576104e1565b806370fd5bad1461087a578063718a8aa81461088f57806375d47a0a146108a457806378dfed4a146108b95780637942fd05146108ce576104e1565b80635de1e22c116103775780635de1e22c146107e9578063603d86d3146106a857806360eba4fe146107fe57806362b72cf51461081e5780636969a25c146108335780636e47b48214610865576104e1565b806351e806721461076a57806355614fcc1461077f578063565c56b31461079f5780635667515a146107bf5780635d77156c146107d4576104e1565b80633365af3a1161044c57806343756e5c1161041057806343756e5c146106df57806345cf9daf146106f4578063493279b1146107095780634bf6c8821461072b5780634df6e0c3146107405780635192c82c14610755576104e1565b80633365af3a1461064557806335409f7f146106655780633b071dcc146106855780633de0f0d8146106a85780633dffc387146106bd576104e1565b8063152ad3b81161049e578063152ad3b8146105995780631e4c1524146105bb5780631ff18069146105db578063219f22d5146105f0578063300c356714610605578063321d398a14610625576104e1565b806304c4fec6146104e657806307a56847146104fd5780630bee7a67146105285780630e2374a51461054a5780631182b8751461056c576104e1565b366104e157005b600080fd5b3480156104f257600080fd5b506104fb610d65565b005b34801561050957600080fd5b50610512610dd7565b60405161051f9190618c29565b60405180910390f35b34801561053457600080fd5b5061053d610ddd565b60405161051f9190618c53565b34801561055657600080fd5b5061055f610de2565b60405161051f9190617fa5565b34801561057857600080fd5b5061058c610587366004617e8b565b610de8565b60405161051f9190618138565b3480156105a557600080fd5b506105ae6110cb565b60405161051f919061812d565b3480156105c757600080fd5b506104fb6105d6366004617c99565b6110d4565b3480156105e757600080fd5b50610512611774565b3480156105fc57600080fd5b5061053d61177a565b34801561061157600080fd5b506104fb610620366004617c31565b61177f565b34801561063157600080fd5b506105ae610640366004617e38565b611ac8565b34801561065157600080fd5b506105ae610660366004617e38565b611b97565b34801561067157600080fd5b506104fb610680366004617bf9565b611c48565b34801561069157600080fd5b5061069a611da1565b60405161051f929190618043565b3480156106b457600080fd5b5061051261207d565b3480156106c957600080fd5b506106d2612083565b60405161051f9190618c64565b3480156106eb57600080fd5b5061055f612088565b34801561070057600080fd5b5061051261208e565b34801561071557600080fd5b5061071e612094565b60405161051f9190618c1a565b34801561073757600080fd5b506106d2612099565b34801561074c57600080fd5b5061069a61209e565b34801561076157600080fd5b5061051261221c565b34801561077657600080fd5b5061055f612222565b34801561078b57600080fd5b506105ae61079a366004617bf9565b612228565b3480156107ab57600080fd5b506105126107ba366004617bf9565b61225d565b3480156107cb57600080fd5b506106d26122ae565b3480156107e057600080fd5b5061053d6122b3565b3480156107f557600080fd5b506105126122b8565b34801561080a57600080fd5b5061058c610819366004617e38565b6122be565b34801561082a57600080fd5b50610512612364565b34801561083f57600080fd5b5061085361084e366004617e38565b61236a565b60405161051f96959493929190617fd2565b34801561087157600080fd5b5061055f6123ce565b34801561088657600080fd5b506106d26123d4565b34801561089b57600080fd5b506106d26123d9565b3480156108b057600080fd5b5061055f6123de565b3480156108c557600080fd5b506105126122ae565b3480156108da57600080fd5b506106d26123e4565b3480156108ef57600080fd5b506105126123e9565b34801561090457600080fd5b5061053d6123ef565b34801561091957600080fd5b506104fb610928366004617e8b565b6123f4565b34801561093957600080fd5b50610512612455565b34801561094e57600080fd5b5061051261245b565b34801561096357600080fd5b50610512612461565b34801561097857600080fd5b506105ae612467565b34801561098d57600080fd5b50610512612470565b3480156109a257600080fd5b506105126109b1366004617bf9565b612476565b3480156109c257600080fd5b506104fb6124b6565b3480156109d757600080fd5b506106d26125ca565b3480156109ec57600080fd5b5061055f6125cf565b348015610a0157600080fd5b506105126125d5565b348015610a1657600080fd5b506105126125da565b348015610a2b57600080fd5b5061055f6125df565b348015610a4057600080fd5b5061058c6125e5565b348015610a5557600080fd5b506105ae612601565b348015610a6a57600080fd5b5061055f61260a565b348015610a7f57600080fd5b5061055f612610565b348015610a9457600080fd5b50610512612616565b348015610aa957600080fd5b5061053d6122ae565b348015610abe57600080fd5b506104fb610acd366004617ddc565b61261f565b348015610ade57600080fd5b50610512610aed366004617bf9565b612ebd565b348015610afe57600080fd5b50610512612ecf565b348015610b1357600080fd5b50610b1c612edc565b60405161051f9190618030565b348015610b3557600080fd5b50610512612fc8565b348015610b4a57600080fd5b50610512612fcd565b348015610b5f57600080fd5b506105126123d4565b348015610b7457600080fd5b5061055f612fd3565b348015610b8957600080fd5b5061058c610b98366004617e38565b612fd9565b348015610ba957600080fd5b50610512612fe6565b348015610bbe57600080fd5b50610512613025565b348015610bd357600080fd5b50610512613031565b348015610be857600080fd5b5061055f613037565b348015610bfd57600080fd5b5061055f61303d565b348015610c1257600080fd5b50610512610ddd565b348015610c2757600080fd5b506104fb613043565b348015610c3c57600080fd5b506105126131ef565b348015610c5157600080fd5b506104fb610c60366004617bf9565b6131f5565b348015610c7157600080fd5b506105ae610c80366004617d9d565b61333a565b348015610c9157600080fd5b506104fb610ca0366004617bf9565b6134c0565b348015610cb157600080fd5b5061053d6135c4565b6104fb610cc8366004617bf9565b6135c9565b348015610cd957600080fd5b50610512613931565b348015610cee57600080fd5b5061055f613937565b348015610d0357600080fd5b506106d26125d5565b348015610d1857600080fd5b5061055f61393d565b348015610d2d57600080fd5b50610d41610d3c366004617e38565b613943565b60405161051f93929190618c32565b348015610d5c57600080fd5b5061055f613a05565b6000610d7033612476565b9050600b8181548110610d7f57fe5b600091825260209091206001601690920201015460ff16610dbb5760405162461bcd60e51b8152600401610db29061889d565b60405180910390fd5b6000610dc5612fe6565b9050610dd2338383613a0b565b505050565b60095481565b606481565b61200181565b60005460609060ff16610e0d5760405162461bcd60e51b8152600401610db2906182f7565b600b54610ecb57610e1c6177a5565b60015460005b81811015610ec757600b80546001810182556000919091528351600080516020618d368339815191526016909202918201908155602080860151600080516020618d768339815191528401805460ff1916911515919091179055604086015180518794610ea393600080516020618d568339815191529091019201906177d4565b506060820151610eb9906003830190601361784e565b505050806001019050610e22565b5050505b610ed361787b565b6000610f1485858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250613cdc92505050565b9150915080610f3057610f276064613e98565b925050506110c4565b815160009060ff16610f5557610f4e83602001518460400151613ef9565b9050611090565b825160ff166001141561108c57826020015151600114610f9a57600080516020618d16833981519152604051610f8a90618756565b60405180910390a1506067611087565b6000600460008560200151600081518110610fb157fe5b6020026020010151600001516001600160a01b03166001600160a01b0316815260200190815260200160002054905080600014806110195750600180820381548110610ff957fe5b9060005260206000209060040201600201601c9054906101000a900460ff165b1561107957836020015160008151811061102f57fe5b6020026020010151600001516001600160a01b03167fe209c46bebf57cf265d5d9009a00870e256d9150f3ed5281ab9d9eb3cec6e4be60405160405180910390a260009150611085565b6110828161505d565b91505b505b611090565b5060655b63ffffffff81166110b557505060408051600081526020810190915291506110c49050565b6110be81613e98565b93505050505b9392505050565b60075460ff1681565b3341146110f35760405162461bcd60e51b8152600401610db290618a85565b3a156111115760405162461bcd60e51b8152600401610db2906187dc565b825160408051828152602080840282010190915260609082801561114f57816020015b61113c61789f565b8152602001906001900390816111345790505b50905060005b828110156111f9576040518060c0016040528087838151811061117457fe5b60200260200101516001600160a01b0316815260200160006001600160a01b0316815260200160006001600160a01b031681526020018683815181106111b657fe5b60200260200101516001600160401b0316815260200160001515815260200160008152508282815181106111e657fe5b6020908102919091010152600101611155565b5060405163d31f968d60e01b81526120009063d31f968d906112249061100090600890600401618014565b60206040518083038186803b15801561123c57600080fd5b505afa158015611250573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112749190617d7d565b1561156d5780518061128857505050610dd2565b6015548181111561132357815b818110156113215760158054806112a857fe5b60008281526020812060046000199093019283020180546001600160a01b0319908116825560018201805490911690556002810180546001600160e81b031916905560030155905560168054806112fb57fe5b60019003818190600052602060002001600061131791906178d4565b9055600101611295565b505b60005b828110156115635781811061144b57601584828151811061134357fe5b602090810291909101810151825460018181018555600094855293839020825160049092020180546001600160a01b039283166001600160a01b0319918216178255938301519481018054958316958516959095179094556040820151600285018054606085015160808601511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b199590961692909716919091179290921692909217169290921790915560a00151600390910155855160169087908390811061141357fe5b6020908102919091018101518254600181018455600093845292829020815161144594919091019291909101906177d4565b5061155b565b83818151811061145757fe5b60200260200101516015828154811061146c57fe5b6000918252602091829020835160049092020180546001600160a01b039283166001600160a01b0319918216178255928401516001820180549184169185169190911790556040840151600282018054606087015160808801511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b1995909716929097169190911792909216939093171692909217905560a090910151600390910155855186908290811061152757fe5b60200260200101516016828154811061153c57fe5b9060005260206000200190805190602001906115599291906177d4565b505b600101611326565b5050505050610dd2565b60608061157a8386615171565b9150915060005b600154811015611664576001818154811061159857fe5b90600052602060002090600402016003015460001461165c576120026001600160a01b031663092193ab600183815481106115cf57fe5b906000526020600020906004020160030154600184815481106115ee57fe5b60009182526020909120600491820201546040516001600160e01b031960e086901b168152611629926001600160a01b039092169101617fa5565b6000604051808303818588803b15801561164257600080fd5b505af1158015611656573d6000803e3d6000fd5b50505050505b600101611581565b5047156116d2577f6ecc855f9440a9282c90913bbc91619fd44f5ec0b462af28d127b116f130aa4d4760405161169a9190618c29565b60405180910390a1604051611002904780156108fc02916000818181858888f193505050501580156116d0573d6000803e3d6000fd5b505b600060038190556005558151156116ed576116ed82826153aa565b6110016001600160a01b031663fc4333cd6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561172a57600080fd5b505af115801561173e573d6000803e3d6000fd5b50506040517fedd8d7296956dd970ab4de3f2fc03be2b0ffc615d20cd4c72c6e44f928630ebf925060009150a150505050505050565b60035481565b606881565b33411461179e5760405162461bcd60e51b8152600401610db290618a85565b60105443116117bf5760405162461bcd60e51b8152600401610db290618453565b3a156117dd5760405162461bcd60e51b8152600401610db2906187dc565b60005460ff166117ff5760405162461bcd60e51b8152600401610db2906182f7565b60006110023168056bc75e2d631000008111156118365761182f8168056bc75e2d6310000063ffffffff615bb116565b915061183d565b5050611abe565b6040516309a99b4f60e41b815261100290639a99b4f0906118649030908690600401617fb9565b602060405180830381600087803b15801561187e57600080fd5b505af1158015611892573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118b69190617e50565b9150816118c4575050611abe565b6000805b848110156118f2578585828181106118dc57fe5b90506020020135820191508060010190506118c8565b508061190057505050611abe565b6000806000805b89811015611ab6578489898381811061191c57fe5b9050602002013588028161192c57fe5b0493508a8a8281811061193b57fe5b90506020020160208101906119509190617bf9565b6001600160a01b03811660009081526004602052604090205490935091508115611a6c57600060018084038154811061198557fe5b9060005260206000209060040201905080600201601c9054906101000a900460ff16156119f257836001600160a01b03167fb9c75cbbfde137c4281689580799ef5f52144e78858f776a5979b2b212137d85866040516119e59190618c29565b60405180910390a2611a66565b600354611a05908663ffffffff615bf316565b6003908155810154611a1d908663ffffffff615bf316565b60038201556040516001600160a01b038516907fcb0aad6cf9cd03bdf6137e359f541c42f38b39f007cae8e89e88aa7d8c6617b290611a5d908890618c29565b60405180910390a25b50611aae565b826001600160a01b03167fb9c75cbbfde137c4281689580799ef5f52144e78858f776a5979b2b212137d8585604051611aa59190618c29565b60405180910390a25b600101611907565b505050505050505b5050436010555050565b6001546000908210611adc57506000611b92565b60006001600160a01b031660018381548110611af457fe5b60009182526020909120600490910201546001600160a01b03161480611b2457506008541580611b245750600a54155b80611b33575060085460095410155b80611b445750611b4282611b97565b155b80611b6d57506000600b8381548110611b5957fe5b906000526020600020906016020160000154115b80611b8157506001611b7d612edc565b5111155b15611b8e57506000611b92565b5060015b919050565b6001546000908210611bab57506000611b92565b600b548210611be85760018281548110611bc157fe5b9060005260206000209060040201600201601c9054906101000a900460ff16159050611b92565b60018281548110611bf557fe5b9060005260206000209060040201600201601c9054906101000a900460ff16158015611c425750600b8281548110611c2957fe5b600091825260209091206001601690920201015460ff16155b92915050565b3361100114611c695760405162461bcd60e51b8152600401610db290618b9a565b600b54611d2757611c786177a5565b60015460005b81811015611d2357600b80546001810182556000919091528351600080516020618d368339815191526016909202918201908155602080860151600080516020618d768339815191528401805460ff1916911515919091179055604086015180518794611cff93600080516020618d568339815191529091019201906177d4565b506060820151611d15906003830190601361784e565b505050806001019050611c7e565b5050505b6001600160a01b03811660009081526004602052604090205480611d4b5750611d9e565b6001810390506000600b8281548110611d6057fe5b600091825260209091206001601690920201015460ff169050611d838383615c18565b8015611d8c5750805b15610dd2576009805460001901905550505b50565b60015460609081906000805b82811015611df45760018181548110611dc257fe5b9060005260206000209060040201600201601c9054906101000a900460ff16611dec576001909101905b600101611dad565b50606081604051908082528060200260200182016040528015611e21578160200160208202803683370190505b509050606082604051908082528060200260200182016040528015611e5a57816020015b6060815260200190600190039081611e455790505b50600b5460009450909150841415611fd55760005b84811015611fcf5760018181548110611e8457fe5b9060005260206000209060040201600201601c9054906101000a900460ff16611fc75760018181548110611eb457fe5b600091825260209091206004909102015483516001600160a01b0390911690849086908110611edf57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050600b8181548110611f0c57fe5b600091825260209182902060026016909202018101805460408051601f600019610100600186161502019093169490940491820185900485028401850190528083529192909190830182828015611fa45780601f10611f7957610100808354040283529160200191611fa4565b820191906000526020600020905b815481529060010190602001808311611f8757829003601f168201915b5050505050828581518110611fb557fe5b60209081029190910101526001909301925b600101611e6f565b50612071565b60005b8481101561206f5760018181548110611fed57fe5b9060005260206000209060040201600201601c9054906101000a900460ff16612067576001818154811061201d57fe5b600091825260209091206004909102015483516001600160a01b039091169084908690811061204857fe5b6001600160a01b03909216602092830291909101909101526001909301925b600101611fd8565b505b909450925050505b9091565b61271081565b600181565b61100181565b60085481565b603881565b600881565b600e54600c546060918291806120b2575060155b60606120bc612edc565b905060606120c982615fcb565b9050828251116120e0579094509250612079915050565b838383510310156120f2578282510393505b83156121285760c8430461210e83838388880360008a8a616139565b6121268383838888038989038a8b8b8b510301616139565b505b606083604051908082528060200260200182016040528015612154578160200160208202803683370190505b50905060608460405190808252806020026020018201604052801561218d57816020015b60608152602001906001900390816121785790505b50905060005b8581101561220e578481815181106121a757fe5b60200260200101518382815181106121bb57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508381815181106121e757fe5b60200260200101518282815181106121fb57fe5b6020908102919091010152600101612193565b509096509450505050509091565b60065481565b61200081565b6001600160a01b03811660009081526004602052604081205480612250576000915050611b92565b600019016110c481611b97565b6001600160a01b03811660009081526004602052604081205480612285576000915050611b92565b60018082038154811061229457fe5b906000526020600020906004020160030154915050919050565b600081565b606781565b600f5481565b601281815481106122cb57fe5b600091825260209182902001805460408051601f600260001961010060018716150201909416939093049283018590048502810185019091528181529350909183018282801561235c5780601f106123315761010080835404028352916020019161235c565b820191906000526020600020905b81548152906001019060200180831161233f57829003601f168201915b505050505081565b60105481565b6001818154811061237757fe5b600091825260209091206004909102018054600182015460028301546003909301546001600160a01b0392831694509082169291821691600160a01b81046001600160401b031691600160e01b90910460ff169086565b61100581565b600281565b601081565b61100881565b600b81565b600c5481565b606681565b33612000146124155760405162461bcd60e51b8152600401610db290618a36565b7f41ce201247b6ceb957dcdb217d0b8acb50b9ea0e12af9af4f5e7f3890210160583838360405161244893929190618c72565b60405180910390a1505050565b6103e881565b60025481565b60115481565b60145460ff1681565b600a5481565b6001600160a01b038116600090815260046020526040812054806124ac5760405162461bcd60e51b8152600401610db2906189be565b6000190192915050565b600b54612574576124c56177a5565b60015460005b8181101561257057600b80546001810182556000919091528351600080516020618d368339815191526016909202918201908155602080860151600080516020618d768339815191528401805460ff191691151591909117905560408601518051879461254c93600080516020618d568339815191529091019201906177d4565b506060820151612562906003830190601361784e565b5050508060010190506124cb565b5050505b6008546125815760036008555b600a5461258e576002600a555b600061259933612476565b90506125a481611ac8565b6125c05760405162461bcd60e51b8152600401610db290618713565b611d9e3382616290565b600981565b61100781565b600381565b60c881565b61100681565b6040518060a0016040528060788152602001618d966078913981565b60005460ff1681565b61200281565b61300081565b6402540be40081565b60005460ff166126415760405162461bcd60e51b8152600401610db2906182f7565b33611007146126625760405162461bcd60e51b8152600401610db29061880a565b6126cc84848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080518082019091526013815272065787069726554696d655365636f6e6447617606c1b602082015291506163289050565b1561276957602081146126f15760405162461bcd60e51b8152600401610db290618978565b604080516020601f840181900481028201810190925282815260009161272f9185858083850183828082843760009201919091525061638192505050565b9050606481101580156127455750620186a08111155b6127615760405162461bcd60e51b8152600401610db290618603565b600255612e7a565b6127c984848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260098152686275726e526174696f60b81b602082015291506163289050565b1561285857602081146127ee5760405162461bcd60e51b8152600401610db29061817d565b604080516020601f840181900481028201810190925282815260009161282c9185858083850183828082843760009201919091525061638192505050565b90506127108111156128505760405162461bcd60e51b8152600401610db290618495565b600655612e7a565b6128c284848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260138152726d61784e756d4f664d61696e7461696e696e6760681b602082015291506163289050565b1561295c57602081146128e75760405162461bcd60e51b8152600401610db2906181b4565b604080516020601f84018190048102820181019092528281526000916129259185858083850183828082843760009201919091525061638192505050565b600c5490915080612934575060155b8082106129535760405162461bcd60e51b8152600401610db290618508565b50600855612e7a565b6129c584848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260128152716d61696e7461696e536c6173685363616c6560701b602082015291506163289050565b15612a5e57602081146129ea5760405162461bcd60e51b8152600401610db29061827d565b604080516020601f8401819004810282018101909252828152600091612a289185858083850183828082843760009201919091525061638192505050565b9050600081118015612a3a5750600a81105b612a565760405162461bcd60e51b8152600401610db290618b16565b600a55612e7a565b612ad284848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601981527f6d61784e756d4f66576f726b696e6743616e6469646174657300000000000000602082015291506163289050565b15612b615760208114612af75760405162461bcd60e51b8152600401610db290618231565b604080516020601f8401819004810282018101909252828152600091612b359185858083850183828082843760009201919091525061638192505050565b9050600d54811115612b595760405162461bcd60e51b8152600401610db290618679565b600e55612e7a565b612bca84848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260128152716d61784e756d4f6643616e6469646174657360701b602082015291506163289050565b15612c4c5760208114612bef5760405162461bcd60e51b8152600401610db290618858565b604080516020601f8401819004810282018101909252828152600091612c2d9185858083850183828082843760009201919091525061638192505050565b600d819055600e54909150811015612c4657600d54600e555b50612e7a565b612cb084848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600d81526c6e756d4f66436162696e65747360981b602082015291506163289050565b15612d5e5760208114612cd55760405162461bcd60e51b8152600401610db2906182c2565b604080516020601f8401819004810282018101909252828152600091612d139185858083850183828082843760009201919091525061638192505050565b905060008111612d355760405162461bcd60e51b8152600401610db290618365565b6064811115612d565760405162461bcd60e51b8152600401610db2906183ad565b600c55612e7a565b612dc684848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601181527073797374656d526577617264526174696f60781b602082015291506163289050565b15612e625760208114612deb5760405162461bcd60e51b8152600401610db290618ad2565b604080516020601f8401819004810282018101909252828152600091612e299185858083850183828082843760009201919091525061638192505050565b905060018110158015612e3e57506127108111155b612e5a5760405162461bcd60e51b8152600401610db2906185b0565b600f55612e7a565b60405162461bcd60e51b8152600401610db290618b73565b7f6cdb0ac70ab7f2e2d035cca5be60d89906f2dede7648ddbd7402189c1eeed17a84848484604051612eaf949392919061814b565b60405180910390a150505050565b60046020526000908152604090205481565b68056bc75e2d6310000081565b6001546060906000805b82811015612f0b57612ef781611b97565b15612f03578160010191505b600101612ee6565b50606081604051908082528060200260200182016040528015612f38578160200160208202803683370190505b5090506000915060005b83811015612fbf57612f5381611b97565b15612fb75760018181548110612f6557fe5b600091825260209091206004909102015482516001600160a01b0390911690839085908110612f9057fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508260010192505b600101612f42565b50925050505b90565b601581565b61027181565b61100281565b601381815481106122cb57fe5b6000612ff0612edc565b519050600080600c5411613005576015613009565b600c545b905080821115613017578091505b8161302157600191505b5090565b67016345785d8a000081565b60055481565b61100381565b61200481565b60005460ff16156130665760405162461bcd60e51b8152600401610db29061890a565b61306e61787b565b60006130916040518060a0016040528060788152602001618d9660789139613cdc565b91509150806130b25760405162461bcd60e51b8152600401610db2906189f5565b60005b8260200151518110156131d7576001836020015182815181106130d457fe5b60209081029190910181015182546001818101855560009485528385208351600493840290910180546001600160a01b039283166001600160a01b03199182161782558587015182850180549185169183169190911790556040860151600283018054606089015160808a01511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b199590981692909516919091179290921694909417161790915560a0909301516003909301929092559186015180519185019391859081106131aa57fe5b602090810291909101810151516001600160a01b03168252810191909152604001600020556001016130b5565b50506103e8600255506000805460ff19166001179055565b600d5481565b33612002146132165760405162461bcd60e51b8152600401610db290618be3565b60005b60155481101561329e57816001600160a01b03166015828154811061323a57fe5b60009182526020909120600490910201546001600160a01b031614156132965760016015828154811061326957fe5b9060005260206000209060040201600201601c6101000a81548160ff02191690831515021790555061329e565b600101613219565b506001600160a01b0381166000908152600460205260409020548015806132ef57506001808203815481106132cf57fe5b9060005260206000209060040201600201601c9054906101000a900460ff165b1561332d576040516001600160a01b038316907fe209c46bebf57cf265d5d9009a00870e256d9150f3ed5281ab9d9eb3cec6e4be90600090a2613336565b610dd28161505d565b5050565b601354600090815b818110156134435761342b85858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060138054909250859150811061339357fe5b600091825260209182902001805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156134215780601f106133f657610100808354040283529160200191613421565b820191906000526020600020905b81548152906001019060200180831161340457829003601f168201915b5050505050616386565b1561343b57600192505050611c42565b600101613342565b5060125460005b818110156134b45761349b86868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060128054909250859150811061339357fe5b156134ac5760019350505050611c42565b60010161344a565b50600095945050505050565b33611001146134e15760405162461bcd60e51b8152600401610db290618b9a565b600b5461359f576134f06177a5565b60015460005b8181101561359b57600b80546001810182556000919091528351600080516020618d368339815191526016909202918201908155602080860151600080516020618d768339815191528401805460ff191691151591909117905560408601518051879461357793600080516020618d568339815191529091019201906177d4565b50606082015161358d906003830190601361784e565b5050508060010190506134f6565b5050505b60006135aa826163ea565b90506135b581611ac8565b15613336576133368282616290565b606581565b3341146135e85760405162461bcd60e51b8152600401610db290618a85565b60005460ff1661360a5760405162461bcd60e51b8152600401610db2906182f7565b6000341161362a5760405162461bcd60e51b8152600401610db29061864a565b3a156136485760405162461bcd60e51b8152600401610db2906187dc565b6001600160a01b03811660009081526004602052604090205460145434919060ff1661368857610271600f556103aa6006556014805460ff191660011790555b60006136b16127106136a5600f548661658d90919063ffffffff16565b9063ffffffff6165c716565b90508015613721576040516110029082156108fc029083906000818181858888f193505050501580156136e8573d6000803e3d6000fd5b507f6ecc855f9440a9282c90913bbc91619fd44f5ec0b462af28d127b116f130aa4d816040516137189190618c29565b60405180910390a15b60008311801561373357506000600654115b156137d95760006137556127106136a56006548761658d90919063ffffffff16565b905080156137d75760405161dead9082156108fc029083906000818181858888f1935050505015801561378c573d6000803e3d6000fd5b507f627059660ea01c4733a328effb2294d2f86905bf806da763a89cee254de8bee5816040516137bc9190618c29565b60405180910390a16137d4848263ffffffff615bb116565b93505b505b6137e9838263ffffffff615bb116565b925081156138e957600060018084038154811061380257fe5b9060005260206000209060040201905080600201601c9054906101000a900460ff161561386f57846001600160a01b03167ff177e5d6c5764d79c32883ed824111d9b13f5668cf6ab1cc12dd36791dd955b4856040516138629190618c29565b60405180910390a26138e3565b600354613882908563ffffffff615bf316565b600390815581015461389a908563ffffffff615bf316565b60038201556040516001600160a01b038616907f93a090ecc682c002995fad3c85b30c5651d7fd29b0be5da9d784a3302aedc055906138da908790618c29565b60405180910390a25b5061392b565b836001600160a01b03167ff177e5d6c5764d79c32883ed824111d9b13f5668cf6ab1cc12dd36791dd955b4846040516139229190618c29565b60405180910390a25b50505050565b600e5481565b61100081565b61dead81565b600b818154811061395057fe5b6000918252602091829020601691909102018054600180830154600280850180546040805161010096831615969096026000190190911692909204601f810188900488028501880190925281845293965060ff909116949192918301828280156139fb5780601f106139d0576101008083540402835291602001916139fb565b820191906000526020600020905b8154815290600101906020018083116139de57829003601f168201915b5050505050905083565b61100481565b6000600a5460001480613a1c575081155b80613a275750600954155b15613a34575060006110c4565b60096000815460019003919050819055506000613a7f600a546136a5856136a5600b8981548110613a6157fe5b6000918252602090912060169091020154439063ffffffff615bb116565b90506000600b8581548110613a9057fe5b906000526020600020906016020160010160006101000a81548160ff0219169083151502179055506000806110016001600160a01b0316638256ace66040518163ffffffff1660e01b8152600401604080518083038186803b158015613af557600080fd5b505afa158015613b09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b2d9190617e68565b9150915060009350808310613c8c57613b468787615c18565b506040516333c1892360e21b81526000906120029063cf06248c90613b6f908b90600401617fa5565b60206040518083038186803b158015613b8757600080fd5b505afa158015613b9b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613bbf9190617c15565b6001600160a01b031614613c2b576040516313d13bdb60e31b815261100190639e89ded890613bf4908a908790600401617fb9565b600060405180830381600087803b158015613c0e57600080fd5b505af1158015613c22573d6000803e3d6000fd5b50505050613c83565b6040516305bfb49960e41b815261100190635bfb499090613c50908a90600401617fa5565b600060405180830381600087803b158015613c6a57600080fd5b505af1158015613c7e573d6000803e3d6000fd5b505050505b60019350613c9e565b818310613c9e57613c9c876163ea565b505b6040516001600160a01b038816907fb9d38178dc641ff1817967a63c9078cbcd955a9f1fcd75e0e3636de615d44d3b90600090a25050509392505050565b613ce461787b565b6000613cee61787b565b613cf6617918565b613d07613d0286616609565b61662e565b90506000805b613d1683616678565b15613e8a5780613d3b57613d31613d2c84616699565b6166e7565b60ff168452613e82565b8060011415613e7d576060613d57613d5285616699565b616767565b90508051604051908082528060200260200182016040528015613d9457816020015b613d8161789f565b815260200190600190039081613d795790505b5085602001819052508051604051908082528060200260200182016040528015613dd257816020015b6060815260200190600190039081613dbd5790505b50604086015260005b8151811015613e7257613dec61789f565b60606000613e0c858581518110613dff57fe5b6020026020010151616838565b92509250925080613e2c578860009a509a50505050505050505050613e93565b8289602001518581518110613e3d57fe5b60200260200101819052508189604001518581518110613e5957fe5b6020026020010181905250505050806001019050613ddb565b506001925050613e82565b613e8a565b600101613d0d565b50919350909150505b915091565b604080516001808252818301909252606091829190816020015b6060815260200190600190039081613eb2579050509050613ed88363ffffffff16616952565b81600081518110613ee557fe5b60200260200101819052506110c481616965565b6000606483511115613f3057600080516020618d16833981519152604051613f209061840a565b60405180910390a1506066611c42565b60005b8351811015613fce5760005b81811015613fc557848181518110613f5357fe5b6020026020010151600001516001600160a01b0316858381518110613f7457fe5b6020026020010151600001516001600160a01b03161415613fbd57600080516020618d16833981519152604051613faa90618565565b60405180910390a1606692505050611c42565b600101613f3f565b50600101613f33565b5060608060606015805480602002602001604051908101604052809291908181526020016000905b828210156140805760008481526020908190206040805160c0810182526004860290920180546001600160a01b039081168452600180830154821685870152600283015491821693850193909352600160a01b81046001600160401b03166060850152600160e01b900460ff16151560808401526003015460a08301529083529092019101613ff6565b50505050905060606016805480602002602001604051908101604052809291908181526020016000905b828210156141555760008481526020908190208301805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156141415780601f1061411657610100808354040283529160200191614141565b820191906000526020600020905b81548152906001019060200180831161412457829003601f168201915b5050505050815260200190600101906140aa565b50505050905060005b82518110156141b25782818151811061417357fe5b60200260200101516060015160020283828151811061418e57fe5b60209081029190910101516001600160401b0390911660609091015260010161415e565b506060806141c2898986866169ef565b915091506141d08282615171565b6001546040805182815260208084028201019091529298509096506000955085945092506060915082801561420f578160200160208202803683370190505b50905060005b828110156143a05760006001600160a01b03166120026001600160a01b031663cf06248c6001848154811061424657fe5b60009182526020909120600491820201546040516001600160e01b031960e085901b168152614281926001600160a01b039092169101617fa5565b60206040518083038186803b15801561429957600080fd5b505afa1580156142ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142d19190617c15565b6001600160a01b0316146143335760018282815181106142ed57fe5b602002602001019060ff16908160ff16815250506001818154811061430e57fe5b90600052602060002090600402016003015460001461432e578360010193505b614398565b67016345785d8a00006001828154811061434957fe5b9060005260206000209060040201600301541061436b57846001019450614398565b6001818154811061437857fe5b906000526020600020906004020160030154600014614398578360010193505b600101614215565b506060846040519080825280602002602001820160405280156143cd578160200160208202803683370190505b5090506060856040519080825280602002602001820160405280156143fc578160200160208202803683370190505b50905060608660405190808252806020026020018201604052801561442b578160200160208202803683370190505b50905060608760405190808252806020026020018201604052801561445a578160200160208202803683370190505b509050600060608860405190808252806020026020018201604052801561448b578160200160208202803683370190505b5090506060896040519080825280602002602001820160405280156144ba578160200160208202803683370190505b50905060009a506000995060006110046001600160a01b031663149d14d96040518163ffffffff1660e01b815260040160206040518083038186803b15801561450257600080fd5b505afa158015614516573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061453a9190617e50565b905067016345785d8a000081111561458657600080516020618d16833981519152604051614567906188c9565b60405180910390a160689e505050505050505050505050505050611c42565b60005b8a81101561491a5789818151811061459d57fe5b602002602001015160ff166001141561469357600181815481106145bd57fe5b90600052602060002090600402016003015460001461468e57600181815481106145e357fe5b600091825260209091206004909102015484516001600160a01b039091169085908e90811061460e57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250506001818154811061463b57fe5b906000526020600020906004020160030154838d8151811061465957fe5b60200260200101818152505060018a8d8151811061467357fe5b602002602001019060ff16908160ff16815250508b6001019b505b614912565b67016345785d8a0000600182815481106146a957fe5b9060005260206000209060040201600301541061482e57600181815481106146cd57fe5b906000526020600020906004020160020160009054906101000a90046001600160a01b0316898e815181106146fe57fe5b60200260200101906001600160a01b031690816001600160a01b03168152505060006402540be4006001838154811061473357fe5b9060005260206000209060040201600301548161474c57fe5b066001838154811061475a57fe5b9060005260206000209060040201600301540390506147828382615bb190919063ffffffff16565b898f8151811061478e57fe5b602002602001018181525050600182815481106147a757fe5b906000526020600020906004020160010160009054906101000a90046001600160a01b0316878f815181106147d857fe5b60200260200101906001600160a01b031690816001600160a01b03168152505081888f8151811061480557fe5b6020908102919091010152614820868263ffffffff615bf316565b95508d6001019d5050614912565b6001818154811061483b57fe5b906000526020600020906004020160030154600014614912576001818154811061486157fe5b906000526020600020906004020160010160009054906101000a90046001600160a01b0316848d8151811061489257fe5b60200260200101906001600160a01b031690816001600160a01b031681525050600181815481106148bf57fe5b906000526020600020906004020160030154838d815181106148dd57fe5b60200260200101818152505060008a8d815181106148f757fe5b602002602001019060ff16908160ff16815250508b6001019b505b600101614589565b5060008415614b90576002546040516303702b2960e51b815261100491636e056520918891614954918e918e918d914201906004016180b3565b6020604051808303818588803b15801561496d57600080fd5b505af19350505050801561499e575060408051601f3d908101601f1916820190925261499b91810190617d7d565b60015b614b15576040516000815260443d10156149ba57506000614a55565b60046000803e60005160e01c6308c379a081146149db576000915050614a55565b60043d036004833e81513d60248201116001600160401b0382111715614a0657600092505050614a55565b80830180516001600160401b03811115614a27576000945050505050614a55565b8060208301013d8601811115614a4557600095505050505050614a55565b601f01601f191660405250925050505b80614a605750614aa2565b60019150857fa7cdeed7d0db45e3219a6e5d60838824c16f1d39991fcfe3f963029c844bf28082604051614a949190618138565b60405180910390a250614b10565b3d808015614acc576040519150601f19603f3d011682016040523d82523d6000602084013e614ad1565b606091505b5060019150857fbfa884552dd8921b6ce90bfe906952ae5b3b29be0cc1a951d4f62697635a3a4582604051614b069190618138565b60405180910390a2505b614b90565b8015614b57577fa217d08e65f80c73121cd9db834d81652d544bfbf452f6d04922b16c90a37b7086604051614b4a9190618c29565b60405180910390a1614b8e565b857fa7cdeed7d0db45e3219a6e5d60838824c16f1d39991fcfe3f963029c844bf280604051614b85906181fa565b60405180910390a25b505b8015614d465760005b8751811015614d44576000888281518110614bb057fe5b60200260200101519050600060018281548110614bc957fe5b60009182526020909120600160049092020181015481546001600160a01b03909116916108fc9185908110614bfa57fe5b9060005260206000209060040201600301549081150290604051600060405180830381858888f1935050505090508015614cb65760018281548110614c3b57fe5b60009182526020909120600160049092020181015481546001600160a01b03909116917f6c61d60f69a7beb3e1c80db7f39f37b208537cbb19da3174511b477812b2fc7d9185908110614c8a57fe5b906000526020600020906004020160030154604051614ca99190618c29565b60405180910390a2614d3a565b60018281548110614cc357fe5b60009182526020909120600160049092020181015481546001600160a01b03909116917f25d0ce7d2f0cec669a8c17efe49d195c13455bb8872b65fa610ac7f53fe4ca7d9185908110614d1257fe5b906000526020600020906004020160030154604051614d319190618c29565b60405180910390a25b5050600101614b99565b505b835115614f3c5760005b8451811015614f3a578a8181518110614d6557fe5b602002602001015160ff1660011415614e04576120026001600160a01b031663092193ab858381518110614d9557fe5b6020026020010151878481518110614da957fe5b60200260200101516040518363ffffffff1660e01b8152600401614dcd9190617fa5565b6000604051808303818588803b158015614de657600080fd5b505af1158015614dfa573d6000803e3d6000fd5b5050505050614f32565b6000858281518110614e1257fe5b60200260200101516001600160a01b03166108fc868481518110614e3257fe5b60200260200101519081150290604051600060405180830381858888f1935050505090508015614ec857858281518110614e6857fe5b60200260200101516001600160a01b03167f6c61d60f69a7beb3e1c80db7f39f37b208537cbb19da3174511b477812b2fc7d868481518110614ea657fe5b6020026020010151604051614ebb9190618c29565b60405180910390a2614f30565b858281518110614ed457fe5b60200260200101516001600160a01b03167f25d0ce7d2f0cec669a8c17efe49d195c13455bb8872b65fa610ac7f53fe4ca7d868481518110614f1257fe5b6020026020010151604051614f279190618c29565b60405180910390a25b505b600101614d50565b505b505050505050505050505050506000471115614fb9577f6ecc855f9440a9282c90913bbc91619fd44f5ec0b462af28d127b116f130aa4d47604051614f819190618c29565b60405180910390a1604051611002904780156108fc02916000818181858888f19350505050158015614fb7573d6000803e3d6000fd5b505b60006003819055600555815115614fd457614fd482826153aa565b6110016001600160a01b031663fc4333cd6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561501157600080fd5b505af1158015615025573d6000803e3d6000fd5b50506040517fedd8d7296956dd970ab4de3f2fc03be2b0ffc615d20cd4c72c6e44f928630ebf925060009150a1506000949350505050565b600154600554600091906000198201118015906150d05760018085038154811061508357fe5b600091825260208220600490910201546040516001600160a01b03909116917fe209c46bebf57cf265d5d9009a00870e256d9150f3ed5281ab9d9eb3cec6e4be91a2600092505050611b92565b6005805460019081019091558054819060001987019081106150ee57fe5b9060005260206000209060040201600201601c6101000a81548160ff02191690831515021790555060018085038154811061512557fe5b600091825260208220600490910201546040516001600160a01b03909116917ff226e7d8f547ff903d9d419cf5f54e0d7d07efa9584135a53a057c5f1f27f49a91a25060009392505050565b606080600080808080615182612fe6565b6001549091505b801561529057600181039250600b83815481106151a257fe5b600091825260209091206001601690920201015460ff166151c257615287565b600183815481106151cf57fe5b60009182526020909120600490910201546001600160a01b031694506151f6858484613a0b565b9350831580615209575060018a51038610155b1561521357615287565b60005b8a5181101561528557856001600160a01b03168b828151811061523557fe5b6020026020010151600001516001600160a01b0316141561527d5760018b828151811061525e57fe5b6020908102919091010151901515608090910152600190960195615285565b600101615216565b505b60001901615189565b50848951036040519080825280602002602001820160405280156152ce57816020015b6152bb61789f565b8152602001906001900390816152b35790505b5096508489510360405190808252806020026020018201604052801561530857816020015b60608152602001906001900390816152f35790505b5095506000915060005b895181101561539c5789818151811061532757fe5b6020026020010151608001516153945789818151811061534357fe5b602002602001015188848151811061535757fe5b602002602001018190525088818151811061536e57fe5b602002602001015187848151811061538257fe5b60200260200101819052508260010192505b600101615312565b5050505050505b9250929050565b600154825160005b828110156154c75760016153c461789f565b600183815481106153d157fe5b600091825260208083206040805160c08101825260049490940290910180546001600160a01b0390811685526001820154811693850193909352600281015492831691840191909152600160a01b82046001600160401b03166060840152600160e01b90910460ff16151560808301526003015460a082015291505b8481101561549b5787818151811061546157fe5b6020026020010151600001516001600160a01b031682600001516001600160a01b03161415615493576000925061549b565b60010161544d565b5081156154bd5780516001600160a01b03166000908152600460205260408120555b50506001016153b2565b508082111561558657805b828110156155845760018054806154e557fe5b60008281526020812060046000199093019283020180546001600160a01b0319908116825560018201805490911690556002810180546001600160e81b0319169055600301559055600b80548061553857fe5b60008281526020812060166000199093019283020181815560018101805460ff191690559061556a60028301826178d4565b615578600383016000617938565b505090556001016154d2565b505b60008183106155955781615597565b825b905060005b81811015615953576156498682815181106155b357fe5b6020026020010151600183815481106155c857fe5b60009182526020918290206040805160c08101825260049390930290910180546001600160a01b0390811684526001820154811694840194909452600281015493841691830191909152600160a01b83046001600160401b03166060830152600160e01b90920460ff161515608082015260039091015460a0820152616dbb565b6157fd57806001016004600088848151811061566157fe5b6020026020010151600001516001600160a01b03166001600160a01b031681526020019081526020016000208190555085818151811061569d57fe5b6020026020010151600182815481106156b257fe5b6000918252602091829020835160049092020180546001600160a01b039283166001600160a01b0319918216178255928401516001820180549184169185169190911790556040840151600282018054606087015160808801511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b1995909716929097169190911792909216939093171692909217905560a090910151600390910155845185908290811061576d57fe5b6020026020010151600b828154811061578257fe5b906000526020600020906016020160020190805190602001906157a69291906177d4565b506000600b82815481106157b657fe5b60009182526020822060169190910201600101805460ff191692151592909217909155600b8054839081106157e757fe5b600091825260209091206016909102015561594b565b61588e85828151811061580c57fe5b6020026020010151600b838154811061582157fe5b600091825260209182902060026016909202018101805460408051601f6000196101006001861615020190931694909404918201859004850284018501905280835291929091908301828280156134215780601f106133f657610100808354040283529160200191613421565b6158d95784818151811061589e57fe5b6020026020010151600b82815481106158b357fe5b906000526020600020906016020160020190805190602001906158d79291906177d4565b505b6000600182815481106158e857fe5b90600052602060002090600402016003018190555085818151811061590957fe5b6020026020010151608001516001828154811061592257fe5b9060005260206000209060040201600201601c6101000a81548160ff0219169083151502179055505b60010161559c565b5082821115615b2b576159646177a5565b835b83811015615b285785818151811061597a57fe5b60200260200101518260400181905250600187828151811061599857fe5b6020908102919091018101518254600181810185556000948552838520835160049093020180546001600160a01b039384166001600160a01b0319918216178255848601518284018054918616918316919091179055604080860151600284018054606089015160808a01511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b1995909a1692909616919091179290921696909617169190911790935560a090930151600390930192909255600b8054928301815590935284516016909102600080516020618d36833981519152810191825585830151600080516020618d768339815191528201805491151560ff1990921691909117905592850151805186949293615ace93600080516020618d56833981519152019201906177d4565b506060820151615ae4906003830190601361784e565b5050508060010160046000898481518110615afb57fe5b602090810291909101810151516001600160a01b0316825281019190915260400160002055600101615966565b50505b615b33616e3c565b615b3b61701e565b6000600981905560015493505b83811015615ba9576000600b8281548110615b5f57fe5b60009182526020822060169190910201600101805460ff191692151592909217909155600b805483908110615b9057fe5b6000918252602090912060169091020155600101615b48565b505050505050565b60006110c483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061720c565b6000828201838110156110c45760405162461bcd60e51b8152600401610db29061832e565b60008060018381548110615c2857fe5b90600052602060002090600402016003015490506000600180805490500390506001615c52612edc565b5111615c8757600060018581548110615c6757fe5b906000526020600020906004020160030181905550600092505050611c42565b846001600160a01b03167f3b6f9ef90462b512a1293ecec018670bf7b7f1876fb727590a8a6d7643130a7083604051615cc09190618c29565b60405180910390a26001600160a01b038516600090815260046020526040812055835b60015460001901811015615ead5760018160010181548110615d0157fe5b906000526020600020906004020160018281548110615d1c57fe5b60009182526020909120825460049092020180546001600160a01b03199081166001600160a01b0393841617825560018085015481840180548416918616919091179055600280860180549185018054909416919095161780835584546001600160401b03600160a01b91829004160267ffffffffffffffff60a01b1990911617808355935460ff600160e01b918290041615150260ff60e01b19909416939093179055600392830154920191909155600b805490918301908110615ddd57fe5b9060005260206000209060160201600b8281548110615df857fe5b600091825260209091208254601690920201908155600180830154818301805460ff909216151560ff1990921691909117905560028084018054615e4f938386019390821615610100026000190190911604617947565b50615e62600382810190840160136179bc565b50905050806001016004600060018481548110615e7b57fe5b600091825260208083206004909202909101546001600160a01b03168352820192909252604001902055600101615ce3565b506001805480615eb957fe5b60008281526020812060046000199093019283020180546001600160a01b0319908116825560018201805490911690556002810180546001600160e81b0319169055600301559055600b805480615f0c57fe5b60008281526020812060166000199093019283020181815560018101805460ff1916905590615f3e60028301826178d4565b615f4c600383016000617938565b505090556000818381615f5b57fe5b0490508015615fbf5760015460005b81811015615fbc578260018281548110615f8057fe5b9060005260206000209060040201600301540160018281548110615fa057fe5b6000918252602090912060036004909202010155600101615f6a565b50505b50600195945050505050565b60015481516040805182815260208084028201019091526060929190839082801561600a57816020015b6060815260200190600190039081615ff55790505b50600b549091508314616021579250611b92915050565b60005b8281101561613057600b60016004600089858151811061604057fe5b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054038154811061607457fe5b600091825260209182902060026016909202018101805460408051601f60001961010060018616150201909316949094049182018590048502840185019052808352919290919083018282801561610c5780601f106160e15761010080835404028352916020019161610c565b820191906000526020600020905b8154815290600101906020018083116160ef57829003601f168201915b505050505082828151811061611d57fe5b6020908102919091010152600101616024565b50949350505050565b60005b82811015616286576000828783880160405160200161615c929190617f97565b6040516020818303038152906040528051906020012060001c8161617c57fe5b0690508085018287011461627d576000898388018151811061619a57fe5b60200260200101519050606089848901815181106161b457fe5b602002602001015190508a838801815181106161cc57fe5b60200260200101518b858a01815181106161e257fe5b60200260200101906001600160a01b031690816001600160a01b031681525050818b8489018151811061621157fe5b60200260200101906001600160a01b031690816001600160a01b031681525050898388018151811061623f57fe5b60200260200101518a858a018151811061625557fe5b6020026020010181905250808a8489018151811061626f57fe5b602002602001018190525050505b5060010161613c565b5050505050505050565b600980546001908101909155600b8054839081106162aa57fe5b906000526020600020906016020160010160006101000a81548160ff02191690831515021790555043600b82815481106162e057fe5b600091825260208220601690910201919091556040516001600160a01b038416917ff62981a567ec3cec866c6fa93c55bcdf841d6292d18b8d522ececa769375d82d91a25050565b60008160405160200161633b9190617f7b565b60405160208183030381529060405280519060200120836040516020016163629190617f7b565b6040516020818303038152906040528051906020012014905092915050565b015190565b8151815160009160019181148083146163a257600092506163e0565b600160208701838101602088015b6002848385100114156163db5780518351146163cf5760009650600093505b602092830192016163b0565b505050505b5090949350505050565b6001600160a01b0381166000908152600460205260408120548061641357506000199050611b92565b60018103905060006001828154811061642857fe5b906000526020600020906004020160030154905060006001838154811061644b57fe5b6000918252602090912060036004909202010155600154604051600019909101906001600160a01b038616907f8cd4e147d8af98a9e3b6724021b8bf6aed2e5dac71c38f2dce8161b82585b25d906164a4908590618c29565b60405180910390a2806164bc57829350505050611b92565b60008183816164c757fe5b04905080156165835760005b848110156165255781600182815481106164e957fe5b906000526020600020906004020160030154016001828154811061650957fe5b60009182526020909120600360049092020101556001016164d3565b50600180549085015b8181101561658057826001828154811061654457fe5b906000526020600020906004020160030154016001828154811061656457fe5b600091825260209091206003600490920201015560010161652e565b50505b5091949350505050565b60008261659c57506000611c42565b828202828482816165a957fe5b04146110c45760405162461bcd60e51b8152600401610db29061879b565b60006110c483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250617238565b6166116179e6565b506040805180820190915281518152602082810190820152919050565b616636617918565b61663f8261726f565b61664857600080fd5b600061665783602001516172a9565b60208085015160408051808201909152868152920190820152915050919050565b60006166826179e6565b505080518051602091820151919092015191011190565b6166a16179e6565b6166aa82616678565b6166b357600080fd5b602082015160006166c38261730c565b80830160209586015260408051808201909152908152938401919091525090919050565b8051600090158015906166fc57508151602110155b61670557600080fd5b600061671483602001516172a9565b9050808360000151101561673a5760405162461bcd60e51b8152600401610db290618941565b82516020808501518301805192849003929183101561613057506020919091036101000a90049392505050565b60606167728261726f565b61677b57600080fd5b6000616786836173ed565b90506060816040519080825280602002602001820160405280156167c457816020015b6167b16179e6565b8152602001906001900390816167a95790505b50905060006167d685602001516172a9565b60208601510190506000805b8481101561682d576167f38361730c565b915060405180604001604052808381526020018481525084828151811061681657fe5b6020908102919091010152918101916001016167e2565b509195945050505050565b61684061789f565b6060600061684c61789f565b6060616856617918565b61685f8761662e565b90506000805b61686e83616678565b1561694357806168995761688961688484616699565b617449565b6001600160a01b0316855261693b565b80600114156168c1576168ae61688484616699565b6001600160a01b0316602086015261693b565b80600214156168e9576168d661688484616699565b6001600160a01b0316604086015261693b565b8060031415616915576168fe613d2c84616699565b6001600160401b031660608601526001915061693b565b80600414156169365761692f61692a84616699565b617463565b935061693b565b616943565b600101616865565b50929791965091945092505050565b6060611c42616960836174d3565b6175b9565b60608151600014156169865750604080516000815260208101909152611b92565b60608260008151811061699557fe5b602002602001015190506000600190505b83518110156169d6576169cc828583815181106169bf57fe5b602002602001015161760b565b91506001016169a6565b506110c46169e9825160c060ff16617688565b8261760b565b60608060006120026001600160a01b031663c473318f6040518163ffffffff1660e01b815260040160206040518083038186803b158015616a2f57600080fd5b505afa158015616a43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190616a679190617e50565b90508085518851011015616a7c575083518651015b606081604051908082528060200260200182016040528015616ab857816020015b616aa561789f565b815260200190600190039081616a9d5790505b509050606082604051908082528060200260200182016040528015616af157816020015b6060815260200190600190039081616adc5790505b50905060008060005b8b51831080616b095750895182105b8015616b1457508581105b15616da9578b51831415616b8457898281518110616b2e57fe5b6020026020010151858281518110616b4257fe5b6020026020010181905250888281518110616b5957fe5b6020026020010151848281518110616b6d57fe5b602090810291909101015260019182019101616afa565b8951821415616bef578b8381518110616b9957fe5b6020026020010151858281518110616bad57fe5b60200260200101819052508a8381518110616bc457fe5b6020026020010151848281518110616bd857fe5b602090810291909101015260019283019201616afa565b898281518110616bfb57fe5b6020026020010151606001516001600160401b03168c8481518110616c1c57fe5b6020026020010151606001516001600160401b03161115616c98578b8381518110616c4357fe5b6020026020010151858281518110616c5757fe5b60200260200101819052508a8381518110616c6e57fe5b6020026020010151848281518110616c8257fe5b6020026020010181905250826001019250616da1565b898281518110616ca457fe5b6020026020010151606001516001600160401b03168c8481518110616cc557fe5b6020026020010151606001516001600160401b03161015616d4157898281518110616cec57fe5b6020026020010151858281518110616d0057fe5b6020026020010181905250888281518110616d1757fe5b6020026020010151848281518110616d2b57fe5b6020026020010181905250816001019150616da1565b898281518110616d4d57fe5b6020026020010151600001516001600160a01b03168c8481518110616d6e57fe5b6020026020010151600001516001600160a01b03161015616d95578b8381518110616c4357fe5b898281518110616b2e57fe5b600101616afa565b50929a91995090975050505050505050565b805182516000916001600160a01b039182169116148015616df5575081602001516001600160a01b031683602001516001600160a01b0316145b8015616e1a575081604001516001600160a01b031683604001516001600160a01b0316145b80156110c45750506060908101519101516001600160401b0390811691161490565b60125460135480821115616e8757805b82811015616e85576012805480616e5f57fe5b600190038181906000526020600020016000616e7b91906178d4565b9055600101616e4c565b505b6000818310616e965781616e98565b825b905060005b81811015616fb057616f5560128281548110616eb557fe5b600091825260209182902001805460408051601f6002600019610100600187161502019094169390930492830185900485028101850190915281815292830182828015616f435780601f10616f1857610100808354040283529160200191616f43565b820191906000526020600020905b815481529060010190602001808311616f2657829003601f168201915b50505050506013838154811061339357fe5b616fa85760138181548110616f6657fe5b9060005260206000200160128281548110616f7d57fe5b906000526020600020019080546001816001161561010002031660029004616fa6929190617947565b505b600101616e9d565b5082821115610dd257825b8281101561392b57601260138281548110616fd257fe5b6000918252602080832084546001818101875595855291909320929091018054617015949390920192909160026101009282161592909202600019011604617947565b50600101616fbb565b601354600b548082111561706957805b8281101561706757601380548061704157fe5b60019003818190600052602060002001600061705d91906178d4565b905560010161702e565b505b6000818310617078578161707a565b825b905060005b81811015617199576171376013828154811061709757fe5b600091825260209182902001805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156171255780601f106170fa57610100808354040283529160200191617125565b820191906000526020600020905b81548152906001019060200180831161710857829003601f168201915b5050505050600b838154811061582157fe5b61719157600b818154811061714857fe5b90600052602060002090601602016002016013828154811061716657fe5b90600052602060002001908054600181600116156101000203166002900461718f929190617947565b505b60010161707f565b5082821115610dd257825b8281101561392b576013600b82815481106171bb57fe5b60009182526020808320845460018082018755958552919093206016929092029092016002908101805461720395939094019390926000199082161561010002011604617947565b506001016171a4565b600081848411156172305760405162461bcd60e51b8152600401610db29190618138565b505050900390565b600081836172595760405162461bcd60e51b8152600401610db29190618138565b50600083858161726557fe5b0495945050505050565b805160009061728057506000611b92565b6020820151805160001a9060c082101561729f57600092505050611b92565b5060019392505050565b8051600090811a60808110156172c3576000915050611b92565b60b88110806172de575060c081108015906172de575060f881105b156172ed576001915050611b92565b60c08110156173015760b519019050611b92565b60f519019050611b92565b80516000908190811a608081101561732757600191506173e6565b60b881101561733c57607e19810191506173e6565b60c081101561738d57600060b78203600186019550806020036101000a8651049150600181018201935050808310156173875760405162461bcd60e51b8152600401610db2906186e8565b506173e6565b60f88110156173a25760be19810191506173e6565b600060f78203600186019550806020036101000a8651049150600181018201935050808310156173e45760405162461bcd60e51b8152600401610db2906186e8565b505b5092915050565b80516000906173fe57506000611b92565b6000809050600061741284602001516172a9565b602085015185519181019250015b80821015617440576174318261730c565b82019150826001019250617420565b50909392505050565b805160009060151461745a57600080fd5b611c42826166e7565b805160609061747157600080fd5b600061748083602001516172a9565b83516040805191839003808352601f19601f82011683016020019091529192506060908280156174b7576020820181803683370190505b509050600081602001905061613084876020015101828561775a565b604080516020808252818301909252606091829190602082018180368337505050602081018490529050600067ffffffffffffffff1984166175175750601861753b565b6fffffffffffffffffffffffffffffffff1984166175375750601061753b565b5060005b60208110156175715781818151811061755057fe5b01602001516001600160f81b0319161561756957617571565b60010161753b565b60008160200390506060816040519080825280601f01601f1916602001820160405280156175a6576020820181803683370190505b5080830196909652508452509192915050565b6060815160011480156175eb5750607f60f81b826000815181106175d957fe5b01602001516001600160f81b03191611155b156175f7575080611b92565b611c426176098351608060ff16617688565b835b6060806040519050835180825260208201818101602087015b8183101561763c578051835260209283019201617624565b50855184518101855292509050808201602086015b81831015617669578051835260209283019201617651565b508651929092011591909101601f01601f191660405250905092915050565b60606801000000000000000083106176b25760405162461bcd60e51b8152600401610db2906184e0565b6040805160018082528183019092526060916020820181803683370190505090506037841161770c5782840160f81b816000815181106176ee57fe5b60200101906001600160f81b031916908160001a9053509050611c42565b6060617717856174d3565b90508381510160370160f81b8260008151811061773057fe5b60200101906001600160f81b031916908160001a905350617751828261760b565b95945050505050565b8061776457610dd2565b5b60208110617784578251825260209283019290910190601f1901617765565b915181516020939093036101000a6000190180199091169216919091179052565b604051806080016040528060008152602001600015158152602001606081526020016177cf617a00565b905290565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061781557805160ff1916838001178555617842565b82800160010185558215617842579182015b82811115617842578251825591602001919060010190617827565b50613021929150617a1f565b82601381019282156178425791602002820182811115617842578251825591602001919060010190617827565b6040518060600160405280600060ff16815260200160608152602001606081525090565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a081019190915290565b50805460018160011615610100020316600290046000825580601f106178fa5750611d9e565b601f016020900490600052602060002090810190611d9e9190617a1f565b604051806040016040528061792b6179e6565b8152602001600081525090565b50611d9e906013810190617a1f565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106179805780548555617842565b8280016001018555821561784257600052602060002091601f016020900482015b828111156178425782548255916001019190600101906179a1565b826013810192821561784257918201828111156178425782548255916001019190600101906179a1565b604051806040016040528060008152602001600081525090565b6040518061026001604052806013906020820280368337509192915050565b612fc591905b808211156130215760008155600101617a25565b8035611c4281618d00565b60008083601f840112617a55578182fd5b5081356001600160401b03811115617a6b578182fd5b60208301915083602080830285010111156153a357600080fd5b6000601f8381840112617a96578182fd5b8235617aa9617aa482618cb5565b618c8f565b818152925060208084019085810160005b84811015617b3b578135880189603f820112617ad557600080fd5b838101356001600160401b03811115617aed57600080fd5b617afe818901601f19168601618c8f565b81815260408c81848601011115617b1457600080fd5b82818501888401375060009181018601919091528552509282019290820190600101617aba565b50505050505092915050565b600082601f830112617b57578081fd5b8135617b65617aa482618cb5565b818152915060208083019084810181840286018201871015617b8657600080fd5b6000805b85811015617b3b5782356001600160401b0381168114617ba8578283fd5b85529383019391830191600101617b8a565b60008083601f840112617bcb578182fd5b5081356001600160401b03811115617be1578182fd5b6020830191508360208285010111156153a357600080fd5b600060208284031215617c0a578081fd5b81356110c481618d00565b600060208284031215617c26578081fd5b81516110c481618d00565b60008060008060408587031215617c46578283fd5b84356001600160401b0380821115617c5c578485fd5b617c6888838901617a44565b90965094506020870135915080821115617c80578384fd5b50617c8d87828801617a44565b95989497509550505050565b600080600060608486031215617cad578283fd5b83356001600160401b0380821115617cc3578485fd5b81860187601f820112617cd4578586fd5b80359250617ce4617aa484618cb5565b80848252602080830192508084018b828389028701011115617d0457898afd5b8994505b86851015617d2e57617d1a8c82617a39565b845260019490940193928101928101617d08565b509097508801359350505080821115617d45578384fd5b617d5187838801617b47565b93506040860135915080821115617d66578283fd5b50617d7386828701617a85565b9150509250925092565b600060208284031215617d8e578081fd5b815180151581146110c4578182fd5b60008060208385031215617daf578182fd5b82356001600160401b03811115617dc4578283fd5b617dd085828601617bba565b90969095509350505050565b60008060008060408587031215617df1578384fd5b84356001600160401b0380821115617e07578586fd5b617e1388838901617bba565b90965094506020870135915080821115617e2b578384fd5b50617c8d87828801617bba565b600060208284031215617e49578081fd5b5035919050565b600060208284031215617e61578081fd5b5051919050565b60008060408385031215617e7a578182fd5b505080516020909101519092909150565b600080600060408486031215617e9f578081fd5b833560ff81168114617eaf578182fd5b925060208401356001600160401b03811115617ec9578182fd5b617ed586828701617bba565b9497909650939450505050565b6000815180845260208085019450808401835b83811015617f1a5781516001600160a01b031687529582019590820190600101617ef5565b509495945050505050565b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b60008151808452617f67816020860160208601618cd4565b601f01601f19169290920160200192915050565b60008251617f8d818460208701618cd4565b9190910192915050565b918252602082015260400190565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b03968716815294861660208601529290941660408401526001600160401b03166060830152911515608082015260a081019190915260c00190565b6001600160a01b0392909216825260ff16602082015260400190565b6000602082526110c46020830184617ee2565b6000604082526180566040830185617ee2565b602083820381850152818551808452828401915082838202850101838801865b838110156180a457601f19878403018552618092838351617f4f565b94860194925090850190600101618076565b50909998505050505050505050565b6000608082526180c66080830187617ee2565b828103602084810191909152865180835287820192820190845b818110156180fc578451835293830193918301916001016180e0565b505084810360408601526181108188617ee2565b93505050506001600160401b038316606083015295945050505050565b901515815260200190565b6000602082526110c46020830184617f4f565b60006040825261815f604083018688617f25565b8281036020840152618172818587617f25565b979650505050505050565b6020808252601c908201527f6c656e677468206f66206275726e526174696f206d69736d6174636800000000604082015260600190565b60208082526026908201527f6c656e677468206f66206d61784e756d4f664d61696e7461696e696e67206d696040820152650e6dac2e8c6d60d31b606082015260800190565b6020808252601b908201527f6261746368207472616e736665722072657475726e2066616c73650000000000604082015260600190565b6020808252602c908201527f6c656e677468206f66206d61784e756d4f66576f726b696e6743616e6469646160408201526b0e8cae640dad2e6dac2e8c6d60a31b606082015260800190565b60208082526025908201527f6c656e677468206f66206d61696e7461696e536c6173685363616c65206d69736040820152640dac2e8c6d60db1b606082015260800190565b6020808252818101527f6c656e677468206f66206e756d4f66436162696e657473206d69736d61746368604082015260600190565b60208082526019908201527f74686520636f6e7472616374206e6f7420696e69742079657400000000000000604082015260600190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b60208082526028908201527f746865206e756d4f66436162696e657473206d75737420626520677265617465604082015267072207468616e20360c41b606082015260800190565b60208082526039908201527f746865206e756d4f66436162696e657473206d757374206265206c657373207460408201527f68616e204d41585f4e554d5f4f465f56414c494441544f525300000000000000606082015260800190565b60208082526029908201527f746865206e756d626572206f662076616c696461746f727320657863656564206040820152681d1a19481b1a5b5a5d60ba1b606082015260800190565b60208082526022908201527f63616e206e6f7420646f207468697320747769636520696e206f6e6520626c6f604082015261636b60f01b606082015260800190565b6020808252602b908201527f746865206275726e526174696f206d757374206265206e6f206772656174657260408201526a0207468616e2031303030360ac1b606082015260800190565b6020808252600e908201526d696e70757420746f6f206c6f6e6760901b604082015260600190565b60208082526037908201527f746865206d61784e756d4f664d61696e7461696e696e67206d7573742062652060408201527f6c657373207468616e206e756d4f66436162696e657473000000000000000000606082015260800190565b6020808252602b908201527f6475706c696361746520636f6e73656e7375732061646472657373206f66207660408201526a185b1a59185d1bdc94d95d60aa1b606082015260800190565b60208082526033908201527f7468652073797374656d526577617264526174696f206d757374206265206e6f60408201527202067726561746572207468616e20313030303606c1b606082015260800190565b60208082526027908201527f7468652065787069726554696d655365636f6e64476170206973206f7574206f604082015266662072616e676560c81b606082015260800190565b6020808252601590820152746465706f7369742076616c7565206973207a65726f60581b604082015260600190565b60208082526049908201527f746865206d61784e756d4f66576f726b696e6743616e64696461746573206d7560408201527f7374206265206e6f742067726561746572207468616e206d61784e756d4f6643606082015268616e6469646174657360b81b608082015260a00190565b6020808252601190820152706164646974696f6e206f766572666c6f7760781b604082015260600190565b60208082526023908201527f63616e206e6f7420656e7465722054656d706f72617279204d61696e74656e616040820152626e636560e81b606082015260800190565b60208082526025908201527f6c656e677468206f66206a61696c2076616c696461746f7273206d757374206260408201526465206f6e6560d81b606082015260800190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252601490820152736761737072696365206973206e6f74207a65726f60601b604082015260600190565b6020808252602e908201527f746865206d6573736167652073656e646572206d75737420626520676f76657260408201526d1b985b98d94818dbdb9d1c9858dd60921b606082015260800190565b60208082526025908201527f6c656e677468206f66206d61784e756d4f6643616e64696461746573206d69736040820152640dac2e8c6d60db1b606082015260800190565b6020808252601290820152716e6f7420696e206d61696e74656e616e636560701b604082015260600190565b60208082526021908201527f666565206973206c6172676572207468616e2044555354595f494e434f4d494e6040820152604760f81b606082015260800190565b60208082526019908201527f74686520636f6e747261637420616c726561647920696e697400000000000000604082015260600190565b6020808252601a908201527f6c656e677468206973206c657373207468616e206f6666736574000000000000604082015260600190565b60208082526026908201527f6c656e677468206f662065787069726554696d655365636f6e64476170206d696040820152650e6dac2e8c6d60d31b606082015260800190565b60208082526017908201527f6f6e6c792063757272656e742076616c696461746f7273000000000000000000604082015260600190565b60208082526021908201527f6661696c656420746f20706172736520696e69742076616c696461746f7253656040820152601d60fa1b606082015260800190565b6020808252602f908201527f746865206d6573736167652073656e646572206d7573742062652063726f737360408201526e0818da185a5b8818dbdb9d1c9858dd608a1b606082015260800190565b6020808252602d908201527f746865206d6573736167652073656e646572206d75737420626520746865206260408201526c3637b1b590383937b23ab1b2b960991b606082015260800190565b60208082526024908201527f6c656e677468206f662073797374656d526577617264526174696f206d69736d6040820152630c2e8c6d60e31b606082015260800190565b6020808252603e908201527f746865206d61696e7461696e536c6173685363616c65206d757374206265206760408201527f726561746572207468616e203020616e64206c657373207468616e2031300000606082015260800190565b6020808252600d908201526c756e6b6e6f776e20706172616d60981b604082015260600190565b60208082526029908201527f746865206d6573736167652073656e646572206d75737420626520736c6173686040820152680818dbdb9d1c9858dd60ba1b606082015260800190565b6020808252601f908201527f746865206d73672073656e646572206d757374206265207374616b6548756200604082015260600190565b61ffff91909116815260200190565b90815260200190565b60008482528315156020830152606060408301526177516060830184617f4f565b63ffffffff91909116815260200190565b60ff91909116815260200190565b600060ff8516825260406020830152617751604083018486617f25565b6040518181016001600160401b0381118282101715618cad57600080fd5b604052919050565b60006001600160401b03821115618cca578081fd5b5060209081020190565b60005b83811015618cef578181015183820152602001618cd7565b8381111561392b5750506000910152565b6001600160a01b0381168114611d9e57600080fdfe70e72399380dcfb0338abc03dc8d47f9f470ada8e769c9a78d644ea97385ecb20175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db90175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01dbb0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01dbaf87680f873f871949fb29aac15b9a4b7f17c3385939b007540f4d791949fb29aac15b9a4b7f17c3385939b007540f4d791949fb29aac15b9a4b7f17c3385939b007540f4d79164b085e6972fc98cd3c81d64d40e325acfed44365b97a7567a27939c14dbc7512ddcf54cb1284eb637cfa308ae4e00cb5588a164736f6c6343000604000a", + }, + { + ContractAddr: common.HexToAddress(SlashContract), + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/cfc0bd1127186a917ddc38fd38d22903034d3f0b", + Code: "608060405234801561001057600080fd5b50600436106102f15760003560e01c8063831d65d11161019d578063c81b1662116100e9578063df8079e9116100a2578063f9a2bbc71161007c578063f9a2bbc714610575578063fc3e59081461057d578063fc4333cd14610585578063fd6a68791461058d576102f1565b8063df8079e91461055d578063e1c7392a14610565578063eb57bff71461056d576102f1565b8063c81b16621461050c578063c8509d8114610514578063c96be4cb14610527578063cc844b731461053a578063d2a42e4b1461054d578063dc927faf14610555576102f1565b8063aa82dce111610156578063ac0af62911610130578063ac0af629146104e1578063ac431751146104e9578063ae61dc3b146104fc578063c80d4b8f14610504576102f1565b8063aa82dce1146104c9578063aad56063146104d1578063ab51bb96146104d9576102f1565b8063831d65d11461048357806396713da9146104965780639dc092621461049e5780639e89ded8146104a6578063a1a11bf5146104b9578063a78abc16146104c1576102f1565b8063493279b11161025c5780636e47b4821161021557806375d47a0a116101ef57806375d47a0a146104635780637912a65d1461046b5780637942fd05146104735780638256ace61461047b576102f1565b80636e47b4821461044b57806370fd5bad14610453578063718a8aa81461045b576102f1565b8063493279b1146104035780634bf6c8821461041857806351e8067214610420578063567a372d146104285780635bfb49901461043057806362b72cf514610443576102f1565b806335aa2e44116102ae57806335aa2e441461039557806337c8dab9146103a8578063389f4f71146103c95780633a63f4b1146103de5780633dffc387146103e657806343756e5c146103fb576102f1565b80630bee7a67146102f65780630e2374a5146103145780631182b8751461032957806322d1e80b1461034957806323bac5a21461035e5780632796211814610380575b600080fd5b6102fe610595565b60405161030b9190613dd9565b60405180910390f35b61031c61059a565b60405161030b91906135ac565b61033c6103373660046134e2565b6105a0565b60405161030b91906135e4565b610351610606565b60405161030b91906135d9565b61037161036c3660046131f9565b61060f565b60405161030b93929190613dc1565b61039361038e36600461333f565b610632565b005b61031c6103a33660046134b2565b610a4c565b6103bb6103b63660046131f9565b610a73565b60405161030b929190613db3565b6103d1610aca565b60405161030b9190613d89565b6103d1610ad0565b6103ee610ad6565b60405161030b9190613dea565b61031c610adb565b61040b610ae1565b60405161030b9190613d7a565b6103ee610ae6565b61031c610aeb565b6103d1610af1565b61039361043e3660046131f9565b610af7565b6103d1610ba2565b61031c610ba8565b6103ee610bae565b6103ee610bb3565b61031c610bb8565b6103d1610bbe565b6103ee610bc3565b6103bb610bc8565b6103936104913660046134e2565b610bd2565b6103ee610ce5565b61031c610cea565b6103936104b4366004613231565b610cf0565b61031c610d1f565b610351610d25565b61031c610d2e565b61031c610d34565b6102fe610d3a565b6103d1610d3f565b6103936104f7366004613396565b610d44565b6103d16112f4565b6103d16112fb565b61031c611300565b6103936105223660046134e2565b611306565b6103936105353660046131f9565b611377565b6103936105483660046133ff565b6117f8565b6103d1611e43565b61031c611e48565b61031c611e4e565b610393611e54565b6103d1611e91565b61031c611e97565b6103ee611e9d565b610393611ea2565b61031c6122eb565b606481565b61200181565b606033612000146105cc5760405162461bcd60e51b81526004016105c390613bd2565b60405180910390fd5b60005460ff166105ee5760405162461bcd60e51b81526004016105c390613702565b60405162461bcd60e51b81526004016105c390613cc3565b60075460ff1681565b600260208190526000918252604090912080546001820154919092015460ff1683565b60005460ff166106545760405162461bcd60e51b81526004016105c390613702565b8151158015906106645750805115155b6106805760405162461bcd60e51b81526004016105c390613b30565b60408051600380825260808201909252606091816020015b60608152602001906001900390816106985790505090506106b960386122f1565b816000815181106106c657fe5b60200260200101819052506106da8361230c565b816001815181106106e757fe5b60200260200101819052506106fb8261230c565b8160028151811061070857fe5b6020026020010181905250606061071e82612362565b60408051603480825260608281019093529293509091602082018180368337019050509050815160346020830182602086016068600019fa61075f57600080fd5b50601481015160348201516040516333c1892360e21b81526000906120029063cf06248c906107929086906004016135ac565b60206040518083038186803b1580156107aa57600080fd5b505afa1580156107be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107e29190613215565b6001600160a01b031614156108095760405162461bcd60e51b81526004016105c3906136d2565b4281621baf8001101561082e5760405162461bcd60e51b81526004016105c390613673565b60606110006001600160a01b0316633b071dcc6040518163ffffffff1660e01b815260040160006040518083038186803b15801561086b57600080fd5b505afa15801561087f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526108a7919081019061325c565b50905060005b81518110156109ea578181815181106108c257fe5b60200260200101516001600160a01b0316846001600160a01b031614156109e2576006546040516309a99b4f60e41b815260646110028031909302049190639a99b4f09061091690339085906004016135c0565b602060405180830381600087803b15801561093057600080fd5b505af1158015610944573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061096891906134ca565b506110006001600160a01b03166335409f7f84848151811061098657fe5b60200260200101516040518263ffffffff1660e01b81526004016109aa91906135ac565b600060405180830381600087803b1580156109c457600080fd5b505af11580156109d8573d6000803e3d6000fd5b50505050506109ea565b6001016108ad565b50604051631871f7d960e31b81526120029063c38fbec890610a109086906004016135ac565b600060405180830381600087803b158015610a2a57600080fd5b505af1158015610a3e573d6000803e3d6000fd5b505050505050505050505050565b60018181548110610a5957fe5b6000918252602090912001546001600160a01b0316905081565b600080610a7e612fe0565b5050506001600160a01b0316600090815260026020818152604092839020835160608101855281548082526001830154938201849052919093015460ff16151592909301919091529091565b60055481565b60065481565b600181565b61100181565b603881565b600881565b61200081565b60045481565b3361100014610b185760405162461bcd60e51b81526004016105c390613991565b60005460ff16610b3a5760405162461bcd60e51b81526004016105c390613702565b61200063f7a251d7600b610b4d846123f3565b60006040518463ffffffff1660e01b8152600401610b6d93929190613df8565b600060405180830381600087803b158015610b8757600080fd5b505af1158015610b9b573d6000803e3d6000fd5b5050505050565b60035481565b61100581565b600281565b601081565b61100881565b600581565b600b81565b6004546005549091565b3361200014610bf35760405162461bcd60e51b81526004016105c390613bd2565b60005460ff16610c155760405162461bcd60e51b81526004016105c390613702565b610c1d613003565b6000610c5e84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506124bc92505050565b915091508015610ca55781516040517f7f0956d47419b9525356e7111652b653b530ec6f5096dccc04589bc38e62996791610c9891613dd9565b60405180910390a1610b9b565b81516040517f7d45f62d17443dd4547bca8a8112c60e2385669318dc300ec61a5d2492f262e791610cd591613dd9565b60405180910390a150505b505050565b600981565b61100781565b3361100014610d115760405162461bcd60e51b81526004016105c390613991565b610d1b828261253c565b5050565b61100681565b60005460ff1681565b61200281565b61300081565b600081565b600481565b60005460ff16610d665760405162461bcd60e51b81526004016105c390613702565b3361100714610d875760405162461bcd60e51b81526004016105c390613a69565b610df284848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260148152731b5a5cd9195b59585b9bdc951a1c995cda1bdb1960621b602082015291506127139050565b15610e8d5760208114610e175760405162461bcd60e51b81526004016105c39061391d565b604080516020601f8401819004810282018101909252828152600091610e559185858083850183828082843760009201919091525061276d92505050565b905060018110158015610e69575060055481105b610e855760405162461bcd60e51b81526004016105c390613b8d565b6004556112b1565b610ef384848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600f81526e19995b1bdb9e551a1c995cda1bdb19608a1b602082015291506127139050565b15610f8f5760208114610f185760405162461bcd60e51b81526004016105c390613ab7565b604080516020601f8401819004810282018101909252828152600091610f569185858083850183828082843760009201919091525061276d92505050565b90506103e88111158015610f6b575060045481115b610f875760405162461bcd60e51b81526004016105c3906137bb565b6005556112b1565b61100384848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601881527f66696e616c697479536c617368526577617264526174696f0000000000000000602082015291506127139050565b1561109d57602081146110285760405162461bcd60e51b81526004016105c390613cfa565b604080516020601f84018190048102820181019092528281526000916110669185858083850183828082843760009201919091525061276d92505050565b9050600a81101580156110795750606481105b6110955760405162461bcd60e51b81526004016105c3906138d1565b6006556112b1565b61111184848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601881527f656e61626c654d616c6963696f7573566f7465536c6173680000000000000000602082015291506127139050565b1561118857602081146111365760405162461bcd60e51b81526004016105c3906137f0565b604080516020601f8401819004810282018101909252828152611172919084848083850183828082843760009201919091525061277292505050565b6007805460ff19169115159190911790556112b1565b6111fc84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601781527f6d616c6963696f7573566f7465536c61736853636f7065000000000000000000602082015291506127139050565b1561129957602081146112215760405162461bcd60e51b81526004016105c390613629565b604080516020601f840181900481028201810190925282815260009161125f9185858083850183828082843760009201919091525061276d92505050565b905061708081101580156112755750620d2f0081105b6112915760405162461bcd60e51b81526004016105c390613739565b6008556112b1565b60405162461bcd60e51b81526004016105c390613c6e565b7f6cdb0ac70ab7f2e2d035cca5be60d89906f2dede7648ddbd7402189c1eeed17a848484846040516112e694939291906135f7565b60405180910390a150505050565b6201518081565b600a81565b61100281565b33612000146113275760405162461bcd60e51b81526004016105c390613bd2565b60005460ff166113495760405162461bcd60e51b81526004016105c390613702565b6040517f07db600eebe2ac176be8dcebad61858c245a4961bb32ca2aa3d159b09aa0810e90600090a1505050565b3341146113965760405162461bcd60e51b81526004016105c390613c21565b60005460ff166113b85760405162461bcd60e51b81526004016105c390613702565b60035443116113d95760405162461bcd60e51b81526004016105c390613d45565b3a156113f75760405162461bcd60e51b81526004016105c390613a0c565b60405163155853f360e21b8152611000906355614fcc9061141c9084906004016135ac565b60206040518083038186803b15801561143457600080fd5b505afa158015611448573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061146c919061331f565b611475576117f1565b61147d612fe0565b506001600160a01b0381166000908152600260208181526040928390208351606081018552815481526001820154928101929092529091015460ff1615801592820192909252906114d8576020810180516001019052611531565b60016040820181905260208201819052805480820182556000919091527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180546001600160a01b0319166001600160a01b0384161790555b43815260055460208201518161154357fe5b0661171f57600060208201526040516335409f7f60e01b8152611000906335409f7f906115749085906004016135ac565b600060405180830381600087803b15801561158e57600080fd5b505af11580156115a2573d6000803e3d6000fd5b50506040516333c1892360e21b815260009250612002915063cf06248c906115ce9086906004016135ac565b60206040518083038186803b1580156115e657600080fd5b505afa1580156115fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061161e9190613215565b6001600160a01b03161461163f5761163a82826020015161253c565b61171a565b61200063f7a251d7600b611652856123f3565b60006040518463ffffffff1660e01b815260040161167293929190613df8565b600060405180830381600087803b15801561168c57600080fd5b505af192505050801561169d575060015b61171a573d8080156116cb576040519150601f19603f3d011682016040523d82523d6000602084013e6116d0565b606091505b50826001600160a01b03167fd7bc86ff5d08c8ab043edec743302aba2520e6635172a428bc956721db9e2d1c836020015183604051611710929190613d92565b60405180910390a2505b61178b565b60045481602001518161172e57fe5b0661178b576040516375abf10160e11b81526110009063eb57e202906117589085906004016135ac565b600060405180830381600087803b15801561177257600080fd5b505af1158015611786573d6000803e3d6000fd5b505050505b6001600160a01b0382166000818152600260208181526040808420865181559186015160018301558581015191909201805460ff1916911515919091179055517fddb6012116e51abf5436d956a4f0ebd927e92c576ff96d7918290c8782291e3e9190a2505b5043600355565b60005460ff1661181a5760405162461bcd60e51b81526004016105c390613702565b60075460ff1661183c5760405162461bcd60e51b81526004016105c39061369d565b6006546118495760146006555b60085461185857620151806008555b60085481516040015143910111801561187c57504360085482602001516040015101115b6118985760405162461bcd60e51b81526004016105c390613c95565b8060200151602001518160000151602001511480156118c65750806020015160600151816000015160600151145b156118e35760405162461bcd60e51b81526004016105c390613964565b8051604081015190511080156119025750602081015160408101519051105b61191e5760405162461bcd60e51b81526004016105c39061389a565b6020810151518151511080156119435750806000015160400151816020015160400151105b8061196e575080515160208201515110801561196e5750806020015160400151816000015160400151105b806119885750806020015160400151816000015160400151145b6119a45760405162461bcd60e51b81526004016105c390613784565b604080820151905163ea321e4960e01b81526110009163ea321e49916119cd91906004016135e4565b60206040518083038186803b1580156119e557600080fd5b505afa1580156119f9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a1d919061331f565b611a395760405162461bcd60e51b81526004016105c390613a3a565b611a4b8160000151826040015161279a565b8015611a645750611a648160200151826040015161279a565b611a805760405162461bcd60e51b81526004016105c39061383b565b6060806110006001600160a01b0316633b071dcc6040518163ffffffff1660e01b815260040160006040518083038186803b158015611abe57600080fd5b505afa158015611ad2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611afa919081019061325c565b9150915060005b8151811015611c3757611b2b828281518110611b1957fe5b60200260200101518560400151612972565b15611c2f576006546040516309a99b4f60e41b815260646110028031909302049190639a99b4f090611b6390339085906004016135c0565b602060405180830381600087803b158015611b7d57600080fd5b505af1158015611b91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bb591906134ca565b506110006001600160a01b03166335409f7f858481518110611bd357fe5b60200260200101516040518263ffffffff1660e01b8152600401611bf791906135ac565b600060405180830381600087803b158015611c1157600080fd5b505af1158015611c25573d6000803e3d6000fd5b5050505050611c37565b600101611b01565b506040808401519051630f5b9efd60e31b815260009161200291637adcf7e891611c63916004016135e4565b60206040518083038186803b158015611c7b57600080fd5b505afa158015611c8f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cb39190613215565b6001600160a01b031614611d21576040808401519051630e9fbf5160e01b815261200291630e9fbf5191611cea91906004016135e4565b600060405180830381600087803b158015611d0457600080fd5b505af1158015611d18573d6000803e3d6000fd5b50505050610ce0565b6000611d32846040015160006129d6565b90506120006001600160a01b031663f7a251d7600b611d5487604001516129f2565b60006040518463ffffffff1660e01b8152600401611d7493929190613df8565b600060405180830381600087803b158015611d8e57600080fd5b505af1925050508015611d9f575060015b611e11573d808015611dcd576040519150601f19603f3d011682016040523d82523d6000602084013e611dd2565b606091505b50817fd58d1183100bd0932c0588f31c4205d6bc6168909765a96c41adbed3115f362882604051611e0391906135e4565b60405180910390a250611e3d565b60405181907f7b78aadacff901d8b63d0dba4f86283d4db8aef27f9ed70413dd860f1c9532b690600090a25b50505050565b601481565b61100381565b61200481565b60005460ff1615611e775760405162461bcd60e51b81526004016105c390613af9565b60056004819055600a90556000805460ff19166001179055565b60085481565b61100081565b600381565b3361100014611ec35760405162461bcd60e51b81526004016105c390613991565b60005460ff16611ee55760405162461bcd60e51b81526004016105c390613702565b600154611ef1576122e9565b600154600090600019015b8082116122bd576000805b8284101561202057611f17612fe0565b6002600060018781548110611f2857fe5b60009182526020808320909101546001600160a01b0316835282810193909352604091820190208151606081018352815481526001820154938101939093526002015460ff16151590820152600554909150600490048160200151111561200a57600460055481611f9557fe5b04816020015103816020018181525050806002600060018881548110611fb757fe5b6000918252602080832091909101546001600160a01b0316835282810193909352604091820190208351815591830151600183015591909101516002909101805460ff1916911515919091179055612014565b6001925050612020565b50836001019350611f07565b8284116121b75761202f612fe0565b600260006001868154811061204057fe5b60009182526020808320909101546001600160a01b0316835282810193909352604091820190208151606081018352815481526001820154938101939093526002015460ff161515908201526005549091506004900481602001511115612128576004600554816120ad57fe5b048160200151038160200181815250508060026000600187815481106120cf57fe5b6000918252602080832091909101546001600160a01b03168352828101939093526040918201902083518155918301516001808401919091559201516002909101805460ff191691151591909117905591506121b79050565b600260006001868154811061213957fe5b60009182526020808320909101546001600160a01b031683528201929092526040018120818155600181810192909255600201805460ff1916905580548061217d57fe5b600082815260209020810160001990810180546001600160a01b0319169055019055836121aa57506121b7565b5060001990920191612020565b8180156121c15750805b156122a05760026000600186815481106121d757fe5b60009182526020808320909101546001600160a01b031683528201929092526040018120818155600181810192909255600201805460ff1916905580548490811061221e57fe5b600091825260209091200154600180546001600160a01b03909216918690811061224457fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600180548061227d57fe5b600082815260209020810160001990810180546001600160a01b03191690550190555b826122ac5750506122bd565b505060019091019060001901611efc565b6040517fcfdb3b6ccaeccbdc68be3c59c840e3b3c90f0a7c491f5fff1cf56cfda200dd9c90600090a150505b565b61100481565b60606123046122ff83612a2d565b61230c565b90505b919050565b60608151600114801561233e5750607f60f81b8260008151811061232c57fe5b01602001516001600160f81b03191611155b1561234a575080612307565b61230461235c8351608060ff16612b13565b83612be5565b60608151600014156123835750604080516000815260208101909152612307565b60608260008151811061239257fe5b602002602001015190506000600190505b83518110156123d3576123c9828583815181106123bc57fe5b6020026020010151612be5565b91506001016123a3565b506123ec6123e6825160c060ff16612b13565b82612be5565b9392505050565b60408051600480825260a08201909252606091829190816020015b606081526020019060019003908161240e579050509050612437836001600160a01b0316612c62565b8160008151811061244457fe5b6020026020010181905250612458436122f1565b8160018151811061246557fe5b602090810291909101015261247a60386122f1565b8160028151811061248757fe5b602002602001018190525061249b426122f1565b816003815181106124a857fe5b60200260200101819052506123ec81612362565b6124c4613003565b60006124ce613003565b6124d6613015565b6124e76124e286612c85565b612caa565b90506000805b6124f683612cf4565b1561252f57806125225761251161250c84612d15565b612d63565b63ffffffff16845260019150612527565b61252f565b6001016124ed565b5091935090915050915091565b6040516375cc7d8960e01b8152612002906375cc7d89906125619085906004016135ac565b600060405180830381600087803b15801561257b57600080fd5b505af192505050801561258c575060015b610d1b576040516000815260443d10156125a857506000612645565b60046000803e60005160e01c6308c379a081146125c9576000915050612645565b60043d036004833e81513d602482011167ffffffffffffffff821117156125f557600092505050612645565b808301805167ffffffffffffffff811115612617576000945050505050612645565b8060208301013d860181111561263557600095505050505050612645565b601f01601f191660405250925050505b806126505750612699565b826001600160a01b03167fd7bc86ff5d08c8ab043edec743302aba2520e6635172a428bc956721db9e2d1c838360405161268b929190613d92565b60405180910390a25061270e565b3d8080156126c3576040519150601f19603f3d011682016040523d82523d6000602084013e6126c8565b606091505b50826001600160a01b03167fd7bc86ff5d08c8ab043edec743302aba2520e6635172a428bc956721db9e2d1c8383604051612704929190613d92565b60405180910390a2505b610d1b565b6000816040516020016127269190613590565b604051602081830303815290604052805190602001208360405160200161274d9190613590565b604051602081830303815290604052805190602001201490505b92915050565b015190565b8082015160009060ff81161561278c576001915081612792565b60009150815b505092915050565b60408051600480825260a0820190925260009160609190816020015b60608152602001906001900390816127b65750506040805160208082528183019092529192506060919080820181803683370190505090506127fb85600001516122f1565b8260008151811061280857fe5b60200260200101819052506128236020866020015183612de5565b61282c8161230c565b8260018151811061283957fe5b602002602001018190525061285185604001516122f1565b8260028151811061285e57fe5b60200260200101819052506128796020866060015183612de5565b6128828161230c565b8260038151811061288f57fe5b60200260200101819052506128b560206128a884612362565b8051906020012083612de5565b6040805160b080825260e082019092526060916020820181803683370190505090506128e5818360006020612df5565b6128f781876080015160206060612df5565b612905818660806030612df5565b604080516001808252818301909252606091602082018180368337019050509050815160016020830182602086016066600019fa61294257600080fd5b506001612950826000612e48565b60ff1614612965576000945050505050612767565b5060019695505050505050565b81518151600091600191811480831461298e57600092506129cc565b600160208701838101602088015b6002848385100114156129c75780518351146129bb5760009650600093505b6020928301920161299c565b505050505b5090949350505050565b600081602001835110156129e957600080fd5b50016020015190565b60408051600480825260a08201909252606091829190816020015b6060815260200190600190039081612a0d5790505090506124378361230c565b604080516020808252818301909252606091829190602082018180368337505050602081018490529050600067ffffffffffffffff198416612a7157506018612a95565b6fffffffffffffffffffffffffffffffff198416612a9157506010612a95565b5060005b6020811015612acb57818181518110612aaa57fe5b01602001516001600160f81b03191615612ac357612acb565b600101612a95565b60008160200390506060816040519080825280601f01601f191660200182016040528015612b00576020820181803683370190505b5080830196909652508452509192915050565b6060680100000000000000008310612b3d5760405162461bcd60e51b81526004016105c390613872565b60408051600180825281830190925260609160208201818036833701905050905060378411612b975782840160f81b81600081518110612b7957fe5b60200101906001600160f81b031916908160001a9053509050612767565b6060612ba285612a2d565b90508381510160370160f81b82600081518110612bbb57fe5b60200101906001600160f81b031916908160001a905350612bdc8282612be5565b95945050505050565b6060806040519050835180825260208201818101602087015b81831015612c16578051835260209283019201612bfe565b50855184518101855292509050808201602086015b81831015612c43578051835260209283019201612c2b565b508651929092011591909101601f01601f191660405250905092915050565b60408051600560a21b83186014820152603481019091526060906123ec8161230c565b612c8d613035565b506040805180820190915281518152602082810190820152919050565b612cb2613015565b612cbb82612e64565b612cc457600080fd5b6000612cd38360200151612e9e565b60208085015160408051808201909152868152920190820152915050919050565b6000612cfe613035565b505080518051602091820151919092015191011190565b612d1d613035565b612d2682612cf4565b612d2f57600080fd5b60208201516000612d3f82612f01565b80830160209586015260408051808201909152908152938401919091525090919050565b805160009015801590612d7857508151602110155b612d8157600080fd5b6000612d908360200151612e9e565b90508083600001511015612db65760405162461bcd60e51b81526004016105c390613b56565b825160208085015183018051928490039291831015612ddc57826020036101000a820491505b50949350505050565b9091018181526020918201910152565b60005b81811015610b9b57838181518110612e0c57fe5b602001015160f81c60f81b858480600101955081518110612e2957fe5b60200101906001600160f81b031916908160001a905350600101612df8565b60008160010183511015612e5b57600080fd5b50016001015190565b8051600090612e7557506000612307565b6020820151805160001a9060c0821015612e9457600092505050612307565b5060019392505050565b8051600090811a6080811015612eb8576000915050612307565b60b8811080612ed3575060c08110801590612ed3575060f881105b15612ee2576001915050612307565b60c0811015612ef65760b519019050612307565b60f519019050612307565b80516000908190811a6080811015612f1c5760019150612fd9565b60b8811015612f3157607e1981019150612fd9565b60c0811015612f8257600060b78203600186019550806020036101000a865104915060018101820193505080831015612f7c5760405162461bcd60e51b81526004016105c3906139e1565b50612fd9565b60f8811015612f975760be1981019150612fd9565b600060f78203600186019550806020036101000a8651049150600181018201935050808310156127925760405162461bcd60e51b81526004016105c3906139e1565b5092915050565b604051806060016040528060008152602001600081526020016000151581525090565b60408051602081019091526000815290565b6040518060400160405280613028613035565b8152602001600081525090565b604051806040016040528060008152602001600081525090565b600082601f83011261305f578081fd5b815161307261306d82613e4b565b613e24565b818152915060208083019084810160005b848110156130e8578151870188603f82011261309e57600080fd5b838101516130ae61306d82613e6b565b81815260408b818486010111156130c457600080fd5b6130d383888401838701613e8f565b50865250509282019290820190600101613083565b505050505092915050565b60008083601f840112613104578182fd5b50813567ffffffffffffffff81111561311b578182fd5b60208301915083602082850101111561313357600080fd5b9250929050565b600082601f83011261314a578081fd5b813561315861306d82613e6b565b915080825283602082850101111561316f57600080fd5b8060208401602084013760009082016020015292915050565b600060a08284031215613199578081fd5b6131a360a0613e24565b905081358152602082013560208201526040820135604082015260608201356060820152608082013567ffffffffffffffff8111156131e157600080fd5b6131ed8482850161313a565b60808301525092915050565b60006020828403121561320a578081fd5b81356123ec81613ebb565b600060208284031215613226578081fd5b81516123ec81613ebb565b60008060408385031215613243578081fd5b823561324e81613ebb565b946020939093013593505050565b6000806040838503121561326e578182fd5b825167ffffffffffffffff80821115613285578384fd5b81850186601f820112613296578485fd5b805192506132a661306d84613e4b565b80848252602080830192508084018a8283890287010111156132c6578889fd5b8894505b868510156132f15780516132dd81613ebb565b8452600194909401939281019281016132ca565b508801519096509350505080821115613308578283fd5b506133158582860161304f565b9150509250929050565b600060208284031215613330578081fd5b815180151581146123ec578182fd5b60008060408385031215613351578182fd5b823567ffffffffffffffff80821115613368578384fd5b6133748683870161313a565b93506020850135915080821115613389578283fd5b506133158582860161313a565b600080600080604085870312156133ab578182fd5b843567ffffffffffffffff808211156133c2578384fd5b6133ce888389016130f3565b909650945060208701359150808211156133e6578384fd5b506133f3878288016130f3565b95989497509550505050565b600060208284031215613410578081fd5b813567ffffffffffffffff80821115613427578283fd5b81840160608187031215613439578384fd5b6134436060613e24565b9250803582811115613453578485fd5b61345f87828401613188565b845250602081013582811115613473578485fd5b61347f87828401613188565b602085015250604081013582811115613496578485fd5b6134a28782840161313a565b6040850152509195945050505050565b6000602082840312156134c3578081fd5b5035919050565b6000602082840312156134db578081fd5b5051919050565b6000806000604084860312156134f6578081fd5b833560ff81168114613506578182fd5b9250602084013567ffffffffffffffff811115613521578182fd5b61352d868287016130f3565b9497909650939450505050565b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b6000815180845261357c816020860160208601613e8f565b601f01601f19169290920160200192915050565b600082516135a2818460208701613e8f565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b901515815260200190565b6000602082526123ec6020830184613564565b60006040825261360b60408301868861353a565b828103602084015261361e81858761353a565b979650505050505050565b6020808252602a908201527f6c656e677468206f66206d616c6963696f7573566f7465536c61736853636f706040820152690ca40dad2e6dac2e8c6d60b31b606082015260800190565b60208082526010908201526f195d9a59195b98d9481d1bdbc81bdb1960821b604082015260600190565b6020808252818101527f6d616c6963696f757320766f746520736c617368206e6f7420656e61626c6564604082015260600190565b6020808252601690820152751d985b1a59185d1bdc881b9bdd081b5a59dc985d195960521b604082015260600190565b60208082526019908201527f74686520636f6e7472616374206e6f7420696e69742079657400000000000000604082015260600190565b6020808252602b908201527f746865206d616c6963696f757320766f746520736c6173682073636f7065206f60408201526a7574206f662072616e676560a81b606082015260800190565b6020808252601a908201527f6e6f2076696f6c6174696f6e206f6620766f74652072756c6573000000000000604082015260600190565b6020808252818101527f7468652066656c6f6e795468726573686f6c64206f7574206f662072616e6765604082015260600190565b6020808252602b908201527f6c656e677468206f6620656e61626c654d616c6963696f7573566f7465536c6160408201526a0e6d040dad2e6dac2e8c6d60ab1b606082015260800190565b60208082526017908201527f766572696679207369676e6174757265206661696c6564000000000000000000604082015260600190565b6020808252600e908201526d696e70757420746f6f206c6f6e6760901b604082015260600190565b60208082526019908201527f7372634e756d20626967676572207468616e207461724e756d00000000000000604082015260600190565b6020808252602c908201527f7468652066696e616c69747920736c6173682072657761726420726174696f2060408201526b6f7574206f662072616e676560a01b606082015260800190565b60208082526027908201527f6c656e677468206f66206d697364656d65616e6f725468726573686f6c64206d6040820152660d2e6dac2e8c6d60cb1b606082015260800190565b60208082526013908201527274776f206964656e746963616c20766f74657360681b604082015260600190565b60208082526030908201527f746865206d6573736167652073656e646572206d7573742062652076616c696460408201526f185d1bdc94d95d0818dbdb9d1c9858dd60821b606082015260800190565b6020808252601190820152706164646974696f6e206f766572666c6f7760781b604082015260600190565b6020808252601490820152736761737072696365206973206e6f74207a65726f60601b604082015260600190565b6020808252601590820152741d9bdd195059191c881a5cc81b9bdd08199bdd5b99605a1b604082015260600190565b6020808252602e908201527f746865206d6573736167652073656e646572206d75737420626520676f76657260408201526d1b985b98d94818dbdb9d1c9858dd60921b606082015260800190565b60208082526022908201527f6c656e677468206f662066656c6f6e795468726573686f6c64206d69736d61746040820152610c6d60f31b606082015260800190565b60208082526019908201527f74686520636f6e747261637420616c726561647920696e697400000000000000604082015260600190565b6020808252600c908201526b32b6b83a3c903432b0b232b960a11b604082015260600190565b6020808252601a908201527f6c656e677468206973206c657373207468616e206f6666736574000000000000604082015260600190565b60208082526025908201527f746865206d697364656d65616e6f725468726573686f6c64206f7574206f662060408201526472616e676560d81b606082015260800190565b6020808252602f908201527f746865206d6573736167652073656e646572206d7573742062652063726f737360408201526e0818da185a5b8818dbdb9d1c9858dd608a1b606082015260800190565b6020808252602d908201527f746865206d6573736167652073656e646572206d75737420626520746865206260408201526c3637b1b590383937b23ab1b2b960991b606082015260800190565b6020808252600d908201526c756e6b6e6f776e20706172616d60981b604082015260600190565b6020808252601490820152731d185c99d95d08189b1bd8dac81d1bdbc81bdb1960621b604082015260600190565b6020808252601e908201527f7265636569766520756e65787065637465642073796e207061636b6167650000604082015260600190565b6020808252602b908201527f6c656e677468206f662066696e616c697479536c61736852657761726452617460408201526a0d2de40dad2e6dac2e8c6d60ab1b606082015260800190565b6020808252818101527f63616e206e6f7420736c61736820747769636520696e206f6e6520626c6f636b604082015260600190565b61ffff91909116815260200190565b90815260200190565b600083825260406020830152613dab6040830184613564565b949350505050565b918252602082015260400190565b92835260208301919091521515604082015260600190565b63ffffffff91909116815260200190565b60ff91909116815260200190565b600060ff8516825260606020830152613e146060830185613564565b9050826040830152949350505050565b60405181810167ffffffffffffffff81118282101715613e4357600080fd5b604052919050565b600067ffffffffffffffff821115613e61578081fd5b5060209081020190565b600067ffffffffffffffff821115613e81578081fd5b50601f01601f191660200190565b60005b83811015613eaa578181015183820152602001613e92565b83811115611e3d5750506000910152565b6001600160a01b0381168114613ed057600080fd5b5056fea164736f6c6343000604000a", + }, + { + ContractAddr: common.HexToAddress(StakingContract), + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/cfc0bd1127186a917ddc38fd38d22903034d3f0b", + Code: "6080604052600436106103a65760003560e01c8063718a8aa8116101e7578063b88a802f1161010d578063dc927faf116100a0578063f9a2bbc71161006f578063f9a2bbc714610ca0578063fa03f79714610cb5578063fc3e590814610692578063fd6a687914610cca576103ad565b8063dc927faf14610c1c578063df8079e914610c31578063edc1a5b014610c46578063f45fd80b14610c5b576103ad565b8063c81b1662116100dc578063c81b166214610b47578063c8509d8114610b5c578063d61b9b9314610be1578063d7ecfcb61461083a576103ad565b8063b88a802f14610acd578063baaafd3b14610ae2578063bf8546ca14610af7578063c2117d8214610b32576103ad565b80639dc0926211610185578063aad5606311610154578063aad56063146109c3578063ab51bb96146109d8578063ac431751146109ed578063b14315df14610ab8576103ad565b80639dc092621461095b578063a1a11bf514610970578063a78abc1614610985578063aa82dce1146109ae576103ad565b80637942fd05116101c15780637942fd05146108ac578063831d65d1146108c157806392b888a41461063e57806396713da914610946576103ad565b8063718a8aa81461084f57806375aca5931461086457806375d47a0a14610897576103ad565b8063413d9c3a116102cc5780635d17c8bd1161026a5780636bd8f804116102395780636bd8f804146107bc5780636e47b482146107f25780636fb7f7eb1461080757806370fd5bad1461083a576103ad565b80635d17c8bd146107685780635d499b1b1461077d57806362b171d21461079257806369b635b6146107a7576103ad565b80634bf6c882116102a65780634bf6c882146106fd5780634d99dd161461071257806351e806721461073e578063552aaf9314610753576103ad565b8063413d9c3a146106a757806343756e5c146106bc578063493279b1146106d1576103ad565b806311fe9ec611610344578063333ad3e711610313578063333ad3e71461066857806334c433541461067d5780633dffc3871461063e5780633fdfa7e414610692576103ad565b806311fe9ec6146105e0578063151817e31461061357806317c9efb01461063e5780632fdeb11114610653576103ad565b80630bee7a67116103805780630bee7a67146104725780630c795715146104a05780630e2374a5146104b55780631182b875146104e6576103ad565b8063026e402b146103b257806302985992146103e0578063047636d114610407576103ad565b366103ad57005b600080fd5b6103de600480360360408110156103c857600080fd5b506001600160a01b038135169060200135610cdf565b005b3480156103ec57600080fd5b506103f5610d1c565b60408051918252519081900360200190f35b34801561041357600080fd5b5061043a6004803603602081101561042a57600080fd5b50356001600160a01b0316610d22565b6040518082606080838360005b8381101561045f578181015183820152602001610447565b5050505090500191505060405180910390f35b34801561047e57600080fd5b50610487610d76565b6040805163ffffffff9092168252519081900360200190f35b3480156104ac57600080fd5b506103f5610d7b565b3480156104c157600080fd5b506104ca610d81565b604080516001600160a01b039092168252519081900360200190f35b3480156104f257600080fd5b5061056b6004803603604081101561050957600080fd5b60ff8235169190810190604081016020820135600160201b81111561052d57600080fd5b82018360208201111561053f57600080fd5b803590602001918460018302840111600160201b8311171561056057600080fd5b509092509050610d87565b6040805160208082528351818301528351919283929083019185019080838360005b838110156105a557818101518382015260200161058d565b50505050905090810190601f1680156105d25780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156105ec57600080fd5b506103f56004803603602081101561060357600080fd5b50356001600160a01b0316610f43565b34801561061f57600080fd5b50610628610f5e565b6040805160ff9092168252519081900360200190f35b34801561064a57600080fd5b50610628610f63565b34801561065f57600080fd5b506103f5610f68565b34801561067457600080fd5b50610487610f6e565b34801561068957600080fd5b506103f5610f73565b34801561069e57600080fd5b50610628610f7e565b3480156106b357600080fd5b506103f5610f83565b3480156106c857600080fd5b506104ca610f8a565b3480156106dd57600080fd5b506106e6610f90565b6040805161ffff9092168252519081900360200190f35b34801561070957600080fd5b50610628610f95565b6103de6004803603604081101561072857600080fd5b506001600160a01b038135169060200135610f9a565b34801561074a57600080fd5b506104ca6115c7565b34801561075f57600080fd5b506106286115cd565b34801561077457600080fd5b506103f56115d2565b34801561078957600080fd5b506103f56115d8565b34801561079e57600080fd5b506103f56115e1565b3480156107b357600080fd5b506103f5611781565b6103de600480360360608110156107d257600080fd5b506001600160a01b03813581169160208101359091169060400135610cdf565b3480156107fe57600080fd5b506104ca611787565b34801561081357600080fd5b506103f56004803603602081101561082a57600080fd5b50356001600160a01b031661178d565b34801561084657600080fd5b506106286117a8565b34801561085b57600080fd5b506106286117ad565b34801561087057600080fd5b506103f56004803603602081101561088757600080fd5b50356001600160a01b03166117b2565b3480156108a357600080fd5b506104ca6117cd565b3480156108b857600080fd5b506106286117d3565b3480156108cd57600080fd5b506103de600480360360408110156108e457600080fd5b60ff8235169190810190604081016020820135600160201b81111561090857600080fd5b82018360208201111561091a57600080fd5b803590602001918460018302840111600160201b8311171561093b57600080fd5b5090925090506117d8565b34801561095257600080fd5b50610628611aa0565b34801561096757600080fd5b506104ca611aa5565b34801561097c57600080fd5b506104ca611aab565b34801561099157600080fd5b5061099a611ab1565b604080519115158252519081900360200190f35b3480156109ba57600080fd5b506104ca611aba565b3480156109cf57600080fd5b506104ca611ac0565b3480156109e457600080fd5b506104876115cd565b3480156109f957600080fd5b506103de60048036036040811015610a1057600080fd5b810190602081018135600160201b811115610a2a57600080fd5b820183602082011115610a3c57600080fd5b803590602001918460018302840111600160201b83111715610a5d57600080fd5b919390929091602081019035600160201b811115610a7a57600080fd5b820183602082011115610a8c57600080fd5b803590602001918460018302840111600160201b83111715610aad57600080fd5b509092509050611ac6565b348015610ac457600080fd5b50610628612258565b348015610ad957600080fd5b506103f561225d565b348015610aee57600080fd5b506103f56123fa565b348015610b0357600080fd5b506103f560048036036040811015610b1a57600080fd5b506001600160a01b0381358116916020013516612405565b348015610b3e57600080fd5b506103f5612432565b348015610b5357600080fd5b506104ca612438565b348015610b6857600080fd5b506103de60048036036040811015610b7f57600080fd5b60ff8235169190810190604081016020820135600160201b811115610ba357600080fd5b820183602082011115610bb557600080fd5b803590602001918460018302840111600160201b83111715610bd657600080fd5b50909250905061243e565b348015610bed57600080fd5b506103f560048036036040811015610c0457600080fd5b506001600160a01b0381358116916020013516612661565b348015610c2857600080fd5b506104ca61268c565b348015610c3d57600080fd5b506104ca612692565b348015610c5257600080fd5b506103f5612698565b348015610c6757600080fd5b506103f560048036036060811015610c7e57600080fd5b506001600160a01b0381358116916020810135821691604090910135166126a5565b348015610cac57600080fd5b506104ca6126da565b348015610cc157600080fd5b506103f56126e0565b348015610cd657600080fd5b506104ca6126e6565b6040805162461bcd60e51b815260206004820152600d60248201526c1b9bdd081cdd5c1c1bdc9d1959609a1b604482015290519081900360640190fd5b60035481565b610d2a614621565b610d32614621565b6001600160a01b0383166000818152600b60209081526040808320548552838352600c82528083205485830152928252600d9052819020549082015290505b919050565b606481565b6108fc81565b61200181565b60603361200014610dc95760405162461bcd60e51b815260040180806020018281038252602f815260200180614804602f913960400191505060405180910390fd5b60005460ff16610e0c576638d7ea4c6800006001908155662386f26fc1000060025568056bc75e2d631000006003556108fc6011556000805460ff191690911790555b610e1461463f565b610e5b610e5685858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506126ec92505050565b612711565b90506000610e70610e6b8361275b565b6127a9565b90506000606060ff831660041415610e9557610e8b84612860565b9092509050610eec565b60ff831660051415610eaa57610e8b84612a40565b6040805162461bcd60e51b8152602060048201526012602482015271756e6b6e6f776e206576656e74207479706560701b604482015290519081900360640190fd5b63ffffffff821615610f38576040805163ffffffff84168152905160ff8516917f391d6e5ea6ab6c49b9a0abb1782cae5def8d711f973b00c729658c0b2a80b31b919081900360200190a25b979650505050505050565b6001600160a01b031660009081526006602052604090205490565b600581565b600181565b60015481565b606581565b662386f26fc1000081565b600381565b620a8c0081565b61100181565b603881565b600881565b60105460ff1660021415610fe6576040805162461bcd60e51b815260206004820152600e60248201526d4e6f2072652d656e7472616e637960901b604482015290519081900360640190fd5b6010805460ff19166002179055806402540be400340615801561100e57506402540be4008106155b61105f576040805162461bcd60e51b815260206004820152601c60248201527f707265636973696f6e206c6f737320696e20636f6e76657273696f6e00000000604482015290519081900360640190fd5b60005460ff166110a2576638d7ea4c6800006001908155662386f26fc1000060025568056bc75e2d631000006003556108fc6011556000805460ff191690911790555b6001543410156110f0576040805162461bcd60e51b81526020600482015260146024820152736e6f7420656e6f7567682072656c61792066656560601b604482015290519081900360640190fd5b6003548210156111ab573360009081526005602090815260408083206001600160a01b03871684529091529020548214611162576040805162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a5908185b5bdd5b9d60921b604482015290519081900360640190fd5b60025482116111ab576040805162461bcd60e51b815260206004820152601060248201526f6e6f7420656e6f7567682066756e647360801b604482015290519081900360640190fd5b3360009081526007602090815260408083206001600160a01b0387168452909152902054421015611223576040805162461bcd60e51b815260206004820152601a60248201527f70656e64696e6720756e64656c65676174696f6e206578697374000000000000604482015290519081900360640190fd5b604080518082018252601081526f6e6f7420656e6f7567682066756e647360801b602080830191909152336000908152600582528381206001600160a01b03881682529091529182205461127e91859063ffffffff612c5c16565b905080156112c65760025481116112c65760405162461bcd60e51b81526004018080602001828103825260258152602001806147df6025913960400191505060405180910390fd5b60006112dd846402540be40063ffffffff612cf316565b60025490915034906000906112f990839063ffffffff612d3c16565b6040805160038082526080820190925291925060609190816020015b606081526020019060019003908161131557905050905061133533612d7e565b8160008151811061134257fe5b602002602001018190525061135f886001600160a01b0316612d7e565b8160018151811061136c57fe5b602002602001018190525061138084612da1565b8160028151811061138d57fe5b602002602001018190525060606113ad60026113a884612db4565b612e3e565b8051602080830191909120600f80546000908152600a845260408082209390935581546001908101909255338152600c90935291208054909101905590506113fe42620a8c0063ffffffff612ec416565b3360009081526007602090815260408083206001600160a01b038e16845290915290205561200063f7a251d7601083611442876402540be40063ffffffff612cf316565b6040518463ffffffff1660e01b8152600401808460ff1660ff16815260200180602001838152602001828103825284818151815260200191508051906020019080838360005b838110156114a0578181015183820152602001611488565b50505050905090810190601f1680156114cd5780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b1580156114ee57600080fd5b505af1158015611502573d6000803e3d6000fd5b5050604051611004925085156108fc02915085906000818181858888f19350505050158015611535573d6000803e3d6000fd5b506002546040516110029180156108fc02916000818181858888f19350505050158015611566573d6000803e3d6000fd5b50604080518981526020810185905281516001600160a01b038c169233927fdf0b6ac27f3f3bb31cee3dab0f4fe40cc19c6a3f8daaec52e06b261e58a12519929081900390910190a350506010805460ff1916600117905550505050505050565b61200081565b600081565b60025481565b6402540be40081565b60105460009060ff1660021415611630576040805162461bcd60e51b815260206004820152600e60248201526d4e6f2072652d656e7472616e637960901b604482015290519081900360640190fd5b506010805460ff191660021790553360009081526008602052604090205480611697576040805162461bcd60e51b81526020600482015260146024820152736e6f20756e64656c6567617465642066756e647360601b604482015290519081900360640190fd5b336000818152600860205260408082208290556011549051919291849084818181858888f193505050503d80600081146116ed576040519150601f19603f3d011682016040523d82523d6000602084013e6116f2565b606091505b505090508061173a576040805162461bcd60e51b815260206004820152600f60248201526e1d1c985b9cd9995c8819985a5b1959608a1b604482015290519081900360640190fd5b60408051838152905133917fc712d133b8d448221aaed2198ed1f0db6dfc860fb01bc3a630916fe6cbef946f919081900360200190a2506010805460ff1916600117905590565b60035490565b61100581565b6001600160a01b031660009081526004602052604090205490565b600281565b601081565b6001600160a01b031660009081526008602052604090205490565b61100881565b600b81565b33612000146118185760405162461bcd60e51b815260040180806020018281038252602f815260200180614804602f913960400191505060405180910390fd5b60005460ff1661185b576638d7ea4c6800006001908155662386f26fc1000060025568056bc75e2d631000006003556108fc6011556000805460ff191690911790555b61186361463f565b6118a5610e5684848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506126ec92505050565b905060008060606000805b6118b986612f1e565b1561192457806118d6576118cf610e6b8761275b565b945061191c565b80600114156118f2576118eb610e6b8761275b565b935061191c565b80600214156119175761190c6119078761275b565b612f3f565b92506001915061191c565b611924565b6001016118b0565b8161196a576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b61197383612faf565b6119b6576040805162461bcd60e51b815260206004820152600f60248201526e0eee4dedcce40e0c2c6d640d0c2e6d608b1b604482015290519081900360640190fd5b6119c2610e56846126ec565b955060006119d2610e6b8861275b565b90506119dc61463f565b6119e588612f1e565b15611a0857611a01610e566119fc6119078b61275b565b6126ec565b9050611a49565b6040805162461bcd60e51b8152602060048201526011602482015270656d7074792061636b207061636b61676560781b604482015290519081900360640190fd5b60ff821660011415611a6557611a60818888613003565b611a93565b60ff821660021415611a7c57611a608188886133ba565b60ff821660031415610eaa57611a60818888613687565b5050505050505050505050565b600981565b61100781565b61100681565b60005460ff1681565b61200281565b61300081565b60005460ff16611b1d576040805162461bcd60e51b815260206004820152601960248201527f74686520636f6e7472616374206e6f7420696e69742079657400000000000000604482015290519081900360640190fd5b3361100714611b5d5760405162461bcd60e51b815260040180806020018281038252602e815260200180614755602e913960400191505060405180910390fd5b611bbe84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600a81526972656c6179657246656560b01b602082015291506139ec9050565b15611d245760208114611c18576040805162461bcd60e51b815260206004820152601d60248201527f6c656e677468206f662072656c61796572466565206d69736d61746368000000604482015290519081900360640190fd5b604080516020601f8401819004810282018101909252828152600091611c5691858580838501838280828437600092019190915250613ad392505050565b90506003548110611c985760405162461bcd60e51b815260040180806020018281038252602e815260200180614783602e913960400191505060405180910390fd5b6002548111611cd85760405162461bcd60e51b815260040180806020018281038252602e8152602001806147b1602e913960400191505060405180910390fd5b6402540be400810615611d1c5760405162461bcd60e51b815260040180806020018281038252602c815260200180614729602c913960400191505060405180910390fd5b6001556121c6565b611d8884848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600d81526c62534352656c6179657246656560981b602082015291506139ec9050565b15611eea5760208114611de2576040805162461bcd60e51b815260206004820181905260248201527f6c656e677468206f662062534352656c61796572466565206d69736d61746368604482015290519081900360640190fd5b604080516020601f8401819004810282018101909252828152600091611e2091858580838501838280828437600092019190915250613ad392505050565b905080611e5e5760405162461bcd60e51b81526004018080602001828103825260228152602001806148336022913960400191505060405180910390fd5b6001548110611e9e5760405162461bcd60e51b815260040180806020018281038252602e8152602001806146a9602e913960400191505060405180910390fd5b6402540be400810615611ee25760405162461bcd60e51b815260040180806020018281038252602f81526020018061467a602f913960400191505060405180910390fd5b6002556121c6565b611f4e84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600d81526c36b4b72232b632b3b0ba34b7b760991b602082015291506139ec9050565b156120305760208114611fa8576040805162461bcd60e51b815260206004820181905260248201527f6c656e677468206f66206d696e44656c65676174696f6e206d69736d61746368604482015290519081900360640190fd5b604080516020601f8401819004810282018101909252828152600091611fe691858580838501838280828437600092019190915250613ad392505050565b905060015481116120285760405162461bcd60e51b81526004018080602001828103825260318152602001806146d76031913960400191505060405180910390fd5b6003556121c6565b61209284848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600b81526a7472616e7366657247617360a81b602082015291506139ec9050565b1561218957602081146120ec576040805162461bcd60e51b815260206004820152601e60248201527f6c656e677468206f66207472616e73666572476173206d69736d617463680000604482015290519081900360640190fd5b604080516020601f840181900481028201810190925282815260009161212a91858580838501838280828437600092019190915250613ad392505050565b905060008111612181576040805162461bcd60e51b815260206004820152601e60248201527f746865207472616e736665724761732063616e6e6f74206265207a65726f0000604482015290519081900360640190fd5b6011556121c6565b6040805162461bcd60e51b815260206004820152600d60248201526c756e6b6e6f776e20706172616d60981b604482015290519081900360640190fd5b7f6cdb0ac70ab7f2e2d035cca5be60d89906f2dede7648ddbd7402189c1eeed17a848484846040518080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600083820152604051601f909101601f19169092018290039850909650505050505050a150505050565b600481565b60105460009060ff16600214156122ac576040805162461bcd60e51b815260206004820152600e60248201526d4e6f2072652d656e7472616e637960901b604482015290519081900360640190fd5b506010805460ff191660021790553360009081526006602052604090205480612310576040805162461bcd60e51b81526020600482015260116024820152701b9bc81c195b991a5b99c81c995dd85c99607a1b604482015290519081900360640190fd5b336000818152600660205260408082208290556011549051919291849084818181858888f193505050503d8060008114612366576040519150601f19603f3d011682016040523d82523d6000602084013e61236b565b606091505b50509050806123b3576040805162461bcd60e51b815260206004820152600f60248201526e1d1c985b9cd9995c8819985a5b1959608a1b604482015290519081900360640190fd5b60408051838152905133917f83b78188b13346b2ffb484da70d42ee27de7fbf9f2bd8045269e10ed643ccd76919081900360200190a2506010805460ff1916600117905590565b6638d7ea4c68000081565b6001600160a01b038083166000908152600760209081526040808320938516835292905220545b92915050565b60015490565b61100281565b336120001461247e5760405162461bcd60e51b815260040180806020018281038252602f815260200180614804602f913960400191505060405180910390fd5b60005460ff166124c1576638d7ea4c6800006001908155662386f26fc1000060025568056bc75e2d631000006003556108fc6011556000805460ff191690911790555b61250082828080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612faf92505050565b612543576040805162461bcd60e51b815260206004820152600f60248201526e0eee4dedcce40e0c2c6d640d0c2e6d608b1b604482015290519081900360640190fd5b61254b61463f565b61258d610e5684848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506126ec92505050565b9050600061259d610e6b8361275b565b90506125a761463f565b6125b083612f1e565b156125ce576125c7610e566119fc6119078661275b565b9050612614565b6040805162461bcd60e51b8152602060048201526016602482015275656d707479206661696c2061636b207061636b61676560501b604482015290519081900360640190fd5b60ff82166001141561262e5761262981613ad8565b612658565b60ff8216600214156126435761262981613cf2565b60ff821660031415610eaa5761262981613e1c565b5050505b505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b61100381565b61200481565b68056bc75e2d6310000081565b6001600160a01b0392831660009081526009602090815260408083209486168352938152838220929094168152925290205490565b61100081565b60115481565b61100481565b6126f461465f565b506040805180820190915281518152602082810190820152919050565b61271961463f565b61272282613f81565b61272b57600080fd5b600061273a8360200151613fbb565b60208085015160408051808201909152868152920190820152915050919050565b61276361465f565b61276c82612f1e565b61277557600080fd5b602082015160006127858261401e565b80830160209586015260408051808201909152908152938401919091525090919050565b8051600090158015906127be57508151602110155b6127c757600080fd5b60006127d68360200151613fbb565b90508083600001511015612831576040805162461bcd60e51b815260206004820152601a60248201527f6c656e677468206973206c657373207468616e206f6666736574000000000000604482015290519081900360640190fd5b82516020808501518301805192849003929183101561285757826020036101000a820491505b50949350505050565b600060606000806000805b61287487612f1e565b156128c657826128965761288f61288a8861275b565b614151565b91506128bb565b82600114156128b6576128ab610e6b8861275b565b9050600193506128bb565b6128c6565b82600101925061286b565b8361290c576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b60006110046001600160a01b031663727be1f8836040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b15801561295657600080fd5b505af115801561296a573d6000803e3d6000fd5b505050506040513d602081101561298057600080fd5b50519050806129a55761299760048484606561416b565b965096505050505050612a3b565b6001600160a01b0383166000908152600660205260409020546129ce908363ffffffff612ec416565b6001600160a01b038416600081815260066020908152604091829020939093558051858152905191927f7cc266c7b444f808013fa187f7b904d470a051a6564e78f482aa496581ba4bf892918290030190a260408051600080825260208201909252909750955050505050505b915091565b6000606060008060008060005b612a5688612f1e565b15612abf5783612a7357612a6c61288a8961275b565b9250612ab4565b8360011415612a8f57612a8861288a8961275b565b9150612ab4565b8360021415612aaf57612aa4610e6b8961275b565b905060019450612ab4565b612abf565b836001019350612a4d565b84612b05576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b60006110046001600160a01b031663727be1f8836040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b158015612b4f57600080fd5b505af1158015612b63573d6000803e3d6000fd5b505050506040513d6020811015612b7957600080fd5b5051905080612b9f57612b9060058584606561416b565b97509750505050505050612a3b565b6001600160a01b038085166000818152600760209081526040808320948816835293815283822082905591815260089091522054612be3908363ffffffff612ec416565b6001600160a01b0380861660008181526008602090815260409182902094909455805186815290519287169391927f35a799836f74fac7eccf5c73902823b970543d2274d3b93d8da3d37a255772a2929181900390910190a3604080516000808252602082019092529098509650505050505050915091565b60008184841115612ceb5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612cb0578181015183820152602001612c98565b50505050905090810190601f168015612cdd5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000612d3583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614267565b9392505050565b6000612d3583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612c5c565b60408051600560a21b8318601482015260348101909152606090612d35816142cc565b606061242c612daf83614322565b6142cc565b6060815160001415612dd55750604080516000815260208101909152610d71565b606082600081518110612de457fe5b602002602001015190506000600190505b8351811015612e2557612e1b82858381518110612e0e57fe5b6020026020010151614408565b9150600101612df5565b50612d35612e38825160c060ff16614485565b82614408565b6040805160028082526060828101909352829190816020015b6060815260200190600190039081612e57579050509050612e7a8460ff16612da1565b81600081518110612e8757fe5b6020026020010181905250612e9b836142cc565b81600181518110612ea857fe5b6020026020010181905250612ebc81612db4565b949350505050565b600082820183811015612d35576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000612f2861465f565b505080518051602091820151919092015191011190565b8051606090612f4d57600080fd5b6000612f5c8360200151613fbb565b83516040805191839003808352601f19601f8201168301602001909152919250606090828015612f93576020820181803683370190505b509050600081602001905061285784876020015101828561457d565b8051602080830191909120600e546000908152600a9092526040822054808214612fde57600092505050610d71565b5050600e80546000908152600a60205260408120558054600190810190915592915050565b60008060008060005b61301588612f1e565b1561307e57836130325761302b61288a8961275b565b9250613073565b836001141561304e5761304761288a8961275b565b9150613073565b836002141561306e57613063610e6b8961275b565b905060019450613073565b61307e565b83600101935061300c565b846130c4576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b60006130db826402540be40063ffffffff6145c816565b6001600160a01b0385166000908152600b602052604090208054600019019055905060ff8816600114156132215760ff87161561314e576040805162461bcd60e51b815260206004820152600c60248201526b77726f6e672073746174757360a01b604482015290519081900360640190fd5b6001600160a01b038416600090815260046020526040902054613177908263ffffffff612ec416565b6001600160a01b038086166000908152600460209081526040808320949094556005815283822092871682529190915220546131b9908263ffffffff612ec416565b6001600160a01b038086166000818152600560209081526040808320948916808452948252918290209490945580518581529051929391927f9a57c81564ab02642f34fd87e41baa9b074c18342cec3b7268b62bf752018fd1929181900390910190a36133af565b60ff8816613373576001600160a01b038416600090815260086020526040902054613252908263ffffffff612ec416565b6001600160a01b0385166000908152600860209081526040808320939093558251630e4f7c3f60e31b81526004810185905292516110049363727be1f89360248083019493928390030190829087803b1580156132ae57600080fd5b505af11580156132c2573d6000803e3d6000fd5b505050506040513d60208110156132d857600080fd5b5051613321576040805162461bcd60e51b81526020600482015260136024820152721dda5d1a191c985dc8189b988819985a5b1959606a1b604482015290519081900360640190fd5b6040805182815260ff8916602082015281516001600160a01b0380871693908816927fcbd481ae600289fad8c0484d07ce0ffe4f010d7c844ecfdeaf2a13fead52886e929081900390910190a36133af565b6040805162461bcd60e51b815260206004820152600c60248201526b77726f6e672073746174757360a01b604482015290519081900360640190fd5b505050505050505050565b60008060008060005b6133cc88612f1e565b1561343557836133e9576133e261288a8961275b565b925061342a565b8360011415613405576133fe61288a8961275b565b915061342a565b83600214156134255761341a610e6b8961275b565b90506001945061342a565b613435565b8360010193506133c3565b8461347b576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b6000613492826402540be40063ffffffff6145c816565b6001600160a01b0385166000908152600c602052604090208054600019019055905060ff8816600114156136115760ff871615613505576040805162461bcd60e51b815260206004820152600c60248201526b77726f6e672073746174757360a01b604482015290519081900360640190fd5b6001600160a01b03841660009081526004602052604090205461352e908263ffffffff612d3c16565b6001600160a01b03808616600090815260046020908152604080832094909455600581528382209287168252919091522054613570908263ffffffff612d3c16565b6001600160a01b038086166000908152600560209081526040808320938816835292905220556135a942620a8c0063ffffffff612ec416565b6001600160a01b038086166000818152600760209081526040808320948916808452948252918290209490945580518581529051929391927fd6f878a5bcbbe79a64e6418bb0d56aaa20b9a60587d45749819df88dfc7c3c44929181900390910190a36133af565b60ff8816613373576001600160a01b03808516600081815260076020908152604080832094881680845294825280832092909255815185815260ff8c169181019190915281517f4417d10c1e33efa83a770b8d4f47176e78c08c1298d534901ad3b16bb585fa2e929181900390910190a36133af565b6000806000806000805b61369a89612f1e565b1561371f57846136b7576136b061288a8a61275b565b9350613714565b84600114156136d3576136cc61288a8a61275b565b9250613714565b84600214156136ef576136e861288a8a61275b565b9150613714565b846003141561370f57613704610e6b8a61275b565b905060019550613714565b61371f565b846001019450613691565b85613765576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b600061377c826402540be40063ffffffff6145c816565b6001600160a01b0386166000908152600d602052604090208054600019019055905060ff89166001141561394f5760ff8816156137ef576040805162461bcd60e51b815260206004820152600c60248201526b77726f6e672073746174757360a01b604482015290519081900360640190fd5b6001600160a01b03808616600090815260056020908152604080832093881683529290522054613825908263ffffffff612d3c16565b6001600160a01b038681166000908152600560209081526040808320898516845290915280822093909355908516815220546138619082612ec4565b6001600160a01b0380871660009081526005602090815260408083209388168352929052205561389a42620a8c0063ffffffff612ec416565b6001600160a01b03808716600090815260096020908152604080832089851684528252808320938816835292905220556138dd42620a8c0063ffffffff612ec416565b6001600160a01b038087166000818152600960209081526040808320898616808552908352818420958b1680855295835292819020959095558451868152945191947f78bffae3f8c6691ac7fc1a3bff800cb2d612f5ad9ae5b0444cfe2eb15c189e18929081900390910190a46139e0565b60ff8916613373576001600160a01b038581166000818152600960209081526040808320898616808552818452828520968a16808652968452828520859055908352818420818552835281842093909355805186815260ff8e169281019290925280519293927fb93bee5c59f85ede6b074a99f4ffcd3e3fc0d5c3d8156de331de89a49e0ce77c9281900390910190a45b50505050505050505050565b6000816040516020018082805190602001908083835b60208310613a215780518252601f199092019160209182019101613a02565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405280519060200120836040516020018082805190602001908083835b60208310613a8f5780518252601f199092019160209182019101613a70565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040528051906020012014905092915050565b015190565b60008060008060005b613aea86612f1e565b15613b535783613b0757613b0061288a8761275b565b9250613b48565b8360011415613b2357613b1c61288a8761275b565b9150613b48565b8360021415613b4357613b38610e6b8761275b565b905060019450613b48565b613b53565b836001019350613ae1565b84613b99576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b6000613bb0826402540be40063ffffffff6145c816565b6001600160a01b0385166000908152600b6020908152604080832080546000190190556008909152902054909150613bee908263ffffffff612ec416565b6001600160a01b0385166000908152600860209081526040808320939093558251630e4f7c3f60e31b81526004810185905292516110049363727be1f89360248083019493928390030190829087803b158015613c4a57600080fd5b505af1158015613c5e573d6000803e3d6000fd5b505050506040513d6020811015613c7457600080fd5b5051613cbd576040805162461bcd60e51b81526020600482015260136024820152721dda5d1a191c985dc8189b988819985a5b1959606a1b604482015290519081900360640190fd5b6040516001907ff83de021914a4585482db5ca47d520a5657165b443fa2c7ef8ed4635f054da9b90600090a250505050505050565b60008060008060005b613d0486612f1e565b15613d6d5783613d2157613d1a61288a8761275b565b9250613d62565b8360011415613d3d57613d3661288a8761275b565b9150613d62565b8360021415613d5d57613d52610e6b8761275b565b905060019450613d62565b613d6d565b836001019350613cfb565b84613db3576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b6001600160a01b038084166000908152600c60209081526040808320805460001901905560078252808320938616835292905281812081905590516002917ff83de021914a4585482db5ca47d520a5657165b443fa2c7ef8ed4635f054da9b91a2505050505050565b6000806000806000805b613e2f87612f1e565b15613eb45784613e4c57613e4561288a8861275b565b9350613ea9565b8460011415613e6857613e6161288a8861275b565b9250613ea9565b8460021415613e8457613e7d61288a8861275b565b9150613ea9565b8460031415613ea457613e99610e6b8861275b565b905060019550613ea9565b613eb4565b846001019450613e26565b85613efa576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b6001600160a01b038481166000908152600d602090815260408083208054600019019055600982528083208785168085528184528285209588168552948352818420849055825280832093835292905281812081905590516003917ff83de021914a4585482db5ca47d520a5657165b443fa2c7ef8ed4635f054da9b91a250505050505050565b8051600090613f9257506000610d71565b6020820151805160001a9060c0821015613fb157600092505050610d71565b5060019392505050565b8051600090811a6080811015613fd5576000915050610d71565b60b8811080613ff0575060c08110801590613ff0575060f881105b15613fff576001915050610d71565b60c08110156140135760b519019050610d71565b60f519019050610d71565b80516000908190811a6080811015614039576001915061414a565b60b881101561404e57607e198101915061414a565b60c08110156140c857600060b78203600186019550806020036101000a8651049150600181018201935050808310156140c2576040805162461bcd60e51b81526020600482015260116024820152706164646974696f6e206f766572666c6f7760781b604482015290519081900360640190fd5b5061414a565b60f88110156140dd5760be198101915061414a565b600060f78203600186019550806020036101000a865104915060018101820193505080831015614148576040805162461bcd60e51b81526020600482015260116024820152706164646974696f6e206f766572666c6f7760781b604482015290519081900360640190fd5b505b5092915050565b805160009060151461416257600080fd5b61242c826127a9565b60006060614184846402540be40063ffffffff612cf316565b60408051600480825260a0820190925291955060609190816020015b60608152602001906001900390816141a05790505090506141c38760ff16612da1565b816000815181106141d057fe5b60200260200101819052506141ed866001600160a01b0316612d7e565b816001815181106141fa57fe5b602002602001018190525061420e85612da1565b8160028151811061421b57fe5b60200260200101819052506142358463ffffffff16612da1565b8160038151811061424257fe5b6020026020010181905250606061425882612db4565b94989497509395505050505050565b600081836142b65760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315612cb0578181015183820152602001612c98565b5060008385816142c257fe5b0495945050505050565b6060815160011480156142fe5750607f60f81b826000815181106142ec57fe5b01602001516001600160f81b03191611155b1561430a575080610d71565b61242c61431c8351608060ff16614485565b83614408565b604080516020808252818301909252606091829190602082018180368337505050602081018490529050600067ffffffffffffffff1984166143665750601861438a565b6fffffffffffffffffffffffffffffffff1984166143865750601061438a565b5060005b60208110156143c05781818151811061439f57fe5b01602001516001600160f81b031916156143b8576143c0565b60010161438a565b60008160200390506060816040519080825280601f01601f1916602001820160405280156143f5576020820181803683370190505b5080830196909652508452509192915050565b6060806040519050835180825260208201818101602087015b81831015614439578051835260209283019201614421565b50855184518101855292509050808201602086015b8183101561446657805183526020928301920161444e565b508651929092011591909101601f01601f191660405250905092915050565b60606801000000000000000083106144d5576040805162461bcd60e51b815260206004820152600e60248201526d696e70757420746f6f206c6f6e6760901b604482015290519081900360640190fd5b6040805160018082528183019092526060916020820181803683370190505090506037841161452f5782840160f81b8160008151811061451157fe5b60200101906001600160f81b031916908160001a905350905061242c565b606061453a85614322565b90508381510160370160f81b8260008151811061455357fe5b60200101906001600160f81b031916908160001a9053506145748282614408565b95945050505050565b806145875761265c565b5b602081106145a7578251825260209283019290910190601f1901614588565b915181516020939093036101000a6000190180199091169216919091179052565b6000826145d75750600061242c565b828202828482816145e457fe5b0414612d355760405162461bcd60e51b81526004018080602001828103825260218152602001806147086021913960400191505060405180910390fd5b60405180606001604052806003906020820280368337509192915050565b604051806040016040528061465261465f565b8152602001600081525090565b60405180604001604052806000815260200160008152509056fe7468652042534352656c61796572466565206d6f642074656e20646563696d616c73206d757374206265207a65726f7468652042534352656c61796572466565206d757374206265206c657373207468616e2072656c61796572466565746865206d696e44656c65676174696f6e206d7573742062652067726561746572207468616e2072656c61796572466565536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f777468652072656c61796572466565206d6f642074656e20646563696d616c73206d757374206265207a65726f746865206d6573736167652073656e646572206d75737420626520676f7665726e616e636520636f6e74726163747468652072656c61796572466565206d757374206265206c657373207468616e206d696e44656c65676174696f6e7468652072656c61796572466565206d757374206265206d6f7265207468616e2042534352656c61796572466565696e73756666696369656e742062616c616e636520616674657220756e64656c6567617465746865206d6573736167652073656e646572206d7573742062652063726f737320636861696e20636f6e74726163747468652042534352656c61796572466565206d757374206e6f74206265207a65726fa164736f6c6343000604000a", + }, + { + ContractAddr: common.HexToAddress(StakeHubContract), + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/cfc0bd1127186a917ddc38fd38d22903034d3f0b", + Code: "6080604052600436106200029f5760003560e01c8063982ef0a7116200015f578063cf06248c11620000c5578063de88700b1162000084578063de88700b146200083d578063e8f67c3b146200085f578063e992aaf51462000877578063f1f74d84146200088f578063fb50b31f14620008a7578063fc0c5ff114620008cc57600080fd5b8063cf06248c1462000793578063d115a20614620007d0578063d6ca429d14620007e8578063d8ca511f146200080d578063daacdb66146200082557600080fd5b8063b187bd26116200011e578063b187bd2614620006c1578063baa7199e14620006e1578063bdceadf31462000706578063c38fbec8146200071e578063c473318f1462000743578063cbb04d9d146200075b57600080fd5b8063982ef0a7146200060e578063a43569b31462000625578063aad3ec961462000659578063ac431751146200067e578063ae0f336d14620006a357600080fd5b80634e6fd6c411620002055780636ec01b2711620001c45780636ec01b27146200052457806375cc7d89146200057c57806376e7d6d614620005a15780637adcf7e814620005b95780638129fc1c14620005de5780638456cb5914620005f657600080fd5b80634e6fd6c4146200045b57806359491871146200048c5780635e7cc1c914620004b157806363a036b514620004d657806364028fbd146200050d57600080fd5b8063417c73a7116200025e578063417c73a7146200035d578063449ecfe6146200038257806345211bfd14620003a75780634838d16514620003cc5780634a49ac4c14620004115780634d99dd16146200043657600080fd5b8063046f7da214620002c65780630661806e14620002de578063092193ab14620003095780630e9fbf51146200032057806338409988146200034557600080fd5b36620002c1576000546301000000900460ff16600114620002bf57600080fd5b005b600080fd5b348015620002d357600080fd5b50620002bf620008e4565b348015620002eb57600080fd5b50620002f660025481565b6040519081526020015b60405180910390f35b620002bf6200031a36600462006971565b62000945565b3480156200032d57600080fd5b50620002bf6200033f366004620069d5565b62000ec1565b3480156200035257600080fd5b50620002f660035481565b3480156200036a57600080fd5b50620002bf6200037c36600462006971565b6200113f565b3480156200038f57600080fd5b50620002bf620003a136600462006971565b6200118f565b348015620003b457600080fd5b50620002bf620003c636600462006971565b62001342565b348015620003d957600080fd5b5062000400620003eb36600462006971565b60176020526000908152604090205460ff1681565b604051901515815260200162000300565b3480156200041e57600080fd5b50620002bf6200043036600462006971565b62001505565b3480156200044357600080fd5b50620002bf6200045536600462006a1a565b62001552565b3480156200046857600080fd5b506200047361dead81565b6040516001600160a01b03909116815260200162000300565b3480156200049957600080fd5b50620002bf620004ab36600462006a5f565b62001b70565b348015620004be57600080fd5b50620002bf620004d036600462006acd565b62002942565b348015620004e357600080fd5b50620004fb620004f536600462006aed565b62002b49565b60405162000300949392919062006baa565b620002bf6200051e36600462006c79565b620031d1565b3480156200053157600080fd5b50620005496200054336600462006971565b620036a1565b6040805182516001600160401b039081168252602080850151821690830152928201519092169082015260600162000300565b3480156200058957600080fd5b50620002bf6200059b36600462006971565b6200374b565b348015620005ae57600080fd5b50620002f660095481565b348015620005c657600080fd5b5062000473620005d8366004620069d5565b6200391e565b348015620005eb57600080fd5b50620002bf62003956565b3480156200060357600080fd5b50620002bf62003c6c565b620002bf6200061f36600462006d4b565b62003cd2565b3480156200063257600080fd5b506200064a6200064436600462006971565b62004377565b60405162000300919062006d85565b3480156200066657600080fd5b50620002bf6200067836600462006a1a565b62004664565b3480156200068b57600080fd5b50620002bf6200069d36600462006e0b565b620047cd565b348015620006b057600080fd5b50620002f6670de0b6b3a764000081565b348015620006ce57600080fd5b5060005462010000900460ff1662000400565b348015620006ee57600080fd5b50620002bf6200070036600462006e7d565b6200562b565b3480156200071357600080fd5b50620002f660085481565b3480156200072b57600080fd5b50620002bf6200073d36600462006971565b620057f8565b3480156200075057600080fd5b50620002f660045481565b3480156200076857600080fd5b50620007806200077a36600462006971565b62005a16565b6040516200030095949392919062006f09565b348015620007a057600080fd5b5062000473620007b236600462006971565b6001600160a01b039081166000908152600f60205260409020541690565b348015620007dd57600080fd5b50620002f661271081565b348015620007f557600080fd5b50620002bf6200080736600462006f4b565b62005e75565b3480156200081a57600080fd5b50620002f660075481565b3480156200083257600080fd5b50620002f660135481565b3480156200084a57600080fd5b5060165462000473906001600160a01b031681565b3480156200086c57600080fd5b50620002f660015481565b3480156200088457600080fd5b50620002f660065481565b3480156200089c57600080fd5b50620002f6600a5481565b348015620008b457600080fd5b50620002bf620008c636600462006e0b565b62005fc4565b348015620008d957600080fd5b50620002f660055481565b6016546001600160a01b03163314620009105760405163f2771a9960e01b815260040160405180910390fd5b6000805462ff0000191681556040517f62451d457bc659158be6e6247f56ec1df424a5c7597f71c20c2bc44e0965c8f99190a1565b33611000146200097157604051630f22c43960e41b815261100060048201526024015b60405180910390fd5b6001600160a01b038082166000908152600f60209081526040808320548416808452600d83528184208251610140810184528154871681526001820154871694810194909452600281015490951691830191909152600384018054919491606084019190620009e09062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462000a0e9062006f83565b801562000a5f5780601f1062000a335761010080835404028352916020019162000a5f565b820191906000526020600020905b81548152906001019060200180831162000a4157829003601f168201915b505050505081526020016004820160405180608001604052908160008201805462000a8a9062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462000ab89062006f83565b801562000b095780601f1062000add5761010080835404028352916020019162000b09565b820191906000526020600020905b81548152906001019060200180831162000aeb57829003601f168201915b5050505050815260200160018201805462000b249062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462000b529062006f83565b801562000ba35780601f1062000b775761010080835404028352916020019162000ba3565b820191906000526020600020905b81548152906001019060200180831162000b8557829003601f168201915b5050505050815260200160028201805462000bbe9062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462000bec9062006f83565b801562000c3d5780601f1062000c115761010080835404028352916020019162000c3d565b820191906000526020600020905b81548152906001019060200180831162000c1f57829003601f168201915b5050505050815260200160038201805462000c589062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462000c869062006f83565b801562000cd75780601f1062000cab5761010080835404028352916020019162000cd7565b820191906000526020600020905b81548152906001019060200180831162000cb957829003601f168201915b505050919092525050508152604080516060808201835260088501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600984015460ff16151582840152600a84015490830152600b8301546080830152805161028081019182905260a09092019190600c84019060149082845b81548152602001906001019080831162000d63575050509190925250505060408101519091506001600160a01b0316158062000da057508060c001515b1562000e1157816001600160a01b03167ffc8bff675087dd2da069cc3fb517b9ed001e19750c0865241a5542dba1ba170d60405162000e049060208082526011908201527024a72b20a624a22fab20a624a220aa27a960791b604082015260600190565b60405180910390a2505050565b60408181015160a0830151519151632f303ebb60e11b81526001600160401b0390921660048301526001600160a01b031690635e607d769034906024016000604051808303818588803b15801562000e6857600080fd5b505af115801562000e7d573d6000803e3d6000fd5b5050505050816001600160a01b03167fe34918ff1c7084970068b53fd71ad6d8b04e9f15d3886cbf006443e6cdc52ea63460405162000e0491815260200190565b50565b336110011462000ee957604051630f22c43960e41b8152611001600482015260240162000968565b6000600e838360405162000eff92919062006fb9565b908152604051908190036020019020546001600160a01b0316905062000f27600b82620061e6565b62000f455760405163fdf4600b60e01b815260040160405180910390fd5b6001600160a01b0381166000908152600d602052604081209062000f6d620151804262006fdf565b6014546000828152601560205260409020549192501162000fa15760405163413361db60e01b815260040160405180910390fd5b600081815260156020526040812080546001929062000fc290849062007002565b90915550600090508062000fd88560026200620b565b915091508162000ffb57604051631b919bb160e11b815260040160405180910390fd5b600284015460085460405163045bc4d160e41b815260048101919091526000916001600160a01b0316906345bc4d10906024016020604051808303816000875af11580156200104e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001074919062007018565b905062001082858362006295565b856001600160a01b03167f6e9a2ee7aee95665e3a774a212eb11441b217e3e4656ab9563793094689aabb283836002604051620010c29392919062007032565b60405180910390a26002850154604051633041949b60e01b81526001600160a01b039182166004820152908716602482015261200590633041949b90604401600060405180830381600087803b1580156200111c57600080fd5b505af115801562001131573d6000803e3d6000fd5b505050505050505050505050565b6016546001600160a01b031633146200116b5760405163f2771a9960e01b815260040160405180910390fd5b6001600160a01b03166000908152601760205260409020805460ff19166001179055565b60005462010000900460ff1615620011ba5760405163d7485e8f60e01b815260040160405180910390fd5b80620011c8600b82620061e6565b620011e65760405163fdf4600b60e01b815260040160405180910390fd5b6001600160a01b0382166000908152600d60205260409020600981015460ff166200122457604051634b6b857d60e01b815260040160405180910390fd5b6002805490820154604051630913db4760e01b81526001600160a01b03868116600483015290911690630913db4790602401602060405180830381865afa15801562001274573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200129a919062007018565b1015620012ba576040516317b204bf60e11b815260040160405180910390fd5b4281600a01541115620012e05760405163170cb76760e21b815260040160405180910390fd5b60098101805460ff191690556013805460019190600090620013049084906200706d565b90915550506040516001600160a01b038416907f9390b453426557da5ebdc31f19a37753ca04addf656d32f35232211bb2af3f1990600090a2505050565b60005462010000900460ff16156200136d5760405163d7485e8f60e01b815260040160405180910390fd5b3360009081526017602052604090205460ff16156200139f5760405163b1d02c3d60e01b815260040160405180910390fd5b33620013ad600b82620061e6565b620013cb5760405163fdf4600b60e01b815260040160405180910390fd5b6001600160a01b038216620013f357604051636520611b60e11b815260040160405180910390fd5b6001600160a01b038281166000908152600f6020526040902054161515806200143457506001600160a01b03821660009081526011602052604090205460ff165b156200145357604051631e6f587560e11b815260040160405180910390fd5b336000818152600d60205260409020600b810154429062001478906201518062007002565b11156200149857604051631f92cdbd60e11b815260040160405180910390fd5b80546001600160a01b038086166001600160a01b03199283168117845542600b8501556000818152600f60205260408082208054948816949095168417909455925190927f6e4e747ca35203f16401c69805c7dd52fff67ef60b0ebc5c7fe16890530f223591a350505050565b6016546001600160a01b03163314620015315760405163f2771a9960e01b815260040160405180910390fd5b6001600160a01b03166000908152601760205260409020805460ff19169055565b60005462010000900460ff16156200157d5760405163d7485e8f60e01b815260040160405180910390fd5b3360009081526017602052604090205460ff1615620015af5760405163b1d02c3d60e01b815260040160405180910390fd5b81620015bd600b82620061e6565b620015db5760405163fdf4600b60e01b815260040160405180910390fd5b81600003620015fd57604051639811e0c760e01b815260040160405180910390fd5b6001600160a01b038084166000908152600d60209081526040808320815161014081018352815486168152600182015486169381019390935260028101549094169082015260038301805433949160608401916200165b9062006f83565b80601f0160208091040260200160405190810160405280929190818152602001828054620016899062006f83565b8015620016da5780601f10620016ae57610100808354040283529160200191620016da565b820191906000526020600020905b815481529060010190602001808311620016bc57829003601f168201915b5050505050815260200160048201604051806080016040529081600082018054620017059062006f83565b80601f0160208091040260200160405190810160405280929190818152602001828054620017339062006f83565b8015620017845780601f10620017585761010080835404028352916020019162001784565b820191906000526020600020905b8154815290600101906020018083116200176657829003601f168201915b505050505081526020016001820180546200179f9062006f83565b80601f0160208091040260200160405190810160405280929190818152602001828054620017cd9062006f83565b80156200181e5780601f10620017f2576101008083540402835291602001916200181e565b820191906000526020600020905b8154815290600101906020018083116200180057829003601f168201915b50505050508152602001600282018054620018399062006f83565b80601f0160208091040260200160405190810160405280929190818152602001828054620018679062006f83565b8015620018b85780601f106200188c57610100808354040283529160200191620018b8565b820191906000526020600020905b8154815290600101906020018083116200189a57829003601f168201915b50505050508152602001600382018054620018d39062006f83565b80601f0160208091040260200160405190810160405280929190818152602001828054620019019062006f83565b8015620019525780601f10620019265761010080835404028352916020019162001952565b820191906000526020600020905b8154815290600101906020018083116200193457829003601f168201915b505050919092525050508152604080516060808201835260088501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600984015460ff16151582840152600a84015490830152600b8301546080830152805161028081019182905260a09092019190600c84019060149082845b815481526020019060010190808311620019de575050509190925250505060408082015190516326ccee8b60e11b81526001600160a01b0385811660048301526024820188905292935060009290911690634d99dd16906044016020604051808303816000875af115801562001a58573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001a7e919062007018565b9050826001600160a01b0316866001600160a01b03167f3aace7340547de7b9156593a7652dc07ee900cea3fd8f82cb6c9d38b40829802878460405162001acf929190918252602082015260400190565b60405180910390a3856001600160a01b0316836001600160a01b03160362001afc5762001afc866200638a565b6040828101519051633041949b60e01b81526001600160a01b039182166004820152908416602482015261200590633041949b906044015b600060405180830381600087803b15801562001b4f57600080fd5b505af115801562001b64573d6000803e3d6000fd5b50505050505050505050565b60005462010000900460ff161562001b9b5760405163d7485e8f60e01b815260040160405180910390fd5b3360009081526017602052604090205460ff161562001bcd5760405163b1d02c3d60e01b815260040160405180910390fd5b8362001bdb600b82620061e6565b62001bf95760405163fdf4600b60e01b815260040160405180910390fd5b8362001c07600b82620061e6565b62001c255760405163fdf4600b60e01b815260040160405180910390fd5b8360000362001c4757604051639811e0c760e01b815260040160405180910390fd5b846001600160a01b0316866001600160a01b03160362001c7a5760405163f0e3e62960e01b815260040160405180910390fd5b6001600160a01b038087166000908152600d602090815260408083208151610140810183528154861681526001820154861693810193909352600281015490941690820152600383018054339491606084019162001cd89062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462001d069062006f83565b801562001d575780601f1062001d2b5761010080835404028352916020019162001d57565b820191906000526020600020905b81548152906001019060200180831162001d3957829003601f168201915b505050505081526020016004820160405180608001604052908160008201805462001d829062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462001db09062006f83565b801562001e015780601f1062001dd55761010080835404028352916020019162001e01565b820191906000526020600020905b81548152906001019060200180831162001de357829003601f168201915b5050505050815260200160018201805462001e1c9062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462001e4a9062006f83565b801562001e9b5780601f1062001e6f5761010080835404028352916020019162001e9b565b820191906000526020600020905b81548152906001019060200180831162001e7d57829003601f168201915b5050505050815260200160028201805462001eb69062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462001ee49062006f83565b801562001f355780601f1062001f095761010080835404028352916020019162001f35565b820191906000526020600020905b81548152906001019060200180831162001f1757829003601f168201915b5050505050815260200160038201805462001f509062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462001f7e9062006f83565b801562001fcf5780601f1062001fa35761010080835404028352916020019162001fcf565b820191906000526020600020905b81548152906001019060200180831162001fb157829003601f168201915b505050919092525050508152604080516060808201835260088501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600984015460ff16151582840152600a84015490830152600b8301546080830152805161028081019182905260a09092019190600c84019060149082845b8154815260200190600101908083116200205b57505050919092525050506001600160a01b038089166000908152600d60209081526040808320815161014081018352815486168152600182015486169381019390935260028101549094169082015260038301805494955091939092916060840191620020dc9062006f83565b80601f01602080910402602001604051908101604052809291908181526020018280546200210a9062006f83565b80156200215b5780601f106200212f576101008083540402835291602001916200215b565b820191906000526020600020905b8154815290600101906020018083116200213d57829003601f168201915b5050505050815260200160048201604051806080016040529081600082018054620021869062006f83565b80601f0160208091040260200160405190810160405280929190818152602001828054620021b49062006f83565b8015620022055780601f10620021d95761010080835404028352916020019162002205565b820191906000526020600020905b815481529060010190602001808311620021e757829003601f168201915b50505050508152602001600182018054620022209062006f83565b80601f01602080910402602001604051908101604052809291908181526020018280546200224e9062006f83565b80156200229f5780601f1062002273576101008083540402835291602001916200229f565b820191906000526020600020905b8154815290600101906020018083116200228157829003601f168201915b50505050508152602001600282018054620022ba9062006f83565b80601f0160208091040260200160405190810160405280929190818152602001828054620022e89062006f83565b8015620023395780601f106200230d5761010080835404028352916020019162002339565b820191906000526020600020905b8154815290600101906020018083116200231b57829003601f168201915b50505050508152602001600382018054620023549062006f83565b80601f0160208091040260200160405190810160405280929190818152602001828054620023829062006f83565b8015620023d35780601f10620023a757610100808354040283529160200191620023d3565b820191906000526020600020905b815481529060010190602001808311620023b557829003601f168201915b505050919092525050508152604080516060808201835260088501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600984015460ff16151582840152600a84015490830152600b8301546080830152805161028081019182905260a09092019190600c84019060149082845b8154815260200190600101908083116200245f5750505050508152505090508060c001518015620024a25750876001600160a01b0316836001600160a01b031614155b15620024c157604051636468920360e01b815260040160405180910390fd5b6000805463ff0000001916630100000017815560408381015190516352e82ce560e11b81526001600160a01b038681166004830152602482018b90529091169063a5d059ca906044016020604051808303816000875af11580156200252a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002550919062007018565b9050600354811015620025765760405163dc6f0bdd60e01b815260040160405180910390fd5b896001600160a01b0316846001600160a01b03161480156200260b57506002546040808501519051630913db4760e01b81526001600160a01b038d8116600483015290911690630913db4790602401602060405180830381865afa158015620025e3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002609919062007018565b105b156200262a576040516317b204bf60e11b815260040160405180910390fd5b6000612710600654836200263f919062007083565b6200264b919062006fdf565b9050600083604001516001600160a01b03168260405160006040518083038185875af1925050503d8060008114620026a0576040519150601f19603f3d011682016040523d82523d6000602084013e620026a5565b606091505b5050905080620026c8576040516312171d8360e31b815260040160405180910390fd5b620026d482846200706d565b60408086015190516317066a5760e21b81526001600160a01b03898116600483015292955060009290911690635c19a95c90869060240160206040518083038185885af11580156200272a573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019062002751919062007018565b905060008060036101000a81548160ff021916908360ff160217905550866001600160a01b03168c6001600160a01b03168e6001600160a01b03167ffdac6e81913996d95abcc289e90f2d8bd235487ce6fe6f821e7d21002a1915b48e8589604051620027d1939291909283526020830191909152604082015260600190565b60405180910390a4604080516002808252606082018352600092602083019080368337019050509050866040015181600081518110620028155762002815620070b3565b60200260200101906001600160a01b031690816001600160a01b031681525050856040015181600181518110620028505762002850620070b3565b6001600160a01b0390921660209283029190910190910152604051634484077560e01b815261200590634484077590620028919084908c90600401620070c9565b600060405180830381600087803b158015620028ac57600080fd5b505af1158015620028c1573d6000803e3d6000fd5b505050508a1562002932576040516372f6ad8f60e11b81526001600160a01b0389811660048301528e1660248201526120059063e5ed5b1e90604401600060405180830381600087803b1580156200291857600080fd5b505af11580156200292d573d6000803e3d6000fd5b505050505b5050505050505050505050505050565b60005462010000900460ff16156200296d5760405163d7485e8f60e01b815260040160405180910390fd5b3360009081526017602052604090205460ff16156200299f5760405163b1d02c3d60e01b815260040160405180910390fd5b33620029ad600b82620061e6565b620029cb5760405163fdf4600b60e01b815260040160405180910390fd5b336000818152600d60205260409020600b8101544290620029f0906201518062007002565b111562002a1057604051631f92cdbd60e11b815260040160405180910390fd5b60088101546001600160401b03600160401b9091048116908516111562002a4a5760405163dc81db8560e01b815260040160405180910390fd5b60088101546000906001600160401b03908116908616101562002a8857600882015462002a829086906001600160401b0316620070f5565b62002aa2565b600882015462002aa2906001600160401b031686620070f5565b60088301546001600160401b039182169250600160801b90041681111562002add5760405163dc81db8560e01b815260040160405180910390fd5b60088201805467ffffffffffffffff19166001600160401b03871690811790915542600b8401556040519081526001600160a01b038416907f78cdd96edf59e09cfd4d26ef6ef6c92d166effe6a40970c54821206d541932cb9060200160405180910390a25050505050565b6060806060600062002b5c600b620064a3565b905080861015620031c857841562002b75578462002b77565b805b945060008562002b8888846200706d565b1162002ba05762002b9a87836200706d565b62002ba2565b855b9050806001600160401b0381111562002bbf5762002bbf6200709d565b60405190808252806020026020018201604052801562002be9578160200160208202803683370190505b509450806001600160401b0381111562002c075762002c076200709d565b60405190808252806020026020018201604052801562002c31578160200160208202803683370190505b509350806001600160401b0381111562002c4f5762002c4f6200709d565b60405190808252806020026020018201604052801562002c8457816020015b606081526020019060019003908162002c6e5790505b50925060005b81811015620031c557600062002cae62002ca5838b62007002565b600b90620064ae565b6001600160a01b038082166000908152600d6020908152604080832081516101408101835281548616815260018201548616938101939093526002810154909416908201526003830180549495509193909291606084019162002d119062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462002d3f9062006f83565b801562002d905780601f1062002d645761010080835404028352916020019162002d90565b820191906000526020600020905b81548152906001019060200180831162002d7257829003601f168201915b505050505081526020016004820160405180608001604052908160008201805462002dbb9062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462002de99062006f83565b801562002e3a5780601f1062002e0e5761010080835404028352916020019162002e3a565b820191906000526020600020905b81548152906001019060200180831162002e1c57829003601f168201915b5050505050815260200160018201805462002e559062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462002e839062006f83565b801562002ed45780601f1062002ea85761010080835404028352916020019162002ed4565b820191906000526020600020905b81548152906001019060200180831162002eb657829003601f168201915b5050505050815260200160028201805462002eef9062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462002f1d9062006f83565b801562002f6e5780601f1062002f425761010080835404028352916020019162002f6e565b820191906000526020600020905b81548152906001019060200180831162002f5057829003601f168201915b5050505050815260200160038201805462002f899062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462002fb79062006f83565b8015620030085780601f1062002fdc5761010080835404028352916020019162003008565b820191906000526020600020905b81548152906001019060200180831162002fea57829003601f168201915b505050919092525050508152604080516060808201835260088501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600984015460ff16151582840152600a84015490830152600b8301546080830152805161028081019182905260a09092019190600c84019060149082845b815481526020019060010190808311620030945750505050508152505090508060000151888481518110620030cd57620030cd620070b3565b60200260200101906001600160a01b031690816001600160a01b0316815250508060c00151620031665780604001516001600160a01b03166315d1f8986040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200313a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003160919062007018565b62003169565b60005b8784815181106200317e576200317e620070b3565b6020026020010181815250508060600151868481518110620031a457620031a4620070b3565b6020026020010181905250505080620031bd906200711f565b905062002c8a565b50505b92959194509250565b60005462010000900460ff1615620031fc5760405163d7485e8f60e01b815260040160405180910390fd5b3360009081526017602052604090205460ff16156200322e5760405163b1d02c3d60e01b815260040160405180910390fd5b336200323c600b82620061e6565b156200325b57604051635f28f62b60e01b815260040160405180910390fd5b6001600160a01b038881166000908152600f6020526040902054161515806200329c57506001600160a01b03881660009081526011602052604090205460ff165b15620032bb57604051631e6f587560e11b815260040160405180910390fd5b60006001600160a01b0316600e8888604051620032da92919062006fb9565b908152604051908190036020019020546001600160a01b0316141580620033245750601287876040516200331092919062006fb9565b9081526040519081900360200190205460ff165b1562003343576040516311fdb94760e01b815260040160405180910390fd5b60025434906200335d90670de0b6b3a76400009062007002565b8110156200337e576040516317b204bf60e11b815260040160405180910390fd5b6001600160a01b038916620033a657604051636520611b60e11b815260040160405180910390fd5b611388620033bb604086016020870162006acd565b6001600160401b03161180620034015750620033de604085016020860162006acd565b6001600160401b0316620033f6602086018662006acd565b6001600160401b0316115b806200344057506200341a604085016020860162006acd565b6001600160401b031662003435606086016040870162006acd565b6001600160401b0316115b156200345f5760405163dc81db8560e01b815260040160405180910390fd5b620034aa6200346f84806200713b565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250620064bc92505050565b620034c857604051635dba5ad760e01b815260040160405180910390fd5b620034d6888888886200665e565b620034f457604051631647e3cb60e11b815260040160405180910390fd5b600062003542836200350786806200713b565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506200678b92505050565b905062003551600b8462006855565b506001600160a01b038381166000818152600d6020526040902080546001600160a01b03199081168e8516178255600182018054821690931790925560028101805490921692841692909217905560038101620035b08a8c83620071ce565b508460048201620035c282826200729b565b5086905060088201620035d68282620073d8565b505042600b8201556001600160a01b038b81166000908152600f60205260409081902080546001600160a01b03191692871692909217909155518490600e9062003624908d908d9062006fb9565b90815260405190819003602001812080546001600160a01b039384166001600160a01b03199091161790558382169186811691908e16907faecd9fb95e79c75a3a1de93362c6be5fe6ab65770d8614be583884161cd8228d906200368c908f908f90620074a8565b60405180910390a45050505050505050505050565b604080516060810182526000808252602082018190529181019190915281620036cc600b82620061e6565b620036ea5760405163fdf4600b60e01b815260040160405180910390fd5b6001600160a01b0383166000908152600d602090815260409182902082516060810184526008909101546001600160401b038082168352600160401b8204811693830193909352600160801b90049091169181019190915291505b50919050565b33611001146200377357604051630f22c43960e41b8152611001600482015260240162000968565b6001600160a01b038082166000908152600f6020526040902054166200379b600b82620061e6565b620037b95760405163fdf4600b60e01b815260040160405180910390fd5b6001600160a01b038181166000908152600d60205260408082206002810154600754925163045bc4d160e41b81526004810193909352909316906345bc4d10906024016020604051808303816000875af11580156200381c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003842919062007018565b905060006009544262003856919062007002565b905062003864838262006295565b836001600160a01b03167f6e9a2ee7aee95665e3a774a212eb11441b217e3e4656ab9563793094689aabb282846001604051620038a49392919062007032565b60405180910390a26002830154604051633041949b60e01b81526001600160a01b039182166004820152908516602482015261200590633041949b90604401600060405180830381600087803b158015620038fe57600080fd5b505af115801562003913573d6000803e3d6000fd5b505050505050505050565b6000600e83836040516200393492919062006fb9565b908152604051908190036020019020546001600160a01b031690505b92915050565b600054610100900460ff1615808015620039775750600054600160ff909116105b80620039935750303b15801562003993575060005460ff166001145b620039f85760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840162000968565b6000805460ff19166001179055801562003a1c576000805461ff0019166101001790555b33411462003a3d5760405163022d8c9560e31b815260040160405180910390fd5b3a1562003a5d576040516383f1b1d360e01b815260040160405180910390fd5b611388600155686c6b935b8bbd4000006002908155670de0b6b3a7640000600355601d60045562093a806005556006819055678ac7230489e80000600755680ad78ebc5ac62000006008556202a30060095562278d00600a5560145560408051606081810183528282529182919062008671602083013980602001905181019062003ae9919062007517565b9150604051806060016040528060408152602001620086716040913980602001905181019062003b1a9190620075c1565b905060005b825181101562003b895760016011600085848151811062003b445762003b44620070b3565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905562003b81816200711f565b905062003b1f565b5060005b815181101562003bfa576001601283838151811062003bb05762003bb0620070b3565b602002602001015160405162003bc79190620076d7565b908152604051908190036020019020805491151560ff1990921691909117905562003bf2816200711f565b905062003b8d565b5050601680546001600160a01b03191673df87f0e2b8519ea2dd4abd8b639cdd628497ed2517905550801562000ebe576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b6016546001600160a01b0316331462003c985760405163f2771a9960e01b815260040160405180910390fd5b6000805462ff00001916620100001781556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e7529190a1565b60005462010000900460ff161562003cfd5760405163d7485e8f60e01b815260040160405180910390fd5b3360009081526017602052604090205460ff161562003d2f5760405163b1d02c3d60e01b815260040160405180910390fd5b8162003d3d600b82620061e6565b62003d5b5760405163fdf4600b60e01b815260040160405180910390fd5b600354349081101562003d815760405163dc6f0bdd60e01b815260040160405180910390fd5b6001600160a01b038085166000908152600d602090815260408083208151610140810183528154861681526001820154861693810193909352600281015490941690820152600383018054339491606084019162003ddf9062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462003e0d9062006f83565b801562003e5e5780601f1062003e325761010080835404028352916020019162003e5e565b820191906000526020600020905b81548152906001019060200180831162003e4057829003601f168201915b505050505081526020016004820160405180608001604052908160008201805462003e899062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462003eb79062006f83565b801562003f085780601f1062003edc5761010080835404028352916020019162003f08565b820191906000526020600020905b81548152906001019060200180831162003eea57829003601f168201915b5050505050815260200160018201805462003f239062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462003f519062006f83565b801562003fa25780601f1062003f765761010080835404028352916020019162003fa2565b820191906000526020600020905b81548152906001019060200180831162003f8457829003601f168201915b5050505050815260200160028201805462003fbd9062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462003feb9062006f83565b80156200403c5780601f1062004010576101008083540402835291602001916200403c565b820191906000526020600020905b8154815290600101906020018083116200401e57829003601f168201915b50505050508152602001600382018054620040579062006f83565b80601f0160208091040260200160405190810160405280929190818152602001828054620040859062006f83565b8015620040d65780601f10620040aa57610100808354040283529160200191620040d6565b820191906000526020600020905b815481529060010190602001808311620040b857829003601f168201915b505050919092525050508152604080516060808201835260088501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600984015460ff16151582840152600a84015490830152600b8301546080830152805161028081019182905260a09092019190600c84019060149082845b815481526020019060010190808311620041625750505050508152505090508060c001518015620041a55750856001600160a01b0316826001600160a01b031614155b15620041c457604051636468920360e01b815260040160405180910390fd5b60408082015190516317066a5760e21b81526001600160a01b0384811660048301526000921690635c19a95c90869060240160206040518083038185885af115801562004215573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906200423c919062007018565b9050826001600160a01b0316876001600160a01b03167f24d7bda8602b916d64417f0dbfe2e2e88ec9b1157bd9f596dfdb91ba26624e0483876040516200428d929190918252602082015260400190565b60405180910390a36040828101519051633041949b60e01b81526001600160a01b039182166004820152908416602482015261200590633041949b90604401600060405180830381600087803b158015620042e757600080fd5b505af1158015620042fc573d6000803e3d6000fd5b5050505085156200436e576040516372f6ad8f60e11b81526001600160a01b038085166004830152881660248201526120059063e5ed5b1e906044015b600060405180830381600087803b1580156200435457600080fd5b505af115801562004369573d6000803e3d6000fd5b505050505b50505050505050565b620043a36040518060800160405280606081526020016060815260200160608152602001606081525090565b81620043b1600b82620061e6565b620043cf5760405163fdf4600b60e01b815260040160405180910390fd5b6001600160a01b0383166000908152600d602052604090819020815160808101909252600401805482908290620044069062006f83565b80601f0160208091040260200160405190810160405280929190818152602001828054620044349062006f83565b8015620044855780601f10620044595761010080835404028352916020019162004485565b820191906000526020600020905b8154815290600101906020018083116200446757829003601f168201915b50505050508152602001600182018054620044a09062006f83565b80601f0160208091040260200160405190810160405280929190818152602001828054620044ce9062006f83565b80156200451f5780601f10620044f3576101008083540402835291602001916200451f565b820191906000526020600020905b8154815290600101906020018083116200450157829003601f168201915b505050505081526020016002820180546200453a9062006f83565b80601f0160208091040260200160405190810160405280929190818152602001828054620045689062006f83565b8015620045b95780601f106200458d57610100808354040283529160200191620045b9565b820191906000526020600020905b8154815290600101906020018083116200459b57829003601f168201915b50505050508152602001600382018054620045d49062006f83565b80601f0160208091040260200160405190810160405280929190818152602001828054620046029062006f83565b8015620046535780601f10620046275761010080835404028352916020019162004653565b820191906000526020600020905b8154815290600101906020018083116200463557829003601f168201915b505050505081525050915050919050565b60005462010000900460ff16156200468f5760405163d7485e8f60e01b815260040160405180910390fd5b3360009081526017602052604090205460ff1615620046c15760405163b1d02c3d60e01b815260040160405180910390fd5b81620046cf600b82620061e6565b620046ed5760405163fdf4600b60e01b815260040160405180910390fd5b6001600160a01b038381166000908152600d6020526040808220600201549051635569f64b60e11b8152336004820152602481018690529192169063aad3ec96906044016020604051808303816000875af115801562004751573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004777919062007018565b9050336001600160a01b0316846001600160a01b03167ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd399268383604051620047bf91815260200190565b60405180910390a350505050565b3361100714620047f557604051630f22c43960e41b8152611007600482015260240162000968565b620048626040518060400160405280601081526020016f1d1c985b9cd9995c91d85cd31a5b5a5d60821b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200686c9050565b15620049105760208114620048945783838383604051630a5a604160e01b8152600401620009689493929190620076f5565b604080516020601f8401819004810282018101909252828152600091620048d7918585808385018382808284376000920191909152509293925050620068c99050565b90506108fc811015620049075784848484604051630a5a604160e01b8152600401620009689493929190620076f5565b600155620055e6565b620049816040518060400160405280601481526020017336b4b729b2b6332232b632b3b0ba34b7b721272160611b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200686c9050565b1562004a365760208114620049b35783838383604051630a5a604160e01b8152600401620009689493929190620076f5565b604080516020601f8401819004810282018101909252828152600091620049f6918585808385018382808284376000920191909152509293925050620068c99050565b9050683635c9adc5dea0000081101562004a2d5784848484604051630a5a604160e01b8152600401620009689493929190620076f5565b600255620055e6565b62004aa9604051806040016040528060168152602001756d696e44656c65676174696f6e424e424368616e676560501b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200686c9050565b1562004b5d576020811462004adb5783838383604051630a5a604160e01b8152600401620009689493929190620076f5565b604080516020601f840181900481028201810190925282815260009162004b1e918585808385018382808284376000920191909152509293925050620068c99050565b905067016345785d8a000081101562004b545784848484604051630a5a604160e01b8152600401620009689493929190620076f5565b600355620055e6565b62004bce604051806040016040528060148152602001736d6178456c656374656456616c696461746f727360601b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200686c9050565b1562004c88576020811462004c005783838383604051630a5a604160e01b8152600401620009689493929190620076f5565b604080516020601f840181900481028201810190925282815260009162004c43918585808385018382808284376000920191909152509293925050620068c99050565b9050600181108062004c5657506101f481115b1562004c7f5784848484604051630a5a604160e01b8152600401620009689493929190620076f5565b600455620055e6565b62004cf16040518060400160405280600c81526020016b1d5b989bdb9914195c9a5bd960a21b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200686c9050565b1562004da0576020811462004d235783838383604051630a5a604160e01b8152600401620009689493929190620076f5565b604080516020601f840181900481028201810190925282815260009162004d66918585808385018382808284376000920191909152509293925050620068c99050565b90506203f48081101562004d975784848484604051630a5a604160e01b8152600401620009689493929190620076f5565b600555620055e6565b62004e0e60405180604001604052806011815260200170726564656c65676174654665655261746560781b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200686c9050565b1562004ebb576020811462004e405783838383604051630a5a604160e01b8152600401620009689493929190620076f5565b604080516020601f840181900481028201810190925282815260009162004e83918585808385018382808284376000920191909152509293925050620068c99050565b9050606481111562004eb25784848484604051630a5a604160e01b8152600401620009689493929190620076f5565b600655620055e6565b62004f2b60405180604001604052806013815260200172191bdddb9d1a5b5954db185cda105b5bdd5b9d606a1b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200686c9050565b1562004fec576020811462004f5d5783838383604051630a5a604160e01b8152600401620009689493929190620076f5565b604080516020601f840181900481028201810190925282815260009162004fa0918585808385018382808284376000920191909152509293925050620068c99050565b9050674563918244f4000081108062004fba575060085481115b1562004fe35784848484604051630a5a604160e01b8152600401620009689493929190620076f5565b600755620055e6565b6200505a6040518060400160405280601181526020017019995b1bdb9e54db185cda105b5bdd5b9d607a1b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200686c9050565b156200511d57602081146200508c5783838383604051630a5a604160e01b8152600401620009689493929190620076f5565b604080516020601f8401819004810282018101909252828152600091620050cf918585808385018382808284376000920191909152509293925050620068c99050565b905068056bc75e2d63100000811080620050eb57506007548111155b15620051145784848484604051630a5a604160e01b8152600401620009689493929190620076f5565b600855620055e6565b6200518a6040518060400160405280601081526020016f646f776e74696d654a61696c54696d6560801b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200686c9050565b15620052475760208114620051bc5783838383604051630a5a604160e01b8152600401620009689493929190620076f5565b604080516020601f8401819004810282018101909252828152600091620051ff918585808385018382808284376000920191909152509293925050620068c99050565b90506202a300811080620052155750600a548110155b156200523e5784848484604051630a5a604160e01b8152600401620009689493929190620076f5565b600955620055e6565b620052b26040518060400160405280600e81526020016d66656c6f6e794a61696c54696d6560901b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200686c9050565b156200536f5760208114620052e45783838383604051630a5a604160e01b8152600401620009689493929190620076f5565b604080516020601f840181900481028201810190925282815260009162005327918585808385018382808284376000920191909152509293925050620068c99050565b9050620d2f008110806200533d57506009548111155b15620053665784848484604051630a5a604160e01b8152600401620009689493929190620076f5565b600a55620055e6565b620053d86040518060400160405280600c81526020016b66656c6f6e7950657244617960a01b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200686c9050565b156200548457602081146200540a5783838383604051630a5a604160e01b8152600401620009689493929190620076f5565b604080516020601f84018190048102820181019092528281526000916200544d918585808385018382808284376000920191909152509293925050620068c99050565b9050806000036200547b5784848484604051630a5a604160e01b8152600401620009689493929190620076f5565b601455620055e6565b620054ef6040518060400160405280600e81526020016d30b9b9b2ba283937ba32b1ba37b960911b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200686c9050565b15620055c35760148114620055215783838383604051630a5a604160e01b8152600401620009689493929190620076f5565b600062005569601484848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050620068c99050565b90506001600160a01b0381166200559d5784848484604051630a5a604160e01b8152600401620009689493929190620076f5565b601680546001600160a01b0319166001600160a01b0392909216919091179055620055e6565b838383836040516325ee20d560e21b8152600401620009689493929190620076f5565b7ff1ce9b2cbf50eeb05769a29e2543fd350cab46894a7dd9978a12d534bb20e633848484846040516200561d9493929190620076f5565b60405180910390a150505050565b60005462010000900460ff1615620056565760405163d7485e8f60e01b815260040160405180910390fd5b3360009081526017602052604090205460ff1615620056885760405163b1d02c3d60e01b815260040160405180910390fd5b816000816001600160401b03811115620056a657620056a66200709d565b604051908082528060200260200182016040528015620056d0578160200160208202803683370190505b5090506000805b83811015620057ce5762005719878783818110620056f957620056f9620070b3565b905060200201602081019062005710919062006971565b600b90620061e6565b620057375760405163fdf4600b60e01b815260040160405180910390fd5b600d6000888884818110620057505762005750620070b3565b905060200201602081019062005767919062006971565b6001600160a01b0390811682526020820192909252604001600020600201548451911692508290849083908110620057a357620057a3620070b3565b6001600160a01b0390921660209283029190910190910152620057c6816200711f565b9050620056d7565b50604051634484077560e01b81526120059063448407759062001b349085908890600401620070c9565b33611001146200582057604051630f22c43960e41b8152611001600482015260240162000968565b6001600160a01b038082166000908152600f60205260409020541662005848600b82620061e6565b620058665760405163fdf4600b60e01b815260040160405180910390fd5b6001600160a01b0381166000908152600d60209081526040808320601454428086526015909452919093205410620058b15760405163413361db60e01b815260040160405180910390fd5b6000818152601560205260408120805460019290620058d290849062007002565b909155506000905080620058e785826200620b565b91509150816200590a57604051631b919bb160e11b815260040160405180910390fd5b600284015460085460405163045bc4d160e41b815260048101919091526000916001600160a01b0316906345bc4d10906024016020604051808303816000875af11580156200595d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005983919062007018565b905062005991858362006295565b856001600160a01b03167f6e9a2ee7aee95665e3a774a212eb11441b217e3e4656ab9563793094689aabb283836000604051620059d19392919062007032565b60405180910390a26002850154604051633041949b60e01b81526001600160a01b039182166004820152908716602482015261200590633041949b9060440162004339565b600080606081808562005a2b600b82620061e6565b62005a495760405163fdf4600b60e01b815260040160405180910390fd5b6001600160a01b038088166000908152600d6020908152604080832081516101408101835281548616815260018201548616938101939093526002810154909416908201526003830180549293919260608401919062005aa99062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462005ad79062006f83565b801562005b285780601f1062005afc5761010080835404028352916020019162005b28565b820191906000526020600020905b81548152906001019060200180831162005b0a57829003601f168201915b505050505081526020016004820160405180608001604052908160008201805462005b539062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462005b819062006f83565b801562005bd25780601f1062005ba65761010080835404028352916020019162005bd2565b820191906000526020600020905b81548152906001019060200180831162005bb457829003601f168201915b5050505050815260200160018201805462005bed9062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462005c1b9062006f83565b801562005c6c5780601f1062005c405761010080835404028352916020019162005c6c565b820191906000526020600020905b81548152906001019060200180831162005c4e57829003601f168201915b5050505050815260200160028201805462005c879062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462005cb59062006f83565b801562005d065780601f1062005cda5761010080835404028352916020019162005d06565b820191906000526020600020905b81548152906001019060200180831162005ce857829003601f168201915b5050505050815260200160038201805462005d219062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462005d4f9062006f83565b801562005da05780601f1062005d745761010080835404028352916020019162005da0565b820191906000526020600020905b81548152906001019060200180831162005d8257829003601f168201915b505050919092525050508152604080516060808201835260088501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600984015460ff16151582840152600a84015490830152600b8301546080830152805161028081019182905260a09092019190600c84019060149082845b81548152602001906001019080831162005e2c5750505091909252505081516040830151606084015160c085015160e090950151929d919c509a50929850965090945050505050565b60005462010000900460ff161562005ea05760405163d7485e8f60e01b815260040160405180910390fd5b3360009081526017602052604090205460ff161562005ed25760405163b1d02c3d60e01b815260040160405180910390fd5b3362005ee0600b82620061e6565b62005efe5760405163fdf4600b60e01b815260040160405180910390fd5b62005f0e6200346f83806200713b565b62005f2c57604051635dba5ad760e01b815260040160405180910390fd5b336000818152600d60205260409020600b810154429062005f51906201518062007002565b111562005f7157604051631f92cdbd60e11b815260040160405180910390fd5b836004820162005f8282826200729b565b505042600b8201556040516001600160a01b038316907f85d6366b336ade7f106987ec7a8eac1e8799e508aeab045a39d2f63e0dc969d990600090a250505050565b60005462010000900460ff161562005fef5760405163d7485e8f60e01b815260040160405180910390fd5b3360009081526017602052604090205460ff1615620060215760405163b1d02c3d60e01b815260040160405180910390fd5b336200602f600b82620061e6565b6200604d5760405163fdf4600b60e01b815260040160405180910390fd5b6200605b858585856200665e565b6200607957604051631647e3cb60e11b815260040160405180910390fd5b60006001600160a01b0316600e86866040516200609892919062006fb9565b908152604051908190036020019020546001600160a01b0316141580620060e2575060128585604051620060ce92919062006fb9565b9081526040519081900360200190205460ff165b1562006101576040516311fdb94760e01b815260040160405180910390fd5b336000818152600d60205260409020600b810154429062006126906201518062007002565b11156200614657604051631f92cdbd60e11b815260040160405180910390fd5b6003810162006157878983620071ce565b5042600b8201556040518290600e9062006175908a908a9062006fb9565b90815260405190819003602001812080546001600160a01b039384166001600160a01b0319909116179055908316907f783156582145bd0ff7924fae6953ba054cf1233eb60739a200ddb10de068ff0d90620061d5908a908a90620074a8565b60405180910390a250505050505050565b6001600160a01b038116600090815260018301602052604081205415155b9392505050565b600080600084846040516020016200622592919062007720565b60408051601f198184030181529181528151602092830120600081815260109093529120549091504281111562006265576000809350935050506200628e565b600a5462006274904262007002565b600092835260106020526040909220829055506001925090505b9250929050565b60006001620062a5600b620064a3565b620062b191906200706d565b6013541080159150620062fd5760018301546040516001600160a01b03909116907f2afdc18061ac21cff7d9f11527ab9c8dec6fabd4edf6f894ed634bebd6a20d4590600090a2505050565b82600a01548211156200631257600a83018290555b600983015460ff16620063855760098301805460ff19166001908117909155601380546000906200634590849062007002565b909155505060018301546040516001600160a01b03909116907f4905ac32602da3fb8b4b7b00c285e5fc4c6c2308cc908b4a1e4e9625a29c90a390600090a25b505050565b6001600160a01b0381166000908152600d60205260409020600981015460ff1615620063b4575050565b6002805490820154604051630913db4760e01b81526001600160a01b03858116600483015290911690630913db4790602401602060405180830381865afa15801562006404573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200642a919062007018565b10156200649f576200643e81600062006295565b80546040516372c4db0f60e11b81526001600160a01b0390911660048201526110009063e589b61e90602401600060405180830381600087803b1580156200648557600080fd5b505af11580156200649a573d6000803e3d6000fd5b505050505b5050565b600062003950825490565b6000620062048383620068ce565b600080829050600381511080620064d4575060098151115b15620064e35750600092915050565b604181600081518110620064fb57620064fb620070b3565b016020015160f81c10806200652d5750605a81600081518110620065235762006523620070b3565b016020015160f81c115b156200653c5750600092915050565b60015b815181101562006654576030828281518110620065605762006560620070b3565b016020015160f81c10806200659157506039828281518110620065875762006587620070b3565b016020015160f81c115b8015620065e157506041828281518110620065b057620065b0620070b3565b016020015160f81c1080620065e15750605a828281518110620065d757620065d7620070b3565b016020015160f81c115b80156200663157506061828281518110620066005762006600620070b3565b016020015160f81c1080620066315750607a828281518110620066275762006627620070b3565b016020015160f81c115b1562006641575060009392505050565b6200664c816200711f565b90506200653f565b5060019392505050565b600060308414158062006672575060608214155b15620066815750600062006783565b60008585466040516020016200669a939291906200776a565b60408051808303601f1901815282825280516020918201208184528383019092529092506000919060208201818036833701905050905081602082015260008186868a8a604051602001620066f49594939291906200777c565b60408051808303601f190181526001808452838301909252925060009190602082018180368337019050509050815160016020830182602086016066600019fa6200673e57600080fd5b50600081600081518110620067575762006757620070b3565b016020015160f81c905060018114620067795760009550505050505062006783565b6001955050505050505b949350505050565b60008061200361dead604051620067a2906200694d565b6001600160a01b03928316815291166020820152606060408201819052600090820152608001604051809103906000f080158015620067e5573d6000803e3d6000fd5b509050806001600160a01b031663f399e22e3486866040518463ffffffff1660e01b815260040162006819929190620077b4565b6000604051808303818588803b1580156200683357600080fd5b505af115801562006848573d6000803e3d6000fd5b5093979650505050505050565b600062006204836001600160a01b038416620068fb565b600081604051602001620068819190620076d7565b6040516020818303038152906040528051906020012083604051602001620068aa9190620076d7565b6040516020818303038152906040528051906020012014905092915050565b015190565b6000826000018281548110620068e857620068e8620070b3565b9060005260206000200154905092915050565b6000818152600183016020526040812054620069445750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915562003950565b50600062003950565b610e9680620077db83390190565b6001600160a01b038116811462000ebe57600080fd5b6000602082840312156200698457600080fd5b813562006204816200695b565b60008083601f840112620069a457600080fd5b5081356001600160401b03811115620069bc57600080fd5b6020830191508360208285010111156200628e57600080fd5b60008060208385031215620069e957600080fd5b82356001600160401b0381111562006a0057600080fd5b62006a0e8582860162006991565b90969095509350505050565b6000806040838503121562006a2e57600080fd5b823562006a3b816200695b565b946020939093013593505050565b8035801515811462006a5a57600080fd5b919050565b6000806000806080858703121562006a7657600080fd5b843562006a83816200695b565b9350602085013562006a95816200695b565b92506040850135915062006aac6060860162006a49565b905092959194509250565b6001600160401b038116811462000ebe57600080fd5b60006020828403121562006ae057600080fd5b8135620062048162006ab7565b6000806040838503121562006b0157600080fd5b50508035926020909101359150565b600081518084526020808501945080840160005b8381101562006b4b5781516001600160a01b03168752958201959082019060010162006b24565b509495945050505050565b60005b8381101562006b7357818101518382015260200162006b59565b50506000910152565b6000815180845262006b9681602086016020860162006b56565b601f01601f19169290920160200192915050565b60808152600062006bbf608083018762006b10565b82810360208481019190915286518083528782019282019060005b8181101562006bf85784518352938301939183019160010162006bda565b5050848103604086015286518082528282019350600581901b8201830183890160005b8381101562006c4d57601f1985840301875262006c3a83835162006b7c565b9686019692509085019060010162006c1b565b5050809550505050505082606083015295945050505050565b6000608082840312156200374557600080fd5b600080600080600080600087890360e081121562006c9657600080fd5b883562006ca3816200695b565b975060208901356001600160401b038082111562006cc057600080fd5b62006cce8c838d0162006991565b909950975060408b013591508082111562006ce857600080fd5b62006cf68c838d0162006991565b90975095508591506060605f198401121562006d1157600080fd5b60608b01945060c08b013592508083111562006d2c57600080fd5b505062006d3c8a828b0162006c66565b91505092959891949750929550565b6000806040838503121562006d5f57600080fd5b823562006d6c816200695b565b915062006d7c6020840162006a49565b90509250929050565b60208152600082516080602084015262006da360a084018262006b7c565b90506020840151601f198085840301604086015262006dc3838362006b7c565b9250604086015191508085840301606086015262006de2838362006b7c565b925060608601519150808584030160808601525062006e02828262006b7c565b95945050505050565b6000806000806040858703121562006e2257600080fd5b84356001600160401b038082111562006e3a57600080fd5b62006e488883890162006991565b9096509450602087013591508082111562006e6257600080fd5b5062006e718782880162006991565b95989497509550505050565b60008060006040848603121562006e9357600080fd5b83356001600160401b038082111562006eab57600080fd5b818601915086601f83011262006ec057600080fd5b81358181111562006ed057600080fd5b8760208260051b850101111562006ee657600080fd5b6020928301955093505084013562006efe816200695b565b809150509250925092565b6001600160a01b0386811682528516602082015260a06040820181905260009062006f379083018662006b7c565b931515606083015250608001529392505050565b60006020828403121562006f5e57600080fd5b81356001600160401b0381111562006f7557600080fd5b620067838482850162006c66565b600181811c9082168062006f9857607f821691505b6020821081036200374557634e487b7160e01b600052602260045260246000fd5b8183823760009101908152919050565b634e487b7160e01b600052601160045260246000fd5b60008262006ffd57634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111562003950576200395062006fc9565b6000602082840312156200702b57600080fd5b5051919050565b8381526020810183905260608101600383106200705f57634e487b7160e01b600052602160045260246000fd5b826040830152949350505050565b8181038181111562003950576200395062006fc9565b808202811582820484141762003950576200395062006fc9565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b604081526000620070de604083018562006b10565b905060018060a01b03831660208301529392505050565b6001600160401b0382811682821603908082111562007118576200711862006fc9565b5092915050565b60006001820162007134576200713462006fc9565b5060010190565b6000808335601e198436030181126200715357600080fd5b8301803591506001600160401b038211156200716e57600080fd5b6020019150368190038213156200628e57600080fd5b601f8211156200638557600081815260208120601f850160051c81016020861015620071ad5750805b601f850160051c820191505b818110156200649a57828155600101620071b9565b6001600160401b03831115620071e857620071e86200709d565b6200720083620071f9835462006f83565b8362007184565b6000601f8411600181146200723757600085156200721e5750838201355b600019600387901b1c1916600186901b17835562007294565b600083815260209020601f19861690835b828110156200726a578685013582556020948501946001909201910162007248565b5086821015620072885760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b620072a782836200713b565b6001600160401b03811115620072c157620072c16200709d565b620072d981620072d2855462006f83565b8562007184565b6000601f821160018114620073105760008315620072f75750838201355b600019600385901b1c1916600184901b1785556200736d565b600085815260209020601f19841690835b8281101562007343578685013582556020948501946001909201910162007321565b5084821015620073615760001960f88660031b161c19848701351681555b505060018360011b0185555b505050506200738060208301836200713b565b62007390818360018601620071ce565b5050620073a160408301836200713b565b620073b1818360028601620071ce565b5050620073c260608301836200713b565b620073d2818360038601620071ce565b50505050565b8135620073e58162006ab7565b6001600160401b03811690508154816001600160401b031982161783556020840135620074128162006ab7565b6fffffffffffffffff0000000000000000604091821b166fffffffffffffffffffffffffffffffff19831684178117855590850135620074528162006ab7565b6001600160c01b0319929092169092179190911760809190911b67ffffffffffffffff60801b1617905550565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b602081526000620067836020830184866200747f565b604051601f8201601f191681016001600160401b0381118282101715620074e957620074e96200709d565b604052919050565b60006001600160401b038211156200750d576200750d6200709d565b5060051b60200190565b600060208083850312156200752b57600080fd5b82516001600160401b038111156200754257600080fd5b8301601f810185136200755457600080fd5b80516200756b6200756582620074f1565b620074be565b81815260059190911b820183019083810190878311156200758b57600080fd5b928401925b82841015620075b6578351620075a6816200695b565b8252928401929084019062007590565b979650505050505050565b60006020808385031215620075d557600080fd5b82516001600160401b0380821115620075ed57600080fd5b8185019150601f86818401126200760357600080fd5b8251620076146200756582620074f1565b81815260059190911b840185019085810190898311156200763457600080fd5b8686015b83811015620076c957805186811115620076525760008081fd5b8701603f81018c13620076655760008081fd5b888101516040888211156200767e576200767e6200709d565b62007691828901601f19168c01620074be565b8281528e82848601011115620076a75760008081fd5b620076b8838d830184870162006b56565b865250505091870191870162007638565b509998505050505050505050565b60008251620076eb81846020870162006b56565b9190910192915050565b6040815260006200770b6040830186886200747f565b8281036020840152620075b68185876200747f565b6bffffffffffffffffffffffff198360601b1681526000600383106200775657634e487b7160e01b600052602160045260246000fd5b5060f89190911b6014820152601501919050565b82848237909101908152602001919050565b6000865162007790818460208b0162006b56565b82018587823760009086019081528385823760009301928352509095945050505050565b6001600160a01b0383168152604060208201819052600090620067839083018462006b7c56fe608060405260405162000e9638038062000e96833981016040819052620000269162000497565b828162000036828260006200004d565b50620000449050826200008a565b505050620005ca565b6200005883620000e5565b600082511180620000665750805b1562000085576200008383836200012760201b620001691760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f620000b562000156565b604080516001600160a01b03928316815291841660208301520160405180910390a1620000e2816200018f565b50565b620000f08162000244565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606200014f838360405180606001604052806027815260200162000e6f60279139620002f8565b9392505050565b60006200018060008051602062000e4f83398151915260001b6200037760201b620001951760201c565b546001600160a01b0316919050565b6001600160a01b038116620001fa5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b806200022360008051602062000e4f83398151915260001b6200037760201b620001951760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6200025a816200037a60201b620001981760201c565b620002be5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401620001f1565b80620002237f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b6200037760201b620001951760201c565b6060600080856001600160a01b03168560405162000317919062000577565b600060405180830381855af49150503d806000811462000354576040519150601f19603f3d011682016040523d82523d6000602084013e62000359565b606091505b5090925090506200036d8683838762000389565b9695505050505050565b90565b6001600160a01b03163b151590565b60608315620003fd578251600003620003f5576001600160a01b0385163b620003f55760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401620001f1565b508162000409565b62000409838362000411565b949350505050565b815115620004225781518083602001fd5b8060405162461bcd60e51b8152600401620001f1919062000595565b80516001600160a01b03811681146200045657600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200048e57818101518382015260200162000474565b50506000910152565b600080600060608486031215620004ad57600080fd5b620004b8846200043e565b9250620004c8602085016200043e565b60408501519092506001600160401b0380821115620004e657600080fd5b818601915086601f830112620004fb57600080fd5b8151818111156200051057620005106200045b565b604051601f8201601f19908116603f011681019083821181831017156200053b576200053b6200045b565b816040528281528960208487010111156200055557600080fd5b6200056883602083016020880162000471565b80955050505050509250925092565b600082516200058b81846020870162000471565b9190910192915050565b6020815260008251806020840152620005b681604085016020870162000471565b601f01601f19169190910160400192915050565b61087580620005da6000396000f3fe60806040523661001357610011610017565b005b6100115b61001f6101a7565b6001600160a01b0316330361015f5760606001600160e01b0319600035166364d3180d60e11b810161005a576100536101da565b9150610157565b63587086bd60e11b6001600160e01b031982160161007a57610053610231565b63070d7c6960e41b6001600160e01b031982160161009a57610053610277565b621eb96f60e61b6001600160e01b03198216016100b9576100536102a8565b63a39f25e560e01b6001600160e01b03198216016100d9576100536102e8565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101676102fc565b565b606061018e83836040518060600160405280602781526020016108426027913961030c565b9392505050565b90565b6001600160a01b03163b151590565b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101e4610384565b60006101f33660048184610695565b81019061020091906106db565b905061021d8160405180602001604052806000815250600061038f565b505060408051602081019091526000815290565b60606000806102433660048184610695565b810190610250919061070c565b915091506102608282600161038f565b604051806020016040528060008152509250505090565b6060610281610384565b60006102903660048184610695565b81019061029d91906106db565b905061021d816103bb565b60606102b2610384565b60006102bc6101a7565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102f2610384565b60006102bc610412565b610167610307610412565b610421565b6060600080856001600160a01b03168560405161032991906107f2565b600060405180830381855af49150503d8060008114610364576040519150601f19603f3d011682016040523d82523d6000602084013e610369565b606091505b509150915061037a86838387610445565b9695505050505050565b341561016757600080fd5b610398836104c6565b6000825111806103a55750805b156103b6576103b48383610169565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103e46101a7565b604080516001600160a01b03928316815291841660208301520160405180910390a161040f81610506565b50565b600061041c6105af565b905090565b3660008037600080366000845af43d6000803e808015610440573d6000f35b3d6000fd5b606083156104b45782516000036104ad576001600160a01b0385163b6104ad5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014e565b50816104be565b6104be83836105d7565b949350505050565b6104cf81610601565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b03811661056b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014e565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101cb565b8151156105e75781518083602001fd5b8060405162461bcd60e51b815260040161014e919061080e565b6001600160a01b0381163b61066e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014e565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61058e565b600080858511156106a557600080fd5b838611156106b257600080fd5b5050820193919092039150565b80356001600160a01b03811681146106d657600080fd5b919050565b6000602082840312156106ed57600080fd5b61018e826106bf565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561071f57600080fd5b610728836106bf565b9150602083013567ffffffffffffffff8082111561074557600080fd5b818501915085601f83011261075957600080fd5b81358181111561076b5761076b6106f6565b604051601f8201601f19908116603f01168101908382118183101715610793576107936106f6565b816040528281528860208487010111156107ac57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60005b838110156107e95781810151838201526020016107d1565b50506000910152565b600082516108048184602087016107ce565b9190910192915050565b602081526000825180602084015261082d8160408501602087016107ce565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000ab53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c656400000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000a164736f6c6343000811000a", + }, + { + ContractAddr: common.HexToAddress(StakeCreditContract), + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/cfc0bd1127186a917ddc38fd38d22903034d3f0b", + Code: "6080604052600436106101855760003560e01c80635e607d76116100d1578063a5d059ca1161008a578063c2cde2b211610064578063c2cde2b2146104af578063d241c1ea146104cf578063dd62ed3e14610516578063f399e22e1461053657600080fd5b8063a5d059ca1461044f578063a9059cbb1461046f578063aad3ec961461048f57600080fd5b80635e607d761461038f578063647df759146103a457806370a08231146103c457806391faf0b4146103fa57806395d89b411461041a578063a457c2d71461042f57600080fd5b8063313ce5671161013e5780634056852d116101185780634056852d1461031c57806345bc4d101461033c5780634d99dd161461035c5780635c19a95c1461037c57600080fd5b8063313ce567146102a857806339509351146102c45780633a5381b5146102e457600080fd5b806306fdde03146101d45780630913db47146101ff578063095ea7b31461022d57806315d1f8981461025d57806318160ddd1461027357806323b872dd1461028857600080fd5b366101cf5733612002146101b557604051630f22c43960e41b815261200260048201526024015b60405180910390fd5b34609860008282546101c791906119f0565b925050819055005b600080fd5b3480156101e057600080fd5b506101e9610549565b6040516101f69190611a03565b60405180910390f35b34801561020b57600080fd5b5061021f61021a366004611a69565b6105db565b6040519081526020016101f6565b34801561023957600080fd5b5061024d610248366004611a8d565b610603565b60405190151581526020016101f6565b34801561026957600080fd5b5061021f60985481565b34801561027f57600080fd5b5060675461021f565b34801561029457600080fd5b5061024d6102a3366004611ab9565b61061b565b3480156102b457600080fd5b50604051601281526020016101f6565b3480156102d057600080fd5b5061024d6102df366004611a8d565b61063f565b3480156102f057600080fd5b50609754610304906001600160a01b031681565b6040516001600160a01b0390911681526020016101f6565b34801561032857600080fd5b5061021f610337366004611a69565b610661565b34801561034857600080fd5b5061021f610357366004611afa565b610728565b34801561036857600080fd5b5061021f610377366004611a8d565b61081b565b61021f61038a366004611a69565b610a02565b6103a261039d366004611b13565b610a55565b005b3480156103b057600080fd5b5061021f6103bf366004611afa565b610b1d565b3480156103d057600080fd5b5061021f6103df366004611a69565b6001600160a01b031660009081526065602052604090205490565b34801561040657600080fd5b5061021f610415366004611afa565b610b5c565b34801561042657600080fd5b506101e9610b97565b34801561043b57600080fd5b5061024d61044a366004611a8d565b610ba6565b34801561045b57600080fd5b5061021f61046a366004611a8d565b610c21565b34801561047b57600080fd5b5061024d61048a366004611a8d565b610d22565b34801561049b57600080fd5b5061021f6104aa366004611a8d565b610d30565b3480156104bb57600080fd5b5061021f6104ca366004611a69565b610ff2565b3480156104db57600080fd5b506104ef6104ea366004611a8d565b611010565b604080518351815260208085015190820152928101519083015260608201526080016101f6565b34801561052257600080fd5b5061021f610531366004611b3d565b6110c0565b6103a2610544366004611b76565b6110eb565b60606068805461055890611bfb565b80601f016020809104026020016040519081016040528092919081815260200182805461058490611bfb565b80156105d15780601f106105a6576101008083540402835291602001916105d1565b820191906000526020600020905b8154815290600101906020018083116105b457829003601f168201915b5050505050905090565b6001600160a01b0381166000908152606560205260408120546105fd90610b5c565b92915050565b600033610611818585611295565b5060019392505050565b6000336106298582856112ae565b610634858585611322565b506001949350505050565b60003361061181858561065283836110c0565b61065c91906119f0565b611295565b6001600160a01b0381166000908152609a6020526040812054600f81810b600160801b909204900b0380820361069a5750600092915050565b6000805b82811015610720576001600160a01b0385166000908152609a602052604081206106c79061133b565b6000818152609960209081526040918290208251606081018452815481526001820154928101839052600290910154928101929092529192509061070b90856119f0565b935050508061071990611c2f565b905061069e565b509392505050565b6000336120021461075057604051630f22c43960e41b815261200260048201526024016101ac565b6097546001600160a01b03166000908152606560205260408120549061077584610b1d565b90508181116107845780610786565b815b6097549091506000906107a2906001600160a01b03168361138f565b6040519091506000906110029083908381818185875af1925050503d80600081146107e9576040519150601f19603f3d011682016040523d82523d6000602084013e6107ee565b606091505b5050905080610810576040516312171d8360e31b815260040160405180910390fd5b50925050505b919050565b6000336120021461084357604051630f22c43960e41b815261200260048201526024016101ac565b8160000361086457604051631f2a200560e01b815260040160405180910390fd5b6001600160a01b03831660009081526065602052604090205482111561089d57604051631e9acf1760e31b815260040160405180910390fd5b6108a7838361138f565b905060006120026001600160a01b031663fc0c5ff16040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061090f9190611c48565b61091990426119f0565b6040805160608101825285815260208101859052908101829052909150600085610942816113c4565b60405160609290921b6bffffffffffffffffffffffff19166020830152603482015260540160408051601f19818403018152918152815160209283012060008181526099845282812086518155868501516001820155868401516002909101556001600160a01b038a168152609a90935291209091506109f990828154600160801b90819004600f0b6000818152600180860160205260409091209390935583546001600160801b03908116939091011602179055565b50505092915050565b60003361200214610a2a57604051630f22c43960e41b815261200260048201526024016101ac565b34600003610a4b57604051631f2a200560e01b815260040160405180910390fd5b6105fd82346113ec565b3361200214610a7b57604051630f22c43960e41b815261200260048201526024016101ac565b346000612710610a9567ffffffffffffffff851684611c61565b610a9f9190611c78565b90506000610aad8284611c9a565b90508060986000828254610ac191906119f0565b9091555050609754610adc906001600160a01b0316836113ec565b5060408051828152602081018490527ffb0e1482d62102ab9594f69d4c6d693749e3e2bf1c21af272f5456b2d5a4f6b591015b60405180910390a150505050565b6000609854600003610b42576040516307b76ce760e51b815260040160405180910390fd5b609854606754610b529084611c61565b6105fd9190611c78565b6000610b6760675490565b600003610b8757604051632fe8dae960e01b815260040160405180910390fd5b606754609854610b529084611c61565b60606069805461055890611bfb565b60003381610bb482866110c0565b905083811015610c145760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016101ac565b6106348286868403611295565b60003361200214610c4957604051630f22c43960e41b815261200260048201526024016101ac565b81600003610c6a57604051631f2a200560e01b815260040160405180910390fd5b6001600160a01b038316600090815260656020526040902054821115610ca357604051631e9acf1760e31b815260040160405180910390fd5b610cad838361138f565b6040519091506000906120029083908381818185875af1925050503d8060008114610cf4576040519150601f19603f3d011682016040523d82523d6000602084013e610cf9565b606091505b5050905080610d1b576040516312171d8360e31b815260040160405180910390fd5b5092915050565b600033610611818585611322565b60003361200214610d5857604051630f22c43960e41b815261200260048201526024016101ac565b610d60611415565b6001600160a01b0383166000908152609a6020526040902054600f81810b600160801b909204900b03600003610da95760405163ad41893760e01b815260040160405180910390fd5b811580610ddd57506001600160a01b0383166000908152609a6020526040902054600f81810b600160801b909204900b0382115b610de75781610e11565b6001600160a01b0383166000908152609a6020526040902054600f81810b600160801b909204900b035b915060005b8215610ee6576001600160a01b0384166000908152609a60205260408120610e3d9061133b565b60008181526099602090815260409182902082516060810184528154815260018201549281019290925260020154918101829052919250421015610e82575050610ee6565b6001600160a01b0386166000908152609a60205260409020610ea39061146e565b50600082815260996020908152604082208281556001810183905560020191909155810151610ed290846119f0565b9250610edd85611cad565b94505050610e16565b80600003610f07576040516303cd8e0960e21b815260040160405180910390fd5b60006120026001600160a01b031663e8f67c3b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f6d9190611c48565b90506000856001600160a01b03168284604051600060405180830381858888f193505050503d8060008114610fbe576040519150601f19603f3d011682016040523d82523d6000602084013e610fc3565b606091505b5050905080610fe5576040516312171d8360e31b815260040160405180910390fd5b50506001805590506105fd565b6001600160a01b0381166000908152609b60205260408120546105fd565b61103460405180606001604052806000815260200160008152602001600081525090565b6001600160a01b0383166000908152609a60205260408120819061105890856114ed565b60008181526099602090815260408083206001600160a01b038a168452609a9092529091205491925090600f81810b600160801b909204900b036040805160608101825283548152600184015460208201526002909301549083015290969095509350505050565b6001600160a01b03918216600090815260666020908152604080832093909416825291909152205490565b600054610100900460ff161580801561110b5750600054600160ff909116105b806111255750303b158015611125575060005460ff166001145b6111885760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016101ac565b6000805460ff1916600117905580156111ab576000805461ff0019166101001790555b33612002146111d157604051630f22c43960e41b815261200260048201526024016101ac565b600083836040516020016111e6929190611cc4565b60405160208183030381529060405290506000848460405160200161120c929190611cf4565b6040516020818303038152906040529050611227828261155e565b609780546001600160a01b0319166001600160a01b03881617905561124b346115a3565b5050801561128f576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602001610b0f565b50505050565b604051632028747160e01b815260040160405180910390fd5b60006112ba84846110c0565b9050600019811461128f57818110156113155760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016101ac565b61128f8484848403611295565b604051638cd22d1960e01b815260040160405180910390fd5b60006113568254600f81810b600160801b909204900b131590565b1561137457604051631ed9509560e11b815260040160405180910390fd5b508054600f0b60009081526001909101602052604090205490565b600061139a82610b5c565b90506113a68383611713565b80609860008282546113b89190611c9a565b90915550909392505050565b6001600160a01b0381166000908152609b602052604090208054600181018255905b50919050565b60006113f782610b1d565b90506114038382611847565b81609860008282546113b891906119f0565b6002600154036114675760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016101ac565b6002600155565b60006114898254600f81810b600160801b909204900b131590565b156114a757604051631ed9509560e11b815260040160405180910390fd5b508054600f0b6000818152600180840160205260408220805492905583546fffffffffffffffffffffffffffffffff191692016001600160801b03169190911790915590565b6000806115106114fc84611908565b855461150b9190600f0b611d12565b611976565b8454909150600160801b9004600f90810b9082900b1261154357604051632d0483c560e21b815260040160405180910390fd5b600f0b60009081526001939093016020525050604090205490565b600054610100900460ff166115855760405162461bcd60e51b81526004016101ac90611d3a565b60686115918382611de9565b50606961159e8282611de9565b505050565b600054610100900460ff166115ca5760405162461bcd60e51b81526004016101ac90611d3a565b60006120026001600160a01b031663ae0f336d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561160c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116309190611c48565b9050808211158061164a57506097546001600160a01b0316155b80611656575060675415155b1561167457604051632163e6b960e21b815260040160405180910390fd5b60006120026001600160a01b0316634e6fd6c46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116da9190611ea9565b90506116e68183611847565b60006116f28385611c9a565b60975490915061170b906001600160a01b031682611847565b505050609855565b6001600160a01b0382166117735760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016101ac565b6001600160a01b038216600090815260656020526040902054818110156117e75760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016101ac565b6001600160a01b03831660008181526065602090815260408083208686039055606780548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b6001600160a01b03821661189d5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016101ac565b80606760008282546118af91906119f0565b90915550506001600160a01b0382166000818152606560209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b60006001600160ff1b038211156119725760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b60648201526084016101ac565b5090565b80600f81900b81146108165760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20316044820152663238206269747360c81b60648201526084016101ac565b634e487b7160e01b600052601160045260246000fd5b808201808211156105fd576105fd6119da565b600060208083528351808285015260005b81811015611a3057858101830151858201604001528201611a14565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611a6657600080fd5b50565b600060208284031215611a7b57600080fd5b8135611a8681611a51565b9392505050565b60008060408385031215611aa057600080fd5b8235611aab81611a51565b946020939093013593505050565b600080600060608486031215611ace57600080fd5b8335611ad981611a51565b92506020840135611ae981611a51565b929592945050506040919091013590565b600060208284031215611b0c57600080fd5b5035919050565b600060208284031215611b2557600080fd5b813567ffffffffffffffff81168114611a8657600080fd5b60008060408385031215611b5057600080fd5b8235611b5b81611a51565b91506020830135611b6b81611a51565b809150509250929050565b600080600060408486031215611b8b57600080fd5b8335611b9681611a51565b9250602084013567ffffffffffffffff80821115611bb357600080fd5b818601915086601f830112611bc757600080fd5b813581811115611bd657600080fd5b876020828501011115611be857600080fd5b6020830194508093505050509250925092565b600181811c90821680611c0f57607f821691505b6020821081036113e657634e487b7160e01b600052602260045260246000fd5b600060018201611c4157611c416119da565b5060010190565b600060208284031215611c5a57600080fd5b5051919050565b80820281158282048414176105fd576105fd6119da565b600082611c9557634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156105fd576105fd6119da565b600081611cbc57611cbc6119da565b506000190190565b65029ba30b5b2960d51b815281836006830137660810dc99591a5d60ca1b91016006810191909152600d01919050565b611cdd60f21b81528183600283013760009101600201908152919050565b8082018281126000831280158216821582161715611d3257611d326119da565b505092915050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b634e487b7160e01b600052604160045260246000fd5b601f82111561159e57600081815260208120601f850160051c81016020861015611dc25750805b601f850160051c820191505b81811015611de157828155600101611dce565b505050505050565b815167ffffffffffffffff811115611e0357611e03611d85565b611e1781611e118454611bfb565b84611d9b565b602080601f831160018114611e4c5760008415611e345750858301515b600019600386901b1c1916600185901b178555611de1565b600085815260208120601f198616915b82811015611e7b57888601518255948401946001909101908401611e5c565b5085821015611e995787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060208284031215611ebb57600080fd5b8151611a8681611a5156fea164736f6c6343000811000a", + }, + { + ContractAddr: common.HexToAddress(GovernorContract), + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/cfc0bd1127186a917ddc38fd38d22903034d3f0b", + Code: "6080604052600436106103905760003560e01c80637d5e81e2116101dc578063c59057e411610102578063e23a9a52116100a0578063f23a6e611161006f578063f23a6e6114610cd6578063f8ce560a14610d02578063fc0c546a14610d22578063fe0d94c114610d4357600080fd5b8063e23a9a5214610bab578063ea0217cf14610c76578063eb9019d414610c96578063ece40cc114610cb657600080fd5b8063da95691a116100dc578063da95691a14610af1578063dd4e2ba514610b11578063ddf0b00914610b57578063deaaa7cc14610b7757600080fd5b8063c59057e414610a92578063d07f91e914610ab2578063d33219b414610ad257600080fd5b8063a890c9101161017a578063bc197c8111610149578063bc197c8114610a18578063c01f9e3714610a44578063c170ec0b14610a64578063c28bc2fa14610a7f57600080fd5b8063a890c910146109a3578063ab58fb8e146109c3578063ac431751146109e3578063b58131b014610a0357600080fd5b806391ddadf4116101b657806391ddadf41461092e57806397c3d3341461095a5780639a802a6d1461096e578063a7713a701461098e57600080fd5b80637d5e81e2146108d15780638129fc1c146108f157806384b0196e1461090657600080fd5b806332b8113e116102c15780634bf5d7e91161025f5780635f398a141161022e5780635f398a141461085157806360c4247f1461087157806370b0f660146108915780637b3c71d3146108b157600080fd5b80634bf5d7e9146107c1578063533ddd14146107d657806354fd4d5014610807578063567813881461083157600080fd5b80633e4f49e61161029b5780633e4f49e61461070957806340e58ee5146107365780634385963214610756578063452115d6146107a157600080fd5b806332b8113e146106aa5780633932abb1146106d35780633bccf4fd146106e957600080fd5b8063150b7a021161032e5780632656227d116103085780632656227d146105fc5780632d63f6931461060f5780632fe3e26114610646578063328dd9821461067a57600080fd5b8063150b7a0214610583578063160cbed7146105c757806324bc1a64146105e757600080fd5b8063034201811161036a57806303420181146104cb57806306f3f9e6146104eb57806306fdde031461050b578063143489d01461052d57600080fd5b8063013cf08b1461040057806301ffc9a71461047b57806302a251a3146104ab57600080fd5b366103fb573061039e610d56565b6001600160a01b0316146103f95760405162461bcd60e51b815260206004820152601f60248201527f476f7665726e6f723a206d7573742073656e6420746f206578656375746f720060448201526064015b60405180910390fd5b005b600080fd5b34801561040c57600080fd5b5061042061041b3660046156a8565b610d70565b604080519a8b526001600160a01b0390991660208b0152978901969096526060880194909452608087019290925260a086015260c085015260e084015215156101008301521515610120820152610140015b60405180910390f35b34801561048757600080fd5b5061049b6104963660046156c1565b610e2b565b6040519015158152602001610472565b3480156104b757600080fd5b50610162545b604051908152602001610472565b3480156104d757600080fd5b506104bd6104e6366004615807565b610e3c565b3480156104f757600080fd5b506103f96105063660046156a8565b610f34565b34801561051757600080fd5b50610520610fbf565b60405161047291906158fd565b34801561053957600080fd5b5061056b6105483660046156a8565b60009081526101306020526040902054600160401b90046001600160a01b031690565b6040516001600160a01b039091168152602001610472565b34801561058f57600080fd5b506105ae61059e366004615925565b630a85bd0160e11b949350505050565b6040516001600160e01b03199091168152602001610472565b3480156105d357600080fd5b506104bd6105e2366004615afc565b611052565b3480156105f357600080fd5b506104bd611257565b6104bd61060a366004615afc565b61127d565b34801561061b57600080fd5b506104bd61062a3660046156a8565b600090815261013060205260409020546001600160401b031690565b34801561065257600080fd5b506104bd7fb3b3f3b703cd84ce352197dcff232b1b5d3cfb2025ce47cf04742d0651f1af8881565b34801561068657600080fd5b5061069a6106953660046156a8565b611370565b6040516104729493929190615c54565b3480156106b657600080fd5b5061025c546040516001600160401b039091168152602001610472565b3480156106df57600080fd5b50610161546104bd565b3480156106f557600080fd5b506104bd610704366004615ca1565b611602565b34801561071557600080fd5b506107296107243660046156a8565b611678565b6040516104729190615d05565b34801561074257600080fd5b506103f96107513660046156a8565b611683565b34801561076257600080fd5b5061049b610771366004615d2d565b6000828152610193602090815260408083206001600160a01b038516845260080190915290205460ff1692915050565b3480156107ad57600080fd5b506104bd6107bc366004615afc565b6116ae565b3480156107cd57600080fd5b506105206116c5565b3480156107e257600080fd5b5061049b6107f1366004615d5d565b61028e6020526000908152604090205460ff1681565b34801561081357600080fd5b506040805180820190915260018152603160f81b6020820152610520565b34801561083d57600080fd5b506104bd61084c366004615d7a565b611772565b34801561085d57600080fd5b506104bd61086c366004615da6565b61179b565b34801561087d57600080fd5b506104bd61088c3660046156a8565b6117e5565b34801561089d57600080fd5b506103f96108ac3660046156a8565b61189a565b3480156108bd57600080fd5b506104bd6108cc366004615e29565b611922565b3480156108dd57600080fd5b506104bd6108ec366004615e82565b611974565b3480156108fd57600080fd5b506103f9611a04565b34801561091257600080fd5b5061091b611e41565b6040516104729796959493929190615f22565b34801561093a57600080fd5b50610943611edf565b60405165ffffffffffff9091168152602001610472565b34801561096657600080fd5b5060646104bd565b34801561097a57600080fd5b506104bd610989366004615f84565b611f53565b34801561099a57600080fd5b506104bd611f6a565b3480156109af57600080fd5b506103f96109be366004615d5d565b611f97565b3480156109cf57600080fd5b506104bd6109de3660046156a8565b61201f565b3480156109ef57600080fd5b506103f96109fe366004615fdc565b6120bb565b348015610a0f57600080fd5b506104bd61269a565b348015610a2457600080fd5b506105ae610a3336600461603b565b63bc197c8160e01b95945050505050565b348015610a5057600080fd5b506104bd610a5f3660046156a8565b6126a6565b348015610a7057600080fd5b5061028f5461049b9060ff1681565b6103f9610a8d3660046160ce565b6126b1565b348015610a9e57600080fd5b506104bd610aad366004615afc565b6127c1565b348015610abe57600080fd5b506103f9610acd366004616111565b6127fb565b348015610ade57600080fd5b506101f8546001600160a01b031661056b565b348015610afd57600080fd5b506104bd610b0c36600461613a565b612883565b348015610b1d57600080fd5b5060408051808201909152601a81527f737570706f72743d627261766f2671756f72756d3d627261766f0000000000006020820152610520565b348015610b6357600080fd5b506103f9610b723660046156a8565b61290a565b348015610b8357600080fd5b506104bd7f150214d74d59b7d1e90c73fc22ef3d991dd0a76b046543d4d80ab92d2a50328f81565b348015610bb757600080fd5b50610c46610bc6366004615d2d565b6040805160608101825260008082526020820181905291810191909152506000918252610193602090815260408084206001600160a01b0393909316845260089092018152918190208151606081018352905460ff8082161515835261010082041693820193909352620100009092046001600160601b03169082015290565b6040805182511515815260208084015160ff1690820152918101516001600160601b031690820152606001610472565b348015610c8257600080fd5b506103f9610c913660046156a8565b61292d565b348015610ca257600080fd5b506104bd610cb13660046161db565b6129b5565b348015610cc257600080fd5b506103f9610cd13660046156a8565b6129d6565b348015610ce257600080fd5b506105ae610cf1366004616207565b63f23a6e6160e01b95945050505050565b348015610d0e57600080fd5b506104bd610d1d3660046156a8565b612a5e565b348015610d2e57600080fd5b506101c55461056b906001600160a01b031681565b6103f9610d513660046156a8565b612aed565b6000610d6b6101f8546001600160a01b031690565b905090565b8060008080808080808080610d848a61201f565b60008c815261013060205260409020549098506001600160401b03169650610dab8b6126a6565b60008c81526101936020526040812080546005820154600683015460078401546001600160a01b039093169e50949a509850929650919450610dec8d611678565b90506002816007811115610e0257610e02615cef565b1493506007816007811115610e1957610e19615cef565b14925050509193959799509193959799565b6000610e3682612b10565b92915050565b600080610ee0610ed87fb3b3f3b703cd84ce352197dcff232b1b5d3cfb2025ce47cf04742d0651f1af888c8c8c8c604051610e7892919061626f565b60405180910390208b80519060200120604051602001610ebd959493929190948552602085019390935260ff9190911660408401526060830152608082015260a00190565b60405160208183030381529060405280519060200120612b35565b868686612b62565b9050610f268a828b8b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508d9250612b80915050565b9a9950505050505050505050565b610f3c610d56565b6001600160a01b0316336001600160a01b031614610f6c5760405162461bcd60e51b81526004016103f09061627f565b30610f75610d56565b6001600160a01b031614610fb35760008036604051610f9592919061626f565b604051809103902090505b80610fac610131612b8f565b03610fa057505b610fbc81612c0e565b50565b606061012f8054610fcf906162b6565b80601f0160208091040260200160405190810160405280929190818152602001828054610ffb906162b6565b80156110485780601f1061101d57610100808354040283529160200191611048565b820191906000526020600020905b81548152906001019060200180831161102b57829003601f168201915b5050505050905090565b600080611061868686866127c1565b9050600461106e82611678565b600781111561107f5761107f615cef565b1461109c5760405162461bcd60e51b81526004016103f0906162f0565b6101f8546040805163793d064960e11b815290516000926001600160a01b03169163f27a0c929160048083019260209291908290030181865afa1580156110e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061110b9190616331565b6101f85460405163b1c5f42760e01b81529192506001600160a01b03169063b1c5f42790611146908a908a908a906000908b9060040161634a565b602060405180830381865afa158015611163573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111879190616331565b60008381526101f96020526040808220929092556101f85491516308f2a0bb60e41b81526001600160a01b0390921691638f2a0bb0916111d4918b918b918b91908b908990600401616398565b600060405180830381600087803b1580156111ee57600080fd5b505af1158015611202573d6000803e3d6000fd5b505050507f9a2e42fd6722813d69113e7d0079d3d940171428df7373df9c7f7617cfda28928282426112349190616406565b604080519283526020830191909152015b60405180910390a15095945050505050565b6000610d6b6001611266611edf565b6112709190616419565b65ffffffffffff16612a5e565b60008061128c868686866127c1565b9050600061129982611678565b905060048160078111156112af576112af615cef565b14806112cc575060058160078111156112ca576112ca615cef565b145b6112e85760405162461bcd60e51b81526004016103f0906162f0565b6000828152610130602052604090819020600201805460ff19166001179055517f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f906113379084815260200190565b60405180910390a161134c8288888888612d7f565b6113598288888888612e20565b6113668288888888612ea7565b5095945050505050565b60608060608060006101936000878152602001908152602001600020905080600101816002018260030183600401838054806020026020016040519081016040528092919081815260200182805480156113f357602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116113d5575b505050505093508280548060200260200160405190810160405280929190818152602001828054801561144557602002820191906000526020600020905b815481526020019060010190808311611431575b5050505050925081805480602002602001604051908101604052809291908181526020016000905b8282101561151957838290600052602060002001805461148c906162b6565b80601f01602080910402602001604051908101604052809291908181526020018280546114b8906162b6565b80156115055780601f106114da57610100808354040283529160200191611505565b820191906000526020600020905b8154815290600101906020018083116114e857829003601f168201915b50505050508152602001906001019061146d565b50505050915080805480602002602001604051908101604052809291908181526020016000905b828210156115ec57838290600052602060002001805461155f906162b6565b80601f016020809104026020016040519081016040528092919081815260200182805461158b906162b6565b80156115d85780601f106115ad576101008083540402835291602001916115d8565b820191906000526020600020905b8154815290600101906020018083116115bb57829003601f168201915b505050505081526020019060010190611540565b5050505090509450945094509450509193509193565b604080517f150214d74d59b7d1e90c73fc22ef3d991dd0a76b046543d4d80ab92d2a50328f602082015290810186905260ff85166060820152600090819061165090610ed890608001610ebd565b905061166d87828860405180602001604052806000815250612ee2565b979650505050505050565b6000610e3682612f05565b60008060008061169285613052565b93509350935093506116a6848484846116ae565b505050505050565b60006116bc858585856132e3565b95945050505050565b6101c55460408051634bf5d7e960e01b815290516060926001600160a01b031691634bf5d7e99160048083019260009291908290030181865afa92505050801561173157506040513d6000823e601f3d908101601f1916820160405261172e919081019061643f565b60015b61176d575060408051808201909152601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c74000000602082015290565b919050565b60008033905061179384828560405180602001604052806000815250612ee2565b949350505050565b60008033905061166d87828888888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a9250612b80915050565b61022b546000908082036117fe57505061022a54919050565b600061022b61180e6001846164ac565b8154811061181e5761181e6164bf565b60009182526020918290206040805180820190915291015463ffffffff8116808352600160201b9091046001600160e01b0316928201929092529150841061187457602001516001600160e01b03169392505050565b611889611880856133ae565b61022b90613417565b6001600160e01b0316949350505050565b6118a2610d56565b6001600160a01b0316336001600160a01b0316146118d25760405162461bcd60e51b81526004016103f09061627f565b306118db610d56565b6001600160a01b03161461191957600080366040516118fb92919061626f565b604051809103902090505b80611912610131612b8f565b0361190657505b610fbc816134ca565b60008033905061196a86828787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612ee292505050565b9695505050505050565b600061197e61350d565b60005b85518110156119f75761028e60008783815181106119a1576119a16164bf565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff166119e557604051630b094f2760e31b815260040160405180910390fd5b806119ef816164d5565b915050611981565b506116bc858585856135b8565b600054610100900460ff1615808015611a245750600054600160ff909116105b80611a3e5750303b158015611a3e575060005460ff166001145b611aa15760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016103f0565b6000805460ff191660011790558015611ac4576000805461ff0019166101001790555b334114611ae45760405163022d8c9560e31b815260040160405180910390fd5b3a15611b03576040516383f1b1d360e01b815260040160405180910390fd5b611b2f6040518060400160405280600b81526020016a2129a1a3b7bb32b93737b960a91b815250613620565b611b49620151806212750068056bc75e2d63100000613677565b611b516136ae565b611b5c6120056136d5565b611b67612006613705565b611b71600a613735565b611b7d62015180613765565b61028e6020527ff0f52cefb444f33092ac77280e2ff9c808a9c078a96d3cd7513137548137ed8f8054600160ff1991821681179092557fb2c9e894c6f17bfc84a6708e0ea85c2729271d7cae0a8d875cd1080fb415e7a080548216831790557fd8ceb939a734f5a4e0a6fede9e31504e16ac856b555e8bac20ad743b9ff2976a80548216831790557f2a7b967fc66f4b36023165170b23a76f880d3dbbf244a856aeee9e670cef725980548216831790557fdb1a1113bac2e4f0e6f8c2f2bc4f6dbecf1fccb033d5df1b55b5c5ad6c20ac7980548216831790557f8b1888b379fb3b749668d86c5bf8aaada8e2276c6ced3a4efcc1e877827ce0b380548216831790557feeeea8d485053a64711f2c5802d2cc63251dd394956c140a2e30db7cef242ec580548216831790557f4cdb1a6c4b56f62f27f7202d75e865c2405f138cb32ec45019c0f2ca8f91e47280548216831790557f49d6c403a3197b15e024f109c83eb730d7af1a8b49fc6f820e09bad2597c14c980548216831790557f7a41b38ceb33f296c1ff3db5ffcc6542acb091d5fb27586f3c551dd2ebac063880548216831790557f701fe333ee20fad5d5a6a9930dddd3fb815af1d976d5250e394e39d6e4123e3880548216831790557fee7ba9842df249188adc0fc380980c3099f608b602924e083dd61e8e70845b4a80548216831790557f29973aeebf3c17f2c3a9cf7ace17f2798aa544e1ea7427938024cde6df46bac180548216831790557f74c0d6e29c82d6628d5f083f86fc15f0c6acef97321252a1eee0bd893dae276580548216831790556120066000527f1bdfc01e60036e5be56ae85d8394ddf727e1021b3d74de5b554fedea2de43767805490911690911790558015610fbc576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b6000606080600080600060606065546000801b148015611e615750606654155b611ea55760405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b60448201526064016103f0565b611ead613795565b611eb56137a4565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b6101c554604080516324776b7d60e21b815290516000926001600160a01b0316916391ddadf49160048083019260209291908290030181865afa925050508015611f46575060408051601f3d908101601f19168201909252611f43918101906164ee565b60015b61176d57610d6b436137b3565b6000611f6084848461381a565b90505b9392505050565b61022b5460009015611f8f57611f8161022b613891565b6001600160e01b0316905090565b5061022a5490565b611f9f610d56565b6001600160a01b0316336001600160a01b031614611fcf5760405162461bcd60e51b81526004016103f09061627f565b30611fd8610d56565b6001600160a01b0316146120165760008036604051611ff892919061626f565b604051809103902090505b8061200f610131612b8f565b0361200357505b610fbc816138c1565b6101f85460008281526101f9602052604080822054905163d45c443560e01b81526004810191909152909182916001600160a01b039091169063d45c443590602401602060405180830381865afa15801561207e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120a29190616331565b9050806001146120b25780611f63565b60009392505050565b33611007146120e157604051630f22c43960e41b815261100760048201526024016103f0565b6121476040518060400160405280600b81526020016a766f74696e6744656c617960a81b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505061392c9050565b156121f057602081146121755783838383604051630a5a604160e01b81526004016103f0949392919061653f565b604080516020601f84018190048102820181019092528281526000916121b69185858083850183828082843760009201919091525092939250506139859050565b9050806000036121e15784848484604051630a5a604160e01b81526004016103f0949392919061653f565b6121ea816134ca565b50612657565b6122576040518060400160405280600c81526020016b1d9bdd1a5b99d4195c9a5bd960a21b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505061392c9050565b156122fa57602081146122855783838383604051630a5a604160e01b81526004016103f0949392919061653f565b604080516020601f84018190048102820181019092528281526000916122c69185858083850183828082843760009201919091525092939250506139859050565b9050806000036122f15784848484604051630a5a604160e01b81526004016103f0949392919061653f565b6121ea8161398a565b612366604051806040016040528060118152602001701c1c9bdc1bdcd85b151a1c995cda1bdb19607a1b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505061392c9050565b1561240957602081146123945783838383604051630a5a604160e01b81526004016103f0949392919061653f565b604080516020601f84018190048102820181019092528281526000916123d59185858083850183828082843760009201919091525092939250506139859050565b9050806000036124005784848484604051630a5a604160e01b81526004016103f0949392919061653f565b6121ea81613a2d565b6124736040518060400160405280600f81526020016e38bab7b93ab6a73ab6b2b930ba37b960891b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505061392c9050565b1561251657602081146124a15783838383604051630a5a604160e01b81526004016103f0949392919061653f565b604080516020601f84018190048102820181019092528281526000916124e29185858083850183828082843760009201919091525092939250506139859050565b90508060000361250d5784848484604051630a5a604160e01b81526004016103f0949392919061653f565b6121ea81612c0e565b612585604051806040016040528060148152602001736d696e506572696f64416674657251756f72756d60601b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505061392c9050565b1561263657600881146125b35783838383604051630a5a604160e01b81526004016103f0949392919061653f565b60006125f9600884848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506139859050565b9050806001600160401b031660000361262d5784848484604051630a5a604160e01b81526004016103f0949392919061653f565b6121ea81613a70565b838383836040516325ee20d560e21b81526004016103f0949392919061653f565b7ff1ce9b2cbf50eeb05769a29e2543fd350cab46894a7dd9978a12d534bb20e6338484848460405161268c949392919061653f565b60405180910390a150505050565b6000610d6b6101635490565b6000610e3682613adc565b6126b9610d56565b6001600160a01b0316336001600160a01b0316146126e95760405162461bcd60e51b81526004016103f09061627f565b306126f2610d56565b6001600160a01b031614612730576000803660405161271292919061626f565b604051809103902090505b80612729610131612b8f565b0361271d57505b600080856001600160a01b031685858560405161274e92919061626f565b60006040518083038185875af1925050503d806000811461278b576040519150601f19603f3d011682016040523d82523d6000602084013e612790565b606091505b50915091506127b8828260405180606001604052806028815260200161692760289139613b1a565b50505050505050565b6000848484846040516020016127da9493929190616566565b60408051601f19818403018152919052805160209091012095945050505050565b612803610d56565b6001600160a01b0316336001600160a01b0316146128335760405162461bcd60e51b81526004016103f09061627f565b3061283c610d56565b6001600160a01b03161461287a576000803660405161285c92919061626f565b604051809103902090505b80612873610131612b8f565b0361286757505b610fbc81613a70565b600082518451146128e75760405162461bcd60e51b815260206004820152602860248201527f476f7665726e6f72427261766f3a20696e76616c6964207369676e61747572656044820152670e640d8cadccee8d60c31b60648201526084016103f0565b6128f5338787878787613b33565b61196a86866129048787613bf1565b85611974565b60008060008061291985613052565b93509350935093506116a684848484611052565b612935610d56565b6001600160a01b0316336001600160a01b0316146129655760405162461bcd60e51b81526004016103f09061627f565b3061296e610d56565b6001600160a01b0316146129ac576000803660405161298e92919061626f565b604051809103902090505b806129a5610131612b8f565b0361299957505b610fbc8161398a565b6000611f6383836129d160408051602081019091526000815290565b61381a565b6129de610d56565b6001600160a01b0316336001600160a01b031614612a0e5760405162461bcd60e51b81526004016103f09061627f565b30612a17610d56565b6001600160a01b031614612a555760008036604051612a3792919061626f565b604051809103902090505b80612a4e610131612b8f565b03612a4257505b610fbc81613a2d565b60006064612a6b836117e5565b6101c554604051632394e7a360e21b8152600481018690526001600160a01b0390911690638e539e8c90602401602060405180830381865afa158015612ab5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ad99190616331565b612ae391906165b1565b610e3691906165de565b600080600080612afc85613052565b93509350935093506116a68484848461127d565b60006001600160e01b03198216636e665ced60e01b1480610e365750610e3682613d23565b6000610e36612b42613dbf565b8360405161190160f01b8152600281019290925260228201526042902090565b6000806000612b7387878787613dc9565b9150915061136681613e8d565b600061196a8686868686613fd7565b6000612baa8254600f81810b600160801b909204900b131590565b15612bc857604051631ed9509560e11b815260040160405180910390fd5b508054600f0b6000818152600180840160205260408220805492905583546fffffffffffffffffffffffffffffffff191692016001600160801b03169190911790915590565b6064811115612c915760405162461bcd60e51b815260206004820152604360248201527f476f7665726e6f72566f74657351756f72756d4672616374696f6e3a2071756f60448201527f72756d4e756d657261746f72206f7665722071756f72756d44656e6f6d696e616064820152623a37b960e91b608482015260a4016103f0565b6000612c9b611f6a565b90508015801590612cad575061022b54155b15612d1257604080518082019091526000815261022b9060208101612cd1846140da565b6001600160e01b039081169091528254600181018455600093845260209384902083519490930151909116600160201b0263ffffffff909316929092179101555b612d40612d2d612d20611edf565b65ffffffffffff166133ae565b612d36846140da565b61022b9190614143565b505060408051828152602081018490527f0553476bf02ef2726e8ce5ced78d63e26e602e4a2257b1f559418e24b4633997910160405180910390a15050565b30612d88610d56565b6001600160a01b031614612e195760005b84518110156116a657306001600160a01b0316858281518110612dbe57612dbe6164bf565b60200260200101516001600160a01b031603612e0957612e09838281518110612de957612de96164bf565b60200260200101518051906020012061013161415e90919063ffffffff16565b612e12816164d5565b9050612d99565b5050505050565b60005b8451811015612e995761028e6000868381518110612e4357612e436164bf565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16612e8757604051630b094f2760e31b815260040160405180910390fd5b80612e91816164d5565b915050612e23565b50612e19858585858561419a565b30612eb0610d56565b6001600160a01b031614612e195761013154600f81810b600160801b909204900b1315612e1957600061013155612e19565b60006116bc85858585612f0060408051602081019091526000815290565b612b80565b600080612f118361420f565b90506004816007811115612f2757612f27615cef565b14612f325792915050565b60008381526101f9602052604090205480612f4e575092915050565b6101f854604051632ab0f52960e01b8152600481018390526001600160a01b0390911690632ab0f52990602401602060405180830381865afa158015612f98573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fbc9190616600565b15612fcb575060079392505050565b6101f854604051632c258a9f60e11b8152600481018390526001600160a01b039091169063584b153e90602401602060405180830381865afa158015613015573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130399190616600565b15613048575060059392505050565b5060029392505050565b606080606060008061019360008781526020019081526020016000209050806001018160020161322483600301805480602002602001604051908101604052809291908181526020016000905b8282101561314b5783829060005260206000200180546130be906162b6565b80601f01602080910402602001604051908101604052809291908181526020018280546130ea906162b6565b80156131375780601f1061310c57610100808354040283529160200191613137565b820191906000526020600020905b81548152906001019060200180831161311a57829003601f168201915b50505050508152602001906001019061309f565b50505060048601805460408051602080840282018101909252828152935060009084015b8282101561321b57838290600052602060002001805461318e906162b6565b80601f01602080910402602001604051908101604052809291908181526020018280546131ba906162b6565b80156132075780601f106131dc57610100808354040283529160200191613207565b820191906000526020600020905b8154815290600101906020018083116131ea57829003601f168201915b50505050508152602001906001019061316f565b50505050613bf1565b600984015483546040805160208084028201810190925282815291869183018282801561327a57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161325c575b50505050509350828054806020026020016040519081016040528092919081815260200182805480156132cc57602002820191906000526020600020905b8154815260200190600101908083116132b8575b505050505092509450945094509450509193509193565b6000806132f2868686866127c1565b600081815261019360205260409020549091506001600160a01b031633811480613346575061331f61269a565b61334482600161332d611edf565b6133379190616419565b65ffffffffffff166129b5565b105b6133a25760405162461bcd60e51b815260206004820152602760248201527f476f7665726e6f72427261766f3a2070726f706f7365722061626f76652074686044820152661c995cda1bdb1960ca1b60648201526084016103f0565b61166d87878787614347565b600063ffffffff8211156134135760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201526532206269747360d01b60648201526084016103f0565b5090565b81546000908181600581111561347457600061343284614355565b61343c90856164ac565b60008881526020902090915081015463ffffffff908116908716101561346457809150613472565b61346f816001616406565b92505b505b60006134828787858561443d565b905080156134bd576134a7876134996001846164ac565b600091825260209091200190565b54600160201b90046001600160e01b031661166d565b6000979650505050505050565b6101615460408051918252602082018390527fc565b045403dc03c2eea82b81a0465edad9e2e7fc4d97e11421c209da93d7a93910160405180910390a161016155565b61028f5460ff166135b6576a084595161401484a0000006120056001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613564573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135889190616331565b10156135a7576040516311b6707f60e01b815260040160405180910390fd5b61028f805460ff191660011790555b565b600061361433868686516001600160401b038111156135d9576135d9615744565b60405190808252806020026020018201604052801561360c57816020015b60608152602001906001900390816135f75790505b508787613b33565b6116bc85858585614493565b600054610100900460ff166136475760405162461bcd60e51b81526004016103f090616622565b61366e816136696040805180820190915260018152603160f81b602082015290565b614872565b610fbc816148c1565b600054610100900460ff1661369e5760405162461bcd60e51b81526004016103f090616622565b6136a98383836148f9565b505050565b600054610100900460ff166135b65760405162461bcd60e51b81526004016103f090616622565b600054610100900460ff166136fc5760405162461bcd60e51b81526004016103f090616622565b610fbc8161493b565b600054610100900460ff1661372c5760405162461bcd60e51b81526004016103f090616622565b610fbc81614985565b600054610100900460ff1661375c5760405162461bcd60e51b81526004016103f090616622565b610fbc816149ac565b600054610100900460ff1661378c5760405162461bcd60e51b81526004016103f090616622565b610fbc816149d3565b606060678054610fcf906162b6565b606060688054610fcf906162b6565b600065ffffffffffff8211156134135760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203460448201526538206269747360d01b60648201526084016103f0565b6101c554604051630748d63560e31b81526001600160a01b038581166004830152602482018590526000921690633a46b1a890604401602060405180830381865afa15801561386d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f609190616331565b805460009080156120b2576138ab836134996001846164ac565b54600160201b90046001600160e01b0316611f63565b6101f854604080516001600160a01b03928316815291831660208301527f08f74ea46ef7894f65eabfb5e6e695de773a000b47c529ab559178069b226401910160405180910390a16101f880546001600160a01b0319166001600160a01b0392909216919091179055565b60008160405160200161393f919061666d565b6040516020818303038152906040528051906020012083604051602001613966919061666d565b6040516020818303038152906040528051906020012014905092915050565b015190565b600081116139ea5760405162461bcd60e51b815260206004820152602760248201527f476f7665726e6f7253657474696e67733a20766f74696e6720706572696f6420604482015266746f6f206c6f7760c81b60648201526084016103f0565b6101625460408051918252602082018390527f7e3f7f0708a84de9203036abaa450dccc85ad5ff52f78c170f3edb55cf5e8828910160405180910390a161016255565b6101635460408051918252602082018390527fccb45da8d5717e6c4544694297c4ba5cf151d455c9bb0ed4fc7a38411bc05461910160405180910390a161016355565b61025c54604080516001600160401b03928316815291831660208301527f7ca4ac117ed3cdce75c1161d8207c440389b1a15d69d096831664657c07dafc2910160405180910390a161025c805467ffffffffffffffff19166001600160401b0392909216919091179055565b60008181526101306020526040812060010154610e36906001600160401b0316600084815261025d60205260409020546001600160401b03166149fa565b60608315613b29575081611f63565b611f638383614a10565b805160208201206000613b518787613b4b8888613bf1565b856127c1565b600081815261019360205260409020600981015491925090613be65780546001600160a01b0319166001600160a01b038a161781558751613b9b90600183019060208b01906154df565b508651613bb190600283019060208a0190615540565b508551613bc7906003830190602089019061557b565b508451613bdd90600483019060208801906155cd565b50600981018390555b505050505050505050565b6060600082516001600160401b03811115613c0e57613c0e615744565b604051908082528060200260200182016040528015613c4157816020015b6060815260200190600190039081613c2c5790505b50905060005b8151811015613d1b57848181518110613c6257613c626164bf565b602002602001015151600014613cd257848181518110613c8457613c846164bf565b602002602001015180519060200120848281518110613ca557613ca56164bf565b6020026020010151604051602001613cbe929190616689565b604051602081830303815290604052613ced565b838181518110613ce457613ce46164bf565b60200260200101515b828281518110613cff57613cff6164bf565b602002602001018190525080613d14906164d5565b9050613c47565b509392505050565b600063288ace0360e11b6318df743f60e31b63bf26d89760e01b6379dd796f60e01b6001600160e01b03198616821480613d6957506001600160e01b0319868116908216145b80613d8057506001600160e01b0319868116908516145b80613d9b57506001600160e01b03198616630271189760e51b145b8061196a57506301ffc9a760e01b6001600160e01b03198716149695505050505050565b6000610d6b614a3a565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115613e005750600090506003613e84565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015613e54573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116613e7d57600060019250925050613e84565b9150600090505b94509492505050565b6000816004811115613ea157613ea1615cef565b03613ea95750565b6001816004811115613ebd57613ebd615cef565b03613f0a5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016103f0565b6002816004811115613f1e57613f1e615cef565b03613f6b5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016103f0565b6003816004811115613f7f57613f7f615cef565b03610fbc5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016103f0565b600080613fe78787878787614aae565b600088815261025d60205260409020549091506001600160401b0316158015614014575061401487614c04565b1561196a57600061402e61025c546001600160401b031690565b614036611edf565b65ffffffffffff1661404891906166ba565b9050614053886126a6565b816001600160401b031611156140a2576040516001600160401b038216815288907f541f725fb9f7c98a30cc9c0ff32fbb14358cd7159c847a3aa20a2bdc442ba5119060200160405180910390a25b600088815261025d60205260409020805467ffffffffffffffff19166001600160401b03929092169190911790559695505050505050565b60006001600160e01b038211156134135760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20326044820152663234206269747360c81b60648201526084016103f0565b600080614151858585614c44565b915091505b935093915050565b8154600160801b90819004600f0b6000818152600180860160205260409091209390935583546001600160801b03908116939091011602179055565b6101f85460405163e38335e560e01b81526001600160a01b039091169063e38335e59034906141d690889088908890600090899060040161634a565b6000604051808303818588803b1580156141ef57600080fd5b505af1158015614203573d6000803e3d6000fd5b50505050505050505050565b600081815261013060205260408120600281015460ff16156142345750600792915050565b6002810154610100900460ff161561424f5750600292915050565b600083815261013060205260408120546001600160401b0316908190036142b85760405162461bcd60e51b815260206004820152601d60248201527f476f7665726e6f723a20756e6b6e6f776e2070726f706f73616c20696400000060448201526064016103f0565b60006142c2611edf565b65ffffffffffff1690508082106142de57506000949350505050565b60006142e9866126a6565b90508181106142fe5750600195945050505050565b61430786614c04565b801561432a57506000868152610193602052604090206006810154600590910154115b1561433b5750600495945050505050565b50600395945050505050565b60006116bc85858585614de3565b60008160000361436757506000919050565b6000600161437484614e99565b901c6001901b9050600181848161438d5761438d6165c8565b048201901c905060018184816143a5576143a56165c8565b048201901c905060018184816143bd576143bd6165c8565b048201901c905060018184816143d5576143d56165c8565b048201901c905060018184816143ed576143ed6165c8565b048201901c90506001818481614405576144056165c8565b048201901c9050600181848161441d5761441d6165c8565b048201901c9050611f6381828581614437576144376165c8565b04614f2d565b60005b81831015613d1b5760006144548484614f3c565b60008781526020902090915063ffffffff86169082015463ffffffff16111561447f5780925061448d565b61448a816001616406565b93505b50614440565b6000336144a08184614f57565b6144ec5760405162461bcd60e51b815260206004820152601d60248201527f476f7665726e6f723a2070726f706f736572207265737472696374656400000060448201526064016103f0565b60006144f6611edf565b65ffffffffffff16905061450861269a565b61451783610cb16001856164ac565b101561457f5760405162461bcd60e51b815260206004820152603160248201527f476f7665726e6f723a2070726f706f73657220766f7465732062656c6f7720706044820152701c9bdc1bdcd85b081d1a1c995cda1bdb19607a1b60648201526084016103f0565b600061459488888888805190602001206127c1565b905086518851146145b75760405162461bcd60e51b81526004016103f0906166da565b85518851146145d85760405162461bcd60e51b81526004016103f0906166da565b60008851116146295760405162461bcd60e51b815260206004820152601860248201527f476f7665726e6f723a20656d7074792070726f706f73616c000000000000000060448201526064016103f0565b600081815261013060205260409020546001600160401b0316156146995760405162461bcd60e51b815260206004820152602160248201527f476f7665726e6f723a2070726f706f73616c20616c72656164792065786973746044820152607360f81b60648201526084016103f0565b60006146a56101615490565b6146af9084616406565b905060006146bd6101625490565b6146c79083616406565b90506040518060e001604052806146dd84615048565b6001600160401b031681526001600160a01b03871660208201526000604082015260600161470a83615048565b6001600160401b03908116825260006020808401829052604080850183905260609485018390528883526101308252918290208551815492870151878501519186166001600160e01b031990941693909317600160401b6001600160a01b039094168402176001600160e01b0316600160e01b60e09290921c91909102178155938501516080860151908416921c0217600183015560a08301516002909201805460c09094015161ffff1990941692151561ff00191692909217610100931515939093029290921790558a517f7d84a6263ae0d98d3329bd7b46bb4e8d6f98cd35a7adb45c274c8b7fd5ebd5e091859188918e918e9181111561480f5761480f615744565b60405190808252806020026020018201604052801561484257816020015b606081526020019060019003908161482d5790505b508d88888f60405161485c9998979695949392919061671b565b60405180910390a1509098975050505050505050565b600054610100900460ff166148995760405162461bcd60e51b81526004016103f090616622565b60676148a583826167f9565b5060686148b282826167f9565b50506000606581905560665550565b600054610100900460ff166148e85760405162461bcd60e51b81526004016103f090616622565b61012f6148f582826167f9565b5050565b600054610100900460ff166149205760405162461bcd60e51b81526004016103f090616622565b614929836134ca565b6149328261398a565b6136a981613a2d565b600054610100900460ff166149625760405162461bcd60e51b81526004016103f090616622565b6101c580546001600160a01b0319166001600160a01b0392909216919091179055565b600054610100900460ff166120165760405162461bcd60e51b81526004016103f090616622565b600054610100900460ff16610fb35760405162461bcd60e51b81526004016103f090616622565b600054610100900460ff1661287a5760405162461bcd60e51b81526004016103f090616622565b6000818311614a095781611f63565b5090919050565b815115614a205781518083602001fd5b8060405162461bcd60e51b81526004016103f091906158fd565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f614a656150b0565b614a6d615109565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b6000858152610130602052604081206001614ac888611678565b6007811115614ad957614ad9615cef565b14614b325760405162461bcd60e51b815260206004820152602360248201527f476f7665726e6f723a20766f7465206e6f742063757272656e746c792061637460448201526269766560e81b60648201526084016103f0565b8054600090614b4c9088906001600160401b03168661381a565b9050614b5b888888848861513a565b8351600003614bb057866001600160a01b03167fb8e138887d0aa13bab447e82de9d5c1777041ecd21ca36ba824ff1e6c07ddda489888489604051614ba394939291906168b8565b60405180910390a261166d565b866001600160a01b03167fe2babfbac5889a709b63bb7f598b324e08bc5a4fb9ec647fb3cbc9ec07eb87128988848989604051614bf19594939291906168e0565b60405180910390a2979650505050505050565b6000818152610193602052604081206005810154614c3b610d1d85600090815261013060205260409020546001600160401b031690565b11159392505050565b825460009081908015614d8a576000614c62876134996001856164ac565b60408051808201909152905463ffffffff808216808452600160201b9092046001600160e01b031660208401529192509087161015614ce35760405162461bcd60e51b815260206004820152601b60248201527f436865636b706f696e743a2064656372656173696e67206b657973000000000060448201526064016103f0565b805163ffffffff808816911603614d2b5784614d04886134996001866164ac565b80546001600160e01b0392909216600160201b0263ffffffff909216919091179055614d7a565b6040805180820190915263ffffffff80881682526001600160e01b0380881660208085019182528b54600181018d5560008d81529190912094519151909216600160201b029216919091179101555b6020015192508391506141569050565b50506040805180820190915263ffffffff80851682526001600160e01b0380851660208085019182528854600181018a5560008a815291822095519251909316600160201b029190931617920191909155905081614156565b600080614df2868686866152d8565b60008181526101f96020526040902054909150156116bc576101f85460008281526101f960205260409081902054905163c4d252f560e01b81526001600160a01b039092169163c4d252f591614e4e9160040190815260200190565b600060405180830381600087803b158015614e6857600080fd5b505af1158015614e7c573d6000803e3d6000fd5b50505060008281526101f960205260408120555095945050505050565b600080608083901c15614eae57608092831c92015b604083901c15614ec057604092831c92015b602083901c15614ed257602092831c92015b601083901c15614ee457601092831c92015b600883901c15614ef657600892831c92015b600483901c15614f0857600492831c92015b600283901c15614f1a57600292831c92015b600183901c15610e365760010192915050565b6000818310614a095781611f63565b6000614f4b60028484186165de565b611f6390848416616406565b80516000906034811015614f6f576001915050610e36565b82810160131901516001600160a01b031981166b046e0e4dee0dee6cae47a60f60a31b14614fa257600192505050610e36565b600080614fb06028856164ac565b90505b8381101561502757600080614fe7888481518110614fd357614fd36164bf565b01602001516001600160f81b0319166153e5565b9150915081614fff5760019650505050505050610e36565b8060ff166004856001600160a01b0316901b179350505080615020906164d5565b9050614fb3565b50856001600160a01b0316816001600160a01b031614935050505092915050565b60006001600160401b038211156134135760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203660448201526534206269747360d01b60648201526084016103f0565b6000806150bb613795565b8051909150156150d2578051602090910120919050565b60655480156150e15792915050565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4709250505090565b6000806151146137a4565b80519091501561512b578051602090910120919050565b60665480156150e15792915050565b6000858152610193602090815260408083206001600160a01b038816845260088101909252909120805460ff16156151ca5760405162461bcd60e51b815260206004820152602d60248201527f476f7665726e6f72436f6d7061746962696c697479427261766f3a20766f746560448201526c08185b1c9958591e4818d85cdd609a1b60648201526084016103f0565b805460ff86166101000261ffff199091161760011781556151ea84615477565b81546001600160601b039190911662010000026dffffffffffffffffffffffff00001990911617815560ff851661523a578382600601600082825461522f9190616406565b909155506127b89050565b60001960ff86160161525a578382600501600082825461522f9190616406565b60011960ff86160161527a578382600701600082825461522f9190616406565b60405162461bcd60e51b815260206004820152602d60248201527f476f7665726e6f72436f6d7061746962696c697479427261766f3a20696e766160448201526c6c696420766f7465207479706560981b60648201526084016103f0565b6000806152e7868686866127c1565b905060006152f482611678565b9050600281600781111561530a5761530a615cef565b1415801561532a5750600681600781111561532757615327615cef565b14155b80156153485750600781600781111561534557615345615cef565b14155b6153945760405162461bcd60e51b815260206004820152601d60248201527f476f7665726e6f723a2070726f706f73616c206e6f742061637469766500000060448201526064016103f0565b6000828152610130602052604090819020600201805461ff001916610100179055517f789cf55be980739dad1d0699b93b58e806b51c9d96619bfa8fe0a28abaa7b30c906112459084815260200190565b60008060f883901c602f811180156154005750603a8160ff16105b1561541557600194602f199091019350915050565b8060ff16604010801561542b575060478160ff16105b15615440576001946036199091019350915050565b8060ff166060108015615456575060678160ff16105b1561546b576001946056199091019350915050565b50600093849350915050565b60006001600160601b038211156134135760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203960448201526536206269747360d01b60648201526084016103f0565b828054828255906000526020600020908101928215615534579160200282015b8281111561553457825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906154ff565b5061341392915061561f565b828054828255906000526020600020908101928215615534579160200282015b82811115615534578251825591602001919060010190615560565b8280548282559060005260206000209081019282156155c1579160200282015b828111156155c157825182906155b190826167f9565b509160200191906001019061559b565b50613413929150615634565b828054828255906000526020600020908101928215615613579160200282015b82811115615613578251829061560390826167f9565b50916020019190600101906155ed565b50613413929150615651565b5b808211156134135760008155600101615620565b80821115613413576000615648828261566e565b50600101615634565b80821115613413576000615665828261566e565b50600101615651565b50805461567a906162b6565b6000825580601f1061568a575050565b601f016020900490600052602060002090810190610fbc919061561f565b6000602082840312156156ba57600080fd5b5035919050565b6000602082840312156156d357600080fd5b81356001600160e01b031981168114611f6357600080fd5b803560ff8116811461176d57600080fd5b60008083601f84011261570e57600080fd5b5081356001600160401b0381111561572557600080fd5b60208301915083602082850101111561573d57600080fd5b9250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561578257615782615744565b604052919050565b60006001600160401b038211156157a3576157a3615744565b50601f01601f191660200190565b600082601f8301126157c257600080fd5b81356157d56157d08261578a565b61575a565b8181528460208386010111156157ea57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060008060008060e0898b03121561582357600080fd5b8835975061583360208a016156eb565b965060408901356001600160401b038082111561584f57600080fd5b61585b8c838d016156fc565b909850965060608b013591508082111561587457600080fd5b506158818b828c016157b1565b94505061589060808a016156eb565b925060a0890135915060c089013590509295985092959890939650565b60005b838110156158c85781810151838201526020016158b0565b50506000910152565b600081518084526158e98160208601602086016158ad565b601f01601f19169290920160200192915050565b602081526000611f6360208301846158d1565b6001600160a01b0381168114610fbc57600080fd5b6000806000806080858703121561593b57600080fd5b843561594681615910565b9350602085013561595681615910565b92506040850135915060608501356001600160401b0381111561597857600080fd5b615984878288016157b1565b91505092959194509250565b60006001600160401b038211156159a9576159a9615744565b5060051b60200190565b600082601f8301126159c457600080fd5b813560206159d46157d083615990565b82815260059290921b840181019181810190868411156159f357600080fd5b8286015b84811015615a17578035615a0a81615910565b83529183019183016159f7565b509695505050505050565b600082601f830112615a3357600080fd5b81356020615a436157d083615990565b82815260059290921b84018101918181019086841115615a6257600080fd5b8286015b84811015615a175780358352918301918301615a66565b600082601f830112615a8e57600080fd5b81356020615a9e6157d083615990565b82815260059290921b84018101918181019086841115615abd57600080fd5b8286015b84811015615a175780356001600160401b03811115615ae05760008081fd5b615aee8986838b01016157b1565b845250918301918301615ac1565b60008060008060808587031215615b1257600080fd5b84356001600160401b0380821115615b2957600080fd5b615b35888389016159b3565b95506020870135915080821115615b4b57600080fd5b615b5788838901615a22565b94506040870135915080821115615b6d57600080fd5b50615b7a87828801615a7d565b949793965093946060013593505050565b600081518084526020808501945080840160005b83811015615bc45781516001600160a01b031687529582019590820190600101615b9f565b509495945050505050565b600081518084526020808501945080840160005b83811015615bc457815187529582019590820190600101615be3565b600081518084526020808501808196508360051b8101915082860160005b85811015615c47578284038952615c358483516158d1565b98850198935090840190600101615c1d565b5091979650505050505050565b608081526000615c676080830187615b8b565b8281036020840152615c798187615bcf565b90508281036040840152615c8d8186615bff565b9050828103606084015261166d8185615bff565b600080600080600060a08688031215615cb957600080fd5b85359450615cc9602087016156eb565b9350615cd7604087016156eb565b94979396509394606081013594506080013592915050565b634e487b7160e01b600052602160045260246000fd5b6020810160088310615d2757634e487b7160e01b600052602160045260246000fd5b91905290565b60008060408385031215615d4057600080fd5b823591506020830135615d5281615910565b809150509250929050565b600060208284031215615d6f57600080fd5b8135611f6381615910565b60008060408385031215615d8d57600080fd5b82359150615d9d602084016156eb565b90509250929050565b600080600080600060808688031215615dbe57600080fd5b85359450615dce602087016156eb565b935060408601356001600160401b0380821115615dea57600080fd5b615df689838a016156fc565b90955093506060880135915080821115615e0f57600080fd5b50615e1c888289016157b1565b9150509295509295909350565b60008060008060608587031215615e3f57600080fd5b84359350615e4f602086016156eb565b925060408501356001600160401b03811115615e6a57600080fd5b615e76878288016156fc565b95989497509550505050565b60008060008060808587031215615e9857600080fd5b84356001600160401b0380821115615eaf57600080fd5b615ebb888389016159b3565b95506020870135915080821115615ed157600080fd5b615edd88838901615a22565b94506040870135915080821115615ef357600080fd5b615eff88838901615a7d565b93506060870135915080821115615f1557600080fd5b50615984878288016157b1565b60ff60f81b8816815260e060208201526000615f4160e08301896158d1565b8281036040840152615f5381896158d1565b606084018890526001600160a01b038716608085015260a0840186905283810360c08501529050610f268185615bcf565b600080600060608486031215615f9957600080fd5b8335615fa481615910565b92506020840135915060408401356001600160401b03811115615fc657600080fd5b615fd2868287016157b1565b9150509250925092565b60008060008060408587031215615ff257600080fd5b84356001600160401b038082111561600957600080fd5b616015888389016156fc565b9096509450602087013591508082111561602e57600080fd5b50615e76878288016156fc565b600080600080600060a0868803121561605357600080fd5b853561605e81615910565b9450602086013561606e81615910565b935060408601356001600160401b038082111561608a57600080fd5b61609689838a01615a22565b945060608801359150808211156160ac57600080fd5b6160b889838a01615a22565b93506080880135915080821115615e0f57600080fd5b600080600080606085870312156160e457600080fd5b84356160ef81615910565b93506020850135925060408501356001600160401b03811115615e6a57600080fd5b60006020828403121561612357600080fd5b81356001600160401b0381168114611f6357600080fd5b600080600080600060a0868803121561615257600080fd5b85356001600160401b038082111561616957600080fd5b61617589838a016159b3565b9650602088013591508082111561618b57600080fd5b61619789838a01615a22565b955060408801359150808211156161ad57600080fd5b6161b989838a01615a7d565b945060608801359150808211156161cf57600080fd5b6160b889838a01615a7d565b600080604083850312156161ee57600080fd5b82356161f981615910565b946020939093013593505050565b600080600080600060a0868803121561621f57600080fd5b853561622a81615910565b9450602086013561623a81615910565b9350604086013592506060860135915060808601356001600160401b0381111561626357600080fd5b615e1c888289016157b1565b8183823760009101908152919050565b60208082526018908201527f476f7665726e6f723a206f6e6c79476f7665726e616e63650000000000000000604082015260600190565b600181811c908216806162ca57607f821691505b6020821081036162ea57634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526021908201527f476f7665726e6f723a2070726f706f73616c206e6f74207375636365737366756040820152601b60fa1b606082015260800190565b60006020828403121561634357600080fd5b5051919050565b60a08152600061635d60a0830188615b8b565b828103602084015261636f8188615bcf565b905082810360408401526163838187615bff565b60608401959095525050608001529392505050565b60c0815260006163ab60c0830189615b8b565b82810360208401526163bd8189615bcf565b905082810360408401526163d18188615bff565b60608401969096525050608081019290925260a0909101529392505050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610e3657610e366163f0565b65ffffffffffff828116828216039080821115616438576164386163f0565b5092915050565b60006020828403121561645157600080fd5b81516001600160401b0381111561646757600080fd5b8201601f8101841361647857600080fd5b80516164866157d08261578a565b81815285602083850101111561649b57600080fd5b6116bc8260208301602086016158ad565b81810381811115610e3657610e366163f0565b634e487b7160e01b600052603260045260246000fd5b6000600182016164e7576164e76163f0565b5060010190565b60006020828403121561650057600080fd5b815165ffffffffffff81168114611f6357600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b604081526000616553604083018688616516565b828103602084015261166d818587616516565b6080815260006165796080830187615b8b565b828103602084015261658b8187615bcf565b9050828103604084015261659f8186615bff565b91505082606083015295945050505050565b8082028115828204841417610e3657610e366163f0565b634e487b7160e01b600052601260045260246000fd5b6000826165fb57634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561661257600080fd5b81518015158114611f6357600080fd5b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6000825161667f8184602087016158ad565b9190910192915050565b6001600160e01b03198316815281516000906166ac8160048501602087016158ad565b919091016004019392505050565b6001600160401b03818116838216019080821115616438576164386163f0565b60208082526021908201527f476f7665726e6f723a20696e76616c69642070726f706f73616c206c656e67746040820152600d60fb1b606082015260800190565b8981526001600160a01b0389166020820152610120604082018190526000906167468382018b615b8b565b9050828103606084015261675a818a615bcf565b9050828103608084015261676e8189615bff565b905082810360a08401526167828188615bff565b90508560c08401528460e08401528281036101008401526167a381856158d1565b9c9b505050505050505050505050565b601f8211156136a957600081815260208120601f850160051c810160208610156167da5750805b601f850160051c820191505b818110156116a6578281556001016167e6565b81516001600160401b0381111561681257616812615744565b6168268161682084546162b6565b846167b3565b602080601f83116001811461685b57600084156168435750858301515b600019600386901b1c1916600185901b1785556116a6565b600085815260208120601f198616915b8281101561688a5788860151825594840194600190910190840161686b565b50858210156168a85787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b84815260ff8416602082015282604082015260806060820152600061196a60808301846158d1565b85815260ff8516602082015283604082015260a06060820152600061690860a08301856158d1565b828103608084015261691a81856158d1565b9897505050505050505056fe476f7665726e6f723a2072656c617920726576657274656420776974686f7574206d657373616765a164736f6c6343000811000a", + }, + { + ContractAddr: common.HexToAddress(GovTokenContract), + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/cfc0bd1127186a917ddc38fd38d22903034d3f0b", + Code: "608060405234801561001057600080fd5b50600436106101f05760003560e01c806370a082311161010f5780639ab24eb0116100a2578063d505accf11610071578063d505accf1461047e578063dd62ed3e14610491578063e5ed5b1e146104a4578063f1127ed8146104b757600080fd5b80639ab24eb014610432578063a457c2d714610445578063a9059cbb14610458578063c3cda5201461046b57600080fd5b806384b0196e116100de57806384b0196e146103dd5780638e539e8c146103f857806391ddadf41461040b57806395d89b411461042a57600080fd5b806370a082311461038657806379cc6790146103af5780637ecebe00146103c25780638129fc1c146103d557600080fd5b806339509351116101875780634bf5d7e9116101565780634bf5d7e9146102ff578063587cde1e146103075780635c19a95c1461034b5780636fcfff451461035e57600080fd5b806339509351146102b35780633a46b1a8146102c657806342966c68146102d957806344840775146102ec57600080fd5b806323b872dd116101c357806323b872dd146102745780633041949b14610287578063313ce5671461029c5780633644e515146102ab57600080fd5b8063039c91fc146101f557806306fdde0314610234578063095ea7b31461024957806318160ddd1461026c575b600080fd5b610221610203366004612099565b61013060209081526000928352604080842090915290825290205481565b6040519081526020015b60405180910390f35b61023c6104f4565b60405161022b9190612112565b61025c610257366004612125565b610586565b604051901515815260200161022b565b603554610221565b61025c61028236600461214f565b6105a0565b61029a610295366004612099565b6105c4565b005b6040516012815260200161022b565b6102216105fd565b61025c6102c1366004612125565b61060c565b6102216102d4366004612125565b61062e565b61029a6102e736600461218b565b6106b3565b61029a6102fa3660046121a4565b6106c0565b61023c610739565b610333610315366004612228565b6001600160a01b03908116600090815260fe60205260409020541690565b6040516001600160a01b03909116815260200161022b565b61029a610359366004612228565b6107d1565b61037161036c366004612228565b6107db565b60405163ffffffff909116815260200161022b565b610221610394366004612228565b6001600160a01b031660009081526033602052604090205490565b61029a6103bd366004612125565b6107fd565b6102216103d0366004612228565b610812565b61029a610830565b6103e5610a10565b60405161022b9796959493929190612243565b61022161040636600461218b565b610aae565b610413610b16565b60405165ffffffffffff909116815260200161022b565b61023c610b21565b610221610440366004612228565b610b30565b61025c610453366004612125565b610bb2565b61025c610466366004612125565b610c2d565b61029a6104793660046122ea565b610c3b565b61029a61048c366004612342565b610d71565b61022161049f366004612099565b610ed5565b61029a6104b2366004612099565b610f00565b6104ca6104c53660046123ac565b610f30565b60408051825163ffffffff1681526020928301516001600160e01b0316928101929092520161022b565b606060368054610503906123ec565b80601f016020809104026020016040519081016040528092919081815260200182805461052f906123ec565b801561057c5780601f106105515761010080835404028352916020019161057c565b820191906000526020600020905b81548152906001019060200180831161055f57829003601f168201915b5050505050905090565b600033610594818585610fb4565b60019150505b92915050565b6000336105ae858285610fcd565b6105b9858585611047565b506001949350505050565b33612002146105ef57604051630f22c43960e41b815261200260048201526024015b60405180910390fd5b6105f98282611060565b5050565b6000610607611190565b905090565b60003361059481858561061f8383610ed5565b6106299190612436565b610fb4565b6000610638610b16565b65ffffffffffff16821061068a5760405162461bcd60e51b815260206004820152601960248201527804552433230566f7465733a20667574757265206c6f6f6b757603c1b60448201526064016105e6565b6001600160a01b038316600090815260ff602052604090206106ac908361119a565b9392505050565b6106bd3382611283565b50565b33612002146106e657604051630f22c43960e41b815261200260048201526024016105e6565b8160005b818110156107325761072285858381811061070757610707612449565b905060200201602081019061071c9190612228565b84611060565b61072b8161245f565b90506106ea565b5050505050565b606043610744610b16565b65ffffffffffff16146107995760405162461bcd60e51b815260206004820152601d60248201527f4552433230566f7465733a2062726f6b656e20636c6f636b206d6f646500000060448201526064016105e6565b5060408051808201909152601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c74000000602082015290565b6106bd338261128d565b6001600160a01b038116600090815260ff602052604081205461059a90611307565b610808823383610fcd565b6105f98282611283565b6001600160a01b038116600090815260cb602052604081205461059a565b600054610100900460ff16158080156108505750600054600160ff909116105b8061086a5750303b15801561086a575060005460ff166001145b6108cd5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016105e6565b6000805460ff1916600117905580156108f0576000805461ff0019166101001790555b3341146109105760405163022d8c9560e31b815260040160405180910390fd5b3a1561092f576040516383f1b1d360e01b815260040160405180910390fd5b610983604051806040016040528060148152602001732129a19023b7bb32b93730b731b2902a37b5b2b760611b8152506040518060400160405280600681526020016533b7bb21272160d11b815250611370565b61098b6113a1565b6109c0604051806040016040528060148152602001732129a19023b7bb32b93730b731b2902a37b5b2b760611b8152506113ca565b6109c86113a1565b80156106bd576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b6000606080600080600060606097546000801b148015610a305750609854155b610a745760405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b60448201526064016105e6565b610a7c611414565b610a84611423565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b6000610ab8610b16565b65ffffffffffff168210610b0a5760405162461bcd60e51b815260206004820152601960248201527804552433230566f7465733a20667574757265206c6f6f6b757603c1b60448201526064016105e6565b61059a6101008361119a565b600061060743611432565b606060378054610503906123ec565b6001600160a01b038116600090815260ff60205260408120548015610b9f576001600160a01b038316600090815260ff6020526040902080546000198301908110610b7d57610b7d612449565b60009182526020909120015464010000000090046001600160e01b0316610ba2565b60005b6001600160e01b03169392505050565b60003381610bc08286610ed5565b905083811015610c205760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016105e6565b6105b98286868403610fb4565b600033610594818585611047565b83421115610c8b5760405162461bcd60e51b815260206004820152601d60248201527f4552433230566f7465733a207369676e6174757265206578706972656400000060448201526064016105e6565b604080517fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60208201526001600160a01b038816918101919091526060810186905260808101859052600090610d0590610cfd9060a00160405160208183030381529060405280519060200120611499565b8585856114c6565b9050610d10816114ee565b8614610d5e5760405162461bcd60e51b815260206004820152601960248201527f4552433230566f7465733a20696e76616c6964206e6f6e63650000000000000060448201526064016105e6565b610d68818861128d565b50505050505050565b83421115610dc15760405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e6500000060448201526064016105e6565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9888888610df08c6114ee565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090506000610e4b82611499565b90506000610e5b828787876114c6565b9050896001600160a01b0316816001600160a01b031614610ebe5760405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e6174757265000060448201526064016105e6565b610ec98a8a8a610fb4565b50505050505050505050565b6001600160a01b03918216600090815260346020908152604080832093909416825291909152205490565b3361200214610f2657604051630f22c43960e41b815261200260048201526024016105e6565b6105f9828261128d565b60408051808201909152600080825260208201526001600160a01b038316600090815260ff60205260409020805463ffffffff8416908110610f7457610f74612449565b60009182526020918290206040805180820190915291015463ffffffff8116825264010000000090046001600160e01b0316918101919091529392505050565b604051632028747160e01b815260040160405180910390fd5b6000610fd98484610ed5565b9050600019811461104157818110156110345760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016105e6565b6110418484848403610fb4565b50505050565b604051638cd22d1960e01b815260040160405180910390fd5b604051630913db4760e01b81526001600160a01b03828116600483015260009190841690630913db4790602401602060405180830381865afa1580156110aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110ce919061248e565b6001600160a01b03808516600090815261013060209081526040808320938716835292905220549091508181101561114757600061110c82846124a7565b6001600160a01b0380871660009081526101306020908152604080832093891683529290522084905590506111418482611516565b50611041565b8181111561104157600061115b83836124a7565b6001600160a01b0380871660009081526101306020908152604080832093891683529290522084905590506107328482611283565b6000610607611520565b8154600090818160058111156111f45760006111b584611594565b6111bf90856124a7565b600088815260209020909150869082015463ffffffff1611156111e4578091506111f2565b6111ef816001612436565b92505b505b80821015611241576000611208838361167c565b600088815260209020909150869082015463ffffffff16111561122d5780915061123b565b611238816001612436565b92505b506111f4565b801561126d576000868152602090208101600019015464010000000090046001600160e01b0316611270565b60005b6001600160e01b03169695505050505050565b6105f98282611697565b6001600160a01b03828116600081815260fe6020818152604080842080546033845282862054949093528787166001600160a01b03198416811790915590519190951694919391928592917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a46110418284836116b0565b600063ffffffff82111561136c5760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201526532206269747360d01b60648201526084016105e6565b5090565b600054610100900460ff166113975760405162461bcd60e51b81526004016105e6906124ba565b6105f982826117ee565b600054610100900460ff166113c85760405162461bcd60e51b81526004016105e6906124ba565b565b600054610100900460ff166113f15760405162461bcd60e51b81526004016105e6906124ba565b6106bd81604051806040016040528060018152602001603160f81b81525061182e565b606060998054610503906123ec565b6060609a8054610503906123ec565b600065ffffffffffff82111561136c5760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203460448201526538206269747360d01b60648201526084016105e6565b600061059a6114a6611190565b8360405161190160f01b8152600281019290925260228201526042902090565b60008060006114d78787878761187d565b915091506114e481611941565b5095945050505050565b6001600160a01b038116600090815260cb602052604090208054600181018255905b50919050565b6105f98282611a8b565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f61154b611b16565b611553611b6f565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b6000816000036115a657506000919050565b600060016115b384611ba0565b901c6001901b905060018184816115cc576115cc612505565b048201901c905060018184816115e4576115e4612505565b048201901c905060018184816115fc576115fc612505565b048201901c9050600181848161161457611614612505565b048201901c9050600181848161162c5761162c612505565b048201901c9050600181848161164457611644612505565b048201901c9050600181848161165c5761165c612505565b048201901c90506106ac8182858161167657611676612505565b04611c34565b600061168b600284841861251b565b6106ac90848416612436565b6116a18282611c4a565b611041610100611d8583611d91565b816001600160a01b0316836001600160a01b0316141580156116d25750600081115b156117e9576001600160a01b03831615611760576001600160a01b038316600090815260ff60205260408120819061170d90611d8585611d91565b91509150846001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248383604051611755929190918252602082015260400190565b60405180910390a250505b6001600160a01b038216156117e9576001600160a01b038216600090815260ff60205260408120819061179690611f0685611d91565b91509150836001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72483836040516117de929190918252602082015260400190565b60405180910390a250505b505050565b600054610100900460ff166118155760405162461bcd60e51b81526004016105e6906124ba565b6036611821838261258b565b5060376117e9828261258b565b600054610100900460ff166118555760405162461bcd60e51b81526004016105e6906124ba565b6099611861838261258b565b50609a61186e828261258b565b50506000609781905560985550565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156118b45750600090506003611938565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611908573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661193157600060019250925050611938565b9150600090505b94509492505050565b60008160048111156119555761195561264b565b0361195d5750565b60018160048111156119715761197161264b565b036119be5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016105e6565b60028160048111156119d2576119d261264b565b03611a1f5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016105e6565b6003816004811115611a3357611a3361264b565b036106bd5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016105e6565b611a958282611f12565b6035546001600160e01b031015611b075760405162461bcd60e51b815260206004820152603060248201527f4552433230566f7465733a20746f74616c20737570706c79207269736b73206f60448201526f766572666c6f77696e6720766f74657360801b60648201526084016105e6565b611041610100611f0683611d91565b600080611b21611414565b805190915015611b38578051602090910120919050565b6097548015611b475792915050565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4709250505090565b600080611b7a611423565b805190915015611b91578051602090910120919050565b6098548015611b475792915050565b600080608083901c15611bb557608092831c92015b604083901c15611bc757604092831c92015b602083901c15611bd957602092831c92015b601083901c15611beb57601092831c92015b600883901c15611bfd57600892831c92015b600483901c15611c0f57600492831c92015b600283901c15611c2157600292831c92015b600183901c1561059a5760010192915050565b6000818310611c4357816106ac565b5090919050565b6001600160a01b038216611caa5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016105e6565b6001600160a01b03821660009081526033602052604090205481811015611d1e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016105e6565b6001600160a01b03831660008181526033602090815260408083208686039055603580548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36117e983600084611fd7565b60006106ac82846124a7565b82546000908190818115611dde5760008781526020902082016000190160408051808201909152905463ffffffff8116825264010000000090046001600160e01b03166020820152611df3565b60408051808201909152600080825260208201525b905080602001516001600160e01b03169350611e1384868863ffffffff16565b9250600082118015611e3d5750611e28610b16565b65ffffffffffff16816000015163ffffffff16145b15611e8257611e4b83611fe2565b60008881526020902083016000190180546001600160e01b03929092166401000000000263ffffffff909216919091179055611efc565b866040518060400160405280611ea6611e99610b16565b65ffffffffffff16611307565b63ffffffff168152602001611eba86611fe2565b6001600160e01b0390811690915282546001810184556000938452602093849020835194909301519091166401000000000263ffffffff909316929092179101555b5050935093915050565b60006106ac8284612436565b6001600160a01b038216611f685760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016105e6565b8060356000828254611f7a9190612436565b90915550506001600160a01b0382166000818152603360209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36105f9600083835b6117e983838361204b565b60006001600160e01b0382111561136c5760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20326044820152663234206269747360c81b60648201526084016105e6565b6001600160a01b03838116600090815260fe60205260408082205485841683529120546117e9929182169116836116b0565b80356001600160a01b038116811461209457600080fd5b919050565b600080604083850312156120ac57600080fd5b6120b58361207d565b91506120c36020840161207d565b90509250929050565b6000815180845260005b818110156120f2576020818501810151868301820152016120d6565b506000602082860101526020601f19601f83011685010191505092915050565b6020815260006106ac60208301846120cc565b6000806040838503121561213857600080fd5b6121418361207d565b946020939093013593505050565b60008060006060848603121561216457600080fd5b61216d8461207d565b925061217b6020850161207d565b9150604084013590509250925092565b60006020828403121561219d57600080fd5b5035919050565b6000806000604084860312156121b957600080fd5b833567ffffffffffffffff808211156121d157600080fd5b818601915086601f8301126121e557600080fd5b8135818111156121f457600080fd5b8760208260051b850101111561220957600080fd5b60209283019550935061221f918601905061207d565b90509250925092565b60006020828403121561223a57600080fd5b6106ac8261207d565b60ff60f81b881681526000602060e08184015261226360e084018a6120cc565b8381036040850152612275818a6120cc565b606085018990526001600160a01b038816608086015260a0850187905284810360c0860152855180825283870192509083019060005b818110156122c7578351835292840192918401916001016122ab565b50909c9b505050505050505050505050565b803560ff8116811461209457600080fd5b60008060008060008060c0878903121561230357600080fd5b61230c8761207d565b95506020870135945060408701359350612328606088016122d9565b92506080870135915060a087013590509295509295509295565b600080600080600080600060e0888a03121561235d57600080fd5b6123668861207d565b96506123746020890161207d565b95506040880135945060608801359350612390608089016122d9565b925060a0880135915060c0880135905092959891949750929550565b600080604083850312156123bf57600080fd5b6123c88361207d565b9150602083013563ffffffff811681146123e157600080fd5b809150509250929050565b600181811c9082168061240057607f821691505b60208210810361151057634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b8082018082111561059a5761059a612420565b634e487b7160e01b600052603260045260246000fd5b60006001820161247157612471612420565b5060010190565b634e487b7160e01b600052604160045260246000fd5b6000602082840312156124a057600080fd5b5051919050565b8181038181111561059a5761059a612420565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b634e487b7160e01b600052601260045260246000fd5b60008261253857634e487b7160e01b600052601260045260246000fd5b500490565b601f8211156117e957600081815260208120601f850160051c810160208610156125645750805b601f850160051c820191505b8181101561258357828155600101612570565b505050505050565b815167ffffffffffffffff8111156125a5576125a5612478565b6125b9816125b384546123ec565b8461253d565b602080601f8311600181146125ee57600084156125d65750858301515b600019600386901b1c1916600185901b178555612583565b600085815260208120601f198616915b8281101561261d578886015182559484019460019091019084016125fe565b508582101561263b5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052602160045260246000fdfea164736f6c6343000811000a", + }, + { + ContractAddr: common.HexToAddress(TimelockContract), + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/cfc0bd1127186a917ddc38fd38d22903034d3f0b", + Code: "6080604052600436106101d15760003560e01c80638129fc1c116100f7578063b1c5f42711610095578063d547741f11610064578063d547741f14610584578063e38335e5146105a4578063f23a6e61146105b7578063f27a0c92146105e357600080fd5b8063b1c5f427146104eb578063bc197c811461050b578063c4d252f514610537578063d45c44351461055757600080fd5b806391d14854116100d157806391d1485414610474578063a217fddf14610494578063ac431751146104a9578063b08e51c0146104c957600080fd5b80638129fc1c1461041d5780638f2a0bb0146104325780638f61f4f51461045257600080fd5b8063248a9ca31161016f57806336568abe1161013e57806336568abe1461039d578063584b153e146103bd57806364d62353146103dd5780638065657f146103fd57600080fd5b8063248a9ca3146102fd5780632ab0f5291461032d5780632f2ff15d1461035d57806331d507501461037d57600080fd5b80630d3cf6fc116101ab5780630d3cf6fc14610264578063134008d31461028657806313bc9f2014610299578063150b7a02146102b957600080fd5b806301d5062a146101dd57806301ffc9a7146101ff57806307bd02651461023457600080fd5b366101d857005b600080fd5b3480156101e957600080fd5b506101fd6101f8366004611a54565b6105f8565b005b34801561020b57600080fd5b5061021f61021a366004611ac8565b6106bc565b60405190151581526020015b60405180910390f35b34801561024057600080fd5b5061025660008051602061253b83398151915281565b60405190815260200161022b565b34801561027057600080fd5b506102566000805160206124fb83398151915281565b6101fd610294366004611af2565b6106e7565b3480156102a557600080fd5b5061021f6102b4366004611b5d565b61078a565b3480156102c557600080fd5b506102e46102d4366004611c2b565b630a85bd0160e11b949350505050565b6040516001600160e01b0319909116815260200161022b565b34801561030957600080fd5b50610256610318366004611b5d565b60009081526065602052604090206001015490565b34801561033957600080fd5b5061021f610348366004611b5d565b60009081526097602052604090205460011490565b34801561036957600080fd5b506101fd610378366004611c92565b6107b0565b34801561038957600080fd5b5061021f610398366004611b5d565b6107da565b3480156103a957600080fd5b506101fd6103b8366004611c92565b6107f3565b3480156103c957600080fd5b5061021f6103d8366004611b5d565b610876565b3480156103e957600080fd5b506101fd6103f8366004611b5d565b61088d565b34801561040957600080fd5b50610256610418366004611af2565b610931565b34801561042957600080fd5b506101fd610970565b34801561043e57600080fd5b506101fd61044d366004611d02565b610b22565b34801561045e57600080fd5b5061025660008051602061251b83398151915281565b34801561048057600080fd5b5061021f61048f366004611c92565b610ca3565b3480156104a057600080fd5b50610256600081565b3480156104b557600080fd5b506101fd6104c4366004611db3565b610cce565b3480156104d557600080fd5b5061025660008051602061255b83398151915281565b3480156104f757600080fd5b50610256610506366004611e1e565b610eb8565b34801561051757600080fd5b506102e4610526366004611f45565b63bc197c8160e01b95945050505050565b34801561054357600080fd5b506101fd610552366004611b5d565b610efd565b34801561056357600080fd5b50610256610572366004611b5d565b60009081526097602052604090205490565b34801561059057600080fd5b506101fd61059f366004611c92565b610fc0565b6101fd6105b2366004611e1e565b610fe5565b3480156105c357600080fd5b506102e46105d2366004611fee565b63f23a6e6160e01b95945050505050565b3480156105ef57600080fd5b50609854610256565b60008051602061251b8339815191526106108161115d565b6000610620898989898989610931565b905061062c8184611167565b6000817f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8b8b8b8b8b8a6040516106689695949392919061207b565b60405180910390a383156106b157807f20fda5fd27a1ea7bf5b9567f143ac5470bb059374a27e8f67cb44f946f6d0387856040516106a891815260200190565b60405180910390a25b505050505050505050565b60006001600160e01b03198216630271189760e51b14806106e157506106e182611256565b92915050565b60008051602061253b833981519152610701816000610ca3565b61070f5761070f813361128b565b600061071f888888888888610931565b905061072b81856112e4565b6107378888888861137f565b6000817fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b588a8a8a8a60405161076f94939291906120b8565b60405180910390a361078081611452565b5050505050505050565b6000818152609760205260408120546001811180156107a95750428111155b9392505050565b6000828152606560205260409020600101546107cb8161115d565b6107d5838361148b565b505050565b60008181526097602052604081205481905b1192915050565b6001600160a01b03811633146108685760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b6108728282611511565b5050565b6000818152609760205260408120546001906107ec565b3330146108f05760405162461bcd60e51b815260206004820152602b60248201527f54696d656c6f636b436f6e74726f6c6c65723a2063616c6c6572206d7573742060448201526a62652074696d656c6f636b60a81b606482015260840161085f565b60985460408051918252602082018390527f11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d5910160405180910390a1609855565b600086868686868660405160200161094e9695949392919061207b565b6040516020818303038152906040528051906020012090509695505050505050565b600054610100900460ff16158080156109905750600054600160ff909116105b806109aa5750303b1580156109aa575060005460ff166001145b610a0d5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161085f565b6000805460ff191660011790558015610a30576000805461ff0019166101001790555b334114610a505760405163022d8c9560e31b815260040160405180910390fd5b3a15610a6f576040516383f1b1d360e01b815260040160405180910390fd5b6040805160018082528183019092526000916020808301908036833701905050905061200481600081518110610aa757610aa76120ea565b60200260200101906001600160a01b031690816001600160a01b031681525050610ad8620151808283612004611578565b508015610b1f576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b60008051602061251b833981519152610b3a8161115d565b888714610b595760405162461bcd60e51b815260040161085f90612100565b888514610b785760405162461bcd60e51b815260040161085f90612100565b6000610b8a8b8b8b8b8b8b8b8b610eb8565b9050610b968184611167565b60005b8a811015610c545780827f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8e8e85818110610bd657610bd66120ea565b9050602002016020810190610beb9190612143565b8d8d86818110610bfd57610bfd6120ea565b905060200201358c8c87818110610c1657610c166120ea565b9050602002810190610c28919061215e565b8c8b604051610c3c9695949392919061207b565b60405180910390a3610c4d816121ba565b9050610b99565b508315610c9657807f20fda5fd27a1ea7bf5b9567f143ac5470bb059374a27e8f67cb44f946f6d038785604051610c8d91815260200190565b60405180910390a25b5050505050505050505050565b60009182526065602090815260408084206001600160a01b0393909316845291905290205460ff1690565b3361100714610cf457604051630f22c43960e41b8152611007600482015260240161085f565b610d57604051806040016040528060088152602001676d696e44656c617960c01b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506115b19050565b15610e545760208114610d855783838383604051630a5a604160e01b815260040161085f94939291906121d3565b604080516020601f8401819004810282018101909252828152600091610dc691858580838501838280828437600092019190915250929392505061160a9050565b9050801580610dd757506212750081115b15610dfd5784848484604051630a5a604160e01b815260040161085f94939291906121d3565b6040516364d6235360e01b81526004810182905230906364d6235390602401600060405180830381600087803b158015610e3657600080fd5b505af1158015610e4a573d6000803e3d6000fd5b5050505050610e75565b838383836040516325ee20d560e21b815260040161085f94939291906121d3565b7ff1ce9b2cbf50eeb05769a29e2543fd350cab46894a7dd9978a12d534bb20e63384848484604051610eaa94939291906121d3565b60405180910390a150505050565b60008888888888888888604051602001610ed998979695949392919061228b565b60405160208183030381529060405280519060200120905098975050505050505050565b60008051602061255b833981519152610f158161115d565b610f1e82610876565b610f845760405162461bcd60e51b815260206004820152603160248201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e2063616044820152701b9b9bdd0818994818d85b98d95b1b1959607a1b606482015260840161085f565b6000828152609760205260408082208290555183917fbaa1eb22f2a492ba1a5fea61b8df4d27c6c8b5f3971e63bb58fa14ff72eedb7091a25050565b600082815260656020526040902060010154610fdb8161115d565b6107d58383611511565b60008051602061253b833981519152610fff816000610ca3565b61100d5761100d813361128b565b87861461102c5760405162461bcd60e51b815260040161085f90612100565b87841461104b5760405162461bcd60e51b815260040161085f90612100565b600061105d8a8a8a8a8a8a8a8a610eb8565b905061106981856112e4565b60005b898110156111475760008b8b83818110611088576110886120ea565b905060200201602081019061109d9190612143565b905060008a8a848181106110b3576110b36120ea565b9050602002013590503660008a8a868181106110d1576110d16120ea565b90506020028101906110e3919061215e565b915091506110f38484848461137f565b84867fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b588686868660405161112a94939291906120b8565b60405180910390a35050505080611140906121ba565b905061106c565b5061115181611452565b50505050505050505050565b610b1f813361128b565b611170826107da565b156111d55760405162461bcd60e51b815260206004820152602f60248201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e20616c60448201526e1c9958591e481cd8da19591d5b1959608a1b606482015260840161085f565b6098548110156112365760405162461bcd60e51b815260206004820152602660248201527f54696d656c6f636b436f6e74726f6c6c65723a20696e73756666696369656e746044820152652064656c617960d01b606482015260840161085f565b611240814261232c565b6000928352609760205260409092209190915550565b60006001600160e01b03198216637965db0b60e01b14806106e157506301ffc9a760e01b6001600160e01b03198316146106e1565b6112958282610ca3565b610872576112a28161160f565b6112ad836020611621565b6040516020016112be929190612363565b60408051601f198184030181529082905262461bcd60e51b825261085f916004016123d8565b6112ed8261078a565b6113095760405162461bcd60e51b815260040161085f9061240b565b80158061132457506000818152609760205260409020546001145b6108725760405162461bcd60e51b815260206004820152602660248201527f54696d656c6f636b436f6e74726f6c6c65723a206d697373696e6720646570656044820152656e64656e637960d01b606482015260840161085f565b6000846001600160a01b031684848460405161139c929190612455565b60006040518083038185875af1925050503d80600081146113d9576040519150601f19603f3d011682016040523d82523d6000602084013e6113de565b606091505b505090508061144b5760405162461bcd60e51b815260206004820152603360248201527f54696d656c6f636b436f6e74726f6c6c65723a20756e6465726c79696e6720746044820152721c985b9cd858dd1a5bdb881c995d995c9d1959606a1b606482015260840161085f565b5050505050565b61145b8161078a565b6114775760405162461bcd60e51b815260040161085f9061240b565b600090815260976020526040902060019055565b6114958282610ca3565b6108725760008281526065602090815260408083206001600160a01b03851684529091529020805460ff191660011790556114cd3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b61151b8282610ca3565b156108725760008281526065602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b600054610100900460ff1661159f5760405162461bcd60e51b815260040161085f90612465565b6115ab848484846117bc565b50505050565b6000816040516020016115c491906124b0565b60405160208183030381529060405280519060200120836040516020016115eb91906124b0565b6040516020818303038152906040528051906020012014905092915050565b015190565b60606106e16001600160a01b03831660145b606060006116308360026124cc565b61163b90600261232c565b6001600160401b0381111561165257611652611b76565b6040519080825280601f01601f19166020018201604052801561167c576020820181803683370190505b509050600360fc1b81600081518110611697576116976120ea565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106116c6576116c66120ea565b60200101906001600160f81b031916908160001a90535060006116ea8460026124cc565b6116f590600161232c565b90505b600181111561176d576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110611729576117296120ea565b1a60f81b82828151811061173f5761173f6120ea565b60200101906001600160f81b031916908160001a90535060049490941c93611766816124e3565b90506116f8565b5083156107a95760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161085f565b600054610100900460ff166117e35760405162461bcd60e51b815260040161085f90612465565b6117fb6000805160206124fb8339815191528061199b565b61182160008051602061251b8339815191526000805160206124fb83398151915261199b565b61184760008051602061253b8339815191526000805160206124fb83398151915261199b565b61186d60008051602061255b8339815191526000805160206124fb83398151915261199b565b6118856000805160206124fb833981519152306119e6565b6001600160a01b038116156118ac576118ac6000805160206124fb833981519152826119e6565b60005b835181101561191d576118e960008051602061251b8339815191528583815181106118dc576118dc6120ea565b60200260200101516119e6565b61190d60008051602061255b8339815191528583815181106118dc576118dc6120ea565b611916816121ba565b90506118af565b5060005b825181101561195e5761194e60008051602061253b8339815191528483815181106118dc576118dc6120ea565b611957816121ba565b9050611921565b5060988490556040805160008152602081018690527f11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d59101610eaa565b600082815260656020526040808220600101805490849055905190918391839186917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a4505050565b610872828261148b565b80356001600160a01b0381168114611a0757600080fd5b919050565b60008083601f840112611a1e57600080fd5b5081356001600160401b03811115611a3557600080fd5b602083019150836020828501011115611a4d57600080fd5b9250929050565b600080600080600080600060c0888a031215611a6f57600080fd5b611a78886119f0565b96506020880135955060408801356001600160401b03811115611a9a57600080fd5b611aa68a828b01611a0c565b989b979a50986060810135976080820135975060a09091013595509350505050565b600060208284031215611ada57600080fd5b81356001600160e01b0319811681146107a957600080fd5b60008060008060008060a08789031215611b0b57600080fd5b611b14876119f0565b95506020870135945060408701356001600160401b03811115611b3657600080fd5b611b4289828a01611a0c565b979a9699509760608101359660809091013595509350505050565b600060208284031215611b6f57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715611bb457611bb4611b76565b604052919050565b600082601f830112611bcd57600080fd5b81356001600160401b03811115611be657611be6611b76565b611bf9601f8201601f1916602001611b8c565b818152846020838601011115611c0e57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060808587031215611c4157600080fd5b611c4a856119f0565b9350611c58602086016119f0565b92506040850135915060608501356001600160401b03811115611c7a57600080fd5b611c8687828801611bbc565b91505092959194509250565b60008060408385031215611ca557600080fd5b82359150611cb5602084016119f0565b90509250929050565b60008083601f840112611cd057600080fd5b5081356001600160401b03811115611ce757600080fd5b6020830191508360208260051b8501011115611a4d57600080fd5b600080600080600080600080600060c08a8c031215611d2057600080fd5b89356001600160401b0380821115611d3757600080fd5b611d438d838e01611cbe565b909b50995060208c0135915080821115611d5c57600080fd5b611d688d838e01611cbe565b909950975060408c0135915080821115611d8157600080fd5b50611d8e8c828d01611cbe565b9a9d999c50979a969997986060880135976080810135975060a0013595509350505050565b60008060008060408587031215611dc957600080fd5b84356001600160401b0380821115611de057600080fd5b611dec88838901611a0c565b90965094506020870135915080821115611e0557600080fd5b50611e1287828801611a0c565b95989497509550505050565b60008060008060008060008060a0898b031215611e3a57600080fd5b88356001600160401b0380821115611e5157600080fd5b611e5d8c838d01611cbe565b909a50985060208b0135915080821115611e7657600080fd5b611e828c838d01611cbe565b909850965060408b0135915080821115611e9b57600080fd5b50611ea88b828c01611cbe565b999c989b509699959896976060870135966080013595509350505050565b600082601f830112611ed757600080fd5b813560206001600160401b03821115611ef257611ef2611b76565b8160051b611f01828201611b8c565b9283528481018201928281019087851115611f1b57600080fd5b83870192505b84831015611f3a57823582529183019190830190611f21565b979650505050505050565b600080600080600060a08688031215611f5d57600080fd5b611f66866119f0565b9450611f74602087016119f0565b935060408601356001600160401b0380821115611f9057600080fd5b611f9c89838a01611ec6565b94506060880135915080821115611fb257600080fd5b611fbe89838a01611ec6565b93506080880135915080821115611fd457600080fd5b50611fe188828901611bbc565b9150509295509295909350565b600080600080600060a0868803121561200657600080fd5b61200f866119f0565b945061201d602087016119f0565b9350604086013592506060860135915060808601356001600160401b0381111561204657600080fd5b611fe188828901611bbc565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60018060a01b038716815285602082015260a0604082015260006120a360a083018688612052565b60608301949094525060800152949350505050565b60018060a01b03851681528360208201526060604082015260006120e0606083018486612052565b9695505050505050565b634e487b7160e01b600052603260045260246000fd5b60208082526023908201527f54696d656c6f636b436f6e74726f6c6c65723a206c656e677468206d69736d616040820152620e8c6d60eb1b606082015260800190565b60006020828403121561215557600080fd5b6107a9826119f0565b6000808335601e1984360301811261217557600080fd5b8301803591506001600160401b0382111561218f57600080fd5b602001915036819003821315611a4d57600080fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016121cc576121cc6121a4565b5060010190565b6040815260006121e7604083018688612052565b8281036020840152611f3a818587612052565b81835260006020808501808196508560051b810191508460005b8781101561227e5782840389528135601e1988360301811261223557600080fd5b870185810190356001600160401b0381111561225057600080fd5b80360382131561225f57600080fd5b61226a868284612052565b9a87019a9550505090840190600101612214565b5091979650505050505050565b60a0808252810188905260008960c08301825b8b8110156122cc576001600160a01b036122b7846119f0565b1682526020928301929091019060010161229e565b5083810360208501528881526001600160fb1b038911156122ec57600080fd5b8860051b9150818a6020830137018281036020908101604085015261231490820187896121fa565b60608401959095525050608001529695505050505050565b808201808211156106e1576106e16121a4565b60005b8381101561235a578181015183820152602001612342565b50506000910152565b7f416363657373436f6e74726f6c3a206163636f756e742000000000000000000081526000835161239b81601785016020880161233f565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516123cc81602884016020880161233f565b01602801949350505050565b60208152600082518060208401526123f781604085016020870161233f565b601f01601f19169190910160400192915050565b6020808252602a908201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e206973604082015269206e6f7420726561647960b01b606082015260800190565b8183823760009101908152919050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b600082516124c281846020870161233f565b9190910192915050565b80820281158282048414176106e1576106e16121a4565b6000816124f2576124f26121a4565b50600019019056fe5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca5b09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc1d8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e63fd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f783a164736f6c6343000811000a", + }, + { + ContractAddr: common.HexToAddress(TokenRecoverPortalContract), + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/cfc0bd1127186a917ddc38fd38d22903034d3f0b", + Code: "608060405234801561001057600080fd5b50600436106100a95760003560e01c80639fcb5012116100715780639fcb50121461012f578063ac4317511461014c578063bfb5a6a11461015f578063de88700b14610172578063e33f8d321461019d578063f4b88300146101c057600080fd5b8063046f7da2146100ae5780632eb4a7ab146100b85780634c335368146100d4578063572c9980146101145780638456cb5914610127575b600080fd5b6100b66101d3565b005b6100c160345481565b6040519081526020015b60405180910390f35b6101076040518060400160405280601481526020017342696e616e63652d436861696e2d47616e67657360601b81525081565b6040516100cb91906113eb565b6100b661012236600461141e565b610236565b6100b66102c7565b60355461013c9060ff1681565b60405190151581526020016100cb565b6100b661015a36600461149c565b610330565b6100b661016d36600461154d565b610756565b603754610185906001600160a01b031681565b6040516001600160a01b0390911681526020016100cb565b61013c6101ab366004611627565b60009081526036602052604090205460ff1690565b603354610185906001600160a01b031681565b6037546001600160a01b031633146101fe5760405163f2771a9960e01b815260040160405180910390fd5b6037805460ff60a01b191690556040517f62451d457bc659158be6e6247f56ec1df424a5c7597f71c20c2bc44e0965c8f990600090a1565b6037546001600160a01b031633146102615760405163f2771a9960e01b815260040160405180910390fd5b604051638525db0360e01b8152600481018390526001600160a01b038216602482015261100490638525db0390604401600060405180830381600087803b1580156102ab57600080fd5b505af11580156102bf573d6000803e3d6000fd5b505050505050565b6037546001600160a01b031633146102f25760405163f2771a9960e01b815260040160405180910390fd5b6037805460ff60a01b1916600160a01b1790556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e75290600090a1565b336110071461035b57604051630f22c43960e41b815261100760048201526024015b60405180910390fd5b6103c56040518060400160405280600f81526020016e617070726f7665724164647265737360881b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610a989050565b1561048d57601481146103f35783838383604051630a5a604160e01b81526004016103529493929190611669565b600061043783838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060149250610af2915050565b90506001600160a01b0381166104685784848484604051630a5a604160e01b81526004016103529493929190611669565b603380546001600160a01b0319166001600160a01b0392909216919091179055610713565b6104f26040518060400160405280600a8152602001691b595c9adb19549bdbdd60b21b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610a989050565b156105bf5760355460ff161561051b576040516379b3306f60e11b815260040160405180910390fd5b602081146105445783838383604051630a5a604160e01b81526004016103529493929190611669565b604080516020601f840181900481028201810190925282815260009161058491858580838501838280828437600092019190915250869250610af7915050565b806105aa5784848484604051630a5a604160e01b81526004016103529493929190611669565b6034556035805460ff19166001179055610713565b6106286040518060400160405280600e81526020016d30b9b9b2ba283937ba32b1ba37b960911b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610a989050565b156106f257601481146106565783838383604051630a5a604160e01b81526004016103529493929190611669565b600061069c601484848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610af29050565b90506001600160a01b0381166106cd5784848484604051630a5a604160e01b81526004016103529493929190611669565b603780546001600160a01b0319166001600160a01b0392909216919091179055610713565b838383836040516325ee20d560e21b81526004016103529493929190611669565b7ff1ce9b2cbf50eeb05769a29e2543fd350cab46894a7dd9978a12d534bb20e633848484846040516107489493929190611669565b60405180910390a150505050565b60355460ff1661077957604051635740729760e01b815260040160405180910390fd5b60345461079957604051635740729760e01b815260040160405180910390fd5b603754600160a01b900460ff16156107c45760405163c629ac8160e01b815260040160405180910390fd5b6107cc610b06565b600061085a89898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8d018190048102820181019092528b815292508b91508a9081908401838280828437600081840152601f19601f820116905080830192505050505050506108558e8e33610b5f565b610c80565b90506000818c8c6040516020016108739392919061169b565b6040516020818303038152906040528051906020012090506108a48160009081526036602052604090205460ff1690565b156108c157604051623e493160e81b815260040160405180910390fd5b6109693389898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8d018190048102820181019092528b815292508b91508a908190840183828082843760009201919091525050604080516020808c0282810182019093528b82528994509092508b918b91829190850190849080828437600092019190915250610d7492505050565b6109aa848480806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250506034549150849050610e7f565b6109c7576040516309bde33960e01b815260040160405180910390fd5b60008181526036602052604090819020805460ff191660011790555163799758b960e01b8152600481018d9052336024820152604481018c90526110049063799758b990606401600060405180830381600087803b158015610a2857600080fd5b505af1158015610a3c573d6000803e3d6000fd5b5050604080518f81523360208201529081018e90527f4ba6833d14341f931aa6ef39835b58eb5d657ebf0d968db68dbc7dd49d073f6d9250606001905060405180910390a15050610a8c60018055565b50505050505050505050565b600081604051602001610aab91906116c2565b6040516020818303038152906040528051906020012083604051602001610ad291906116c2565b604051602081830303815290604052805190602001201490505b92915050565b015190565b91018082526020908101910152565b600260015403610b585760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610352565b6002600155565b600060026040518060400160405280601481526020017342696e616e63652d436861696e2d47616e67657360601b815250610bbc85604051602001610ba691815260200190565b6040516020818303038152906040526000610e95565b6040516bffffffffffffffffffffffff19606087901b166020820152610bf5906034016040516020818303038152906040526001610e95565b610c0b88604051602001610ba691815260200190565b604051602001610c1e94939291906116de565b60408051601f1981840301815290829052610c38916116c2565b602060405180830381855afa158015610c55573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610c78919061180d565b949350505050565b60608351602114610ca457604051638152ea1b60e01b815260040160405180910390fd5b8251604014610cc657604051635e4bd79760e11b815260040160405180910390fd5b60408051608180825260c08201909252600091602082018180368337019050509050610cf6818660006021611067565b610d04818560216040611067565b610d338184604051602001610d1b91815260200190565b60405160208183030381529060405260616020611067565b604080516014808252818301909252600091602082018180368337019050509050815160148282856069600019fa610d6a57600080fd5b5095945050505050565b606060005b8251811015610dd25781838281518110610d9557610d9561183c565b6020026020010151604051602001610dae929190611852565b60405160208183030381529060405291508080610dca9061188a565b915050610d79565b5060006040518060400160405280601481526020017342696e616e63652d436861696e2d47616e67657360601b81525087878660345486604051602001610e1e969594939291906118a3565b60408051601f1981840301815291905280516020909101206033549091506001600160a01b0316610e4f82876110de565b6001600160a01b031614610e7657604051636eb5c6cb60e11b815260040160405180910390fd5b50505050505050565b600082610e8c85846110fa565b14949350505050565b6060600083516002610ea79190611914565b67ffffffffffffffff811115610ebf57610ebf611826565b6040519080825280601f01601f191660200182016040528015610ee9576020820181803683370190505b5060408051808201909152601081526f181899199a1a9b1b9c1cb0b131b232b360811b602082015290915060005b855181101561102f57818251878381518110610f3557610f3561183c565b0160200151610f47919060f81c611941565b81518110610f5757610f5761183c565b01602001516001600160f81b03191683610f72836002611914565b81518110610f8257610f8261183c565b60200101906001600160f81b031916908160001a905350818251878381518110610fae57610fae61183c565b0160200151610fc0919060f81c611955565b81518110610fd057610fd061183c565b01602001516001600160f81b03191683610feb836002611914565b610ff6906001611969565b815181106110065761100661183c565b60200101906001600160f81b031916908160001a905350806110278161188a565b915050610f17565b50831561105f5781604051602001611047919061197c565b60405160208183030381529060405292505050610aec565b509392505050565b60005b818110156110d7578381815181106110845761108461183c565b01602001516001600160f81b031916858461109e8161188a565b9550815181106110b0576110b061183c565b60200101906001600160f81b031916908160001a9053506110d08161188a565b905061106a565b5050505050565b60008060006110ed858561113f565b9150915061105f81611184565b600081815b845181101561105f5761112b8286838151811061111e5761111e61183c565b60200260200101516112d1565b9150806111378161188a565b9150506110ff565b60008082516041036111755760208301516040840151606085015160001a61116987828585611303565b9450945050505061117d565b506000905060025b9250929050565b6000816004811115611198576111986119a6565b036111a05750565b60018160048111156111b4576111b46119a6565b036112015760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610352565b6002816004811115611215576112156119a6565b036112625760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610352565b6003816004811115611276576112766119a6565b036112ce5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610352565b50565b60008183106112ed5760008281526020849052604090206112fc565b60008381526020839052604090205b9392505050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561133a57506000905060036113be565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa15801561138e573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166113b7576000600192509250506113be565b9150600090505b94509492505050565b60005b838110156113e25781810151838201526020016113ca565b50506000910152565b602081526000825180602084015261140a8160408501602087016113c7565b601f01601f19169190910160400192915050565b6000806040838503121561143157600080fd5b8235915060208301356001600160a01b038116811461144f57600080fd5b809150509250929050565b60008083601f84011261146c57600080fd5b50813567ffffffffffffffff81111561148457600080fd5b60208301915083602082850101111561117d57600080fd5b600080600080604085870312156114b257600080fd5b843567ffffffffffffffff808211156114ca57600080fd5b6114d68883890161145a565b909650945060208701359150808211156114ef57600080fd5b506114fc8782880161145a565b95989497509550505050565b60008083601f84011261151a57600080fd5b50813567ffffffffffffffff81111561153257600080fd5b6020830191508360208260051b850101111561117d57600080fd5b60008060008060008060008060008060c08b8d03121561156c57600080fd5b8a35995060208b0135985060408b013567ffffffffffffffff8082111561159257600080fd5b61159e8e838f0161145a565b909a50985060608d01359150808211156115b757600080fd5b6115c38e838f0161145a565b909850965060808d01359150808211156115dc57600080fd5b6115e88e838f0161145a565b909650945060a08d013591508082111561160157600080fd5b5061160e8d828e01611508565b915080935050809150509295989b9194979a5092959850565b60006020828403121561163957600080fd5b5035919050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60408152600061167d604083018688611640565b8281036020840152611690818587611640565b979650505050505050565b600084516116ad8184602089016113c7565b91909101928352506020820152604001919050565b600082516116d48184602087016113c7565b9190910192915050565b7f7b226163636f756e745f6e756d626572223a2230222c22636861696e5f6964228152611d1160f11b602082015260008551611721816022850160208a016113c7565b7f222c2264617461223a6e756c6c2c226d656d6f223a22222c226d736773223a5b6022918401918201526a3d9130b6b7bab73a111d1160a91b6042820152855161177281604d840160208a016113c7565b6e1116113932b1b4b834b2b73a111d1160891b604d929091019182015284516117a281605c8401602089016113c7565b711116113a37b5b2b72fb9bcb6b137b6111d1160711b605c929091019182015283516117d581606e8401602088016113c7565b7f227d5d2c2273657175656e6365223a2230222c22736f75726365223a2230227d606e9290910191820152608e019695505050505050565b60006020828403121561181f57600080fd5b5051919050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b600083516118648184602088016113c7565b9190910191825250602001919050565b634e487b7160e01b600052601160045260246000fd5b60006001820161189c5761189c611874565b5060010190565b600087516118b5818460208c016113c7565b606088901b6bffffffffffffffffffffffff191690830190815286516118e2816014840160208b016113c7565b01601481018690526034810185905283516119048160548401602088016113c7565b0160540198975050505050505050565b8082028115828204841417610aec57610aec611874565b634e487b7160e01b600052601260045260246000fd5b6000826119505761195061192b565b500490565b6000826119645761196461192b565b500690565b80820180821115610aec57610aec611874565b61060f60f31b8152600082516119998160028501602087016113c7565b9190910160020192915050565b634e487b7160e01b600052602160045260246000fdfea164736f6c6343000811000a", + }, + { + ContractAddr: common.HexToAddress(TokenRecoverPortalContract), + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/0f352c4623898d92664a46cbfc26c52b79aad838", + Code: "0", // TODO: update this when contract was ready + }, + }, + } + + // TODO: revert this + // latestUpgrade[defaultNet] = latestUpgrade[rialtoNet] } func UpgradeBuildInSystemContract(config *params.ChainConfig, blockNumber *big.Int, lastBlockTime uint64, blockTime uint64, statedb *state.StateDB) { @@ -826,6 +999,11 @@ func UpgradeBuildInSystemContract(config *params.ChainConfig, blockNumber *big.I if config.IsOnKepler(blockNumber, lastBlockTime, blockTime) { applySystemContractUpgrade(keplerUpgrade[network], blockNumber, statedb, logger) } + + if config.IsOnFeynman(blockNumber, lastBlockTime, blockTime) { + applySystemContractUpgrade(feynmanUpgrade[network], blockNumber, statedb, logger) + } + /* apply other upgrades */ diff --git a/core/types/block.go b/core/types/block.go index 0ce5b4d068..4be2803fa2 100644 --- a/core/types/block.go +++ b/core/types/block.go @@ -26,6 +26,8 @@ import ( "sync/atomic" "time" + "golang.org/x/crypto/sha3" + "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/common/hexutil" "github.com/ethereum/go-ethereum/rlp" @@ -560,8 +562,7 @@ func (d *DiffLayer) DecodeRLP(s *rlp.Stream) error { if err := s.Decode(&ed); err != nil { return err } - d.BlockHash, d.Number, d.Codes, d.Destructs, d.Accounts, d.Storages = - ed.BlockHash, ed.Number, ed.Codes, ed.Destructs, ed.Accounts, ed.Storages + d.BlockHash, d.Number, d.Codes, d.Destructs, d.Accounts, d.Storages = ed.BlockHash, ed.Number, ed.Codes, ed.Destructs, ed.Accounts, ed.Storages d.Receipts = make([]*Receipt, len(ed.Receipts)) for i, storageReceipt := range ed.Receipts { @@ -608,6 +609,7 @@ func (storage *DiffStorage) Swap(i, j int) { storage.Keys[i], storage.Keys[j] = storage.Keys[j], storage.Keys[i] storage.Vals[i], storage.Vals[j] = storage.Vals[j], storage.Vals[i] } + func (storage *DiffStorage) Less(i, j int) bool { return string(storage.Keys[i][:]) < string(storage.Keys[j][:]) } @@ -622,3 +624,64 @@ type DiffAccountsInBlock struct { BlockHash common.Hash Transactions []DiffAccountsInTx } + +var ( + extraVanity = 32 // Fixed number of extra-data prefix bytes reserved for signer vanity + extraSeal = 65 // Fixed number of extra-data suffix bytes reserved for signer seal +) + +// SealHash returns the hash of a block prior to it being sealed. +func SealHash(header *Header, chainId *big.Int) (hash common.Hash) { + hasher := sha3.NewLegacyKeccak256() + EncodeSigHeader(hasher, header, chainId) + hasher.Sum(hash[:0]) + return hash +} + +func EncodeSigHeader(w io.Writer, header *Header, chainId *big.Int) { + err := rlp.Encode(w, []interface{}{ + chainId, + header.ParentHash, + header.UncleHash, + header.Coinbase, + header.Root, + header.TxHash, + header.ReceiptHash, + header.Bloom, + header.Difficulty, + header.Number, + header.GasLimit, + header.GasUsed, + header.Time, + header.Extra[:len(header.Extra)-extraSeal], // this will panic if extra is too short, should check before calling encodeSigHeader + header.MixDigest, + header.Nonce, + }) + if err != nil { + panic("can't encode: " + err.Error()) + } +} + +func EncodeSigHeaderWithoutVoteAttestation(w io.Writer, header *Header, chainId *big.Int) { + err := rlp.Encode(w, []interface{}{ + chainId, + header.ParentHash, + header.UncleHash, + header.Coinbase, + header.Root, + header.TxHash, + header.ReceiptHash, + header.Bloom, + header.Difficulty, + header.Number, + header.GasLimit, + header.GasUsed, + header.Time, + header.Extra[:extraVanity], // this will panic if extra is too short, should check before calling encodeSigHeaderWithoutVoteAttestation + header.MixDigest, + header.Nonce, + }) + if err != nil { + panic("can't encode: " + err.Error()) + } +} diff --git a/core/vm/contracts.go b/core/vm/contracts.go index 482c020a67..b4c8ce1e3a 100644 --- a/core/vm/contracts.go +++ b/core/vm/contracts.go @@ -17,23 +17,28 @@ package vm import ( + "bytes" "crypto/sha256" "encoding/binary" "errors" "fmt" "math/big" + "github.com/prysmaticlabs/prysm/v4/crypto/bls" + "golang.org/x/crypto/ripemd160" + "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/common/math" + "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/crypto" "github.com/ethereum/go-ethereum/crypto/blake2b" "github.com/ethereum/go-ethereum/crypto/bls12381" "github.com/ethereum/go-ethereum/crypto/bn256" "github.com/ethereum/go-ethereum/crypto/kzg4844" + "github.com/ethereum/go-ethereum/crypto/secp256k1" "github.com/ethereum/go-ethereum/log" "github.com/ethereum/go-ethereum/params" - "github.com/prysmaticlabs/prysm/v4/crypto/bls" - "golang.org/x/crypto/ripemd160" + "github.com/ethereum/go-ethereum/rlp" ) // PrecompiledContract is the basic interface for native Go contracts. The implementation @@ -219,6 +224,27 @@ var PrecompiledContractsCancun = map[common.Address]PrecompiledContract{ common.BytesToAddress([]byte{103}): &cometBFTLightBlockValidate{}, } +// PrecompiledContractsFeynman contains the default set of pre-compiled Ethereum +// contracts used in the Feynman release. +var PrecompiledContractsFeynman = map[common.Address]PrecompiledContract{ + common.BytesToAddress([]byte{1}): &ecrecover{}, + common.BytesToAddress([]byte{2}): &sha256hash{}, + common.BytesToAddress([]byte{3}): &ripemd160hash{}, + common.BytesToAddress([]byte{4}): &dataCopy{}, + common.BytesToAddress([]byte{5}): &bigModExp{}, + common.BytesToAddress([]byte{6}): &bn256AddIstanbul{}, + common.BytesToAddress([]byte{7}): &bn256ScalarMulIstanbul{}, + common.BytesToAddress([]byte{8}): &bn256PairingIstanbul{}, + common.BytesToAddress([]byte{9}): &blake2F{}, + + common.BytesToAddress([]byte{100}): &tmHeaderValidate{}, + common.BytesToAddress([]byte{101}): &iavlMerkleProofValidatePlato{}, + common.BytesToAddress([]byte{102}): &blsSignatureVerify{}, + common.BytesToAddress([]byte{103}): &cometBFTLightBlockValidate{}, + common.BytesToAddress([]byte{104}): &verifyDoubleSignEvidence{}, + common.BytesToAddress([]byte{105}): &secp256k1SignatureRecover{}, +} + // PrecompiledContractsBLS contains the set of pre-compiled Ethereum // contracts specified in EIP-2537. These are exported for testing purposes. var PrecompiledContractsBLS = map[common.Address]PrecompiledContract{ @@ -245,6 +271,7 @@ var ( PrecompiledAddressesIstanbul []common.Address PrecompiledAddressesByzantium []common.Address PrecompiledAddressesHomestead []common.Address + PrecompiledAddressesFeynman []common.Address ) func init() { @@ -281,11 +308,16 @@ func init() { for k := range PrecompiledContractsCancun { PrecompiledAddressesCancun = append(PrecompiledAddressesCancun, k) } + for k := range PrecompiledContractsFeynman { + PrecompiledAddressesFeynman = append(PrecompiledAddressesFeynman, k) + } } // ActivePrecompiles returns the precompiles enabled with the current configuration. func ActivePrecompiles(rules params.Rules) []common.Address { switch { + case rules.IsFeynman: + return PrecompiledAddressesFeynman case rules.IsCancun: return PrecompiledAddressesCancun case rules.IsHertz: @@ -561,7 +593,7 @@ func (c *bigModExp) Run(input []byte) ([]byte, error) { // Modulo 0 is undefined, return zero return common.LeftPadBytes([]byte{}, int(modLen)), nil case base.BitLen() == 1: // a bit length of 1 means it's 1 (or -1). - //If base == 1, then we can just return base % mod (if mod >= 1, which it is) + // If base == 1, then we can just return base % mod (if mod >= 1, which it is) v = base.Mod(base, mod).Bytes() default: v = base.Exp(base, exp, mod).Bytes() @@ -1355,3 +1387,89 @@ func kZGToVersionedHash(kzg kzg4844.Commitment) common.Hash { return h } + +// verifyDoubleSignEvidence implements bsc header verification precompile. +type verifyDoubleSignEvidence struct{} + +// RequiredGas returns the gas required to execute the pre-compiled contract. +func (c *verifyDoubleSignEvidence) RequiredGas(input []byte) uint64 { + return params.DoubleSignEvidenceVerifyGas +} + +var ( + extraSeal = 65 +) + +type DoubleSignEvidence struct { + ChainId *big.Int + HeaderBytes1 []byte + HeaderBytes2 []byte +} + +// Run input: rlp encoded DoubleSignEvidence +// return: +// signer address| evidence time| +// 20 bytes | 32 bytes | +func (c *verifyDoubleSignEvidence) Run(input []byte) ([]byte, error) { + evidence := &DoubleSignEvidence{} + err := rlp.DecodeBytes(input, evidence) + if err != nil { + return nil, ErrExecutionReverted + } + + header1 := &types.Header{} + err = rlp.DecodeBytes(evidence.HeaderBytes1, header1) + if err != nil { + return nil, ErrExecutionReverted + } + + header2 := &types.Header{} + err = rlp.DecodeBytes(evidence.HeaderBytes2, header2) + if err != nil { + return nil, ErrExecutionReverted + } + + // basic check + if header1.Number.Uint64() != header2.Number.Uint64() { + return nil, ErrExecutionReverted + } + if header1.ParentHash != header2.ParentHash { + return nil, ErrExecutionReverted + } + + if len(header1.Extra) < extraSeal || len(header2.Extra) < extraSeal { + return nil, ErrExecutionReverted + } + sig1 := header1.Extra[len(header1.Extra)-extraSeal:] + sig2 := header2.Extra[len(header2.Extra)-extraSeal:] + if bytes.Equal(sig1, sig2) { + return nil, ErrExecutionReverted + } + evidenceTime := header1.Time + if evidenceTime < header2.Time { + evidenceTime = header2.Time + } + + // check sig + msgHash1 := types.SealHash(header1, evidence.ChainId) + msgHash2 := types.SealHash(header2, evidence.ChainId) + pubkey1, err := secp256k1.RecoverPubkey(msgHash1.Bytes(), sig1) + if err != nil { + return nil, ErrExecutionReverted + } + pubkey2, err := secp256k1.RecoverPubkey(msgHash2.Bytes(), sig2) + if err != nil { + return nil, ErrExecutionReverted + } + if !bytes.Equal(pubkey1, pubkey2) { + return nil, ErrExecutionReverted + } + + returnBz := make([]byte, 52) // 20 + 32 + signerAddr := crypto.Keccak256(pubkey1[1:])[12:] + evidenceTimeBz := big.NewInt(int64(evidenceTime)).Bytes() + copy(returnBz[:20], signerAddr) + copy(returnBz[52-len(evidenceTimeBz):], evidenceTimeBz) + + return returnBz, nil +} diff --git a/core/vm/contracts_lightclient.go b/core/vm/contracts_lightclient.go index 4ac985f644..6e891b6c9a 100644 --- a/core/vm/contracts_lightclient.go +++ b/core/vm/contracts_lightclient.go @@ -8,8 +8,10 @@ import ( "github.com/tendermint/iavl" "github.com/tendermint/tendermint/crypto/merkle" + "github.com/tendermint/tendermint/crypto/secp256k1" cmn "github.com/tendermint/tendermint/libs/common" + //nolint:staticcheck v1 "github.com/ethereum/go-ethereum/core/vm/lightclient/v1" v2 "github.com/ethereum/go-ethereum/core/vm/lightclient/v2" "github.com/ethereum/go-ethereum/params" @@ -104,7 +106,7 @@ func (c *tmHeaderValidate) Run(input []byte) (result []byte, err error) { return result, nil } -//------------------------------------------------------------------------------------------------------------------------------------------------ +// ------------------------------------------------------------------------------------------------------------------------------------------------ // iavlMerkleProofValidate implemented as a native contract. type iavlMerkleProofValidate struct { @@ -397,3 +399,40 @@ type cometBFTLightBlockValidateHertz struct { func (c *cometBFTLightBlockValidateHertz) Run(input []byte) (result []byte, err error) { return c.run(input, true) } + +// secp256k1SignatureRecover implemented as a native contract. +type secp256k1SignatureRecover struct{} + +func (c *secp256k1SignatureRecover) RequiredGas(input []byte) uint64 { + return params.EcrecoverGas +} + +const ( + tmPubKeyLength uint8 = 33 + tmSignatureLength uint8 = 64 + tmSignatureMsgHashLength uint8 = 32 +) + +// input: +// | tmPubKey | tmSignature | tmSignatureMsgHash | +// | 33 bytes | 64 bytes | 32 bytes | +func (c *secp256k1SignatureRecover) Run(input []byte) (result []byte, err error) { + if len(input) != int(tmPubKeyLength)+int(tmSignatureLength)+int(tmSignatureMsgHashLength) { + return nil, fmt.Errorf("invalid input") + } + + return c.runTMSecp256k1Signature( + input[:tmPubKeyLength], + input[tmPubKeyLength:tmPubKeyLength+tmSignatureLength], + input[tmPubKeyLength+tmSignatureLength:], + ) +} + +func (c *secp256k1SignatureRecover) runTMSecp256k1Signature(pubkey, signatureStr, msgHash []byte) (result []byte, err error) { + tmPubKey := secp256k1.PubKeySecp256k1(pubkey) + ok := tmPubKey.VerifyBytesWithMsgHash(msgHash, signatureStr) + if !ok { + return nil, fmt.Errorf("invalid signature") + } + return tmPubKey.Address().Bytes(), nil +} diff --git a/core/vm/contracts_lightclient_test.go b/core/vm/contracts_lightclient_test.go index bc99d88fa1..e669fbaea7 100644 --- a/core/vm/contracts_lightclient_test.go +++ b/core/vm/contracts_lightclient_test.go @@ -373,3 +373,42 @@ func TestCometBFTLightBlockValidateHertz(t *testing.T) { require.NoError(t, err) require.Equal(t, expectOutputStr, hex.EncodeToString(res)) } + +func TestSecp256k1SignatureRecover(t *testing.T) { + // local key + { + pubKey, err := hex.DecodeString("0278caa4d6321aa856d6341dd3e8bcdfe0b55901548871c63c3f5cec43c2ae88a9") + require.NoError(t, err) + sig, err := hex.DecodeString("0cb78be0d8eaeab991907b06c61240c04f4ca83f54b7799ce77cf029b837988038c4b3b7f5df231695b0d14499b716e1fd6504860eb3c9244ecb4e569d44c062") + require.NoError(t, err) + msghash, err := hex.DecodeString("b6ac827edff4bbbf23579720782dbef40b65780af292cc66849e7e5944f1230f") + require.NoError(t, err) + expectedAddr, err := hex.DecodeString("fa3B227adFf8EA1706098928715076D76959Ae6c") + require.NoError(t, err) + + input := append(append(pubKey, sig...), msghash...) + contract := &secp256k1SignatureRecover{} + res, err := contract.Run(input) + require.NoError(t, err) + + require.Equal(t, expectedAddr, res) + } + // ledger + { + pubKey, err := hex.DecodeString("02d63ee39adb1779353b4393dd5ea9d6d2b6df63b71d168571803cc7b9a0a20e98") + require.NoError(t, err) + sig, err := hex.DecodeString("66bdb5d381b2773c0f569858c7ee143959522d7c1f46dc656c325cb7353ec40c28ec22dff3650b34c096c5b12e702d7237d409f1ebaaa6dd1128a8f2d401fd5b") + require.NoError(t, err) + msghash, err := hex.DecodeString("c45e8f0dc7c054c31912beeffd6f10f1c585606d61e252e97968cd66661c2571") + require.NoError(t, err) + expectedAddr, err := hex.DecodeString("65a284146b84210a01add088954bb52d88b230af") + require.NoError(t, err) + + input := append(append(pubKey, sig...), msghash...) + contract := &secp256k1SignatureRecover{} + res, err := contract.Run(input) + require.NoError(t, err) + + require.Equal(t, expectedAddr, res) + } +} diff --git a/core/vm/contracts_test.go b/core/vm/contracts_test.go index b0ebef86e5..8e1412db40 100644 --- a/core/vm/contracts_test.go +++ b/core/vm/contracts_test.go @@ -67,6 +67,7 @@ var allPrecompiles = map[common.Address]PrecompiledContract{ common.BytesToAddress([]byte{0x0f, 0x11}): &bls12381MapG1{}, common.BytesToAddress([]byte{0x0f, 0x12}): &bls12381MapG2{}, common.BytesToAddress([]byte{102}): &blsSignatureVerify{}, + common.BytesToAddress([]byte{104}): &verifyDoubleSignEvidence{}, } // EIP-152 test vectors @@ -405,3 +406,14 @@ func BenchmarkPrecompiledBLS12381G2MultiExpWorstCase(b *testing.B) { } benchmarkPrecompiled("0f", testcase, b) } + +func TestDoubleSignSlash(t *testing.T) { + tc := precompiledTest{ + Input: "f906278202cab9030ff9030ca01062d3d5015b9242bc193a9b0769f3d3780ecb55f97f40a752ae26d0b68cd0d8a0fae1a05fcb14bfd9b8a9f2b65007a9b6c2000de0627a73be644dd993d32342c494976ea74026e726554db657fa54763abd0c3a0aa9a0f385cc58ed297ff0d66eb5580b02853d3478ba418b1819ac659ee05df49b9794a0bf88464af369ed6b8cf02db00f0b9556ffa8d49cd491b00952a7f83431446638a00a6d0870e586a76278fbfdcedf76ef6679af18fc1f9137cfad495f434974ea81b901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001820cdf830f4240830f4240846555fa64b90111d983010301846765746888676f312e32302e378664617277696e00007abd731ef8ae07b86091cb8836d58f5444b883422a18825d899035d3e6ea39ad1a50069bf0b86da8b5573dde1cb4a0a34f19ce94e0ef78ff7518c80265b8a3ca56e3c60167523590d4e8dcc324900559465fc0fa403774096614e135de280949b58a45cc96f2ba9e17f848820d41a08429d0d8b33ee72a84f750fefea846cbca54e487129c7961c680bb72309ca888820d42a08c9db14d938b19f9e2261bbeca2679945462be2b58103dfff73665d0d150fb8a804ae755e0fe64b59753f4db6308a1f679747bce186aa2c62b95fa6eeff3fbd08f3b0667e45428a54ade15bad19f49641c499b431b36f65803ea71b379e6b61de501a0232c9ba2d41b40d36ed794c306747bcbc49bf61a0f37409c18bfe2b5bef26a2d880000000000000000b9030ff9030ca01062d3d5015b9242bc193a9b0769f3d3780ecb55f97f40a752ae26d0b68cd0d8a0b2789a5357827ed838335283e15c4dcc42b9bebcbf2919a18613246787e2f96094976ea74026e726554db657fa54763abd0c3a0aa9a071ce4c09ee275206013f0063761bc19c93c13990582f918cc57333634c94ce89a00e095703e5c9b149f253fe89697230029e32484a410b4b1f2c61442d73c3095aa0d317ae19ede7c8a2d3ac9ef98735b049bcb7278d12f48c42b924538b60a25e12b901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001820cdf830f4240830f4240846555fa64b90111d983010301846765746888676f312e32302e378664617277696e00007abd731ef8ae07b86091cb8836d58f5444b883422a18825d899035d3e6ea39ad1a50069bf0b86da8b5573dde1cb4a0a34f19ce94e0ef78ff7518c80265b8a3ca56e3c60167523590d4e8dcc324900559465fc0fa403774096614e135de280949b58a45cc96f2ba9e17f848820d41a08429d0d8b33ee72a84f750fefea846cbca54e487129c7961c680bb72309ca888820d42a08c9db14d938b19f9e2261bbeca2679945462be2b58103dfff73665d0d150fb8a80c0b17bfe88534296ff064cb7156548f6deba2d6310d5044ed6485f087dc6ef232e051c28e1909c2b50a3b4f29345d66681c319bef653e52e5d746480d5a3983b00a0b56228685be711834d0f154292d07826dea42a0fad3e4f56c31470b7fbfbea26880000000000000000", + Expected: "15d34aaf54267db7d7c367839aaf71a00a2c6a65000000000000000000000000000000000000000000000000000000006555fa64", + Gas: 1000, + Name: "", + } + + testPrecompiled("68", tc, t) +} diff --git a/core/vm/evm.go b/core/vm/evm.go index a1d427360d..2e7e2ba9bd 100644 --- a/core/vm/evm.go +++ b/core/vm/evm.go @@ -48,6 +48,8 @@ type ( func (evm *EVM) precompile(addr common.Address) (PrecompiledContract, bool) { var precompiles map[common.Address]PrecompiledContract switch { + case evm.chainRules.IsFeynman: + precompiles = PrecompiledContractsFeynman case evm.chainRules.IsCancun: precompiles = PrecompiledContractsCancun case evm.chainRules.IsHertz: diff --git a/go.mod b/go.mod index fbebfee8ba..28e6f7b067 100644 --- a/go.mod +++ b/go.mod @@ -295,5 +295,5 @@ replace ( github.com/cometbft/cometbft => github.com/bnb-chain/greenfield-tendermint v0.0.0-20230417032003-4cda1f296fb2 github.com/grpc-ecosystem/grpc-gateway/v2 => github.com/prysmaticlabs/grpc-gateway/v2 v2.3.1-0.20210702154020-550e1cd83ec1 github.com/syndtr/goleveldb v1.0.1 => github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 - github.com/tendermint/tendermint => github.com/bnb-chain/tendermint v0.31.15 + github.com/tendermint/tendermint => github.com/bnb-chain/tendermint v0.31.16 ) diff --git a/go.sum b/go.sum index 5c31fc8f55..67df69fb71 100644 --- a/go.sum +++ b/go.sum @@ -188,8 +188,8 @@ github.com/bnb-chain/greenfield-tendermint v0.0.0-20230417032003-4cda1f296fb2 h1 github.com/bnb-chain/greenfield-tendermint v0.0.0-20230417032003-4cda1f296fb2/go.mod h1:9q11eHNRY9FDwFH+4pompzPNGv//Z3VcfvkELaHJPMs= github.com/bnb-chain/ics23 v0.1.0 h1:DvjGOts2FBfbxB48384CYD1LbcrfjThFz8kowY/7KxU= github.com/bnb-chain/ics23 v0.1.0/go.mod h1:cU6lTGolbbLFsGCgceNB2AzplH1xecLp6+KXvxM32nI= -github.com/bnb-chain/tendermint v0.31.15 h1:Xyn/Hifb/7X4E1zSuMdnZdMSoM2Fx6cZuKCNnqIxbNU= -github.com/bnb-chain/tendermint v0.31.15/go.mod h1:cmt8HHmQUSVaWQ/hoTefRxsh5X3ERaM1zCUIR0DPbFU= +github.com/bnb-chain/tendermint v0.31.16 h1:rOO6WG61JDAuRCCL8TKnGhorJftQDVygq0mqR7A0ck4= +github.com/bnb-chain/tendermint v0.31.16/go.mod h1:cmt8HHmQUSVaWQ/hoTefRxsh5X3ERaM1zCUIR0DPbFU= github.com/boltdb/bolt v1.3.1/go.mod h1:clJnj/oiGkjum5o1McbSZDSLxVThjynRyGBgiAx27Ps= github.com/bradfitz/go-smtpd v0.0.0-20170404230938-deb6d6237625/go.mod h1:HYsPBTaaSFSlLx/70C2HPIMNZpVV8+vt/A+FMnYP11g= github.com/bradfitz/gomemcache v0.0.0-20170208213004-1952afaa557d/go.mod h1:PmM6Mmwb0LSuEubjR8N7PtNe1KxZLtOUHtbeikc5h60= diff --git a/miner/worker.go b/miner/worker.go index d1ea4f8034..d27cdc8c02 100644 --- a/miner/worker.go +++ b/miner/worker.go @@ -711,11 +711,7 @@ func (w *worker) commitTransactions(env *environment, txs *transactionsByPriceAn gasLimit := env.header.GasLimit if env.gasPool == nil { env.gasPool = new(core.GasPool).AddGas(gasLimit) - if w.chain.Config().IsEuler(env.header.Number) { - env.gasPool.SubGas(params.SystemTxsGas * 3) - } else { - env.gasPool.SubGas(params.SystemTxsGas) - } + env.gasPool.SubGas(params.SystemTxsGas * 5) } var coalescedLogs []*types.Log @@ -728,7 +724,7 @@ func (w *worker) commitTransactions(env *environment, txs *transactionsByPriceAn stopPrefetchCh := make(chan struct{}) defer close(stopPrefetchCh) - //prefetch txs from all pending txs + // prefetch txs from all pending txs txsPrefetch := txs.Copy() tx := txsPrefetch.PeekWithUnwrap() if tx != nil { diff --git a/params/config.go b/params/config.go index eb91a37ecd..65e4223baa 100644 --- a/params/config.go +++ b/params/config.go @@ -165,6 +165,9 @@ var ( LondonBlock: big.NewInt(31302048), HertzBlock: big.NewInt(31302048), + // TODO + FeynmanTime: nil, + Parlia: &ParliaConfig{ Period: 3, Epoch: 200, @@ -197,6 +200,9 @@ var ( LondonBlock: big.NewInt(31103030), HertzBlock: big.NewInt(31103030), + // TODO + FeynmanTime: nil, + Parlia: &ParliaConfig{ Period: 3, Epoch: 200, @@ -228,6 +234,9 @@ var ( BerlinBlock: nil, HertzBlock: nil, + // TODO + FeynmanTime: nil, + Parlia: &ParliaConfig{ Period: 3, Epoch: 200, @@ -449,6 +458,7 @@ type ChainConfig struct { ShanghaiTime *uint64 `json:"shanghaiTime,omitempty" toml:",omitempty"` // Shanghai switch time (nil = no fork, 0 = already on shanghai) KeplerTime *uint64 `json:"keplerTime,omitempty" toml:",omitempty"` // Kepler switch time (nil = no fork, 0 = already activated) + FeynmanTime *uint64 `json:"feynmanTime,omitempty" toml:",omitempty"` // Feynman switch time (nil = no fork, 0 = already activated) CancunTime *uint64 `json:"cancunTime,omitempty" toml:",omitempty"` // Cancun switch time (nil = no fork, 0 = already on cancun) PragueTime *uint64 `json:"pragueTime,omitempty" toml:",omitempty"` // Prague switch time (nil = no fork, 0 = already on prague) VerkleTime *uint64 `json:"verkleTime,omitempty" toml:",omitempty"` // Verkle switch time (nil = no fork, 0 = already on verkle) @@ -541,7 +551,12 @@ func (c *ChainConfig) String() string { KeplerTime = big.NewInt(0).SetUint64(*c.KeplerTime) } - return fmt.Sprintf("{ChainID: %v Homestead: %v DAO: %v DAOSupport: %v EIP150: %v EIP155: %v EIP158: %v Byzantium: %v Constantinople: %v Petersburg: %v Istanbul: %v, Muir Glacier: %v, Ramanujan: %v, Niels: %v, MirrorSync: %v, Bruno: %v, Berlin: %v, YOLO v3: %v, CatalystBlock: %v, London: %v, ArrowGlacier: %v, MergeFork:%v, Euler: %v, Gibbs: %v, Nano: %v, Moran: %v, Planck: %v,Luban: %v, Plato: %v, Hertz: %v, ShanghaiTime: %v, KeplerTime: %v, Engine: %v}", + var FeynmanTime *big.Int + if c.FeynmanTime != nil { + FeynmanTime = big.NewInt(0).SetUint64(*c.FeynmanTime) + } + + return fmt.Sprintf("{ChainID: %v Homestead: %v DAO: %v DAOSupport: %v EIP150: %v EIP155: %v EIP158: %v Byzantium: %v Constantinople: %v Petersburg: %v Istanbul: %v, Muir Glacier: %v, Ramanujan: %v, Niels: %v, MirrorSync: %v, Bruno: %v, Berlin: %v, YOLO v3: %v, CatalystBlock: %v, London: %v, ArrowGlacier: %v, MergeFork:%v, Euler: %v, Gibbs: %v, Nano: %v, Moran: %v, Planck: %v,Luban: %v, Plato: %v, Hertz: %v, ShanghaiTime: %v, KeplerTime: %v, FeynmanTime: %v, Engine: %v}", c.ChainID, c.HomesteadBlock, c.DAOForkBlock, @@ -574,6 +589,7 @@ func (c *ChainConfig) String() string { c.HertzBlock, ShanghaiTime, KeplerTime, + FeynmanTime, engine, ) } @@ -791,6 +807,20 @@ func (c *ChainConfig) IsOnKepler(currentBlockNumber *big.Int, lastBlockTime uint return !c.IsKepler(lastBlockNumber, lastBlockTime) && c.IsKepler(currentBlockNumber, currentBlockTime) } +// IsFeynman returns whether time is either equal to the Feynman fork time or greater. +func (c *ChainConfig) IsFeynman(num *big.Int, time uint64) bool { + return c.IsLondon(num) && isTimestampForked(c.FeynmanTime, time) +} + +// IsOnFeynman returns whether currentBlockTime is either equal to the Feynman fork time or greater firstly. +func (c *ChainConfig) IsOnFeynman(currentBlockNumber *big.Int, lastBlockTime uint64, currentBlockTime uint64) bool { + lastBlockNumber := new(big.Int) + if currentBlockNumber.Cmp(big.NewInt(1)) >= 0 { + lastBlockNumber.Sub(currentBlockNumber, big.NewInt(1)) + } + return !c.IsFeynman(lastBlockNumber, lastBlockTime) && c.IsFeynman(currentBlockNumber, currentBlockTime) +} + // IsCancun returns whether num is either equal to the Cancun fork time or greater. func (c *ChainConfig) IsCancun(num *big.Int, time uint64) bool { return c.IsLondon(num) && isTimestampForked(c.CancunTime, time) @@ -855,6 +885,8 @@ func (c *ChainConfig) CheckConfigForkOrder() error { {name: "platoBlock", block: c.PlatoBlock}, {name: "hertzBlock", block: c.HertzBlock}, {name: "shanghaiTime", timestamp: c.ShanghaiTime}, + {name: "keplerTime", timestamp: c.KeplerTime}, + {name: "feynmanTime", timestamp: c.FeynmanTime}, {name: "cancunTime", timestamp: c.CancunTime, optional: true}, {name: "pragueTime", timestamp: c.PragueTime, optional: true}, {name: "verkleTime", timestamp: c.VerkleTime, optional: true}, @@ -991,6 +1023,9 @@ func (c *ChainConfig) checkCompatible(newcfg *ChainConfig, headNumber *big.Int, if isForkTimestampIncompatible(c.KeplerTime, newcfg.KeplerTime, headTimestamp) { return newTimestampCompatError("Kepler fork timestamp", c.KeplerTime, newcfg.KeplerTime) } + if isForkTimestampIncompatible(c.FeynmanTime, newcfg.FeynmanTime, headTimestamp) { + return newTimestampCompatError("Feynman fork timestamp", c.FeynmanTime, newcfg.FeynmanTime) + } if isForkTimestampIncompatible(c.CancunTime, newcfg.CancunTime, headTimestamp) { return newTimestampCompatError("Cancun fork timestamp", c.CancunTime, newcfg.CancunTime) } @@ -1151,7 +1186,7 @@ type Rules struct { IsLuban bool IsPlato bool IsHertz bool - IsShanghai, IsKepler, IsCancun, IsPrague bool + IsShanghai, IsKepler, IsFeynman, IsCancun, IsPrague bool IsVerkle bool } @@ -1182,6 +1217,7 @@ func (c *ChainConfig) Rules(num *big.Int, isMerge bool, timestamp uint64) Rules IsHertz: c.IsHertz(num), IsShanghai: c.IsShanghai(num, timestamp), IsKepler: c.IsKepler(num, timestamp), + IsFeynman: c.IsFeynman(num, timestamp), IsCancun: c.IsCancun(num, timestamp), IsPrague: c.IsPrague(num, timestamp), IsVerkle: c.IsVerkle(num, timestamp), diff --git a/params/protocol_params.go b/params/protocol_params.go index 2b5cf89964..4598aebc23 100644 --- a/params/protocol_params.go +++ b/params/protocol_params.go @@ -144,6 +144,7 @@ const ( IdentityPerWordGas uint64 = 3 // Per-work price for a data copy operation BlsSignatureVerifyBaseGas uint64 = 1000 // base price for a BLS signature verify operation BlsSignatureVerifyPerKeyGas uint64 = 3500 // Per-key price for a BLS signature verify operation + DoubleSignEvidenceVerifyGas uint64 = 1000 // Gas for verify double sign evidence Bn256AddGasByzantium uint64 = 500 // Byzantium gas needed for an elliptic curve addition Bn256AddGasIstanbul uint64 = 150 // Gas needed for an elliptic curve addition diff --git a/signer/core/signed_data.go b/signer/core/signed_data.go index e3c2afa2db..6f10da6553 100644 --- a/signer/core/signed_data.go +++ b/signer/core/signed_data.go @@ -262,7 +262,7 @@ func parliaHeaderHashAndRlp(header *types.Header, chainId *big.Int) (hash, rlp [ return } rlp = parlia.ParliaRLP(header, chainId) - hash = parlia.SealHash(header, chainId).Bytes() + hash = types.SealHash(header, chainId).Bytes() return hash, rlp, err } From d3f882d7992c75a2374eda33e7de793a98d1a55e Mon Sep 17 00:00:00 2001 From: Roshan <48975233+Pythonberg1997@users.noreply.github.com> Date: Mon, 4 Dec 2023 10:43:23 +0800 Subject: [PATCH 02/28] chore: update contracts code (#2024) --- core/systemcontracts/upgrade.go | 51 +++++++++++---------------------- 1 file changed, 17 insertions(+), 34 deletions(-) diff --git a/core/systemcontracts/upgrade.go b/core/systemcontracts/upgrade.go index 1e2dd9b25b..2e59737740 100644 --- a/core/systemcontracts/upgrade.go +++ b/core/systemcontracts/upgrade.go @@ -60,8 +60,7 @@ var ( feynmanUpgrade = make(map[string]*Upgrade) - // TODO: revert this - // latestUpgrade = feynmanUpgrade + latestUpgrade = feynmanUpgrade ) func init() { @@ -772,17 +771,17 @@ func init() { { ContractAddr: common.HexToAddress(ValidatorContract), CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/cfc0bd1127186a917ddc38fd38d22903034d3f0b", - Code: "6080604052600436106104da5760003560e01c80638a7beb0111610281578063c6d339451161015a578063e40716a1116100cc578063f92eb86b11610085578063f92eb86b14610ccd578063f9a2bbc714610ce2578063fc3e590814610cf7578063fccc281314610d0c578063fd4ad81f14610d21578063fd6a687914610d50576104e1565b8063e40716a114610c30578063e589b61e14610c45578063ea321e4914610c65578063eb57e20214610c85578063eda5868c14610ca5578063f340fa0114610cba576104e1565b8063d86222d51161011e578063d86222d514610bb2578063daacdb6614610bc7578063dc927faf14610bdc578063df8079e914610bf1578063e086c7b114610c06578063e1c7392a14610c1b576104e1565b8063c6d3394514610b53578063c81b166214610b68578063c8509d811461090d578063ce910b0c14610b7d578063d68fb56a14610b9d576104e1565b8063aa82dce1116101f3578063ad3c9da6116101b7578063ad3c9da614610ad2578063aef198a914610af2578063b7ab4db514610b07578063b8cf4ef114610b29578063bf9f4995146106bd578063c466689d14610b3e576104e1565b8063aa82dce114610a5e578063aad5606314610a73578063aaf5eb6814610a88578063ab51bb9614610a9d578063ac43175114610ab2576104e1565b80639dc09262116102455780639dc09262146109e05780639fe0f816146109f5578063a0dc275814610a0a578063a1a11bf514610a1f578063a5422d5c14610a34578063a78abc1614610a49576104e1565b80638a7beb011461096c5780638b5ad0c9146109815780638d19a410146109965780639369d7de146109b657806396713da9146109cb576104e1565b806351e80672116103b357806370fd5bad116103255780637a84ca2a116102e95780637a84ca2a146108e357806381650b62146108f8578063831d65d11461090d578063853230aa1461092d578063862498821461094257806388b32f1114610957576104e1565b806370fd5bad1461087a578063718a8aa81461088f57806375d47a0a146108a457806378dfed4a146108b95780637942fd05146108ce576104e1565b80635de1e22c116103775780635de1e22c146107e9578063603d86d3146106a857806360eba4fe146107fe57806362b72cf51461081e5780636969a25c146108335780636e47b48214610865576104e1565b806351e806721461076a57806355614fcc1461077f578063565c56b31461079f5780635667515a146107bf5780635d77156c146107d4576104e1565b80633365af3a1161044c57806343756e5c1161041057806343756e5c146106df57806345cf9daf146106f4578063493279b1146107095780634bf6c8821461072b5780634df6e0c3146107405780635192c82c14610755576104e1565b80633365af3a1461064557806335409f7f146106655780633b071dcc146106855780633de0f0d8146106a85780633dffc387146106bd576104e1565b8063152ad3b81161049e578063152ad3b8146105995780631e4c1524146105bb5780631ff18069146105db578063219f22d5146105f0578063300c356714610605578063321d398a14610625576104e1565b806304c4fec6146104e657806307a56847146104fd5780630bee7a67146105285780630e2374a51461054a5780631182b8751461056c576104e1565b366104e157005b600080fd5b3480156104f257600080fd5b506104fb610d65565b005b34801561050957600080fd5b50610512610dd7565b60405161051f9190618c29565b60405180910390f35b34801561053457600080fd5b5061053d610ddd565b60405161051f9190618c53565b34801561055657600080fd5b5061055f610de2565b60405161051f9190617fa5565b34801561057857600080fd5b5061058c610587366004617e8b565b610de8565b60405161051f9190618138565b3480156105a557600080fd5b506105ae6110cb565b60405161051f919061812d565b3480156105c757600080fd5b506104fb6105d6366004617c99565b6110d4565b3480156105e757600080fd5b50610512611774565b3480156105fc57600080fd5b5061053d61177a565b34801561061157600080fd5b506104fb610620366004617c31565b61177f565b34801561063157600080fd5b506105ae610640366004617e38565b611ac8565b34801561065157600080fd5b506105ae610660366004617e38565b611b97565b34801561067157600080fd5b506104fb610680366004617bf9565b611c48565b34801561069157600080fd5b5061069a611da1565b60405161051f929190618043565b3480156106b457600080fd5b5061051261207d565b3480156106c957600080fd5b506106d2612083565b60405161051f9190618c64565b3480156106eb57600080fd5b5061055f612088565b34801561070057600080fd5b5061051261208e565b34801561071557600080fd5b5061071e612094565b60405161051f9190618c1a565b34801561073757600080fd5b506106d2612099565b34801561074c57600080fd5b5061069a61209e565b34801561076157600080fd5b5061051261221c565b34801561077657600080fd5b5061055f612222565b34801561078b57600080fd5b506105ae61079a366004617bf9565b612228565b3480156107ab57600080fd5b506105126107ba366004617bf9565b61225d565b3480156107cb57600080fd5b506106d26122ae565b3480156107e057600080fd5b5061053d6122b3565b3480156107f557600080fd5b506105126122b8565b34801561080a57600080fd5b5061058c610819366004617e38565b6122be565b34801561082a57600080fd5b50610512612364565b34801561083f57600080fd5b5061085361084e366004617e38565b61236a565b60405161051f96959493929190617fd2565b34801561087157600080fd5b5061055f6123ce565b34801561088657600080fd5b506106d26123d4565b34801561089b57600080fd5b506106d26123d9565b3480156108b057600080fd5b5061055f6123de565b3480156108c557600080fd5b506105126122ae565b3480156108da57600080fd5b506106d26123e4565b3480156108ef57600080fd5b506105126123e9565b34801561090457600080fd5b5061053d6123ef565b34801561091957600080fd5b506104fb610928366004617e8b565b6123f4565b34801561093957600080fd5b50610512612455565b34801561094e57600080fd5b5061051261245b565b34801561096357600080fd5b50610512612461565b34801561097857600080fd5b506105ae612467565b34801561098d57600080fd5b50610512612470565b3480156109a257600080fd5b506105126109b1366004617bf9565b612476565b3480156109c257600080fd5b506104fb6124b6565b3480156109d757600080fd5b506106d26125ca565b3480156109ec57600080fd5b5061055f6125cf565b348015610a0157600080fd5b506105126125d5565b348015610a1657600080fd5b506105126125da565b348015610a2b57600080fd5b5061055f6125df565b348015610a4057600080fd5b5061058c6125e5565b348015610a5557600080fd5b506105ae612601565b348015610a6a57600080fd5b5061055f61260a565b348015610a7f57600080fd5b5061055f612610565b348015610a9457600080fd5b50610512612616565b348015610aa957600080fd5b5061053d6122ae565b348015610abe57600080fd5b506104fb610acd366004617ddc565b61261f565b348015610ade57600080fd5b50610512610aed366004617bf9565b612ebd565b348015610afe57600080fd5b50610512612ecf565b348015610b1357600080fd5b50610b1c612edc565b60405161051f9190618030565b348015610b3557600080fd5b50610512612fc8565b348015610b4a57600080fd5b50610512612fcd565b348015610b5f57600080fd5b506105126123d4565b348015610b7457600080fd5b5061055f612fd3565b348015610b8957600080fd5b5061058c610b98366004617e38565b612fd9565b348015610ba957600080fd5b50610512612fe6565b348015610bbe57600080fd5b50610512613025565b348015610bd357600080fd5b50610512613031565b348015610be857600080fd5b5061055f613037565b348015610bfd57600080fd5b5061055f61303d565b348015610c1257600080fd5b50610512610ddd565b348015610c2757600080fd5b506104fb613043565b348015610c3c57600080fd5b506105126131ef565b348015610c5157600080fd5b506104fb610c60366004617bf9565b6131f5565b348015610c7157600080fd5b506105ae610c80366004617d9d565b61333a565b348015610c9157600080fd5b506104fb610ca0366004617bf9565b6134c0565b348015610cb157600080fd5b5061053d6135c4565b6104fb610cc8366004617bf9565b6135c9565b348015610cd957600080fd5b50610512613931565b348015610cee57600080fd5b5061055f613937565b348015610d0357600080fd5b506106d26125d5565b348015610d1857600080fd5b5061055f61393d565b348015610d2d57600080fd5b50610d41610d3c366004617e38565b613943565b60405161051f93929190618c32565b348015610d5c57600080fd5b5061055f613a05565b6000610d7033612476565b9050600b8181548110610d7f57fe5b600091825260209091206001601690920201015460ff16610dbb5760405162461bcd60e51b8152600401610db29061889d565b60405180910390fd5b6000610dc5612fe6565b9050610dd2338383613a0b565b505050565b60095481565b606481565b61200181565b60005460609060ff16610e0d5760405162461bcd60e51b8152600401610db2906182f7565b600b54610ecb57610e1c6177a5565b60015460005b81811015610ec757600b80546001810182556000919091528351600080516020618d368339815191526016909202918201908155602080860151600080516020618d768339815191528401805460ff1916911515919091179055604086015180518794610ea393600080516020618d568339815191529091019201906177d4565b506060820151610eb9906003830190601361784e565b505050806001019050610e22565b5050505b610ed361787b565b6000610f1485858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250613cdc92505050565b9150915080610f3057610f276064613e98565b925050506110c4565b815160009060ff16610f5557610f4e83602001518460400151613ef9565b9050611090565b825160ff166001141561108c57826020015151600114610f9a57600080516020618d16833981519152604051610f8a90618756565b60405180910390a1506067611087565b6000600460008560200151600081518110610fb157fe5b6020026020010151600001516001600160a01b03166001600160a01b0316815260200190815260200160002054905080600014806110195750600180820381548110610ff957fe5b9060005260206000209060040201600201601c9054906101000a900460ff165b1561107957836020015160008151811061102f57fe5b6020026020010151600001516001600160a01b03167fe209c46bebf57cf265d5d9009a00870e256d9150f3ed5281ab9d9eb3cec6e4be60405160405180910390a260009150611085565b6110828161505d565b91505b505b611090565b5060655b63ffffffff81166110b557505060408051600081526020810190915291506110c49050565b6110be81613e98565b93505050505b9392505050565b60075460ff1681565b3341146110f35760405162461bcd60e51b8152600401610db290618a85565b3a156111115760405162461bcd60e51b8152600401610db2906187dc565b825160408051828152602080840282010190915260609082801561114f57816020015b61113c61789f565b8152602001906001900390816111345790505b50905060005b828110156111f9576040518060c0016040528087838151811061117457fe5b60200260200101516001600160a01b0316815260200160006001600160a01b0316815260200160006001600160a01b031681526020018683815181106111b657fe5b60200260200101516001600160401b0316815260200160001515815260200160008152508282815181106111e657fe5b6020908102919091010152600101611155565b5060405163d31f968d60e01b81526120009063d31f968d906112249061100090600890600401618014565b60206040518083038186803b15801561123c57600080fd5b505afa158015611250573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112749190617d7d565b1561156d5780518061128857505050610dd2565b6015548181111561132357815b818110156113215760158054806112a857fe5b60008281526020812060046000199093019283020180546001600160a01b0319908116825560018201805490911690556002810180546001600160e81b031916905560030155905560168054806112fb57fe5b60019003818190600052602060002001600061131791906178d4565b9055600101611295565b505b60005b828110156115635781811061144b57601584828151811061134357fe5b602090810291909101810151825460018181018555600094855293839020825160049092020180546001600160a01b039283166001600160a01b0319918216178255938301519481018054958316958516959095179094556040820151600285018054606085015160808601511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b199590961692909716919091179290921692909217169290921790915560a00151600390910155855160169087908390811061141357fe5b6020908102919091018101518254600181018455600093845292829020815161144594919091019291909101906177d4565b5061155b565b83818151811061145757fe5b60200260200101516015828154811061146c57fe5b6000918252602091829020835160049092020180546001600160a01b039283166001600160a01b0319918216178255928401516001820180549184169185169190911790556040840151600282018054606087015160808801511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b1995909716929097169190911792909216939093171692909217905560a090910151600390910155855186908290811061152757fe5b60200260200101516016828154811061153c57fe5b9060005260206000200190805190602001906115599291906177d4565b505b600101611326565b5050505050610dd2565b60608061157a8386615171565b9150915060005b600154811015611664576001818154811061159857fe5b90600052602060002090600402016003015460001461165c576120026001600160a01b031663092193ab600183815481106115cf57fe5b906000526020600020906004020160030154600184815481106115ee57fe5b60009182526020909120600491820201546040516001600160e01b031960e086901b168152611629926001600160a01b039092169101617fa5565b6000604051808303818588803b15801561164257600080fd5b505af1158015611656573d6000803e3d6000fd5b50505050505b600101611581565b5047156116d2577f6ecc855f9440a9282c90913bbc91619fd44f5ec0b462af28d127b116f130aa4d4760405161169a9190618c29565b60405180910390a1604051611002904780156108fc02916000818181858888f193505050501580156116d0573d6000803e3d6000fd5b505b600060038190556005558151156116ed576116ed82826153aa565b6110016001600160a01b031663fc4333cd6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561172a57600080fd5b505af115801561173e573d6000803e3d6000fd5b50506040517fedd8d7296956dd970ab4de3f2fc03be2b0ffc615d20cd4c72c6e44f928630ebf925060009150a150505050505050565b60035481565b606881565b33411461179e5760405162461bcd60e51b8152600401610db290618a85565b60105443116117bf5760405162461bcd60e51b8152600401610db290618453565b3a156117dd5760405162461bcd60e51b8152600401610db2906187dc565b60005460ff166117ff5760405162461bcd60e51b8152600401610db2906182f7565b60006110023168056bc75e2d631000008111156118365761182f8168056bc75e2d6310000063ffffffff615bb116565b915061183d565b5050611abe565b6040516309a99b4f60e41b815261100290639a99b4f0906118649030908690600401617fb9565b602060405180830381600087803b15801561187e57600080fd5b505af1158015611892573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118b69190617e50565b9150816118c4575050611abe565b6000805b848110156118f2578585828181106118dc57fe5b90506020020135820191508060010190506118c8565b508061190057505050611abe565b6000806000805b89811015611ab6578489898381811061191c57fe5b9050602002013588028161192c57fe5b0493508a8a8281811061193b57fe5b90506020020160208101906119509190617bf9565b6001600160a01b03811660009081526004602052604090205490935091508115611a6c57600060018084038154811061198557fe5b9060005260206000209060040201905080600201601c9054906101000a900460ff16156119f257836001600160a01b03167fb9c75cbbfde137c4281689580799ef5f52144e78858f776a5979b2b212137d85866040516119e59190618c29565b60405180910390a2611a66565b600354611a05908663ffffffff615bf316565b6003908155810154611a1d908663ffffffff615bf316565b60038201556040516001600160a01b038516907fcb0aad6cf9cd03bdf6137e359f541c42f38b39f007cae8e89e88aa7d8c6617b290611a5d908890618c29565b60405180910390a25b50611aae565b826001600160a01b03167fb9c75cbbfde137c4281689580799ef5f52144e78858f776a5979b2b212137d8585604051611aa59190618c29565b60405180910390a25b600101611907565b505050505050505b5050436010555050565b6001546000908210611adc57506000611b92565b60006001600160a01b031660018381548110611af457fe5b60009182526020909120600490910201546001600160a01b03161480611b2457506008541580611b245750600a54155b80611b33575060085460095410155b80611b445750611b4282611b97565b155b80611b6d57506000600b8381548110611b5957fe5b906000526020600020906016020160000154115b80611b8157506001611b7d612edc565b5111155b15611b8e57506000611b92565b5060015b919050565b6001546000908210611bab57506000611b92565b600b548210611be85760018281548110611bc157fe5b9060005260206000209060040201600201601c9054906101000a900460ff16159050611b92565b60018281548110611bf557fe5b9060005260206000209060040201600201601c9054906101000a900460ff16158015611c425750600b8281548110611c2957fe5b600091825260209091206001601690920201015460ff16155b92915050565b3361100114611c695760405162461bcd60e51b8152600401610db290618b9a565b600b54611d2757611c786177a5565b60015460005b81811015611d2357600b80546001810182556000919091528351600080516020618d368339815191526016909202918201908155602080860151600080516020618d768339815191528401805460ff1916911515919091179055604086015180518794611cff93600080516020618d568339815191529091019201906177d4565b506060820151611d15906003830190601361784e565b505050806001019050611c7e565b5050505b6001600160a01b03811660009081526004602052604090205480611d4b5750611d9e565b6001810390506000600b8281548110611d6057fe5b600091825260209091206001601690920201015460ff169050611d838383615c18565b8015611d8c5750805b15610dd2576009805460001901905550505b50565b60015460609081906000805b82811015611df45760018181548110611dc257fe5b9060005260206000209060040201600201601c9054906101000a900460ff16611dec576001909101905b600101611dad565b50606081604051908082528060200260200182016040528015611e21578160200160208202803683370190505b509050606082604051908082528060200260200182016040528015611e5a57816020015b6060815260200190600190039081611e455790505b50600b5460009450909150841415611fd55760005b84811015611fcf5760018181548110611e8457fe5b9060005260206000209060040201600201601c9054906101000a900460ff16611fc75760018181548110611eb457fe5b600091825260209091206004909102015483516001600160a01b0390911690849086908110611edf57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050600b8181548110611f0c57fe5b600091825260209182902060026016909202018101805460408051601f600019610100600186161502019093169490940491820185900485028401850190528083529192909190830182828015611fa45780601f10611f7957610100808354040283529160200191611fa4565b820191906000526020600020905b815481529060010190602001808311611f8757829003601f168201915b5050505050828581518110611fb557fe5b60209081029190910101526001909301925b600101611e6f565b50612071565b60005b8481101561206f5760018181548110611fed57fe5b9060005260206000209060040201600201601c9054906101000a900460ff16612067576001818154811061201d57fe5b600091825260209091206004909102015483516001600160a01b039091169084908690811061204857fe5b6001600160a01b03909216602092830291909101909101526001909301925b600101611fd8565b505b909450925050505b9091565b61271081565b600181565b61100181565b60085481565b603881565b600881565b600e54600c546060918291806120b2575060155b60606120bc612edc565b905060606120c982615fcb565b9050828251116120e0579094509250612079915050565b838383510310156120f2578282510393505b83156121285760c8430461210e83838388880360008a8a616139565b6121268383838888038989038a8b8b8b510301616139565b505b606083604051908082528060200260200182016040528015612154578160200160208202803683370190505b50905060608460405190808252806020026020018201604052801561218d57816020015b60608152602001906001900390816121785790505b50905060005b8581101561220e578481815181106121a757fe5b60200260200101518382815181106121bb57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508381815181106121e757fe5b60200260200101518282815181106121fb57fe5b6020908102919091010152600101612193565b509096509450505050509091565b60065481565b61200081565b6001600160a01b03811660009081526004602052604081205480612250576000915050611b92565b600019016110c481611b97565b6001600160a01b03811660009081526004602052604081205480612285576000915050611b92565b60018082038154811061229457fe5b906000526020600020906004020160030154915050919050565b600081565b606781565b600f5481565b601281815481106122cb57fe5b600091825260209182902001805460408051601f600260001961010060018716150201909416939093049283018590048502810185019091528181529350909183018282801561235c5780601f106123315761010080835404028352916020019161235c565b820191906000526020600020905b81548152906001019060200180831161233f57829003601f168201915b505050505081565b60105481565b6001818154811061237757fe5b600091825260209091206004909102018054600182015460028301546003909301546001600160a01b0392831694509082169291821691600160a01b81046001600160401b031691600160e01b90910460ff169086565b61100581565b600281565b601081565b61100881565b600b81565b600c5481565b606681565b33612000146124155760405162461bcd60e51b8152600401610db290618a36565b7f41ce201247b6ceb957dcdb217d0b8acb50b9ea0e12af9af4f5e7f3890210160583838360405161244893929190618c72565b60405180910390a1505050565b6103e881565b60025481565b60115481565b60145460ff1681565b600a5481565b6001600160a01b038116600090815260046020526040812054806124ac5760405162461bcd60e51b8152600401610db2906189be565b6000190192915050565b600b54612574576124c56177a5565b60015460005b8181101561257057600b80546001810182556000919091528351600080516020618d368339815191526016909202918201908155602080860151600080516020618d768339815191528401805460ff191691151591909117905560408601518051879461254c93600080516020618d568339815191529091019201906177d4565b506060820151612562906003830190601361784e565b5050508060010190506124cb565b5050505b6008546125815760036008555b600a5461258e576002600a555b600061259933612476565b90506125a481611ac8565b6125c05760405162461bcd60e51b8152600401610db290618713565b611d9e3382616290565b600981565b61100781565b600381565b60c881565b61100681565b6040518060a0016040528060788152602001618d966078913981565b60005460ff1681565b61200281565b61300081565b6402540be40081565b60005460ff166126415760405162461bcd60e51b8152600401610db2906182f7565b33611007146126625760405162461bcd60e51b8152600401610db29061880a565b6126cc84848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080518082019091526013815272065787069726554696d655365636f6e6447617606c1b602082015291506163289050565b1561276957602081146126f15760405162461bcd60e51b8152600401610db290618978565b604080516020601f840181900481028201810190925282815260009161272f9185858083850183828082843760009201919091525061638192505050565b9050606481101580156127455750620186a08111155b6127615760405162461bcd60e51b8152600401610db290618603565b600255612e7a565b6127c984848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260098152686275726e526174696f60b81b602082015291506163289050565b1561285857602081146127ee5760405162461bcd60e51b8152600401610db29061817d565b604080516020601f840181900481028201810190925282815260009161282c9185858083850183828082843760009201919091525061638192505050565b90506127108111156128505760405162461bcd60e51b8152600401610db290618495565b600655612e7a565b6128c284848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260138152726d61784e756d4f664d61696e7461696e696e6760681b602082015291506163289050565b1561295c57602081146128e75760405162461bcd60e51b8152600401610db2906181b4565b604080516020601f84018190048102820181019092528281526000916129259185858083850183828082843760009201919091525061638192505050565b600c5490915080612934575060155b8082106129535760405162461bcd60e51b8152600401610db290618508565b50600855612e7a565b6129c584848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260128152716d61696e7461696e536c6173685363616c6560701b602082015291506163289050565b15612a5e57602081146129ea5760405162461bcd60e51b8152600401610db29061827d565b604080516020601f8401819004810282018101909252828152600091612a289185858083850183828082843760009201919091525061638192505050565b9050600081118015612a3a5750600a81105b612a565760405162461bcd60e51b8152600401610db290618b16565b600a55612e7a565b612ad284848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601981527f6d61784e756d4f66576f726b696e6743616e6469646174657300000000000000602082015291506163289050565b15612b615760208114612af75760405162461bcd60e51b8152600401610db290618231565b604080516020601f8401819004810282018101909252828152600091612b359185858083850183828082843760009201919091525061638192505050565b9050600d54811115612b595760405162461bcd60e51b8152600401610db290618679565b600e55612e7a565b612bca84848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260128152716d61784e756d4f6643616e6469646174657360701b602082015291506163289050565b15612c4c5760208114612bef5760405162461bcd60e51b8152600401610db290618858565b604080516020601f8401819004810282018101909252828152600091612c2d9185858083850183828082843760009201919091525061638192505050565b600d819055600e54909150811015612c4657600d54600e555b50612e7a565b612cb084848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600d81526c6e756d4f66436162696e65747360981b602082015291506163289050565b15612d5e5760208114612cd55760405162461bcd60e51b8152600401610db2906182c2565b604080516020601f8401819004810282018101909252828152600091612d139185858083850183828082843760009201919091525061638192505050565b905060008111612d355760405162461bcd60e51b8152600401610db290618365565b6064811115612d565760405162461bcd60e51b8152600401610db2906183ad565b600c55612e7a565b612dc684848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601181527073797374656d526577617264526174696f60781b602082015291506163289050565b15612e625760208114612deb5760405162461bcd60e51b8152600401610db290618ad2565b604080516020601f8401819004810282018101909252828152600091612e299185858083850183828082843760009201919091525061638192505050565b905060018110158015612e3e57506127108111155b612e5a5760405162461bcd60e51b8152600401610db2906185b0565b600f55612e7a565b60405162461bcd60e51b8152600401610db290618b73565b7f6cdb0ac70ab7f2e2d035cca5be60d89906f2dede7648ddbd7402189c1eeed17a84848484604051612eaf949392919061814b565b60405180910390a150505050565b60046020526000908152604090205481565b68056bc75e2d6310000081565b6001546060906000805b82811015612f0b57612ef781611b97565b15612f03578160010191505b600101612ee6565b50606081604051908082528060200260200182016040528015612f38578160200160208202803683370190505b5090506000915060005b83811015612fbf57612f5381611b97565b15612fb75760018181548110612f6557fe5b600091825260209091206004909102015482516001600160a01b0390911690839085908110612f9057fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508260010192505b600101612f42565b50925050505b90565b601581565b61027181565b61100281565b601381815481106122cb57fe5b6000612ff0612edc565b519050600080600c5411613005576015613009565b600c545b905080821115613017578091505b8161302157600191505b5090565b67016345785d8a000081565b60055481565b61100381565b61200481565b60005460ff16156130665760405162461bcd60e51b8152600401610db29061890a565b61306e61787b565b60006130916040518060a0016040528060788152602001618d9660789139613cdc565b91509150806130b25760405162461bcd60e51b8152600401610db2906189f5565b60005b8260200151518110156131d7576001836020015182815181106130d457fe5b60209081029190910181015182546001818101855560009485528385208351600493840290910180546001600160a01b039283166001600160a01b03199182161782558587015182850180549185169183169190911790556040860151600283018054606089015160808a01511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b199590981692909516919091179290921694909417161790915560a0909301516003909301929092559186015180519185019391859081106131aa57fe5b602090810291909101810151516001600160a01b03168252810191909152604001600020556001016130b5565b50506103e8600255506000805460ff19166001179055565b600d5481565b33612002146132165760405162461bcd60e51b8152600401610db290618be3565b60005b60155481101561329e57816001600160a01b03166015828154811061323a57fe5b60009182526020909120600490910201546001600160a01b031614156132965760016015828154811061326957fe5b9060005260206000209060040201600201601c6101000a81548160ff02191690831515021790555061329e565b600101613219565b506001600160a01b0381166000908152600460205260409020548015806132ef57506001808203815481106132cf57fe5b9060005260206000209060040201600201601c9054906101000a900460ff165b1561332d576040516001600160a01b038316907fe209c46bebf57cf265d5d9009a00870e256d9150f3ed5281ab9d9eb3cec6e4be90600090a2613336565b610dd28161505d565b5050565b601354600090815b818110156134435761342b85858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060138054909250859150811061339357fe5b600091825260209182902001805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156134215780601f106133f657610100808354040283529160200191613421565b820191906000526020600020905b81548152906001019060200180831161340457829003601f168201915b5050505050616386565b1561343b57600192505050611c42565b600101613342565b5060125460005b818110156134b45761349b86868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060128054909250859150811061339357fe5b156134ac5760019350505050611c42565b60010161344a565b50600095945050505050565b33611001146134e15760405162461bcd60e51b8152600401610db290618b9a565b600b5461359f576134f06177a5565b60015460005b8181101561359b57600b80546001810182556000919091528351600080516020618d368339815191526016909202918201908155602080860151600080516020618d768339815191528401805460ff191691151591909117905560408601518051879461357793600080516020618d568339815191529091019201906177d4565b50606082015161358d906003830190601361784e565b5050508060010190506134f6565b5050505b60006135aa826163ea565b90506135b581611ac8565b15613336576133368282616290565b606581565b3341146135e85760405162461bcd60e51b8152600401610db290618a85565b60005460ff1661360a5760405162461bcd60e51b8152600401610db2906182f7565b6000341161362a5760405162461bcd60e51b8152600401610db29061864a565b3a156136485760405162461bcd60e51b8152600401610db2906187dc565b6001600160a01b03811660009081526004602052604090205460145434919060ff1661368857610271600f556103aa6006556014805460ff191660011790555b60006136b16127106136a5600f548661658d90919063ffffffff16565b9063ffffffff6165c716565b90508015613721576040516110029082156108fc029083906000818181858888f193505050501580156136e8573d6000803e3d6000fd5b507f6ecc855f9440a9282c90913bbc91619fd44f5ec0b462af28d127b116f130aa4d816040516137189190618c29565b60405180910390a15b60008311801561373357506000600654115b156137d95760006137556127106136a56006548761658d90919063ffffffff16565b905080156137d75760405161dead9082156108fc029083906000818181858888f1935050505015801561378c573d6000803e3d6000fd5b507f627059660ea01c4733a328effb2294d2f86905bf806da763a89cee254de8bee5816040516137bc9190618c29565b60405180910390a16137d4848263ffffffff615bb116565b93505b505b6137e9838263ffffffff615bb116565b925081156138e957600060018084038154811061380257fe5b9060005260206000209060040201905080600201601c9054906101000a900460ff161561386f57846001600160a01b03167ff177e5d6c5764d79c32883ed824111d9b13f5668cf6ab1cc12dd36791dd955b4856040516138629190618c29565b60405180910390a26138e3565b600354613882908563ffffffff615bf316565b600390815581015461389a908563ffffffff615bf316565b60038201556040516001600160a01b038616907f93a090ecc682c002995fad3c85b30c5651d7fd29b0be5da9d784a3302aedc055906138da908790618c29565b60405180910390a25b5061392b565b836001600160a01b03167ff177e5d6c5764d79c32883ed824111d9b13f5668cf6ab1cc12dd36791dd955b4846040516139229190618c29565b60405180910390a25b50505050565b600e5481565b61100081565b61dead81565b600b818154811061395057fe5b6000918252602091829020601691909102018054600180830154600280850180546040805161010096831615969096026000190190911692909204601f810188900488028501880190925281845293965060ff909116949192918301828280156139fb5780601f106139d0576101008083540402835291602001916139fb565b820191906000526020600020905b8154815290600101906020018083116139de57829003601f168201915b5050505050905083565b61100481565b6000600a5460001480613a1c575081155b80613a275750600954155b15613a34575060006110c4565b60096000815460019003919050819055506000613a7f600a546136a5856136a5600b8981548110613a6157fe5b6000918252602090912060169091020154439063ffffffff615bb116565b90506000600b8581548110613a9057fe5b906000526020600020906016020160010160006101000a81548160ff0219169083151502179055506000806110016001600160a01b0316638256ace66040518163ffffffff1660e01b8152600401604080518083038186803b158015613af557600080fd5b505afa158015613b09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b2d9190617e68565b9150915060009350808310613c8c57613b468787615c18565b506040516333c1892360e21b81526000906120029063cf06248c90613b6f908b90600401617fa5565b60206040518083038186803b158015613b8757600080fd5b505afa158015613b9b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613bbf9190617c15565b6001600160a01b031614613c2b576040516313d13bdb60e31b815261100190639e89ded890613bf4908a908790600401617fb9565b600060405180830381600087803b158015613c0e57600080fd5b505af1158015613c22573d6000803e3d6000fd5b50505050613c83565b6040516305bfb49960e41b815261100190635bfb499090613c50908a90600401617fa5565b600060405180830381600087803b158015613c6a57600080fd5b505af1158015613c7e573d6000803e3d6000fd5b505050505b60019350613c9e565b818310613c9e57613c9c876163ea565b505b6040516001600160a01b038816907fb9d38178dc641ff1817967a63c9078cbcd955a9f1fcd75e0e3636de615d44d3b90600090a25050509392505050565b613ce461787b565b6000613cee61787b565b613cf6617918565b613d07613d0286616609565b61662e565b90506000805b613d1683616678565b15613e8a5780613d3b57613d31613d2c84616699565b6166e7565b60ff168452613e82565b8060011415613e7d576060613d57613d5285616699565b616767565b90508051604051908082528060200260200182016040528015613d9457816020015b613d8161789f565b815260200190600190039081613d795790505b5085602001819052508051604051908082528060200260200182016040528015613dd257816020015b6060815260200190600190039081613dbd5790505b50604086015260005b8151811015613e7257613dec61789f565b60606000613e0c858581518110613dff57fe5b6020026020010151616838565b92509250925080613e2c578860009a509a50505050505050505050613e93565b8289602001518581518110613e3d57fe5b60200260200101819052508189604001518581518110613e5957fe5b6020026020010181905250505050806001019050613ddb565b506001925050613e82565b613e8a565b600101613d0d565b50919350909150505b915091565b604080516001808252818301909252606091829190816020015b6060815260200190600190039081613eb2579050509050613ed88363ffffffff16616952565b81600081518110613ee557fe5b60200260200101819052506110c481616965565b6000606483511115613f3057600080516020618d16833981519152604051613f209061840a565b60405180910390a1506066611c42565b60005b8351811015613fce5760005b81811015613fc557848181518110613f5357fe5b6020026020010151600001516001600160a01b0316858381518110613f7457fe5b6020026020010151600001516001600160a01b03161415613fbd57600080516020618d16833981519152604051613faa90618565565b60405180910390a1606692505050611c42565b600101613f3f565b50600101613f33565b5060608060606015805480602002602001604051908101604052809291908181526020016000905b828210156140805760008481526020908190206040805160c0810182526004860290920180546001600160a01b039081168452600180830154821685870152600283015491821693850193909352600160a01b81046001600160401b03166060850152600160e01b900460ff16151560808401526003015460a08301529083529092019101613ff6565b50505050905060606016805480602002602001604051908101604052809291908181526020016000905b828210156141555760008481526020908190208301805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156141415780601f1061411657610100808354040283529160200191614141565b820191906000526020600020905b81548152906001019060200180831161412457829003601f168201915b5050505050815260200190600101906140aa565b50505050905060005b82518110156141b25782818151811061417357fe5b60200260200101516060015160020283828151811061418e57fe5b60209081029190910101516001600160401b0390911660609091015260010161415e565b506060806141c2898986866169ef565b915091506141d08282615171565b6001546040805182815260208084028201019091529298509096506000955085945092506060915082801561420f578160200160208202803683370190505b50905060005b828110156143a05760006001600160a01b03166120026001600160a01b031663cf06248c6001848154811061424657fe5b60009182526020909120600491820201546040516001600160e01b031960e085901b168152614281926001600160a01b039092169101617fa5565b60206040518083038186803b15801561429957600080fd5b505afa1580156142ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142d19190617c15565b6001600160a01b0316146143335760018282815181106142ed57fe5b602002602001019060ff16908160ff16815250506001818154811061430e57fe5b90600052602060002090600402016003015460001461432e578360010193505b614398565b67016345785d8a00006001828154811061434957fe5b9060005260206000209060040201600301541061436b57846001019450614398565b6001818154811061437857fe5b906000526020600020906004020160030154600014614398578360010193505b600101614215565b506060846040519080825280602002602001820160405280156143cd578160200160208202803683370190505b5090506060856040519080825280602002602001820160405280156143fc578160200160208202803683370190505b50905060608660405190808252806020026020018201604052801561442b578160200160208202803683370190505b50905060608760405190808252806020026020018201604052801561445a578160200160208202803683370190505b509050600060608860405190808252806020026020018201604052801561448b578160200160208202803683370190505b5090506060896040519080825280602002602001820160405280156144ba578160200160208202803683370190505b50905060009a506000995060006110046001600160a01b031663149d14d96040518163ffffffff1660e01b815260040160206040518083038186803b15801561450257600080fd5b505afa158015614516573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061453a9190617e50565b905067016345785d8a000081111561458657600080516020618d16833981519152604051614567906188c9565b60405180910390a160689e505050505050505050505050505050611c42565b60005b8a81101561491a5789818151811061459d57fe5b602002602001015160ff166001141561469357600181815481106145bd57fe5b90600052602060002090600402016003015460001461468e57600181815481106145e357fe5b600091825260209091206004909102015484516001600160a01b039091169085908e90811061460e57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250506001818154811061463b57fe5b906000526020600020906004020160030154838d8151811061465957fe5b60200260200101818152505060018a8d8151811061467357fe5b602002602001019060ff16908160ff16815250508b6001019b505b614912565b67016345785d8a0000600182815481106146a957fe5b9060005260206000209060040201600301541061482e57600181815481106146cd57fe5b906000526020600020906004020160020160009054906101000a90046001600160a01b0316898e815181106146fe57fe5b60200260200101906001600160a01b031690816001600160a01b03168152505060006402540be4006001838154811061473357fe5b9060005260206000209060040201600301548161474c57fe5b066001838154811061475a57fe5b9060005260206000209060040201600301540390506147828382615bb190919063ffffffff16565b898f8151811061478e57fe5b602002602001018181525050600182815481106147a757fe5b906000526020600020906004020160010160009054906101000a90046001600160a01b0316878f815181106147d857fe5b60200260200101906001600160a01b031690816001600160a01b03168152505081888f8151811061480557fe5b6020908102919091010152614820868263ffffffff615bf316565b95508d6001019d5050614912565b6001818154811061483b57fe5b906000526020600020906004020160030154600014614912576001818154811061486157fe5b906000526020600020906004020160010160009054906101000a90046001600160a01b0316848d8151811061489257fe5b60200260200101906001600160a01b031690816001600160a01b031681525050600181815481106148bf57fe5b906000526020600020906004020160030154838d815181106148dd57fe5b60200260200101818152505060008a8d815181106148f757fe5b602002602001019060ff16908160ff16815250508b6001019b505b600101614589565b5060008415614b90576002546040516303702b2960e51b815261100491636e056520918891614954918e918e918d914201906004016180b3565b6020604051808303818588803b15801561496d57600080fd5b505af19350505050801561499e575060408051601f3d908101601f1916820190925261499b91810190617d7d565b60015b614b15576040516000815260443d10156149ba57506000614a55565b60046000803e60005160e01c6308c379a081146149db576000915050614a55565b60043d036004833e81513d60248201116001600160401b0382111715614a0657600092505050614a55565b80830180516001600160401b03811115614a27576000945050505050614a55565b8060208301013d8601811115614a4557600095505050505050614a55565b601f01601f191660405250925050505b80614a605750614aa2565b60019150857fa7cdeed7d0db45e3219a6e5d60838824c16f1d39991fcfe3f963029c844bf28082604051614a949190618138565b60405180910390a250614b10565b3d808015614acc576040519150601f19603f3d011682016040523d82523d6000602084013e614ad1565b606091505b5060019150857fbfa884552dd8921b6ce90bfe906952ae5b3b29be0cc1a951d4f62697635a3a4582604051614b069190618138565b60405180910390a2505b614b90565b8015614b57577fa217d08e65f80c73121cd9db834d81652d544bfbf452f6d04922b16c90a37b7086604051614b4a9190618c29565b60405180910390a1614b8e565b857fa7cdeed7d0db45e3219a6e5d60838824c16f1d39991fcfe3f963029c844bf280604051614b85906181fa565b60405180910390a25b505b8015614d465760005b8751811015614d44576000888281518110614bb057fe5b60200260200101519050600060018281548110614bc957fe5b60009182526020909120600160049092020181015481546001600160a01b03909116916108fc9185908110614bfa57fe5b9060005260206000209060040201600301549081150290604051600060405180830381858888f1935050505090508015614cb65760018281548110614c3b57fe5b60009182526020909120600160049092020181015481546001600160a01b03909116917f6c61d60f69a7beb3e1c80db7f39f37b208537cbb19da3174511b477812b2fc7d9185908110614c8a57fe5b906000526020600020906004020160030154604051614ca99190618c29565b60405180910390a2614d3a565b60018281548110614cc357fe5b60009182526020909120600160049092020181015481546001600160a01b03909116917f25d0ce7d2f0cec669a8c17efe49d195c13455bb8872b65fa610ac7f53fe4ca7d9185908110614d1257fe5b906000526020600020906004020160030154604051614d319190618c29565b60405180910390a25b5050600101614b99565b505b835115614f3c5760005b8451811015614f3a578a8181518110614d6557fe5b602002602001015160ff1660011415614e04576120026001600160a01b031663092193ab858381518110614d9557fe5b6020026020010151878481518110614da957fe5b60200260200101516040518363ffffffff1660e01b8152600401614dcd9190617fa5565b6000604051808303818588803b158015614de657600080fd5b505af1158015614dfa573d6000803e3d6000fd5b5050505050614f32565b6000858281518110614e1257fe5b60200260200101516001600160a01b03166108fc868481518110614e3257fe5b60200260200101519081150290604051600060405180830381858888f1935050505090508015614ec857858281518110614e6857fe5b60200260200101516001600160a01b03167f6c61d60f69a7beb3e1c80db7f39f37b208537cbb19da3174511b477812b2fc7d868481518110614ea657fe5b6020026020010151604051614ebb9190618c29565b60405180910390a2614f30565b858281518110614ed457fe5b60200260200101516001600160a01b03167f25d0ce7d2f0cec669a8c17efe49d195c13455bb8872b65fa610ac7f53fe4ca7d868481518110614f1257fe5b6020026020010151604051614f279190618c29565b60405180910390a25b505b600101614d50565b505b505050505050505050505050506000471115614fb9577f6ecc855f9440a9282c90913bbc91619fd44f5ec0b462af28d127b116f130aa4d47604051614f819190618c29565b60405180910390a1604051611002904780156108fc02916000818181858888f19350505050158015614fb7573d6000803e3d6000fd5b505b60006003819055600555815115614fd457614fd482826153aa565b6110016001600160a01b031663fc4333cd6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561501157600080fd5b505af1158015615025573d6000803e3d6000fd5b50506040517fedd8d7296956dd970ab4de3f2fc03be2b0ffc615d20cd4c72c6e44f928630ebf925060009150a1506000949350505050565b600154600554600091906000198201118015906150d05760018085038154811061508357fe5b600091825260208220600490910201546040516001600160a01b03909116917fe209c46bebf57cf265d5d9009a00870e256d9150f3ed5281ab9d9eb3cec6e4be91a2600092505050611b92565b6005805460019081019091558054819060001987019081106150ee57fe5b9060005260206000209060040201600201601c6101000a81548160ff02191690831515021790555060018085038154811061512557fe5b600091825260208220600490910201546040516001600160a01b03909116917ff226e7d8f547ff903d9d419cf5f54e0d7d07efa9584135a53a057c5f1f27f49a91a25060009392505050565b606080600080808080615182612fe6565b6001549091505b801561529057600181039250600b83815481106151a257fe5b600091825260209091206001601690920201015460ff166151c257615287565b600183815481106151cf57fe5b60009182526020909120600490910201546001600160a01b031694506151f6858484613a0b565b9350831580615209575060018a51038610155b1561521357615287565b60005b8a5181101561528557856001600160a01b03168b828151811061523557fe5b6020026020010151600001516001600160a01b0316141561527d5760018b828151811061525e57fe5b6020908102919091010151901515608090910152600190960195615285565b600101615216565b505b60001901615189565b50848951036040519080825280602002602001820160405280156152ce57816020015b6152bb61789f565b8152602001906001900390816152b35790505b5096508489510360405190808252806020026020018201604052801561530857816020015b60608152602001906001900390816152f35790505b5095506000915060005b895181101561539c5789818151811061532757fe5b6020026020010151608001516153945789818151811061534357fe5b602002602001015188848151811061535757fe5b602002602001018190525088818151811061536e57fe5b602002602001015187848151811061538257fe5b60200260200101819052508260010192505b600101615312565b5050505050505b9250929050565b600154825160005b828110156154c75760016153c461789f565b600183815481106153d157fe5b600091825260208083206040805160c08101825260049490940290910180546001600160a01b0390811685526001820154811693850193909352600281015492831691840191909152600160a01b82046001600160401b03166060840152600160e01b90910460ff16151560808301526003015460a082015291505b8481101561549b5787818151811061546157fe5b6020026020010151600001516001600160a01b031682600001516001600160a01b03161415615493576000925061549b565b60010161544d565b5081156154bd5780516001600160a01b03166000908152600460205260408120555b50506001016153b2565b508082111561558657805b828110156155845760018054806154e557fe5b60008281526020812060046000199093019283020180546001600160a01b0319908116825560018201805490911690556002810180546001600160e81b0319169055600301559055600b80548061553857fe5b60008281526020812060166000199093019283020181815560018101805460ff191690559061556a60028301826178d4565b615578600383016000617938565b505090556001016154d2565b505b60008183106155955781615597565b825b905060005b81811015615953576156498682815181106155b357fe5b6020026020010151600183815481106155c857fe5b60009182526020918290206040805160c08101825260049390930290910180546001600160a01b0390811684526001820154811694840194909452600281015493841691830191909152600160a01b83046001600160401b03166060830152600160e01b90920460ff161515608082015260039091015460a0820152616dbb565b6157fd57806001016004600088848151811061566157fe5b6020026020010151600001516001600160a01b03166001600160a01b031681526020019081526020016000208190555085818151811061569d57fe5b6020026020010151600182815481106156b257fe5b6000918252602091829020835160049092020180546001600160a01b039283166001600160a01b0319918216178255928401516001820180549184169185169190911790556040840151600282018054606087015160808801511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b1995909716929097169190911792909216939093171692909217905560a090910151600390910155845185908290811061576d57fe5b6020026020010151600b828154811061578257fe5b906000526020600020906016020160020190805190602001906157a69291906177d4565b506000600b82815481106157b657fe5b60009182526020822060169190910201600101805460ff191692151592909217909155600b8054839081106157e757fe5b600091825260209091206016909102015561594b565b61588e85828151811061580c57fe5b6020026020010151600b838154811061582157fe5b600091825260209182902060026016909202018101805460408051601f6000196101006001861615020190931694909404918201859004850284018501905280835291929091908301828280156134215780601f106133f657610100808354040283529160200191613421565b6158d95784818151811061589e57fe5b6020026020010151600b82815481106158b357fe5b906000526020600020906016020160020190805190602001906158d79291906177d4565b505b6000600182815481106158e857fe5b90600052602060002090600402016003018190555085818151811061590957fe5b6020026020010151608001516001828154811061592257fe5b9060005260206000209060040201600201601c6101000a81548160ff0219169083151502179055505b60010161559c565b5082821115615b2b576159646177a5565b835b83811015615b285785818151811061597a57fe5b60200260200101518260400181905250600187828151811061599857fe5b6020908102919091018101518254600181810185556000948552838520835160049093020180546001600160a01b039384166001600160a01b0319918216178255848601518284018054918616918316919091179055604080860151600284018054606089015160808a01511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b1995909a1692909616919091179290921696909617169190911790935560a090930151600390930192909255600b8054928301815590935284516016909102600080516020618d36833981519152810191825585830151600080516020618d768339815191528201805491151560ff1990921691909117905592850151805186949293615ace93600080516020618d56833981519152019201906177d4565b506060820151615ae4906003830190601361784e565b5050508060010160046000898481518110615afb57fe5b602090810291909101810151516001600160a01b0316825281019190915260400160002055600101615966565b50505b615b33616e3c565b615b3b61701e565b6000600981905560015493505b83811015615ba9576000600b8281548110615b5f57fe5b60009182526020822060169190910201600101805460ff191692151592909217909155600b805483908110615b9057fe5b6000918252602090912060169091020155600101615b48565b505050505050565b60006110c483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061720c565b6000828201838110156110c45760405162461bcd60e51b8152600401610db29061832e565b60008060018381548110615c2857fe5b90600052602060002090600402016003015490506000600180805490500390506001615c52612edc565b5111615c8757600060018581548110615c6757fe5b906000526020600020906004020160030181905550600092505050611c42565b846001600160a01b03167f3b6f9ef90462b512a1293ecec018670bf7b7f1876fb727590a8a6d7643130a7083604051615cc09190618c29565b60405180910390a26001600160a01b038516600090815260046020526040812055835b60015460001901811015615ead5760018160010181548110615d0157fe5b906000526020600020906004020160018281548110615d1c57fe5b60009182526020909120825460049092020180546001600160a01b03199081166001600160a01b0393841617825560018085015481840180548416918616919091179055600280860180549185018054909416919095161780835584546001600160401b03600160a01b91829004160267ffffffffffffffff60a01b1990911617808355935460ff600160e01b918290041615150260ff60e01b19909416939093179055600392830154920191909155600b805490918301908110615ddd57fe5b9060005260206000209060160201600b8281548110615df857fe5b600091825260209091208254601690920201908155600180830154818301805460ff909216151560ff1990921691909117905560028084018054615e4f938386019390821615610100026000190190911604617947565b50615e62600382810190840160136179bc565b50905050806001016004600060018481548110615e7b57fe5b600091825260208083206004909202909101546001600160a01b03168352820192909252604001902055600101615ce3565b506001805480615eb957fe5b60008281526020812060046000199093019283020180546001600160a01b0319908116825560018201805490911690556002810180546001600160e81b0319169055600301559055600b805480615f0c57fe5b60008281526020812060166000199093019283020181815560018101805460ff1916905590615f3e60028301826178d4565b615f4c600383016000617938565b505090556000818381615f5b57fe5b0490508015615fbf5760015460005b81811015615fbc578260018281548110615f8057fe5b9060005260206000209060040201600301540160018281548110615fa057fe5b6000918252602090912060036004909202010155600101615f6a565b50505b50600195945050505050565b60015481516040805182815260208084028201019091526060929190839082801561600a57816020015b6060815260200190600190039081615ff55790505b50600b549091508314616021579250611b92915050565b60005b8281101561613057600b60016004600089858151811061604057fe5b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054038154811061607457fe5b600091825260209182902060026016909202018101805460408051601f60001961010060018616150201909316949094049182018590048502840185019052808352919290919083018282801561610c5780601f106160e15761010080835404028352916020019161610c565b820191906000526020600020905b8154815290600101906020018083116160ef57829003601f168201915b505050505082828151811061611d57fe5b6020908102919091010152600101616024565b50949350505050565b60005b82811015616286576000828783880160405160200161615c929190617f97565b6040516020818303038152906040528051906020012060001c8161617c57fe5b0690508085018287011461627d576000898388018151811061619a57fe5b60200260200101519050606089848901815181106161b457fe5b602002602001015190508a838801815181106161cc57fe5b60200260200101518b858a01815181106161e257fe5b60200260200101906001600160a01b031690816001600160a01b031681525050818b8489018151811061621157fe5b60200260200101906001600160a01b031690816001600160a01b031681525050898388018151811061623f57fe5b60200260200101518a858a018151811061625557fe5b6020026020010181905250808a8489018151811061626f57fe5b602002602001018190525050505b5060010161613c565b5050505050505050565b600980546001908101909155600b8054839081106162aa57fe5b906000526020600020906016020160010160006101000a81548160ff02191690831515021790555043600b82815481106162e057fe5b600091825260208220601690910201919091556040516001600160a01b038416917ff62981a567ec3cec866c6fa93c55bcdf841d6292d18b8d522ececa769375d82d91a25050565b60008160405160200161633b9190617f7b565b60405160208183030381529060405280519060200120836040516020016163629190617f7b565b6040516020818303038152906040528051906020012014905092915050565b015190565b8151815160009160019181148083146163a257600092506163e0565b600160208701838101602088015b6002848385100114156163db5780518351146163cf5760009650600093505b602092830192016163b0565b505050505b5090949350505050565b6001600160a01b0381166000908152600460205260408120548061641357506000199050611b92565b60018103905060006001828154811061642857fe5b906000526020600020906004020160030154905060006001838154811061644b57fe5b6000918252602090912060036004909202010155600154604051600019909101906001600160a01b038616907f8cd4e147d8af98a9e3b6724021b8bf6aed2e5dac71c38f2dce8161b82585b25d906164a4908590618c29565b60405180910390a2806164bc57829350505050611b92565b60008183816164c757fe5b04905080156165835760005b848110156165255781600182815481106164e957fe5b906000526020600020906004020160030154016001828154811061650957fe5b60009182526020909120600360049092020101556001016164d3565b50600180549085015b8181101561658057826001828154811061654457fe5b906000526020600020906004020160030154016001828154811061656457fe5b600091825260209091206003600490920201015560010161652e565b50505b5091949350505050565b60008261659c57506000611c42565b828202828482816165a957fe5b04146110c45760405162461bcd60e51b8152600401610db29061879b565b60006110c483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250617238565b6166116179e6565b506040805180820190915281518152602082810190820152919050565b616636617918565b61663f8261726f565b61664857600080fd5b600061665783602001516172a9565b60208085015160408051808201909152868152920190820152915050919050565b60006166826179e6565b505080518051602091820151919092015191011190565b6166a16179e6565b6166aa82616678565b6166b357600080fd5b602082015160006166c38261730c565b80830160209586015260408051808201909152908152938401919091525090919050565b8051600090158015906166fc57508151602110155b61670557600080fd5b600061671483602001516172a9565b9050808360000151101561673a5760405162461bcd60e51b8152600401610db290618941565b82516020808501518301805192849003929183101561613057506020919091036101000a90049392505050565b60606167728261726f565b61677b57600080fd5b6000616786836173ed565b90506060816040519080825280602002602001820160405280156167c457816020015b6167b16179e6565b8152602001906001900390816167a95790505b50905060006167d685602001516172a9565b60208601510190506000805b8481101561682d576167f38361730c565b915060405180604001604052808381526020018481525084828151811061681657fe5b6020908102919091010152918101916001016167e2565b509195945050505050565b61684061789f565b6060600061684c61789f565b6060616856617918565b61685f8761662e565b90506000805b61686e83616678565b1561694357806168995761688961688484616699565b617449565b6001600160a01b0316855261693b565b80600114156168c1576168ae61688484616699565b6001600160a01b0316602086015261693b565b80600214156168e9576168d661688484616699565b6001600160a01b0316604086015261693b565b8060031415616915576168fe613d2c84616699565b6001600160401b031660608601526001915061693b565b80600414156169365761692f61692a84616699565b617463565b935061693b565b616943565b600101616865565b50929791965091945092505050565b6060611c42616960836174d3565b6175b9565b60608151600014156169865750604080516000815260208101909152611b92565b60608260008151811061699557fe5b602002602001015190506000600190505b83518110156169d6576169cc828583815181106169bf57fe5b602002602001015161760b565b91506001016169a6565b506110c46169e9825160c060ff16617688565b8261760b565b60608060006120026001600160a01b031663c473318f6040518163ffffffff1660e01b815260040160206040518083038186803b158015616a2f57600080fd5b505afa158015616a43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190616a679190617e50565b90508085518851011015616a7c575083518651015b606081604051908082528060200260200182016040528015616ab857816020015b616aa561789f565b815260200190600190039081616a9d5790505b509050606082604051908082528060200260200182016040528015616af157816020015b6060815260200190600190039081616adc5790505b50905060008060005b8b51831080616b095750895182105b8015616b1457508581105b15616da9578b51831415616b8457898281518110616b2e57fe5b6020026020010151858281518110616b4257fe5b6020026020010181905250888281518110616b5957fe5b6020026020010151848281518110616b6d57fe5b602090810291909101015260019182019101616afa565b8951821415616bef578b8381518110616b9957fe5b6020026020010151858281518110616bad57fe5b60200260200101819052508a8381518110616bc457fe5b6020026020010151848281518110616bd857fe5b602090810291909101015260019283019201616afa565b898281518110616bfb57fe5b6020026020010151606001516001600160401b03168c8481518110616c1c57fe5b6020026020010151606001516001600160401b03161115616c98578b8381518110616c4357fe5b6020026020010151858281518110616c5757fe5b60200260200101819052508a8381518110616c6e57fe5b6020026020010151848281518110616c8257fe5b6020026020010181905250826001019250616da1565b898281518110616ca457fe5b6020026020010151606001516001600160401b03168c8481518110616cc557fe5b6020026020010151606001516001600160401b03161015616d4157898281518110616cec57fe5b6020026020010151858281518110616d0057fe5b6020026020010181905250888281518110616d1757fe5b6020026020010151848281518110616d2b57fe5b6020026020010181905250816001019150616da1565b898281518110616d4d57fe5b6020026020010151600001516001600160a01b03168c8481518110616d6e57fe5b6020026020010151600001516001600160a01b03161015616d95578b8381518110616c4357fe5b898281518110616b2e57fe5b600101616afa565b50929a91995090975050505050505050565b805182516000916001600160a01b039182169116148015616df5575081602001516001600160a01b031683602001516001600160a01b0316145b8015616e1a575081604001516001600160a01b031683604001516001600160a01b0316145b80156110c45750506060908101519101516001600160401b0390811691161490565b60125460135480821115616e8757805b82811015616e85576012805480616e5f57fe5b600190038181906000526020600020016000616e7b91906178d4565b9055600101616e4c565b505b6000818310616e965781616e98565b825b905060005b81811015616fb057616f5560128281548110616eb557fe5b600091825260209182902001805460408051601f6002600019610100600187161502019094169390930492830185900485028101850190915281815292830182828015616f435780601f10616f1857610100808354040283529160200191616f43565b820191906000526020600020905b815481529060010190602001808311616f2657829003601f168201915b50505050506013838154811061339357fe5b616fa85760138181548110616f6657fe5b9060005260206000200160128281548110616f7d57fe5b906000526020600020019080546001816001161561010002031660029004616fa6929190617947565b505b600101616e9d565b5082821115610dd257825b8281101561392b57601260138281548110616fd257fe5b6000918252602080832084546001818101875595855291909320929091018054617015949390920192909160026101009282161592909202600019011604617947565b50600101616fbb565b601354600b548082111561706957805b8281101561706757601380548061704157fe5b60019003818190600052602060002001600061705d91906178d4565b905560010161702e565b505b6000818310617078578161707a565b825b905060005b81811015617199576171376013828154811061709757fe5b600091825260209182902001805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156171255780601f106170fa57610100808354040283529160200191617125565b820191906000526020600020905b81548152906001019060200180831161710857829003601f168201915b5050505050600b838154811061582157fe5b61719157600b818154811061714857fe5b90600052602060002090601602016002016013828154811061716657fe5b90600052602060002001908054600181600116156101000203166002900461718f929190617947565b505b60010161707f565b5082821115610dd257825b8281101561392b576013600b82815481106171bb57fe5b60009182526020808320845460018082018755958552919093206016929092029092016002908101805461720395939094019390926000199082161561010002011604617947565b506001016171a4565b600081848411156172305760405162461bcd60e51b8152600401610db29190618138565b505050900390565b600081836172595760405162461bcd60e51b8152600401610db29190618138565b50600083858161726557fe5b0495945050505050565b805160009061728057506000611b92565b6020820151805160001a9060c082101561729f57600092505050611b92565b5060019392505050565b8051600090811a60808110156172c3576000915050611b92565b60b88110806172de575060c081108015906172de575060f881105b156172ed576001915050611b92565b60c08110156173015760b519019050611b92565b60f519019050611b92565b80516000908190811a608081101561732757600191506173e6565b60b881101561733c57607e19810191506173e6565b60c081101561738d57600060b78203600186019550806020036101000a8651049150600181018201935050808310156173875760405162461bcd60e51b8152600401610db2906186e8565b506173e6565b60f88110156173a25760be19810191506173e6565b600060f78203600186019550806020036101000a8651049150600181018201935050808310156173e45760405162461bcd60e51b8152600401610db2906186e8565b505b5092915050565b80516000906173fe57506000611b92565b6000809050600061741284602001516172a9565b602085015185519181019250015b80821015617440576174318261730c565b82019150826001019250617420565b50909392505050565b805160009060151461745a57600080fd5b611c42826166e7565b805160609061747157600080fd5b600061748083602001516172a9565b83516040805191839003808352601f19601f82011683016020019091529192506060908280156174b7576020820181803683370190505b509050600081602001905061613084876020015101828561775a565b604080516020808252818301909252606091829190602082018180368337505050602081018490529050600067ffffffffffffffff1984166175175750601861753b565b6fffffffffffffffffffffffffffffffff1984166175375750601061753b565b5060005b60208110156175715781818151811061755057fe5b01602001516001600160f81b0319161561756957617571565b60010161753b565b60008160200390506060816040519080825280601f01601f1916602001820160405280156175a6576020820181803683370190505b5080830196909652508452509192915050565b6060815160011480156175eb5750607f60f81b826000815181106175d957fe5b01602001516001600160f81b03191611155b156175f7575080611b92565b611c426176098351608060ff16617688565b835b6060806040519050835180825260208201818101602087015b8183101561763c578051835260209283019201617624565b50855184518101855292509050808201602086015b81831015617669578051835260209283019201617651565b508651929092011591909101601f01601f191660405250905092915050565b60606801000000000000000083106176b25760405162461bcd60e51b8152600401610db2906184e0565b6040805160018082528183019092526060916020820181803683370190505090506037841161770c5782840160f81b816000815181106176ee57fe5b60200101906001600160f81b031916908160001a9053509050611c42565b6060617717856174d3565b90508381510160370160f81b8260008151811061773057fe5b60200101906001600160f81b031916908160001a905350617751828261760b565b95945050505050565b8061776457610dd2565b5b60208110617784578251825260209283019290910190601f1901617765565b915181516020939093036101000a6000190180199091169216919091179052565b604051806080016040528060008152602001600015158152602001606081526020016177cf617a00565b905290565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061781557805160ff1916838001178555617842565b82800160010185558215617842579182015b82811115617842578251825591602001919060010190617827565b50613021929150617a1f565b82601381019282156178425791602002820182811115617842578251825591602001919060010190617827565b6040518060600160405280600060ff16815260200160608152602001606081525090565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a081019190915290565b50805460018160011615610100020316600290046000825580601f106178fa5750611d9e565b601f016020900490600052602060002090810190611d9e9190617a1f565b604051806040016040528061792b6179e6565b8152602001600081525090565b50611d9e906013810190617a1f565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106179805780548555617842565b8280016001018555821561784257600052602060002091601f016020900482015b828111156178425782548255916001019190600101906179a1565b826013810192821561784257918201828111156178425782548255916001019190600101906179a1565b604051806040016040528060008152602001600081525090565b6040518061026001604052806013906020820280368337509192915050565b612fc591905b808211156130215760008155600101617a25565b8035611c4281618d00565b60008083601f840112617a55578182fd5b5081356001600160401b03811115617a6b578182fd5b60208301915083602080830285010111156153a357600080fd5b6000601f8381840112617a96578182fd5b8235617aa9617aa482618cb5565b618c8f565b818152925060208084019085810160005b84811015617b3b578135880189603f820112617ad557600080fd5b838101356001600160401b03811115617aed57600080fd5b617afe818901601f19168601618c8f565b81815260408c81848601011115617b1457600080fd5b82818501888401375060009181018601919091528552509282019290820190600101617aba565b50505050505092915050565b600082601f830112617b57578081fd5b8135617b65617aa482618cb5565b818152915060208083019084810181840286018201871015617b8657600080fd5b6000805b85811015617b3b5782356001600160401b0381168114617ba8578283fd5b85529383019391830191600101617b8a565b60008083601f840112617bcb578182fd5b5081356001600160401b03811115617be1578182fd5b6020830191508360208285010111156153a357600080fd5b600060208284031215617c0a578081fd5b81356110c481618d00565b600060208284031215617c26578081fd5b81516110c481618d00565b60008060008060408587031215617c46578283fd5b84356001600160401b0380821115617c5c578485fd5b617c6888838901617a44565b90965094506020870135915080821115617c80578384fd5b50617c8d87828801617a44565b95989497509550505050565b600080600060608486031215617cad578283fd5b83356001600160401b0380821115617cc3578485fd5b81860187601f820112617cd4578586fd5b80359250617ce4617aa484618cb5565b80848252602080830192508084018b828389028701011115617d0457898afd5b8994505b86851015617d2e57617d1a8c82617a39565b845260019490940193928101928101617d08565b509097508801359350505080821115617d45578384fd5b617d5187838801617b47565b93506040860135915080821115617d66578283fd5b50617d7386828701617a85565b9150509250925092565b600060208284031215617d8e578081fd5b815180151581146110c4578182fd5b60008060208385031215617daf578182fd5b82356001600160401b03811115617dc4578283fd5b617dd085828601617bba565b90969095509350505050565b60008060008060408587031215617df1578384fd5b84356001600160401b0380821115617e07578586fd5b617e1388838901617bba565b90965094506020870135915080821115617e2b578384fd5b50617c8d87828801617bba565b600060208284031215617e49578081fd5b5035919050565b600060208284031215617e61578081fd5b5051919050565b60008060408385031215617e7a578182fd5b505080516020909101519092909150565b600080600060408486031215617e9f578081fd5b833560ff81168114617eaf578182fd5b925060208401356001600160401b03811115617ec9578182fd5b617ed586828701617bba565b9497909650939450505050565b6000815180845260208085019450808401835b83811015617f1a5781516001600160a01b031687529582019590820190600101617ef5565b509495945050505050565b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b60008151808452617f67816020860160208601618cd4565b601f01601f19169290920160200192915050565b60008251617f8d818460208701618cd4565b9190910192915050565b918252602082015260400190565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b03968716815294861660208601529290941660408401526001600160401b03166060830152911515608082015260a081019190915260c00190565b6001600160a01b0392909216825260ff16602082015260400190565b6000602082526110c46020830184617ee2565b6000604082526180566040830185617ee2565b602083820381850152818551808452828401915082838202850101838801865b838110156180a457601f19878403018552618092838351617f4f565b94860194925090850190600101618076565b50909998505050505050505050565b6000608082526180c66080830187617ee2565b828103602084810191909152865180835287820192820190845b818110156180fc578451835293830193918301916001016180e0565b505084810360408601526181108188617ee2565b93505050506001600160401b038316606083015295945050505050565b901515815260200190565b6000602082526110c46020830184617f4f565b60006040825261815f604083018688617f25565b8281036020840152618172818587617f25565b979650505050505050565b6020808252601c908201527f6c656e677468206f66206275726e526174696f206d69736d6174636800000000604082015260600190565b60208082526026908201527f6c656e677468206f66206d61784e756d4f664d61696e7461696e696e67206d696040820152650e6dac2e8c6d60d31b606082015260800190565b6020808252601b908201527f6261746368207472616e736665722072657475726e2066616c73650000000000604082015260600190565b6020808252602c908201527f6c656e677468206f66206d61784e756d4f66576f726b696e6743616e6469646160408201526b0e8cae640dad2e6dac2e8c6d60a31b606082015260800190565b60208082526025908201527f6c656e677468206f66206d61696e7461696e536c6173685363616c65206d69736040820152640dac2e8c6d60db1b606082015260800190565b6020808252818101527f6c656e677468206f66206e756d4f66436162696e657473206d69736d61746368604082015260600190565b60208082526019908201527f74686520636f6e7472616374206e6f7420696e69742079657400000000000000604082015260600190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b60208082526028908201527f746865206e756d4f66436162696e657473206d75737420626520677265617465604082015267072207468616e20360c41b606082015260800190565b60208082526039908201527f746865206e756d4f66436162696e657473206d757374206265206c657373207460408201527f68616e204d41585f4e554d5f4f465f56414c494441544f525300000000000000606082015260800190565b60208082526029908201527f746865206e756d626572206f662076616c696461746f727320657863656564206040820152681d1a19481b1a5b5a5d60ba1b606082015260800190565b60208082526022908201527f63616e206e6f7420646f207468697320747769636520696e206f6e6520626c6f604082015261636b60f01b606082015260800190565b6020808252602b908201527f746865206275726e526174696f206d757374206265206e6f206772656174657260408201526a0207468616e2031303030360ac1b606082015260800190565b6020808252600e908201526d696e70757420746f6f206c6f6e6760901b604082015260600190565b60208082526037908201527f746865206d61784e756d4f664d61696e7461696e696e67206d7573742062652060408201527f6c657373207468616e206e756d4f66436162696e657473000000000000000000606082015260800190565b6020808252602b908201527f6475706c696361746520636f6e73656e7375732061646472657373206f66207660408201526a185b1a59185d1bdc94d95d60aa1b606082015260800190565b60208082526033908201527f7468652073797374656d526577617264526174696f206d757374206265206e6f60408201527202067726561746572207468616e20313030303606c1b606082015260800190565b60208082526027908201527f7468652065787069726554696d655365636f6e64476170206973206f7574206f604082015266662072616e676560c81b606082015260800190565b6020808252601590820152746465706f7369742076616c7565206973207a65726f60581b604082015260600190565b60208082526049908201527f746865206d61784e756d4f66576f726b696e6743616e64696461746573206d7560408201527f7374206265206e6f742067726561746572207468616e206d61784e756d4f6643606082015268616e6469646174657360b81b608082015260a00190565b6020808252601190820152706164646974696f6e206f766572666c6f7760781b604082015260600190565b60208082526023908201527f63616e206e6f7420656e7465722054656d706f72617279204d61696e74656e616040820152626e636560e81b606082015260800190565b60208082526025908201527f6c656e677468206f66206a61696c2076616c696461746f7273206d757374206260408201526465206f6e6560d81b606082015260800190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252601490820152736761737072696365206973206e6f74207a65726f60601b604082015260600190565b6020808252602e908201527f746865206d6573736167652073656e646572206d75737420626520676f76657260408201526d1b985b98d94818dbdb9d1c9858dd60921b606082015260800190565b60208082526025908201527f6c656e677468206f66206d61784e756d4f6643616e64696461746573206d69736040820152640dac2e8c6d60db1b606082015260800190565b6020808252601290820152716e6f7420696e206d61696e74656e616e636560701b604082015260600190565b60208082526021908201527f666565206973206c6172676572207468616e2044555354595f494e434f4d494e6040820152604760f81b606082015260800190565b60208082526019908201527f74686520636f6e747261637420616c726561647920696e697400000000000000604082015260600190565b6020808252601a908201527f6c656e677468206973206c657373207468616e206f6666736574000000000000604082015260600190565b60208082526026908201527f6c656e677468206f662065787069726554696d655365636f6e64476170206d696040820152650e6dac2e8c6d60d31b606082015260800190565b60208082526017908201527f6f6e6c792063757272656e742076616c696461746f7273000000000000000000604082015260600190565b60208082526021908201527f6661696c656420746f20706172736520696e69742076616c696461746f7253656040820152601d60fa1b606082015260800190565b6020808252602f908201527f746865206d6573736167652073656e646572206d7573742062652063726f737360408201526e0818da185a5b8818dbdb9d1c9858dd608a1b606082015260800190565b6020808252602d908201527f746865206d6573736167652073656e646572206d75737420626520746865206260408201526c3637b1b590383937b23ab1b2b960991b606082015260800190565b60208082526024908201527f6c656e677468206f662073797374656d526577617264526174696f206d69736d6040820152630c2e8c6d60e31b606082015260800190565b6020808252603e908201527f746865206d61696e7461696e536c6173685363616c65206d757374206265206760408201527f726561746572207468616e203020616e64206c657373207468616e2031300000606082015260800190565b6020808252600d908201526c756e6b6e6f776e20706172616d60981b604082015260600190565b60208082526029908201527f746865206d6573736167652073656e646572206d75737420626520736c6173686040820152680818dbdb9d1c9858dd60ba1b606082015260800190565b6020808252601f908201527f746865206d73672073656e646572206d757374206265207374616b6548756200604082015260600190565b61ffff91909116815260200190565b90815260200190565b60008482528315156020830152606060408301526177516060830184617f4f565b63ffffffff91909116815260200190565b60ff91909116815260200190565b600060ff8516825260406020830152617751604083018486617f25565b6040518181016001600160401b0381118282101715618cad57600080fd5b604052919050565b60006001600160401b03821115618cca578081fd5b5060209081020190565b60005b83811015618cef578181015183820152602001618cd7565b8381111561392b5750506000910152565b6001600160a01b0381168114611d9e57600080fdfe70e72399380dcfb0338abc03dc8d47f9f470ada8e769c9a78d644ea97385ecb20175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db90175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01dbb0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01dbaf87680f873f871949fb29aac15b9a4b7f17c3385939b007540f4d791949fb29aac15b9a4b7f17c3385939b007540f4d791949fb29aac15b9a4b7f17c3385939b007540f4d79164b085e6972fc98cd3c81d64d40e325acfed44365b97a7567a27939c14dbc7512ddcf54cb1284eb637cfa308ae4e00cb5588a164736f6c6343000604000a", + Code: "6080604052600436106104da5760003560e01c80638a7beb0111610281578063c6d339451161015a578063e40716a1116100cc578063f92eb86b11610085578063f92eb86b14610cb8578063f9a2bbc714610ccd578063fc3e590814610ce2578063fccc281314610cf7578063fd4ad81f14610d0c578063fd6a687914610d3b576104e1565b8063e40716a114610c1b578063e589b61e14610c30578063ea321e4914610c50578063eb57e20214610c70578063eda5868c14610c90578063f340fa0114610ca5576104e1565b8063d86222d51161011e578063d86222d514610b9d578063daacdb6614610bb2578063dc927faf14610bc7578063df8079e914610bdc578063e086c7b114610bf1578063e1c7392a14610c06576104e1565b8063c6d3394514610b3e578063c81b166214610b53578063c8509d811461090d578063ce910b0c14610b68578063d68fb56a14610b88576104e1565b8063aa82dce1116101f3578063ad3c9da6116101b7578063ad3c9da614610abd578063aef198a914610add578063b7ab4db514610af2578063b8cf4ef114610b14578063bf9f4995146106bd578063c466689d14610b29576104e1565b8063aa82dce114610a49578063aad5606314610a5e578063aaf5eb6814610a73578063ab51bb9614610a88578063ac43175114610a9d576104e1565b80639dc09262116102455780639dc09262146109cb5780639fe0f816146109e0578063a0dc2758146109f5578063a1a11bf514610a0a578063a5422d5c14610a1f578063a78abc1614610a34576104e1565b80638a7beb01146109575780638b5ad0c91461096c5780638d19a410146109815780639369d7de146109a157806396713da9146109b6576104e1565b806351e80672116103b357806370fd5bad116103255780637a84ca2a116102e95780637a84ca2a146108e357806381650b62146108f8578063831d65d11461090d578063853230aa146108b9578063862498821461092d57806388b32f1114610942576104e1565b806370fd5bad1461087a578063718a8aa81461088f57806375d47a0a146108a457806378dfed4a146108b95780637942fd05146108ce576104e1565b80635de1e22c116103775780635de1e22c146107e9578063603d86d3146106a857806360eba4fe146107fe57806362b72cf51461081e5780636969a25c146108335780636e47b48214610865576104e1565b806351e806721461076a57806355614fcc1461077f578063565c56b31461079f5780635667515a146107bf5780635d77156c146107d4576104e1565b80633365af3a1161044c57806343756e5c1161041057806343756e5c146106df57806345cf9daf146106f4578063493279b1146107095780634bf6c8821461072b5780634df6e0c3146107405780635192c82c14610755576104e1565b80633365af3a1461064557806335409f7f146106655780633b071dcc146106855780633de0f0d8146106a85780633dffc387146106bd576104e1565b8063152ad3b81161049e578063152ad3b8146105995780631e4c1524146105bb5780631ff18069146105db578063219f22d5146105f0578063300c356714610605578063321d398a14610625576104e1565b806304c4fec6146104e657806307a56847146104fd5780630bee7a67146105285780630e2374a51461054a5780631182b8751461056c576104e1565b366104e157005b600080fd5b3480156104f257600080fd5b506104fb610d50565b005b34801561050957600080fd5b50610512610dc2565b60405161051f9190618c1b565b60405180910390f35b34801561053457600080fd5b5061053d610dc8565b60405161051f9190618c45565b34801561055657600080fd5b5061055f610dcd565b60405161051f9190617f97565b34801561057857600080fd5b5061058c610587366004617e7d565b610dd3565b60405161051f919061812a565b3480156105a557600080fd5b506105ae6110b6565b60405161051f919061811f565b3480156105c757600080fd5b506104fb6105d6366004617c8b565b6110bf565b3480156105e757600080fd5b5061051261175f565b3480156105fc57600080fd5b5061053d611765565b34801561061157600080fd5b506104fb610620366004617c23565b61176a565b34801561063157600080fd5b506105ae610640366004617e2a565b611ab3565b34801561065157600080fd5b506105ae610660366004617e2a565b611b82565b34801561067157600080fd5b506104fb610680366004617beb565b611c33565b34801561069157600080fd5b5061069a611d8c565b60405161051f929190618035565b3480156106b457600080fd5b50610512612068565b3480156106c957600080fd5b506106d261206e565b60405161051f9190618c56565b3480156106eb57600080fd5b5061055f612073565b34801561070057600080fd5b50610512612079565b34801561071557600080fd5b5061071e61207f565b60405161051f9190618c0c565b34801561073757600080fd5b506106d2612085565b34801561074c57600080fd5b5061069a61208a565b34801561076157600080fd5b50610512612208565b34801561077657600080fd5b5061055f61220e565b34801561078b57600080fd5b506105ae61079a366004617beb565b612214565b3480156107ab57600080fd5b506105126107ba366004617beb565b612249565b3480156107cb57600080fd5b506106d261229a565b3480156107e057600080fd5b5061053d61229f565b3480156107f557600080fd5b506105126122a4565b34801561080a57600080fd5b5061058c610819366004617e2a565b6122aa565b34801561082a57600080fd5b50610512612350565b34801561083f57600080fd5b5061085361084e366004617e2a565b612356565b60405161051f96959493929190617fc4565b34801561087157600080fd5b5061055f6123ba565b34801561088657600080fd5b506106d26123c0565b34801561089b57600080fd5b506106d26123c5565b3480156108b057600080fd5b5061055f6123ca565b3480156108c557600080fd5b506105126123d0565b3480156108da57600080fd5b506106d26123d6565b3480156108ef57600080fd5b506105126123db565b34801561090457600080fd5b5061053d6123e1565b34801561091957600080fd5b506104fb610928366004617e7d565b6123e6565b34801561093957600080fd5b50610512612447565b34801561094e57600080fd5b5061051261244d565b34801561096357600080fd5b506105ae612453565b34801561097857600080fd5b5061051261245c565b34801561098d57600080fd5b5061051261099c366004617beb565b612462565b3480156109ad57600080fd5b506104fb6124a2565b3480156109c257600080fd5b506106d26125b6565b3480156109d757600080fd5b5061055f6125bb565b3480156109ec57600080fd5b506105126125c1565b348015610a0157600080fd5b506105126125c6565b348015610a1657600080fd5b5061055f6125cb565b348015610a2b57600080fd5b5061058c6125d1565b348015610a4057600080fd5b506105ae6125f0565b348015610a5557600080fd5b5061055f6125f9565b348015610a6a57600080fd5b5061055f6125ff565b348015610a7f57600080fd5b50610512612605565b348015610a9457600080fd5b5061053d61229a565b348015610aa957600080fd5b506104fb610ab8366004617dce565b61260e565b348015610ac957600080fd5b50610512610ad8366004617beb565b612eac565b348015610ae957600080fd5b50610512612ebe565b348015610afe57600080fd5b50610b07612ecb565b60405161051f9190618022565b348015610b2057600080fd5b50610512612fb7565b348015610b3557600080fd5b50610512612fbc565b348015610b4a57600080fd5b506105126123c0565b348015610b5f57600080fd5b5061055f612fc2565b348015610b7457600080fd5b5061058c610b83366004617e2a565b612fc8565b348015610b9457600080fd5b50610512612fd5565b348015610ba957600080fd5b50610512613014565b348015610bbe57600080fd5b50610512613020565b348015610bd357600080fd5b5061055f613026565b348015610be857600080fd5b5061055f61302c565b348015610bfd57600080fd5b50610512610dc8565b348015610c1257600080fd5b506104fb613032565b348015610c2757600080fd5b506105126131e1565b348015610c3c57600080fd5b506104fb610c4b366004617beb565b6131e7565b348015610c5c57600080fd5b506105ae610c6b366004617d8f565b61332c565b348015610c7c57600080fd5b506104fb610c8b366004617beb565b6134b2565b348015610c9c57600080fd5b5061053d6135b6565b6104fb610cb3366004617beb565b6135bb565b348015610cc457600080fd5b50610512613923565b348015610cd957600080fd5b5061055f613929565b348015610cee57600080fd5b506106d26125c1565b348015610d0357600080fd5b5061055f61392f565b348015610d1857600080fd5b50610d2c610d27366004617e2a565b613935565b60405161051f93929190618c24565b348015610d4757600080fd5b5061055f6139f7565b6000610d5b33612462565b9050600b8181548110610d6a57fe5b600091825260209091206001601690920201015460ff16610da65760405162461bcd60e51b8152600401610d9d9061888f565b60405180910390fd5b6000610db0612fd5565b9050610dbd3383836139fd565b505050565b60095481565b606481565b61200181565b60005460609060ff16610df85760405162461bcd60e51b8152600401610d9d906182e9565b600b54610eb657610e07617797565b60015460005b81811015610eb257600b80546001810182556000919091528351600080516020618ed38339815191526016909202918201908155602080860151600080516020618f138339815191528401805460ff1916911515919091179055604086015180518794610e8e93600080516020618ef38339815191529091019201906177c6565b506060820151610ea49060038301906013617840565b505050806001019050610e0d565b5050505b610ebe61786d565b6000610eff85858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250613cce92505050565b9150915080610f1b57610f126064613e8a565b925050506110af565b815160009060ff16610f4057610f3983602001518460400151613eeb565b905061107b565b825160ff166001141561107757826020015151600114610f8557600080516020618eb3833981519152604051610f7590618748565b60405180910390a1506067611072565b6000600460008560200151600081518110610f9c57fe5b6020026020010151600001516001600160a01b03166001600160a01b0316815260200190815260200160002054905080600014806110045750600180820381548110610fe457fe5b9060005260206000209060040201600201601c9054906101000a900460ff165b1561106457836020015160008151811061101a57fe5b6020026020010151600001516001600160a01b03167fe209c46bebf57cf265d5d9009a00870e256d9150f3ed5281ab9d9eb3cec6e4be60405160405180910390a260009150611070565b61106d8161504f565b91505b505b61107b565b5060655b63ffffffff81166110a057505060408051600081526020810190915291506110af9050565b6110a981613e8a565b93505050505b9392505050565b60075460ff1681565b3341146110de5760405162461bcd60e51b8152600401610d9d90618a77565b3a156110fc5760405162461bcd60e51b8152600401610d9d906187ce565b825160408051828152602080840282010190915260609082801561113a57816020015b611127617891565b81526020019060019003908161111f5790505b50905060005b828110156111e4576040518060c0016040528087838151811061115f57fe5b60200260200101516001600160a01b0316815260200160006001600160a01b0316815260200160006001600160a01b031681526020018683815181106111a157fe5b60200260200101516001600160401b0316815260200160001515815260200160008152508282815181106111d157fe5b6020908102919091010152600101611140565b5060405163d31f968d60e01b81526120009063d31f968d9061120f9061100090600890600401618006565b60206040518083038186803b15801561122757600080fd5b505afa15801561123b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061125f9190617d6f565b156115585780518061127357505050610dbd565b6015548181111561130e57815b8181101561130c57601580548061129357fe5b60008281526020812060046000199093019283020180546001600160a01b0319908116825560018201805490911690556002810180546001600160e81b031916905560030155905560168054806112e657fe5b60019003818190600052602060002001600061130291906178c6565b9055600101611280565b505b60005b8281101561154e5781811061143657601584828151811061132e57fe5b602090810291909101810151825460018181018555600094855293839020825160049092020180546001600160a01b039283166001600160a01b0319918216178255938301519481018054958316958516959095179094556040820151600285018054606085015160808601511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b199590961692909716919091179290921692909217169290921790915560a0015160039091015585516016908790839081106113fe57fe5b6020908102919091018101518254600181018455600093845292829020815161143094919091019291909101906177c6565b50611546565b83818151811061144257fe5b60200260200101516015828154811061145757fe5b6000918252602091829020835160049092020180546001600160a01b039283166001600160a01b0319918216178255928401516001820180549184169185169190911790556040840151600282018054606087015160808801511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b1995909716929097169190911792909216939093171692909217905560a090910151600390910155855186908290811061151257fe5b60200260200101516016828154811061152757fe5b9060005260206000200190805190602001906115449291906177c6565b505b600101611311565b5050505050610dbd565b6060806115658386615163565b9150915060005b60015481101561164f576001818154811061158357fe5b906000526020600020906004020160030154600014611647576120026001600160a01b031663092193ab600183815481106115ba57fe5b906000526020600020906004020160030154600184815481106115d957fe5b60009182526020909120600491820201546040516001600160e01b031960e086901b168152611614926001600160a01b039092169101617f97565b6000604051808303818588803b15801561162d57600080fd5b505af1158015611641573d6000803e3d6000fd5b50505050505b60010161156c565b5047156116bd577f6ecc855f9440a9282c90913bbc91619fd44f5ec0b462af28d127b116f130aa4d476040516116859190618c1b565b60405180910390a1604051611002904780156108fc02916000818181858888f193505050501580156116bb573d6000803e3d6000fd5b505b600060038190556005558151156116d8576116d8828261539c565b6110016001600160a01b031663fc4333cd6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561171557600080fd5b505af1158015611729573d6000803e3d6000fd5b50506040517fedd8d7296956dd970ab4de3f2fc03be2b0ffc615d20cd4c72c6e44f928630ebf925060009150a150505050505050565b60035481565b606881565b3341146117895760405162461bcd60e51b8152600401610d9d90618a77565b60105443116117aa5760405162461bcd60e51b8152600401610d9d90618445565b3a156117c85760405162461bcd60e51b8152600401610d9d906187ce565b60005460ff166117ea5760405162461bcd60e51b8152600401610d9d906182e9565b60006110023168056bc75e2d631000008111156118215761181a8168056bc75e2d6310000063ffffffff615ba316565b9150611828565b5050611aa9565b6040516309a99b4f60e41b815261100290639a99b4f09061184f9030908690600401617fab565b602060405180830381600087803b15801561186957600080fd5b505af115801561187d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a19190617e42565b9150816118af575050611aa9565b6000805b848110156118dd578585828181106118c757fe5b90506020020135820191508060010190506118b3565b50806118eb57505050611aa9565b6000806000805b89811015611aa1578489898381811061190757fe5b9050602002013588028161191757fe5b0493508a8a8281811061192657fe5b905060200201602081019061193b9190617beb565b6001600160a01b03811660009081526004602052604090205490935091508115611a5757600060018084038154811061197057fe5b9060005260206000209060040201905080600201601c9054906101000a900460ff16156119dd57836001600160a01b03167fb9c75cbbfde137c4281689580799ef5f52144e78858f776a5979b2b212137d85866040516119d09190618c1b565b60405180910390a2611a51565b6003546119f0908663ffffffff615be516565b6003908155810154611a08908663ffffffff615be516565b60038201556040516001600160a01b038516907fcb0aad6cf9cd03bdf6137e359f541c42f38b39f007cae8e89e88aa7d8c6617b290611a48908890618c1b565b60405180910390a25b50611a99565b826001600160a01b03167fb9c75cbbfde137c4281689580799ef5f52144e78858f776a5979b2b212137d8585604051611a909190618c1b565b60405180910390a25b6001016118f2565b505050505050505b5050436010555050565b6001546000908210611ac757506000611b7d565b60006001600160a01b031660018381548110611adf57fe5b60009182526020909120600490910201546001600160a01b03161480611b0f57506008541580611b0f5750600a54155b80611b1e575060085460095410155b80611b2f5750611b2d82611b82565b155b80611b5857506000600b8381548110611b4457fe5b906000526020600020906016020160000154115b80611b6c57506001611b68612ecb565b5111155b15611b7957506000611b7d565b5060015b919050565b6001546000908210611b9657506000611b7d565b600b548210611bd35760018281548110611bac57fe5b9060005260206000209060040201600201601c9054906101000a900460ff16159050611b7d565b60018281548110611be057fe5b9060005260206000209060040201600201601c9054906101000a900460ff16158015611c2d5750600b8281548110611c1457fe5b600091825260209091206001601690920201015460ff16155b92915050565b3361100114611c545760405162461bcd60e51b8152600401610d9d90618b8c565b600b54611d1257611c63617797565b60015460005b81811015611d0e57600b80546001810182556000919091528351600080516020618ed38339815191526016909202918201908155602080860151600080516020618f138339815191528401805460ff1916911515919091179055604086015180518794611cea93600080516020618ef38339815191529091019201906177c6565b506060820151611d009060038301906013617840565b505050806001019050611c69565b5050505b6001600160a01b03811660009081526004602052604090205480611d365750611d89565b6001810390506000600b8281548110611d4b57fe5b600091825260209091206001601690920201015460ff169050611d6e8383615c0a565b8015611d775750805b15610dbd576009805460001901905550505b50565b60015460609081906000805b82811015611ddf5760018181548110611dad57fe5b9060005260206000209060040201600201601c9054906101000a900460ff16611dd7576001909101905b600101611d98565b50606081604051908082528060200260200182016040528015611e0c578160200160208202803683370190505b509050606082604051908082528060200260200182016040528015611e4557816020015b6060815260200190600190039081611e305790505b50600b5460009450909150841415611fc05760005b84811015611fba5760018181548110611e6f57fe5b9060005260206000209060040201600201601c9054906101000a900460ff16611fb25760018181548110611e9f57fe5b600091825260209091206004909102015483516001600160a01b0390911690849086908110611eca57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050600b8181548110611ef757fe5b600091825260209182902060026016909202018101805460408051601f600019610100600186161502019093169490940491820185900485028401850190528083529192909190830182828015611f8f5780601f10611f6457610100808354040283529160200191611f8f565b820191906000526020600020905b815481529060010190602001808311611f7257829003601f168201915b5050505050828581518110611fa057fe5b60209081029190910101526001909301925b600101611e5a565b5061205c565b60005b8481101561205a5760018181548110611fd857fe5b9060005260206000209060040201600201601c9054906101000a900460ff16612052576001818154811061200857fe5b600091825260209091206004909102015483516001600160a01b039091169084908690811061203357fe5b6001600160a01b03909216602092830291909101909101526001909301925b600101611fc3565b505b909450925050505b9091565b61271081565b600181565b61100181565b60085481565b6102ca81565b600881565b600e54600c5460609182918061209e575060155b60606120a8612ecb565b905060606120b582615fbd565b9050828251116120cc579094509250612064915050565b838383510310156120de578282510393505b83156121145760c843046120fa83838388880360008a8a61612b565b6121128383838888038989038a8b8b8b51030161612b565b505b606083604051908082528060200260200182016040528015612140578160200160208202803683370190505b50905060608460405190808252806020026020018201604052801561217957816020015b60608152602001906001900390816121645790505b50905060005b858110156121fa5784818151811061219357fe5b60200260200101518382815181106121a757fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508381815181106121d357fe5b60200260200101518282815181106121e757fe5b602090810291909101015260010161217f565b509096509450505050509091565b60065481565b61200081565b6001600160a01b0381166000908152600460205260408120548061223c576000915050611b7d565b600019016110af81611b82565b6001600160a01b03811660009081526004602052604081205480612271576000915050611b7d565b60018082038154811061228057fe5b906000526020600020906004020160030154915050919050565b600081565b606781565b600f5481565b601281815481106122b757fe5b600091825260209182902001805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152935090918301828280156123485780601f1061231d57610100808354040283529160200191612348565b820191906000526020600020905b81548152906001019060200180831161232b57829003601f168201915b505050505081565b60105481565b6001818154811061236357fe5b600091825260209091206004909102018054600182015460028301546003909301546001600160a01b0392831694509082169291821691600160a01b81046001600160401b031691600160e01b90910460ff169086565b61100581565b600281565b601081565b61100881565b6103e881565b600b81565b600c5481565b606681565b33612000146124075760405162461bcd60e51b8152600401610d9d90618a28565b7f41ce201247b6ceb957dcdb217d0b8acb50b9ea0e12af9af4f5e7f3890210160583838360405161243a93929190618c64565b60405180910390a1505050565b60025481565b60115481565b60145460ff1681565b600a5481565b6001600160a01b038116600090815260046020526040812054806124985760405162461bcd60e51b8152600401610d9d906189b0565b6000190192915050565b600b54612560576124b1617797565b60015460005b8181101561255c57600b80546001810182556000919091528351600080516020618ed38339815191526016909202918201908155602080860151600080516020618f138339815191528401805460ff191691151591909117905560408601518051879461253893600080516020618ef38339815191529091019201906177c6565b50606082015161254e9060038301906013617840565b5050508060010190506124b7565b5050505b60085461256d5760036008555b600a5461257a576002600a555b600061258533612462565b905061259081611ab3565b6125ac5760405162461bcd60e51b8152600401610d9d90618705565b611d893382616282565b600981565b61100781565b600381565b60c881565b61100681565b604051806101e001604052806101ab8152602001618d086101ab913981565b60005460ff1681565b61200281565b61300081565b6402540be40081565b60005460ff166126305760405162461bcd60e51b8152600401610d9d906182e9565b33611007146126515760405162461bcd60e51b8152600401610d9d906187fc565b6126bb84848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080518082019091526013815272065787069726554696d655365636f6e6447617606c1b6020820152915061631a9050565b1561275857602081146126e05760405162461bcd60e51b8152600401610d9d9061896a565b604080516020601f840181900481028201810190925282815260009161271e9185858083850183828082843760009201919091525061637392505050565b9050606481101580156127345750620186a08111155b6127505760405162461bcd60e51b8152600401610d9d906185f5565b600255612e69565b6127b884848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260098152686275726e526174696f60b81b6020820152915061631a9050565b1561284757602081146127dd5760405162461bcd60e51b8152600401610d9d9061816f565b604080516020601f840181900481028201810190925282815260009161281b9185858083850183828082843760009201919091525061637392505050565b905061271081111561283f5760405162461bcd60e51b8152600401610d9d90618487565b600655612e69565b6128b184848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260138152726d61784e756d4f664d61696e7461696e696e6760681b6020820152915061631a9050565b1561294b57602081146128d65760405162461bcd60e51b8152600401610d9d906181a6565b604080516020601f84018190048102820181019092528281526000916129149185858083850183828082843760009201919091525061637392505050565b600c5490915080612923575060155b8082106129425760405162461bcd60e51b8152600401610d9d906184fa565b50600855612e69565b6129b484848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260128152716d61696e7461696e536c6173685363616c6560701b6020820152915061631a9050565b15612a4d57602081146129d95760405162461bcd60e51b8152600401610d9d9061826f565b604080516020601f8401819004810282018101909252828152600091612a179185858083850183828082843760009201919091525061637392505050565b9050600081118015612a295750600a81105b612a455760405162461bcd60e51b8152600401610d9d90618b08565b600a55612e69565b612ac184848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601981527f6d61784e756d4f66576f726b696e6743616e64696461746573000000000000006020820152915061631a9050565b15612b505760208114612ae65760405162461bcd60e51b8152600401610d9d90618223565b604080516020601f8401819004810282018101909252828152600091612b249185858083850183828082843760009201919091525061637392505050565b9050600d54811115612b485760405162461bcd60e51b8152600401610d9d9061866b565b600e55612e69565b612bb984848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260128152716d61784e756d4f6643616e6469646174657360701b6020820152915061631a9050565b15612c3b5760208114612bde5760405162461bcd60e51b8152600401610d9d9061884a565b604080516020601f8401819004810282018101909252828152600091612c1c9185858083850183828082843760009201919091525061637392505050565b600d819055600e54909150811015612c3557600d54600e555b50612e69565b612c9f84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600d81526c6e756d4f66436162696e65747360981b6020820152915061631a9050565b15612d4d5760208114612cc45760405162461bcd60e51b8152600401610d9d906182b4565b604080516020601f8401819004810282018101909252828152600091612d029185858083850183828082843760009201919091525061637392505050565b905060008111612d245760405162461bcd60e51b8152600401610d9d90618357565b6064811115612d455760405162461bcd60e51b8152600401610d9d9061839f565b600c55612e69565b612db584848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601181527073797374656d526577617264526174696f60781b6020820152915061631a9050565b15612e515760208114612dda5760405162461bcd60e51b8152600401610d9d90618ac4565b604080516020601f8401819004810282018101909252828152600091612e189185858083850183828082843760009201919091525061637392505050565b905060018110158015612e2d57506127108111155b612e495760405162461bcd60e51b8152600401610d9d906185a2565b600f55612e69565b60405162461bcd60e51b8152600401610d9d90618b65565b7f6cdb0ac70ab7f2e2d035cca5be60d89906f2dede7648ddbd7402189c1eeed17a84848484604051612e9e949392919061813d565b60405180910390a150505050565b60046020526000908152604090205481565b68056bc75e2d6310000081565b6001546060906000805b82811015612efa57612ee681611b82565b15612ef2578160010191505b600101612ed5565b50606081604051908082528060200260200182016040528015612f27578160200160208202803683370190505b5090506000915060005b83811015612fae57612f4281611b82565b15612fa65760018181548110612f5457fe5b600091825260209091206004909102015482516001600160a01b0390911690839085908110612f7f57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508260010192505b600101612f31565b50925050505b90565b601581565b61027181565b61100281565b601381815481106122b757fe5b6000612fdf612ecb565b519050600080600c5411612ff4576015612ff8565b600c545b905080821115613006578091505b8161301057600191505b5090565b67016345785d8a000081565b60055481565b61100381565b61200481565b60005460ff16156130555760405162461bcd60e51b8152600401610d9d906188fc565b61305d61786d565b6000613083604051806101e001604052806101ab8152602001618d086101ab9139613cce565b91509150806130a45760405162461bcd60e51b8152600401610d9d906189e7565b60005b8260200151518110156131c9576001836020015182815181106130c657fe5b60209081029190910181015182546001818101855560009485528385208351600493840290910180546001600160a01b039283166001600160a01b03199182161782558587015182850180549185169183169190911790556040860151600283018054606089015160808a01511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b199590981692909516919091179290921694909417161790915560a09093015160039093019290925591860151805191850193918590811061319c57fe5b602090810291909101810151516001600160a01b03168252810191909152604001600020556001016130a7565b50506103e8600255506000805460ff19166001179055565b600d5481565b33612002146132085760405162461bcd60e51b8152600401610d9d90618bd5565b60005b60155481101561329057816001600160a01b03166015828154811061322c57fe5b60009182526020909120600490910201546001600160a01b031614156132885760016015828154811061325b57fe5b9060005260206000209060040201600201601c6101000a81548160ff021916908315150217905550613290565b60010161320b565b506001600160a01b0381166000908152600460205260409020548015806132e157506001808203815481106132c157fe5b9060005260206000209060040201600201601c9054906101000a900460ff165b1561331f576040516001600160a01b038316907fe209c46bebf57cf265d5d9009a00870e256d9150f3ed5281ab9d9eb3cec6e4be90600090a2613328565b610dbd8161504f565b5050565b601354600090815b818110156134355761341d85858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060138054909250859150811061338557fe5b600091825260209182902001805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156134135780601f106133e857610100808354040283529160200191613413565b820191906000526020600020905b8154815290600101906020018083116133f657829003601f168201915b5050505050616378565b1561342d57600192505050611c2d565b600101613334565b5060125460005b818110156134a65761348d86868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060128054909250859150811061338557fe5b1561349e5760019350505050611c2d565b60010161343c565b50600095945050505050565b33611001146134d35760405162461bcd60e51b8152600401610d9d90618b8c565b600b54613591576134e2617797565b60015460005b8181101561358d57600b80546001810182556000919091528351600080516020618ed38339815191526016909202918201908155602080860151600080516020618f138339815191528401805460ff191691151591909117905560408601518051879461356993600080516020618ef38339815191529091019201906177c6565b50606082015161357f9060038301906013617840565b5050508060010190506134e8565b5050505b600061359c826163dc565b90506135a781611ab3565b15613328576133288282616282565b606581565b3341146135da5760405162461bcd60e51b8152600401610d9d90618a77565b60005460ff166135fc5760405162461bcd60e51b8152600401610d9d906182e9565b6000341161361c5760405162461bcd60e51b8152600401610d9d9061863c565b3a1561363a5760405162461bcd60e51b8152600401610d9d906187ce565b6001600160a01b03811660009081526004602052604090205460145434919060ff1661367a57610271600f556103aa6006556014805460ff191660011790555b60006136a3612710613697600f548661657f90919063ffffffff16565b9063ffffffff6165b916565b90508015613713576040516110029082156108fc029083906000818181858888f193505050501580156136da573d6000803e3d6000fd5b507f6ecc855f9440a9282c90913bbc91619fd44f5ec0b462af28d127b116f130aa4d8160405161370a9190618c1b565b60405180910390a15b60008311801561372557506000600654115b156137cb5760006137476127106136976006548761657f90919063ffffffff16565b905080156137c95760405161dead9082156108fc029083906000818181858888f1935050505015801561377e573d6000803e3d6000fd5b507f627059660ea01c4733a328effb2294d2f86905bf806da763a89cee254de8bee5816040516137ae9190618c1b565b60405180910390a16137c6848263ffffffff615ba316565b93505b505b6137db838263ffffffff615ba316565b925081156138db5760006001808403815481106137f457fe5b9060005260206000209060040201905080600201601c9054906101000a900460ff161561386157846001600160a01b03167ff177e5d6c5764d79c32883ed824111d9b13f5668cf6ab1cc12dd36791dd955b4856040516138549190618c1b565b60405180910390a26138d5565b600354613874908563ffffffff615be516565b600390815581015461388c908563ffffffff615be516565b60038201556040516001600160a01b038616907f93a090ecc682c002995fad3c85b30c5651d7fd29b0be5da9d784a3302aedc055906138cc908790618c1b565b60405180910390a25b5061391d565b836001600160a01b03167ff177e5d6c5764d79c32883ed824111d9b13f5668cf6ab1cc12dd36791dd955b4846040516139149190618c1b565b60405180910390a25b50505050565b600e5481565b61100081565b61dead81565b600b818154811061394257fe5b6000918252602091829020601691909102018054600180830154600280850180546040805161010096831615969096026000190190911692909204601f810188900488028501880190925281845293965060ff909116949192918301828280156139ed5780601f106139c2576101008083540402835291602001916139ed565b820191906000526020600020905b8154815290600101906020018083116139d057829003601f168201915b5050505050905083565b61100481565b6000600a5460001480613a0e575081155b80613a195750600954155b15613a26575060006110af565b60096000815460019003919050819055506000613a71600a5461369785613697600b8981548110613a5357fe5b6000918252602090912060169091020154439063ffffffff615ba316565b90506000600b8581548110613a8257fe5b906000526020600020906016020160010160006101000a81548160ff0219169083151502179055506000806110016001600160a01b0316638256ace66040518163ffffffff1660e01b8152600401604080518083038186803b158015613ae757600080fd5b505afa158015613afb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b1f9190617e5a565b9150915060009350808310613c7e57613b388787615c0a565b506040516333c1892360e21b81526000906120029063cf06248c90613b61908b90600401617f97565b60206040518083038186803b158015613b7957600080fd5b505afa158015613b8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613bb19190617c07565b6001600160a01b031614613c1d576040516313d13bdb60e31b815261100190639e89ded890613be6908a908790600401617fab565b600060405180830381600087803b158015613c0057600080fd5b505af1158015613c14573d6000803e3d6000fd5b50505050613c75565b6040516305bfb49960e41b815261100190635bfb499090613c42908a90600401617f97565b600060405180830381600087803b158015613c5c57600080fd5b505af1158015613c70573d6000803e3d6000fd5b505050505b60019350613c90565b818310613c9057613c8e876163dc565b505b6040516001600160a01b038816907fb9d38178dc641ff1817967a63c9078cbcd955a9f1fcd75e0e3636de615d44d3b90600090a25050509392505050565b613cd661786d565b6000613ce061786d565b613ce861790a565b613cf9613cf4866165fb565b616620565b90506000805b613d088361666a565b15613e7c5780613d2d57613d23613d1e8461668b565b6166d9565b60ff168452613e74565b8060011415613e6f576060613d49613d448561668b565b616759565b90508051604051908082528060200260200182016040528015613d8657816020015b613d73617891565b815260200190600190039081613d6b5790505b5085602001819052508051604051908082528060200260200182016040528015613dc457816020015b6060815260200190600190039081613daf5790505b50604086015260005b8151811015613e6457613dde617891565b60606000613dfe858581518110613df157fe5b602002602001015161682a565b92509250925080613e1e578860009a509a50505050505050505050613e85565b8289602001518581518110613e2f57fe5b60200260200101819052508189604001518581518110613e4b57fe5b6020026020010181905250505050806001019050613dcd565b506001925050613e74565b613e7c565b600101613cff565b50919350909150505b915091565b604080516001808252818301909252606091829190816020015b6060815260200190600190039081613ea4579050509050613eca8363ffffffff16616944565b81600081518110613ed757fe5b60200260200101819052506110af81616957565b6000606483511115613f2257600080516020618eb3833981519152604051613f12906183fc565b60405180910390a1506066611c2d565b60005b8351811015613fc05760005b81811015613fb757848181518110613f4557fe5b6020026020010151600001516001600160a01b0316858381518110613f6657fe5b6020026020010151600001516001600160a01b03161415613faf57600080516020618eb3833981519152604051613f9c90618557565b60405180910390a1606692505050611c2d565b600101613f31565b50600101613f25565b5060608060606015805480602002602001604051908101604052809291908181526020016000905b828210156140725760008481526020908190206040805160c0810182526004860290920180546001600160a01b039081168452600180830154821685870152600283015491821693850193909352600160a01b81046001600160401b03166060850152600160e01b900460ff16151560808401526003015460a08301529083529092019101613fe8565b50505050905060606016805480602002602001604051908101604052809291908181526020016000905b828210156141475760008481526020908190208301805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156141335780601f1061410857610100808354040283529160200191614133565b820191906000526020600020905b81548152906001019060200180831161411657829003601f168201915b50505050508152602001906001019061409c565b50505050905060005b82518110156141a45782818151811061416557fe5b60200260200101516060015160020283828151811061418057fe5b60209081029190910101516001600160401b03909116606090910152600101614150565b506060806141b4898986866169e1565b915091506141c28282615163565b60015460408051828152602080840282010190915292985090965060009550859450925060609150828015614201578160200160208202803683370190505b50905060005b828110156143925760006001600160a01b03166120026001600160a01b031663cf06248c6001848154811061423857fe5b60009182526020909120600491820201546040516001600160e01b031960e085901b168152614273926001600160a01b039092169101617f97565b60206040518083038186803b15801561428b57600080fd5b505afa15801561429f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142c39190617c07565b6001600160a01b0316146143255760018282815181106142df57fe5b602002602001019060ff16908160ff16815250506001818154811061430057fe5b906000526020600020906004020160030154600014614320578360010193505b61438a565b67016345785d8a00006001828154811061433b57fe5b9060005260206000209060040201600301541061435d5784600101945061438a565b6001818154811061436a57fe5b90600052602060002090600402016003015460001461438a578360010193505b600101614207565b506060846040519080825280602002602001820160405280156143bf578160200160208202803683370190505b5090506060856040519080825280602002602001820160405280156143ee578160200160208202803683370190505b50905060608660405190808252806020026020018201604052801561441d578160200160208202803683370190505b50905060608760405190808252806020026020018201604052801561444c578160200160208202803683370190505b509050600060608860405190808252806020026020018201604052801561447d578160200160208202803683370190505b5090506060896040519080825280602002602001820160405280156144ac578160200160208202803683370190505b50905060009a506000995060006110046001600160a01b031663149d14d96040518163ffffffff1660e01b815260040160206040518083038186803b1580156144f457600080fd5b505afa158015614508573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061452c9190617e42565b905067016345785d8a000081111561457857600080516020618eb3833981519152604051614559906188bb565b60405180910390a160689e505050505050505050505050505050611c2d565b60005b8a81101561490c5789818151811061458f57fe5b602002602001015160ff166001141561468557600181815481106145af57fe5b90600052602060002090600402016003015460001461468057600181815481106145d557fe5b600091825260209091206004909102015484516001600160a01b039091169085908e90811061460057fe5b60200260200101906001600160a01b031690816001600160a01b0316815250506001818154811061462d57fe5b906000526020600020906004020160030154838d8151811061464b57fe5b60200260200101818152505060018a8d8151811061466557fe5b602002602001019060ff16908160ff16815250508b6001019b505b614904565b67016345785d8a00006001828154811061469b57fe5b9060005260206000209060040201600301541061482057600181815481106146bf57fe5b906000526020600020906004020160020160009054906101000a90046001600160a01b0316898e815181106146f057fe5b60200260200101906001600160a01b031690816001600160a01b03168152505060006402540be4006001838154811061472557fe5b9060005260206000209060040201600301548161473e57fe5b066001838154811061474c57fe5b9060005260206000209060040201600301540390506147748382615ba390919063ffffffff16565b898f8151811061478057fe5b6020026020010181815250506001828154811061479957fe5b906000526020600020906004020160010160009054906101000a90046001600160a01b0316878f815181106147ca57fe5b60200260200101906001600160a01b031690816001600160a01b03168152505081888f815181106147f757fe5b6020908102919091010152614812868263ffffffff615be516565b95508d6001019d5050614904565b6001818154811061482d57fe5b906000526020600020906004020160030154600014614904576001818154811061485357fe5b906000526020600020906004020160010160009054906101000a90046001600160a01b0316848d8151811061488457fe5b60200260200101906001600160a01b031690816001600160a01b031681525050600181815481106148b157fe5b906000526020600020906004020160030154838d815181106148cf57fe5b60200260200101818152505060008a8d815181106148e957fe5b602002602001019060ff16908160ff16815250508b6001019b505b60010161457b565b5060008415614b82576002546040516303702b2960e51b815261100491636e056520918891614946918e918e918d914201906004016180a5565b6020604051808303818588803b15801561495f57600080fd5b505af193505050508015614990575060408051601f3d908101601f1916820190925261498d91810190617d6f565b60015b614b07576040516000815260443d10156149ac57506000614a47565b60046000803e60005160e01c6308c379a081146149cd576000915050614a47565b60043d036004833e81513d60248201116001600160401b03821117156149f857600092505050614a47565b80830180516001600160401b03811115614a19576000945050505050614a47565b8060208301013d8601811115614a3757600095505050505050614a47565b601f01601f191660405250925050505b80614a525750614a94565b60019150857fa7cdeed7d0db45e3219a6e5d60838824c16f1d39991fcfe3f963029c844bf28082604051614a86919061812a565b60405180910390a250614b02565b3d808015614abe576040519150601f19603f3d011682016040523d82523d6000602084013e614ac3565b606091505b5060019150857fbfa884552dd8921b6ce90bfe906952ae5b3b29be0cc1a951d4f62697635a3a4582604051614af8919061812a565b60405180910390a2505b614b82565b8015614b49577fa217d08e65f80c73121cd9db834d81652d544bfbf452f6d04922b16c90a37b7086604051614b3c9190618c1b565b60405180910390a1614b80565b857fa7cdeed7d0db45e3219a6e5d60838824c16f1d39991fcfe3f963029c844bf280604051614b77906181ec565b60405180910390a25b505b8015614d385760005b8751811015614d36576000888281518110614ba257fe5b60200260200101519050600060018281548110614bbb57fe5b60009182526020909120600160049092020181015481546001600160a01b03909116916108fc9185908110614bec57fe5b9060005260206000209060040201600301549081150290604051600060405180830381858888f1935050505090508015614ca85760018281548110614c2d57fe5b60009182526020909120600160049092020181015481546001600160a01b03909116917f6c61d60f69a7beb3e1c80db7f39f37b208537cbb19da3174511b477812b2fc7d9185908110614c7c57fe5b906000526020600020906004020160030154604051614c9b9190618c1b565b60405180910390a2614d2c565b60018281548110614cb557fe5b60009182526020909120600160049092020181015481546001600160a01b03909116917f25d0ce7d2f0cec669a8c17efe49d195c13455bb8872b65fa610ac7f53fe4ca7d9185908110614d0457fe5b906000526020600020906004020160030154604051614d239190618c1b565b60405180910390a25b5050600101614b8b565b505b835115614f2e5760005b8451811015614f2c578a8181518110614d5757fe5b602002602001015160ff1660011415614df6576120026001600160a01b031663092193ab858381518110614d8757fe5b6020026020010151878481518110614d9b57fe5b60200260200101516040518363ffffffff1660e01b8152600401614dbf9190617f97565b6000604051808303818588803b158015614dd857600080fd5b505af1158015614dec573d6000803e3d6000fd5b5050505050614f24565b6000858281518110614e0457fe5b60200260200101516001600160a01b03166108fc868481518110614e2457fe5b60200260200101519081150290604051600060405180830381858888f1935050505090508015614eba57858281518110614e5a57fe5b60200260200101516001600160a01b03167f6c61d60f69a7beb3e1c80db7f39f37b208537cbb19da3174511b477812b2fc7d868481518110614e9857fe5b6020026020010151604051614ead9190618c1b565b60405180910390a2614f22565b858281518110614ec657fe5b60200260200101516001600160a01b03167f25d0ce7d2f0cec669a8c17efe49d195c13455bb8872b65fa610ac7f53fe4ca7d868481518110614f0457fe5b6020026020010151604051614f199190618c1b565b60405180910390a25b505b600101614d42565b505b505050505050505050505050506000471115614fab577f6ecc855f9440a9282c90913bbc91619fd44f5ec0b462af28d127b116f130aa4d47604051614f739190618c1b565b60405180910390a1604051611002904780156108fc02916000818181858888f19350505050158015614fa9573d6000803e3d6000fd5b505b60006003819055600555815115614fc657614fc6828261539c565b6110016001600160a01b031663fc4333cd6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561500357600080fd5b505af1158015615017573d6000803e3d6000fd5b50506040517fedd8d7296956dd970ab4de3f2fc03be2b0ffc615d20cd4c72c6e44f928630ebf925060009150a1506000949350505050565b600154600554600091906000198201118015906150c25760018085038154811061507557fe5b600091825260208220600490910201546040516001600160a01b03909116917fe209c46bebf57cf265d5d9009a00870e256d9150f3ed5281ab9d9eb3cec6e4be91a2600092505050611b7d565b6005805460019081019091558054819060001987019081106150e057fe5b9060005260206000209060040201600201601c6101000a81548160ff02191690831515021790555060018085038154811061511757fe5b600091825260208220600490910201546040516001600160a01b03909116917ff226e7d8f547ff903d9d419cf5f54e0d7d07efa9584135a53a057c5f1f27f49a91a25060009392505050565b606080600080808080615174612fd5565b6001549091505b801561528257600181039250600b838154811061519457fe5b600091825260209091206001601690920201015460ff166151b457615279565b600183815481106151c157fe5b60009182526020909120600490910201546001600160a01b031694506151e88584846139fd565b93508315806151fb575060018a51038610155b1561520557615279565b60005b8a5181101561527757856001600160a01b03168b828151811061522757fe5b6020026020010151600001516001600160a01b0316141561526f5760018b828151811061525057fe5b6020908102919091010151901515608090910152600190960195615277565b600101615208565b505b6000190161517b565b50848951036040519080825280602002602001820160405280156152c057816020015b6152ad617891565b8152602001906001900390816152a55790505b509650848951036040519080825280602002602001820160405280156152fa57816020015b60608152602001906001900390816152e55790505b5095506000915060005b895181101561538e5789818151811061531957fe5b6020026020010151608001516153865789818151811061533557fe5b602002602001015188848151811061534957fe5b602002602001018190525088818151811061536057fe5b602002602001015187848151811061537457fe5b60200260200101819052508260010192505b600101615304565b5050505050505b9250929050565b600154825160005b828110156154b95760016153b6617891565b600183815481106153c357fe5b600091825260208083206040805160c08101825260049490940290910180546001600160a01b0390811685526001820154811693850193909352600281015492831691840191909152600160a01b82046001600160401b03166060840152600160e01b90910460ff16151560808301526003015460a082015291505b8481101561548d5787818151811061545357fe5b6020026020010151600001516001600160a01b031682600001516001600160a01b03161415615485576000925061548d565b60010161543f565b5081156154af5780516001600160a01b03166000908152600460205260408120555b50506001016153a4565b508082111561557857805b828110156155765760018054806154d757fe5b60008281526020812060046000199093019283020180546001600160a01b0319908116825560018201805490911690556002810180546001600160e81b0319169055600301559055600b80548061552a57fe5b60008281526020812060166000199093019283020181815560018101805460ff191690559061555c60028301826178c6565b61556a60038301600061792a565b505090556001016154c4565b505b60008183106155875781615589565b825b905060005b818110156159455761563b8682815181106155a557fe5b6020026020010151600183815481106155ba57fe5b60009182526020918290206040805160c08101825260049390930290910180546001600160a01b0390811684526001820154811694840194909452600281015493841691830191909152600160a01b83046001600160401b03166060830152600160e01b90920460ff161515608082015260039091015460a0820152616dad565b6157ef57806001016004600088848151811061565357fe5b6020026020010151600001516001600160a01b03166001600160a01b031681526020019081526020016000208190555085818151811061568f57fe5b6020026020010151600182815481106156a457fe5b6000918252602091829020835160049092020180546001600160a01b039283166001600160a01b0319918216178255928401516001820180549184169185169190911790556040840151600282018054606087015160808801511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b1995909716929097169190911792909216939093171692909217905560a090910151600390910155845185908290811061575f57fe5b6020026020010151600b828154811061577457fe5b906000526020600020906016020160020190805190602001906157989291906177c6565b506000600b82815481106157a857fe5b60009182526020822060169190910201600101805460ff191692151592909217909155600b8054839081106157d957fe5b600091825260209091206016909102015561593d565b6158808582815181106157fe57fe5b6020026020010151600b838154811061581357fe5b600091825260209182902060026016909202018101805460408051601f6000196101006001861615020190931694909404918201859004850284018501905280835291929091908301828280156134135780601f106133e857610100808354040283529160200191613413565b6158cb5784818151811061589057fe5b6020026020010151600b82815481106158a557fe5b906000526020600020906016020160020190805190602001906158c99291906177c6565b505b6000600182815481106158da57fe5b9060005260206000209060040201600301819055508581815181106158fb57fe5b6020026020010151608001516001828154811061591457fe5b9060005260206000209060040201600201601c6101000a81548160ff0219169083151502179055505b60010161558e565b5082821115615b1d57615956617797565b835b83811015615b1a5785818151811061596c57fe5b60200260200101518260400181905250600187828151811061598a57fe5b6020908102919091018101518254600181810185556000948552838520835160049093020180546001600160a01b039384166001600160a01b0319918216178255848601518284018054918616918316919091179055604080860151600284018054606089015160808a01511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b1995909a1692909616919091179290921696909617169190911790935560a090930151600390930192909255600b8054928301815590935284516016909102600080516020618ed3833981519152810191825585830151600080516020618f138339815191528201805491151560ff1990921691909117905592850151805186949293615ac093600080516020618ef3833981519152019201906177c6565b506060820151615ad69060038301906013617840565b5050508060010160046000898481518110615aed57fe5b602090810291909101810151516001600160a01b0316825281019190915260400160002055600101615958565b50505b615b25616e2e565b615b2d617010565b6000600981905560015493505b83811015615b9b576000600b8281548110615b5157fe5b60009182526020822060169190910201600101805460ff191692151592909217909155600b805483908110615b8257fe5b6000918252602090912060169091020155600101615b3a565b505050505050565b60006110af83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506171fe565b6000828201838110156110af5760405162461bcd60e51b8152600401610d9d90618320565b60008060018381548110615c1a57fe5b90600052602060002090600402016003015490506000600180805490500390506001615c44612ecb565b5111615c7957600060018581548110615c5957fe5b906000526020600020906004020160030181905550600092505050611c2d565b846001600160a01b03167f3b6f9ef90462b512a1293ecec018670bf7b7f1876fb727590a8a6d7643130a7083604051615cb29190618c1b565b60405180910390a26001600160a01b038516600090815260046020526040812055835b60015460001901811015615e9f5760018160010181548110615cf357fe5b906000526020600020906004020160018281548110615d0e57fe5b60009182526020909120825460049092020180546001600160a01b03199081166001600160a01b0393841617825560018085015481840180548416918616919091179055600280860180549185018054909416919095161780835584546001600160401b03600160a01b91829004160267ffffffffffffffff60a01b1990911617808355935460ff600160e01b918290041615150260ff60e01b19909416939093179055600392830154920191909155600b805490918301908110615dcf57fe5b9060005260206000209060160201600b8281548110615dea57fe5b600091825260209091208254601690920201908155600180830154818301805460ff909216151560ff1990921691909117905560028084018054615e41938386019390821615610100026000190190911604617939565b50615e54600382810190840160136179ae565b50905050806001016004600060018481548110615e6d57fe5b600091825260208083206004909202909101546001600160a01b03168352820192909252604001902055600101615cd5565b506001805480615eab57fe5b60008281526020812060046000199093019283020180546001600160a01b0319908116825560018201805490911690556002810180546001600160e81b0319169055600301559055600b805480615efe57fe5b60008281526020812060166000199093019283020181815560018101805460ff1916905590615f3060028301826178c6565b615f3e60038301600061792a565b505090556000818381615f4d57fe5b0490508015615fb15760015460005b81811015615fae578260018281548110615f7257fe5b9060005260206000209060040201600301540160018281548110615f9257fe5b6000918252602090912060036004909202010155600101615f5c565b50505b50600195945050505050565b600154815160408051828152602080840282010190915260609291908390828015615ffc57816020015b6060815260200190600190039081615fe75790505b50600b549091508314616013579250611b7d915050565b60005b8281101561612257600b60016004600089858151811061603257fe5b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054038154811061606657fe5b600091825260209182902060026016909202018101805460408051601f6000196101006001861615020190931694909404918201859004850284018501905280835291929091908301828280156160fe5780601f106160d3576101008083540402835291602001916160fe565b820191906000526020600020905b8154815290600101906020018083116160e157829003601f168201915b505050505082828151811061610f57fe5b6020908102919091010152600101616016565b50949350505050565b60005b82811015616278576000828783880160405160200161614e929190617f89565b6040516020818303038152906040528051906020012060001c8161616e57fe5b0690508085018287011461626f576000898388018151811061618c57fe5b60200260200101519050606089848901815181106161a657fe5b602002602001015190508a838801815181106161be57fe5b60200260200101518b858a01815181106161d457fe5b60200260200101906001600160a01b031690816001600160a01b031681525050818b8489018151811061620357fe5b60200260200101906001600160a01b031690816001600160a01b031681525050898388018151811061623157fe5b60200260200101518a858a018151811061624757fe5b6020026020010181905250808a8489018151811061626157fe5b602002602001018190525050505b5060010161612e565b5050505050505050565b600980546001908101909155600b80548390811061629c57fe5b906000526020600020906016020160010160006101000a81548160ff02191690831515021790555043600b82815481106162d257fe5b600091825260208220601690910201919091556040516001600160a01b038416917ff62981a567ec3cec866c6fa93c55bcdf841d6292d18b8d522ececa769375d82d91a25050565b60008160405160200161632d9190617f6d565b60405160208183030381529060405280519060200120836040516020016163549190617f6d565b6040516020818303038152906040528051906020012014905092915050565b015190565b81518151600091600191811480831461639457600092506163d2565b600160208701838101602088015b6002848385100114156163cd5780518351146163c15760009650600093505b602092830192016163a2565b505050505b5090949350505050565b6001600160a01b0381166000908152600460205260408120548061640557506000199050611b7d565b60018103905060006001828154811061641a57fe5b906000526020600020906004020160030154905060006001838154811061643d57fe5b6000918252602090912060036004909202010155600154604051600019909101906001600160a01b038616907f8cd4e147d8af98a9e3b6724021b8bf6aed2e5dac71c38f2dce8161b82585b25d90616496908590618c1b565b60405180910390a2806164ae57829350505050611b7d565b60008183816164b957fe5b04905080156165755760005b848110156165175781600182815481106164db57fe5b90600052602060002090600402016003015401600182815481106164fb57fe5b60009182526020909120600360049092020101556001016164c5565b50600180549085015b8181101561657257826001828154811061653657fe5b906000526020600020906004020160030154016001828154811061655657fe5b6000918252602090912060036004909202010155600101616520565b50505b5091949350505050565b60008261658e57506000611c2d565b8282028284828161659b57fe5b04146110af5760405162461bcd60e51b8152600401610d9d9061878d565b60006110af83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061722a565b6166036179d8565b506040805180820190915281518152602082810190820152919050565b61662861790a565b61663182617261565b61663a57600080fd5b6000616649836020015161729b565b60208085015160408051808201909152868152920190820152915050919050565b60006166746179d8565b505080518051602091820151919092015191011190565b6166936179d8565b61669c8261666a565b6166a557600080fd5b602082015160006166b5826172fe565b80830160209586015260408051808201909152908152938401919091525090919050565b8051600090158015906166ee57508151602110155b6166f757600080fd5b6000616706836020015161729b565b9050808360000151101561672c5760405162461bcd60e51b8152600401610d9d90618933565b82516020808501518301805192849003929183101561612257506020919091036101000a90049392505050565b606061676482617261565b61676d57600080fd5b6000616778836173df565b90506060816040519080825280602002602001820160405280156167b657816020015b6167a36179d8565b81526020019060019003908161679b5790505b50905060006167c8856020015161729b565b60208601510190506000805b8481101561681f576167e5836172fe565b915060405180604001604052808381526020018481525084828151811061680857fe5b6020908102919091010152918101916001016167d4565b509195945050505050565b616832617891565b6060600061683e617891565b606061684861790a565b61685187616620565b90506000805b6168608361666a565b15616935578061688b5761687b6168768461668b565b61743b565b6001600160a01b0316855261692d565b80600114156168b3576168a06168768461668b565b6001600160a01b0316602086015261692d565b80600214156168db576168c86168768461668b565b6001600160a01b0316604086015261692d565b8060031415616907576168f0613d1e8461668b565b6001600160401b031660608601526001915061692d565b80600414156169285761692161691c8461668b565b617455565b935061692d565b616935565b600101616857565b50929791965091945092505050565b6060611c2d616952836174c5565b6175ab565b60608151600014156169785750604080516000815260208101909152611b7d565b60608260008151811061698757fe5b602002602001015190506000600190505b83518110156169c8576169be828583815181106169b157fe5b60200260200101516175fd565b9150600101616998565b506110af6169db825160c060ff1661767a565b826175fd565b60608060006120026001600160a01b031663c473318f6040518163ffffffff1660e01b815260040160206040518083038186803b158015616a2157600080fd5b505afa158015616a35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190616a599190617e42565b90508085518851011015616a6e575083518651015b606081604051908082528060200260200182016040528015616aaa57816020015b616a97617891565b815260200190600190039081616a8f5790505b509050606082604051908082528060200260200182016040528015616ae357816020015b6060815260200190600190039081616ace5790505b50905060008060005b8b51831080616afb5750895182105b8015616b0657508581105b15616d9b578b51831415616b7657898281518110616b2057fe5b6020026020010151858281518110616b3457fe5b6020026020010181905250888281518110616b4b57fe5b6020026020010151848281518110616b5f57fe5b602090810291909101015260019182019101616aec565b8951821415616be1578b8381518110616b8b57fe5b6020026020010151858281518110616b9f57fe5b60200260200101819052508a8381518110616bb657fe5b6020026020010151848281518110616bca57fe5b602090810291909101015260019283019201616aec565b898281518110616bed57fe5b6020026020010151606001516001600160401b03168c8481518110616c0e57fe5b6020026020010151606001516001600160401b03161115616c8a578b8381518110616c3557fe5b6020026020010151858281518110616c4957fe5b60200260200101819052508a8381518110616c6057fe5b6020026020010151848281518110616c7457fe5b6020026020010181905250826001019250616d93565b898281518110616c9657fe5b6020026020010151606001516001600160401b03168c8481518110616cb757fe5b6020026020010151606001516001600160401b03161015616d3357898281518110616cde57fe5b6020026020010151858281518110616cf257fe5b6020026020010181905250888281518110616d0957fe5b6020026020010151848281518110616d1d57fe5b6020026020010181905250816001019150616d93565b898281518110616d3f57fe5b6020026020010151600001516001600160a01b03168c8481518110616d6057fe5b6020026020010151600001516001600160a01b03161015616d87578b8381518110616c3557fe5b898281518110616b2057fe5b600101616aec565b50929a91995090975050505050505050565b805182516000916001600160a01b039182169116148015616de7575081602001516001600160a01b031683602001516001600160a01b0316145b8015616e0c575081604001516001600160a01b031683604001516001600160a01b0316145b80156110af5750506060908101519101516001600160401b0390811691161490565b60125460135480821115616e7957805b82811015616e77576012805480616e5157fe5b600190038181906000526020600020016000616e6d91906178c6565b9055600101616e3e565b505b6000818310616e885781616e8a565b825b905060005b81811015616fa257616f4760128281548110616ea757fe5b600091825260209182902001805460408051601f6002600019610100600187161502019094169390930492830185900485028101850190915281815292830182828015616f355780601f10616f0a57610100808354040283529160200191616f35565b820191906000526020600020905b815481529060010190602001808311616f1857829003601f168201915b50505050506013838154811061338557fe5b616f9a5760138181548110616f5857fe5b9060005260206000200160128281548110616f6f57fe5b906000526020600020019080546001816001161561010002031660029004616f98929190617939565b505b600101616e8f565b5082821115610dbd57825b8281101561391d57601260138281548110616fc457fe5b6000918252602080832084546001818101875595855291909320929091018054617007949390920192909160026101009282161592909202600019011604617939565b50600101616fad565b601354600b548082111561705b57805b8281101561705957601380548061703357fe5b60019003818190600052602060002001600061704f91906178c6565b9055600101617020565b505b600081831061706a578161706c565b825b905060005b8181101561718b576171296013828154811061708957fe5b600091825260209182902001805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156171175780601f106170ec57610100808354040283529160200191617117565b820191906000526020600020905b8154815290600101906020018083116170fa57829003601f168201915b5050505050600b838154811061581357fe5b61718357600b818154811061713a57fe5b90600052602060002090601602016002016013828154811061715857fe5b906000526020600020019080546001816001161561010002031660029004617181929190617939565b505b600101617071565b5082821115610dbd57825b8281101561391d576013600b82815481106171ad57fe5b6000918252602080832084546001808201875595855291909320601692909202909201600290810180546171f595939094019390926000199082161561010002011604617939565b50600101617196565b600081848411156172225760405162461bcd60e51b8152600401610d9d919061812a565b505050900390565b6000818361724b5760405162461bcd60e51b8152600401610d9d919061812a565b50600083858161725757fe5b0495945050505050565b805160009061727257506000611b7d565b6020820151805160001a9060c082101561729157600092505050611b7d565b5060019392505050565b8051600090811a60808110156172b5576000915050611b7d565b60b88110806172d0575060c081108015906172d0575060f881105b156172df576001915050611b7d565b60c08110156172f35760b519019050611b7d565b60f519019050611b7d565b80516000908190811a608081101561731957600191506173d8565b60b881101561732e57607e19810191506173d8565b60c081101561737f57600060b78203600186019550806020036101000a8651049150600181018201935050808310156173795760405162461bcd60e51b8152600401610d9d906186da565b506173d8565b60f88110156173945760be19810191506173d8565b600060f78203600186019550806020036101000a8651049150600181018201935050808310156173d65760405162461bcd60e51b8152600401610d9d906186da565b505b5092915050565b80516000906173f057506000611b7d565b60008090506000617404846020015161729b565b602085015185519181019250015b8082101561743257617423826172fe565b82019150826001019250617412565b50909392505050565b805160009060151461744c57600080fd5b611c2d826166d9565b805160609061746357600080fd5b6000617472836020015161729b565b83516040805191839003808352601f19601f82011683016020019091529192506060908280156174a9576020820181803683370190505b509050600081602001905061612284876020015101828561774c565b604080516020808252818301909252606091829190602082018180368337505050602081018490529050600067ffffffffffffffff1984166175095750601861752d565b6fffffffffffffffffffffffffffffffff1984166175295750601061752d565b5060005b60208110156175635781818151811061754257fe5b01602001516001600160f81b0319161561755b57617563565b60010161752d565b60008160200390506060816040519080825280601f01601f191660200182016040528015617598576020820181803683370190505b5080830196909652508452509192915050565b6060815160011480156175dd5750607f60f81b826000815181106175cb57fe5b01602001516001600160f81b03191611155b156175e9575080611b7d565b611c2d6175fb8351608060ff1661767a565b835b6060806040519050835180825260208201818101602087015b8183101561762e578051835260209283019201617616565b50855184518101855292509050808201602086015b8183101561765b578051835260209283019201617643565b508651929092011591909101601f01601f191660405250905092915050565b60606801000000000000000083106176a45760405162461bcd60e51b8152600401610d9d906184d2565b604080516001808252818301909252606091602082018180368337019050509050603784116176fe5782840160f81b816000815181106176e057fe5b60200101906001600160f81b031916908160001a9053509050611c2d565b6060617709856174c5565b90508381510160370160f81b8260008151811061772257fe5b60200101906001600160f81b031916908160001a90535061774382826175fd565b95945050505050565b8061775657610dbd565b5b60208110617776578251825260209283019290910190601f1901617757565b915181516020939093036101000a6000190180199091169216919091179052565b604051806080016040528060008152602001600015158152602001606081526020016177c16179f2565b905290565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061780757805160ff1916838001178555617834565b82800160010185558215617834579182015b82811115617834578251825591602001919060010190617819565b50613010929150617a11565b82601381019282156178345791602002820182811115617834578251825591602001919060010190617819565b6040518060600160405280600060ff16815260200160608152602001606081525090565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a081019190915290565b50805460018160011615610100020316600290046000825580601f106178ec5750611d89565b601f016020900490600052602060002090810190611d899190617a11565b604051806040016040528061791d6179d8565b8152602001600081525090565b50611d89906013810190617a11565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106179725780548555617834565b8280016001018555821561783457600052602060002091601f016020900482015b82811115617834578254825591600101919060010190617993565b82601381019282156178345791820182811115617834578254825591600101919060010190617993565b604051806040016040528060008152602001600081525090565b6040518061026001604052806013906020820280368337509192915050565b612fb491905b808211156130105760008155600101617a17565b8035611c2d81618cf2565b60008083601f840112617a47578182fd5b5081356001600160401b03811115617a5d578182fd5b602083019150836020808302850101111561539557600080fd5b6000601f8381840112617a88578182fd5b8235617a9b617a9682618ca7565b618c81565b818152925060208084019085810160005b84811015617b2d578135880189603f820112617ac757600080fd5b838101356001600160401b03811115617adf57600080fd5b617af0818901601f19168601618c81565b81815260408c81848601011115617b0657600080fd5b82818501888401375060009181018601919091528552509282019290820190600101617aac565b50505050505092915050565b600082601f830112617b49578081fd5b8135617b57617a9682618ca7565b818152915060208083019084810181840286018201871015617b7857600080fd5b6000805b85811015617b2d5782356001600160401b0381168114617b9a578283fd5b85529383019391830191600101617b7c565b60008083601f840112617bbd578182fd5b5081356001600160401b03811115617bd3578182fd5b60208301915083602082850101111561539557600080fd5b600060208284031215617bfc578081fd5b81356110af81618cf2565b600060208284031215617c18578081fd5b81516110af81618cf2565b60008060008060408587031215617c38578283fd5b84356001600160401b0380821115617c4e578485fd5b617c5a88838901617a36565b90965094506020870135915080821115617c72578384fd5b50617c7f87828801617a36565b95989497509550505050565b600080600060608486031215617c9f578283fd5b83356001600160401b0380821115617cb5578485fd5b81860187601f820112617cc6578586fd5b80359250617cd6617a9684618ca7565b80848252602080830192508084018b828389028701011115617cf657898afd5b8994505b86851015617d2057617d0c8c82617a2b565b845260019490940193928101928101617cfa565b509097508801359350505080821115617d37578384fd5b617d4387838801617b39565b93506040860135915080821115617d58578283fd5b50617d6586828701617a77565b9150509250925092565b600060208284031215617d80578081fd5b815180151581146110af578182fd5b60008060208385031215617da1578182fd5b82356001600160401b03811115617db6578283fd5b617dc285828601617bac565b90969095509350505050565b60008060008060408587031215617de3578384fd5b84356001600160401b0380821115617df9578586fd5b617e0588838901617bac565b90965094506020870135915080821115617e1d578384fd5b50617c7f87828801617bac565b600060208284031215617e3b578081fd5b5035919050565b600060208284031215617e53578081fd5b5051919050565b60008060408385031215617e6c578182fd5b505080516020909101519092909150565b600080600060408486031215617e91578081fd5b833560ff81168114617ea1578182fd5b925060208401356001600160401b03811115617ebb578182fd5b617ec786828701617bac565b9497909650939450505050565b6000815180845260208085019450808401835b83811015617f0c5781516001600160a01b031687529582019590820190600101617ee7565b509495945050505050565b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b60008151808452617f59816020860160208601618cc6565b601f01601f19169290920160200192915050565b60008251617f7f818460208701618cc6565b9190910192915050565b918252602082015260400190565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b03968716815294861660208601529290941660408401526001600160401b03166060830152911515608082015260a081019190915260c00190565b6001600160a01b0392909216825260ff16602082015260400190565b6000602082526110af6020830184617ed4565b6000604082526180486040830185617ed4565b602083820381850152818551808452828401915082838202850101838801865b8381101561809657601f19878403018552618084838351617f41565b94860194925090850190600101618068565b50909998505050505050505050565b6000608082526180b86080830187617ed4565b828103602084810191909152865180835287820192820190845b818110156180ee578451835293830193918301916001016180d2565b505084810360408601526181028188617ed4565b93505050506001600160401b038316606083015295945050505050565b901515815260200190565b6000602082526110af6020830184617f41565b600060408252618151604083018688617f17565b8281036020840152618164818587617f17565b979650505050505050565b6020808252601c908201527f6c656e677468206f66206275726e526174696f206d69736d6174636800000000604082015260600190565b60208082526026908201527f6c656e677468206f66206d61784e756d4f664d61696e7461696e696e67206d696040820152650e6dac2e8c6d60d31b606082015260800190565b6020808252601b908201527f6261746368207472616e736665722072657475726e2066616c73650000000000604082015260600190565b6020808252602c908201527f6c656e677468206f66206d61784e756d4f66576f726b696e6743616e6469646160408201526b0e8cae640dad2e6dac2e8c6d60a31b606082015260800190565b60208082526025908201527f6c656e677468206f66206d61696e7461696e536c6173685363616c65206d69736040820152640dac2e8c6d60db1b606082015260800190565b6020808252818101527f6c656e677468206f66206e756d4f66436162696e657473206d69736d61746368604082015260600190565b60208082526019908201527f74686520636f6e7472616374206e6f7420696e69742079657400000000000000604082015260600190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b60208082526028908201527f746865206e756d4f66436162696e657473206d75737420626520677265617465604082015267072207468616e20360c41b606082015260800190565b60208082526039908201527f746865206e756d4f66436162696e657473206d757374206265206c657373207460408201527f68616e204d41585f4e554d5f4f465f56414c494441544f525300000000000000606082015260800190565b60208082526029908201527f746865206e756d626572206f662076616c696461746f727320657863656564206040820152681d1a19481b1a5b5a5d60ba1b606082015260800190565b60208082526022908201527f63616e206e6f7420646f207468697320747769636520696e206f6e6520626c6f604082015261636b60f01b606082015260800190565b6020808252602b908201527f746865206275726e526174696f206d757374206265206e6f206772656174657260408201526a0207468616e2031303030360ac1b606082015260800190565b6020808252600e908201526d696e70757420746f6f206c6f6e6760901b604082015260600190565b60208082526037908201527f746865206d61784e756d4f664d61696e7461696e696e67206d7573742062652060408201527f6c657373207468616e206e756d4f66436162696e657473000000000000000000606082015260800190565b6020808252602b908201527f6475706c696361746520636f6e73656e7375732061646472657373206f66207660408201526a185b1a59185d1bdc94d95d60aa1b606082015260800190565b60208082526033908201527f7468652073797374656d526577617264526174696f206d757374206265206e6f60408201527202067726561746572207468616e20313030303606c1b606082015260800190565b60208082526027908201527f7468652065787069726554696d655365636f6e64476170206973206f7574206f604082015266662072616e676560c81b606082015260800190565b6020808252601590820152746465706f7369742076616c7565206973207a65726f60581b604082015260600190565b60208082526049908201527f746865206d61784e756d4f66576f726b696e6743616e64696461746573206d7560408201527f7374206265206e6f742067726561746572207468616e206d61784e756d4f6643606082015268616e6469646174657360b81b608082015260a00190565b6020808252601190820152706164646974696f6e206f766572666c6f7760781b604082015260600190565b60208082526023908201527f63616e206e6f7420656e7465722054656d706f72617279204d61696e74656e616040820152626e636560e81b606082015260800190565b60208082526025908201527f6c656e677468206f66206a61696c2076616c696461746f7273206d757374206260408201526465206f6e6560d81b606082015260800190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252601490820152736761737072696365206973206e6f74207a65726f60601b604082015260600190565b6020808252602e908201527f746865206d6573736167652073656e646572206d75737420626520676f76657260408201526d1b985b98d94818dbdb9d1c9858dd60921b606082015260800190565b60208082526025908201527f6c656e677468206f66206d61784e756d4f6643616e64696461746573206d69736040820152640dac2e8c6d60db1b606082015260800190565b6020808252601290820152716e6f7420696e206d61696e74656e616e636560701b604082015260600190565b60208082526021908201527f666565206973206c6172676572207468616e2044555354595f494e434f4d494e6040820152604760f81b606082015260800190565b60208082526019908201527f74686520636f6e747261637420616c726561647920696e697400000000000000604082015260600190565b6020808252601a908201527f6c656e677468206973206c657373207468616e206f6666736574000000000000604082015260600190565b60208082526026908201527f6c656e677468206f662065787069726554696d655365636f6e64476170206d696040820152650e6dac2e8c6d60d31b606082015260800190565b60208082526017908201527f6f6e6c792063757272656e742076616c696461746f7273000000000000000000604082015260600190565b60208082526021908201527f6661696c656420746f20706172736520696e69742076616c696461746f7253656040820152601d60fa1b606082015260800190565b6020808252602f908201527f746865206d6573736167652073656e646572206d7573742062652063726f737360408201526e0818da185a5b8818dbdb9d1c9858dd608a1b606082015260800190565b6020808252602d908201527f746865206d6573736167652073656e646572206d75737420626520746865206260408201526c3637b1b590383937b23ab1b2b960991b606082015260800190565b60208082526024908201527f6c656e677468206f662073797374656d526577617264526174696f206d69736d6040820152630c2e8c6d60e31b606082015260800190565b6020808252603e908201527f746865206d61696e7461696e536c6173685363616c65206d757374206265206760408201527f726561746572207468616e203020616e64206c657373207468616e2031300000606082015260800190565b6020808252600d908201526c756e6b6e6f776e20706172616d60981b604082015260600190565b60208082526029908201527f746865206d6573736167652073656e646572206d75737420626520736c6173686040820152680818dbdb9d1c9858dd60ba1b606082015260800190565b6020808252601f908201527f746865206d73672073656e646572206d757374206265207374616b6548756200604082015260600190565b61ffff91909116815260200190565b90815260200190565b60008482528315156020830152606060408301526177436060830184617f41565b63ffffffff91909116815260200190565b60ff91909116815260200190565b600060ff8516825260406020830152617743604083018486617f17565b6040518181016001600160401b0381118282101715618c9f57600080fd5b604052919050565b60006001600160401b03821115618cbc578081fd5b5060209081020190565b60005b83811015618ce1578181015183820152602001618cc9565b8381111561391d5750506000910152565b6001600160a01b0381168114611d8957600080fdfef901a880f901a4f844941284214b9b9c85549ab3d2b972df0deef66ac2c9946ddf42a51534fc98d0c0a3b42c963cace8441ddf946ddf42a51534fc98d0c0a3b42c963cace8441ddf8410000000f84494a2959d3f95eae5dc7d70144ce1b73b403b7eb6e0948081ef03f1d9e0bb4a5bf38f16285c879299f07f948081ef03f1d9e0bb4a5bf38f16285c879299f07f8410000000f8449435552c16704d214347f29fa77f77da6d75d7c75294dc4973e838e3949c77aced16ac2315dc2d7ab11194dc4973e838e3949c77aced16ac2315dc2d7ab1118410000000f84494980a75ecd1309ea12fa2ed87a8744fbfc9b863d594cc6ac05c95a99c1f7b5f88de0e3486c82293b27094cc6ac05c95a99c1f7b5f88de0e3486c82293b2708410000000f84494f474cf03cceff28abc65c9cbae594f725c80e12d94e61a183325a18a173319dd8e19c8d069459e217594e61a183325a18a173319dd8e19c8d069459e21758410000000f84494b71b214cb885500844365e95cd9942c7276e7fd894d22ca3ba2141d23adab65ce4940eb7665ea2b6a794d22ca3ba2141d23adab65ce4940eb7665ea2b6a7841000000070e72399380dcfb0338abc03dc8d47f9f470ada8e769c9a78d644ea97385ecb20175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db90175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01dbb0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01dbaa164736f6c6343000604000a", }, { ContractAddr: common.HexToAddress(SlashContract), CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/cfc0bd1127186a917ddc38fd38d22903034d3f0b", - Code: "608060405234801561001057600080fd5b50600436106102f15760003560e01c8063831d65d11161019d578063c81b1662116100e9578063df8079e9116100a2578063f9a2bbc71161007c578063f9a2bbc714610575578063fc3e59081461057d578063fc4333cd14610585578063fd6a68791461058d576102f1565b8063df8079e91461055d578063e1c7392a14610565578063eb57bff71461056d576102f1565b8063c81b16621461050c578063c8509d8114610514578063c96be4cb14610527578063cc844b731461053a578063d2a42e4b1461054d578063dc927faf14610555576102f1565b8063aa82dce111610156578063ac0af62911610130578063ac0af629146104e1578063ac431751146104e9578063ae61dc3b146104fc578063c80d4b8f14610504576102f1565b8063aa82dce1146104c9578063aad56063146104d1578063ab51bb96146104d9576102f1565b8063831d65d11461048357806396713da9146104965780639dc092621461049e5780639e89ded8146104a6578063a1a11bf5146104b9578063a78abc16146104c1576102f1565b8063493279b11161025c5780636e47b4821161021557806375d47a0a116101ef57806375d47a0a146104635780637912a65d1461046b5780637942fd05146104735780638256ace61461047b576102f1565b80636e47b4821461044b57806370fd5bad14610453578063718a8aa81461045b576102f1565b8063493279b1146104035780634bf6c8821461041857806351e8067214610420578063567a372d146104285780635bfb49901461043057806362b72cf514610443576102f1565b806335aa2e44116102ae57806335aa2e441461039557806337c8dab9146103a8578063389f4f71146103c95780633a63f4b1146103de5780633dffc387146103e657806343756e5c146103fb576102f1565b80630bee7a67146102f65780630e2374a5146103145780631182b8751461032957806322d1e80b1461034957806323bac5a21461035e5780632796211814610380575b600080fd5b6102fe610595565b60405161030b9190613dd9565b60405180910390f35b61031c61059a565b60405161030b91906135ac565b61033c6103373660046134e2565b6105a0565b60405161030b91906135e4565b610351610606565b60405161030b91906135d9565b61037161036c3660046131f9565b61060f565b60405161030b93929190613dc1565b61039361038e36600461333f565b610632565b005b61031c6103a33660046134b2565b610a4c565b6103bb6103b63660046131f9565b610a73565b60405161030b929190613db3565b6103d1610aca565b60405161030b9190613d89565b6103d1610ad0565b6103ee610ad6565b60405161030b9190613dea565b61031c610adb565b61040b610ae1565b60405161030b9190613d7a565b6103ee610ae6565b61031c610aeb565b6103d1610af1565b61039361043e3660046131f9565b610af7565b6103d1610ba2565b61031c610ba8565b6103ee610bae565b6103ee610bb3565b61031c610bb8565b6103d1610bbe565b6103ee610bc3565b6103bb610bc8565b6103936104913660046134e2565b610bd2565b6103ee610ce5565b61031c610cea565b6103936104b4366004613231565b610cf0565b61031c610d1f565b610351610d25565b61031c610d2e565b61031c610d34565b6102fe610d3a565b6103d1610d3f565b6103936104f7366004613396565b610d44565b6103d16112f4565b6103d16112fb565b61031c611300565b6103936105223660046134e2565b611306565b6103936105353660046131f9565b611377565b6103936105483660046133ff565b6117f8565b6103d1611e43565b61031c611e48565b61031c611e4e565b610393611e54565b6103d1611e91565b61031c611e97565b6103ee611e9d565b610393611ea2565b61031c6122eb565b606481565b61200181565b606033612000146105cc5760405162461bcd60e51b81526004016105c390613bd2565b60405180910390fd5b60005460ff166105ee5760405162461bcd60e51b81526004016105c390613702565b60405162461bcd60e51b81526004016105c390613cc3565b60075460ff1681565b600260208190526000918252604090912080546001820154919092015460ff1683565b60005460ff166106545760405162461bcd60e51b81526004016105c390613702565b8151158015906106645750805115155b6106805760405162461bcd60e51b81526004016105c390613b30565b60408051600380825260808201909252606091816020015b60608152602001906001900390816106985790505090506106b960386122f1565b816000815181106106c657fe5b60200260200101819052506106da8361230c565b816001815181106106e757fe5b60200260200101819052506106fb8261230c565b8160028151811061070857fe5b6020026020010181905250606061071e82612362565b60408051603480825260608281019093529293509091602082018180368337019050509050815160346020830182602086016068600019fa61075f57600080fd5b50601481015160348201516040516333c1892360e21b81526000906120029063cf06248c906107929086906004016135ac565b60206040518083038186803b1580156107aa57600080fd5b505afa1580156107be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107e29190613215565b6001600160a01b031614156108095760405162461bcd60e51b81526004016105c3906136d2565b4281621baf8001101561082e5760405162461bcd60e51b81526004016105c390613673565b60606110006001600160a01b0316633b071dcc6040518163ffffffff1660e01b815260040160006040518083038186803b15801561086b57600080fd5b505afa15801561087f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526108a7919081019061325c565b50905060005b81518110156109ea578181815181106108c257fe5b60200260200101516001600160a01b0316846001600160a01b031614156109e2576006546040516309a99b4f60e41b815260646110028031909302049190639a99b4f09061091690339085906004016135c0565b602060405180830381600087803b15801561093057600080fd5b505af1158015610944573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061096891906134ca565b506110006001600160a01b03166335409f7f84848151811061098657fe5b60200260200101516040518263ffffffff1660e01b81526004016109aa91906135ac565b600060405180830381600087803b1580156109c457600080fd5b505af11580156109d8573d6000803e3d6000fd5b50505050506109ea565b6001016108ad565b50604051631871f7d960e31b81526120029063c38fbec890610a109086906004016135ac565b600060405180830381600087803b158015610a2a57600080fd5b505af1158015610a3e573d6000803e3d6000fd5b505050505050505050505050565b60018181548110610a5957fe5b6000918252602090912001546001600160a01b0316905081565b600080610a7e612fe0565b5050506001600160a01b0316600090815260026020818152604092839020835160608101855281548082526001830154938201849052919093015460ff16151592909301919091529091565b60055481565b60065481565b600181565b61100181565b603881565b600881565b61200081565b60045481565b3361100014610b185760405162461bcd60e51b81526004016105c390613991565b60005460ff16610b3a5760405162461bcd60e51b81526004016105c390613702565b61200063f7a251d7600b610b4d846123f3565b60006040518463ffffffff1660e01b8152600401610b6d93929190613df8565b600060405180830381600087803b158015610b8757600080fd5b505af1158015610b9b573d6000803e3d6000fd5b5050505050565b60035481565b61100581565b600281565b601081565b61100881565b600581565b600b81565b6004546005549091565b3361200014610bf35760405162461bcd60e51b81526004016105c390613bd2565b60005460ff16610c155760405162461bcd60e51b81526004016105c390613702565b610c1d613003565b6000610c5e84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506124bc92505050565b915091508015610ca55781516040517f7f0956d47419b9525356e7111652b653b530ec6f5096dccc04589bc38e62996791610c9891613dd9565b60405180910390a1610b9b565b81516040517f7d45f62d17443dd4547bca8a8112c60e2385669318dc300ec61a5d2492f262e791610cd591613dd9565b60405180910390a150505b505050565b600981565b61100781565b3361100014610d115760405162461bcd60e51b81526004016105c390613991565b610d1b828261253c565b5050565b61100681565b60005460ff1681565b61200281565b61300081565b600081565b600481565b60005460ff16610d665760405162461bcd60e51b81526004016105c390613702565b3361100714610d875760405162461bcd60e51b81526004016105c390613a69565b610df284848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260148152731b5a5cd9195b59585b9bdc951a1c995cda1bdb1960621b602082015291506127139050565b15610e8d5760208114610e175760405162461bcd60e51b81526004016105c39061391d565b604080516020601f8401819004810282018101909252828152600091610e559185858083850183828082843760009201919091525061276d92505050565b905060018110158015610e69575060055481105b610e855760405162461bcd60e51b81526004016105c390613b8d565b6004556112b1565b610ef384848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600f81526e19995b1bdb9e551a1c995cda1bdb19608a1b602082015291506127139050565b15610f8f5760208114610f185760405162461bcd60e51b81526004016105c390613ab7565b604080516020601f8401819004810282018101909252828152600091610f569185858083850183828082843760009201919091525061276d92505050565b90506103e88111158015610f6b575060045481115b610f875760405162461bcd60e51b81526004016105c3906137bb565b6005556112b1565b61100384848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601881527f66696e616c697479536c617368526577617264526174696f0000000000000000602082015291506127139050565b1561109d57602081146110285760405162461bcd60e51b81526004016105c390613cfa565b604080516020601f84018190048102820181019092528281526000916110669185858083850183828082843760009201919091525061276d92505050565b9050600a81101580156110795750606481105b6110955760405162461bcd60e51b81526004016105c3906138d1565b6006556112b1565b61111184848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601881527f656e61626c654d616c6963696f7573566f7465536c6173680000000000000000602082015291506127139050565b1561118857602081146111365760405162461bcd60e51b81526004016105c3906137f0565b604080516020601f8401819004810282018101909252828152611172919084848083850183828082843760009201919091525061277292505050565b6007805460ff19169115159190911790556112b1565b6111fc84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601781527f6d616c6963696f7573566f7465536c61736853636f7065000000000000000000602082015291506127139050565b1561129957602081146112215760405162461bcd60e51b81526004016105c390613629565b604080516020601f840181900481028201810190925282815260009161125f9185858083850183828082843760009201919091525061276d92505050565b905061708081101580156112755750620d2f0081105b6112915760405162461bcd60e51b81526004016105c390613739565b6008556112b1565b60405162461bcd60e51b81526004016105c390613c6e565b7f6cdb0ac70ab7f2e2d035cca5be60d89906f2dede7648ddbd7402189c1eeed17a848484846040516112e694939291906135f7565b60405180910390a150505050565b6201518081565b600a81565b61100281565b33612000146113275760405162461bcd60e51b81526004016105c390613bd2565b60005460ff166113495760405162461bcd60e51b81526004016105c390613702565b6040517f07db600eebe2ac176be8dcebad61858c245a4961bb32ca2aa3d159b09aa0810e90600090a1505050565b3341146113965760405162461bcd60e51b81526004016105c390613c21565b60005460ff166113b85760405162461bcd60e51b81526004016105c390613702565b60035443116113d95760405162461bcd60e51b81526004016105c390613d45565b3a156113f75760405162461bcd60e51b81526004016105c390613a0c565b60405163155853f360e21b8152611000906355614fcc9061141c9084906004016135ac565b60206040518083038186803b15801561143457600080fd5b505afa158015611448573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061146c919061331f565b611475576117f1565b61147d612fe0565b506001600160a01b0381166000908152600260208181526040928390208351606081018552815481526001820154928101929092529091015460ff1615801592820192909252906114d8576020810180516001019052611531565b60016040820181905260208201819052805480820182556000919091527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180546001600160a01b0319166001600160a01b0384161790555b43815260055460208201518161154357fe5b0661171f57600060208201526040516335409f7f60e01b8152611000906335409f7f906115749085906004016135ac565b600060405180830381600087803b15801561158e57600080fd5b505af11580156115a2573d6000803e3d6000fd5b50506040516333c1892360e21b815260009250612002915063cf06248c906115ce9086906004016135ac565b60206040518083038186803b1580156115e657600080fd5b505afa1580156115fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061161e9190613215565b6001600160a01b03161461163f5761163a82826020015161253c565b61171a565b61200063f7a251d7600b611652856123f3565b60006040518463ffffffff1660e01b815260040161167293929190613df8565b600060405180830381600087803b15801561168c57600080fd5b505af192505050801561169d575060015b61171a573d8080156116cb576040519150601f19603f3d011682016040523d82523d6000602084013e6116d0565b606091505b50826001600160a01b03167fd7bc86ff5d08c8ab043edec743302aba2520e6635172a428bc956721db9e2d1c836020015183604051611710929190613d92565b60405180910390a2505b61178b565b60045481602001518161172e57fe5b0661178b576040516375abf10160e11b81526110009063eb57e202906117589085906004016135ac565b600060405180830381600087803b15801561177257600080fd5b505af1158015611786573d6000803e3d6000fd5b505050505b6001600160a01b0382166000818152600260208181526040808420865181559186015160018301558581015191909201805460ff1916911515919091179055517fddb6012116e51abf5436d956a4f0ebd927e92c576ff96d7918290c8782291e3e9190a2505b5043600355565b60005460ff1661181a5760405162461bcd60e51b81526004016105c390613702565b60075460ff1661183c5760405162461bcd60e51b81526004016105c39061369d565b6006546118495760146006555b60085461185857620151806008555b60085481516040015143910111801561187c57504360085482602001516040015101115b6118985760405162461bcd60e51b81526004016105c390613c95565b8060200151602001518160000151602001511480156118c65750806020015160600151816000015160600151145b156118e35760405162461bcd60e51b81526004016105c390613964565b8051604081015190511080156119025750602081015160408101519051105b61191e5760405162461bcd60e51b81526004016105c39061389a565b6020810151518151511080156119435750806000015160400151816020015160400151105b8061196e575080515160208201515110801561196e5750806020015160400151816000015160400151105b806119885750806020015160400151816000015160400151145b6119a45760405162461bcd60e51b81526004016105c390613784565b604080820151905163ea321e4960e01b81526110009163ea321e49916119cd91906004016135e4565b60206040518083038186803b1580156119e557600080fd5b505afa1580156119f9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a1d919061331f565b611a395760405162461bcd60e51b81526004016105c390613a3a565b611a4b8160000151826040015161279a565b8015611a645750611a648160200151826040015161279a565b611a805760405162461bcd60e51b81526004016105c39061383b565b6060806110006001600160a01b0316633b071dcc6040518163ffffffff1660e01b815260040160006040518083038186803b158015611abe57600080fd5b505afa158015611ad2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611afa919081019061325c565b9150915060005b8151811015611c3757611b2b828281518110611b1957fe5b60200260200101518560400151612972565b15611c2f576006546040516309a99b4f60e41b815260646110028031909302049190639a99b4f090611b6390339085906004016135c0565b602060405180830381600087803b158015611b7d57600080fd5b505af1158015611b91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bb591906134ca565b506110006001600160a01b03166335409f7f858481518110611bd357fe5b60200260200101516040518263ffffffff1660e01b8152600401611bf791906135ac565b600060405180830381600087803b158015611c1157600080fd5b505af1158015611c25573d6000803e3d6000fd5b5050505050611c37565b600101611b01565b506040808401519051630f5b9efd60e31b815260009161200291637adcf7e891611c63916004016135e4565b60206040518083038186803b158015611c7b57600080fd5b505afa158015611c8f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cb39190613215565b6001600160a01b031614611d21576040808401519051630e9fbf5160e01b815261200291630e9fbf5191611cea91906004016135e4565b600060405180830381600087803b158015611d0457600080fd5b505af1158015611d18573d6000803e3d6000fd5b50505050610ce0565b6000611d32846040015160006129d6565b90506120006001600160a01b031663f7a251d7600b611d5487604001516129f2565b60006040518463ffffffff1660e01b8152600401611d7493929190613df8565b600060405180830381600087803b158015611d8e57600080fd5b505af1925050508015611d9f575060015b611e11573d808015611dcd576040519150601f19603f3d011682016040523d82523d6000602084013e611dd2565b606091505b50817fd58d1183100bd0932c0588f31c4205d6bc6168909765a96c41adbed3115f362882604051611e0391906135e4565b60405180910390a250611e3d565b60405181907f7b78aadacff901d8b63d0dba4f86283d4db8aef27f9ed70413dd860f1c9532b690600090a25b50505050565b601481565b61100381565b61200481565b60005460ff1615611e775760405162461bcd60e51b81526004016105c390613af9565b60056004819055600a90556000805460ff19166001179055565b60085481565b61100081565b600381565b3361100014611ec35760405162461bcd60e51b81526004016105c390613991565b60005460ff16611ee55760405162461bcd60e51b81526004016105c390613702565b600154611ef1576122e9565b600154600090600019015b8082116122bd576000805b8284101561202057611f17612fe0565b6002600060018781548110611f2857fe5b60009182526020808320909101546001600160a01b0316835282810193909352604091820190208151606081018352815481526001820154938101939093526002015460ff16151590820152600554909150600490048160200151111561200a57600460055481611f9557fe5b04816020015103816020018181525050806002600060018881548110611fb757fe5b6000918252602080832091909101546001600160a01b0316835282810193909352604091820190208351815591830151600183015591909101516002909101805460ff1916911515919091179055612014565b6001925050612020565b50836001019350611f07565b8284116121b75761202f612fe0565b600260006001868154811061204057fe5b60009182526020808320909101546001600160a01b0316835282810193909352604091820190208151606081018352815481526001820154938101939093526002015460ff161515908201526005549091506004900481602001511115612128576004600554816120ad57fe5b048160200151038160200181815250508060026000600187815481106120cf57fe5b6000918252602080832091909101546001600160a01b03168352828101939093526040918201902083518155918301516001808401919091559201516002909101805460ff191691151591909117905591506121b79050565b600260006001868154811061213957fe5b60009182526020808320909101546001600160a01b031683528201929092526040018120818155600181810192909255600201805460ff1916905580548061217d57fe5b600082815260209020810160001990810180546001600160a01b0319169055019055836121aa57506121b7565b5060001990920191612020565b8180156121c15750805b156122a05760026000600186815481106121d757fe5b60009182526020808320909101546001600160a01b031683528201929092526040018120818155600181810192909255600201805460ff1916905580548490811061221e57fe5b600091825260209091200154600180546001600160a01b03909216918690811061224457fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600180548061227d57fe5b600082815260209020810160001990810180546001600160a01b03191690550190555b826122ac5750506122bd565b505060019091019060001901611efc565b6040517fcfdb3b6ccaeccbdc68be3c59c840e3b3c90f0a7c491f5fff1cf56cfda200dd9c90600090a150505b565b61100481565b60606123046122ff83612a2d565b61230c565b90505b919050565b60608151600114801561233e5750607f60f81b8260008151811061232c57fe5b01602001516001600160f81b03191611155b1561234a575080612307565b61230461235c8351608060ff16612b13565b83612be5565b60608151600014156123835750604080516000815260208101909152612307565b60608260008151811061239257fe5b602002602001015190506000600190505b83518110156123d3576123c9828583815181106123bc57fe5b6020026020010151612be5565b91506001016123a3565b506123ec6123e6825160c060ff16612b13565b82612be5565b9392505050565b60408051600480825260a08201909252606091829190816020015b606081526020019060019003908161240e579050509050612437836001600160a01b0316612c62565b8160008151811061244457fe5b6020026020010181905250612458436122f1565b8160018151811061246557fe5b602090810291909101015261247a60386122f1565b8160028151811061248757fe5b602002602001018190525061249b426122f1565b816003815181106124a857fe5b60200260200101819052506123ec81612362565b6124c4613003565b60006124ce613003565b6124d6613015565b6124e76124e286612c85565b612caa565b90506000805b6124f683612cf4565b1561252f57806125225761251161250c84612d15565b612d63565b63ffffffff16845260019150612527565b61252f565b6001016124ed565b5091935090915050915091565b6040516375cc7d8960e01b8152612002906375cc7d89906125619085906004016135ac565b600060405180830381600087803b15801561257b57600080fd5b505af192505050801561258c575060015b610d1b576040516000815260443d10156125a857506000612645565b60046000803e60005160e01c6308c379a081146125c9576000915050612645565b60043d036004833e81513d602482011167ffffffffffffffff821117156125f557600092505050612645565b808301805167ffffffffffffffff811115612617576000945050505050612645565b8060208301013d860181111561263557600095505050505050612645565b601f01601f191660405250925050505b806126505750612699565b826001600160a01b03167fd7bc86ff5d08c8ab043edec743302aba2520e6635172a428bc956721db9e2d1c838360405161268b929190613d92565b60405180910390a25061270e565b3d8080156126c3576040519150601f19603f3d011682016040523d82523d6000602084013e6126c8565b606091505b50826001600160a01b03167fd7bc86ff5d08c8ab043edec743302aba2520e6635172a428bc956721db9e2d1c8383604051612704929190613d92565b60405180910390a2505b610d1b565b6000816040516020016127269190613590565b604051602081830303815290604052805190602001208360405160200161274d9190613590565b604051602081830303815290604052805190602001201490505b92915050565b015190565b8082015160009060ff81161561278c576001915081612792565b60009150815b505092915050565b60408051600480825260a0820190925260009160609190816020015b60608152602001906001900390816127b65750506040805160208082528183019092529192506060919080820181803683370190505090506127fb85600001516122f1565b8260008151811061280857fe5b60200260200101819052506128236020866020015183612de5565b61282c8161230c565b8260018151811061283957fe5b602002602001018190525061285185604001516122f1565b8260028151811061285e57fe5b60200260200101819052506128796020866060015183612de5565b6128828161230c565b8260038151811061288f57fe5b60200260200101819052506128b560206128a884612362565b8051906020012083612de5565b6040805160b080825260e082019092526060916020820181803683370190505090506128e5818360006020612df5565b6128f781876080015160206060612df5565b612905818660806030612df5565b604080516001808252818301909252606091602082018180368337019050509050815160016020830182602086016066600019fa61294257600080fd5b506001612950826000612e48565b60ff1614612965576000945050505050612767565b5060019695505050505050565b81518151600091600191811480831461298e57600092506129cc565b600160208701838101602088015b6002848385100114156129c75780518351146129bb5760009650600093505b6020928301920161299c565b505050505b5090949350505050565b600081602001835110156129e957600080fd5b50016020015190565b60408051600480825260a08201909252606091829190816020015b6060815260200190600190039081612a0d5790505090506124378361230c565b604080516020808252818301909252606091829190602082018180368337505050602081018490529050600067ffffffffffffffff198416612a7157506018612a95565b6fffffffffffffffffffffffffffffffff198416612a9157506010612a95565b5060005b6020811015612acb57818181518110612aaa57fe5b01602001516001600160f81b03191615612ac357612acb565b600101612a95565b60008160200390506060816040519080825280601f01601f191660200182016040528015612b00576020820181803683370190505b5080830196909652508452509192915050565b6060680100000000000000008310612b3d5760405162461bcd60e51b81526004016105c390613872565b60408051600180825281830190925260609160208201818036833701905050905060378411612b975782840160f81b81600081518110612b7957fe5b60200101906001600160f81b031916908160001a9053509050612767565b6060612ba285612a2d565b90508381510160370160f81b82600081518110612bbb57fe5b60200101906001600160f81b031916908160001a905350612bdc8282612be5565b95945050505050565b6060806040519050835180825260208201818101602087015b81831015612c16578051835260209283019201612bfe565b50855184518101855292509050808201602086015b81831015612c43578051835260209283019201612c2b565b508651929092011591909101601f01601f191660405250905092915050565b60408051600560a21b83186014820152603481019091526060906123ec8161230c565b612c8d613035565b506040805180820190915281518152602082810190820152919050565b612cb2613015565b612cbb82612e64565b612cc457600080fd5b6000612cd38360200151612e9e565b60208085015160408051808201909152868152920190820152915050919050565b6000612cfe613035565b505080518051602091820151919092015191011190565b612d1d613035565b612d2682612cf4565b612d2f57600080fd5b60208201516000612d3f82612f01565b80830160209586015260408051808201909152908152938401919091525090919050565b805160009015801590612d7857508151602110155b612d8157600080fd5b6000612d908360200151612e9e565b90508083600001511015612db65760405162461bcd60e51b81526004016105c390613b56565b825160208085015183018051928490039291831015612ddc57826020036101000a820491505b50949350505050565b9091018181526020918201910152565b60005b81811015610b9b57838181518110612e0c57fe5b602001015160f81c60f81b858480600101955081518110612e2957fe5b60200101906001600160f81b031916908160001a905350600101612df8565b60008160010183511015612e5b57600080fd5b50016001015190565b8051600090612e7557506000612307565b6020820151805160001a9060c0821015612e9457600092505050612307565b5060019392505050565b8051600090811a6080811015612eb8576000915050612307565b60b8811080612ed3575060c08110801590612ed3575060f881105b15612ee2576001915050612307565b60c0811015612ef65760b519019050612307565b60f519019050612307565b80516000908190811a6080811015612f1c5760019150612fd9565b60b8811015612f3157607e1981019150612fd9565b60c0811015612f8257600060b78203600186019550806020036101000a865104915060018101820193505080831015612f7c5760405162461bcd60e51b81526004016105c3906139e1565b50612fd9565b60f8811015612f975760be1981019150612fd9565b600060f78203600186019550806020036101000a8651049150600181018201935050808310156127925760405162461bcd60e51b81526004016105c3906139e1565b5092915050565b604051806060016040528060008152602001600081526020016000151581525090565b60408051602081019091526000815290565b6040518060400160405280613028613035565b8152602001600081525090565b604051806040016040528060008152602001600081525090565b600082601f83011261305f578081fd5b815161307261306d82613e4b565b613e24565b818152915060208083019084810160005b848110156130e8578151870188603f82011261309e57600080fd5b838101516130ae61306d82613e6b565b81815260408b818486010111156130c457600080fd5b6130d383888401838701613e8f565b50865250509282019290820190600101613083565b505050505092915050565b60008083601f840112613104578182fd5b50813567ffffffffffffffff81111561311b578182fd5b60208301915083602082850101111561313357600080fd5b9250929050565b600082601f83011261314a578081fd5b813561315861306d82613e6b565b915080825283602082850101111561316f57600080fd5b8060208401602084013760009082016020015292915050565b600060a08284031215613199578081fd5b6131a360a0613e24565b905081358152602082013560208201526040820135604082015260608201356060820152608082013567ffffffffffffffff8111156131e157600080fd5b6131ed8482850161313a565b60808301525092915050565b60006020828403121561320a578081fd5b81356123ec81613ebb565b600060208284031215613226578081fd5b81516123ec81613ebb565b60008060408385031215613243578081fd5b823561324e81613ebb565b946020939093013593505050565b6000806040838503121561326e578182fd5b825167ffffffffffffffff80821115613285578384fd5b81850186601f820112613296578485fd5b805192506132a661306d84613e4b565b80848252602080830192508084018a8283890287010111156132c6578889fd5b8894505b868510156132f15780516132dd81613ebb565b8452600194909401939281019281016132ca565b508801519096509350505080821115613308578283fd5b506133158582860161304f565b9150509250929050565b600060208284031215613330578081fd5b815180151581146123ec578182fd5b60008060408385031215613351578182fd5b823567ffffffffffffffff80821115613368578384fd5b6133748683870161313a565b93506020850135915080821115613389578283fd5b506133158582860161313a565b600080600080604085870312156133ab578182fd5b843567ffffffffffffffff808211156133c2578384fd5b6133ce888389016130f3565b909650945060208701359150808211156133e6578384fd5b506133f3878288016130f3565b95989497509550505050565b600060208284031215613410578081fd5b813567ffffffffffffffff80821115613427578283fd5b81840160608187031215613439578384fd5b6134436060613e24565b9250803582811115613453578485fd5b61345f87828401613188565b845250602081013582811115613473578485fd5b61347f87828401613188565b602085015250604081013582811115613496578485fd5b6134a28782840161313a565b6040850152509195945050505050565b6000602082840312156134c3578081fd5b5035919050565b6000602082840312156134db578081fd5b5051919050565b6000806000604084860312156134f6578081fd5b833560ff81168114613506578182fd5b9250602084013567ffffffffffffffff811115613521578182fd5b61352d868287016130f3565b9497909650939450505050565b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b6000815180845261357c816020860160208601613e8f565b601f01601f19169290920160200192915050565b600082516135a2818460208701613e8f565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b901515815260200190565b6000602082526123ec6020830184613564565b60006040825261360b60408301868861353a565b828103602084015261361e81858761353a565b979650505050505050565b6020808252602a908201527f6c656e677468206f66206d616c6963696f7573566f7465536c61736853636f706040820152690ca40dad2e6dac2e8c6d60b31b606082015260800190565b60208082526010908201526f195d9a59195b98d9481d1bdbc81bdb1960821b604082015260600190565b6020808252818101527f6d616c6963696f757320766f746520736c617368206e6f7420656e61626c6564604082015260600190565b6020808252601690820152751d985b1a59185d1bdc881b9bdd081b5a59dc985d195960521b604082015260600190565b60208082526019908201527f74686520636f6e7472616374206e6f7420696e69742079657400000000000000604082015260600190565b6020808252602b908201527f746865206d616c6963696f757320766f746520736c6173682073636f7065206f60408201526a7574206f662072616e676560a81b606082015260800190565b6020808252601a908201527f6e6f2076696f6c6174696f6e206f6620766f74652072756c6573000000000000604082015260600190565b6020808252818101527f7468652066656c6f6e795468726573686f6c64206f7574206f662072616e6765604082015260600190565b6020808252602b908201527f6c656e677468206f6620656e61626c654d616c6963696f7573566f7465536c6160408201526a0e6d040dad2e6dac2e8c6d60ab1b606082015260800190565b60208082526017908201527f766572696679207369676e6174757265206661696c6564000000000000000000604082015260600190565b6020808252600e908201526d696e70757420746f6f206c6f6e6760901b604082015260600190565b60208082526019908201527f7372634e756d20626967676572207468616e207461724e756d00000000000000604082015260600190565b6020808252602c908201527f7468652066696e616c69747920736c6173682072657761726420726174696f2060408201526b6f7574206f662072616e676560a01b606082015260800190565b60208082526027908201527f6c656e677468206f66206d697364656d65616e6f725468726573686f6c64206d6040820152660d2e6dac2e8c6d60cb1b606082015260800190565b60208082526013908201527274776f206964656e746963616c20766f74657360681b604082015260600190565b60208082526030908201527f746865206d6573736167652073656e646572206d7573742062652076616c696460408201526f185d1bdc94d95d0818dbdb9d1c9858dd60821b606082015260800190565b6020808252601190820152706164646974696f6e206f766572666c6f7760781b604082015260600190565b6020808252601490820152736761737072696365206973206e6f74207a65726f60601b604082015260600190565b6020808252601590820152741d9bdd195059191c881a5cc81b9bdd08199bdd5b99605a1b604082015260600190565b6020808252602e908201527f746865206d6573736167652073656e646572206d75737420626520676f76657260408201526d1b985b98d94818dbdb9d1c9858dd60921b606082015260800190565b60208082526022908201527f6c656e677468206f662066656c6f6e795468726573686f6c64206d69736d61746040820152610c6d60f31b606082015260800190565b60208082526019908201527f74686520636f6e747261637420616c726561647920696e697400000000000000604082015260600190565b6020808252600c908201526b32b6b83a3c903432b0b232b960a11b604082015260600190565b6020808252601a908201527f6c656e677468206973206c657373207468616e206f6666736574000000000000604082015260600190565b60208082526025908201527f746865206d697364656d65616e6f725468726573686f6c64206f7574206f662060408201526472616e676560d81b606082015260800190565b6020808252602f908201527f746865206d6573736167652073656e646572206d7573742062652063726f737360408201526e0818da185a5b8818dbdb9d1c9858dd608a1b606082015260800190565b6020808252602d908201527f746865206d6573736167652073656e646572206d75737420626520746865206260408201526c3637b1b590383937b23ab1b2b960991b606082015260800190565b6020808252600d908201526c756e6b6e6f776e20706172616d60981b604082015260600190565b6020808252601490820152731d185c99d95d08189b1bd8dac81d1bdbc81bdb1960621b604082015260600190565b6020808252601e908201527f7265636569766520756e65787065637465642073796e207061636b6167650000604082015260600190565b6020808252602b908201527f6c656e677468206f662066696e616c697479536c61736852657761726452617460408201526a0d2de40dad2e6dac2e8c6d60ab1b606082015260800190565b6020808252818101527f63616e206e6f7420736c61736820747769636520696e206f6e6520626c6f636b604082015260600190565b61ffff91909116815260200190565b90815260200190565b600083825260406020830152613dab6040830184613564565b949350505050565b918252602082015260400190565b92835260208301919091521515604082015260600190565b63ffffffff91909116815260200190565b60ff91909116815260200190565b600060ff8516825260606020830152613e146060830185613564565b9050826040830152949350505050565b60405181810167ffffffffffffffff81118282101715613e4357600080fd5b604052919050565b600067ffffffffffffffff821115613e61578081fd5b5060209081020190565b600067ffffffffffffffff821115613e81578081fd5b50601f01601f191660200190565b60005b83811015613eaa578181015183820152602001613e92565b83811115611e3d5750506000910152565b6001600160a01b0381168114613ed057600080fd5b5056fea164736f6c6343000604000a", + Code: "608060405234801561001057600080fd5b50600436106102f15760003560e01c8063831d65d11161019d578063c81b1662116100e9578063df8079e9116100a2578063f9a2bbc71161007c578063f9a2bbc714610575578063fc3e59081461057d578063fc4333cd14610585578063fd6a68791461058d576102f1565b8063df8079e91461055d578063e1c7392a14610565578063eb57bff71461056d576102f1565b8063c81b16621461050c578063c8509d8114610514578063c96be4cb14610527578063cc844b731461053a578063d2a42e4b1461054d578063dc927faf14610555576102f1565b8063aa82dce111610156578063ac0af62911610130578063ac0af629146104e1578063ac431751146104e9578063ae61dc3b146104fc578063c80d4b8f14610504576102f1565b8063aa82dce1146104c9578063aad56063146104d1578063ab51bb96146104d9576102f1565b8063831d65d11461048357806396713da9146104965780639dc092621461049e5780639e89ded8146104a6578063a1a11bf5146104b9578063a78abc16146104c1576102f1565b8063493279b11161025c5780636e47b4821161021557806375d47a0a116101ef57806375d47a0a146104635780637912a65d1461046b5780637942fd05146104735780638256ace61461047b576102f1565b80636e47b4821461044b57806370fd5bad14610453578063718a8aa81461045b576102f1565b8063493279b1146104035780634bf6c8821461041857806351e8067214610420578063567a372d146104285780635bfb49901461043057806362b72cf514610443576102f1565b806335aa2e44116102ae57806335aa2e441461039557806337c8dab9146103a8578063389f4f71146103c95780633a63f4b1146103de5780633dffc387146103e657806343756e5c146103fb576102f1565b80630bee7a67146102f65780630e2374a5146103145780631182b8751461032957806322d1e80b1461034957806323bac5a21461035e5780632796211814610380575b600080fd5b6102fe610595565b60405161030b9190613ddc565b60405180910390f35b61031c61059a565b60405161030b91906135af565b61033c6103373660046134e5565b6105a0565b60405161030b91906135e7565b610351610606565b60405161030b91906135dc565b61037161036c3660046131fc565b61060f565b60405161030b93929190613dc4565b61039361038e366004613342565b610632565b005b61031c6103a33660046134b5565b610a4d565b6103bb6103b63660046131fc565b610a74565b60405161030b929190613db6565b6103d1610acb565b60405161030b9190613d8c565b6103d1610ad1565b6103ee610ad7565b60405161030b9190613ded565b61031c610adc565b61040b610ae2565b60405161030b9190613d7d565b6103ee610ae8565b61031c610aed565b6103d1610af3565b61039361043e3660046131fc565b610af9565b6103d1610ba4565b61031c610baa565b6103ee610bb0565b6103ee610bb5565b61031c610bba565b6103d1610bc0565b6103ee610bc5565b6103bb610bca565b6103936104913660046134e5565b610bd4565b6103ee610ce7565b61031c610cec565b6103936104b4366004613234565b610cf2565b61031c610d21565b610351610d27565b61031c610d30565b61031c610d36565b6102fe610d3c565b6103d1610d41565b6103936104f7366004613399565b610d46565b6103d16112f6565b6103d16112fd565b61031c611302565b6103936105223660046134e5565b611308565b6103936105353660046131fc565b611379565b610393610548366004613402565b6117fa565b6103d1611e45565b61031c611e4a565b61031c611e50565b610393611e56565b6103d1611e93565b61031c611e99565b6103ee611e9f565b610393611ea4565b61031c6122ed565b606481565b61200181565b606033612000146105cc5760405162461bcd60e51b81526004016105c390613bd5565b60405180910390fd5b60005460ff166105ee5760405162461bcd60e51b81526004016105c390613705565b60405162461bcd60e51b81526004016105c390613cc6565b60075460ff1681565b600260208190526000918252604090912080546001820154919092015460ff1683565b60005460ff166106545760405162461bcd60e51b81526004016105c390613705565b8151158015906106645750805115155b6106805760405162461bcd60e51b81526004016105c390613b33565b60408051600380825260808201909252606091816020015b60608152602001906001900390816106985790505090506106ba6102ca6122f3565b816000815181106106c757fe5b60200260200101819052506106db8361230e565b816001815181106106e857fe5b60200260200101819052506106fc8261230e565b8160028151811061070957fe5b6020026020010181905250606061071f82612364565b60408051603480825260608281019093529293509091602082018180368337019050509050815160346020830182602086016068600019fa61076057600080fd5b50601481015160348201516040516333c1892360e21b81526000906120029063cf06248c906107939086906004016135af565b60206040518083038186803b1580156107ab57600080fd5b505afa1580156107bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107e39190613218565b6001600160a01b0316141561080a5760405162461bcd60e51b81526004016105c3906136d5565b4281621baf8001101561082f5760405162461bcd60e51b81526004016105c390613676565b60606110006001600160a01b0316633b071dcc6040518163ffffffff1660e01b815260040160006040518083038186803b15801561086c57600080fd5b505afa158015610880573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526108a8919081019061325f565b50905060005b81518110156109eb578181815181106108c357fe5b60200260200101516001600160a01b0316846001600160a01b031614156109e3576006546040516309a99b4f60e41b815260646110028031909302049190639a99b4f09061091790339085906004016135c3565b602060405180830381600087803b15801561093157600080fd5b505af1158015610945573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061096991906134cd565b506110006001600160a01b03166335409f7f84848151811061098757fe5b60200260200101516040518263ffffffff1660e01b81526004016109ab91906135af565b600060405180830381600087803b1580156109c557600080fd5b505af11580156109d9573d6000803e3d6000fd5b50505050506109eb565b6001016108ae565b50604051631871f7d960e31b81526120029063c38fbec890610a119086906004016135af565b600060405180830381600087803b158015610a2b57600080fd5b505af1158015610a3f573d6000803e3d6000fd5b505050505050505050505050565b60018181548110610a5a57fe5b6000918252602090912001546001600160a01b0316905081565b600080610a7f612fe3565b5050506001600160a01b0316600090815260026020818152604092839020835160608101855281548082526001830154938201849052919093015460ff16151592909301919091529091565b60055481565b60065481565b600181565b61100181565b6102ca81565b600881565b61200081565b60045481565b3361100014610b1a5760405162461bcd60e51b81526004016105c390613994565b60005460ff16610b3c5760405162461bcd60e51b81526004016105c390613705565b61200063f7a251d7600b610b4f846123f5565b60006040518463ffffffff1660e01b8152600401610b6f93929190613dfb565b600060405180830381600087803b158015610b8957600080fd5b505af1158015610b9d573d6000803e3d6000fd5b5050505050565b60035481565b61100581565b600281565b601081565b61100881565b600581565b600b81565b6004546005549091565b3361200014610bf55760405162461bcd60e51b81526004016105c390613bd5565b60005460ff16610c175760405162461bcd60e51b81526004016105c390613705565b610c1f613006565b6000610c6084848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506124bf92505050565b915091508015610ca75781516040517f7f0956d47419b9525356e7111652b653b530ec6f5096dccc04589bc38e62996791610c9a91613ddc565b60405180910390a1610b9d565b81516040517f7d45f62d17443dd4547bca8a8112c60e2385669318dc300ec61a5d2492f262e791610cd791613ddc565b60405180910390a150505b505050565b600981565b61100781565b3361100014610d135760405162461bcd60e51b81526004016105c390613994565b610d1d828261253f565b5050565b61100681565b60005460ff1681565b61200281565b61300081565b600081565b600481565b60005460ff16610d685760405162461bcd60e51b81526004016105c390613705565b3361100714610d895760405162461bcd60e51b81526004016105c390613a6c565b610df484848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260148152731b5a5cd9195b59585b9bdc951a1c995cda1bdb1960621b602082015291506127169050565b15610e8f5760208114610e195760405162461bcd60e51b81526004016105c390613920565b604080516020601f8401819004810282018101909252828152600091610e579185858083850183828082843760009201919091525061277092505050565b905060018110158015610e6b575060055481105b610e875760405162461bcd60e51b81526004016105c390613b90565b6004556112b3565b610ef584848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600f81526e19995b1bdb9e551a1c995cda1bdb19608a1b602082015291506127169050565b15610f915760208114610f1a5760405162461bcd60e51b81526004016105c390613aba565b604080516020601f8401819004810282018101909252828152600091610f589185858083850183828082843760009201919091525061277092505050565b90506103e88111158015610f6d575060045481115b610f895760405162461bcd60e51b81526004016105c3906137be565b6005556112b3565b61100584848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601881527f66696e616c697479536c617368526577617264526174696f0000000000000000602082015291506127169050565b1561109f576020811461102a5760405162461bcd60e51b81526004016105c390613cfd565b604080516020601f84018190048102820181019092528281526000916110689185858083850183828082843760009201919091525061277092505050565b9050600a811015801561107b5750606481105b6110975760405162461bcd60e51b81526004016105c3906138d4565b6006556112b3565b61111384848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601881527f656e61626c654d616c6963696f7573566f7465536c6173680000000000000000602082015291506127169050565b1561118a57602081146111385760405162461bcd60e51b81526004016105c3906137f3565b604080516020601f8401819004810282018101909252828152611174919084848083850183828082843760009201919091525061277592505050565b6007805460ff19169115159190911790556112b3565b6111fe84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601781527f6d616c6963696f7573566f7465536c61736853636f7065000000000000000000602082015291506127169050565b1561129b57602081146112235760405162461bcd60e51b81526004016105c39061362c565b604080516020601f84018190048102820181019092528281526000916112619185858083850183828082843760009201919091525061277092505050565b905061708081101580156112775750620d2f0081105b6112935760405162461bcd60e51b81526004016105c39061373c565b6008556112b3565b60405162461bcd60e51b81526004016105c390613c71565b7f6cdb0ac70ab7f2e2d035cca5be60d89906f2dede7648ddbd7402189c1eeed17a848484846040516112e894939291906135fa565b60405180910390a150505050565b6201518081565b600a81565b61100281565b33612000146113295760405162461bcd60e51b81526004016105c390613bd5565b60005460ff1661134b5760405162461bcd60e51b81526004016105c390613705565b6040517f07db600eebe2ac176be8dcebad61858c245a4961bb32ca2aa3d159b09aa0810e90600090a1505050565b3341146113985760405162461bcd60e51b81526004016105c390613c24565b60005460ff166113ba5760405162461bcd60e51b81526004016105c390613705565b60035443116113db5760405162461bcd60e51b81526004016105c390613d48565b3a156113f95760405162461bcd60e51b81526004016105c390613a0f565b60405163155853f360e21b8152611000906355614fcc9061141e9084906004016135af565b60206040518083038186803b15801561143657600080fd5b505afa15801561144a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061146e9190613322565b611477576117f3565b61147f612fe3565b506001600160a01b0381166000908152600260208181526040928390208351606081018552815481526001820154928101929092529091015460ff1615801592820192909252906114da576020810180516001019052611533565b60016040820181905260208201819052805480820182556000919091527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180546001600160a01b0319166001600160a01b0384161790555b43815260055460208201518161154557fe5b0661172157600060208201526040516335409f7f60e01b8152611000906335409f7f906115769085906004016135af565b600060405180830381600087803b15801561159057600080fd5b505af11580156115a4573d6000803e3d6000fd5b50506040516333c1892360e21b815260009250612002915063cf06248c906115d09086906004016135af565b60206040518083038186803b1580156115e857600080fd5b505afa1580156115fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116209190613218565b6001600160a01b0316146116415761163c82826020015161253f565b61171c565b61200063f7a251d7600b611654856123f5565b60006040518463ffffffff1660e01b815260040161167493929190613dfb565b600060405180830381600087803b15801561168e57600080fd5b505af192505050801561169f575060015b61171c573d8080156116cd576040519150601f19603f3d011682016040523d82523d6000602084013e6116d2565b606091505b50826001600160a01b03167fd7bc86ff5d08c8ab043edec743302aba2520e6635172a428bc956721db9e2d1c836020015183604051611712929190613d95565b60405180910390a2505b61178d565b60045481602001518161173057fe5b0661178d576040516375abf10160e11b81526110009063eb57e2029061175a9085906004016135af565b600060405180830381600087803b15801561177457600080fd5b505af1158015611788573d6000803e3d6000fd5b505050505b6001600160a01b0382166000818152600260208181526040808420865181559186015160018301558581015191909201805460ff1916911515919091179055517fddb6012116e51abf5436d956a4f0ebd927e92c576ff96d7918290c8782291e3e9190a2505b5043600355565b60005460ff1661181c5760405162461bcd60e51b81526004016105c390613705565b60075460ff1661183e5760405162461bcd60e51b81526004016105c3906136a0565b60065461184b5760146006555b60085461185a57620151806008555b60085481516040015143910111801561187e57504360085482602001516040015101115b61189a5760405162461bcd60e51b81526004016105c390613c98565b8060200151602001518160000151602001511480156118c85750806020015160600151816000015160600151145b156118e55760405162461bcd60e51b81526004016105c390613967565b8051604081015190511080156119045750602081015160408101519051105b6119205760405162461bcd60e51b81526004016105c39061389d565b6020810151518151511080156119455750806000015160400151816020015160400151105b8061197057508051516020820151511080156119705750806020015160400151816000015160400151105b8061198a5750806020015160400151816000015160400151145b6119a65760405162461bcd60e51b81526004016105c390613787565b604080820151905163ea321e4960e01b81526110009163ea321e49916119cf91906004016135e7565b60206040518083038186803b1580156119e757600080fd5b505afa1580156119fb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a1f9190613322565b611a3b5760405162461bcd60e51b81526004016105c390613a3d565b611a4d8160000151826040015161279d565b8015611a665750611a668160200151826040015161279d565b611a825760405162461bcd60e51b81526004016105c39061383e565b6060806110006001600160a01b0316633b071dcc6040518163ffffffff1660e01b815260040160006040518083038186803b158015611ac057600080fd5b505afa158015611ad4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611afc919081019061325f565b9150915060005b8151811015611c3957611b2d828281518110611b1b57fe5b60200260200101518560400151612975565b15611c31576006546040516309a99b4f60e41b815260646110028031909302049190639a99b4f090611b6590339085906004016135c3565b602060405180830381600087803b158015611b7f57600080fd5b505af1158015611b93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bb791906134cd565b506110006001600160a01b03166335409f7f858481518110611bd557fe5b60200260200101516040518263ffffffff1660e01b8152600401611bf991906135af565b600060405180830381600087803b158015611c1357600080fd5b505af1158015611c27573d6000803e3d6000fd5b5050505050611c39565b600101611b03565b506040808401519051630f5b9efd60e31b815260009161200291637adcf7e891611c65916004016135e7565b60206040518083038186803b158015611c7d57600080fd5b505afa158015611c91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cb59190613218565b6001600160a01b031614611d23576040808401519051630e9fbf5160e01b815261200291630e9fbf5191611cec91906004016135e7565b600060405180830381600087803b158015611d0657600080fd5b505af1158015611d1a573d6000803e3d6000fd5b50505050610ce2565b6000611d34846040015160006129d9565b90506120006001600160a01b031663f7a251d7600b611d5687604001516129f5565b60006040518463ffffffff1660e01b8152600401611d7693929190613dfb565b600060405180830381600087803b158015611d9057600080fd5b505af1925050508015611da1575060015b611e13573d808015611dcf576040519150601f19603f3d011682016040523d82523d6000602084013e611dd4565b606091505b50817fd58d1183100bd0932c0588f31c4205d6bc6168909765a96c41adbed3115f362882604051611e0591906135e7565b60405180910390a250611e3f565b60405181907f7b78aadacff901d8b63d0dba4f86283d4db8aef27f9ed70413dd860f1c9532b690600090a25b50505050565b601481565b61100381565b61200481565b60005460ff1615611e795760405162461bcd60e51b81526004016105c390613afc565b60056004819055600a90556000805460ff19166001179055565b60085481565b61100081565b600381565b3361100014611ec55760405162461bcd60e51b81526004016105c390613994565b60005460ff16611ee75760405162461bcd60e51b81526004016105c390613705565b600154611ef3576122eb565b600154600090600019015b8082116122bf576000805b8284101561202257611f19612fe3565b6002600060018781548110611f2a57fe5b60009182526020808320909101546001600160a01b0316835282810193909352604091820190208151606081018352815481526001820154938101939093526002015460ff16151590820152600554909150600490048160200151111561200c57600460055481611f9757fe5b04816020015103816020018181525050806002600060018881548110611fb957fe5b6000918252602080832091909101546001600160a01b0316835282810193909352604091820190208351815591830151600183015591909101516002909101805460ff1916911515919091179055612016565b6001925050612022565b50836001019350611f09565b8284116121b957612031612fe3565b600260006001868154811061204257fe5b60009182526020808320909101546001600160a01b0316835282810193909352604091820190208151606081018352815481526001820154938101939093526002015460ff16151590820152600554909150600490048160200151111561212a576004600554816120af57fe5b048160200151038160200181815250508060026000600187815481106120d157fe5b6000918252602080832091909101546001600160a01b03168352828101939093526040918201902083518155918301516001808401919091559201516002909101805460ff191691151591909117905591506121b99050565b600260006001868154811061213b57fe5b60009182526020808320909101546001600160a01b031683528201929092526040018120818155600181810192909255600201805460ff1916905580548061217f57fe5b600082815260209020810160001990810180546001600160a01b0319169055019055836121ac57506121b9565b5060001990920191612022565b8180156121c35750805b156122a25760026000600186815481106121d957fe5b60009182526020808320909101546001600160a01b031683528201929092526040018120818155600181810192909255600201805460ff1916905580548490811061222057fe5b600091825260209091200154600180546001600160a01b03909216918690811061224657fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600180548061227f57fe5b600082815260209020810160001990810180546001600160a01b03191690550190555b826122ae5750506122bf565b505060019091019060001901611efe565b6040517fcfdb3b6ccaeccbdc68be3c59c840e3b3c90f0a7c491f5fff1cf56cfda200dd9c90600090a150505b565b61100481565b606061230661230183612a30565b61230e565b90505b919050565b6060815160011480156123405750607f60f81b8260008151811061232e57fe5b01602001516001600160f81b03191611155b1561234c575080612309565b61230661235e8351608060ff16612b16565b83612be8565b60608151600014156123855750604080516000815260208101909152612309565b60608260008151811061239457fe5b602002602001015190506000600190505b83518110156123d5576123cb828583815181106123be57fe5b6020026020010151612be8565b91506001016123a5565b506123ee6123e8825160c060ff16612b16565b82612be8565b9392505050565b60408051600480825260a08201909252606091829190816020015b6060815260200190600190039081612410579050509050612439836001600160a01b0316612c65565b8160008151811061244657fe5b602002602001018190525061245a436122f3565b8160018151811061246757fe5b602090810291909101015261247d6102ca6122f3565b8160028151811061248a57fe5b602002602001018190525061249e426122f3565b816003815181106124ab57fe5b60200260200101819052506123ee81612364565b6124c7613006565b60006124d1613006565b6124d9613018565b6124ea6124e586612c88565b612cad565b90506000805b6124f983612cf7565b1561253257806125255761251461250f84612d18565b612d66565b63ffffffff1684526001915061252a565b612532565b6001016124f0565b5091935090915050915091565b6040516375cc7d8960e01b8152612002906375cc7d89906125649085906004016135af565b600060405180830381600087803b15801561257e57600080fd5b505af192505050801561258f575060015b610d1d576040516000815260443d10156125ab57506000612648565b60046000803e60005160e01c6308c379a081146125cc576000915050612648565b60043d036004833e81513d602482011167ffffffffffffffff821117156125f857600092505050612648565b808301805167ffffffffffffffff81111561261a576000945050505050612648565b8060208301013d860181111561263857600095505050505050612648565b601f01601f191660405250925050505b80612653575061269c565b826001600160a01b03167fd7bc86ff5d08c8ab043edec743302aba2520e6635172a428bc956721db9e2d1c838360405161268e929190613d95565b60405180910390a250612711565b3d8080156126c6576040519150601f19603f3d011682016040523d82523d6000602084013e6126cb565b606091505b50826001600160a01b03167fd7bc86ff5d08c8ab043edec743302aba2520e6635172a428bc956721db9e2d1c8383604051612707929190613d95565b60405180910390a2505b610d1d565b6000816040516020016127299190613593565b60405160208183030381529060405280519060200120836040516020016127509190613593565b604051602081830303815290604052805190602001201490505b92915050565b015190565b8082015160009060ff81161561278f576001915081612795565b60009150815b505092915050565b60408051600480825260a0820190925260009160609190816020015b60608152602001906001900390816127b95750506040805160208082528183019092529192506060919080820181803683370190505090506127fe85600001516122f3565b8260008151811061280b57fe5b60200260200101819052506128266020866020015183612de8565b61282f8161230e565b8260018151811061283c57fe5b602002602001018190525061285485604001516122f3565b8260028151811061286157fe5b602002602001018190525061287c6020866060015183612de8565b6128858161230e565b8260038151811061289257fe5b60200260200101819052506128b860206128ab84612364565b8051906020012083612de8565b6040805160b080825260e082019092526060916020820181803683370190505090506128e8818360006020612df8565b6128fa81876080015160206060612df8565b612908818660806030612df8565b604080516001808252818301909252606091602082018180368337019050509050815160016020830182602086016066600019fa61294557600080fd5b506001612953826000612e4b565b60ff161461296857600094505050505061276a565b5060019695505050505050565b81518151600091600191811480831461299157600092506129cf565b600160208701838101602088015b6002848385100114156129ca5780518351146129be5760009650600093505b6020928301920161299f565b505050505b5090949350505050565b600081602001835110156129ec57600080fd5b50016020015190565b60408051600480825260a08201909252606091829190816020015b6060815260200190600190039081612a105790505090506124398361230e565b604080516020808252818301909252606091829190602082018180368337505050602081018490529050600067ffffffffffffffff198416612a7457506018612a98565b6fffffffffffffffffffffffffffffffff198416612a9457506010612a98565b5060005b6020811015612ace57818181518110612aad57fe5b01602001516001600160f81b03191615612ac657612ace565b600101612a98565b60008160200390506060816040519080825280601f01601f191660200182016040528015612b03576020820181803683370190505b5080830196909652508452509192915050565b6060680100000000000000008310612b405760405162461bcd60e51b81526004016105c390613875565b60408051600180825281830190925260609160208201818036833701905050905060378411612b9a5782840160f81b81600081518110612b7c57fe5b60200101906001600160f81b031916908160001a905350905061276a565b6060612ba585612a30565b90508381510160370160f81b82600081518110612bbe57fe5b60200101906001600160f81b031916908160001a905350612bdf8282612be8565b95945050505050565b6060806040519050835180825260208201818101602087015b81831015612c19578051835260209283019201612c01565b50855184518101855292509050808201602086015b81831015612c46578051835260209283019201612c2e565b508651929092011591909101601f01601f191660405250905092915050565b60408051600560a21b83186014820152603481019091526060906123ee8161230e565b612c90613038565b506040805180820190915281518152602082810190820152919050565b612cb5613018565b612cbe82612e67565b612cc757600080fd5b6000612cd68360200151612ea1565b60208085015160408051808201909152868152920190820152915050919050565b6000612d01613038565b505080518051602091820151919092015191011190565b612d20613038565b612d2982612cf7565b612d3257600080fd5b60208201516000612d4282612f04565b80830160209586015260408051808201909152908152938401919091525090919050565b805160009015801590612d7b57508151602110155b612d8457600080fd5b6000612d938360200151612ea1565b90508083600001511015612db95760405162461bcd60e51b81526004016105c390613b59565b825160208085015183018051928490039291831015612ddf57826020036101000a820491505b50949350505050565b9091018181526020918201910152565b60005b81811015610b9d57838181518110612e0f57fe5b602001015160f81c60f81b858480600101955081518110612e2c57fe5b60200101906001600160f81b031916908160001a905350600101612dfb565b60008160010183511015612e5e57600080fd5b50016001015190565b8051600090612e7857506000612309565b6020820151805160001a9060c0821015612e9757600092505050612309565b5060019392505050565b8051600090811a6080811015612ebb576000915050612309565b60b8811080612ed6575060c08110801590612ed6575060f881105b15612ee5576001915050612309565b60c0811015612ef95760b519019050612309565b60f519019050612309565b80516000908190811a6080811015612f1f5760019150612fdc565b60b8811015612f3457607e1981019150612fdc565b60c0811015612f8557600060b78203600186019550806020036101000a865104915060018101820193505080831015612f7f5760405162461bcd60e51b81526004016105c3906139e4565b50612fdc565b60f8811015612f9a5760be1981019150612fdc565b600060f78203600186019550806020036101000a8651049150600181018201935050808310156127955760405162461bcd60e51b81526004016105c3906139e4565b5092915050565b604051806060016040528060008152602001600081526020016000151581525090565b60408051602081019091526000815290565b604051806040016040528061302b613038565b8152602001600081525090565b604051806040016040528060008152602001600081525090565b600082601f830112613062578081fd5b815161307561307082613e4e565b613e27565b818152915060208083019084810160005b848110156130eb578151870188603f8201126130a157600080fd5b838101516130b161307082613e6e565b81815260408b818486010111156130c757600080fd5b6130d683888401838701613e92565b50865250509282019290820190600101613086565b505050505092915050565b60008083601f840112613107578182fd5b50813567ffffffffffffffff81111561311e578182fd5b60208301915083602082850101111561313657600080fd5b9250929050565b600082601f83011261314d578081fd5b813561315b61307082613e6e565b915080825283602082850101111561317257600080fd5b8060208401602084013760009082016020015292915050565b600060a0828403121561319c578081fd5b6131a660a0613e27565b905081358152602082013560208201526040820135604082015260608201356060820152608082013567ffffffffffffffff8111156131e457600080fd5b6131f08482850161313d565b60808301525092915050565b60006020828403121561320d578081fd5b81356123ee81613ebe565b600060208284031215613229578081fd5b81516123ee81613ebe565b60008060408385031215613246578081fd5b823561325181613ebe565b946020939093013593505050565b60008060408385031215613271578182fd5b825167ffffffffffffffff80821115613288578384fd5b81850186601f820112613299578485fd5b805192506132a961307084613e4e565b80848252602080830192508084018a8283890287010111156132c9578889fd5b8894505b868510156132f45780516132e081613ebe565b8452600194909401939281019281016132cd565b50880151909650935050508082111561330b578283fd5b5061331885828601613052565b9150509250929050565b600060208284031215613333578081fd5b815180151581146123ee578182fd5b60008060408385031215613354578182fd5b823567ffffffffffffffff8082111561336b578384fd5b6133778683870161313d565b9350602085013591508082111561338c578283fd5b506133188582860161313d565b600080600080604085870312156133ae578182fd5b843567ffffffffffffffff808211156133c5578384fd5b6133d1888389016130f6565b909650945060208701359150808211156133e9578384fd5b506133f6878288016130f6565b95989497509550505050565b600060208284031215613413578081fd5b813567ffffffffffffffff8082111561342a578283fd5b8184016060818703121561343c578384fd5b6134466060613e27565b9250803582811115613456578485fd5b6134628782840161318b565b845250602081013582811115613476578485fd5b6134828782840161318b565b602085015250604081013582811115613499578485fd5b6134a58782840161313d565b6040850152509195945050505050565b6000602082840312156134c6578081fd5b5035919050565b6000602082840312156134de578081fd5b5051919050565b6000806000604084860312156134f9578081fd5b833560ff81168114613509578182fd5b9250602084013567ffffffffffffffff811115613524578182fd5b613530868287016130f6565b9497909650939450505050565b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b6000815180845261357f816020860160208601613e92565b601f01601f19169290920160200192915050565b600082516135a5818460208701613e92565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b901515815260200190565b6000602082526123ee6020830184613567565b60006040825261360e60408301868861353d565b828103602084015261362181858761353d565b979650505050505050565b6020808252602a908201527f6c656e677468206f66206d616c6963696f7573566f7465536c61736853636f706040820152690ca40dad2e6dac2e8c6d60b31b606082015260800190565b60208082526010908201526f195d9a59195b98d9481d1bdbc81bdb1960821b604082015260600190565b6020808252818101527f6d616c6963696f757320766f746520736c617368206e6f7420656e61626c6564604082015260600190565b6020808252601690820152751d985b1a59185d1bdc881b9bdd081b5a59dc985d195960521b604082015260600190565b60208082526019908201527f74686520636f6e7472616374206e6f7420696e69742079657400000000000000604082015260600190565b6020808252602b908201527f746865206d616c6963696f757320766f746520736c6173682073636f7065206f60408201526a7574206f662072616e676560a81b606082015260800190565b6020808252601a908201527f6e6f2076696f6c6174696f6e206f6620766f74652072756c6573000000000000604082015260600190565b6020808252818101527f7468652066656c6f6e795468726573686f6c64206f7574206f662072616e6765604082015260600190565b6020808252602b908201527f6c656e677468206f6620656e61626c654d616c6963696f7573566f7465536c6160408201526a0e6d040dad2e6dac2e8c6d60ab1b606082015260800190565b60208082526017908201527f766572696679207369676e6174757265206661696c6564000000000000000000604082015260600190565b6020808252600e908201526d696e70757420746f6f206c6f6e6760901b604082015260600190565b60208082526019908201527f7372634e756d20626967676572207468616e207461724e756d00000000000000604082015260600190565b6020808252602c908201527f7468652066696e616c69747920736c6173682072657761726420726174696f2060408201526b6f7574206f662072616e676560a01b606082015260800190565b60208082526027908201527f6c656e677468206f66206d697364656d65616e6f725468726573686f6c64206d6040820152660d2e6dac2e8c6d60cb1b606082015260800190565b60208082526013908201527274776f206964656e746963616c20766f74657360681b604082015260600190565b60208082526030908201527f746865206d6573736167652073656e646572206d7573742062652076616c696460408201526f185d1bdc94d95d0818dbdb9d1c9858dd60821b606082015260800190565b6020808252601190820152706164646974696f6e206f766572666c6f7760781b604082015260600190565b6020808252601490820152736761737072696365206973206e6f74207a65726f60601b604082015260600190565b6020808252601590820152741d9bdd195059191c881a5cc81b9bdd08199bdd5b99605a1b604082015260600190565b6020808252602e908201527f746865206d6573736167652073656e646572206d75737420626520676f76657260408201526d1b985b98d94818dbdb9d1c9858dd60921b606082015260800190565b60208082526022908201527f6c656e677468206f662066656c6f6e795468726573686f6c64206d69736d61746040820152610c6d60f31b606082015260800190565b60208082526019908201527f74686520636f6e747261637420616c726561647920696e697400000000000000604082015260600190565b6020808252600c908201526b32b6b83a3c903432b0b232b960a11b604082015260600190565b6020808252601a908201527f6c656e677468206973206c657373207468616e206f6666736574000000000000604082015260600190565b60208082526025908201527f746865206d697364656d65616e6f725468726573686f6c64206f7574206f662060408201526472616e676560d81b606082015260800190565b6020808252602f908201527f746865206d6573736167652073656e646572206d7573742062652063726f737360408201526e0818da185a5b8818dbdb9d1c9858dd608a1b606082015260800190565b6020808252602d908201527f746865206d6573736167652073656e646572206d75737420626520746865206260408201526c3637b1b590383937b23ab1b2b960991b606082015260800190565b6020808252600d908201526c756e6b6e6f776e20706172616d60981b604082015260600190565b6020808252601490820152731d185c99d95d08189b1bd8dac81d1bdbc81bdb1960621b604082015260600190565b6020808252601e908201527f7265636569766520756e65787065637465642073796e207061636b6167650000604082015260600190565b6020808252602b908201527f6c656e677468206f662066696e616c697479536c61736852657761726452617460408201526a0d2de40dad2e6dac2e8c6d60ab1b606082015260800190565b6020808252818101527f63616e206e6f7420736c61736820747769636520696e206f6e6520626c6f636b604082015260600190565b61ffff91909116815260200190565b90815260200190565b600083825260406020830152613dae6040830184613567565b949350505050565b918252602082015260400190565b92835260208301919091521515604082015260600190565b63ffffffff91909116815260200190565b60ff91909116815260200190565b600060ff8516825260606020830152613e176060830185613567565b9050826040830152949350505050565b60405181810167ffffffffffffffff81118282101715613e4657600080fd5b604052919050565b600067ffffffffffffffff821115613e64578081fd5b5060209081020190565b600067ffffffffffffffff821115613e84578081fd5b50601f01601f191660200190565b60005b83811015613ead578181015183820152602001613e95565b83811115611e3f5750506000910152565b6001600160a01b0381168114613ed357600080fd5b5056fea164736f6c6343000604000a", }, { ContractAddr: common.HexToAddress(StakingContract), CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/cfc0bd1127186a917ddc38fd38d22903034d3f0b", - Code: "6080604052600436106103a65760003560e01c8063718a8aa8116101e7578063b88a802f1161010d578063dc927faf116100a0578063f9a2bbc71161006f578063f9a2bbc714610ca0578063fa03f79714610cb5578063fc3e590814610692578063fd6a687914610cca576103ad565b8063dc927faf14610c1c578063df8079e914610c31578063edc1a5b014610c46578063f45fd80b14610c5b576103ad565b8063c81b1662116100dc578063c81b166214610b47578063c8509d8114610b5c578063d61b9b9314610be1578063d7ecfcb61461083a576103ad565b8063b88a802f14610acd578063baaafd3b14610ae2578063bf8546ca14610af7578063c2117d8214610b32576103ad565b80639dc0926211610185578063aad5606311610154578063aad56063146109c3578063ab51bb96146109d8578063ac431751146109ed578063b14315df14610ab8576103ad565b80639dc092621461095b578063a1a11bf514610970578063a78abc1614610985578063aa82dce1146109ae576103ad565b80637942fd05116101c15780637942fd05146108ac578063831d65d1146108c157806392b888a41461063e57806396713da914610946576103ad565b8063718a8aa81461084f57806375aca5931461086457806375d47a0a14610897576103ad565b8063413d9c3a116102cc5780635d17c8bd1161026a5780636bd8f804116102395780636bd8f804146107bc5780636e47b482146107f25780636fb7f7eb1461080757806370fd5bad1461083a576103ad565b80635d17c8bd146107685780635d499b1b1461077d57806362b171d21461079257806369b635b6146107a7576103ad565b80634bf6c882116102a65780634bf6c882146106fd5780634d99dd161461071257806351e806721461073e578063552aaf9314610753576103ad565b8063413d9c3a146106a757806343756e5c146106bc578063493279b1146106d1576103ad565b806311fe9ec611610344578063333ad3e711610313578063333ad3e71461066857806334c433541461067d5780633dffc3871461063e5780633fdfa7e414610692576103ad565b806311fe9ec6146105e0578063151817e31461061357806317c9efb01461063e5780632fdeb11114610653576103ad565b80630bee7a67116103805780630bee7a67146104725780630c795715146104a05780630e2374a5146104b55780631182b875146104e6576103ad565b8063026e402b146103b257806302985992146103e0578063047636d114610407576103ad565b366103ad57005b600080fd5b6103de600480360360408110156103c857600080fd5b506001600160a01b038135169060200135610cdf565b005b3480156103ec57600080fd5b506103f5610d1c565b60408051918252519081900360200190f35b34801561041357600080fd5b5061043a6004803603602081101561042a57600080fd5b50356001600160a01b0316610d22565b6040518082606080838360005b8381101561045f578181015183820152602001610447565b5050505090500191505060405180910390f35b34801561047e57600080fd5b50610487610d76565b6040805163ffffffff9092168252519081900360200190f35b3480156104ac57600080fd5b506103f5610d7b565b3480156104c157600080fd5b506104ca610d81565b604080516001600160a01b039092168252519081900360200190f35b3480156104f257600080fd5b5061056b6004803603604081101561050957600080fd5b60ff8235169190810190604081016020820135600160201b81111561052d57600080fd5b82018360208201111561053f57600080fd5b803590602001918460018302840111600160201b8311171561056057600080fd5b509092509050610d87565b6040805160208082528351818301528351919283929083019185019080838360005b838110156105a557818101518382015260200161058d565b50505050905090810190601f1680156105d25780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156105ec57600080fd5b506103f56004803603602081101561060357600080fd5b50356001600160a01b0316610f43565b34801561061f57600080fd5b50610628610f5e565b6040805160ff9092168252519081900360200190f35b34801561064a57600080fd5b50610628610f63565b34801561065f57600080fd5b506103f5610f68565b34801561067457600080fd5b50610487610f6e565b34801561068957600080fd5b506103f5610f73565b34801561069e57600080fd5b50610628610f7e565b3480156106b357600080fd5b506103f5610f83565b3480156106c857600080fd5b506104ca610f8a565b3480156106dd57600080fd5b506106e6610f90565b6040805161ffff9092168252519081900360200190f35b34801561070957600080fd5b50610628610f95565b6103de6004803603604081101561072857600080fd5b506001600160a01b038135169060200135610f9a565b34801561074a57600080fd5b506104ca6115c7565b34801561075f57600080fd5b506106286115cd565b34801561077457600080fd5b506103f56115d2565b34801561078957600080fd5b506103f56115d8565b34801561079e57600080fd5b506103f56115e1565b3480156107b357600080fd5b506103f5611781565b6103de600480360360608110156107d257600080fd5b506001600160a01b03813581169160208101359091169060400135610cdf565b3480156107fe57600080fd5b506104ca611787565b34801561081357600080fd5b506103f56004803603602081101561082a57600080fd5b50356001600160a01b031661178d565b34801561084657600080fd5b506106286117a8565b34801561085b57600080fd5b506106286117ad565b34801561087057600080fd5b506103f56004803603602081101561088757600080fd5b50356001600160a01b03166117b2565b3480156108a357600080fd5b506104ca6117cd565b3480156108b857600080fd5b506106286117d3565b3480156108cd57600080fd5b506103de600480360360408110156108e457600080fd5b60ff8235169190810190604081016020820135600160201b81111561090857600080fd5b82018360208201111561091a57600080fd5b803590602001918460018302840111600160201b8311171561093b57600080fd5b5090925090506117d8565b34801561095257600080fd5b50610628611aa0565b34801561096757600080fd5b506104ca611aa5565b34801561097c57600080fd5b506104ca611aab565b34801561099157600080fd5b5061099a611ab1565b604080519115158252519081900360200190f35b3480156109ba57600080fd5b506104ca611aba565b3480156109cf57600080fd5b506104ca611ac0565b3480156109e457600080fd5b506104876115cd565b3480156109f957600080fd5b506103de60048036036040811015610a1057600080fd5b810190602081018135600160201b811115610a2a57600080fd5b820183602082011115610a3c57600080fd5b803590602001918460018302840111600160201b83111715610a5d57600080fd5b919390929091602081019035600160201b811115610a7a57600080fd5b820183602082011115610a8c57600080fd5b803590602001918460018302840111600160201b83111715610aad57600080fd5b509092509050611ac6565b348015610ac457600080fd5b50610628612258565b348015610ad957600080fd5b506103f561225d565b348015610aee57600080fd5b506103f56123fa565b348015610b0357600080fd5b506103f560048036036040811015610b1a57600080fd5b506001600160a01b0381358116916020013516612405565b348015610b3e57600080fd5b506103f5612432565b348015610b5357600080fd5b506104ca612438565b348015610b6857600080fd5b506103de60048036036040811015610b7f57600080fd5b60ff8235169190810190604081016020820135600160201b811115610ba357600080fd5b820183602082011115610bb557600080fd5b803590602001918460018302840111600160201b83111715610bd657600080fd5b50909250905061243e565b348015610bed57600080fd5b506103f560048036036040811015610c0457600080fd5b506001600160a01b0381358116916020013516612661565b348015610c2857600080fd5b506104ca61268c565b348015610c3d57600080fd5b506104ca612692565b348015610c5257600080fd5b506103f5612698565b348015610c6757600080fd5b506103f560048036036060811015610c7e57600080fd5b506001600160a01b0381358116916020810135821691604090910135166126a5565b348015610cac57600080fd5b506104ca6126da565b348015610cc157600080fd5b506103f56126e0565b348015610cd657600080fd5b506104ca6126e6565b6040805162461bcd60e51b815260206004820152600d60248201526c1b9bdd081cdd5c1c1bdc9d1959609a1b604482015290519081900360640190fd5b60035481565b610d2a614621565b610d32614621565b6001600160a01b0383166000818152600b60209081526040808320548552838352600c82528083205485830152928252600d9052819020549082015290505b919050565b606481565b6108fc81565b61200181565b60603361200014610dc95760405162461bcd60e51b815260040180806020018281038252602f815260200180614804602f913960400191505060405180910390fd5b60005460ff16610e0c576638d7ea4c6800006001908155662386f26fc1000060025568056bc75e2d631000006003556108fc6011556000805460ff191690911790555b610e1461463f565b610e5b610e5685858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506126ec92505050565b612711565b90506000610e70610e6b8361275b565b6127a9565b90506000606060ff831660041415610e9557610e8b84612860565b9092509050610eec565b60ff831660051415610eaa57610e8b84612a40565b6040805162461bcd60e51b8152602060048201526012602482015271756e6b6e6f776e206576656e74207479706560701b604482015290519081900360640190fd5b63ffffffff821615610f38576040805163ffffffff84168152905160ff8516917f391d6e5ea6ab6c49b9a0abb1782cae5def8d711f973b00c729658c0b2a80b31b919081900360200190a25b979650505050505050565b6001600160a01b031660009081526006602052604090205490565b600581565b600181565b60015481565b606581565b662386f26fc1000081565b600381565b620a8c0081565b61100181565b603881565b600881565b60105460ff1660021415610fe6576040805162461bcd60e51b815260206004820152600e60248201526d4e6f2072652d656e7472616e637960901b604482015290519081900360640190fd5b6010805460ff19166002179055806402540be400340615801561100e57506402540be4008106155b61105f576040805162461bcd60e51b815260206004820152601c60248201527f707265636973696f6e206c6f737320696e20636f6e76657273696f6e00000000604482015290519081900360640190fd5b60005460ff166110a2576638d7ea4c6800006001908155662386f26fc1000060025568056bc75e2d631000006003556108fc6011556000805460ff191690911790555b6001543410156110f0576040805162461bcd60e51b81526020600482015260146024820152736e6f7420656e6f7567682072656c61792066656560601b604482015290519081900360640190fd5b6003548210156111ab573360009081526005602090815260408083206001600160a01b03871684529091529020548214611162576040805162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a5908185b5bdd5b9d60921b604482015290519081900360640190fd5b60025482116111ab576040805162461bcd60e51b815260206004820152601060248201526f6e6f7420656e6f7567682066756e647360801b604482015290519081900360640190fd5b3360009081526007602090815260408083206001600160a01b0387168452909152902054421015611223576040805162461bcd60e51b815260206004820152601a60248201527f70656e64696e6720756e64656c65676174696f6e206578697374000000000000604482015290519081900360640190fd5b604080518082018252601081526f6e6f7420656e6f7567682066756e647360801b602080830191909152336000908152600582528381206001600160a01b03881682529091529182205461127e91859063ffffffff612c5c16565b905080156112c65760025481116112c65760405162461bcd60e51b81526004018080602001828103825260258152602001806147df6025913960400191505060405180910390fd5b60006112dd846402540be40063ffffffff612cf316565b60025490915034906000906112f990839063ffffffff612d3c16565b6040805160038082526080820190925291925060609190816020015b606081526020019060019003908161131557905050905061133533612d7e565b8160008151811061134257fe5b602002602001018190525061135f886001600160a01b0316612d7e565b8160018151811061136c57fe5b602002602001018190525061138084612da1565b8160028151811061138d57fe5b602002602001018190525060606113ad60026113a884612db4565b612e3e565b8051602080830191909120600f80546000908152600a845260408082209390935581546001908101909255338152600c90935291208054909101905590506113fe42620a8c0063ffffffff612ec416565b3360009081526007602090815260408083206001600160a01b038e16845290915290205561200063f7a251d7601083611442876402540be40063ffffffff612cf316565b6040518463ffffffff1660e01b8152600401808460ff1660ff16815260200180602001838152602001828103825284818151815260200191508051906020019080838360005b838110156114a0578181015183820152602001611488565b50505050905090810190601f1680156114cd5780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b1580156114ee57600080fd5b505af1158015611502573d6000803e3d6000fd5b5050604051611004925085156108fc02915085906000818181858888f19350505050158015611535573d6000803e3d6000fd5b506002546040516110029180156108fc02916000818181858888f19350505050158015611566573d6000803e3d6000fd5b50604080518981526020810185905281516001600160a01b038c169233927fdf0b6ac27f3f3bb31cee3dab0f4fe40cc19c6a3f8daaec52e06b261e58a12519929081900390910190a350506010805460ff1916600117905550505050505050565b61200081565b600081565b60025481565b6402540be40081565b60105460009060ff1660021415611630576040805162461bcd60e51b815260206004820152600e60248201526d4e6f2072652d656e7472616e637960901b604482015290519081900360640190fd5b506010805460ff191660021790553360009081526008602052604090205480611697576040805162461bcd60e51b81526020600482015260146024820152736e6f20756e64656c6567617465642066756e647360601b604482015290519081900360640190fd5b336000818152600860205260408082208290556011549051919291849084818181858888f193505050503d80600081146116ed576040519150601f19603f3d011682016040523d82523d6000602084013e6116f2565b606091505b505090508061173a576040805162461bcd60e51b815260206004820152600f60248201526e1d1c985b9cd9995c8819985a5b1959608a1b604482015290519081900360640190fd5b60408051838152905133917fc712d133b8d448221aaed2198ed1f0db6dfc860fb01bc3a630916fe6cbef946f919081900360200190a2506010805460ff1916600117905590565b60035490565b61100581565b6001600160a01b031660009081526004602052604090205490565b600281565b601081565b6001600160a01b031660009081526008602052604090205490565b61100881565b600b81565b33612000146118185760405162461bcd60e51b815260040180806020018281038252602f815260200180614804602f913960400191505060405180910390fd5b60005460ff1661185b576638d7ea4c6800006001908155662386f26fc1000060025568056bc75e2d631000006003556108fc6011556000805460ff191690911790555b61186361463f565b6118a5610e5684848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506126ec92505050565b905060008060606000805b6118b986612f1e565b1561192457806118d6576118cf610e6b8761275b565b945061191c565b80600114156118f2576118eb610e6b8761275b565b935061191c565b80600214156119175761190c6119078761275b565b612f3f565b92506001915061191c565b611924565b6001016118b0565b8161196a576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b61197383612faf565b6119b6576040805162461bcd60e51b815260206004820152600f60248201526e0eee4dedcce40e0c2c6d640d0c2e6d608b1b604482015290519081900360640190fd5b6119c2610e56846126ec565b955060006119d2610e6b8861275b565b90506119dc61463f565b6119e588612f1e565b15611a0857611a01610e566119fc6119078b61275b565b6126ec565b9050611a49565b6040805162461bcd60e51b8152602060048201526011602482015270656d7074792061636b207061636b61676560781b604482015290519081900360640190fd5b60ff821660011415611a6557611a60818888613003565b611a93565b60ff821660021415611a7c57611a608188886133ba565b60ff821660031415610eaa57611a60818888613687565b5050505050505050505050565b600981565b61100781565b61100681565b60005460ff1681565b61200281565b61300081565b60005460ff16611b1d576040805162461bcd60e51b815260206004820152601960248201527f74686520636f6e7472616374206e6f7420696e69742079657400000000000000604482015290519081900360640190fd5b3361100714611b5d5760405162461bcd60e51b815260040180806020018281038252602e815260200180614755602e913960400191505060405180910390fd5b611bbe84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600a81526972656c6179657246656560b01b602082015291506139ec9050565b15611d245760208114611c18576040805162461bcd60e51b815260206004820152601d60248201527f6c656e677468206f662072656c61796572466565206d69736d61746368000000604482015290519081900360640190fd5b604080516020601f8401819004810282018101909252828152600091611c5691858580838501838280828437600092019190915250613ad392505050565b90506003548110611c985760405162461bcd60e51b815260040180806020018281038252602e815260200180614783602e913960400191505060405180910390fd5b6002548111611cd85760405162461bcd60e51b815260040180806020018281038252602e8152602001806147b1602e913960400191505060405180910390fd5b6402540be400810615611d1c5760405162461bcd60e51b815260040180806020018281038252602c815260200180614729602c913960400191505060405180910390fd5b6001556121c6565b611d8884848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600d81526c62534352656c6179657246656560981b602082015291506139ec9050565b15611eea5760208114611de2576040805162461bcd60e51b815260206004820181905260248201527f6c656e677468206f662062534352656c61796572466565206d69736d61746368604482015290519081900360640190fd5b604080516020601f8401819004810282018101909252828152600091611e2091858580838501838280828437600092019190915250613ad392505050565b905080611e5e5760405162461bcd60e51b81526004018080602001828103825260228152602001806148336022913960400191505060405180910390fd5b6001548110611e9e5760405162461bcd60e51b815260040180806020018281038252602e8152602001806146a9602e913960400191505060405180910390fd5b6402540be400810615611ee25760405162461bcd60e51b815260040180806020018281038252602f81526020018061467a602f913960400191505060405180910390fd5b6002556121c6565b611f4e84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600d81526c36b4b72232b632b3b0ba34b7b760991b602082015291506139ec9050565b156120305760208114611fa8576040805162461bcd60e51b815260206004820181905260248201527f6c656e677468206f66206d696e44656c65676174696f6e206d69736d61746368604482015290519081900360640190fd5b604080516020601f8401819004810282018101909252828152600091611fe691858580838501838280828437600092019190915250613ad392505050565b905060015481116120285760405162461bcd60e51b81526004018080602001828103825260318152602001806146d76031913960400191505060405180910390fd5b6003556121c6565b61209284848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600b81526a7472616e7366657247617360a81b602082015291506139ec9050565b1561218957602081146120ec576040805162461bcd60e51b815260206004820152601e60248201527f6c656e677468206f66207472616e73666572476173206d69736d617463680000604482015290519081900360640190fd5b604080516020601f840181900481028201810190925282815260009161212a91858580838501838280828437600092019190915250613ad392505050565b905060008111612181576040805162461bcd60e51b815260206004820152601e60248201527f746865207472616e736665724761732063616e6e6f74206265207a65726f0000604482015290519081900360640190fd5b6011556121c6565b6040805162461bcd60e51b815260206004820152600d60248201526c756e6b6e6f776e20706172616d60981b604482015290519081900360640190fd5b7f6cdb0ac70ab7f2e2d035cca5be60d89906f2dede7648ddbd7402189c1eeed17a848484846040518080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600083820152604051601f909101601f19169092018290039850909650505050505050a150505050565b600481565b60105460009060ff16600214156122ac576040805162461bcd60e51b815260206004820152600e60248201526d4e6f2072652d656e7472616e637960901b604482015290519081900360640190fd5b506010805460ff191660021790553360009081526006602052604090205480612310576040805162461bcd60e51b81526020600482015260116024820152701b9bc81c195b991a5b99c81c995dd85c99607a1b604482015290519081900360640190fd5b336000818152600660205260408082208290556011549051919291849084818181858888f193505050503d8060008114612366576040519150601f19603f3d011682016040523d82523d6000602084013e61236b565b606091505b50509050806123b3576040805162461bcd60e51b815260206004820152600f60248201526e1d1c985b9cd9995c8819985a5b1959608a1b604482015290519081900360640190fd5b60408051838152905133917f83b78188b13346b2ffb484da70d42ee27de7fbf9f2bd8045269e10ed643ccd76919081900360200190a2506010805460ff1916600117905590565b6638d7ea4c68000081565b6001600160a01b038083166000908152600760209081526040808320938516835292905220545b92915050565b60015490565b61100281565b336120001461247e5760405162461bcd60e51b815260040180806020018281038252602f815260200180614804602f913960400191505060405180910390fd5b60005460ff166124c1576638d7ea4c6800006001908155662386f26fc1000060025568056bc75e2d631000006003556108fc6011556000805460ff191690911790555b61250082828080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612faf92505050565b612543576040805162461bcd60e51b815260206004820152600f60248201526e0eee4dedcce40e0c2c6d640d0c2e6d608b1b604482015290519081900360640190fd5b61254b61463f565b61258d610e5684848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506126ec92505050565b9050600061259d610e6b8361275b565b90506125a761463f565b6125b083612f1e565b156125ce576125c7610e566119fc6119078661275b565b9050612614565b6040805162461bcd60e51b8152602060048201526016602482015275656d707479206661696c2061636b207061636b61676560501b604482015290519081900360640190fd5b60ff82166001141561262e5761262981613ad8565b612658565b60ff8216600214156126435761262981613cf2565b60ff821660031415610eaa5761262981613e1c565b5050505b505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b61100381565b61200481565b68056bc75e2d6310000081565b6001600160a01b0392831660009081526009602090815260408083209486168352938152838220929094168152925290205490565b61100081565b60115481565b61100481565b6126f461465f565b506040805180820190915281518152602082810190820152919050565b61271961463f565b61272282613f81565b61272b57600080fd5b600061273a8360200151613fbb565b60208085015160408051808201909152868152920190820152915050919050565b61276361465f565b61276c82612f1e565b61277557600080fd5b602082015160006127858261401e565b80830160209586015260408051808201909152908152938401919091525090919050565b8051600090158015906127be57508151602110155b6127c757600080fd5b60006127d68360200151613fbb565b90508083600001511015612831576040805162461bcd60e51b815260206004820152601a60248201527f6c656e677468206973206c657373207468616e206f6666736574000000000000604482015290519081900360640190fd5b82516020808501518301805192849003929183101561285757826020036101000a820491505b50949350505050565b600060606000806000805b61287487612f1e565b156128c657826128965761288f61288a8861275b565b614151565b91506128bb565b82600114156128b6576128ab610e6b8861275b565b9050600193506128bb565b6128c6565b82600101925061286b565b8361290c576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b60006110046001600160a01b031663727be1f8836040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b15801561295657600080fd5b505af115801561296a573d6000803e3d6000fd5b505050506040513d602081101561298057600080fd5b50519050806129a55761299760048484606561416b565b965096505050505050612a3b565b6001600160a01b0383166000908152600660205260409020546129ce908363ffffffff612ec416565b6001600160a01b038416600081815260066020908152604091829020939093558051858152905191927f7cc266c7b444f808013fa187f7b904d470a051a6564e78f482aa496581ba4bf892918290030190a260408051600080825260208201909252909750955050505050505b915091565b6000606060008060008060005b612a5688612f1e565b15612abf5783612a7357612a6c61288a8961275b565b9250612ab4565b8360011415612a8f57612a8861288a8961275b565b9150612ab4565b8360021415612aaf57612aa4610e6b8961275b565b905060019450612ab4565b612abf565b836001019350612a4d565b84612b05576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b60006110046001600160a01b031663727be1f8836040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b158015612b4f57600080fd5b505af1158015612b63573d6000803e3d6000fd5b505050506040513d6020811015612b7957600080fd5b5051905080612b9f57612b9060058584606561416b565b97509750505050505050612a3b565b6001600160a01b038085166000818152600760209081526040808320948816835293815283822082905591815260089091522054612be3908363ffffffff612ec416565b6001600160a01b0380861660008181526008602090815260409182902094909455805186815290519287169391927f35a799836f74fac7eccf5c73902823b970543d2274d3b93d8da3d37a255772a2929181900390910190a3604080516000808252602082019092529098509650505050505050915091565b60008184841115612ceb5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612cb0578181015183820152602001612c98565b50505050905090810190601f168015612cdd5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000612d3583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614267565b9392505050565b6000612d3583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612c5c565b60408051600560a21b8318601482015260348101909152606090612d35816142cc565b606061242c612daf83614322565b6142cc565b6060815160001415612dd55750604080516000815260208101909152610d71565b606082600081518110612de457fe5b602002602001015190506000600190505b8351811015612e2557612e1b82858381518110612e0e57fe5b6020026020010151614408565b9150600101612df5565b50612d35612e38825160c060ff16614485565b82614408565b6040805160028082526060828101909352829190816020015b6060815260200190600190039081612e57579050509050612e7a8460ff16612da1565b81600081518110612e8757fe5b6020026020010181905250612e9b836142cc565b81600181518110612ea857fe5b6020026020010181905250612ebc81612db4565b949350505050565b600082820183811015612d35576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000612f2861465f565b505080518051602091820151919092015191011190565b8051606090612f4d57600080fd5b6000612f5c8360200151613fbb565b83516040805191839003808352601f19601f8201168301602001909152919250606090828015612f93576020820181803683370190505b509050600081602001905061285784876020015101828561457d565b8051602080830191909120600e546000908152600a9092526040822054808214612fde57600092505050610d71565b5050600e80546000908152600a60205260408120558054600190810190915592915050565b60008060008060005b61301588612f1e565b1561307e57836130325761302b61288a8961275b565b9250613073565b836001141561304e5761304761288a8961275b565b9150613073565b836002141561306e57613063610e6b8961275b565b905060019450613073565b61307e565b83600101935061300c565b846130c4576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b60006130db826402540be40063ffffffff6145c816565b6001600160a01b0385166000908152600b602052604090208054600019019055905060ff8816600114156132215760ff87161561314e576040805162461bcd60e51b815260206004820152600c60248201526b77726f6e672073746174757360a01b604482015290519081900360640190fd5b6001600160a01b038416600090815260046020526040902054613177908263ffffffff612ec416565b6001600160a01b038086166000908152600460209081526040808320949094556005815283822092871682529190915220546131b9908263ffffffff612ec416565b6001600160a01b038086166000818152600560209081526040808320948916808452948252918290209490945580518581529051929391927f9a57c81564ab02642f34fd87e41baa9b074c18342cec3b7268b62bf752018fd1929181900390910190a36133af565b60ff8816613373576001600160a01b038416600090815260086020526040902054613252908263ffffffff612ec416565b6001600160a01b0385166000908152600860209081526040808320939093558251630e4f7c3f60e31b81526004810185905292516110049363727be1f89360248083019493928390030190829087803b1580156132ae57600080fd5b505af11580156132c2573d6000803e3d6000fd5b505050506040513d60208110156132d857600080fd5b5051613321576040805162461bcd60e51b81526020600482015260136024820152721dda5d1a191c985dc8189b988819985a5b1959606a1b604482015290519081900360640190fd5b6040805182815260ff8916602082015281516001600160a01b0380871693908816927fcbd481ae600289fad8c0484d07ce0ffe4f010d7c844ecfdeaf2a13fead52886e929081900390910190a36133af565b6040805162461bcd60e51b815260206004820152600c60248201526b77726f6e672073746174757360a01b604482015290519081900360640190fd5b505050505050505050565b60008060008060005b6133cc88612f1e565b1561343557836133e9576133e261288a8961275b565b925061342a565b8360011415613405576133fe61288a8961275b565b915061342a565b83600214156134255761341a610e6b8961275b565b90506001945061342a565b613435565b8360010193506133c3565b8461347b576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b6000613492826402540be40063ffffffff6145c816565b6001600160a01b0385166000908152600c602052604090208054600019019055905060ff8816600114156136115760ff871615613505576040805162461bcd60e51b815260206004820152600c60248201526b77726f6e672073746174757360a01b604482015290519081900360640190fd5b6001600160a01b03841660009081526004602052604090205461352e908263ffffffff612d3c16565b6001600160a01b03808616600090815260046020908152604080832094909455600581528382209287168252919091522054613570908263ffffffff612d3c16565b6001600160a01b038086166000908152600560209081526040808320938816835292905220556135a942620a8c0063ffffffff612ec416565b6001600160a01b038086166000818152600760209081526040808320948916808452948252918290209490945580518581529051929391927fd6f878a5bcbbe79a64e6418bb0d56aaa20b9a60587d45749819df88dfc7c3c44929181900390910190a36133af565b60ff8816613373576001600160a01b03808516600081815260076020908152604080832094881680845294825280832092909255815185815260ff8c169181019190915281517f4417d10c1e33efa83a770b8d4f47176e78c08c1298d534901ad3b16bb585fa2e929181900390910190a36133af565b6000806000806000805b61369a89612f1e565b1561371f57846136b7576136b061288a8a61275b565b9350613714565b84600114156136d3576136cc61288a8a61275b565b9250613714565b84600214156136ef576136e861288a8a61275b565b9150613714565b846003141561370f57613704610e6b8a61275b565b905060019550613714565b61371f565b846001019450613691565b85613765576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b600061377c826402540be40063ffffffff6145c816565b6001600160a01b0386166000908152600d602052604090208054600019019055905060ff89166001141561394f5760ff8816156137ef576040805162461bcd60e51b815260206004820152600c60248201526b77726f6e672073746174757360a01b604482015290519081900360640190fd5b6001600160a01b03808616600090815260056020908152604080832093881683529290522054613825908263ffffffff612d3c16565b6001600160a01b038681166000908152600560209081526040808320898516845290915280822093909355908516815220546138619082612ec4565b6001600160a01b0380871660009081526005602090815260408083209388168352929052205561389a42620a8c0063ffffffff612ec416565b6001600160a01b03808716600090815260096020908152604080832089851684528252808320938816835292905220556138dd42620a8c0063ffffffff612ec416565b6001600160a01b038087166000818152600960209081526040808320898616808552908352818420958b1680855295835292819020959095558451868152945191947f78bffae3f8c6691ac7fc1a3bff800cb2d612f5ad9ae5b0444cfe2eb15c189e18929081900390910190a46139e0565b60ff8916613373576001600160a01b038581166000818152600960209081526040808320898616808552818452828520968a16808652968452828520859055908352818420818552835281842093909355805186815260ff8e169281019290925280519293927fb93bee5c59f85ede6b074a99f4ffcd3e3fc0d5c3d8156de331de89a49e0ce77c9281900390910190a45b50505050505050505050565b6000816040516020018082805190602001908083835b60208310613a215780518252601f199092019160209182019101613a02565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405280519060200120836040516020018082805190602001908083835b60208310613a8f5780518252601f199092019160209182019101613a70565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040528051906020012014905092915050565b015190565b60008060008060005b613aea86612f1e565b15613b535783613b0757613b0061288a8761275b565b9250613b48565b8360011415613b2357613b1c61288a8761275b565b9150613b48565b8360021415613b4357613b38610e6b8761275b565b905060019450613b48565b613b53565b836001019350613ae1565b84613b99576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b6000613bb0826402540be40063ffffffff6145c816565b6001600160a01b0385166000908152600b6020908152604080832080546000190190556008909152902054909150613bee908263ffffffff612ec416565b6001600160a01b0385166000908152600860209081526040808320939093558251630e4f7c3f60e31b81526004810185905292516110049363727be1f89360248083019493928390030190829087803b158015613c4a57600080fd5b505af1158015613c5e573d6000803e3d6000fd5b505050506040513d6020811015613c7457600080fd5b5051613cbd576040805162461bcd60e51b81526020600482015260136024820152721dda5d1a191c985dc8189b988819985a5b1959606a1b604482015290519081900360640190fd5b6040516001907ff83de021914a4585482db5ca47d520a5657165b443fa2c7ef8ed4635f054da9b90600090a250505050505050565b60008060008060005b613d0486612f1e565b15613d6d5783613d2157613d1a61288a8761275b565b9250613d62565b8360011415613d3d57613d3661288a8761275b565b9150613d62565b8360021415613d5d57613d52610e6b8761275b565b905060019450613d62565b613d6d565b836001019350613cfb565b84613db3576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b6001600160a01b038084166000908152600c60209081526040808320805460001901905560078252808320938616835292905281812081905590516002917ff83de021914a4585482db5ca47d520a5657165b443fa2c7ef8ed4635f054da9b91a2505050505050565b6000806000806000805b613e2f87612f1e565b15613eb45784613e4c57613e4561288a8861275b565b9350613ea9565b8460011415613e6857613e6161288a8861275b565b9250613ea9565b8460021415613e8457613e7d61288a8861275b565b9150613ea9565b8460031415613ea457613e99610e6b8861275b565b905060019550613ea9565b613eb4565b846001019450613e26565b85613efa576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b6001600160a01b038481166000908152600d602090815260408083208054600019019055600982528083208785168085528184528285209588168552948352818420849055825280832093835292905281812081905590516003917ff83de021914a4585482db5ca47d520a5657165b443fa2c7ef8ed4635f054da9b91a250505050505050565b8051600090613f9257506000610d71565b6020820151805160001a9060c0821015613fb157600092505050610d71565b5060019392505050565b8051600090811a6080811015613fd5576000915050610d71565b60b8811080613ff0575060c08110801590613ff0575060f881105b15613fff576001915050610d71565b60c08110156140135760b519019050610d71565b60f519019050610d71565b80516000908190811a6080811015614039576001915061414a565b60b881101561404e57607e198101915061414a565b60c08110156140c857600060b78203600186019550806020036101000a8651049150600181018201935050808310156140c2576040805162461bcd60e51b81526020600482015260116024820152706164646974696f6e206f766572666c6f7760781b604482015290519081900360640190fd5b5061414a565b60f88110156140dd5760be198101915061414a565b600060f78203600186019550806020036101000a865104915060018101820193505080831015614148576040805162461bcd60e51b81526020600482015260116024820152706164646974696f6e206f766572666c6f7760781b604482015290519081900360640190fd5b505b5092915050565b805160009060151461416257600080fd5b61242c826127a9565b60006060614184846402540be40063ffffffff612cf316565b60408051600480825260a0820190925291955060609190816020015b60608152602001906001900390816141a05790505090506141c38760ff16612da1565b816000815181106141d057fe5b60200260200101819052506141ed866001600160a01b0316612d7e565b816001815181106141fa57fe5b602002602001018190525061420e85612da1565b8160028151811061421b57fe5b60200260200101819052506142358463ffffffff16612da1565b8160038151811061424257fe5b6020026020010181905250606061425882612db4565b94989497509395505050505050565b600081836142b65760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315612cb0578181015183820152602001612c98565b5060008385816142c257fe5b0495945050505050565b6060815160011480156142fe5750607f60f81b826000815181106142ec57fe5b01602001516001600160f81b03191611155b1561430a575080610d71565b61242c61431c8351608060ff16614485565b83614408565b604080516020808252818301909252606091829190602082018180368337505050602081018490529050600067ffffffffffffffff1984166143665750601861438a565b6fffffffffffffffffffffffffffffffff1984166143865750601061438a565b5060005b60208110156143c05781818151811061439f57fe5b01602001516001600160f81b031916156143b8576143c0565b60010161438a565b60008160200390506060816040519080825280601f01601f1916602001820160405280156143f5576020820181803683370190505b5080830196909652508452509192915050565b6060806040519050835180825260208201818101602087015b81831015614439578051835260209283019201614421565b50855184518101855292509050808201602086015b8183101561446657805183526020928301920161444e565b508651929092011591909101601f01601f191660405250905092915050565b60606801000000000000000083106144d5576040805162461bcd60e51b815260206004820152600e60248201526d696e70757420746f6f206c6f6e6760901b604482015290519081900360640190fd5b6040805160018082528183019092526060916020820181803683370190505090506037841161452f5782840160f81b8160008151811061451157fe5b60200101906001600160f81b031916908160001a905350905061242c565b606061453a85614322565b90508381510160370160f81b8260008151811061455357fe5b60200101906001600160f81b031916908160001a9053506145748282614408565b95945050505050565b806145875761265c565b5b602081106145a7578251825260209283019290910190601f1901614588565b915181516020939093036101000a6000190180199091169216919091179052565b6000826145d75750600061242c565b828202828482816145e457fe5b0414612d355760405162461bcd60e51b81526004018080602001828103825260218152602001806147086021913960400191505060405180910390fd5b60405180606001604052806003906020820280368337509192915050565b604051806040016040528061465261465f565b8152602001600081525090565b60405180604001604052806000815260200160008152509056fe7468652042534352656c61796572466565206d6f642074656e20646563696d616c73206d757374206265207a65726f7468652042534352656c61796572466565206d757374206265206c657373207468616e2072656c61796572466565746865206d696e44656c65676174696f6e206d7573742062652067726561746572207468616e2072656c61796572466565536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f777468652072656c61796572466565206d6f642074656e20646563696d616c73206d757374206265207a65726f746865206d6573736167652073656e646572206d75737420626520676f7665726e616e636520636f6e74726163747468652072656c61796572466565206d757374206265206c657373207468616e206d696e44656c65676174696f6e7468652072656c61796572466565206d757374206265206d6f7265207468616e2042534352656c61796572466565696e73756666696369656e742062616c616e636520616674657220756e64656c6567617465746865206d6573736167652073656e646572206d7573742062652063726f737320636861696e20636f6e74726163747468652042534352656c61796572466565206d757374206e6f74206265207a65726fa164736f6c6343000604000a", + Code: "6080604052600436106103a65760003560e01c8063718a8aa8116101e7578063b88a802f1161010d578063dc927faf116100a0578063f9a2bbc71161006f578063f9a2bbc714610ca0578063fa03f79714610cb5578063fc3e590814610692578063fd6a687914610cca576103ad565b8063dc927faf14610c1c578063df8079e914610c31578063edc1a5b014610c46578063f45fd80b14610c5b576103ad565b8063c81b1662116100dc578063c81b166214610b47578063c8509d8114610b5c578063d61b9b9314610be1578063d7ecfcb61461083a576103ad565b8063b88a802f14610acd578063baaafd3b14610ae2578063bf8546ca14610af7578063c2117d8214610b32576103ad565b80639dc0926211610185578063aad5606311610154578063aad56063146109c3578063ab51bb96146109d8578063ac431751146109ed578063b14315df14610ab8576103ad565b80639dc092621461095b578063a1a11bf514610970578063a78abc1614610985578063aa82dce1146109ae576103ad565b80637942fd05116101c15780637942fd05146108ac578063831d65d1146108c157806392b888a41461063e57806396713da914610946576103ad565b8063718a8aa81461084f57806375aca5931461086457806375d47a0a14610897576103ad565b8063413d9c3a116102cc5780635d17c8bd1161026a5780636bd8f804116102395780636bd8f804146107bc5780636e47b482146107f25780636fb7f7eb1461080757806370fd5bad1461083a576103ad565b80635d17c8bd146107685780635d499b1b1461077d57806362b171d21461079257806369b635b6146107a7576103ad565b80634bf6c882116102a65780634bf6c882146106fd5780634d99dd161461071257806351e806721461073e578063552aaf9314610753576103ad565b8063413d9c3a146106a757806343756e5c146106bc578063493279b1146106d1576103ad565b806311fe9ec611610344578063333ad3e711610313578063333ad3e71461066857806334c433541461067d5780633dffc3871461063e5780633fdfa7e414610692576103ad565b806311fe9ec6146105e0578063151817e31461061357806317c9efb01461063e5780632fdeb11114610653576103ad565b80630bee7a67116103805780630bee7a67146104725780630c795715146104a05780630e2374a5146104b55780631182b875146104e6576103ad565b8063026e402b146103b257806302985992146103e0578063047636d114610407576103ad565b366103ad57005b600080fd5b6103de600480360360408110156103c857600080fd5b506001600160a01b038135169060200135610cdf565b005b3480156103ec57600080fd5b506103f5610d1c565b60408051918252519081900360200190f35b34801561041357600080fd5b5061043a6004803603602081101561042a57600080fd5b50356001600160a01b0316610d22565b6040518082606080838360005b8381101561045f578181015183820152602001610447565b5050505090500191505060405180910390f35b34801561047e57600080fd5b50610487610d76565b6040805163ffffffff9092168252519081900360200190f35b3480156104ac57600080fd5b506103f5610d7b565b3480156104c157600080fd5b506104ca610d81565b604080516001600160a01b039092168252519081900360200190f35b3480156104f257600080fd5b5061056b6004803603604081101561050957600080fd5b60ff8235169190810190604081016020820135600160201b81111561052d57600080fd5b82018360208201111561053f57600080fd5b803590602001918460018302840111600160201b8311171561056057600080fd5b509092509050610d87565b6040805160208082528351818301528351919283929083019185019080838360005b838110156105a557818101518382015260200161058d565b50505050905090810190601f1680156105d25780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156105ec57600080fd5b506103f56004803603602081101561060357600080fd5b50356001600160a01b0316610f43565b34801561061f57600080fd5b50610628610f5e565b6040805160ff9092168252519081900360200190f35b34801561064a57600080fd5b50610628610f63565b34801561065f57600080fd5b506103f5610f68565b34801561067457600080fd5b50610487610f6e565b34801561068957600080fd5b506103f5610f73565b34801561069e57600080fd5b50610628610f7e565b3480156106b357600080fd5b506103f5610f83565b3480156106c857600080fd5b506104ca610f8a565b3480156106dd57600080fd5b506106e6610f90565b6040805161ffff9092168252519081900360200190f35b34801561070957600080fd5b50610628610f96565b6103de6004803603604081101561072857600080fd5b506001600160a01b038135169060200135610f9b565b34801561074a57600080fd5b506104ca6115c8565b34801561075f57600080fd5b506106286115ce565b34801561077457600080fd5b506103f56115d3565b34801561078957600080fd5b506103f56115d9565b34801561079e57600080fd5b506103f56115e2565b3480156107b357600080fd5b506103f5611782565b6103de600480360360608110156107d257600080fd5b506001600160a01b03813581169160208101359091169060400135610cdf565b3480156107fe57600080fd5b506104ca611788565b34801561081357600080fd5b506103f56004803603602081101561082a57600080fd5b50356001600160a01b031661178e565b34801561084657600080fd5b506106286117a9565b34801561085b57600080fd5b506106286117ae565b34801561087057600080fd5b506103f56004803603602081101561088757600080fd5b50356001600160a01b03166117b3565b3480156108a357600080fd5b506104ca6117ce565b3480156108b857600080fd5b506106286117d4565b3480156108cd57600080fd5b506103de600480360360408110156108e457600080fd5b60ff8235169190810190604081016020820135600160201b81111561090857600080fd5b82018360208201111561091a57600080fd5b803590602001918460018302840111600160201b8311171561093b57600080fd5b5090925090506117d9565b34801561095257600080fd5b50610628611aa1565b34801561096757600080fd5b506104ca611aa6565b34801561097c57600080fd5b506104ca611aac565b34801561099157600080fd5b5061099a611ab2565b604080519115158252519081900360200190f35b3480156109ba57600080fd5b506104ca611abb565b3480156109cf57600080fd5b506104ca611ac1565b3480156109e457600080fd5b506104876115ce565b3480156109f957600080fd5b506103de60048036036040811015610a1057600080fd5b810190602081018135600160201b811115610a2a57600080fd5b820183602082011115610a3c57600080fd5b803590602001918460018302840111600160201b83111715610a5d57600080fd5b919390929091602081019035600160201b811115610a7a57600080fd5b820183602082011115610a8c57600080fd5b803590602001918460018302840111600160201b83111715610aad57600080fd5b509092509050611ac7565b348015610ac457600080fd5b50610628612259565b348015610ad957600080fd5b506103f561225e565b348015610aee57600080fd5b506103f56123fb565b348015610b0357600080fd5b506103f560048036036040811015610b1a57600080fd5b506001600160a01b0381358116916020013516612406565b348015610b3e57600080fd5b506103f5612433565b348015610b5357600080fd5b506104ca612439565b348015610b6857600080fd5b506103de60048036036040811015610b7f57600080fd5b60ff8235169190810190604081016020820135600160201b811115610ba357600080fd5b820183602082011115610bb557600080fd5b803590602001918460018302840111600160201b83111715610bd657600080fd5b50909250905061243f565b348015610bed57600080fd5b506103f560048036036040811015610c0457600080fd5b506001600160a01b0381358116916020013516612662565b348015610c2857600080fd5b506104ca61268d565b348015610c3d57600080fd5b506104ca612693565b348015610c5257600080fd5b506103f5612699565b348015610c6757600080fd5b506103f560048036036060811015610c7e57600080fd5b506001600160a01b0381358116916020810135821691604090910135166126a6565b348015610cac57600080fd5b506104ca6126db565b348015610cc157600080fd5b506103f56126e1565b348015610cd657600080fd5b506104ca6126e7565b6040805162461bcd60e51b815260206004820152600d60248201526c1b9bdd081cdd5c1c1bdc9d1959609a1b604482015290519081900360640190fd5b60035481565b610d2a614622565b610d32614622565b6001600160a01b0383166000818152600b60209081526040808320548552838352600c82528083205485830152928252600d9052819020549082015290505b919050565b606481565b6108fc81565b61200181565b60603361200014610dc95760405162461bcd60e51b815260040180806020018281038252602f815260200180614805602f913960400191505060405180910390fd5b60005460ff16610e0c576638d7ea4c6800006001908155662386f26fc1000060025568056bc75e2d631000006003556108fc6011556000805460ff191690911790555b610e14614640565b610e5b610e5685858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506126ed92505050565b612712565b90506000610e70610e6b8361275c565b6127aa565b90506000606060ff831660041415610e9557610e8b84612861565b9092509050610eec565b60ff831660051415610eaa57610e8b84612a41565b6040805162461bcd60e51b8152602060048201526012602482015271756e6b6e6f776e206576656e74207479706560701b604482015290519081900360640190fd5b63ffffffff821615610f38576040805163ffffffff84168152905160ff8516917f391d6e5ea6ab6c49b9a0abb1782cae5def8d711f973b00c729658c0b2a80b31b919081900360200190a25b979650505050505050565b6001600160a01b031660009081526006602052604090205490565b600581565b600181565b60015481565b606581565b662386f26fc1000081565b600381565b620a8c0081565b61100181565b6102ca81565b600881565b60105460ff1660021415610fe7576040805162461bcd60e51b815260206004820152600e60248201526d4e6f2072652d656e7472616e637960901b604482015290519081900360640190fd5b6010805460ff19166002179055806402540be400340615801561100f57506402540be4008106155b611060576040805162461bcd60e51b815260206004820152601c60248201527f707265636973696f6e206c6f737320696e20636f6e76657273696f6e00000000604482015290519081900360640190fd5b60005460ff166110a3576638d7ea4c6800006001908155662386f26fc1000060025568056bc75e2d631000006003556108fc6011556000805460ff191690911790555b6001543410156110f1576040805162461bcd60e51b81526020600482015260146024820152736e6f7420656e6f7567682072656c61792066656560601b604482015290519081900360640190fd5b6003548210156111ac573360009081526005602090815260408083206001600160a01b03871684529091529020548214611163576040805162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a5908185b5bdd5b9d60921b604482015290519081900360640190fd5b60025482116111ac576040805162461bcd60e51b815260206004820152601060248201526f6e6f7420656e6f7567682066756e647360801b604482015290519081900360640190fd5b3360009081526007602090815260408083206001600160a01b0387168452909152902054421015611224576040805162461bcd60e51b815260206004820152601a60248201527f70656e64696e6720756e64656c65676174696f6e206578697374000000000000604482015290519081900360640190fd5b604080518082018252601081526f6e6f7420656e6f7567682066756e647360801b602080830191909152336000908152600582528381206001600160a01b03881682529091529182205461127f91859063ffffffff612c5d16565b905080156112c75760025481116112c75760405162461bcd60e51b81526004018080602001828103825260258152602001806147e06025913960400191505060405180910390fd5b60006112de846402540be40063ffffffff612cf416565b60025490915034906000906112fa90839063ffffffff612d3d16565b6040805160038082526080820190925291925060609190816020015b606081526020019060019003908161131657905050905061133633612d7f565b8160008151811061134357fe5b6020026020010181905250611360886001600160a01b0316612d7f565b8160018151811061136d57fe5b602002602001018190525061138184612da2565b8160028151811061138e57fe5b602002602001018190525060606113ae60026113a984612db5565b612e3f565b8051602080830191909120600f80546000908152600a845260408082209390935581546001908101909255338152600c90935291208054909101905590506113ff42620a8c0063ffffffff612ec516565b3360009081526007602090815260408083206001600160a01b038e16845290915290205561200063f7a251d7601083611443876402540be40063ffffffff612cf416565b6040518463ffffffff1660e01b8152600401808460ff1660ff16815260200180602001838152602001828103825284818151815260200191508051906020019080838360005b838110156114a1578181015183820152602001611489565b50505050905090810190601f1680156114ce5780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b1580156114ef57600080fd5b505af1158015611503573d6000803e3d6000fd5b5050604051611004925085156108fc02915085906000818181858888f19350505050158015611536573d6000803e3d6000fd5b506002546040516110029180156108fc02916000818181858888f19350505050158015611567573d6000803e3d6000fd5b50604080518981526020810185905281516001600160a01b038c169233927fdf0b6ac27f3f3bb31cee3dab0f4fe40cc19c6a3f8daaec52e06b261e58a12519929081900390910190a350506010805460ff1916600117905550505050505050565b61200081565b600081565b60025481565b6402540be40081565b60105460009060ff1660021415611631576040805162461bcd60e51b815260206004820152600e60248201526d4e6f2072652d656e7472616e637960901b604482015290519081900360640190fd5b506010805460ff191660021790553360009081526008602052604090205480611698576040805162461bcd60e51b81526020600482015260146024820152736e6f20756e64656c6567617465642066756e647360601b604482015290519081900360640190fd5b336000818152600860205260408082208290556011549051919291849084818181858888f193505050503d80600081146116ee576040519150601f19603f3d011682016040523d82523d6000602084013e6116f3565b606091505b505090508061173b576040805162461bcd60e51b815260206004820152600f60248201526e1d1c985b9cd9995c8819985a5b1959608a1b604482015290519081900360640190fd5b60408051838152905133917fc712d133b8d448221aaed2198ed1f0db6dfc860fb01bc3a630916fe6cbef946f919081900360200190a2506010805460ff1916600117905590565b60035490565b61100581565b6001600160a01b031660009081526004602052604090205490565b600281565b601081565b6001600160a01b031660009081526008602052604090205490565b61100881565b600b81565b33612000146118195760405162461bcd60e51b815260040180806020018281038252602f815260200180614805602f913960400191505060405180910390fd5b60005460ff1661185c576638d7ea4c6800006001908155662386f26fc1000060025568056bc75e2d631000006003556108fc6011556000805460ff191690911790555b611864614640565b6118a6610e5684848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506126ed92505050565b905060008060606000805b6118ba86612f1f565b1561192557806118d7576118d0610e6b8761275c565b945061191d565b80600114156118f3576118ec610e6b8761275c565b935061191d565b80600214156119185761190d6119088761275c565b612f40565b92506001915061191d565b611925565b6001016118b1565b8161196b576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b61197483612fb0565b6119b7576040805162461bcd60e51b815260206004820152600f60248201526e0eee4dedcce40e0c2c6d640d0c2e6d608b1b604482015290519081900360640190fd5b6119c3610e56846126ed565b955060006119d3610e6b8861275c565b90506119dd614640565b6119e688612f1f565b15611a0957611a02610e566119fd6119088b61275c565b6126ed565b9050611a4a565b6040805162461bcd60e51b8152602060048201526011602482015270656d7074792061636b207061636b61676560781b604482015290519081900360640190fd5b60ff821660011415611a6657611a61818888613004565b611a94565b60ff821660021415611a7d57611a618188886133bb565b60ff821660031415610eaa57611a61818888613688565b5050505050505050505050565b600981565b61100781565b61100681565b60005460ff1681565b61200281565b61300081565b60005460ff16611b1e576040805162461bcd60e51b815260206004820152601960248201527f74686520636f6e7472616374206e6f7420696e69742079657400000000000000604482015290519081900360640190fd5b3361100714611b5e5760405162461bcd60e51b815260040180806020018281038252602e815260200180614756602e913960400191505060405180910390fd5b611bbf84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600a81526972656c6179657246656560b01b602082015291506139ed9050565b15611d255760208114611c19576040805162461bcd60e51b815260206004820152601d60248201527f6c656e677468206f662072656c61796572466565206d69736d61746368000000604482015290519081900360640190fd5b604080516020601f8401819004810282018101909252828152600091611c5791858580838501838280828437600092019190915250613ad492505050565b90506003548110611c995760405162461bcd60e51b815260040180806020018281038252602e815260200180614784602e913960400191505060405180910390fd5b6002548111611cd95760405162461bcd60e51b815260040180806020018281038252602e8152602001806147b2602e913960400191505060405180910390fd5b6402540be400810615611d1d5760405162461bcd60e51b815260040180806020018281038252602c81526020018061472a602c913960400191505060405180910390fd5b6001556121c7565b611d8984848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600d81526c62534352656c6179657246656560981b602082015291506139ed9050565b15611eeb5760208114611de3576040805162461bcd60e51b815260206004820181905260248201527f6c656e677468206f662062534352656c61796572466565206d69736d61746368604482015290519081900360640190fd5b604080516020601f8401819004810282018101909252828152600091611e2191858580838501838280828437600092019190915250613ad492505050565b905080611e5f5760405162461bcd60e51b81526004018080602001828103825260228152602001806148346022913960400191505060405180910390fd5b6001548110611e9f5760405162461bcd60e51b815260040180806020018281038252602e8152602001806146aa602e913960400191505060405180910390fd5b6402540be400810615611ee35760405162461bcd60e51b815260040180806020018281038252602f81526020018061467b602f913960400191505060405180910390fd5b6002556121c7565b611f4f84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600d81526c36b4b72232b632b3b0ba34b7b760991b602082015291506139ed9050565b156120315760208114611fa9576040805162461bcd60e51b815260206004820181905260248201527f6c656e677468206f66206d696e44656c65676174696f6e206d69736d61746368604482015290519081900360640190fd5b604080516020601f8401819004810282018101909252828152600091611fe791858580838501838280828437600092019190915250613ad492505050565b905060015481116120295760405162461bcd60e51b81526004018080602001828103825260318152602001806146d86031913960400191505060405180910390fd5b6003556121c7565b61209384848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600b81526a7472616e7366657247617360a81b602082015291506139ed9050565b1561218a57602081146120ed576040805162461bcd60e51b815260206004820152601e60248201527f6c656e677468206f66207472616e73666572476173206d69736d617463680000604482015290519081900360640190fd5b604080516020601f840181900481028201810190925282815260009161212b91858580838501838280828437600092019190915250613ad492505050565b905060008111612182576040805162461bcd60e51b815260206004820152601e60248201527f746865207472616e736665724761732063616e6e6f74206265207a65726f0000604482015290519081900360640190fd5b6011556121c7565b6040805162461bcd60e51b815260206004820152600d60248201526c756e6b6e6f776e20706172616d60981b604482015290519081900360640190fd5b7f6cdb0ac70ab7f2e2d035cca5be60d89906f2dede7648ddbd7402189c1eeed17a848484846040518080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600083820152604051601f909101601f19169092018290039850909650505050505050a150505050565b600481565b60105460009060ff16600214156122ad576040805162461bcd60e51b815260206004820152600e60248201526d4e6f2072652d656e7472616e637960901b604482015290519081900360640190fd5b506010805460ff191660021790553360009081526006602052604090205480612311576040805162461bcd60e51b81526020600482015260116024820152701b9bc81c195b991a5b99c81c995dd85c99607a1b604482015290519081900360640190fd5b336000818152600660205260408082208290556011549051919291849084818181858888f193505050503d8060008114612367576040519150601f19603f3d011682016040523d82523d6000602084013e61236c565b606091505b50509050806123b4576040805162461bcd60e51b815260206004820152600f60248201526e1d1c985b9cd9995c8819985a5b1959608a1b604482015290519081900360640190fd5b60408051838152905133917f83b78188b13346b2ffb484da70d42ee27de7fbf9f2bd8045269e10ed643ccd76919081900360200190a2506010805460ff1916600117905590565b6638d7ea4c68000081565b6001600160a01b038083166000908152600760209081526040808320938516835292905220545b92915050565b60015490565b61100281565b336120001461247f5760405162461bcd60e51b815260040180806020018281038252602f815260200180614805602f913960400191505060405180910390fd5b60005460ff166124c2576638d7ea4c6800006001908155662386f26fc1000060025568056bc75e2d631000006003556108fc6011556000805460ff191690911790555b61250182828080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612fb092505050565b612544576040805162461bcd60e51b815260206004820152600f60248201526e0eee4dedcce40e0c2c6d640d0c2e6d608b1b604482015290519081900360640190fd5b61254c614640565b61258e610e5684848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506126ed92505050565b9050600061259e610e6b8361275c565b90506125a8614640565b6125b183612f1f565b156125cf576125c8610e566119fd6119088661275c565b9050612615565b6040805162461bcd60e51b8152602060048201526016602482015275656d707479206661696c2061636b207061636b61676560501b604482015290519081900360640190fd5b60ff82166001141561262f5761262a81613ad9565b612659565b60ff8216600214156126445761262a81613cf3565b60ff821660031415610eaa5761262a81613e1d565b5050505b505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b61100381565b61200481565b68056bc75e2d6310000081565b6001600160a01b0392831660009081526009602090815260408083209486168352938152838220929094168152925290205490565b61100081565b60115481565b61100481565b6126f5614660565b506040805180820190915281518152602082810190820152919050565b61271a614640565b61272382613f82565b61272c57600080fd5b600061273b8360200151613fbc565b60208085015160408051808201909152868152920190820152915050919050565b612764614660565b61276d82612f1f565b61277657600080fd5b602082015160006127868261401f565b80830160209586015260408051808201909152908152938401919091525090919050565b8051600090158015906127bf57508151602110155b6127c857600080fd5b60006127d78360200151613fbc565b90508083600001511015612832576040805162461bcd60e51b815260206004820152601a60248201527f6c656e677468206973206c657373207468616e206f6666736574000000000000604482015290519081900360640190fd5b82516020808501518301805192849003929183101561285857826020036101000a820491505b50949350505050565b600060606000806000805b61287587612f1f565b156128c757826128975761289061288b8861275c565b614152565b91506128bc565b82600114156128b7576128ac610e6b8861275c565b9050600193506128bc565b6128c7565b82600101925061286c565b8361290d576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b60006110046001600160a01b031663727be1f8836040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b15801561295757600080fd5b505af115801561296b573d6000803e3d6000fd5b505050506040513d602081101561298157600080fd5b50519050806129a65761299860048484606561416c565b965096505050505050612a3c565b6001600160a01b0383166000908152600660205260409020546129cf908363ffffffff612ec516565b6001600160a01b038416600081815260066020908152604091829020939093558051858152905191927f7cc266c7b444f808013fa187f7b904d470a051a6564e78f482aa496581ba4bf892918290030190a260408051600080825260208201909252909750955050505050505b915091565b6000606060008060008060005b612a5788612f1f565b15612ac05783612a7457612a6d61288b8961275c565b9250612ab5565b8360011415612a9057612a8961288b8961275c565b9150612ab5565b8360021415612ab057612aa5610e6b8961275c565b905060019450612ab5565b612ac0565b836001019350612a4e565b84612b06576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b60006110046001600160a01b031663727be1f8836040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b158015612b5057600080fd5b505af1158015612b64573d6000803e3d6000fd5b505050506040513d6020811015612b7a57600080fd5b5051905080612ba057612b9160058584606561416c565b97509750505050505050612a3c565b6001600160a01b038085166000818152600760209081526040808320948816835293815283822082905591815260089091522054612be4908363ffffffff612ec516565b6001600160a01b0380861660008181526008602090815260409182902094909455805186815290519287169391927f35a799836f74fac7eccf5c73902823b970543d2274d3b93d8da3d37a255772a2929181900390910190a3604080516000808252602082019092529098509650505050505050915091565b60008184841115612cec5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612cb1578181015183820152602001612c99565b50505050905090810190601f168015612cde5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000612d3683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614268565b9392505050565b6000612d3683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612c5d565b60408051600560a21b8318601482015260348101909152606090612d36816142cd565b606061242d612db083614323565b6142cd565b6060815160001415612dd65750604080516000815260208101909152610d71565b606082600081518110612de557fe5b602002602001015190506000600190505b8351811015612e2657612e1c82858381518110612e0f57fe5b6020026020010151614409565b9150600101612df6565b50612d36612e39825160c060ff16614486565b82614409565b6040805160028082526060828101909352829190816020015b6060815260200190600190039081612e58579050509050612e7b8460ff16612da2565b81600081518110612e8857fe5b6020026020010181905250612e9c836142cd565b81600181518110612ea957fe5b6020026020010181905250612ebd81612db5565b949350505050565b600082820183811015612d36576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000612f29614660565b505080518051602091820151919092015191011190565b8051606090612f4e57600080fd5b6000612f5d8360200151613fbc565b83516040805191839003808352601f19601f8201168301602001909152919250606090828015612f94576020820181803683370190505b509050600081602001905061285884876020015101828561457e565b8051602080830191909120600e546000908152600a9092526040822054808214612fdf57600092505050610d71565b5050600e80546000908152600a60205260408120558054600190810190915592915050565b60008060008060005b61301688612f1f565b1561307f57836130335761302c61288b8961275c565b9250613074565b836001141561304f5761304861288b8961275c565b9150613074565b836002141561306f57613064610e6b8961275c565b905060019450613074565b61307f565b83600101935061300d565b846130c5576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b60006130dc826402540be40063ffffffff6145c916565b6001600160a01b0385166000908152600b602052604090208054600019019055905060ff8816600114156132225760ff87161561314f576040805162461bcd60e51b815260206004820152600c60248201526b77726f6e672073746174757360a01b604482015290519081900360640190fd5b6001600160a01b038416600090815260046020526040902054613178908263ffffffff612ec516565b6001600160a01b038086166000908152600460209081526040808320949094556005815283822092871682529190915220546131ba908263ffffffff612ec516565b6001600160a01b038086166000818152600560209081526040808320948916808452948252918290209490945580518581529051929391927f9a57c81564ab02642f34fd87e41baa9b074c18342cec3b7268b62bf752018fd1929181900390910190a36133b0565b60ff8816613374576001600160a01b038416600090815260086020526040902054613253908263ffffffff612ec516565b6001600160a01b0385166000908152600860209081526040808320939093558251630e4f7c3f60e31b81526004810185905292516110049363727be1f89360248083019493928390030190829087803b1580156132af57600080fd5b505af11580156132c3573d6000803e3d6000fd5b505050506040513d60208110156132d957600080fd5b5051613322576040805162461bcd60e51b81526020600482015260136024820152721dda5d1a191c985dc8189b988819985a5b1959606a1b604482015290519081900360640190fd5b6040805182815260ff8916602082015281516001600160a01b0380871693908816927fcbd481ae600289fad8c0484d07ce0ffe4f010d7c844ecfdeaf2a13fead52886e929081900390910190a36133b0565b6040805162461bcd60e51b815260206004820152600c60248201526b77726f6e672073746174757360a01b604482015290519081900360640190fd5b505050505050505050565b60008060008060005b6133cd88612f1f565b1561343657836133ea576133e361288b8961275c565b925061342b565b8360011415613406576133ff61288b8961275c565b915061342b565b83600214156134265761341b610e6b8961275c565b90506001945061342b565b613436565b8360010193506133c4565b8461347c576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b6000613493826402540be40063ffffffff6145c916565b6001600160a01b0385166000908152600c602052604090208054600019019055905060ff8816600114156136125760ff871615613506576040805162461bcd60e51b815260206004820152600c60248201526b77726f6e672073746174757360a01b604482015290519081900360640190fd5b6001600160a01b03841660009081526004602052604090205461352f908263ffffffff612d3d16565b6001600160a01b03808616600090815260046020908152604080832094909455600581528382209287168252919091522054613571908263ffffffff612d3d16565b6001600160a01b038086166000908152600560209081526040808320938816835292905220556135aa42620a8c0063ffffffff612ec516565b6001600160a01b038086166000818152600760209081526040808320948916808452948252918290209490945580518581529051929391927fd6f878a5bcbbe79a64e6418bb0d56aaa20b9a60587d45749819df88dfc7c3c44929181900390910190a36133b0565b60ff8816613374576001600160a01b03808516600081815260076020908152604080832094881680845294825280832092909255815185815260ff8c169181019190915281517f4417d10c1e33efa83a770b8d4f47176e78c08c1298d534901ad3b16bb585fa2e929181900390910190a36133b0565b6000806000806000805b61369b89612f1f565b1561372057846136b8576136b161288b8a61275c565b9350613715565b84600114156136d4576136cd61288b8a61275c565b9250613715565b84600214156136f0576136e961288b8a61275c565b9150613715565b846003141561371057613705610e6b8a61275c565b905060019550613715565b613720565b846001019450613692565b85613766576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b600061377d826402540be40063ffffffff6145c916565b6001600160a01b0386166000908152600d602052604090208054600019019055905060ff8916600114156139505760ff8816156137f0576040805162461bcd60e51b815260206004820152600c60248201526b77726f6e672073746174757360a01b604482015290519081900360640190fd5b6001600160a01b03808616600090815260056020908152604080832093881683529290522054613826908263ffffffff612d3d16565b6001600160a01b038681166000908152600560209081526040808320898516845290915280822093909355908516815220546138629082612ec5565b6001600160a01b0380871660009081526005602090815260408083209388168352929052205561389b42620a8c0063ffffffff612ec516565b6001600160a01b03808716600090815260096020908152604080832089851684528252808320938816835292905220556138de42620a8c0063ffffffff612ec516565b6001600160a01b038087166000818152600960209081526040808320898616808552908352818420958b1680855295835292819020959095558451868152945191947f78bffae3f8c6691ac7fc1a3bff800cb2d612f5ad9ae5b0444cfe2eb15c189e18929081900390910190a46139e1565b60ff8916613374576001600160a01b038581166000818152600960209081526040808320898616808552818452828520968a16808652968452828520859055908352818420818552835281842093909355805186815260ff8e169281019290925280519293927fb93bee5c59f85ede6b074a99f4ffcd3e3fc0d5c3d8156de331de89a49e0ce77c9281900390910190a45b50505050505050505050565b6000816040516020018082805190602001908083835b60208310613a225780518252601f199092019160209182019101613a03565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405280519060200120836040516020018082805190602001908083835b60208310613a905780518252601f199092019160209182019101613a71565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040528051906020012014905092915050565b015190565b60008060008060005b613aeb86612f1f565b15613b545783613b0857613b0161288b8761275c565b9250613b49565b8360011415613b2457613b1d61288b8761275c565b9150613b49565b8360021415613b4457613b39610e6b8761275c565b905060019450613b49565b613b54565b836001019350613ae2565b84613b9a576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b6000613bb1826402540be40063ffffffff6145c916565b6001600160a01b0385166000908152600b6020908152604080832080546000190190556008909152902054909150613bef908263ffffffff612ec516565b6001600160a01b0385166000908152600860209081526040808320939093558251630e4f7c3f60e31b81526004810185905292516110049363727be1f89360248083019493928390030190829087803b158015613c4b57600080fd5b505af1158015613c5f573d6000803e3d6000fd5b505050506040513d6020811015613c7557600080fd5b5051613cbe576040805162461bcd60e51b81526020600482015260136024820152721dda5d1a191c985dc8189b988819985a5b1959606a1b604482015290519081900360640190fd5b6040516001907ff83de021914a4585482db5ca47d520a5657165b443fa2c7ef8ed4635f054da9b90600090a250505050505050565b60008060008060005b613d0586612f1f565b15613d6e5783613d2257613d1b61288b8761275c565b9250613d63565b8360011415613d3e57613d3761288b8761275c565b9150613d63565b8360021415613d5e57613d53610e6b8761275c565b905060019450613d63565b613d6e565b836001019350613cfc565b84613db4576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b6001600160a01b038084166000908152600c60209081526040808320805460001901905560078252808320938616835292905281812081905590516002917ff83de021914a4585482db5ca47d520a5657165b443fa2c7ef8ed4635f054da9b91a2505050505050565b6000806000806000805b613e3087612f1f565b15613eb55784613e4d57613e4661288b8861275c565b9350613eaa565b8460011415613e6957613e6261288b8861275c565b9250613eaa565b8460021415613e8557613e7e61288b8861275c565b9150613eaa565b8460031415613ea557613e9a610e6b8861275c565b905060019550613eaa565b613eb5565b846001019450613e27565b85613efb576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b6001600160a01b038481166000908152600d602090815260408083208054600019019055600982528083208785168085528184528285209588168552948352818420849055825280832093835292905281812081905590516003917ff83de021914a4585482db5ca47d520a5657165b443fa2c7ef8ed4635f054da9b91a250505050505050565b8051600090613f9357506000610d71565b6020820151805160001a9060c0821015613fb257600092505050610d71565b5060019392505050565b8051600090811a6080811015613fd6576000915050610d71565b60b8811080613ff1575060c08110801590613ff1575060f881105b15614000576001915050610d71565b60c08110156140145760b519019050610d71565b60f519019050610d71565b80516000908190811a608081101561403a576001915061414b565b60b881101561404f57607e198101915061414b565b60c08110156140c957600060b78203600186019550806020036101000a8651049150600181018201935050808310156140c3576040805162461bcd60e51b81526020600482015260116024820152706164646974696f6e206f766572666c6f7760781b604482015290519081900360640190fd5b5061414b565b60f88110156140de5760be198101915061414b565b600060f78203600186019550806020036101000a865104915060018101820193505080831015614149576040805162461bcd60e51b81526020600482015260116024820152706164646974696f6e206f766572666c6f7760781b604482015290519081900360640190fd5b505b5092915050565b805160009060151461416357600080fd5b61242d826127aa565b60006060614185846402540be40063ffffffff612cf416565b60408051600480825260a0820190925291955060609190816020015b60608152602001906001900390816141a15790505090506141c48760ff16612da2565b816000815181106141d157fe5b60200260200101819052506141ee866001600160a01b0316612d7f565b816001815181106141fb57fe5b602002602001018190525061420f85612da2565b8160028151811061421c57fe5b60200260200101819052506142368463ffffffff16612da2565b8160038151811061424357fe5b6020026020010181905250606061425982612db5565b94989497509395505050505050565b600081836142b75760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315612cb1578181015183820152602001612c99565b5060008385816142c357fe5b0495945050505050565b6060815160011480156142ff5750607f60f81b826000815181106142ed57fe5b01602001516001600160f81b03191611155b1561430b575080610d71565b61242d61431d8351608060ff16614486565b83614409565b604080516020808252818301909252606091829190602082018180368337505050602081018490529050600067ffffffffffffffff1984166143675750601861438b565b6fffffffffffffffffffffffffffffffff1984166143875750601061438b565b5060005b60208110156143c1578181815181106143a057fe5b01602001516001600160f81b031916156143b9576143c1565b60010161438b565b60008160200390506060816040519080825280601f01601f1916602001820160405280156143f6576020820181803683370190505b5080830196909652508452509192915050565b6060806040519050835180825260208201818101602087015b8183101561443a578051835260209283019201614422565b50855184518101855292509050808201602086015b8183101561446757805183526020928301920161444f565b508651929092011591909101601f01601f191660405250905092915050565b60606801000000000000000083106144d6576040805162461bcd60e51b815260206004820152600e60248201526d696e70757420746f6f206c6f6e6760901b604482015290519081900360640190fd5b604080516001808252818301909252606091602082018180368337019050509050603784116145305782840160f81b8160008151811061451257fe5b60200101906001600160f81b031916908160001a905350905061242d565b606061453b85614323565b90508381510160370160f81b8260008151811061455457fe5b60200101906001600160f81b031916908160001a9053506145758282614409565b95945050505050565b806145885761265d565b5b602081106145a8578251825260209283019290910190601f1901614589565b915181516020939093036101000a6000190180199091169216919091179052565b6000826145d85750600061242d565b828202828482816145e557fe5b0414612d365760405162461bcd60e51b81526004018080602001828103825260218152602001806147096021913960400191505060405180910390fd5b60405180606001604052806003906020820280368337509192915050565b6040518060400160405280614653614660565b8152602001600081525090565b60405180604001604052806000815260200160008152509056fe7468652042534352656c61796572466565206d6f642074656e20646563696d616c73206d757374206265207a65726f7468652042534352656c61796572466565206d757374206265206c657373207468616e2072656c61796572466565746865206d696e44656c65676174696f6e206d7573742062652067726561746572207468616e2072656c61796572466565536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f777468652072656c61796572466565206d6f642074656e20646563696d616c73206d757374206265207a65726f746865206d6573736167652073656e646572206d75737420626520676f7665726e616e636520636f6e74726163747468652072656c61796572466565206d757374206265206c657373207468616e206d696e44656c65676174696f6e7468652072656c61796572466565206d757374206265206d6f7265207468616e2042534352656c61796572466565696e73756666696369656e742062616c616e636520616674657220756e64656c6567617465746865206d6573736167652073656e646572206d7573742062652063726f737320636861696e20636f6e74726163747468652042534352656c61796572466565206d757374206e6f74206265207a65726fa164736f6c6343000604000a", }, { ContractAddr: common.HexToAddress(StakeHubContract), @@ -797,7 +796,7 @@ func init() { { ContractAddr: common.HexToAddress(GovernorContract), CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/cfc0bd1127186a917ddc38fd38d22903034d3f0b", - Code: "6080604052600436106103905760003560e01c80637d5e81e2116101dc578063c59057e411610102578063e23a9a52116100a0578063f23a6e611161006f578063f23a6e6114610cd6578063f8ce560a14610d02578063fc0c546a14610d22578063fe0d94c114610d4357600080fd5b8063e23a9a5214610bab578063ea0217cf14610c76578063eb9019d414610c96578063ece40cc114610cb657600080fd5b8063da95691a116100dc578063da95691a14610af1578063dd4e2ba514610b11578063ddf0b00914610b57578063deaaa7cc14610b7757600080fd5b8063c59057e414610a92578063d07f91e914610ab2578063d33219b414610ad257600080fd5b8063a890c9101161017a578063bc197c8111610149578063bc197c8114610a18578063c01f9e3714610a44578063c170ec0b14610a64578063c28bc2fa14610a7f57600080fd5b8063a890c910146109a3578063ab58fb8e146109c3578063ac431751146109e3578063b58131b014610a0357600080fd5b806391ddadf4116101b657806391ddadf41461092e57806397c3d3341461095a5780639a802a6d1461096e578063a7713a701461098e57600080fd5b80637d5e81e2146108d15780638129fc1c146108f157806384b0196e1461090657600080fd5b806332b8113e116102c15780634bf5d7e91161025f5780635f398a141161022e5780635f398a141461085157806360c4247f1461087157806370b0f660146108915780637b3c71d3146108b157600080fd5b80634bf5d7e9146107c1578063533ddd14146107d657806354fd4d5014610807578063567813881461083157600080fd5b80633e4f49e61161029b5780633e4f49e61461070957806340e58ee5146107365780634385963214610756578063452115d6146107a157600080fd5b806332b8113e146106aa5780633932abb1146106d35780633bccf4fd146106e957600080fd5b8063150b7a021161032e5780632656227d116103085780632656227d146105fc5780632d63f6931461060f5780632fe3e26114610646578063328dd9821461067a57600080fd5b8063150b7a0214610583578063160cbed7146105c757806324bc1a64146105e757600080fd5b8063034201811161036a57806303420181146104cb57806306f3f9e6146104eb57806306fdde031461050b578063143489d01461052d57600080fd5b8063013cf08b1461040057806301ffc9a71461047b57806302a251a3146104ab57600080fd5b366103fb573061039e610d56565b6001600160a01b0316146103f95760405162461bcd60e51b815260206004820152601f60248201527f476f7665726e6f723a206d7573742073656e6420746f206578656375746f720060448201526064015b60405180910390fd5b005b600080fd5b34801561040c57600080fd5b5061042061041b3660046156a8565b610d70565b604080519a8b526001600160a01b0390991660208b0152978901969096526060880194909452608087019290925260a086015260c085015260e084015215156101008301521515610120820152610140015b60405180910390f35b34801561048757600080fd5b5061049b6104963660046156c1565b610e2b565b6040519015158152602001610472565b3480156104b757600080fd5b50610162545b604051908152602001610472565b3480156104d757600080fd5b506104bd6104e6366004615807565b610e3c565b3480156104f757600080fd5b506103f96105063660046156a8565b610f34565b34801561051757600080fd5b50610520610fbf565b60405161047291906158fd565b34801561053957600080fd5b5061056b6105483660046156a8565b60009081526101306020526040902054600160401b90046001600160a01b031690565b6040516001600160a01b039091168152602001610472565b34801561058f57600080fd5b506105ae61059e366004615925565b630a85bd0160e11b949350505050565b6040516001600160e01b03199091168152602001610472565b3480156105d357600080fd5b506104bd6105e2366004615afc565b611052565b3480156105f357600080fd5b506104bd611257565b6104bd61060a366004615afc565b61127d565b34801561061b57600080fd5b506104bd61062a3660046156a8565b600090815261013060205260409020546001600160401b031690565b34801561065257600080fd5b506104bd7fb3b3f3b703cd84ce352197dcff232b1b5d3cfb2025ce47cf04742d0651f1af8881565b34801561068657600080fd5b5061069a6106953660046156a8565b611370565b6040516104729493929190615c54565b3480156106b657600080fd5b5061025c546040516001600160401b039091168152602001610472565b3480156106df57600080fd5b50610161546104bd565b3480156106f557600080fd5b506104bd610704366004615ca1565b611602565b34801561071557600080fd5b506107296107243660046156a8565b611678565b6040516104729190615d05565b34801561074257600080fd5b506103f96107513660046156a8565b611683565b34801561076257600080fd5b5061049b610771366004615d2d565b6000828152610193602090815260408083206001600160a01b038516845260080190915290205460ff1692915050565b3480156107ad57600080fd5b506104bd6107bc366004615afc565b6116ae565b3480156107cd57600080fd5b506105206116c5565b3480156107e257600080fd5b5061049b6107f1366004615d5d565b61028e6020526000908152604090205460ff1681565b34801561081357600080fd5b506040805180820190915260018152603160f81b6020820152610520565b34801561083d57600080fd5b506104bd61084c366004615d7a565b611772565b34801561085d57600080fd5b506104bd61086c366004615da6565b61179b565b34801561087d57600080fd5b506104bd61088c3660046156a8565b6117e5565b34801561089d57600080fd5b506103f96108ac3660046156a8565b61189a565b3480156108bd57600080fd5b506104bd6108cc366004615e29565b611922565b3480156108dd57600080fd5b506104bd6108ec366004615e82565b611974565b3480156108fd57600080fd5b506103f9611a04565b34801561091257600080fd5b5061091b611e41565b6040516104729796959493929190615f22565b34801561093a57600080fd5b50610943611edf565b60405165ffffffffffff9091168152602001610472565b34801561096657600080fd5b5060646104bd565b34801561097a57600080fd5b506104bd610989366004615f84565b611f53565b34801561099a57600080fd5b506104bd611f6a565b3480156109af57600080fd5b506103f96109be366004615d5d565b611f97565b3480156109cf57600080fd5b506104bd6109de3660046156a8565b61201f565b3480156109ef57600080fd5b506103f96109fe366004615fdc565b6120bb565b348015610a0f57600080fd5b506104bd61269a565b348015610a2457600080fd5b506105ae610a3336600461603b565b63bc197c8160e01b95945050505050565b348015610a5057600080fd5b506104bd610a5f3660046156a8565b6126a6565b348015610a7057600080fd5b5061028f5461049b9060ff1681565b6103f9610a8d3660046160ce565b6126b1565b348015610a9e57600080fd5b506104bd610aad366004615afc565b6127c1565b348015610abe57600080fd5b506103f9610acd366004616111565b6127fb565b348015610ade57600080fd5b506101f8546001600160a01b031661056b565b348015610afd57600080fd5b506104bd610b0c36600461613a565b612883565b348015610b1d57600080fd5b5060408051808201909152601a81527f737570706f72743d627261766f2671756f72756d3d627261766f0000000000006020820152610520565b348015610b6357600080fd5b506103f9610b723660046156a8565b61290a565b348015610b8357600080fd5b506104bd7f150214d74d59b7d1e90c73fc22ef3d991dd0a76b046543d4d80ab92d2a50328f81565b348015610bb757600080fd5b50610c46610bc6366004615d2d565b6040805160608101825260008082526020820181905291810191909152506000918252610193602090815260408084206001600160a01b0393909316845260089092018152918190208151606081018352905460ff8082161515835261010082041693820193909352620100009092046001600160601b03169082015290565b6040805182511515815260208084015160ff1690820152918101516001600160601b031690820152606001610472565b348015610c8257600080fd5b506103f9610c913660046156a8565b61292d565b348015610ca257600080fd5b506104bd610cb13660046161db565b6129b5565b348015610cc257600080fd5b506103f9610cd13660046156a8565b6129d6565b348015610ce257600080fd5b506105ae610cf1366004616207565b63f23a6e6160e01b95945050505050565b348015610d0e57600080fd5b506104bd610d1d3660046156a8565b612a5e565b348015610d2e57600080fd5b506101c55461056b906001600160a01b031681565b6103f9610d513660046156a8565b612aed565b6000610d6b6101f8546001600160a01b031690565b905090565b8060008080808080808080610d848a61201f565b60008c815261013060205260409020549098506001600160401b03169650610dab8b6126a6565b60008c81526101936020526040812080546005820154600683015460078401546001600160a01b039093169e50949a509850929650919450610dec8d611678565b90506002816007811115610e0257610e02615cef565b1493506007816007811115610e1957610e19615cef565b14925050509193959799509193959799565b6000610e3682612b10565b92915050565b600080610ee0610ed87fb3b3f3b703cd84ce352197dcff232b1b5d3cfb2025ce47cf04742d0651f1af888c8c8c8c604051610e7892919061626f565b60405180910390208b80519060200120604051602001610ebd959493929190948552602085019390935260ff9190911660408401526060830152608082015260a00190565b60405160208183030381529060405280519060200120612b35565b868686612b62565b9050610f268a828b8b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508d9250612b80915050565b9a9950505050505050505050565b610f3c610d56565b6001600160a01b0316336001600160a01b031614610f6c5760405162461bcd60e51b81526004016103f09061627f565b30610f75610d56565b6001600160a01b031614610fb35760008036604051610f9592919061626f565b604051809103902090505b80610fac610131612b8f565b03610fa057505b610fbc81612c0e565b50565b606061012f8054610fcf906162b6565b80601f0160208091040260200160405190810160405280929190818152602001828054610ffb906162b6565b80156110485780601f1061101d57610100808354040283529160200191611048565b820191906000526020600020905b81548152906001019060200180831161102b57829003601f168201915b5050505050905090565b600080611061868686866127c1565b9050600461106e82611678565b600781111561107f5761107f615cef565b1461109c5760405162461bcd60e51b81526004016103f0906162f0565b6101f8546040805163793d064960e11b815290516000926001600160a01b03169163f27a0c929160048083019260209291908290030181865afa1580156110e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061110b9190616331565b6101f85460405163b1c5f42760e01b81529192506001600160a01b03169063b1c5f42790611146908a908a908a906000908b9060040161634a565b602060405180830381865afa158015611163573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111879190616331565b60008381526101f96020526040808220929092556101f85491516308f2a0bb60e41b81526001600160a01b0390921691638f2a0bb0916111d4918b918b918b91908b908990600401616398565b600060405180830381600087803b1580156111ee57600080fd5b505af1158015611202573d6000803e3d6000fd5b505050507f9a2e42fd6722813d69113e7d0079d3d940171428df7373df9c7f7617cfda28928282426112349190616406565b604080519283526020830191909152015b60405180910390a15095945050505050565b6000610d6b6001611266611edf565b6112709190616419565b65ffffffffffff16612a5e565b60008061128c868686866127c1565b9050600061129982611678565b905060048160078111156112af576112af615cef565b14806112cc575060058160078111156112ca576112ca615cef565b145b6112e85760405162461bcd60e51b81526004016103f0906162f0565b6000828152610130602052604090819020600201805460ff19166001179055517f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f906113379084815260200190565b60405180910390a161134c8288888888612d7f565b6113598288888888612e20565b6113668288888888612ea7565b5095945050505050565b60608060608060006101936000878152602001908152602001600020905080600101816002018260030183600401838054806020026020016040519081016040528092919081815260200182805480156113f357602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116113d5575b505050505093508280548060200260200160405190810160405280929190818152602001828054801561144557602002820191906000526020600020905b815481526020019060010190808311611431575b5050505050925081805480602002602001604051908101604052809291908181526020016000905b8282101561151957838290600052602060002001805461148c906162b6565b80601f01602080910402602001604051908101604052809291908181526020018280546114b8906162b6565b80156115055780601f106114da57610100808354040283529160200191611505565b820191906000526020600020905b8154815290600101906020018083116114e857829003601f168201915b50505050508152602001906001019061146d565b50505050915080805480602002602001604051908101604052809291908181526020016000905b828210156115ec57838290600052602060002001805461155f906162b6565b80601f016020809104026020016040519081016040528092919081815260200182805461158b906162b6565b80156115d85780601f106115ad576101008083540402835291602001916115d8565b820191906000526020600020905b8154815290600101906020018083116115bb57829003601f168201915b505050505081526020019060010190611540565b5050505090509450945094509450509193509193565b604080517f150214d74d59b7d1e90c73fc22ef3d991dd0a76b046543d4d80ab92d2a50328f602082015290810186905260ff85166060820152600090819061165090610ed890608001610ebd565b905061166d87828860405180602001604052806000815250612ee2565b979650505050505050565b6000610e3682612f05565b60008060008061169285613052565b93509350935093506116a6848484846116ae565b505050505050565b60006116bc858585856132e3565b95945050505050565b6101c55460408051634bf5d7e960e01b815290516060926001600160a01b031691634bf5d7e99160048083019260009291908290030181865afa92505050801561173157506040513d6000823e601f3d908101601f1916820160405261172e919081019061643f565b60015b61176d575060408051808201909152601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c74000000602082015290565b919050565b60008033905061179384828560405180602001604052806000815250612ee2565b949350505050565b60008033905061166d87828888888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a9250612b80915050565b61022b546000908082036117fe57505061022a54919050565b600061022b61180e6001846164ac565b8154811061181e5761181e6164bf565b60009182526020918290206040805180820190915291015463ffffffff8116808352600160201b9091046001600160e01b0316928201929092529150841061187457602001516001600160e01b03169392505050565b611889611880856133ae565b61022b90613417565b6001600160e01b0316949350505050565b6118a2610d56565b6001600160a01b0316336001600160a01b0316146118d25760405162461bcd60e51b81526004016103f09061627f565b306118db610d56565b6001600160a01b03161461191957600080366040516118fb92919061626f565b604051809103902090505b80611912610131612b8f565b0361190657505b610fbc816134ca565b60008033905061196a86828787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612ee292505050565b9695505050505050565b600061197e61350d565b60005b85518110156119f75761028e60008783815181106119a1576119a16164bf565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff166119e557604051630b094f2760e31b815260040160405180910390fd5b806119ef816164d5565b915050611981565b506116bc858585856135b8565b600054610100900460ff1615808015611a245750600054600160ff909116105b80611a3e5750303b158015611a3e575060005460ff166001145b611aa15760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016103f0565b6000805460ff191660011790558015611ac4576000805461ff0019166101001790555b334114611ae45760405163022d8c9560e31b815260040160405180910390fd5b3a15611b03576040516383f1b1d360e01b815260040160405180910390fd5b611b2f6040518060400160405280600b81526020016a2129a1a3b7bb32b93737b960a91b815250613620565b611b49620151806212750068056bc75e2d63100000613677565b611b516136ae565b611b5c6120056136d5565b611b67612006613705565b611b71600a613735565b611b7d62015180613765565b61028e6020527ff0f52cefb444f33092ac77280e2ff9c808a9c078a96d3cd7513137548137ed8f8054600160ff1991821681179092557fb2c9e894c6f17bfc84a6708e0ea85c2729271d7cae0a8d875cd1080fb415e7a080548216831790557fd8ceb939a734f5a4e0a6fede9e31504e16ac856b555e8bac20ad743b9ff2976a80548216831790557f2a7b967fc66f4b36023165170b23a76f880d3dbbf244a856aeee9e670cef725980548216831790557fdb1a1113bac2e4f0e6f8c2f2bc4f6dbecf1fccb033d5df1b55b5c5ad6c20ac7980548216831790557f8b1888b379fb3b749668d86c5bf8aaada8e2276c6ced3a4efcc1e877827ce0b380548216831790557feeeea8d485053a64711f2c5802d2cc63251dd394956c140a2e30db7cef242ec580548216831790557f4cdb1a6c4b56f62f27f7202d75e865c2405f138cb32ec45019c0f2ca8f91e47280548216831790557f49d6c403a3197b15e024f109c83eb730d7af1a8b49fc6f820e09bad2597c14c980548216831790557f7a41b38ceb33f296c1ff3db5ffcc6542acb091d5fb27586f3c551dd2ebac063880548216831790557f701fe333ee20fad5d5a6a9930dddd3fb815af1d976d5250e394e39d6e4123e3880548216831790557fee7ba9842df249188adc0fc380980c3099f608b602924e083dd61e8e70845b4a80548216831790557f29973aeebf3c17f2c3a9cf7ace17f2798aa544e1ea7427938024cde6df46bac180548216831790557f74c0d6e29c82d6628d5f083f86fc15f0c6acef97321252a1eee0bd893dae276580548216831790556120066000527f1bdfc01e60036e5be56ae85d8394ddf727e1021b3d74de5b554fedea2de43767805490911690911790558015610fbc576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b6000606080600080600060606065546000801b148015611e615750606654155b611ea55760405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b60448201526064016103f0565b611ead613795565b611eb56137a4565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b6101c554604080516324776b7d60e21b815290516000926001600160a01b0316916391ddadf49160048083019260209291908290030181865afa925050508015611f46575060408051601f3d908101601f19168201909252611f43918101906164ee565b60015b61176d57610d6b436137b3565b6000611f6084848461381a565b90505b9392505050565b61022b5460009015611f8f57611f8161022b613891565b6001600160e01b0316905090565b5061022a5490565b611f9f610d56565b6001600160a01b0316336001600160a01b031614611fcf5760405162461bcd60e51b81526004016103f09061627f565b30611fd8610d56565b6001600160a01b0316146120165760008036604051611ff892919061626f565b604051809103902090505b8061200f610131612b8f565b0361200357505b610fbc816138c1565b6101f85460008281526101f9602052604080822054905163d45c443560e01b81526004810191909152909182916001600160a01b039091169063d45c443590602401602060405180830381865afa15801561207e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120a29190616331565b9050806001146120b25780611f63565b60009392505050565b33611007146120e157604051630f22c43960e41b815261100760048201526024016103f0565b6121476040518060400160405280600b81526020016a766f74696e6744656c617960a81b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505061392c9050565b156121f057602081146121755783838383604051630a5a604160e01b81526004016103f0949392919061653f565b604080516020601f84018190048102820181019092528281526000916121b69185858083850183828082843760009201919091525092939250506139859050565b9050806000036121e15784848484604051630a5a604160e01b81526004016103f0949392919061653f565b6121ea816134ca565b50612657565b6122576040518060400160405280600c81526020016b1d9bdd1a5b99d4195c9a5bd960a21b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505061392c9050565b156122fa57602081146122855783838383604051630a5a604160e01b81526004016103f0949392919061653f565b604080516020601f84018190048102820181019092528281526000916122c69185858083850183828082843760009201919091525092939250506139859050565b9050806000036122f15784848484604051630a5a604160e01b81526004016103f0949392919061653f565b6121ea8161398a565b612366604051806040016040528060118152602001701c1c9bdc1bdcd85b151a1c995cda1bdb19607a1b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505061392c9050565b1561240957602081146123945783838383604051630a5a604160e01b81526004016103f0949392919061653f565b604080516020601f84018190048102820181019092528281526000916123d59185858083850183828082843760009201919091525092939250506139859050565b9050806000036124005784848484604051630a5a604160e01b81526004016103f0949392919061653f565b6121ea81613a2d565b6124736040518060400160405280600f81526020016e38bab7b93ab6a73ab6b2b930ba37b960891b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505061392c9050565b1561251657602081146124a15783838383604051630a5a604160e01b81526004016103f0949392919061653f565b604080516020601f84018190048102820181019092528281526000916124e29185858083850183828082843760009201919091525092939250506139859050565b90508060000361250d5784848484604051630a5a604160e01b81526004016103f0949392919061653f565b6121ea81612c0e565b612585604051806040016040528060148152602001736d696e506572696f64416674657251756f72756d60601b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505061392c9050565b1561263657600881146125b35783838383604051630a5a604160e01b81526004016103f0949392919061653f565b60006125f9600884848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506139859050565b9050806001600160401b031660000361262d5784848484604051630a5a604160e01b81526004016103f0949392919061653f565b6121ea81613a70565b838383836040516325ee20d560e21b81526004016103f0949392919061653f565b7ff1ce9b2cbf50eeb05769a29e2543fd350cab46894a7dd9978a12d534bb20e6338484848460405161268c949392919061653f565b60405180910390a150505050565b6000610d6b6101635490565b6000610e3682613adc565b6126b9610d56565b6001600160a01b0316336001600160a01b0316146126e95760405162461bcd60e51b81526004016103f09061627f565b306126f2610d56565b6001600160a01b031614612730576000803660405161271292919061626f565b604051809103902090505b80612729610131612b8f565b0361271d57505b600080856001600160a01b031685858560405161274e92919061626f565b60006040518083038185875af1925050503d806000811461278b576040519150601f19603f3d011682016040523d82523d6000602084013e612790565b606091505b50915091506127b8828260405180606001604052806028815260200161692760289139613b1a565b50505050505050565b6000848484846040516020016127da9493929190616566565b60408051601f19818403018152919052805160209091012095945050505050565b612803610d56565b6001600160a01b0316336001600160a01b0316146128335760405162461bcd60e51b81526004016103f09061627f565b3061283c610d56565b6001600160a01b03161461287a576000803660405161285c92919061626f565b604051809103902090505b80612873610131612b8f565b0361286757505b610fbc81613a70565b600082518451146128e75760405162461bcd60e51b815260206004820152602860248201527f476f7665726e6f72427261766f3a20696e76616c6964207369676e61747572656044820152670e640d8cadccee8d60c31b60648201526084016103f0565b6128f5338787878787613b33565b61196a86866129048787613bf1565b85611974565b60008060008061291985613052565b93509350935093506116a684848484611052565b612935610d56565b6001600160a01b0316336001600160a01b0316146129655760405162461bcd60e51b81526004016103f09061627f565b3061296e610d56565b6001600160a01b0316146129ac576000803660405161298e92919061626f565b604051809103902090505b806129a5610131612b8f565b0361299957505b610fbc8161398a565b6000611f6383836129d160408051602081019091526000815290565b61381a565b6129de610d56565b6001600160a01b0316336001600160a01b031614612a0e5760405162461bcd60e51b81526004016103f09061627f565b30612a17610d56565b6001600160a01b031614612a555760008036604051612a3792919061626f565b604051809103902090505b80612a4e610131612b8f565b03612a4257505b610fbc81613a2d565b60006064612a6b836117e5565b6101c554604051632394e7a360e21b8152600481018690526001600160a01b0390911690638e539e8c90602401602060405180830381865afa158015612ab5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ad99190616331565b612ae391906165b1565b610e3691906165de565b600080600080612afc85613052565b93509350935093506116a68484848461127d565b60006001600160e01b03198216636e665ced60e01b1480610e365750610e3682613d23565b6000610e36612b42613dbf565b8360405161190160f01b8152600281019290925260228201526042902090565b6000806000612b7387878787613dc9565b9150915061136681613e8d565b600061196a8686868686613fd7565b6000612baa8254600f81810b600160801b909204900b131590565b15612bc857604051631ed9509560e11b815260040160405180910390fd5b508054600f0b6000818152600180840160205260408220805492905583546fffffffffffffffffffffffffffffffff191692016001600160801b03169190911790915590565b6064811115612c915760405162461bcd60e51b815260206004820152604360248201527f476f7665726e6f72566f74657351756f72756d4672616374696f6e3a2071756f60448201527f72756d4e756d657261746f72206f7665722071756f72756d44656e6f6d696e616064820152623a37b960e91b608482015260a4016103f0565b6000612c9b611f6a565b90508015801590612cad575061022b54155b15612d1257604080518082019091526000815261022b9060208101612cd1846140da565b6001600160e01b039081169091528254600181018455600093845260209384902083519490930151909116600160201b0263ffffffff909316929092179101555b612d40612d2d612d20611edf565b65ffffffffffff166133ae565b612d36846140da565b61022b9190614143565b505060408051828152602081018490527f0553476bf02ef2726e8ce5ced78d63e26e602e4a2257b1f559418e24b4633997910160405180910390a15050565b30612d88610d56565b6001600160a01b031614612e195760005b84518110156116a657306001600160a01b0316858281518110612dbe57612dbe6164bf565b60200260200101516001600160a01b031603612e0957612e09838281518110612de957612de96164bf565b60200260200101518051906020012061013161415e90919063ffffffff16565b612e12816164d5565b9050612d99565b5050505050565b60005b8451811015612e995761028e6000868381518110612e4357612e436164bf565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16612e8757604051630b094f2760e31b815260040160405180910390fd5b80612e91816164d5565b915050612e23565b50612e19858585858561419a565b30612eb0610d56565b6001600160a01b031614612e195761013154600f81810b600160801b909204900b1315612e1957600061013155612e19565b60006116bc85858585612f0060408051602081019091526000815290565b612b80565b600080612f118361420f565b90506004816007811115612f2757612f27615cef565b14612f325792915050565b60008381526101f9602052604090205480612f4e575092915050565b6101f854604051632ab0f52960e01b8152600481018390526001600160a01b0390911690632ab0f52990602401602060405180830381865afa158015612f98573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fbc9190616600565b15612fcb575060079392505050565b6101f854604051632c258a9f60e11b8152600481018390526001600160a01b039091169063584b153e90602401602060405180830381865afa158015613015573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130399190616600565b15613048575060059392505050565b5060029392505050565b606080606060008061019360008781526020019081526020016000209050806001018160020161322483600301805480602002602001604051908101604052809291908181526020016000905b8282101561314b5783829060005260206000200180546130be906162b6565b80601f01602080910402602001604051908101604052809291908181526020018280546130ea906162b6565b80156131375780601f1061310c57610100808354040283529160200191613137565b820191906000526020600020905b81548152906001019060200180831161311a57829003601f168201915b50505050508152602001906001019061309f565b50505060048601805460408051602080840282018101909252828152935060009084015b8282101561321b57838290600052602060002001805461318e906162b6565b80601f01602080910402602001604051908101604052809291908181526020018280546131ba906162b6565b80156132075780601f106131dc57610100808354040283529160200191613207565b820191906000526020600020905b8154815290600101906020018083116131ea57829003601f168201915b50505050508152602001906001019061316f565b50505050613bf1565b600984015483546040805160208084028201810190925282815291869183018282801561327a57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161325c575b50505050509350828054806020026020016040519081016040528092919081815260200182805480156132cc57602002820191906000526020600020905b8154815260200190600101908083116132b8575b505050505092509450945094509450509193509193565b6000806132f2868686866127c1565b600081815261019360205260409020549091506001600160a01b031633811480613346575061331f61269a565b61334482600161332d611edf565b6133379190616419565b65ffffffffffff166129b5565b105b6133a25760405162461bcd60e51b815260206004820152602760248201527f476f7665726e6f72427261766f3a2070726f706f7365722061626f76652074686044820152661c995cda1bdb1960ca1b60648201526084016103f0565b61166d87878787614347565b600063ffffffff8211156134135760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201526532206269747360d01b60648201526084016103f0565b5090565b81546000908181600581111561347457600061343284614355565b61343c90856164ac565b60008881526020902090915081015463ffffffff908116908716101561346457809150613472565b61346f816001616406565b92505b505b60006134828787858561443d565b905080156134bd576134a7876134996001846164ac565b600091825260209091200190565b54600160201b90046001600160e01b031661166d565b6000979650505050505050565b6101615460408051918252602082018390527fc565b045403dc03c2eea82b81a0465edad9e2e7fc4d97e11421c209da93d7a93910160405180910390a161016155565b61028f5460ff166135b6576a084595161401484a0000006120056001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613564573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135889190616331565b10156135a7576040516311b6707f60e01b815260040160405180910390fd5b61028f805460ff191660011790555b565b600061361433868686516001600160401b038111156135d9576135d9615744565b60405190808252806020026020018201604052801561360c57816020015b60608152602001906001900390816135f75790505b508787613b33565b6116bc85858585614493565b600054610100900460ff166136475760405162461bcd60e51b81526004016103f090616622565b61366e816136696040805180820190915260018152603160f81b602082015290565b614872565b610fbc816148c1565b600054610100900460ff1661369e5760405162461bcd60e51b81526004016103f090616622565b6136a98383836148f9565b505050565b600054610100900460ff166135b65760405162461bcd60e51b81526004016103f090616622565b600054610100900460ff166136fc5760405162461bcd60e51b81526004016103f090616622565b610fbc8161493b565b600054610100900460ff1661372c5760405162461bcd60e51b81526004016103f090616622565b610fbc81614985565b600054610100900460ff1661375c5760405162461bcd60e51b81526004016103f090616622565b610fbc816149ac565b600054610100900460ff1661378c5760405162461bcd60e51b81526004016103f090616622565b610fbc816149d3565b606060678054610fcf906162b6565b606060688054610fcf906162b6565b600065ffffffffffff8211156134135760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203460448201526538206269747360d01b60648201526084016103f0565b6101c554604051630748d63560e31b81526001600160a01b038581166004830152602482018590526000921690633a46b1a890604401602060405180830381865afa15801561386d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f609190616331565b805460009080156120b2576138ab836134996001846164ac565b54600160201b90046001600160e01b0316611f63565b6101f854604080516001600160a01b03928316815291831660208301527f08f74ea46ef7894f65eabfb5e6e695de773a000b47c529ab559178069b226401910160405180910390a16101f880546001600160a01b0319166001600160a01b0392909216919091179055565b60008160405160200161393f919061666d565b6040516020818303038152906040528051906020012083604051602001613966919061666d565b6040516020818303038152906040528051906020012014905092915050565b015190565b600081116139ea5760405162461bcd60e51b815260206004820152602760248201527f476f7665726e6f7253657474696e67733a20766f74696e6720706572696f6420604482015266746f6f206c6f7760c81b60648201526084016103f0565b6101625460408051918252602082018390527f7e3f7f0708a84de9203036abaa450dccc85ad5ff52f78c170f3edb55cf5e8828910160405180910390a161016255565b6101635460408051918252602082018390527fccb45da8d5717e6c4544694297c4ba5cf151d455c9bb0ed4fc7a38411bc05461910160405180910390a161016355565b61025c54604080516001600160401b03928316815291831660208301527f7ca4ac117ed3cdce75c1161d8207c440389b1a15d69d096831664657c07dafc2910160405180910390a161025c805467ffffffffffffffff19166001600160401b0392909216919091179055565b60008181526101306020526040812060010154610e36906001600160401b0316600084815261025d60205260409020546001600160401b03166149fa565b60608315613b29575081611f63565b611f638383614a10565b805160208201206000613b518787613b4b8888613bf1565b856127c1565b600081815261019360205260409020600981015491925090613be65780546001600160a01b0319166001600160a01b038a161781558751613b9b90600183019060208b01906154df565b508651613bb190600283019060208a0190615540565b508551613bc7906003830190602089019061557b565b508451613bdd90600483019060208801906155cd565b50600981018390555b505050505050505050565b6060600082516001600160401b03811115613c0e57613c0e615744565b604051908082528060200260200182016040528015613c4157816020015b6060815260200190600190039081613c2c5790505b50905060005b8151811015613d1b57848181518110613c6257613c626164bf565b602002602001015151600014613cd257848181518110613c8457613c846164bf565b602002602001015180519060200120848281518110613ca557613ca56164bf565b6020026020010151604051602001613cbe929190616689565b604051602081830303815290604052613ced565b838181518110613ce457613ce46164bf565b60200260200101515b828281518110613cff57613cff6164bf565b602002602001018190525080613d14906164d5565b9050613c47565b509392505050565b600063288ace0360e11b6318df743f60e31b63bf26d89760e01b6379dd796f60e01b6001600160e01b03198616821480613d6957506001600160e01b0319868116908216145b80613d8057506001600160e01b0319868116908516145b80613d9b57506001600160e01b03198616630271189760e51b145b8061196a57506301ffc9a760e01b6001600160e01b03198716149695505050505050565b6000610d6b614a3a565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115613e005750600090506003613e84565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015613e54573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116613e7d57600060019250925050613e84565b9150600090505b94509492505050565b6000816004811115613ea157613ea1615cef565b03613ea95750565b6001816004811115613ebd57613ebd615cef565b03613f0a5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016103f0565b6002816004811115613f1e57613f1e615cef565b03613f6b5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016103f0565b6003816004811115613f7f57613f7f615cef565b03610fbc5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016103f0565b600080613fe78787878787614aae565b600088815261025d60205260409020549091506001600160401b0316158015614014575061401487614c04565b1561196a57600061402e61025c546001600160401b031690565b614036611edf565b65ffffffffffff1661404891906166ba565b9050614053886126a6565b816001600160401b031611156140a2576040516001600160401b038216815288907f541f725fb9f7c98a30cc9c0ff32fbb14358cd7159c847a3aa20a2bdc442ba5119060200160405180910390a25b600088815261025d60205260409020805467ffffffffffffffff19166001600160401b03929092169190911790559695505050505050565b60006001600160e01b038211156134135760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20326044820152663234206269747360c81b60648201526084016103f0565b600080614151858585614c44565b915091505b935093915050565b8154600160801b90819004600f0b6000818152600180860160205260409091209390935583546001600160801b03908116939091011602179055565b6101f85460405163e38335e560e01b81526001600160a01b039091169063e38335e59034906141d690889088908890600090899060040161634a565b6000604051808303818588803b1580156141ef57600080fd5b505af1158015614203573d6000803e3d6000fd5b50505050505050505050565b600081815261013060205260408120600281015460ff16156142345750600792915050565b6002810154610100900460ff161561424f5750600292915050565b600083815261013060205260408120546001600160401b0316908190036142b85760405162461bcd60e51b815260206004820152601d60248201527f476f7665726e6f723a20756e6b6e6f776e2070726f706f73616c20696400000060448201526064016103f0565b60006142c2611edf565b65ffffffffffff1690508082106142de57506000949350505050565b60006142e9866126a6565b90508181106142fe5750600195945050505050565b61430786614c04565b801561432a57506000868152610193602052604090206006810154600590910154115b1561433b5750600495945050505050565b50600395945050505050565b60006116bc85858585614de3565b60008160000361436757506000919050565b6000600161437484614e99565b901c6001901b9050600181848161438d5761438d6165c8565b048201901c905060018184816143a5576143a56165c8565b048201901c905060018184816143bd576143bd6165c8565b048201901c905060018184816143d5576143d56165c8565b048201901c905060018184816143ed576143ed6165c8565b048201901c90506001818481614405576144056165c8565b048201901c9050600181848161441d5761441d6165c8565b048201901c9050611f6381828581614437576144376165c8565b04614f2d565b60005b81831015613d1b5760006144548484614f3c565b60008781526020902090915063ffffffff86169082015463ffffffff16111561447f5780925061448d565b61448a816001616406565b93505b50614440565b6000336144a08184614f57565b6144ec5760405162461bcd60e51b815260206004820152601d60248201527f476f7665726e6f723a2070726f706f736572207265737472696374656400000060448201526064016103f0565b60006144f6611edf565b65ffffffffffff16905061450861269a565b61451783610cb16001856164ac565b101561457f5760405162461bcd60e51b815260206004820152603160248201527f476f7665726e6f723a2070726f706f73657220766f7465732062656c6f7720706044820152701c9bdc1bdcd85b081d1a1c995cda1bdb19607a1b60648201526084016103f0565b600061459488888888805190602001206127c1565b905086518851146145b75760405162461bcd60e51b81526004016103f0906166da565b85518851146145d85760405162461bcd60e51b81526004016103f0906166da565b60008851116146295760405162461bcd60e51b815260206004820152601860248201527f476f7665726e6f723a20656d7074792070726f706f73616c000000000000000060448201526064016103f0565b600081815261013060205260409020546001600160401b0316156146995760405162461bcd60e51b815260206004820152602160248201527f476f7665726e6f723a2070726f706f73616c20616c72656164792065786973746044820152607360f81b60648201526084016103f0565b60006146a56101615490565b6146af9084616406565b905060006146bd6101625490565b6146c79083616406565b90506040518060e001604052806146dd84615048565b6001600160401b031681526001600160a01b03871660208201526000604082015260600161470a83615048565b6001600160401b03908116825260006020808401829052604080850183905260609485018390528883526101308252918290208551815492870151878501519186166001600160e01b031990941693909317600160401b6001600160a01b039094168402176001600160e01b0316600160e01b60e09290921c91909102178155938501516080860151908416921c0217600183015560a08301516002909201805460c09094015161ffff1990941692151561ff00191692909217610100931515939093029290921790558a517f7d84a6263ae0d98d3329bd7b46bb4e8d6f98cd35a7adb45c274c8b7fd5ebd5e091859188918e918e9181111561480f5761480f615744565b60405190808252806020026020018201604052801561484257816020015b606081526020019060019003908161482d5790505b508d88888f60405161485c9998979695949392919061671b565b60405180910390a1509098975050505050505050565b600054610100900460ff166148995760405162461bcd60e51b81526004016103f090616622565b60676148a583826167f9565b5060686148b282826167f9565b50506000606581905560665550565b600054610100900460ff166148e85760405162461bcd60e51b81526004016103f090616622565b61012f6148f582826167f9565b5050565b600054610100900460ff166149205760405162461bcd60e51b81526004016103f090616622565b614929836134ca565b6149328261398a565b6136a981613a2d565b600054610100900460ff166149625760405162461bcd60e51b81526004016103f090616622565b6101c580546001600160a01b0319166001600160a01b0392909216919091179055565b600054610100900460ff166120165760405162461bcd60e51b81526004016103f090616622565b600054610100900460ff16610fb35760405162461bcd60e51b81526004016103f090616622565b600054610100900460ff1661287a5760405162461bcd60e51b81526004016103f090616622565b6000818311614a095781611f63565b5090919050565b815115614a205781518083602001fd5b8060405162461bcd60e51b81526004016103f091906158fd565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f614a656150b0565b614a6d615109565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b6000858152610130602052604081206001614ac888611678565b6007811115614ad957614ad9615cef565b14614b325760405162461bcd60e51b815260206004820152602360248201527f476f7665726e6f723a20766f7465206e6f742063757272656e746c792061637460448201526269766560e81b60648201526084016103f0565b8054600090614b4c9088906001600160401b03168661381a565b9050614b5b888888848861513a565b8351600003614bb057866001600160a01b03167fb8e138887d0aa13bab447e82de9d5c1777041ecd21ca36ba824ff1e6c07ddda489888489604051614ba394939291906168b8565b60405180910390a261166d565b866001600160a01b03167fe2babfbac5889a709b63bb7f598b324e08bc5a4fb9ec647fb3cbc9ec07eb87128988848989604051614bf19594939291906168e0565b60405180910390a2979650505050505050565b6000818152610193602052604081206005810154614c3b610d1d85600090815261013060205260409020546001600160401b031690565b11159392505050565b825460009081908015614d8a576000614c62876134996001856164ac565b60408051808201909152905463ffffffff808216808452600160201b9092046001600160e01b031660208401529192509087161015614ce35760405162461bcd60e51b815260206004820152601b60248201527f436865636b706f696e743a2064656372656173696e67206b657973000000000060448201526064016103f0565b805163ffffffff808816911603614d2b5784614d04886134996001866164ac565b80546001600160e01b0392909216600160201b0263ffffffff909216919091179055614d7a565b6040805180820190915263ffffffff80881682526001600160e01b0380881660208085019182528b54600181018d5560008d81529190912094519151909216600160201b029216919091179101555b6020015192508391506141569050565b50506040805180820190915263ffffffff80851682526001600160e01b0380851660208085019182528854600181018a5560008a815291822095519251909316600160201b029190931617920191909155905081614156565b600080614df2868686866152d8565b60008181526101f96020526040902054909150156116bc576101f85460008281526101f960205260409081902054905163c4d252f560e01b81526001600160a01b039092169163c4d252f591614e4e9160040190815260200190565b600060405180830381600087803b158015614e6857600080fd5b505af1158015614e7c573d6000803e3d6000fd5b50505060008281526101f960205260408120555095945050505050565b600080608083901c15614eae57608092831c92015b604083901c15614ec057604092831c92015b602083901c15614ed257602092831c92015b601083901c15614ee457601092831c92015b600883901c15614ef657600892831c92015b600483901c15614f0857600492831c92015b600283901c15614f1a57600292831c92015b600183901c15610e365760010192915050565b6000818310614a095781611f63565b6000614f4b60028484186165de565b611f6390848416616406565b80516000906034811015614f6f576001915050610e36565b82810160131901516001600160a01b031981166b046e0e4dee0dee6cae47a60f60a31b14614fa257600192505050610e36565b600080614fb06028856164ac565b90505b8381101561502757600080614fe7888481518110614fd357614fd36164bf565b01602001516001600160f81b0319166153e5565b9150915081614fff5760019650505050505050610e36565b8060ff166004856001600160a01b0316901b179350505080615020906164d5565b9050614fb3565b50856001600160a01b0316816001600160a01b031614935050505092915050565b60006001600160401b038211156134135760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203660448201526534206269747360d01b60648201526084016103f0565b6000806150bb613795565b8051909150156150d2578051602090910120919050565b60655480156150e15792915050565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4709250505090565b6000806151146137a4565b80519091501561512b578051602090910120919050565b60665480156150e15792915050565b6000858152610193602090815260408083206001600160a01b038816845260088101909252909120805460ff16156151ca5760405162461bcd60e51b815260206004820152602d60248201527f476f7665726e6f72436f6d7061746962696c697479427261766f3a20766f746560448201526c08185b1c9958591e4818d85cdd609a1b60648201526084016103f0565b805460ff86166101000261ffff199091161760011781556151ea84615477565b81546001600160601b039190911662010000026dffffffffffffffffffffffff00001990911617815560ff851661523a578382600601600082825461522f9190616406565b909155506127b89050565b60001960ff86160161525a578382600501600082825461522f9190616406565b60011960ff86160161527a578382600701600082825461522f9190616406565b60405162461bcd60e51b815260206004820152602d60248201527f476f7665726e6f72436f6d7061746962696c697479427261766f3a20696e766160448201526c6c696420766f7465207479706560981b60648201526084016103f0565b6000806152e7868686866127c1565b905060006152f482611678565b9050600281600781111561530a5761530a615cef565b1415801561532a5750600681600781111561532757615327615cef565b14155b80156153485750600781600781111561534557615345615cef565b14155b6153945760405162461bcd60e51b815260206004820152601d60248201527f476f7665726e6f723a2070726f706f73616c206e6f742061637469766500000060448201526064016103f0565b6000828152610130602052604090819020600201805461ff001916610100179055517f789cf55be980739dad1d0699b93b58e806b51c9d96619bfa8fe0a28abaa7b30c906112459084815260200190565b60008060f883901c602f811180156154005750603a8160ff16105b1561541557600194602f199091019350915050565b8060ff16604010801561542b575060478160ff16105b15615440576001946036199091019350915050565b8060ff166060108015615456575060678160ff16105b1561546b576001946056199091019350915050565b50600093849350915050565b60006001600160601b038211156134135760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203960448201526536206269747360d01b60648201526084016103f0565b828054828255906000526020600020908101928215615534579160200282015b8281111561553457825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906154ff565b5061341392915061561f565b828054828255906000526020600020908101928215615534579160200282015b82811115615534578251825591602001919060010190615560565b8280548282559060005260206000209081019282156155c1579160200282015b828111156155c157825182906155b190826167f9565b509160200191906001019061559b565b50613413929150615634565b828054828255906000526020600020908101928215615613579160200282015b82811115615613578251829061560390826167f9565b50916020019190600101906155ed565b50613413929150615651565b5b808211156134135760008155600101615620565b80821115613413576000615648828261566e565b50600101615634565b80821115613413576000615665828261566e565b50600101615651565b50805461567a906162b6565b6000825580601f1061568a575050565b601f016020900490600052602060002090810190610fbc919061561f565b6000602082840312156156ba57600080fd5b5035919050565b6000602082840312156156d357600080fd5b81356001600160e01b031981168114611f6357600080fd5b803560ff8116811461176d57600080fd5b60008083601f84011261570e57600080fd5b5081356001600160401b0381111561572557600080fd5b60208301915083602082850101111561573d57600080fd5b9250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561578257615782615744565b604052919050565b60006001600160401b038211156157a3576157a3615744565b50601f01601f191660200190565b600082601f8301126157c257600080fd5b81356157d56157d08261578a565b61575a565b8181528460208386010111156157ea57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060008060008060e0898b03121561582357600080fd5b8835975061583360208a016156eb565b965060408901356001600160401b038082111561584f57600080fd5b61585b8c838d016156fc565b909850965060608b013591508082111561587457600080fd5b506158818b828c016157b1565b94505061589060808a016156eb565b925060a0890135915060c089013590509295985092959890939650565b60005b838110156158c85781810151838201526020016158b0565b50506000910152565b600081518084526158e98160208601602086016158ad565b601f01601f19169290920160200192915050565b602081526000611f6360208301846158d1565b6001600160a01b0381168114610fbc57600080fd5b6000806000806080858703121561593b57600080fd5b843561594681615910565b9350602085013561595681615910565b92506040850135915060608501356001600160401b0381111561597857600080fd5b615984878288016157b1565b91505092959194509250565b60006001600160401b038211156159a9576159a9615744565b5060051b60200190565b600082601f8301126159c457600080fd5b813560206159d46157d083615990565b82815260059290921b840181019181810190868411156159f357600080fd5b8286015b84811015615a17578035615a0a81615910565b83529183019183016159f7565b509695505050505050565b600082601f830112615a3357600080fd5b81356020615a436157d083615990565b82815260059290921b84018101918181019086841115615a6257600080fd5b8286015b84811015615a175780358352918301918301615a66565b600082601f830112615a8e57600080fd5b81356020615a9e6157d083615990565b82815260059290921b84018101918181019086841115615abd57600080fd5b8286015b84811015615a175780356001600160401b03811115615ae05760008081fd5b615aee8986838b01016157b1565b845250918301918301615ac1565b60008060008060808587031215615b1257600080fd5b84356001600160401b0380821115615b2957600080fd5b615b35888389016159b3565b95506020870135915080821115615b4b57600080fd5b615b5788838901615a22565b94506040870135915080821115615b6d57600080fd5b50615b7a87828801615a7d565b949793965093946060013593505050565b600081518084526020808501945080840160005b83811015615bc45781516001600160a01b031687529582019590820190600101615b9f565b509495945050505050565b600081518084526020808501945080840160005b83811015615bc457815187529582019590820190600101615be3565b600081518084526020808501808196508360051b8101915082860160005b85811015615c47578284038952615c358483516158d1565b98850198935090840190600101615c1d565b5091979650505050505050565b608081526000615c676080830187615b8b565b8281036020840152615c798187615bcf565b90508281036040840152615c8d8186615bff565b9050828103606084015261166d8185615bff565b600080600080600060a08688031215615cb957600080fd5b85359450615cc9602087016156eb565b9350615cd7604087016156eb565b94979396509394606081013594506080013592915050565b634e487b7160e01b600052602160045260246000fd5b6020810160088310615d2757634e487b7160e01b600052602160045260246000fd5b91905290565b60008060408385031215615d4057600080fd5b823591506020830135615d5281615910565b809150509250929050565b600060208284031215615d6f57600080fd5b8135611f6381615910565b60008060408385031215615d8d57600080fd5b82359150615d9d602084016156eb565b90509250929050565b600080600080600060808688031215615dbe57600080fd5b85359450615dce602087016156eb565b935060408601356001600160401b0380821115615dea57600080fd5b615df689838a016156fc565b90955093506060880135915080821115615e0f57600080fd5b50615e1c888289016157b1565b9150509295509295909350565b60008060008060608587031215615e3f57600080fd5b84359350615e4f602086016156eb565b925060408501356001600160401b03811115615e6a57600080fd5b615e76878288016156fc565b95989497509550505050565b60008060008060808587031215615e9857600080fd5b84356001600160401b0380821115615eaf57600080fd5b615ebb888389016159b3565b95506020870135915080821115615ed157600080fd5b615edd88838901615a22565b94506040870135915080821115615ef357600080fd5b615eff88838901615a7d565b93506060870135915080821115615f1557600080fd5b50615984878288016157b1565b60ff60f81b8816815260e060208201526000615f4160e08301896158d1565b8281036040840152615f5381896158d1565b606084018890526001600160a01b038716608085015260a0840186905283810360c08501529050610f268185615bcf565b600080600060608486031215615f9957600080fd5b8335615fa481615910565b92506020840135915060408401356001600160401b03811115615fc657600080fd5b615fd2868287016157b1565b9150509250925092565b60008060008060408587031215615ff257600080fd5b84356001600160401b038082111561600957600080fd5b616015888389016156fc565b9096509450602087013591508082111561602e57600080fd5b50615e76878288016156fc565b600080600080600060a0868803121561605357600080fd5b853561605e81615910565b9450602086013561606e81615910565b935060408601356001600160401b038082111561608a57600080fd5b61609689838a01615a22565b945060608801359150808211156160ac57600080fd5b6160b889838a01615a22565b93506080880135915080821115615e0f57600080fd5b600080600080606085870312156160e457600080fd5b84356160ef81615910565b93506020850135925060408501356001600160401b03811115615e6a57600080fd5b60006020828403121561612357600080fd5b81356001600160401b0381168114611f6357600080fd5b600080600080600060a0868803121561615257600080fd5b85356001600160401b038082111561616957600080fd5b61617589838a016159b3565b9650602088013591508082111561618b57600080fd5b61619789838a01615a22565b955060408801359150808211156161ad57600080fd5b6161b989838a01615a7d565b945060608801359150808211156161cf57600080fd5b6160b889838a01615a7d565b600080604083850312156161ee57600080fd5b82356161f981615910565b946020939093013593505050565b600080600080600060a0868803121561621f57600080fd5b853561622a81615910565b9450602086013561623a81615910565b9350604086013592506060860135915060808601356001600160401b0381111561626357600080fd5b615e1c888289016157b1565b8183823760009101908152919050565b60208082526018908201527f476f7665726e6f723a206f6e6c79476f7665726e616e63650000000000000000604082015260600190565b600181811c908216806162ca57607f821691505b6020821081036162ea57634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526021908201527f476f7665726e6f723a2070726f706f73616c206e6f74207375636365737366756040820152601b60fa1b606082015260800190565b60006020828403121561634357600080fd5b5051919050565b60a08152600061635d60a0830188615b8b565b828103602084015261636f8188615bcf565b905082810360408401526163838187615bff565b60608401959095525050608001529392505050565b60c0815260006163ab60c0830189615b8b565b82810360208401526163bd8189615bcf565b905082810360408401526163d18188615bff565b60608401969096525050608081019290925260a0909101529392505050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610e3657610e366163f0565b65ffffffffffff828116828216039080821115616438576164386163f0565b5092915050565b60006020828403121561645157600080fd5b81516001600160401b0381111561646757600080fd5b8201601f8101841361647857600080fd5b80516164866157d08261578a565b81815285602083850101111561649b57600080fd5b6116bc8260208301602086016158ad565b81810381811115610e3657610e366163f0565b634e487b7160e01b600052603260045260246000fd5b6000600182016164e7576164e76163f0565b5060010190565b60006020828403121561650057600080fd5b815165ffffffffffff81168114611f6357600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b604081526000616553604083018688616516565b828103602084015261166d818587616516565b6080815260006165796080830187615b8b565b828103602084015261658b8187615bcf565b9050828103604084015261659f8186615bff565b91505082606083015295945050505050565b8082028115828204841417610e3657610e366163f0565b634e487b7160e01b600052601260045260246000fd5b6000826165fb57634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561661257600080fd5b81518015158114611f6357600080fd5b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6000825161667f8184602087016158ad565b9190910192915050565b6001600160e01b03198316815281516000906166ac8160048501602087016158ad565b919091016004019392505050565b6001600160401b03818116838216019080821115616438576164386163f0565b60208082526021908201527f476f7665726e6f723a20696e76616c69642070726f706f73616c206c656e67746040820152600d60fb1b606082015260800190565b8981526001600160a01b0389166020820152610120604082018190526000906167468382018b615b8b565b9050828103606084015261675a818a615bcf565b9050828103608084015261676e8189615bff565b905082810360a08401526167828188615bff565b90508560c08401528460e08401528281036101008401526167a381856158d1565b9c9b505050505050505050505050565b601f8211156136a957600081815260208120601f850160051c810160208610156167da5750805b601f850160051c820191505b818110156116a6578281556001016167e6565b81516001600160401b0381111561681257616812615744565b6168268161682084546162b6565b846167b3565b602080601f83116001811461685b57600084156168435750858301515b600019600386901b1c1916600185901b1785556116a6565b600085815260208120601f198616915b8281101561688a5788860151825594840194600190910190840161686b565b50858210156168a85787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b84815260ff8416602082015282604082015260806060820152600061196a60808301846158d1565b85815260ff8516602082015283604082015260a06060820152600061690860a08301856158d1565b828103608084015261691a81856158d1565b9897505050505050505056fe476f7665726e6f723a2072656c617920726576657274656420776974686f7574206d657373616765a164736f6c6343000811000a", + Code: "6080604052600436106103bc5760003560e01c80637b3c71d3116101f2578063c28bc2fa1161010d578063e23a9a52116100a0578063f23a6e611161006f578063f23a6e6114610d73578063f8ce560a14610d9f578063fc0c546a14610dbf578063fe0d94c114610de057600080fd5b8063e23a9a5214610c48578063ea0217cf14610d13578063eb9019d414610d33578063ece40cc114610d5357600080fd5b8063da95691a116100dc578063da95691a14610b8e578063dd4e2ba514610bae578063ddf0b00914610bf4578063deaaa7cc14610c1457600080fd5b8063c28bc2fa14610b1c578063c59057e414610b2f578063d07f91e914610b4f578063d33219b414610b6f57600080fd5b8063a7713a7011610185578063b58131b011610154578063b58131b014610aa0578063bc197c8114610ab5578063c01f9e3714610ae1578063c170ec0b14610b0157600080fd5b8063a7713a7014610a2b578063a890c91014610a40578063ab58fb8e14610a60578063ac43175114610a8057600080fd5b806384b0196e116101c157806384b0196e146109a357806391ddadf4146109cb57806397c3d334146109f75780639a802a6d14610a0b57600080fd5b80637b3c71d3146109395780637d5e81e2146109595780638129fc1c146109795780638456cb591461098e57600080fd5b806332b8113e116102e2578063533ddd14116102755780635f398a14116102445780635f398a14146108b257806360c4247f146108d257806363d42b38146108f257806370b0f6601461091957600080fd5b8063533ddd141461081757806354fd4d501461084857806356781388146108725780635c975abb1461089257600080fd5b806340e58ee5116102b157806340e58ee5146107775780634385963214610797578063452115d6146107e25780634bf5d7e91461080257600080fd5b806332b8113e146106eb5780633932abb1146107145780633bccf4fd1461072a5780633e4f49e61461074a57600080fd5b8063143489d01161035a5780632656227d116103295780632656227d1461063d5780632d63f693146106505780632fe3e26114610687578063328dd982146106bb57600080fd5b8063143489d01461056e578063150b7a02146105c4578063160cbed71461060857806324bc1a641461062857600080fd5b8063034201811161039657806303420181146104f7578063046f7da21461051757806306f3f9e61461052c57806306fdde031461054c57600080fd5b8063013cf08b1461042c57806301ffc9a7146104a757806302a251a3146104d757600080fd5b3661042757306103ca610df3565b6001600160a01b0316146104255760405162461bcd60e51b815260206004820152601f60248201527f476f7665726e6f723a206d7573742073656e6420746f206578656375746f720060448201526064015b60405180910390fd5b005b600080fd5b34801561043857600080fd5b5061044c61044736600461585e565b610e0d565b604080519a8b526001600160a01b0390991660208b0152978901969096526060880194909452608087019290925260a086015260c085015260e084015215156101008301521515610120820152610140015b60405180910390f35b3480156104b357600080fd5b506104c76104c2366004615877565b610ec8565b604051901515815260200161049e565b3480156104e357600080fd5b50610162545b60405190815260200161049e565b34801561050357600080fd5b506104e96105123660046159bd565b610ed9565b34801561052357600080fd5b50610425610fd1565b34801561053857600080fd5b5061042561054736600461585e565b61103a565b34801561055857600080fd5b506105616110c5565b60405161049e9190615ab3565b34801561057a57600080fd5b506105ac61058936600461585e565b60009081526101306020526040902054600160401b90046001600160a01b031690565b6040516001600160a01b03909116815260200161049e565b3480156105d057600080fd5b506105ef6105df366004615adb565b630a85bd0160e11b949350505050565b6040516001600160e01b0319909116815260200161049e565b34801561061457600080fd5b506104e9610623366004615cb2565b611158565b34801561063457600080fd5b506104e961135d565b6104e961064b366004615cb2565b611383565b34801561065c57600080fd5b506104e961066b36600461585e565b600090815261013060205260409020546001600160401b031690565b34801561069357600080fd5b506104e97fb3b3f3b703cd84ce352197dcff232b1b5d3cfb2025ce47cf04742d0651f1af8881565b3480156106c757600080fd5b506106db6106d636600461585e565b611476565b60405161049e9493929190615e0a565b3480156106f757600080fd5b5061025c546040516001600160401b03909116815260200161049e565b34801561072057600080fd5b50610161546104e9565b34801561073657600080fd5b506104e9610745366004615e57565b611708565b34801561075657600080fd5b5061076a61076536600461585e565b61177e565b60405161049e9190615ebb565b34801561078357600080fd5b5061042561079236600461585e565b611789565b3480156107a357600080fd5b506104c76107b2366004615ee3565b6000828152610193602090815260408083206001600160a01b038516845260080190915290205460ff1692915050565b3480156107ee57600080fd5b506104e96107fd366004615cb2565b6117b4565b34801561080e57600080fd5b506105616117cb565b34801561082357600080fd5b506104c7610832366004615f13565b61028e6020526000908152604090205460ff1681565b34801561085457600080fd5b506040805180820190915260018152603160f81b6020820152610561565b34801561087e57600080fd5b506104e961088d366004615f30565b611878565b34801561089e57600080fd5b5061028f546104c790610100900460ff1681565b3480156108be57600080fd5b506104e96108cd366004615f5c565b6118a1565b3480156108de57600080fd5b506104e96108ed36600461585e565b6118eb565b3480156108fe57600080fd5b5061028f546105ac906201000090046001600160a01b031681565b34801561092557600080fd5b5061042561093436600461585e565b6119a0565b34801561094557600080fd5b506104e9610954366004615fdf565b611a28565b34801561096557600080fd5b506104e9610974366004616038565b611a7a565b34801561098557600080fd5b50610425611b0a565b34801561099a57600080fd5b50610425611f60565b3480156109af57600080fd5b506109b8611fcd565b60405161049e97969594939291906160d8565b3480156109d757600080fd5b506109e061206b565b60405165ffffffffffff909116815260200161049e565b348015610a0357600080fd5b5060646104e9565b348015610a1757600080fd5b506104e9610a2636600461613a565b6120df565b348015610a3757600080fd5b506104e96120f6565b348015610a4c57600080fd5b50610425610a5b366004615f13565b612123565b348015610a6c57600080fd5b506104e9610a7b36600461585e565b6121ab565b348015610a8c57600080fd5b50610425610a9b366004616192565b612247565b348015610aac57600080fd5b506104e9612826565b348015610ac157600080fd5b506105ef610ad03660046161f1565b63bc197c8160e01b95945050505050565b348015610aed57600080fd5b506104e9610afc36600461585e565b612832565b348015610b0d57600080fd5b5061028f546104c79060ff1681565b610425610b2a366004616284565b61283d565b348015610b3b57600080fd5b506104e9610b4a366004615cb2565b61294d565b348015610b5b57600080fd5b50610425610b6a3660046162c7565b612987565b348015610b7b57600080fd5b506101f8546001600160a01b03166105ac565b348015610b9a57600080fd5b506104e9610ba93660046162f0565b612a0f565b348015610bba57600080fd5b5060408051808201909152601a81527f737570706f72743d627261766f2671756f72756d3d627261766f0000000000006020820152610561565b348015610c0057600080fd5b50610425610c0f36600461585e565b612a96565b348015610c2057600080fd5b506104e97f150214d74d59b7d1e90c73fc22ef3d991dd0a76b046543d4d80ab92d2a50328f81565b348015610c5457600080fd5b50610ce3610c63366004615ee3565b6040805160608101825260008082526020820181905291810191909152506000918252610193602090815260408084206001600160a01b0393909316845260089092018152918190208151606081018352905460ff8082161515835261010082041693820193909352620100009092046001600160601b03169082015290565b6040805182511515815260208084015160ff1690820152918101516001600160601b03169082015260600161049e565b348015610d1f57600080fd5b50610425610d2e36600461585e565b612ab9565b348015610d3f57600080fd5b506104e9610d4e366004616391565b612b41565b348015610d5f57600080fd5b50610425610d6e36600461585e565b612b62565b348015610d7f57600080fd5b506105ef610d8e3660046163bd565b63f23a6e6160e01b95945050505050565b348015610dab57600080fd5b506104e9610dba36600461585e565b612bea565b348015610dcb57600080fd5b506101c5546105ac906001600160a01b031681565b610425610dee36600461585e565b612c79565b6000610e086101f8546001600160a01b031690565b905090565b8060008080808080808080610e218a6121ab565b60008c815261013060205260409020549098506001600160401b03169650610e488b612832565b60008c81526101936020526040812080546005820154600683015460078401546001600160a01b039093169e50949a509850929650919450610e898d61177e565b90506002816007811115610e9f57610e9f615ea5565b1493506007816007811115610eb657610eb6615ea5565b14925050509193959799509193959799565b6000610ed382612c9c565b92915050565b600080610f7d610f757fb3b3f3b703cd84ce352197dcff232b1b5d3cfb2025ce47cf04742d0651f1af888c8c8c8c604051610f15929190616425565b60405180910390208b80519060200120604051602001610f5a959493929190948552602085019390935260ff9190911660408401526060830152608082015260a00190565b60405160208183030381529060405280519060200120612cc1565b868686612cee565b9050610fc38a828b8b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508d9250612d0c915050565b9a9950505050505050505050565b61028f546201000090046001600160a01b0316331461100357604051631431806f60e11b815260040160405180910390fd5b61028f805461ff00191690556040517f62451d457bc659158be6e6247f56ec1df424a5c7597f71c20c2bc44e0965c8f990600090a1565b611042610df3565b6001600160a01b0316336001600160a01b0316146110725760405162461bcd60e51b815260040161041c90616435565b3061107b610df3565b6001600160a01b0316146110b9576000803660405161109b929190616425565b604051809103902090505b806110b2610131612d1b565b036110a657505b6110c281612d9a565b50565b606061012f80546110d59061646c565b80601f01602080910402602001604051908101604052809291908181526020018280546111019061646c565b801561114e5780601f106111235761010080835404028352916020019161114e565b820191906000526020600020905b81548152906001019060200180831161113157829003601f168201915b5050505050905090565b6000806111678686868661294d565b905060046111748261177e565b600781111561118557611185615ea5565b146111a25760405162461bcd60e51b815260040161041c906164a6565b6101f8546040805163793d064960e11b815290516000926001600160a01b03169163f27a0c929160048083019260209291908290030181865afa1580156111ed573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061121191906164e7565b6101f85460405163b1c5f42760e01b81529192506001600160a01b03169063b1c5f4279061124c908a908a908a906000908b90600401616500565b602060405180830381865afa158015611269573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061128d91906164e7565b60008381526101f96020526040808220929092556101f85491516308f2a0bb60e41b81526001600160a01b0390921691638f2a0bb0916112da918b918b918b91908b90899060040161654e565b600060405180830381600087803b1580156112f457600080fd5b505af1158015611308573d6000803e3d6000fd5b505050507f9a2e42fd6722813d69113e7d0079d3d940171428df7373df9c7f7617cfda289282824261133a91906165bc565b604080519283526020830191909152015b60405180910390a15095945050505050565b6000610e08600161136c61206b565b61137691906165cf565b65ffffffffffff16612bea565b6000806113928686868661294d565b9050600061139f8261177e565b905060048160078111156113b5576113b5615ea5565b14806113d2575060058160078111156113d0576113d0615ea5565b145b6113ee5760405162461bcd60e51b815260040161041c906164a6565b6000828152610130602052604090819020600201805460ff19166001179055517f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f9061143d9084815260200190565b60405180910390a16114528288888888612f0b565b61145f8288888888612fac565b61146c828888888861305d565b5095945050505050565b60608060608060006101936000878152602001908152602001600020905080600101816002018260030183600401838054806020026020016040519081016040528092919081815260200182805480156114f957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116114db575b505050505093508280548060200260200160405190810160405280929190818152602001828054801561154b57602002820191906000526020600020905b815481526020019060010190808311611537575b5050505050925081805480602002602001604051908101604052809291908181526020016000905b8282101561161f5783829060005260206000200180546115929061646c565b80601f01602080910402602001604051908101604052809291908181526020018280546115be9061646c565b801561160b5780601f106115e05761010080835404028352916020019161160b565b820191906000526020600020905b8154815290600101906020018083116115ee57829003601f168201915b505050505081526020019060010190611573565b50505050915080805480602002602001604051908101604052809291908181526020016000905b828210156116f25783829060005260206000200180546116659061646c565b80601f01602080910402602001604051908101604052809291908181526020018280546116919061646c565b80156116de5780601f106116b3576101008083540402835291602001916116de565b820191906000526020600020905b8154815290600101906020018083116116c157829003601f168201915b505050505081526020019060010190611646565b5050505090509450945094509450509193509193565b604080517f150214d74d59b7d1e90c73fc22ef3d991dd0a76b046543d4d80ab92d2a50328f602082015290810186905260ff85166060820152600090819061175690610f7590608001610f5a565b905061177387828860405180602001604052806000815250613098565b979650505050505050565b6000610ed3826130bb565b60008060008061179885613208565b93509350935093506117ac848484846117b4565b505050505050565b60006117c285858585613499565b95945050505050565b6101c55460408051634bf5d7e960e01b815290516060926001600160a01b031691634bf5d7e99160048083019260009291908290030181865afa92505050801561183757506040513d6000823e601f3d908101601f1916820160405261183491908101906165f5565b60015b611873575060408051808201909152601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c74000000602082015290565b919050565b60008033905061189984828560405180602001604052806000815250613098565b949350505050565b60008033905061177387828888888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a9250612d0c915050565b61022b5460009080820361190457505061022a54919050565b600061022b611914600184616662565b8154811061192457611924616675565b60009182526020918290206040805180820190915291015463ffffffff8116808352600160201b9091046001600160e01b0316928201929092529150841061197a57602001516001600160e01b03169392505050565b61198f61198685613564565b61022b906135cd565b6001600160e01b0316949350505050565b6119a8610df3565b6001600160a01b0316336001600160a01b0316146119d85760405162461bcd60e51b815260040161041c90616435565b306119e1610df3565b6001600160a01b031614611a1f5760008036604051611a01929190616425565b604051809103902090505b80611a18610131612d1b565b03611a0c57505b6110c281613680565b600080339050611a7086828787878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061309892505050565b9695505050505050565b6000611a846136c3565b60005b8551811015611afd5761028e6000878381518110611aa757611aa7616675565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16611aeb57604051630b094f2760e31b815260040160405180910390fd5b80611af58161668b565b915050611a87565b506117c28585858561376e565b600054610100900460ff1615808015611b2a5750600054600160ff909116105b80611b445750303b158015611b44575060005460ff166001145b611ba75760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161041c565b6000805460ff191660011790558015611bca576000805461ff0019166101001790555b334114611bea5760405163022d8c9560e31b815260040160405180910390fd5b3a15611c09576040516383f1b1d360e01b815260040160405180910390fd5b611c356040518060400160405280600b81526020016a2129a1a3b7bb32b93737b960a91b8152506137d6565b611c4f620151806212750068056bc75e2d6310000061382d565b611c57613864565b611c6261200561388b565b611c6d6120066138bb565b611c77600a6138eb565b611c836201518061391b565b61028e6020527ff0f52cefb444f33092ac77280e2ff9c808a9c078a96d3cd7513137548137ed8f8054600160ff1991821681179092557fb2c9e894c6f17bfc84a6708e0ea85c2729271d7cae0a8d875cd1080fb415e7a080548216831790557fd8ceb939a734f5a4e0a6fede9e31504e16ac856b555e8bac20ad743b9ff2976a80548216831790557f2a7b967fc66f4b36023165170b23a76f880d3dbbf244a856aeee9e670cef725980548216831790557fdb1a1113bac2e4f0e6f8c2f2bc4f6dbecf1fccb033d5df1b55b5c5ad6c20ac7980548216831790557f8b1888b379fb3b749668d86c5bf8aaada8e2276c6ced3a4efcc1e877827ce0b380548216831790557feeeea8d485053a64711f2c5802d2cc63251dd394956c140a2e30db7cef242ec580548216831790557f4cdb1a6c4b56f62f27f7202d75e865c2405f138cb32ec45019c0f2ca8f91e47280548216831790557f49d6c403a3197b15e024f109c83eb730d7af1a8b49fc6f820e09bad2597c14c980548216831790557f7a41b38ceb33f296c1ff3db5ffcc6542acb091d5fb27586f3c551dd2ebac063880548216831790557f701fe333ee20fad5d5a6a9930dddd3fb815af1d976d5250e394e39d6e4123e3880548216831790557fee7ba9842df249188adc0fc380980c3099f608b602924e083dd61e8e70845b4a80548216831790557f29973aeebf3c17f2c3a9cf7ace17f2798aa544e1ea7427938024cde6df46bac180548216831790557f74c0d6e29c82d6628d5f083f86fc15f0c6acef97321252a1eee0bd893dae276580548216831790556120066000527f1bdfc01e60036e5be56ae85d8394ddf727e1021b3d74de5b554fedea2de437678054909116909117905561028f805462010000600160b01b03191663dead000017905580156110c2576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b61028f546201000090046001600160a01b03163314611f9257604051631431806f60e11b815260040160405180910390fd5b61028f805461ff0019166101001790556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e75290600090a1565b6000606080600080600060606065546000801b148015611fed5750606654155b6120315760405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b604482015260640161041c565b61203961394b565b61204161395a565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b6101c554604080516324776b7d60e21b815290516000926001600160a01b0316916391ddadf49160048083019260209291908290030181865afa9250505080156120d2575060408051601f3d908101601f191682019092526120cf918101906166a4565b60015b61187357610e0843613969565b60006120ec8484846139d0565b90505b9392505050565b61022b546000901561211b5761210d61022b613a47565b6001600160e01b0316905090565b5061022a5490565b61212b610df3565b6001600160a01b0316336001600160a01b03161461215b5760405162461bcd60e51b815260040161041c90616435565b30612164610df3565b6001600160a01b0316146121a25760008036604051612184929190616425565b604051809103902090505b8061219b610131612d1b565b0361218f57505b6110c281613a77565b6101f85460008281526101f9602052604080822054905163d45c443560e01b81526004810191909152909182916001600160a01b039091169063d45c443590602401602060405180830381865afa15801561220a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061222e91906164e7565b90508060011461223e57806120ef565b60009392505050565b336110071461226d57604051630f22c43960e41b8152611007600482015260240161041c565b6122d36040518060400160405280600b81526020016a766f74696e6744656c617960a81b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613ae29050565b1561237c57602081146123015783838383604051630a5a604160e01b815260040161041c94939291906166f5565b604080516020601f8401819004810282018101909252828152600091612342918585808385018382808284376000920191909152509293925050613b3b9050565b90508060000361236d5784848484604051630a5a604160e01b815260040161041c94939291906166f5565b61237681613680565b506127e3565b6123e36040518060400160405280600c81526020016b1d9bdd1a5b99d4195c9a5bd960a21b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613ae29050565b1561248657602081146124115783838383604051630a5a604160e01b815260040161041c94939291906166f5565b604080516020601f8401819004810282018101909252828152600091612452918585808385018382808284376000920191909152509293925050613b3b9050565b90508060000361247d5784848484604051630a5a604160e01b815260040161041c94939291906166f5565b61237681613b40565b6124f2604051806040016040528060118152602001701c1c9bdc1bdcd85b151a1c995cda1bdb19607a1b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613ae29050565b1561259557602081146125205783838383604051630a5a604160e01b815260040161041c94939291906166f5565b604080516020601f8401819004810282018101909252828152600091612561918585808385018382808284376000920191909152509293925050613b3b9050565b90508060000361258c5784848484604051630a5a604160e01b815260040161041c94939291906166f5565b61237681613be3565b6125ff6040518060400160405280600f81526020016e38bab7b93ab6a73ab6b2b930ba37b960891b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613ae29050565b156126a2576020811461262d5783838383604051630a5a604160e01b815260040161041c94939291906166f5565b604080516020601f840181900481028201810190925282815260009161266e918585808385018382808284376000920191909152509293925050613b3b9050565b9050806000036126995784848484604051630a5a604160e01b815260040161041c94939291906166f5565b61237681612d9a565b612711604051806040016040528060148152602001736d696e506572696f64416674657251756f72756d60601b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613ae29050565b156127c2576008811461273f5783838383604051630a5a604160e01b815260040161041c94939291906166f5565b6000612785600884848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613b3b9050565b9050806001600160401b03166000036127b95784848484604051630a5a604160e01b815260040161041c94939291906166f5565b61237681613c26565b838383836040516325ee20d560e21b815260040161041c94939291906166f5565b7ff1ce9b2cbf50eeb05769a29e2543fd350cab46894a7dd9978a12d534bb20e6338484848460405161281894939291906166f5565b60405180910390a150505050565b6000610e086101635490565b6000610ed382613c92565b612845610df3565b6001600160a01b0316336001600160a01b0316146128755760405162461bcd60e51b815260040161041c90616435565b3061287e610df3565b6001600160a01b0316146128bc576000803660405161289e929190616425565b604051809103902090505b806128b5610131612d1b565b036128a957505b600080856001600160a01b03168585856040516128da929190616425565b60006040518083038185875af1925050503d8060008114612917576040519150601f19603f3d011682016040523d82523d6000602084013e61291c565b606091505b50915091506129448282604051806060016040528060288152602001616add60289139613cd0565b50505050505050565b600084848484604051602001612966949392919061671c565b60408051601f19818403018152919052805160209091012095945050505050565b61298f610df3565b6001600160a01b0316336001600160a01b0316146129bf5760405162461bcd60e51b815260040161041c90616435565b306129c8610df3565b6001600160a01b031614612a0657600080366040516129e8929190616425565b604051809103902090505b806129ff610131612d1b565b036129f357505b6110c281613c26565b60008251845114612a735760405162461bcd60e51b815260206004820152602860248201527f476f7665726e6f72427261766f3a20696e76616c6964207369676e61747572656044820152670e640d8cadccee8d60c31b606482015260840161041c565b612a81338787878787613ce9565b611a708686612a908787613da7565b85611a7a565b600080600080612aa585613208565b93509350935093506117ac84848484611158565b612ac1610df3565b6001600160a01b0316336001600160a01b031614612af15760405162461bcd60e51b815260040161041c90616435565b30612afa610df3565b6001600160a01b031614612b385760008036604051612b1a929190616425565b604051809103902090505b80612b31610131612d1b565b03612b2557505b6110c281613b40565b60006120ef8383612b5d60408051602081019091526000815290565b6139d0565b612b6a610df3565b6001600160a01b0316336001600160a01b031614612b9a5760405162461bcd60e51b815260040161041c90616435565b30612ba3610df3565b6001600160a01b031614612be15760008036604051612bc3929190616425565b604051809103902090505b80612bda610131612d1b565b03612bce57505b6110c281613be3565b60006064612bf7836118eb565b6101c554604051632394e7a360e21b8152600481018690526001600160a01b0390911690638e539e8c90602401602060405180830381865afa158015612c41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c6591906164e7565b612c6f9190616767565b610ed39190616794565b600080600080612c8885613208565b93509350935093506117ac84848484611383565b60006001600160e01b03198216636e665ced60e01b1480610ed35750610ed382613ed9565b6000610ed3612cce613f75565b8360405161190160f01b8152600281019290925260228201526042902090565b6000806000612cff87878787613f7f565b9150915061146c81614043565b6000611a70868686868661418d565b6000612d368254600f81810b600160801b909204900b131590565b15612d5457604051631ed9509560e11b815260040160405180910390fd5b508054600f0b6000818152600180840160205260408220805492905583546fffffffffffffffffffffffffffffffff191692016001600160801b03169190911790915590565b6064811115612e1d5760405162461bcd60e51b815260206004820152604360248201527f476f7665726e6f72566f74657351756f72756d4672616374696f6e3a2071756f60448201527f72756d4e756d657261746f72206f7665722071756f72756d44656e6f6d696e616064820152623a37b960e91b608482015260a40161041c565b6000612e276120f6565b90508015801590612e39575061022b54155b15612e9e57604080518082019091526000815261022b9060208101612e5d84614290565b6001600160e01b039081169091528254600181018455600093845260209384902083519490930151909116600160201b0263ffffffff909316929092179101555b612ecc612eb9612eac61206b565b65ffffffffffff16613564565b612ec284614290565b61022b91906142f9565b505060408051828152602081018490527f0553476bf02ef2726e8ce5ced78d63e26e602e4a2257b1f559418e24b4633997910160405180910390a15050565b30612f14610df3565b6001600160a01b031614612fa55760005b84518110156117ac57306001600160a01b0316858281518110612f4a57612f4a616675565b60200260200101516001600160a01b031603612f9557612f95838281518110612f7557612f75616675565b60200260200101518051906020012061013161431490919063ffffffff16565b612f9e8161668b565b9050612f25565b5050505050565b61028f54610100900460ff1615612fd65760405163e96776bf60e01b815260040160405180910390fd5b60005b845181101561304f5761028e6000868381518110612ff957612ff9616675565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff1661303d57604051630b094f2760e31b815260040160405180910390fd5b806130478161668b565b915050612fd9565b50612fa58585858585614350565b30613066610df3565b6001600160a01b031614612fa55761013154600f81810b600160801b909204900b1315612fa557600061013155612fa5565b60006117c2858585856130b660408051602081019091526000815290565b612d0c565b6000806130c7836143c5565b905060048160078111156130dd576130dd615ea5565b146130e85792915050565b60008381526101f9602052604090205480613104575092915050565b6101f854604051632ab0f52960e01b8152600481018390526001600160a01b0390911690632ab0f52990602401602060405180830381865afa15801561314e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061317291906167b6565b15613181575060079392505050565b6101f854604051632c258a9f60e11b8152600481018390526001600160a01b039091169063584b153e90602401602060405180830381865afa1580156131cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131ef91906167b6565b156131fe575060059392505050565b5060029392505050565b60608060606000806101936000878152602001908152602001600020905080600101816002016133da83600301805480602002602001604051908101604052809291908181526020016000905b828210156133015783829060005260206000200180546132749061646c565b80601f01602080910402602001604051908101604052809291908181526020018280546132a09061646c565b80156132ed5780601f106132c2576101008083540402835291602001916132ed565b820191906000526020600020905b8154815290600101906020018083116132d057829003601f168201915b505050505081526020019060010190613255565b50505060048601805460408051602080840282018101909252828152935060009084015b828210156133d15783829060005260206000200180546133449061646c565b80601f01602080910402602001604051908101604052809291908181526020018280546133709061646c565b80156133bd5780601f10613392576101008083540402835291602001916133bd565b820191906000526020600020905b8154815290600101906020018083116133a057829003601f168201915b505050505081526020019060010190613325565b50505050613da7565b600984015483546040805160208084028201810190925282815291869183018282801561343057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311613412575b505050505093508280548060200260200160405190810160405280929190818152602001828054801561348257602002820191906000526020600020905b81548152602001906001019080831161346e575b505050505092509450945094509450509193509193565b6000806134a88686868661294d565b600081815261019360205260409020549091506001600160a01b0316338114806134fc57506134d5612826565b6134fa8260016134e361206b565b6134ed91906165cf565b65ffffffffffff16612b41565b105b6135585760405162461bcd60e51b815260206004820152602760248201527f476f7665726e6f72427261766f3a2070726f706f7365722061626f76652074686044820152661c995cda1bdb1960ca1b606482015260840161041c565b611773878787876144fd565b600063ffffffff8211156135c95760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201526532206269747360d01b606482015260840161041c565b5090565b81546000908181600581111561362a5760006135e88461450b565b6135f29085616662565b60008881526020902090915081015463ffffffff908116908716101561361a57809150613628565b6136258160016165bc565b92505b505b6000613638878785856145f3565b905080156136735761365d8761364f600184616662565b600091825260209091200190565b54600160201b90046001600160e01b0316611773565b6000979650505050505050565b6101615460408051918252602082018390527fc565b045403dc03c2eea82b81a0465edad9e2e7fc4d97e11421c209da93d7a93910160405180910390a161016155565b61028f5460ff1661376c576a084595161401484a0000006120056001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561371a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061373e91906164e7565b101561375d576040516311b6707f60e01b815260040160405180910390fd5b61028f805460ff191660011790555b565b60006137ca33868686516001600160401b0381111561378f5761378f6158fa565b6040519080825280602002602001820160405280156137c257816020015b60608152602001906001900390816137ad5790505b508787613ce9565b6117c285858585614649565b600054610100900460ff166137fd5760405162461bcd60e51b815260040161041c906167d8565b6138248161381f6040805180820190915260018152603160f81b602082015290565b614a28565b6110c281614a77565b600054610100900460ff166138545760405162461bcd60e51b815260040161041c906167d8565b61385f838383614aaf565b505050565b600054610100900460ff1661376c5760405162461bcd60e51b815260040161041c906167d8565b600054610100900460ff166138b25760405162461bcd60e51b815260040161041c906167d8565b6110c281614af1565b600054610100900460ff166138e25760405162461bcd60e51b815260040161041c906167d8565b6110c281614b3b565b600054610100900460ff166139125760405162461bcd60e51b815260040161041c906167d8565b6110c281614b62565b600054610100900460ff166139425760405162461bcd60e51b815260040161041c906167d8565b6110c281614b89565b6060606780546110d59061646c565b6060606880546110d59061646c565b600065ffffffffffff8211156135c95760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203460448201526538206269747360d01b606482015260840161041c565b6101c554604051630748d63560e31b81526001600160a01b038581166004830152602482018590526000921690633a46b1a890604401602060405180830381865afa158015613a23573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120ec91906164e7565b8054600090801561223e57613a618361364f600184616662565b54600160201b90046001600160e01b03166120ef565b6101f854604080516001600160a01b03928316815291831660208301527f08f74ea46ef7894f65eabfb5e6e695de773a000b47c529ab559178069b226401910160405180910390a16101f880546001600160a01b0319166001600160a01b0392909216919091179055565b600081604051602001613af59190616823565b6040516020818303038152906040528051906020012083604051602001613b1c9190616823565b6040516020818303038152906040528051906020012014905092915050565b015190565b60008111613ba05760405162461bcd60e51b815260206004820152602760248201527f476f7665726e6f7253657474696e67733a20766f74696e6720706572696f6420604482015266746f6f206c6f7760c81b606482015260840161041c565b6101625460408051918252602082018390527f7e3f7f0708a84de9203036abaa450dccc85ad5ff52f78c170f3edb55cf5e8828910160405180910390a161016255565b6101635460408051918252602082018390527fccb45da8d5717e6c4544694297c4ba5cf151d455c9bb0ed4fc7a38411bc05461910160405180910390a161016355565b61025c54604080516001600160401b03928316815291831660208301527f7ca4ac117ed3cdce75c1161d8207c440389b1a15d69d096831664657c07dafc2910160405180910390a161025c805467ffffffffffffffff19166001600160401b0392909216919091179055565b60008181526101306020526040812060010154610ed3906001600160401b0316600084815261025d60205260409020546001600160401b0316614bb0565b60608315613cdf5750816120ef565b6120ef8383614bc6565b805160208201206000613d078787613d018888613da7565b8561294d565b600081815261019360205260409020600981015491925090613d9c5780546001600160a01b0319166001600160a01b038a161781558751613d5190600183019060208b0190615695565b508651613d6790600283019060208a01906156f6565b508551613d7d9060038301906020890190615731565b508451613d939060048301906020880190615783565b50600981018390555b505050505050505050565b6060600082516001600160401b03811115613dc457613dc46158fa565b604051908082528060200260200182016040528015613df757816020015b6060815260200190600190039081613de25790505b50905060005b8151811015613ed157848181518110613e1857613e18616675565b602002602001015151600014613e8857848181518110613e3a57613e3a616675565b602002602001015180519060200120848281518110613e5b57613e5b616675565b6020026020010151604051602001613e7492919061683f565b604051602081830303815290604052613ea3565b838181518110613e9a57613e9a616675565b60200260200101515b828281518110613eb557613eb5616675565b602002602001018190525080613eca9061668b565b9050613dfd565b509392505050565b600063288ace0360e11b6318df743f60e31b63bf26d89760e01b6379dd796f60e01b6001600160e01b03198616821480613f1f57506001600160e01b0319868116908216145b80613f3657506001600160e01b0319868116908516145b80613f5157506001600160e01b03198616630271189760e51b145b80611a7057506301ffc9a760e01b6001600160e01b03198716149695505050505050565b6000610e08614bf0565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115613fb6575060009050600361403a565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa15801561400a573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166140335760006001925092505061403a565b9150600090505b94509492505050565b600081600481111561405757614057615ea5565b0361405f5750565b600181600481111561407357614073615ea5565b036140c05760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640161041c565b60028160048111156140d4576140d4615ea5565b036141215760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161041c565b600381600481111561413557614135615ea5565b036110c25760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b606482015260840161041c565b60008061419d8787878787614c64565b600088815261025d60205260409020549091506001600160401b03161580156141ca57506141ca87614dba565b15611a705760006141e461025c546001600160401b031690565b6141ec61206b565b65ffffffffffff166141fe9190616870565b905061420988612832565b816001600160401b03161115614258576040516001600160401b038216815288907f541f725fb9f7c98a30cc9c0ff32fbb14358cd7159c847a3aa20a2bdc442ba5119060200160405180910390a25b600088815261025d60205260409020805467ffffffffffffffff19166001600160401b03929092169190911790559695505050505050565b60006001600160e01b038211156135c95760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20326044820152663234206269747360c81b606482015260840161041c565b600080614307858585614dfa565b915091505b935093915050565b8154600160801b90819004600f0b6000818152600180860160205260409091209390935583546001600160801b03908116939091011602179055565b6101f85460405163e38335e560e01b81526001600160a01b039091169063e38335e590349061438c908890889088906000908990600401616500565b6000604051808303818588803b1580156143a557600080fd5b505af11580156143b9573d6000803e3d6000fd5b50505050505050505050565b600081815261013060205260408120600281015460ff16156143ea5750600792915050565b6002810154610100900460ff16156144055750600292915050565b600083815261013060205260408120546001600160401b03169081900361446e5760405162461bcd60e51b815260206004820152601d60248201527f476f7665726e6f723a20756e6b6e6f776e2070726f706f73616c206964000000604482015260640161041c565b600061447861206b565b65ffffffffffff16905080821061449457506000949350505050565b600061449f86612832565b90508181106144b45750600195945050505050565b6144bd86614dba565b80156144e057506000868152610193602052604090206006810154600590910154115b156144f15750600495945050505050565b50600395945050505050565b60006117c285858585614f99565b60008160000361451d57506000919050565b6000600161452a8461504f565b901c6001901b905060018184816145435761454361677e565b048201901c9050600181848161455b5761455b61677e565b048201901c905060018184816145735761457361677e565b048201901c9050600181848161458b5761458b61677e565b048201901c905060018184816145a3576145a361677e565b048201901c905060018184816145bb576145bb61677e565b048201901c905060018184816145d3576145d361677e565b048201901c90506120ef818285816145ed576145ed61677e565b046150e3565b60005b81831015613ed157600061460a84846150f2565b60008781526020902090915063ffffffff86169082015463ffffffff16111561463557809250614643565b6146408160016165bc565b93505b506145f6565b600033614656818461510d565b6146a25760405162461bcd60e51b815260206004820152601d60248201527f476f7665726e6f723a2070726f706f7365722072657374726963746564000000604482015260640161041c565b60006146ac61206b565b65ffffffffffff1690506146be612826565b6146cd83610d4e600185616662565b10156147355760405162461bcd60e51b815260206004820152603160248201527f476f7665726e6f723a2070726f706f73657220766f7465732062656c6f7720706044820152701c9bdc1bdcd85b081d1a1c995cda1bdb19607a1b606482015260840161041c565b600061474a888888888051906020012061294d565b9050865188511461476d5760405162461bcd60e51b815260040161041c90616890565b855188511461478e5760405162461bcd60e51b815260040161041c90616890565b60008851116147df5760405162461bcd60e51b815260206004820152601860248201527f476f7665726e6f723a20656d7074792070726f706f73616c0000000000000000604482015260640161041c565b600081815261013060205260409020546001600160401b03161561484f5760405162461bcd60e51b815260206004820152602160248201527f476f7665726e6f723a2070726f706f73616c20616c72656164792065786973746044820152607360f81b606482015260840161041c565b600061485b6101615490565b61486590846165bc565b905060006148736101625490565b61487d90836165bc565b90506040518060e00160405280614893846151fe565b6001600160401b031681526001600160a01b0387166020820152600060408201526060016148c0836151fe565b6001600160401b03908116825260006020808401829052604080850183905260609485018390528883526101308252918290208551815492870151878501519186166001600160e01b031990941693909317600160401b6001600160a01b039094168402176001600160e01b0316600160e01b60e09290921c91909102178155938501516080860151908416921c0217600183015560a08301516002909201805460c09094015161ffff1990941692151561ff00191692909217610100931515939093029290921790558a517f7d84a6263ae0d98d3329bd7b46bb4e8d6f98cd35a7adb45c274c8b7fd5ebd5e091859188918e918e918111156149c5576149c56158fa565b6040519080825280602002602001820160405280156149f857816020015b60608152602001906001900390816149e35790505b508d88888f604051614a12999897969594939291906168d1565b60405180910390a1509098975050505050505050565b600054610100900460ff16614a4f5760405162461bcd60e51b815260040161041c906167d8565b6067614a5b83826169af565b506068614a6882826169af565b50506000606581905560665550565b600054610100900460ff16614a9e5760405162461bcd60e51b815260040161041c906167d8565b61012f614aab82826169af565b5050565b600054610100900460ff16614ad65760405162461bcd60e51b815260040161041c906167d8565b614adf83613680565b614ae882613b40565b61385f81613be3565b600054610100900460ff16614b185760405162461bcd60e51b815260040161041c906167d8565b6101c580546001600160a01b0319166001600160a01b0392909216919091179055565b600054610100900460ff166121a25760405162461bcd60e51b815260040161041c906167d8565b600054610100900460ff166110b95760405162461bcd60e51b815260040161041c906167d8565b600054610100900460ff16612a065760405162461bcd60e51b815260040161041c906167d8565b6000818311614bbf57816120ef565b5090919050565b815115614bd65781518083602001fd5b8060405162461bcd60e51b815260040161041c9190615ab3565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f614c1b615266565b614c236152bf565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b6000858152610130602052604081206001614c7e8861177e565b6007811115614c8f57614c8f615ea5565b14614ce85760405162461bcd60e51b815260206004820152602360248201527f476f7665726e6f723a20766f7465206e6f742063757272656e746c792061637460448201526269766560e81b606482015260840161041c565b8054600090614d029088906001600160401b0316866139d0565b9050614d1188888884886152f0565b8351600003614d6657866001600160a01b03167fb8e138887d0aa13bab447e82de9d5c1777041ecd21ca36ba824ff1e6c07ddda489888489604051614d599493929190616a6e565b60405180910390a2611773565b866001600160a01b03167fe2babfbac5889a709b63bb7f598b324e08bc5a4fb9ec647fb3cbc9ec07eb87128988848989604051614da7959493929190616a96565b60405180910390a2979650505050505050565b6000818152610193602052604081206005810154614df1610dba85600090815261013060205260409020546001600160401b031690565b11159392505050565b825460009081908015614f40576000614e188761364f600185616662565b60408051808201909152905463ffffffff808216808452600160201b9092046001600160e01b031660208401529192509087161015614e995760405162461bcd60e51b815260206004820152601b60248201527f436865636b706f696e743a2064656372656173696e67206b6579730000000000604482015260640161041c565b805163ffffffff808816911603614ee15784614eba8861364f600186616662565b80546001600160e01b0392909216600160201b0263ffffffff909216919091179055614f30565b6040805180820190915263ffffffff80881682526001600160e01b0380881660208085019182528b54600181018d5560008d81529190912094519151909216600160201b029216919091179101555b60200151925083915061430c9050565b50506040805180820190915263ffffffff80851682526001600160e01b0380851660208085019182528854600181018a5560008a815291822095519251909316600160201b02919093161792019190915590508161430c565b600080614fa88686868661548e565b60008181526101f96020526040902054909150156117c2576101f85460008281526101f960205260409081902054905163c4d252f560e01b81526001600160a01b039092169163c4d252f5916150049160040190815260200190565b600060405180830381600087803b15801561501e57600080fd5b505af1158015615032573d6000803e3d6000fd5b50505060008281526101f960205260408120555095945050505050565b600080608083901c1561506457608092831c92015b604083901c1561507657604092831c92015b602083901c1561508857602092831c92015b601083901c1561509a57601092831c92015b600883901c156150ac57600892831c92015b600483901c156150be57600492831c92015b600283901c156150d057600292831c92015b600183901c15610ed35760010192915050565b6000818310614bbf57816120ef565b60006151016002848418616794565b6120ef908484166165bc565b80516000906034811015615125576001915050610ed3565b82810160131901516001600160a01b031981166b046e0e4dee0dee6cae47a60f60a31b1461515857600192505050610ed3565b600080615166602885616662565b90505b838110156151dd5760008061519d88848151811061518957615189616675565b01602001516001600160f81b03191661559b565b91509150816151b55760019650505050505050610ed3565b8060ff166004856001600160a01b0316901b1793505050806151d69061668b565b9050615169565b50856001600160a01b0316816001600160a01b031614935050505092915050565b60006001600160401b038211156135c95760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203660448201526534206269747360d01b606482015260840161041c565b60008061527161394b565b805190915015615288578051602090910120919050565b60655480156152975792915050565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4709250505090565b6000806152ca61395a565b8051909150156152e1578051602090910120919050565b60665480156152975792915050565b6000858152610193602090815260408083206001600160a01b038816845260088101909252909120805460ff16156153805760405162461bcd60e51b815260206004820152602d60248201527f476f7665726e6f72436f6d7061746962696c697479427261766f3a20766f746560448201526c08185b1c9958591e4818d85cdd609a1b606482015260840161041c565b805460ff86166101000261ffff199091161760011781556153a08461562d565b81546001600160601b039190911662010000026dffffffffffffffffffffffff00001990911617815560ff85166153f057838260060160008282546153e591906165bc565b909155506129449050565b60001960ff86160161541057838260050160008282546153e591906165bc565b60011960ff86160161543057838260070160008282546153e591906165bc565b60405162461bcd60e51b815260206004820152602d60248201527f476f7665726e6f72436f6d7061746962696c697479427261766f3a20696e766160448201526c6c696420766f7465207479706560981b606482015260840161041c565b60008061549d8686868661294d565b905060006154aa8261177e565b905060028160078111156154c0576154c0615ea5565b141580156154e0575060068160078111156154dd576154dd615ea5565b14155b80156154fe575060078160078111156154fb576154fb615ea5565b14155b61554a5760405162461bcd60e51b815260206004820152601d60248201527f476f7665726e6f723a2070726f706f73616c206e6f7420616374697665000000604482015260640161041c565b6000828152610130602052604090819020600201805461ff001916610100179055517f789cf55be980739dad1d0699b93b58e806b51c9d96619bfa8fe0a28abaa7b30c9061134b9084815260200190565b60008060f883901c602f811180156155b65750603a8160ff16105b156155cb57600194602f199091019350915050565b8060ff1660401080156155e1575060478160ff16105b156155f6576001946036199091019350915050565b8060ff16606010801561560c575060678160ff16105b15615621576001946056199091019350915050565b50600093849350915050565b60006001600160601b038211156135c95760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203960448201526536206269747360d01b606482015260840161041c565b8280548282559060005260206000209081019282156156ea579160200282015b828111156156ea57825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906156b5565b506135c99291506157d5565b8280548282559060005260206000209081019282156156ea579160200282015b828111156156ea578251825591602001919060010190615716565b828054828255906000526020600020908101928215615777579160200282015b82811115615777578251829061576790826169af565b5091602001919060010190615751565b506135c99291506157ea565b8280548282559060005260206000209081019282156157c9579160200282015b828111156157c957825182906157b990826169af565b50916020019190600101906157a3565b506135c9929150615807565b5b808211156135c957600081556001016157d6565b808211156135c95760006157fe8282615824565b506001016157ea565b808211156135c957600061581b8282615824565b50600101615807565b5080546158309061646c565b6000825580601f10615840575050565b601f0160209004906000526020600020908101906110c291906157d5565b60006020828403121561587057600080fd5b5035919050565b60006020828403121561588957600080fd5b81356001600160e01b0319811681146120ef57600080fd5b803560ff8116811461187357600080fd5b60008083601f8401126158c457600080fd5b5081356001600160401b038111156158db57600080fd5b6020830191508360208285010111156158f357600080fd5b9250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715615938576159386158fa565b604052919050565b60006001600160401b03821115615959576159596158fa565b50601f01601f191660200190565b600082601f83011261597857600080fd5b813561598b61598682615940565b615910565b8181528460208386010111156159a057600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060008060008060e0898b0312156159d957600080fd5b883597506159e960208a016158a1565b965060408901356001600160401b0380821115615a0557600080fd5b615a118c838d016158b2565b909850965060608b0135915080821115615a2a57600080fd5b50615a378b828c01615967565b945050615a4660808a016158a1565b925060a0890135915060c089013590509295985092959890939650565b60005b83811015615a7e578181015183820152602001615a66565b50506000910152565b60008151808452615a9f816020860160208601615a63565b601f01601f19169290920160200192915050565b6020815260006120ef6020830184615a87565b6001600160a01b03811681146110c257600080fd5b60008060008060808587031215615af157600080fd5b8435615afc81615ac6565b93506020850135615b0c81615ac6565b92506040850135915060608501356001600160401b03811115615b2e57600080fd5b615b3a87828801615967565b91505092959194509250565b60006001600160401b03821115615b5f57615b5f6158fa565b5060051b60200190565b600082601f830112615b7a57600080fd5b81356020615b8a61598683615b46565b82815260059290921b84018101918181019086841115615ba957600080fd5b8286015b84811015615bcd578035615bc081615ac6565b8352918301918301615bad565b509695505050505050565b600082601f830112615be957600080fd5b81356020615bf961598683615b46565b82815260059290921b84018101918181019086841115615c1857600080fd5b8286015b84811015615bcd5780358352918301918301615c1c565b600082601f830112615c4457600080fd5b81356020615c5461598683615b46565b82815260059290921b84018101918181019086841115615c7357600080fd5b8286015b84811015615bcd5780356001600160401b03811115615c965760008081fd5b615ca48986838b0101615967565b845250918301918301615c77565b60008060008060808587031215615cc857600080fd5b84356001600160401b0380821115615cdf57600080fd5b615ceb88838901615b69565b95506020870135915080821115615d0157600080fd5b615d0d88838901615bd8565b94506040870135915080821115615d2357600080fd5b50615d3087828801615c33565b949793965093946060013593505050565b600081518084526020808501945080840160005b83811015615d7a5781516001600160a01b031687529582019590820190600101615d55565b509495945050505050565b600081518084526020808501945080840160005b83811015615d7a57815187529582019590820190600101615d99565b600081518084526020808501808196508360051b8101915082860160005b85811015615dfd578284038952615deb848351615a87565b98850198935090840190600101615dd3565b5091979650505050505050565b608081526000615e1d6080830187615d41565b8281036020840152615e2f8187615d85565b90508281036040840152615e438186615db5565b905082810360608401526117738185615db5565b600080600080600060a08688031215615e6f57600080fd5b85359450615e7f602087016158a1565b9350615e8d604087016158a1565b94979396509394606081013594506080013592915050565b634e487b7160e01b600052602160045260246000fd5b6020810160088310615edd57634e487b7160e01b600052602160045260246000fd5b91905290565b60008060408385031215615ef657600080fd5b823591506020830135615f0881615ac6565b809150509250929050565b600060208284031215615f2557600080fd5b81356120ef81615ac6565b60008060408385031215615f4357600080fd5b82359150615f53602084016158a1565b90509250929050565b600080600080600060808688031215615f7457600080fd5b85359450615f84602087016158a1565b935060408601356001600160401b0380821115615fa057600080fd5b615fac89838a016158b2565b90955093506060880135915080821115615fc557600080fd5b50615fd288828901615967565b9150509295509295909350565b60008060008060608587031215615ff557600080fd5b84359350616005602086016158a1565b925060408501356001600160401b0381111561602057600080fd5b61602c878288016158b2565b95989497509550505050565b6000806000806080858703121561604e57600080fd5b84356001600160401b038082111561606557600080fd5b61607188838901615b69565b9550602087013591508082111561608757600080fd5b61609388838901615bd8565b945060408701359150808211156160a957600080fd5b6160b588838901615c33565b935060608701359150808211156160cb57600080fd5b50615b3a87828801615967565b60ff60f81b8816815260e0602082015260006160f760e0830189615a87565b82810360408401526161098189615a87565b606084018890526001600160a01b038716608085015260a0840186905283810360c08501529050610fc38185615d85565b60008060006060848603121561614f57600080fd5b833561615a81615ac6565b92506020840135915060408401356001600160401b0381111561617c57600080fd5b61618886828701615967565b9150509250925092565b600080600080604085870312156161a857600080fd5b84356001600160401b03808211156161bf57600080fd5b6161cb888389016158b2565b909650945060208701359150808211156161e457600080fd5b5061602c878288016158b2565b600080600080600060a0868803121561620957600080fd5b853561621481615ac6565b9450602086013561622481615ac6565b935060408601356001600160401b038082111561624057600080fd5b61624c89838a01615bd8565b9450606088013591508082111561626257600080fd5b61626e89838a01615bd8565b93506080880135915080821115615fc557600080fd5b6000806000806060858703121561629a57600080fd5b84356162a581615ac6565b93506020850135925060408501356001600160401b0381111561602057600080fd5b6000602082840312156162d957600080fd5b81356001600160401b03811681146120ef57600080fd5b600080600080600060a0868803121561630857600080fd5b85356001600160401b038082111561631f57600080fd5b61632b89838a01615b69565b9650602088013591508082111561634157600080fd5b61634d89838a01615bd8565b9550604088013591508082111561636357600080fd5b61636f89838a01615c33565b9450606088013591508082111561638557600080fd5b61626e89838a01615c33565b600080604083850312156163a457600080fd5b82356163af81615ac6565b946020939093013593505050565b600080600080600060a086880312156163d557600080fd5b85356163e081615ac6565b945060208601356163f081615ac6565b9350604086013592506060860135915060808601356001600160401b0381111561641957600080fd5b615fd288828901615967565b8183823760009101908152919050565b60208082526018908201527f476f7665726e6f723a206f6e6c79476f7665726e616e63650000000000000000604082015260600190565b600181811c9082168061648057607f821691505b6020821081036164a057634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526021908201527f476f7665726e6f723a2070726f706f73616c206e6f74207375636365737366756040820152601b60fa1b606082015260800190565b6000602082840312156164f957600080fd5b5051919050565b60a08152600061651360a0830188615d41565b82810360208401526165258188615d85565b905082810360408401526165398187615db5565b60608401959095525050608001529392505050565b60c08152600061656160c0830189615d41565b82810360208401526165738189615d85565b905082810360408401526165878188615db5565b60608401969096525050608081019290925260a0909101529392505050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610ed357610ed36165a6565b65ffffffffffff8281168282160390808211156165ee576165ee6165a6565b5092915050565b60006020828403121561660757600080fd5b81516001600160401b0381111561661d57600080fd5b8201601f8101841361662e57600080fd5b805161663c61598682615940565b81815285602083850101111561665157600080fd5b6117c2826020830160208601615a63565b81810381811115610ed357610ed36165a6565b634e487b7160e01b600052603260045260246000fd5b60006001820161669d5761669d6165a6565b5060010190565b6000602082840312156166b657600080fd5b815165ffffffffffff811681146120ef57600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6040815260006167096040830186886166cc565b82810360208401526117738185876166cc565b60808152600061672f6080830187615d41565b82810360208401526167418187615d85565b905082810360408401526167558186615db5565b91505082606083015295945050505050565b8082028115828204841417610ed357610ed36165a6565b634e487b7160e01b600052601260045260246000fd5b6000826167b157634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156167c857600080fd5b815180151581146120ef57600080fd5b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60008251616835818460208701615a63565b9190910192915050565b6001600160e01b0319831681528151600090616862816004850160208701615a63565b919091016004019392505050565b6001600160401b038181168382160190808211156165ee576165ee6165a6565b60208082526021908201527f476f7665726e6f723a20696e76616c69642070726f706f73616c206c656e67746040820152600d60fb1b606082015260800190565b8981526001600160a01b0389166020820152610120604082018190526000906168fc8382018b615d41565b90508281036060840152616910818a615d85565b905082810360808401526169248189615db5565b905082810360a08401526169388188615db5565b90508560c08401528460e08401528281036101008401526169598185615a87565b9c9b505050505050505050505050565b601f82111561385f57600081815260208120601f850160051c810160208610156169905750805b601f850160051c820191505b818110156117ac5782815560010161699c565b81516001600160401b038111156169c8576169c86158fa565b6169dc816169d6845461646c565b84616969565b602080601f831160018114616a1157600084156169f95750858301515b600019600386901b1c1916600185901b1785556117ac565b600085815260208120601f198616915b82811015616a4057888601518255948401946001909101908401616a21565b5085821015616a5e5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b84815260ff84166020820152826040820152608060608201526000611a706080830184615a87565b85815260ff8516602082015283604082015260a060608201526000616abe60a0830185615a87565b8281036080840152616ad08185615a87565b9897505050505050505056fe476f7665726e6f723a2072656c617920726576657274656420776974686f7574206d657373616765a164736f6c6343000811000a", }, { ContractAddr: common.HexToAddress(GovTokenContract), @@ -812,12 +811,7 @@ func init() { { ContractAddr: common.HexToAddress(TokenRecoverPortalContract), CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/cfc0bd1127186a917ddc38fd38d22903034d3f0b", - Code: "608060405234801561001057600080fd5b50600436106100a95760003560e01c80639fcb5012116100715780639fcb50121461012f578063ac4317511461014c578063bfb5a6a11461015f578063de88700b14610172578063e33f8d321461019d578063f4b88300146101c057600080fd5b8063046f7da2146100ae5780632eb4a7ab146100b85780634c335368146100d4578063572c9980146101145780638456cb5914610127575b600080fd5b6100b66101d3565b005b6100c160345481565b6040519081526020015b60405180910390f35b6101076040518060400160405280601481526020017342696e616e63652d436861696e2d47616e67657360601b81525081565b6040516100cb91906113eb565b6100b661012236600461141e565b610236565b6100b66102c7565b60355461013c9060ff1681565b60405190151581526020016100cb565b6100b661015a36600461149c565b610330565b6100b661016d36600461154d565b610756565b603754610185906001600160a01b031681565b6040516001600160a01b0390911681526020016100cb565b61013c6101ab366004611627565b60009081526036602052604090205460ff1690565b603354610185906001600160a01b031681565b6037546001600160a01b031633146101fe5760405163f2771a9960e01b815260040160405180910390fd5b6037805460ff60a01b191690556040517f62451d457bc659158be6e6247f56ec1df424a5c7597f71c20c2bc44e0965c8f990600090a1565b6037546001600160a01b031633146102615760405163f2771a9960e01b815260040160405180910390fd5b604051638525db0360e01b8152600481018390526001600160a01b038216602482015261100490638525db0390604401600060405180830381600087803b1580156102ab57600080fd5b505af11580156102bf573d6000803e3d6000fd5b505050505050565b6037546001600160a01b031633146102f25760405163f2771a9960e01b815260040160405180910390fd5b6037805460ff60a01b1916600160a01b1790556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e75290600090a1565b336110071461035b57604051630f22c43960e41b815261100760048201526024015b60405180910390fd5b6103c56040518060400160405280600f81526020016e617070726f7665724164647265737360881b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610a989050565b1561048d57601481146103f35783838383604051630a5a604160e01b81526004016103529493929190611669565b600061043783838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060149250610af2915050565b90506001600160a01b0381166104685784848484604051630a5a604160e01b81526004016103529493929190611669565b603380546001600160a01b0319166001600160a01b0392909216919091179055610713565b6104f26040518060400160405280600a8152602001691b595c9adb19549bdbdd60b21b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610a989050565b156105bf5760355460ff161561051b576040516379b3306f60e11b815260040160405180910390fd5b602081146105445783838383604051630a5a604160e01b81526004016103529493929190611669565b604080516020601f840181900481028201810190925282815260009161058491858580838501838280828437600092019190915250869250610af7915050565b806105aa5784848484604051630a5a604160e01b81526004016103529493929190611669565b6034556035805460ff19166001179055610713565b6106286040518060400160405280600e81526020016d30b9b9b2ba283937ba32b1ba37b960911b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610a989050565b156106f257601481146106565783838383604051630a5a604160e01b81526004016103529493929190611669565b600061069c601484848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610af29050565b90506001600160a01b0381166106cd5784848484604051630a5a604160e01b81526004016103529493929190611669565b603780546001600160a01b0319166001600160a01b0392909216919091179055610713565b838383836040516325ee20d560e21b81526004016103529493929190611669565b7ff1ce9b2cbf50eeb05769a29e2543fd350cab46894a7dd9978a12d534bb20e633848484846040516107489493929190611669565b60405180910390a150505050565b60355460ff1661077957604051635740729760e01b815260040160405180910390fd5b60345461079957604051635740729760e01b815260040160405180910390fd5b603754600160a01b900460ff16156107c45760405163c629ac8160e01b815260040160405180910390fd5b6107cc610b06565b600061085a89898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8d018190048102820181019092528b815292508b91508a9081908401838280828437600081840152601f19601f820116905080830192505050505050506108558e8e33610b5f565b610c80565b90506000818c8c6040516020016108739392919061169b565b6040516020818303038152906040528051906020012090506108a48160009081526036602052604090205460ff1690565b156108c157604051623e493160e81b815260040160405180910390fd5b6109693389898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8d018190048102820181019092528b815292508b91508a908190840183828082843760009201919091525050604080516020808c0282810182019093528b82528994509092508b918b91829190850190849080828437600092019190915250610d7492505050565b6109aa848480806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250506034549150849050610e7f565b6109c7576040516309bde33960e01b815260040160405180910390fd5b60008181526036602052604090819020805460ff191660011790555163799758b960e01b8152600481018d9052336024820152604481018c90526110049063799758b990606401600060405180830381600087803b158015610a2857600080fd5b505af1158015610a3c573d6000803e3d6000fd5b5050604080518f81523360208201529081018e90527f4ba6833d14341f931aa6ef39835b58eb5d657ebf0d968db68dbc7dd49d073f6d9250606001905060405180910390a15050610a8c60018055565b50505050505050505050565b600081604051602001610aab91906116c2565b6040516020818303038152906040528051906020012083604051602001610ad291906116c2565b604051602081830303815290604052805190602001201490505b92915050565b015190565b91018082526020908101910152565b600260015403610b585760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610352565b6002600155565b600060026040518060400160405280601481526020017342696e616e63652d436861696e2d47616e67657360601b815250610bbc85604051602001610ba691815260200190565b6040516020818303038152906040526000610e95565b6040516bffffffffffffffffffffffff19606087901b166020820152610bf5906034016040516020818303038152906040526001610e95565b610c0b88604051602001610ba691815260200190565b604051602001610c1e94939291906116de565b60408051601f1981840301815290829052610c38916116c2565b602060405180830381855afa158015610c55573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610c78919061180d565b949350505050565b60608351602114610ca457604051638152ea1b60e01b815260040160405180910390fd5b8251604014610cc657604051635e4bd79760e11b815260040160405180910390fd5b60408051608180825260c08201909252600091602082018180368337019050509050610cf6818660006021611067565b610d04818560216040611067565b610d338184604051602001610d1b91815260200190565b60405160208183030381529060405260616020611067565b604080516014808252818301909252600091602082018180368337019050509050815160148282856069600019fa610d6a57600080fd5b5095945050505050565b606060005b8251811015610dd25781838281518110610d9557610d9561183c565b6020026020010151604051602001610dae929190611852565b60405160208183030381529060405291508080610dca9061188a565b915050610d79565b5060006040518060400160405280601481526020017342696e616e63652d436861696e2d47616e67657360601b81525087878660345486604051602001610e1e969594939291906118a3565b60408051601f1981840301815291905280516020909101206033549091506001600160a01b0316610e4f82876110de565b6001600160a01b031614610e7657604051636eb5c6cb60e11b815260040160405180910390fd5b50505050505050565b600082610e8c85846110fa565b14949350505050565b6060600083516002610ea79190611914565b67ffffffffffffffff811115610ebf57610ebf611826565b6040519080825280601f01601f191660200182016040528015610ee9576020820181803683370190505b5060408051808201909152601081526f181899199a1a9b1b9c1cb0b131b232b360811b602082015290915060005b855181101561102f57818251878381518110610f3557610f3561183c565b0160200151610f47919060f81c611941565b81518110610f5757610f5761183c565b01602001516001600160f81b03191683610f72836002611914565b81518110610f8257610f8261183c565b60200101906001600160f81b031916908160001a905350818251878381518110610fae57610fae61183c565b0160200151610fc0919060f81c611955565b81518110610fd057610fd061183c565b01602001516001600160f81b03191683610feb836002611914565b610ff6906001611969565b815181106110065761100661183c565b60200101906001600160f81b031916908160001a905350806110278161188a565b915050610f17565b50831561105f5781604051602001611047919061197c565b60405160208183030381529060405292505050610aec565b509392505050565b60005b818110156110d7578381815181106110845761108461183c565b01602001516001600160f81b031916858461109e8161188a565b9550815181106110b0576110b061183c565b60200101906001600160f81b031916908160001a9053506110d08161188a565b905061106a565b5050505050565b60008060006110ed858561113f565b9150915061105f81611184565b600081815b845181101561105f5761112b8286838151811061111e5761111e61183c565b60200260200101516112d1565b9150806111378161188a565b9150506110ff565b60008082516041036111755760208301516040840151606085015160001a61116987828585611303565b9450945050505061117d565b506000905060025b9250929050565b6000816004811115611198576111986119a6565b036111a05750565b60018160048111156111b4576111b46119a6565b036112015760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610352565b6002816004811115611215576112156119a6565b036112625760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610352565b6003816004811115611276576112766119a6565b036112ce5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610352565b50565b60008183106112ed5760008281526020849052604090206112fc565b60008381526020839052604090205b9392505050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561133a57506000905060036113be565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa15801561138e573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166113b7576000600192509250506113be565b9150600090505b94509492505050565b60005b838110156113e25781810151838201526020016113ca565b50506000910152565b602081526000825180602084015261140a8160408501602087016113c7565b601f01601f19169190910160400192915050565b6000806040838503121561143157600080fd5b8235915060208301356001600160a01b038116811461144f57600080fd5b809150509250929050565b60008083601f84011261146c57600080fd5b50813567ffffffffffffffff81111561148457600080fd5b60208301915083602082850101111561117d57600080fd5b600080600080604085870312156114b257600080fd5b843567ffffffffffffffff808211156114ca57600080fd5b6114d68883890161145a565b909650945060208701359150808211156114ef57600080fd5b506114fc8782880161145a565b95989497509550505050565b60008083601f84011261151a57600080fd5b50813567ffffffffffffffff81111561153257600080fd5b6020830191508360208260051b850101111561117d57600080fd5b60008060008060008060008060008060c08b8d03121561156c57600080fd5b8a35995060208b0135985060408b013567ffffffffffffffff8082111561159257600080fd5b61159e8e838f0161145a565b909a50985060608d01359150808211156115b757600080fd5b6115c38e838f0161145a565b909850965060808d01359150808211156115dc57600080fd5b6115e88e838f0161145a565b909650945060a08d013591508082111561160157600080fd5b5061160e8d828e01611508565b915080935050809150509295989b9194979a5092959850565b60006020828403121561163957600080fd5b5035919050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60408152600061167d604083018688611640565b8281036020840152611690818587611640565b979650505050505050565b600084516116ad8184602089016113c7565b91909101928352506020820152604001919050565b600082516116d48184602087016113c7565b9190910192915050565b7f7b226163636f756e745f6e756d626572223a2230222c22636861696e5f6964228152611d1160f11b602082015260008551611721816022850160208a016113c7565b7f222c2264617461223a6e756c6c2c226d656d6f223a22222c226d736773223a5b6022918401918201526a3d9130b6b7bab73a111d1160a91b6042820152855161177281604d840160208a016113c7565b6e1116113932b1b4b834b2b73a111d1160891b604d929091019182015284516117a281605c8401602089016113c7565b711116113a37b5b2b72fb9bcb6b137b6111d1160711b605c929091019182015283516117d581606e8401602088016113c7565b7f227d5d2c2273657175656e6365223a2230222c22736f75726365223a2230227d606e9290910191820152608e019695505050505050565b60006020828403121561181f57600080fd5b5051919050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b600083516118648184602088016113c7565b9190910191825250602001919050565b634e487b7160e01b600052601160045260246000fd5b60006001820161189c5761189c611874565b5060010190565b600087516118b5818460208c016113c7565b606088901b6bffffffffffffffffffffffff191690830190815286516118e2816014840160208b016113c7565b01601481018690526034810185905283516119048160548401602088016113c7565b0160540198975050505050505050565b8082028115828204841417610aec57610aec611874565b634e487b7160e01b600052601260045260246000fd5b6000826119505761195061192b565b500490565b6000826119645761196461192b565b500690565b80820180821115610aec57610aec611874565b61060f60f31b8152600082516119998160028501602087016113c7565b9190910160020192915050565b634e487b7160e01b600052602160045260246000fdfea164736f6c6343000811000a", - }, - { - ContractAddr: common.HexToAddress(TokenRecoverPortalContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/0f352c4623898d92664a46cbfc26c52b79aad838", - Code: "0", // TODO: update this when contract was ready + Code: "608060405234801561001057600080fd5b50600436106100a95760003560e01c80639fcb5012116100715780639fcb50121461012f578063ac4317511461014c578063bfb5a6a11461015f578063de88700b14610172578063e33f8d321461019d578063f4b88300146101c057600080fd5b8063046f7da2146100ae5780632eb4a7ab146100b85780634c335368146100d4578063572c9980146101145780638456cb5914610127575b600080fd5b6100b66101d3565b005b6100c160345481565b6040519081526020015b60405180910390f35b6101076040518060400160405280601481526020017342696e616e63652d436861696e2d47616e67657360601b81525081565b6040516100cb91906113eb565b6100b661012236600461141e565b610236565b6100b66102c7565b60355461013c9060ff1681565b60405190151581526020016100cb565b6100b661015a36600461149c565b610330565b6100b661016d36600461154d565b610756565b603754610185906001600160a01b031681565b6040516001600160a01b0390911681526020016100cb565b61013c6101ab366004611627565b60009081526036602052604090205460ff1690565b603354610185906001600160a01b031681565b6037546001600160a01b031633146101fe5760405163f2771a9960e01b815260040160405180910390fd5b6037805460ff60a01b191690556040517f62451d457bc659158be6e6247f56ec1df424a5c7597f71c20c2bc44e0965c8f990600090a1565b6037546001600160a01b031633146102615760405163f2771a9960e01b815260040160405180910390fd5b604051638525db0360e01b8152600481018390526001600160a01b038216602482015261100490638525db0390604401600060405180830381600087803b1580156102ab57600080fd5b505af11580156102bf573d6000803e3d6000fd5b505050505050565b6037546001600160a01b031633146102f25760405163f2771a9960e01b815260040160405180910390fd5b6037805460ff60a01b1916600160a01b1790556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e75290600090a1565b336110071461035b57604051630f22c43960e41b815261100760048201526024015b60405180910390fd5b6103c56040518060400160405280600f81526020016e617070726f7665724164647265737360881b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610a989050565b1561048d57601481146103f35783838383604051630a5a604160e01b81526004016103529493929190611669565b600061043783838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060149250610af2915050565b90506001600160a01b0381166104685784848484604051630a5a604160e01b81526004016103529493929190611669565b603380546001600160a01b0319166001600160a01b0392909216919091179055610713565b6104f26040518060400160405280600a8152602001691b595c9adb19549bdbdd60b21b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610a989050565b156105bf5760355460ff161561051b576040516379b3306f60e11b815260040160405180910390fd5b602081146105445783838383604051630a5a604160e01b81526004016103529493929190611669565b604080516020601f840181900481028201810190925282815260009161058491858580838501838280828437600092019190915250869250610af7915050565b806105aa5784848484604051630a5a604160e01b81526004016103529493929190611669565b6034556035805460ff19166001179055610713565b6106286040518060400160405280600e81526020016d30b9b9b2ba283937ba32b1ba37b960911b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610a989050565b156106f257601481146106565783838383604051630a5a604160e01b81526004016103529493929190611669565b600061069c601484848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610af29050565b90506001600160a01b0381166106cd5784848484604051630a5a604160e01b81526004016103529493929190611669565b603780546001600160a01b0319166001600160a01b0392909216919091179055610713565b838383836040516325ee20d560e21b81526004016103529493929190611669565b7ff1ce9b2cbf50eeb05769a29e2543fd350cab46894a7dd9978a12d534bb20e633848484846040516107489493929190611669565b60405180910390a150505050565b60355460ff1661077957604051635740729760e01b815260040160405180910390fd5b60345461079957604051635740729760e01b815260040160405180910390fd5b603754600160a01b900460ff16156107c45760405163c629ac8160e01b815260040160405180910390fd5b6107cc610b06565b600061085a89898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8d018190048102820181019092528b815292508b91508a9081908401838280828437600081840152601f19601f820116905080830192505050505050506108558e8e33610b5f565b610c80565b90506000818c8c6040516020016108739392919061169b565b6040516020818303038152906040528051906020012090506108a48160009081526036602052604090205460ff1690565b156108c157604051623e493160e81b815260040160405180910390fd5b6109693389898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8d018190048102820181019092528b815292508b91508a908190840183828082843760009201919091525050604080516020808c0282810182019093528b82528994509092508b918b91829190850190849080828437600092019190915250610d7492505050565b6109aa848480806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250506034549150849050610e7f565b6109c7576040516309bde33960e01b815260040160405180910390fd5b60008181526036602052604090819020805460ff191660011790555163799758b960e01b8152600481018d9052336024820152604481018c90526110049063799758b990606401600060405180830381600087803b158015610a2857600080fd5b505af1158015610a3c573d6000803e3d6000fd5b5050604080518f81523360208201529081018e90527f717c40d7a8dbe67bb6371e964c24423645711d1624980e1c74e6956fc21088059250606001905060405180910390a15050610a8c60018055565b50505050505050505050565b600081604051602001610aab91906116c2565b6040516020818303038152906040528051906020012083604051602001610ad291906116c2565b604051602081830303815290604052805190602001201490505b92915050565b015190565b91018082526020908101910152565b600260015403610b585760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610352565b6002600155565b600060026040518060400160405280601481526020017342696e616e63652d436861696e2d47616e67657360601b815250610bbc85604051602001610ba691815260200190565b6040516020818303038152906040526000610e95565b6040516bffffffffffffffffffffffff19606087901b166020820152610bf5906034016040516020818303038152906040526001610e95565b610c0b88604051602001610ba691815260200190565b604051602001610c1e94939291906116de565b60408051601f1981840301815290829052610c38916116c2565b602060405180830381855afa158015610c55573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610c78919061180d565b949350505050565b60608351602114610ca457604051638152ea1b60e01b815260040160405180910390fd5b8251604014610cc657604051635e4bd79760e11b815260040160405180910390fd5b60408051608180825260c08201909252600091602082018180368337019050509050610cf6818660006021611067565b610d04818560216040611067565b610d338184604051602001610d1b91815260200190565b60405160208183030381529060405260616020611067565b604080516014808252818301909252600091602082018180368337019050509050815160148282856069600019fa610d6a57600080fd5b5095945050505050565b606060005b8251811015610dd25781838281518110610d9557610d9561183c565b6020026020010151604051602001610dae929190611852565b60405160208183030381529060405291508080610dca9061188a565b915050610d79565b5060006040518060400160405280601481526020017342696e616e63652d436861696e2d47616e67657360601b81525087878660345486604051602001610e1e969594939291906118a3565b60408051601f1981840301815291905280516020909101206033549091506001600160a01b0316610e4f82876110de565b6001600160a01b031614610e7657604051636eb5c6cb60e11b815260040160405180910390fd5b50505050505050565b600082610e8c85846110fa565b14949350505050565b6060600083516002610ea79190611914565b67ffffffffffffffff811115610ebf57610ebf611826565b6040519080825280601f01601f191660200182016040528015610ee9576020820181803683370190505b5060408051808201909152601081526f181899199a1a9b1b9c1cb0b131b232b360811b602082015290915060005b855181101561102f57818251878381518110610f3557610f3561183c565b0160200151610f47919060f81c611941565b81518110610f5757610f5761183c565b01602001516001600160f81b03191683610f72836002611914565b81518110610f8257610f8261183c565b60200101906001600160f81b031916908160001a905350818251878381518110610fae57610fae61183c565b0160200151610fc0919060f81c611955565b81518110610fd057610fd061183c565b01602001516001600160f81b03191683610feb836002611914565b610ff6906001611969565b815181106110065761100661183c565b60200101906001600160f81b031916908160001a905350806110278161188a565b915050610f17565b50831561105f5781604051602001611047919061197c565b60405160208183030381529060405292505050610aec565b509392505050565b60005b818110156110d7578381815181106110845761108461183c565b01602001516001600160f81b031916858461109e8161188a565b9550815181106110b0576110b061183c565b60200101906001600160f81b031916908160001a9053506110d08161188a565b905061106a565b5050505050565b60008060006110ed858561113f565b9150915061105f81611184565b600081815b845181101561105f5761112b8286838151811061111e5761111e61183c565b60200260200101516112d1565b9150806111378161188a565b9150506110ff565b60008082516041036111755760208301516040840151606085015160001a61116987828585611303565b9450945050505061117d565b506000905060025b9250929050565b6000816004811115611198576111986119a6565b036111a05750565b60018160048111156111b4576111b46119a6565b036112015760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610352565b6002816004811115611215576112156119a6565b036112625760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610352565b6003816004811115611276576112766119a6565b036112ce5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610352565b50565b60008183106112ed5760008281526020849052604090206112fc565b60008381526020839052604090205b9392505050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561133a57506000905060036113be565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa15801561138e573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166113b7576000600192509250506113be565b9150600090505b94509492505050565b60005b838110156113e25781810151838201526020016113ca565b50506000910152565b602081526000825180602084015261140a8160408501602087016113c7565b601f01601f19169190910160400192915050565b6000806040838503121561143157600080fd5b8235915060208301356001600160a01b038116811461144f57600080fd5b809150509250929050565b60008083601f84011261146c57600080fd5b50813567ffffffffffffffff81111561148457600080fd5b60208301915083602082850101111561117d57600080fd5b600080600080604085870312156114b257600080fd5b843567ffffffffffffffff808211156114ca57600080fd5b6114d68883890161145a565b909650945060208701359150808211156114ef57600080fd5b506114fc8782880161145a565b95989497509550505050565b60008083601f84011261151a57600080fd5b50813567ffffffffffffffff81111561153257600080fd5b6020830191508360208260051b850101111561117d57600080fd5b60008060008060008060008060008060c08b8d03121561156c57600080fd5b8a35995060208b0135985060408b013567ffffffffffffffff8082111561159257600080fd5b61159e8e838f0161145a565b909a50985060608d01359150808211156115b757600080fd5b6115c38e838f0161145a565b909850965060808d01359150808211156115dc57600080fd5b6115e88e838f0161145a565b909650945060a08d013591508082111561160157600080fd5b5061160e8d828e01611508565b915080935050809150509295989b9194979a5092959850565b60006020828403121561163957600080fd5b5035919050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60408152600061167d604083018688611640565b8281036020840152611690818587611640565b979650505050505050565b600084516116ad8184602089016113c7565b91909101928352506020820152604001919050565b600082516116d48184602087016113c7565b9190910192915050565b7f7b226163636f756e745f6e756d626572223a2230222c22636861696e5f6964228152611d1160f11b602082015260008551611721816022850160208a016113c7565b7f222c2264617461223a6e756c6c2c226d656d6f223a22222c226d736773223a5b6022918401918201526a3d9130b6b7bab73a111d1160a91b6042820152855161177281604d840160208a016113c7565b6e1116113932b1b4b834b2b73a111d1160891b604d929091019182015284516117a281605c8401602089016113c7565b711116113a37b5b2b72fb9bcb6b137b6111d1160711b605c929091019182015283516117d581606e8401602088016113c7565b7f227d5d2c2273657175656e6365223a2230222c22736f75726365223a2230227d606e9290910191820152608e019695505050505050565b60006020828403121561181f57600080fd5b5051919050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b600083516118648184602088016113c7565b9190910191825250602001919050565b634e487b7160e01b600052601160045260246000fd5b60006001820161189c5761189c611874565b5060010190565b600087516118b5818460208c016113c7565b606088901b6bffffffffffffffffffffffff191690830190815286516118e2816014840160208b016113c7565b01601481018690526034810185905283516119048160548401602088016113c7565b0160540198975050505050505050565b8082028115828204841417610aec57610aec611874565b634e487b7160e01b600052601260045260246000fd5b6000826119505761195061192b565b500490565b6000826119645761196461192b565b500690565b80820180821115610aec57610aec611874565b61060f60f31b8152600082516119998160028501602087016113c7565b9190910160020192915050565b634e487b7160e01b600052602160045260246000fdfea164736f6c6343000811000a", }, }, } @@ -828,17 +822,17 @@ func init() { { ContractAddr: common.HexToAddress(ValidatorContract), CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/cfc0bd1127186a917ddc38fd38d22903034d3f0b", - Code: "6080604052600436106104da5760003560e01c80638a7beb0111610281578063c6d339451161015a578063e40716a1116100cc578063f92eb86b11610085578063f92eb86b14610ccd578063f9a2bbc714610ce2578063fc3e590814610cf7578063fccc281314610d0c578063fd4ad81f14610d21578063fd6a687914610d50576104e1565b8063e40716a114610c30578063e589b61e14610c45578063ea321e4914610c65578063eb57e20214610c85578063eda5868c14610ca5578063f340fa0114610cba576104e1565b8063d86222d51161011e578063d86222d514610bb2578063daacdb6614610bc7578063dc927faf14610bdc578063df8079e914610bf1578063e086c7b114610c06578063e1c7392a14610c1b576104e1565b8063c6d3394514610b53578063c81b166214610b68578063c8509d811461090d578063ce910b0c14610b7d578063d68fb56a14610b9d576104e1565b8063aa82dce1116101f3578063ad3c9da6116101b7578063ad3c9da614610ad2578063aef198a914610af2578063b7ab4db514610b07578063b8cf4ef114610b29578063bf9f4995146106bd578063c466689d14610b3e576104e1565b8063aa82dce114610a5e578063aad5606314610a73578063aaf5eb6814610a88578063ab51bb9614610a9d578063ac43175114610ab2576104e1565b80639dc09262116102455780639dc09262146109e05780639fe0f816146109f5578063a0dc275814610a0a578063a1a11bf514610a1f578063a5422d5c14610a34578063a78abc1614610a49576104e1565b80638a7beb011461096c5780638b5ad0c9146109815780638d19a410146109965780639369d7de146109b657806396713da9146109cb576104e1565b806351e80672116103b357806370fd5bad116103255780637a84ca2a116102e95780637a84ca2a146108e357806381650b62146108f8578063831d65d11461090d578063853230aa1461092d578063862498821461094257806388b32f1114610957576104e1565b806370fd5bad1461087a578063718a8aa81461088f57806375d47a0a146108a457806378dfed4a146108b95780637942fd05146108ce576104e1565b80635de1e22c116103775780635de1e22c146107e9578063603d86d3146106a857806360eba4fe146107fe57806362b72cf51461081e5780636969a25c146108335780636e47b48214610865576104e1565b806351e806721461076a57806355614fcc1461077f578063565c56b31461079f5780635667515a146107bf5780635d77156c146107d4576104e1565b80633365af3a1161044c57806343756e5c1161041057806343756e5c146106df57806345cf9daf146106f4578063493279b1146107095780634bf6c8821461072b5780634df6e0c3146107405780635192c82c14610755576104e1565b80633365af3a1461064557806335409f7f146106655780633b071dcc146106855780633de0f0d8146106a85780633dffc387146106bd576104e1565b8063152ad3b81161049e578063152ad3b8146105995780631e4c1524146105bb5780631ff18069146105db578063219f22d5146105f0578063300c356714610605578063321d398a14610625576104e1565b806304c4fec6146104e657806307a56847146104fd5780630bee7a67146105285780630e2374a51461054a5780631182b8751461056c576104e1565b366104e157005b600080fd5b3480156104f257600080fd5b506104fb610d65565b005b34801561050957600080fd5b50610512610dd7565b60405161051f9190618c29565b60405180910390f35b34801561053457600080fd5b5061053d610ddd565b60405161051f9190618c53565b34801561055657600080fd5b5061055f610de2565b60405161051f9190617fa5565b34801561057857600080fd5b5061058c610587366004617e8b565b610de8565b60405161051f9190618138565b3480156105a557600080fd5b506105ae6110cb565b60405161051f919061812d565b3480156105c757600080fd5b506104fb6105d6366004617c99565b6110d4565b3480156105e757600080fd5b50610512611774565b3480156105fc57600080fd5b5061053d61177a565b34801561061157600080fd5b506104fb610620366004617c31565b61177f565b34801561063157600080fd5b506105ae610640366004617e38565b611ac8565b34801561065157600080fd5b506105ae610660366004617e38565b611b97565b34801561067157600080fd5b506104fb610680366004617bf9565b611c48565b34801561069157600080fd5b5061069a611da1565b60405161051f929190618043565b3480156106b457600080fd5b5061051261207d565b3480156106c957600080fd5b506106d2612083565b60405161051f9190618c64565b3480156106eb57600080fd5b5061055f612088565b34801561070057600080fd5b5061051261208e565b34801561071557600080fd5b5061071e612094565b60405161051f9190618c1a565b34801561073757600080fd5b506106d2612099565b34801561074c57600080fd5b5061069a61209e565b34801561076157600080fd5b5061051261221c565b34801561077657600080fd5b5061055f612222565b34801561078b57600080fd5b506105ae61079a366004617bf9565b612228565b3480156107ab57600080fd5b506105126107ba366004617bf9565b61225d565b3480156107cb57600080fd5b506106d26122ae565b3480156107e057600080fd5b5061053d6122b3565b3480156107f557600080fd5b506105126122b8565b34801561080a57600080fd5b5061058c610819366004617e38565b6122be565b34801561082a57600080fd5b50610512612364565b34801561083f57600080fd5b5061085361084e366004617e38565b61236a565b60405161051f96959493929190617fd2565b34801561087157600080fd5b5061055f6123ce565b34801561088657600080fd5b506106d26123d4565b34801561089b57600080fd5b506106d26123d9565b3480156108b057600080fd5b5061055f6123de565b3480156108c557600080fd5b506105126122ae565b3480156108da57600080fd5b506106d26123e4565b3480156108ef57600080fd5b506105126123e9565b34801561090457600080fd5b5061053d6123ef565b34801561091957600080fd5b506104fb610928366004617e8b565b6123f4565b34801561093957600080fd5b50610512612455565b34801561094e57600080fd5b5061051261245b565b34801561096357600080fd5b50610512612461565b34801561097857600080fd5b506105ae612467565b34801561098d57600080fd5b50610512612470565b3480156109a257600080fd5b506105126109b1366004617bf9565b612476565b3480156109c257600080fd5b506104fb6124b6565b3480156109d757600080fd5b506106d26125ca565b3480156109ec57600080fd5b5061055f6125cf565b348015610a0157600080fd5b506105126125d5565b348015610a1657600080fd5b506105126125da565b348015610a2b57600080fd5b5061055f6125df565b348015610a4057600080fd5b5061058c6125e5565b348015610a5557600080fd5b506105ae612601565b348015610a6a57600080fd5b5061055f61260a565b348015610a7f57600080fd5b5061055f612610565b348015610a9457600080fd5b50610512612616565b348015610aa957600080fd5b5061053d6122ae565b348015610abe57600080fd5b506104fb610acd366004617ddc565b61261f565b348015610ade57600080fd5b50610512610aed366004617bf9565b612ebd565b348015610afe57600080fd5b50610512612ecf565b348015610b1357600080fd5b50610b1c612edc565b60405161051f9190618030565b348015610b3557600080fd5b50610512612fc8565b348015610b4a57600080fd5b50610512612fcd565b348015610b5f57600080fd5b506105126123d4565b348015610b7457600080fd5b5061055f612fd3565b348015610b8957600080fd5b5061058c610b98366004617e38565b612fd9565b348015610ba957600080fd5b50610512612fe6565b348015610bbe57600080fd5b50610512613025565b348015610bd357600080fd5b50610512613031565b348015610be857600080fd5b5061055f613037565b348015610bfd57600080fd5b5061055f61303d565b348015610c1257600080fd5b50610512610ddd565b348015610c2757600080fd5b506104fb613043565b348015610c3c57600080fd5b506105126131ef565b348015610c5157600080fd5b506104fb610c60366004617bf9565b6131f5565b348015610c7157600080fd5b506105ae610c80366004617d9d565b61333a565b348015610c9157600080fd5b506104fb610ca0366004617bf9565b6134c0565b348015610cb157600080fd5b5061053d6135c4565b6104fb610cc8366004617bf9565b6135c9565b348015610cd957600080fd5b50610512613931565b348015610cee57600080fd5b5061055f613937565b348015610d0357600080fd5b506106d26125d5565b348015610d1857600080fd5b5061055f61393d565b348015610d2d57600080fd5b50610d41610d3c366004617e38565b613943565b60405161051f93929190618c32565b348015610d5c57600080fd5b5061055f613a05565b6000610d7033612476565b9050600b8181548110610d7f57fe5b600091825260209091206001601690920201015460ff16610dbb5760405162461bcd60e51b8152600401610db29061889d565b60405180910390fd5b6000610dc5612fe6565b9050610dd2338383613a0b565b505050565b60095481565b606481565b61200181565b60005460609060ff16610e0d5760405162461bcd60e51b8152600401610db2906182f7565b600b54610ecb57610e1c6177a5565b60015460005b81811015610ec757600b80546001810182556000919091528351600080516020618d368339815191526016909202918201908155602080860151600080516020618d768339815191528401805460ff1916911515919091179055604086015180518794610ea393600080516020618d568339815191529091019201906177d4565b506060820151610eb9906003830190601361784e565b505050806001019050610e22565b5050505b610ed361787b565b6000610f1485858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250613cdc92505050565b9150915080610f3057610f276064613e98565b925050506110c4565b815160009060ff16610f5557610f4e83602001518460400151613ef9565b9050611090565b825160ff166001141561108c57826020015151600114610f9a57600080516020618d16833981519152604051610f8a90618756565b60405180910390a1506067611087565b6000600460008560200151600081518110610fb157fe5b6020026020010151600001516001600160a01b03166001600160a01b0316815260200190815260200160002054905080600014806110195750600180820381548110610ff957fe5b9060005260206000209060040201600201601c9054906101000a900460ff165b1561107957836020015160008151811061102f57fe5b6020026020010151600001516001600160a01b03167fe209c46bebf57cf265d5d9009a00870e256d9150f3ed5281ab9d9eb3cec6e4be60405160405180910390a260009150611085565b6110828161505d565b91505b505b611090565b5060655b63ffffffff81166110b557505060408051600081526020810190915291506110c49050565b6110be81613e98565b93505050505b9392505050565b60075460ff1681565b3341146110f35760405162461bcd60e51b8152600401610db290618a85565b3a156111115760405162461bcd60e51b8152600401610db2906187dc565b825160408051828152602080840282010190915260609082801561114f57816020015b61113c61789f565b8152602001906001900390816111345790505b50905060005b828110156111f9576040518060c0016040528087838151811061117457fe5b60200260200101516001600160a01b0316815260200160006001600160a01b0316815260200160006001600160a01b031681526020018683815181106111b657fe5b60200260200101516001600160401b0316815260200160001515815260200160008152508282815181106111e657fe5b6020908102919091010152600101611155565b5060405163d31f968d60e01b81526120009063d31f968d906112249061100090600890600401618014565b60206040518083038186803b15801561123c57600080fd5b505afa158015611250573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112749190617d7d565b1561156d5780518061128857505050610dd2565b6015548181111561132357815b818110156113215760158054806112a857fe5b60008281526020812060046000199093019283020180546001600160a01b0319908116825560018201805490911690556002810180546001600160e81b031916905560030155905560168054806112fb57fe5b60019003818190600052602060002001600061131791906178d4565b9055600101611295565b505b60005b828110156115635781811061144b57601584828151811061134357fe5b602090810291909101810151825460018181018555600094855293839020825160049092020180546001600160a01b039283166001600160a01b0319918216178255938301519481018054958316958516959095179094556040820151600285018054606085015160808601511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b199590961692909716919091179290921692909217169290921790915560a00151600390910155855160169087908390811061141357fe5b6020908102919091018101518254600181018455600093845292829020815161144594919091019291909101906177d4565b5061155b565b83818151811061145757fe5b60200260200101516015828154811061146c57fe5b6000918252602091829020835160049092020180546001600160a01b039283166001600160a01b0319918216178255928401516001820180549184169185169190911790556040840151600282018054606087015160808801511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b1995909716929097169190911792909216939093171692909217905560a090910151600390910155855186908290811061152757fe5b60200260200101516016828154811061153c57fe5b9060005260206000200190805190602001906115599291906177d4565b505b600101611326565b5050505050610dd2565b60608061157a8386615171565b9150915060005b600154811015611664576001818154811061159857fe5b90600052602060002090600402016003015460001461165c576120026001600160a01b031663092193ab600183815481106115cf57fe5b906000526020600020906004020160030154600184815481106115ee57fe5b60009182526020909120600491820201546040516001600160e01b031960e086901b168152611629926001600160a01b039092169101617fa5565b6000604051808303818588803b15801561164257600080fd5b505af1158015611656573d6000803e3d6000fd5b50505050505b600101611581565b5047156116d2577f6ecc855f9440a9282c90913bbc91619fd44f5ec0b462af28d127b116f130aa4d4760405161169a9190618c29565b60405180910390a1604051611002904780156108fc02916000818181858888f193505050501580156116d0573d6000803e3d6000fd5b505b600060038190556005558151156116ed576116ed82826153aa565b6110016001600160a01b031663fc4333cd6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561172a57600080fd5b505af115801561173e573d6000803e3d6000fd5b50506040517fedd8d7296956dd970ab4de3f2fc03be2b0ffc615d20cd4c72c6e44f928630ebf925060009150a150505050505050565b60035481565b606881565b33411461179e5760405162461bcd60e51b8152600401610db290618a85565b60105443116117bf5760405162461bcd60e51b8152600401610db290618453565b3a156117dd5760405162461bcd60e51b8152600401610db2906187dc565b60005460ff166117ff5760405162461bcd60e51b8152600401610db2906182f7565b60006110023168056bc75e2d631000008111156118365761182f8168056bc75e2d6310000063ffffffff615bb116565b915061183d565b5050611abe565b6040516309a99b4f60e41b815261100290639a99b4f0906118649030908690600401617fb9565b602060405180830381600087803b15801561187e57600080fd5b505af1158015611892573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118b69190617e50565b9150816118c4575050611abe565b6000805b848110156118f2578585828181106118dc57fe5b90506020020135820191508060010190506118c8565b508061190057505050611abe565b6000806000805b89811015611ab6578489898381811061191c57fe5b9050602002013588028161192c57fe5b0493508a8a8281811061193b57fe5b90506020020160208101906119509190617bf9565b6001600160a01b03811660009081526004602052604090205490935091508115611a6c57600060018084038154811061198557fe5b9060005260206000209060040201905080600201601c9054906101000a900460ff16156119f257836001600160a01b03167fb9c75cbbfde137c4281689580799ef5f52144e78858f776a5979b2b212137d85866040516119e59190618c29565b60405180910390a2611a66565b600354611a05908663ffffffff615bf316565b6003908155810154611a1d908663ffffffff615bf316565b60038201556040516001600160a01b038516907fcb0aad6cf9cd03bdf6137e359f541c42f38b39f007cae8e89e88aa7d8c6617b290611a5d908890618c29565b60405180910390a25b50611aae565b826001600160a01b03167fb9c75cbbfde137c4281689580799ef5f52144e78858f776a5979b2b212137d8585604051611aa59190618c29565b60405180910390a25b600101611907565b505050505050505b5050436010555050565b6001546000908210611adc57506000611b92565b60006001600160a01b031660018381548110611af457fe5b60009182526020909120600490910201546001600160a01b03161480611b2457506008541580611b245750600a54155b80611b33575060085460095410155b80611b445750611b4282611b97565b155b80611b6d57506000600b8381548110611b5957fe5b906000526020600020906016020160000154115b80611b8157506001611b7d612edc565b5111155b15611b8e57506000611b92565b5060015b919050565b6001546000908210611bab57506000611b92565b600b548210611be85760018281548110611bc157fe5b9060005260206000209060040201600201601c9054906101000a900460ff16159050611b92565b60018281548110611bf557fe5b9060005260206000209060040201600201601c9054906101000a900460ff16158015611c425750600b8281548110611c2957fe5b600091825260209091206001601690920201015460ff16155b92915050565b3361100114611c695760405162461bcd60e51b8152600401610db290618b9a565b600b54611d2757611c786177a5565b60015460005b81811015611d2357600b80546001810182556000919091528351600080516020618d368339815191526016909202918201908155602080860151600080516020618d768339815191528401805460ff1916911515919091179055604086015180518794611cff93600080516020618d568339815191529091019201906177d4565b506060820151611d15906003830190601361784e565b505050806001019050611c7e565b5050505b6001600160a01b03811660009081526004602052604090205480611d4b5750611d9e565b6001810390506000600b8281548110611d6057fe5b600091825260209091206001601690920201015460ff169050611d838383615c18565b8015611d8c5750805b15610dd2576009805460001901905550505b50565b60015460609081906000805b82811015611df45760018181548110611dc257fe5b9060005260206000209060040201600201601c9054906101000a900460ff16611dec576001909101905b600101611dad565b50606081604051908082528060200260200182016040528015611e21578160200160208202803683370190505b509050606082604051908082528060200260200182016040528015611e5a57816020015b6060815260200190600190039081611e455790505b50600b5460009450909150841415611fd55760005b84811015611fcf5760018181548110611e8457fe5b9060005260206000209060040201600201601c9054906101000a900460ff16611fc75760018181548110611eb457fe5b600091825260209091206004909102015483516001600160a01b0390911690849086908110611edf57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050600b8181548110611f0c57fe5b600091825260209182902060026016909202018101805460408051601f600019610100600186161502019093169490940491820185900485028401850190528083529192909190830182828015611fa45780601f10611f7957610100808354040283529160200191611fa4565b820191906000526020600020905b815481529060010190602001808311611f8757829003601f168201915b5050505050828581518110611fb557fe5b60209081029190910101526001909301925b600101611e6f565b50612071565b60005b8481101561206f5760018181548110611fed57fe5b9060005260206000209060040201600201601c9054906101000a900460ff16612067576001818154811061201d57fe5b600091825260209091206004909102015483516001600160a01b039091169084908690811061204857fe5b6001600160a01b03909216602092830291909101909101526001909301925b600101611fd8565b505b909450925050505b9091565b61271081565b600181565b61100181565b60085481565b603881565b600881565b600e54600c546060918291806120b2575060155b60606120bc612edc565b905060606120c982615fcb565b9050828251116120e0579094509250612079915050565b838383510310156120f2578282510393505b83156121285760c8430461210e83838388880360008a8a616139565b6121268383838888038989038a8b8b8b510301616139565b505b606083604051908082528060200260200182016040528015612154578160200160208202803683370190505b50905060608460405190808252806020026020018201604052801561218d57816020015b60608152602001906001900390816121785790505b50905060005b8581101561220e578481815181106121a757fe5b60200260200101518382815181106121bb57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508381815181106121e757fe5b60200260200101518282815181106121fb57fe5b6020908102919091010152600101612193565b509096509450505050509091565b60065481565b61200081565b6001600160a01b03811660009081526004602052604081205480612250576000915050611b92565b600019016110c481611b97565b6001600160a01b03811660009081526004602052604081205480612285576000915050611b92565b60018082038154811061229457fe5b906000526020600020906004020160030154915050919050565b600081565b606781565b600f5481565b601281815481106122cb57fe5b600091825260209182902001805460408051601f600260001961010060018716150201909416939093049283018590048502810185019091528181529350909183018282801561235c5780601f106123315761010080835404028352916020019161235c565b820191906000526020600020905b81548152906001019060200180831161233f57829003601f168201915b505050505081565b60105481565b6001818154811061237757fe5b600091825260209091206004909102018054600182015460028301546003909301546001600160a01b0392831694509082169291821691600160a01b81046001600160401b031691600160e01b90910460ff169086565b61100581565b600281565b601081565b61100881565b600b81565b600c5481565b606681565b33612000146124155760405162461bcd60e51b8152600401610db290618a36565b7f41ce201247b6ceb957dcdb217d0b8acb50b9ea0e12af9af4f5e7f3890210160583838360405161244893929190618c72565b60405180910390a1505050565b6103e881565b60025481565b60115481565b60145460ff1681565b600a5481565b6001600160a01b038116600090815260046020526040812054806124ac5760405162461bcd60e51b8152600401610db2906189be565b6000190192915050565b600b54612574576124c56177a5565b60015460005b8181101561257057600b80546001810182556000919091528351600080516020618d368339815191526016909202918201908155602080860151600080516020618d768339815191528401805460ff191691151591909117905560408601518051879461254c93600080516020618d568339815191529091019201906177d4565b506060820151612562906003830190601361784e565b5050508060010190506124cb565b5050505b6008546125815760036008555b600a5461258e576002600a555b600061259933612476565b90506125a481611ac8565b6125c05760405162461bcd60e51b8152600401610db290618713565b611d9e3382616290565b600981565b61100781565b600381565b60c881565b61100681565b6040518060a0016040528060788152602001618d966078913981565b60005460ff1681565b61200281565b61300081565b6402540be40081565b60005460ff166126415760405162461bcd60e51b8152600401610db2906182f7565b33611007146126625760405162461bcd60e51b8152600401610db29061880a565b6126cc84848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080518082019091526013815272065787069726554696d655365636f6e6447617606c1b602082015291506163289050565b1561276957602081146126f15760405162461bcd60e51b8152600401610db290618978565b604080516020601f840181900481028201810190925282815260009161272f9185858083850183828082843760009201919091525061638192505050565b9050606481101580156127455750620186a08111155b6127615760405162461bcd60e51b8152600401610db290618603565b600255612e7a565b6127c984848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260098152686275726e526174696f60b81b602082015291506163289050565b1561285857602081146127ee5760405162461bcd60e51b8152600401610db29061817d565b604080516020601f840181900481028201810190925282815260009161282c9185858083850183828082843760009201919091525061638192505050565b90506127108111156128505760405162461bcd60e51b8152600401610db290618495565b600655612e7a565b6128c284848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260138152726d61784e756d4f664d61696e7461696e696e6760681b602082015291506163289050565b1561295c57602081146128e75760405162461bcd60e51b8152600401610db2906181b4565b604080516020601f84018190048102820181019092528281526000916129259185858083850183828082843760009201919091525061638192505050565b600c5490915080612934575060155b8082106129535760405162461bcd60e51b8152600401610db290618508565b50600855612e7a565b6129c584848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260128152716d61696e7461696e536c6173685363616c6560701b602082015291506163289050565b15612a5e57602081146129ea5760405162461bcd60e51b8152600401610db29061827d565b604080516020601f8401819004810282018101909252828152600091612a289185858083850183828082843760009201919091525061638192505050565b9050600081118015612a3a5750600a81105b612a565760405162461bcd60e51b8152600401610db290618b16565b600a55612e7a565b612ad284848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601981527f6d61784e756d4f66576f726b696e6743616e6469646174657300000000000000602082015291506163289050565b15612b615760208114612af75760405162461bcd60e51b8152600401610db290618231565b604080516020601f8401819004810282018101909252828152600091612b359185858083850183828082843760009201919091525061638192505050565b9050600d54811115612b595760405162461bcd60e51b8152600401610db290618679565b600e55612e7a565b612bca84848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260128152716d61784e756d4f6643616e6469646174657360701b602082015291506163289050565b15612c4c5760208114612bef5760405162461bcd60e51b8152600401610db290618858565b604080516020601f8401819004810282018101909252828152600091612c2d9185858083850183828082843760009201919091525061638192505050565b600d819055600e54909150811015612c4657600d54600e555b50612e7a565b612cb084848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600d81526c6e756d4f66436162696e65747360981b602082015291506163289050565b15612d5e5760208114612cd55760405162461bcd60e51b8152600401610db2906182c2565b604080516020601f8401819004810282018101909252828152600091612d139185858083850183828082843760009201919091525061638192505050565b905060008111612d355760405162461bcd60e51b8152600401610db290618365565b6064811115612d565760405162461bcd60e51b8152600401610db2906183ad565b600c55612e7a565b612dc684848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601181527073797374656d526577617264526174696f60781b602082015291506163289050565b15612e625760208114612deb5760405162461bcd60e51b8152600401610db290618ad2565b604080516020601f8401819004810282018101909252828152600091612e299185858083850183828082843760009201919091525061638192505050565b905060018110158015612e3e57506127108111155b612e5a5760405162461bcd60e51b8152600401610db2906185b0565b600f55612e7a565b60405162461bcd60e51b8152600401610db290618b73565b7f6cdb0ac70ab7f2e2d035cca5be60d89906f2dede7648ddbd7402189c1eeed17a84848484604051612eaf949392919061814b565b60405180910390a150505050565b60046020526000908152604090205481565b68056bc75e2d6310000081565b6001546060906000805b82811015612f0b57612ef781611b97565b15612f03578160010191505b600101612ee6565b50606081604051908082528060200260200182016040528015612f38578160200160208202803683370190505b5090506000915060005b83811015612fbf57612f5381611b97565b15612fb75760018181548110612f6557fe5b600091825260209091206004909102015482516001600160a01b0390911690839085908110612f9057fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508260010192505b600101612f42565b50925050505b90565b601581565b61027181565b61100281565b601381815481106122cb57fe5b6000612ff0612edc565b519050600080600c5411613005576015613009565b600c545b905080821115613017578091505b8161302157600191505b5090565b67016345785d8a000081565b60055481565b61100381565b61200481565b60005460ff16156130665760405162461bcd60e51b8152600401610db29061890a565b61306e61787b565b60006130916040518060a0016040528060788152602001618d9660789139613cdc565b91509150806130b25760405162461bcd60e51b8152600401610db2906189f5565b60005b8260200151518110156131d7576001836020015182815181106130d457fe5b60209081029190910181015182546001818101855560009485528385208351600493840290910180546001600160a01b039283166001600160a01b03199182161782558587015182850180549185169183169190911790556040860151600283018054606089015160808a01511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b199590981692909516919091179290921694909417161790915560a0909301516003909301929092559186015180519185019391859081106131aa57fe5b602090810291909101810151516001600160a01b03168252810191909152604001600020556001016130b5565b50506103e8600255506000805460ff19166001179055565b600d5481565b33612002146132165760405162461bcd60e51b8152600401610db290618be3565b60005b60155481101561329e57816001600160a01b03166015828154811061323a57fe5b60009182526020909120600490910201546001600160a01b031614156132965760016015828154811061326957fe5b9060005260206000209060040201600201601c6101000a81548160ff02191690831515021790555061329e565b600101613219565b506001600160a01b0381166000908152600460205260409020548015806132ef57506001808203815481106132cf57fe5b9060005260206000209060040201600201601c9054906101000a900460ff165b1561332d576040516001600160a01b038316907fe209c46bebf57cf265d5d9009a00870e256d9150f3ed5281ab9d9eb3cec6e4be90600090a2613336565b610dd28161505d565b5050565b601354600090815b818110156134435761342b85858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060138054909250859150811061339357fe5b600091825260209182902001805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156134215780601f106133f657610100808354040283529160200191613421565b820191906000526020600020905b81548152906001019060200180831161340457829003601f168201915b5050505050616386565b1561343b57600192505050611c42565b600101613342565b5060125460005b818110156134b45761349b86868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060128054909250859150811061339357fe5b156134ac5760019350505050611c42565b60010161344a565b50600095945050505050565b33611001146134e15760405162461bcd60e51b8152600401610db290618b9a565b600b5461359f576134f06177a5565b60015460005b8181101561359b57600b80546001810182556000919091528351600080516020618d368339815191526016909202918201908155602080860151600080516020618d768339815191528401805460ff191691151591909117905560408601518051879461357793600080516020618d568339815191529091019201906177d4565b50606082015161358d906003830190601361784e565b5050508060010190506134f6565b5050505b60006135aa826163ea565b90506135b581611ac8565b15613336576133368282616290565b606581565b3341146135e85760405162461bcd60e51b8152600401610db290618a85565b60005460ff1661360a5760405162461bcd60e51b8152600401610db2906182f7565b6000341161362a5760405162461bcd60e51b8152600401610db29061864a565b3a156136485760405162461bcd60e51b8152600401610db2906187dc565b6001600160a01b03811660009081526004602052604090205460145434919060ff1661368857610271600f556103aa6006556014805460ff191660011790555b60006136b16127106136a5600f548661658d90919063ffffffff16565b9063ffffffff6165c716565b90508015613721576040516110029082156108fc029083906000818181858888f193505050501580156136e8573d6000803e3d6000fd5b507f6ecc855f9440a9282c90913bbc91619fd44f5ec0b462af28d127b116f130aa4d816040516137189190618c29565b60405180910390a15b60008311801561373357506000600654115b156137d95760006137556127106136a56006548761658d90919063ffffffff16565b905080156137d75760405161dead9082156108fc029083906000818181858888f1935050505015801561378c573d6000803e3d6000fd5b507f627059660ea01c4733a328effb2294d2f86905bf806da763a89cee254de8bee5816040516137bc9190618c29565b60405180910390a16137d4848263ffffffff615bb116565b93505b505b6137e9838263ffffffff615bb116565b925081156138e957600060018084038154811061380257fe5b9060005260206000209060040201905080600201601c9054906101000a900460ff161561386f57846001600160a01b03167ff177e5d6c5764d79c32883ed824111d9b13f5668cf6ab1cc12dd36791dd955b4856040516138629190618c29565b60405180910390a26138e3565b600354613882908563ffffffff615bf316565b600390815581015461389a908563ffffffff615bf316565b60038201556040516001600160a01b038616907f93a090ecc682c002995fad3c85b30c5651d7fd29b0be5da9d784a3302aedc055906138da908790618c29565b60405180910390a25b5061392b565b836001600160a01b03167ff177e5d6c5764d79c32883ed824111d9b13f5668cf6ab1cc12dd36791dd955b4846040516139229190618c29565b60405180910390a25b50505050565b600e5481565b61100081565b61dead81565b600b818154811061395057fe5b6000918252602091829020601691909102018054600180830154600280850180546040805161010096831615969096026000190190911692909204601f810188900488028501880190925281845293965060ff909116949192918301828280156139fb5780601f106139d0576101008083540402835291602001916139fb565b820191906000526020600020905b8154815290600101906020018083116139de57829003601f168201915b5050505050905083565b61100481565b6000600a5460001480613a1c575081155b80613a275750600954155b15613a34575060006110c4565b60096000815460019003919050819055506000613a7f600a546136a5856136a5600b8981548110613a6157fe5b6000918252602090912060169091020154439063ffffffff615bb116565b90506000600b8581548110613a9057fe5b906000526020600020906016020160010160006101000a81548160ff0219169083151502179055506000806110016001600160a01b0316638256ace66040518163ffffffff1660e01b8152600401604080518083038186803b158015613af557600080fd5b505afa158015613b09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b2d9190617e68565b9150915060009350808310613c8c57613b468787615c18565b506040516333c1892360e21b81526000906120029063cf06248c90613b6f908b90600401617fa5565b60206040518083038186803b158015613b8757600080fd5b505afa158015613b9b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613bbf9190617c15565b6001600160a01b031614613c2b576040516313d13bdb60e31b815261100190639e89ded890613bf4908a908790600401617fb9565b600060405180830381600087803b158015613c0e57600080fd5b505af1158015613c22573d6000803e3d6000fd5b50505050613c83565b6040516305bfb49960e41b815261100190635bfb499090613c50908a90600401617fa5565b600060405180830381600087803b158015613c6a57600080fd5b505af1158015613c7e573d6000803e3d6000fd5b505050505b60019350613c9e565b818310613c9e57613c9c876163ea565b505b6040516001600160a01b038816907fb9d38178dc641ff1817967a63c9078cbcd955a9f1fcd75e0e3636de615d44d3b90600090a25050509392505050565b613ce461787b565b6000613cee61787b565b613cf6617918565b613d07613d0286616609565b61662e565b90506000805b613d1683616678565b15613e8a5780613d3b57613d31613d2c84616699565b6166e7565b60ff168452613e82565b8060011415613e7d576060613d57613d5285616699565b616767565b90508051604051908082528060200260200182016040528015613d9457816020015b613d8161789f565b815260200190600190039081613d795790505b5085602001819052508051604051908082528060200260200182016040528015613dd257816020015b6060815260200190600190039081613dbd5790505b50604086015260005b8151811015613e7257613dec61789f565b60606000613e0c858581518110613dff57fe5b6020026020010151616838565b92509250925080613e2c578860009a509a50505050505050505050613e93565b8289602001518581518110613e3d57fe5b60200260200101819052508189604001518581518110613e5957fe5b6020026020010181905250505050806001019050613ddb565b506001925050613e82565b613e8a565b600101613d0d565b50919350909150505b915091565b604080516001808252818301909252606091829190816020015b6060815260200190600190039081613eb2579050509050613ed88363ffffffff16616952565b81600081518110613ee557fe5b60200260200101819052506110c481616965565b6000606483511115613f3057600080516020618d16833981519152604051613f209061840a565b60405180910390a1506066611c42565b60005b8351811015613fce5760005b81811015613fc557848181518110613f5357fe5b6020026020010151600001516001600160a01b0316858381518110613f7457fe5b6020026020010151600001516001600160a01b03161415613fbd57600080516020618d16833981519152604051613faa90618565565b60405180910390a1606692505050611c42565b600101613f3f565b50600101613f33565b5060608060606015805480602002602001604051908101604052809291908181526020016000905b828210156140805760008481526020908190206040805160c0810182526004860290920180546001600160a01b039081168452600180830154821685870152600283015491821693850193909352600160a01b81046001600160401b03166060850152600160e01b900460ff16151560808401526003015460a08301529083529092019101613ff6565b50505050905060606016805480602002602001604051908101604052809291908181526020016000905b828210156141555760008481526020908190208301805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156141415780601f1061411657610100808354040283529160200191614141565b820191906000526020600020905b81548152906001019060200180831161412457829003601f168201915b5050505050815260200190600101906140aa565b50505050905060005b82518110156141b25782818151811061417357fe5b60200260200101516060015160020283828151811061418e57fe5b60209081029190910101516001600160401b0390911660609091015260010161415e565b506060806141c2898986866169ef565b915091506141d08282615171565b6001546040805182815260208084028201019091529298509096506000955085945092506060915082801561420f578160200160208202803683370190505b50905060005b828110156143a05760006001600160a01b03166120026001600160a01b031663cf06248c6001848154811061424657fe5b60009182526020909120600491820201546040516001600160e01b031960e085901b168152614281926001600160a01b039092169101617fa5565b60206040518083038186803b15801561429957600080fd5b505afa1580156142ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142d19190617c15565b6001600160a01b0316146143335760018282815181106142ed57fe5b602002602001019060ff16908160ff16815250506001818154811061430e57fe5b90600052602060002090600402016003015460001461432e578360010193505b614398565b67016345785d8a00006001828154811061434957fe5b9060005260206000209060040201600301541061436b57846001019450614398565b6001818154811061437857fe5b906000526020600020906004020160030154600014614398578360010193505b600101614215565b506060846040519080825280602002602001820160405280156143cd578160200160208202803683370190505b5090506060856040519080825280602002602001820160405280156143fc578160200160208202803683370190505b50905060608660405190808252806020026020018201604052801561442b578160200160208202803683370190505b50905060608760405190808252806020026020018201604052801561445a578160200160208202803683370190505b509050600060608860405190808252806020026020018201604052801561448b578160200160208202803683370190505b5090506060896040519080825280602002602001820160405280156144ba578160200160208202803683370190505b50905060009a506000995060006110046001600160a01b031663149d14d96040518163ffffffff1660e01b815260040160206040518083038186803b15801561450257600080fd5b505afa158015614516573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061453a9190617e50565b905067016345785d8a000081111561458657600080516020618d16833981519152604051614567906188c9565b60405180910390a160689e505050505050505050505050505050611c42565b60005b8a81101561491a5789818151811061459d57fe5b602002602001015160ff166001141561469357600181815481106145bd57fe5b90600052602060002090600402016003015460001461468e57600181815481106145e357fe5b600091825260209091206004909102015484516001600160a01b039091169085908e90811061460e57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250506001818154811061463b57fe5b906000526020600020906004020160030154838d8151811061465957fe5b60200260200101818152505060018a8d8151811061467357fe5b602002602001019060ff16908160ff16815250508b6001019b505b614912565b67016345785d8a0000600182815481106146a957fe5b9060005260206000209060040201600301541061482e57600181815481106146cd57fe5b906000526020600020906004020160020160009054906101000a90046001600160a01b0316898e815181106146fe57fe5b60200260200101906001600160a01b031690816001600160a01b03168152505060006402540be4006001838154811061473357fe5b9060005260206000209060040201600301548161474c57fe5b066001838154811061475a57fe5b9060005260206000209060040201600301540390506147828382615bb190919063ffffffff16565b898f8151811061478e57fe5b602002602001018181525050600182815481106147a757fe5b906000526020600020906004020160010160009054906101000a90046001600160a01b0316878f815181106147d857fe5b60200260200101906001600160a01b031690816001600160a01b03168152505081888f8151811061480557fe5b6020908102919091010152614820868263ffffffff615bf316565b95508d6001019d5050614912565b6001818154811061483b57fe5b906000526020600020906004020160030154600014614912576001818154811061486157fe5b906000526020600020906004020160010160009054906101000a90046001600160a01b0316848d8151811061489257fe5b60200260200101906001600160a01b031690816001600160a01b031681525050600181815481106148bf57fe5b906000526020600020906004020160030154838d815181106148dd57fe5b60200260200101818152505060008a8d815181106148f757fe5b602002602001019060ff16908160ff16815250508b6001019b505b600101614589565b5060008415614b90576002546040516303702b2960e51b815261100491636e056520918891614954918e918e918d914201906004016180b3565b6020604051808303818588803b15801561496d57600080fd5b505af19350505050801561499e575060408051601f3d908101601f1916820190925261499b91810190617d7d565b60015b614b15576040516000815260443d10156149ba57506000614a55565b60046000803e60005160e01c6308c379a081146149db576000915050614a55565b60043d036004833e81513d60248201116001600160401b0382111715614a0657600092505050614a55565b80830180516001600160401b03811115614a27576000945050505050614a55565b8060208301013d8601811115614a4557600095505050505050614a55565b601f01601f191660405250925050505b80614a605750614aa2565b60019150857fa7cdeed7d0db45e3219a6e5d60838824c16f1d39991fcfe3f963029c844bf28082604051614a949190618138565b60405180910390a250614b10565b3d808015614acc576040519150601f19603f3d011682016040523d82523d6000602084013e614ad1565b606091505b5060019150857fbfa884552dd8921b6ce90bfe906952ae5b3b29be0cc1a951d4f62697635a3a4582604051614b069190618138565b60405180910390a2505b614b90565b8015614b57577fa217d08e65f80c73121cd9db834d81652d544bfbf452f6d04922b16c90a37b7086604051614b4a9190618c29565b60405180910390a1614b8e565b857fa7cdeed7d0db45e3219a6e5d60838824c16f1d39991fcfe3f963029c844bf280604051614b85906181fa565b60405180910390a25b505b8015614d465760005b8751811015614d44576000888281518110614bb057fe5b60200260200101519050600060018281548110614bc957fe5b60009182526020909120600160049092020181015481546001600160a01b03909116916108fc9185908110614bfa57fe5b9060005260206000209060040201600301549081150290604051600060405180830381858888f1935050505090508015614cb65760018281548110614c3b57fe5b60009182526020909120600160049092020181015481546001600160a01b03909116917f6c61d60f69a7beb3e1c80db7f39f37b208537cbb19da3174511b477812b2fc7d9185908110614c8a57fe5b906000526020600020906004020160030154604051614ca99190618c29565b60405180910390a2614d3a565b60018281548110614cc357fe5b60009182526020909120600160049092020181015481546001600160a01b03909116917f25d0ce7d2f0cec669a8c17efe49d195c13455bb8872b65fa610ac7f53fe4ca7d9185908110614d1257fe5b906000526020600020906004020160030154604051614d319190618c29565b60405180910390a25b5050600101614b99565b505b835115614f3c5760005b8451811015614f3a578a8181518110614d6557fe5b602002602001015160ff1660011415614e04576120026001600160a01b031663092193ab858381518110614d9557fe5b6020026020010151878481518110614da957fe5b60200260200101516040518363ffffffff1660e01b8152600401614dcd9190617fa5565b6000604051808303818588803b158015614de657600080fd5b505af1158015614dfa573d6000803e3d6000fd5b5050505050614f32565b6000858281518110614e1257fe5b60200260200101516001600160a01b03166108fc868481518110614e3257fe5b60200260200101519081150290604051600060405180830381858888f1935050505090508015614ec857858281518110614e6857fe5b60200260200101516001600160a01b03167f6c61d60f69a7beb3e1c80db7f39f37b208537cbb19da3174511b477812b2fc7d868481518110614ea657fe5b6020026020010151604051614ebb9190618c29565b60405180910390a2614f30565b858281518110614ed457fe5b60200260200101516001600160a01b03167f25d0ce7d2f0cec669a8c17efe49d195c13455bb8872b65fa610ac7f53fe4ca7d868481518110614f1257fe5b6020026020010151604051614f279190618c29565b60405180910390a25b505b600101614d50565b505b505050505050505050505050506000471115614fb9577f6ecc855f9440a9282c90913bbc91619fd44f5ec0b462af28d127b116f130aa4d47604051614f819190618c29565b60405180910390a1604051611002904780156108fc02916000818181858888f19350505050158015614fb7573d6000803e3d6000fd5b505b60006003819055600555815115614fd457614fd482826153aa565b6110016001600160a01b031663fc4333cd6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561501157600080fd5b505af1158015615025573d6000803e3d6000fd5b50506040517fedd8d7296956dd970ab4de3f2fc03be2b0ffc615d20cd4c72c6e44f928630ebf925060009150a1506000949350505050565b600154600554600091906000198201118015906150d05760018085038154811061508357fe5b600091825260208220600490910201546040516001600160a01b03909116917fe209c46bebf57cf265d5d9009a00870e256d9150f3ed5281ab9d9eb3cec6e4be91a2600092505050611b92565b6005805460019081019091558054819060001987019081106150ee57fe5b9060005260206000209060040201600201601c6101000a81548160ff02191690831515021790555060018085038154811061512557fe5b600091825260208220600490910201546040516001600160a01b03909116917ff226e7d8f547ff903d9d419cf5f54e0d7d07efa9584135a53a057c5f1f27f49a91a25060009392505050565b606080600080808080615182612fe6565b6001549091505b801561529057600181039250600b83815481106151a257fe5b600091825260209091206001601690920201015460ff166151c257615287565b600183815481106151cf57fe5b60009182526020909120600490910201546001600160a01b031694506151f6858484613a0b565b9350831580615209575060018a51038610155b1561521357615287565b60005b8a5181101561528557856001600160a01b03168b828151811061523557fe5b6020026020010151600001516001600160a01b0316141561527d5760018b828151811061525e57fe5b6020908102919091010151901515608090910152600190960195615285565b600101615216565b505b60001901615189565b50848951036040519080825280602002602001820160405280156152ce57816020015b6152bb61789f565b8152602001906001900390816152b35790505b5096508489510360405190808252806020026020018201604052801561530857816020015b60608152602001906001900390816152f35790505b5095506000915060005b895181101561539c5789818151811061532757fe5b6020026020010151608001516153945789818151811061534357fe5b602002602001015188848151811061535757fe5b602002602001018190525088818151811061536e57fe5b602002602001015187848151811061538257fe5b60200260200101819052508260010192505b600101615312565b5050505050505b9250929050565b600154825160005b828110156154c75760016153c461789f565b600183815481106153d157fe5b600091825260208083206040805160c08101825260049490940290910180546001600160a01b0390811685526001820154811693850193909352600281015492831691840191909152600160a01b82046001600160401b03166060840152600160e01b90910460ff16151560808301526003015460a082015291505b8481101561549b5787818151811061546157fe5b6020026020010151600001516001600160a01b031682600001516001600160a01b03161415615493576000925061549b565b60010161544d565b5081156154bd5780516001600160a01b03166000908152600460205260408120555b50506001016153b2565b508082111561558657805b828110156155845760018054806154e557fe5b60008281526020812060046000199093019283020180546001600160a01b0319908116825560018201805490911690556002810180546001600160e81b0319169055600301559055600b80548061553857fe5b60008281526020812060166000199093019283020181815560018101805460ff191690559061556a60028301826178d4565b615578600383016000617938565b505090556001016154d2565b505b60008183106155955781615597565b825b905060005b81811015615953576156498682815181106155b357fe5b6020026020010151600183815481106155c857fe5b60009182526020918290206040805160c08101825260049390930290910180546001600160a01b0390811684526001820154811694840194909452600281015493841691830191909152600160a01b83046001600160401b03166060830152600160e01b90920460ff161515608082015260039091015460a0820152616dbb565b6157fd57806001016004600088848151811061566157fe5b6020026020010151600001516001600160a01b03166001600160a01b031681526020019081526020016000208190555085818151811061569d57fe5b6020026020010151600182815481106156b257fe5b6000918252602091829020835160049092020180546001600160a01b039283166001600160a01b0319918216178255928401516001820180549184169185169190911790556040840151600282018054606087015160808801511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b1995909716929097169190911792909216939093171692909217905560a090910151600390910155845185908290811061576d57fe5b6020026020010151600b828154811061578257fe5b906000526020600020906016020160020190805190602001906157a69291906177d4565b506000600b82815481106157b657fe5b60009182526020822060169190910201600101805460ff191692151592909217909155600b8054839081106157e757fe5b600091825260209091206016909102015561594b565b61588e85828151811061580c57fe5b6020026020010151600b838154811061582157fe5b600091825260209182902060026016909202018101805460408051601f6000196101006001861615020190931694909404918201859004850284018501905280835291929091908301828280156134215780601f106133f657610100808354040283529160200191613421565b6158d95784818151811061589e57fe5b6020026020010151600b82815481106158b357fe5b906000526020600020906016020160020190805190602001906158d79291906177d4565b505b6000600182815481106158e857fe5b90600052602060002090600402016003018190555085818151811061590957fe5b6020026020010151608001516001828154811061592257fe5b9060005260206000209060040201600201601c6101000a81548160ff0219169083151502179055505b60010161559c565b5082821115615b2b576159646177a5565b835b83811015615b285785818151811061597a57fe5b60200260200101518260400181905250600187828151811061599857fe5b6020908102919091018101518254600181810185556000948552838520835160049093020180546001600160a01b039384166001600160a01b0319918216178255848601518284018054918616918316919091179055604080860151600284018054606089015160808a01511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b1995909a1692909616919091179290921696909617169190911790935560a090930151600390930192909255600b8054928301815590935284516016909102600080516020618d36833981519152810191825585830151600080516020618d768339815191528201805491151560ff1990921691909117905592850151805186949293615ace93600080516020618d56833981519152019201906177d4565b506060820151615ae4906003830190601361784e565b5050508060010160046000898481518110615afb57fe5b602090810291909101810151516001600160a01b0316825281019190915260400160002055600101615966565b50505b615b33616e3c565b615b3b61701e565b6000600981905560015493505b83811015615ba9576000600b8281548110615b5f57fe5b60009182526020822060169190910201600101805460ff191692151592909217909155600b805483908110615b9057fe5b6000918252602090912060169091020155600101615b48565b505050505050565b60006110c483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061720c565b6000828201838110156110c45760405162461bcd60e51b8152600401610db29061832e565b60008060018381548110615c2857fe5b90600052602060002090600402016003015490506000600180805490500390506001615c52612edc565b5111615c8757600060018581548110615c6757fe5b906000526020600020906004020160030181905550600092505050611c42565b846001600160a01b03167f3b6f9ef90462b512a1293ecec018670bf7b7f1876fb727590a8a6d7643130a7083604051615cc09190618c29565b60405180910390a26001600160a01b038516600090815260046020526040812055835b60015460001901811015615ead5760018160010181548110615d0157fe5b906000526020600020906004020160018281548110615d1c57fe5b60009182526020909120825460049092020180546001600160a01b03199081166001600160a01b0393841617825560018085015481840180548416918616919091179055600280860180549185018054909416919095161780835584546001600160401b03600160a01b91829004160267ffffffffffffffff60a01b1990911617808355935460ff600160e01b918290041615150260ff60e01b19909416939093179055600392830154920191909155600b805490918301908110615ddd57fe5b9060005260206000209060160201600b8281548110615df857fe5b600091825260209091208254601690920201908155600180830154818301805460ff909216151560ff1990921691909117905560028084018054615e4f938386019390821615610100026000190190911604617947565b50615e62600382810190840160136179bc565b50905050806001016004600060018481548110615e7b57fe5b600091825260208083206004909202909101546001600160a01b03168352820192909252604001902055600101615ce3565b506001805480615eb957fe5b60008281526020812060046000199093019283020180546001600160a01b0319908116825560018201805490911690556002810180546001600160e81b0319169055600301559055600b805480615f0c57fe5b60008281526020812060166000199093019283020181815560018101805460ff1916905590615f3e60028301826178d4565b615f4c600383016000617938565b505090556000818381615f5b57fe5b0490508015615fbf5760015460005b81811015615fbc578260018281548110615f8057fe5b9060005260206000209060040201600301540160018281548110615fa057fe5b6000918252602090912060036004909202010155600101615f6a565b50505b50600195945050505050565b60015481516040805182815260208084028201019091526060929190839082801561600a57816020015b6060815260200190600190039081615ff55790505b50600b549091508314616021579250611b92915050565b60005b8281101561613057600b60016004600089858151811061604057fe5b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054038154811061607457fe5b600091825260209182902060026016909202018101805460408051601f60001961010060018616150201909316949094049182018590048502840185019052808352919290919083018282801561610c5780601f106160e15761010080835404028352916020019161610c565b820191906000526020600020905b8154815290600101906020018083116160ef57829003601f168201915b505050505082828151811061611d57fe5b6020908102919091010152600101616024565b50949350505050565b60005b82811015616286576000828783880160405160200161615c929190617f97565b6040516020818303038152906040528051906020012060001c8161617c57fe5b0690508085018287011461627d576000898388018151811061619a57fe5b60200260200101519050606089848901815181106161b457fe5b602002602001015190508a838801815181106161cc57fe5b60200260200101518b858a01815181106161e257fe5b60200260200101906001600160a01b031690816001600160a01b031681525050818b8489018151811061621157fe5b60200260200101906001600160a01b031690816001600160a01b031681525050898388018151811061623f57fe5b60200260200101518a858a018151811061625557fe5b6020026020010181905250808a8489018151811061626f57fe5b602002602001018190525050505b5060010161613c565b5050505050505050565b600980546001908101909155600b8054839081106162aa57fe5b906000526020600020906016020160010160006101000a81548160ff02191690831515021790555043600b82815481106162e057fe5b600091825260208220601690910201919091556040516001600160a01b038416917ff62981a567ec3cec866c6fa93c55bcdf841d6292d18b8d522ececa769375d82d91a25050565b60008160405160200161633b9190617f7b565b60405160208183030381529060405280519060200120836040516020016163629190617f7b565b6040516020818303038152906040528051906020012014905092915050565b015190565b8151815160009160019181148083146163a257600092506163e0565b600160208701838101602088015b6002848385100114156163db5780518351146163cf5760009650600093505b602092830192016163b0565b505050505b5090949350505050565b6001600160a01b0381166000908152600460205260408120548061641357506000199050611b92565b60018103905060006001828154811061642857fe5b906000526020600020906004020160030154905060006001838154811061644b57fe5b6000918252602090912060036004909202010155600154604051600019909101906001600160a01b038616907f8cd4e147d8af98a9e3b6724021b8bf6aed2e5dac71c38f2dce8161b82585b25d906164a4908590618c29565b60405180910390a2806164bc57829350505050611b92565b60008183816164c757fe5b04905080156165835760005b848110156165255781600182815481106164e957fe5b906000526020600020906004020160030154016001828154811061650957fe5b60009182526020909120600360049092020101556001016164d3565b50600180549085015b8181101561658057826001828154811061654457fe5b906000526020600020906004020160030154016001828154811061656457fe5b600091825260209091206003600490920201015560010161652e565b50505b5091949350505050565b60008261659c57506000611c42565b828202828482816165a957fe5b04146110c45760405162461bcd60e51b8152600401610db29061879b565b60006110c483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250617238565b6166116179e6565b506040805180820190915281518152602082810190820152919050565b616636617918565b61663f8261726f565b61664857600080fd5b600061665783602001516172a9565b60208085015160408051808201909152868152920190820152915050919050565b60006166826179e6565b505080518051602091820151919092015191011190565b6166a16179e6565b6166aa82616678565b6166b357600080fd5b602082015160006166c38261730c565b80830160209586015260408051808201909152908152938401919091525090919050565b8051600090158015906166fc57508151602110155b61670557600080fd5b600061671483602001516172a9565b9050808360000151101561673a5760405162461bcd60e51b8152600401610db290618941565b82516020808501518301805192849003929183101561613057506020919091036101000a90049392505050565b60606167728261726f565b61677b57600080fd5b6000616786836173ed565b90506060816040519080825280602002602001820160405280156167c457816020015b6167b16179e6565b8152602001906001900390816167a95790505b50905060006167d685602001516172a9565b60208601510190506000805b8481101561682d576167f38361730c565b915060405180604001604052808381526020018481525084828151811061681657fe5b6020908102919091010152918101916001016167e2565b509195945050505050565b61684061789f565b6060600061684c61789f565b6060616856617918565b61685f8761662e565b90506000805b61686e83616678565b1561694357806168995761688961688484616699565b617449565b6001600160a01b0316855261693b565b80600114156168c1576168ae61688484616699565b6001600160a01b0316602086015261693b565b80600214156168e9576168d661688484616699565b6001600160a01b0316604086015261693b565b8060031415616915576168fe613d2c84616699565b6001600160401b031660608601526001915061693b565b80600414156169365761692f61692a84616699565b617463565b935061693b565b616943565b600101616865565b50929791965091945092505050565b6060611c42616960836174d3565b6175b9565b60608151600014156169865750604080516000815260208101909152611b92565b60608260008151811061699557fe5b602002602001015190506000600190505b83518110156169d6576169cc828583815181106169bf57fe5b602002602001015161760b565b91506001016169a6565b506110c46169e9825160c060ff16617688565b8261760b565b60608060006120026001600160a01b031663c473318f6040518163ffffffff1660e01b815260040160206040518083038186803b158015616a2f57600080fd5b505afa158015616a43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190616a679190617e50565b90508085518851011015616a7c575083518651015b606081604051908082528060200260200182016040528015616ab857816020015b616aa561789f565b815260200190600190039081616a9d5790505b509050606082604051908082528060200260200182016040528015616af157816020015b6060815260200190600190039081616adc5790505b50905060008060005b8b51831080616b095750895182105b8015616b1457508581105b15616da9578b51831415616b8457898281518110616b2e57fe5b6020026020010151858281518110616b4257fe5b6020026020010181905250888281518110616b5957fe5b6020026020010151848281518110616b6d57fe5b602090810291909101015260019182019101616afa565b8951821415616bef578b8381518110616b9957fe5b6020026020010151858281518110616bad57fe5b60200260200101819052508a8381518110616bc457fe5b6020026020010151848281518110616bd857fe5b602090810291909101015260019283019201616afa565b898281518110616bfb57fe5b6020026020010151606001516001600160401b03168c8481518110616c1c57fe5b6020026020010151606001516001600160401b03161115616c98578b8381518110616c4357fe5b6020026020010151858281518110616c5757fe5b60200260200101819052508a8381518110616c6e57fe5b6020026020010151848281518110616c8257fe5b6020026020010181905250826001019250616da1565b898281518110616ca457fe5b6020026020010151606001516001600160401b03168c8481518110616cc557fe5b6020026020010151606001516001600160401b03161015616d4157898281518110616cec57fe5b6020026020010151858281518110616d0057fe5b6020026020010181905250888281518110616d1757fe5b6020026020010151848281518110616d2b57fe5b6020026020010181905250816001019150616da1565b898281518110616d4d57fe5b6020026020010151600001516001600160a01b03168c8481518110616d6e57fe5b6020026020010151600001516001600160a01b03161015616d95578b8381518110616c4357fe5b898281518110616b2e57fe5b600101616afa565b50929a91995090975050505050505050565b805182516000916001600160a01b039182169116148015616df5575081602001516001600160a01b031683602001516001600160a01b0316145b8015616e1a575081604001516001600160a01b031683604001516001600160a01b0316145b80156110c45750506060908101519101516001600160401b0390811691161490565b60125460135480821115616e8757805b82811015616e85576012805480616e5f57fe5b600190038181906000526020600020016000616e7b91906178d4565b9055600101616e4c565b505b6000818310616e965781616e98565b825b905060005b81811015616fb057616f5560128281548110616eb557fe5b600091825260209182902001805460408051601f6002600019610100600187161502019094169390930492830185900485028101850190915281815292830182828015616f435780601f10616f1857610100808354040283529160200191616f43565b820191906000526020600020905b815481529060010190602001808311616f2657829003601f168201915b50505050506013838154811061339357fe5b616fa85760138181548110616f6657fe5b9060005260206000200160128281548110616f7d57fe5b906000526020600020019080546001816001161561010002031660029004616fa6929190617947565b505b600101616e9d565b5082821115610dd257825b8281101561392b57601260138281548110616fd257fe5b6000918252602080832084546001818101875595855291909320929091018054617015949390920192909160026101009282161592909202600019011604617947565b50600101616fbb565b601354600b548082111561706957805b8281101561706757601380548061704157fe5b60019003818190600052602060002001600061705d91906178d4565b905560010161702e565b505b6000818310617078578161707a565b825b905060005b81811015617199576171376013828154811061709757fe5b600091825260209182902001805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156171255780601f106170fa57610100808354040283529160200191617125565b820191906000526020600020905b81548152906001019060200180831161710857829003601f168201915b5050505050600b838154811061582157fe5b61719157600b818154811061714857fe5b90600052602060002090601602016002016013828154811061716657fe5b90600052602060002001908054600181600116156101000203166002900461718f929190617947565b505b60010161707f565b5082821115610dd257825b8281101561392b576013600b82815481106171bb57fe5b60009182526020808320845460018082018755958552919093206016929092029092016002908101805461720395939094019390926000199082161561010002011604617947565b506001016171a4565b600081848411156172305760405162461bcd60e51b8152600401610db29190618138565b505050900390565b600081836172595760405162461bcd60e51b8152600401610db29190618138565b50600083858161726557fe5b0495945050505050565b805160009061728057506000611b92565b6020820151805160001a9060c082101561729f57600092505050611b92565b5060019392505050565b8051600090811a60808110156172c3576000915050611b92565b60b88110806172de575060c081108015906172de575060f881105b156172ed576001915050611b92565b60c08110156173015760b519019050611b92565b60f519019050611b92565b80516000908190811a608081101561732757600191506173e6565b60b881101561733c57607e19810191506173e6565b60c081101561738d57600060b78203600186019550806020036101000a8651049150600181018201935050808310156173875760405162461bcd60e51b8152600401610db2906186e8565b506173e6565b60f88110156173a25760be19810191506173e6565b600060f78203600186019550806020036101000a8651049150600181018201935050808310156173e45760405162461bcd60e51b8152600401610db2906186e8565b505b5092915050565b80516000906173fe57506000611b92565b6000809050600061741284602001516172a9565b602085015185519181019250015b80821015617440576174318261730c565b82019150826001019250617420565b50909392505050565b805160009060151461745a57600080fd5b611c42826166e7565b805160609061747157600080fd5b600061748083602001516172a9565b83516040805191839003808352601f19601f82011683016020019091529192506060908280156174b7576020820181803683370190505b509050600081602001905061613084876020015101828561775a565b604080516020808252818301909252606091829190602082018180368337505050602081018490529050600067ffffffffffffffff1984166175175750601861753b565b6fffffffffffffffffffffffffffffffff1984166175375750601061753b565b5060005b60208110156175715781818151811061755057fe5b01602001516001600160f81b0319161561756957617571565b60010161753b565b60008160200390506060816040519080825280601f01601f1916602001820160405280156175a6576020820181803683370190505b5080830196909652508452509192915050565b6060815160011480156175eb5750607f60f81b826000815181106175d957fe5b01602001516001600160f81b03191611155b156175f7575080611b92565b611c426176098351608060ff16617688565b835b6060806040519050835180825260208201818101602087015b8183101561763c578051835260209283019201617624565b50855184518101855292509050808201602086015b81831015617669578051835260209283019201617651565b508651929092011591909101601f01601f191660405250905092915050565b60606801000000000000000083106176b25760405162461bcd60e51b8152600401610db2906184e0565b6040805160018082528183019092526060916020820181803683370190505090506037841161770c5782840160f81b816000815181106176ee57fe5b60200101906001600160f81b031916908160001a9053509050611c42565b6060617717856174d3565b90508381510160370160f81b8260008151811061773057fe5b60200101906001600160f81b031916908160001a905350617751828261760b565b95945050505050565b8061776457610dd2565b5b60208110617784578251825260209283019290910190601f1901617765565b915181516020939093036101000a6000190180199091169216919091179052565b604051806080016040528060008152602001600015158152602001606081526020016177cf617a00565b905290565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061781557805160ff1916838001178555617842565b82800160010185558215617842579182015b82811115617842578251825591602001919060010190617827565b50613021929150617a1f565b82601381019282156178425791602002820182811115617842578251825591602001919060010190617827565b6040518060600160405280600060ff16815260200160608152602001606081525090565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a081019190915290565b50805460018160011615610100020316600290046000825580601f106178fa5750611d9e565b601f016020900490600052602060002090810190611d9e9190617a1f565b604051806040016040528061792b6179e6565b8152602001600081525090565b50611d9e906013810190617a1f565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106179805780548555617842565b8280016001018555821561784257600052602060002091601f016020900482015b828111156178425782548255916001019190600101906179a1565b826013810192821561784257918201828111156178425782548255916001019190600101906179a1565b604051806040016040528060008152602001600081525090565b6040518061026001604052806013906020820280368337509192915050565b612fc591905b808211156130215760008155600101617a25565b8035611c4281618d00565b60008083601f840112617a55578182fd5b5081356001600160401b03811115617a6b578182fd5b60208301915083602080830285010111156153a357600080fd5b6000601f8381840112617a96578182fd5b8235617aa9617aa482618cb5565b618c8f565b818152925060208084019085810160005b84811015617b3b578135880189603f820112617ad557600080fd5b838101356001600160401b03811115617aed57600080fd5b617afe818901601f19168601618c8f565b81815260408c81848601011115617b1457600080fd5b82818501888401375060009181018601919091528552509282019290820190600101617aba565b50505050505092915050565b600082601f830112617b57578081fd5b8135617b65617aa482618cb5565b818152915060208083019084810181840286018201871015617b8657600080fd5b6000805b85811015617b3b5782356001600160401b0381168114617ba8578283fd5b85529383019391830191600101617b8a565b60008083601f840112617bcb578182fd5b5081356001600160401b03811115617be1578182fd5b6020830191508360208285010111156153a357600080fd5b600060208284031215617c0a578081fd5b81356110c481618d00565b600060208284031215617c26578081fd5b81516110c481618d00565b60008060008060408587031215617c46578283fd5b84356001600160401b0380821115617c5c578485fd5b617c6888838901617a44565b90965094506020870135915080821115617c80578384fd5b50617c8d87828801617a44565b95989497509550505050565b600080600060608486031215617cad578283fd5b83356001600160401b0380821115617cc3578485fd5b81860187601f820112617cd4578586fd5b80359250617ce4617aa484618cb5565b80848252602080830192508084018b828389028701011115617d0457898afd5b8994505b86851015617d2e57617d1a8c82617a39565b845260019490940193928101928101617d08565b509097508801359350505080821115617d45578384fd5b617d5187838801617b47565b93506040860135915080821115617d66578283fd5b50617d7386828701617a85565b9150509250925092565b600060208284031215617d8e578081fd5b815180151581146110c4578182fd5b60008060208385031215617daf578182fd5b82356001600160401b03811115617dc4578283fd5b617dd085828601617bba565b90969095509350505050565b60008060008060408587031215617df1578384fd5b84356001600160401b0380821115617e07578586fd5b617e1388838901617bba565b90965094506020870135915080821115617e2b578384fd5b50617c8d87828801617bba565b600060208284031215617e49578081fd5b5035919050565b600060208284031215617e61578081fd5b5051919050565b60008060408385031215617e7a578182fd5b505080516020909101519092909150565b600080600060408486031215617e9f578081fd5b833560ff81168114617eaf578182fd5b925060208401356001600160401b03811115617ec9578182fd5b617ed586828701617bba565b9497909650939450505050565b6000815180845260208085019450808401835b83811015617f1a5781516001600160a01b031687529582019590820190600101617ef5565b509495945050505050565b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b60008151808452617f67816020860160208601618cd4565b601f01601f19169290920160200192915050565b60008251617f8d818460208701618cd4565b9190910192915050565b918252602082015260400190565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b03968716815294861660208601529290941660408401526001600160401b03166060830152911515608082015260a081019190915260c00190565b6001600160a01b0392909216825260ff16602082015260400190565b6000602082526110c46020830184617ee2565b6000604082526180566040830185617ee2565b602083820381850152818551808452828401915082838202850101838801865b838110156180a457601f19878403018552618092838351617f4f565b94860194925090850190600101618076565b50909998505050505050505050565b6000608082526180c66080830187617ee2565b828103602084810191909152865180835287820192820190845b818110156180fc578451835293830193918301916001016180e0565b505084810360408601526181108188617ee2565b93505050506001600160401b038316606083015295945050505050565b901515815260200190565b6000602082526110c46020830184617f4f565b60006040825261815f604083018688617f25565b8281036020840152618172818587617f25565b979650505050505050565b6020808252601c908201527f6c656e677468206f66206275726e526174696f206d69736d6174636800000000604082015260600190565b60208082526026908201527f6c656e677468206f66206d61784e756d4f664d61696e7461696e696e67206d696040820152650e6dac2e8c6d60d31b606082015260800190565b6020808252601b908201527f6261746368207472616e736665722072657475726e2066616c73650000000000604082015260600190565b6020808252602c908201527f6c656e677468206f66206d61784e756d4f66576f726b696e6743616e6469646160408201526b0e8cae640dad2e6dac2e8c6d60a31b606082015260800190565b60208082526025908201527f6c656e677468206f66206d61696e7461696e536c6173685363616c65206d69736040820152640dac2e8c6d60db1b606082015260800190565b6020808252818101527f6c656e677468206f66206e756d4f66436162696e657473206d69736d61746368604082015260600190565b60208082526019908201527f74686520636f6e7472616374206e6f7420696e69742079657400000000000000604082015260600190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b60208082526028908201527f746865206e756d4f66436162696e657473206d75737420626520677265617465604082015267072207468616e20360c41b606082015260800190565b60208082526039908201527f746865206e756d4f66436162696e657473206d757374206265206c657373207460408201527f68616e204d41585f4e554d5f4f465f56414c494441544f525300000000000000606082015260800190565b60208082526029908201527f746865206e756d626572206f662076616c696461746f727320657863656564206040820152681d1a19481b1a5b5a5d60ba1b606082015260800190565b60208082526022908201527f63616e206e6f7420646f207468697320747769636520696e206f6e6520626c6f604082015261636b60f01b606082015260800190565b6020808252602b908201527f746865206275726e526174696f206d757374206265206e6f206772656174657260408201526a0207468616e2031303030360ac1b606082015260800190565b6020808252600e908201526d696e70757420746f6f206c6f6e6760901b604082015260600190565b60208082526037908201527f746865206d61784e756d4f664d61696e7461696e696e67206d7573742062652060408201527f6c657373207468616e206e756d4f66436162696e657473000000000000000000606082015260800190565b6020808252602b908201527f6475706c696361746520636f6e73656e7375732061646472657373206f66207660408201526a185b1a59185d1bdc94d95d60aa1b606082015260800190565b60208082526033908201527f7468652073797374656d526577617264526174696f206d757374206265206e6f60408201527202067726561746572207468616e20313030303606c1b606082015260800190565b60208082526027908201527f7468652065787069726554696d655365636f6e64476170206973206f7574206f604082015266662072616e676560c81b606082015260800190565b6020808252601590820152746465706f7369742076616c7565206973207a65726f60581b604082015260600190565b60208082526049908201527f746865206d61784e756d4f66576f726b696e6743616e64696461746573206d7560408201527f7374206265206e6f742067726561746572207468616e206d61784e756d4f6643606082015268616e6469646174657360b81b608082015260a00190565b6020808252601190820152706164646974696f6e206f766572666c6f7760781b604082015260600190565b60208082526023908201527f63616e206e6f7420656e7465722054656d706f72617279204d61696e74656e616040820152626e636560e81b606082015260800190565b60208082526025908201527f6c656e677468206f66206a61696c2076616c696461746f7273206d757374206260408201526465206f6e6560d81b606082015260800190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252601490820152736761737072696365206973206e6f74207a65726f60601b604082015260600190565b6020808252602e908201527f746865206d6573736167652073656e646572206d75737420626520676f76657260408201526d1b985b98d94818dbdb9d1c9858dd60921b606082015260800190565b60208082526025908201527f6c656e677468206f66206d61784e756d4f6643616e64696461746573206d69736040820152640dac2e8c6d60db1b606082015260800190565b6020808252601290820152716e6f7420696e206d61696e74656e616e636560701b604082015260600190565b60208082526021908201527f666565206973206c6172676572207468616e2044555354595f494e434f4d494e6040820152604760f81b606082015260800190565b60208082526019908201527f74686520636f6e747261637420616c726561647920696e697400000000000000604082015260600190565b6020808252601a908201527f6c656e677468206973206c657373207468616e206f6666736574000000000000604082015260600190565b60208082526026908201527f6c656e677468206f662065787069726554696d655365636f6e64476170206d696040820152650e6dac2e8c6d60d31b606082015260800190565b60208082526017908201527f6f6e6c792063757272656e742076616c696461746f7273000000000000000000604082015260600190565b60208082526021908201527f6661696c656420746f20706172736520696e69742076616c696461746f7253656040820152601d60fa1b606082015260800190565b6020808252602f908201527f746865206d6573736167652073656e646572206d7573742062652063726f737360408201526e0818da185a5b8818dbdb9d1c9858dd608a1b606082015260800190565b6020808252602d908201527f746865206d6573736167652073656e646572206d75737420626520746865206260408201526c3637b1b590383937b23ab1b2b960991b606082015260800190565b60208082526024908201527f6c656e677468206f662073797374656d526577617264526174696f206d69736d6040820152630c2e8c6d60e31b606082015260800190565b6020808252603e908201527f746865206d61696e7461696e536c6173685363616c65206d757374206265206760408201527f726561746572207468616e203020616e64206c657373207468616e2031300000606082015260800190565b6020808252600d908201526c756e6b6e6f776e20706172616d60981b604082015260600190565b60208082526029908201527f746865206d6573736167652073656e646572206d75737420626520736c6173686040820152680818dbdb9d1c9858dd60ba1b606082015260800190565b6020808252601f908201527f746865206d73672073656e646572206d757374206265207374616b6548756200604082015260600190565b61ffff91909116815260200190565b90815260200190565b60008482528315156020830152606060408301526177516060830184617f4f565b63ffffffff91909116815260200190565b60ff91909116815260200190565b600060ff8516825260406020830152617751604083018486617f25565b6040518181016001600160401b0381118282101715618cad57600080fd5b604052919050565b60006001600160401b03821115618cca578081fd5b5060209081020190565b60005b83811015618cef578181015183820152602001618cd7565b8381111561392b5750506000910152565b6001600160a01b0381168114611d9e57600080fdfe70e72399380dcfb0338abc03dc8d47f9f470ada8e769c9a78d644ea97385ecb20175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db90175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01dbb0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01dbaf87680f873f871949fb29aac15b9a4b7f17c3385939b007540f4d791949fb29aac15b9a4b7f17c3385939b007540f4d791949fb29aac15b9a4b7f17c3385939b007540f4d79164b085e6972fc98cd3c81d64d40e325acfed44365b97a7567a27939c14dbc7512ddcf54cb1284eb637cfa308ae4e00cb5588a164736f6c6343000604000a", + Code: "6080604052600436106104da5760003560e01c80638a7beb0111610281578063c6d339451161015a578063e40716a1116100cc578063f92eb86b11610085578063f92eb86b14610cb8578063f9a2bbc714610ccd578063fc3e590814610ce2578063fccc281314610cf7578063fd4ad81f14610d0c578063fd6a687914610d3b576104e1565b8063e40716a114610c1b578063e589b61e14610c30578063ea321e4914610c50578063eb57e20214610c70578063eda5868c14610c90578063f340fa0114610ca5576104e1565b8063d86222d51161011e578063d86222d514610b9d578063daacdb6614610bb2578063dc927faf14610bc7578063df8079e914610bdc578063e086c7b114610bf1578063e1c7392a14610c06576104e1565b8063c6d3394514610b3e578063c81b166214610b53578063c8509d811461090d578063ce910b0c14610b68578063d68fb56a14610b88576104e1565b8063aa82dce1116101f3578063ad3c9da6116101b7578063ad3c9da614610abd578063aef198a914610add578063b7ab4db514610af2578063b8cf4ef114610b14578063bf9f4995146106bd578063c466689d14610b29576104e1565b8063aa82dce114610a49578063aad5606314610a5e578063aaf5eb6814610a73578063ab51bb9614610a88578063ac43175114610a9d576104e1565b80639dc09262116102455780639dc09262146109cb5780639fe0f816146109e0578063a0dc2758146109f5578063a1a11bf514610a0a578063a5422d5c14610a1f578063a78abc1614610a34576104e1565b80638a7beb01146109575780638b5ad0c91461096c5780638d19a410146109815780639369d7de146109a157806396713da9146109b6576104e1565b806351e80672116103b357806370fd5bad116103255780637a84ca2a116102e95780637a84ca2a146108e357806381650b62146108f8578063831d65d11461090d578063853230aa146108b9578063862498821461092d57806388b32f1114610942576104e1565b806370fd5bad1461087a578063718a8aa81461088f57806375d47a0a146108a457806378dfed4a146108b95780637942fd05146108ce576104e1565b80635de1e22c116103775780635de1e22c146107e9578063603d86d3146106a857806360eba4fe146107fe57806362b72cf51461081e5780636969a25c146108335780636e47b48214610865576104e1565b806351e806721461076a57806355614fcc1461077f578063565c56b31461079f5780635667515a146107bf5780635d77156c146107d4576104e1565b80633365af3a1161044c57806343756e5c1161041057806343756e5c146106df57806345cf9daf146106f4578063493279b1146107095780634bf6c8821461072b5780634df6e0c3146107405780635192c82c14610755576104e1565b80633365af3a1461064557806335409f7f146106655780633b071dcc146106855780633de0f0d8146106a85780633dffc387146106bd576104e1565b8063152ad3b81161049e578063152ad3b8146105995780631e4c1524146105bb5780631ff18069146105db578063219f22d5146105f0578063300c356714610605578063321d398a14610625576104e1565b806304c4fec6146104e657806307a56847146104fd5780630bee7a67146105285780630e2374a51461054a5780631182b8751461056c576104e1565b366104e157005b600080fd5b3480156104f257600080fd5b506104fb610d50565b005b34801561050957600080fd5b50610512610dc2565b60405161051f9190618c1b565b60405180910390f35b34801561053457600080fd5b5061053d610dc8565b60405161051f9190618c45565b34801561055657600080fd5b5061055f610dcd565b60405161051f9190617f97565b34801561057857600080fd5b5061058c610587366004617e7d565b610dd3565b60405161051f919061812a565b3480156105a557600080fd5b506105ae6110b6565b60405161051f919061811f565b3480156105c757600080fd5b506104fb6105d6366004617c8b565b6110bf565b3480156105e757600080fd5b5061051261175f565b3480156105fc57600080fd5b5061053d611765565b34801561061157600080fd5b506104fb610620366004617c23565b61176a565b34801561063157600080fd5b506105ae610640366004617e2a565b611ab3565b34801561065157600080fd5b506105ae610660366004617e2a565b611b82565b34801561067157600080fd5b506104fb610680366004617beb565b611c33565b34801561069157600080fd5b5061069a611d8c565b60405161051f929190618035565b3480156106b457600080fd5b50610512612068565b3480156106c957600080fd5b506106d261206e565b60405161051f9190618c56565b3480156106eb57600080fd5b5061055f612073565b34801561070057600080fd5b50610512612079565b34801561071557600080fd5b5061071e61207f565b60405161051f9190618c0c565b34801561073757600080fd5b506106d2612085565b34801561074c57600080fd5b5061069a61208a565b34801561076157600080fd5b50610512612208565b34801561077657600080fd5b5061055f61220e565b34801561078b57600080fd5b506105ae61079a366004617beb565b612214565b3480156107ab57600080fd5b506105126107ba366004617beb565b612249565b3480156107cb57600080fd5b506106d261229a565b3480156107e057600080fd5b5061053d61229f565b3480156107f557600080fd5b506105126122a4565b34801561080a57600080fd5b5061058c610819366004617e2a565b6122aa565b34801561082a57600080fd5b50610512612350565b34801561083f57600080fd5b5061085361084e366004617e2a565b612356565b60405161051f96959493929190617fc4565b34801561087157600080fd5b5061055f6123ba565b34801561088657600080fd5b506106d26123c0565b34801561089b57600080fd5b506106d26123c5565b3480156108b057600080fd5b5061055f6123ca565b3480156108c557600080fd5b506105126123d0565b3480156108da57600080fd5b506106d26123d6565b3480156108ef57600080fd5b506105126123db565b34801561090457600080fd5b5061053d6123e1565b34801561091957600080fd5b506104fb610928366004617e7d565b6123e6565b34801561093957600080fd5b50610512612447565b34801561094e57600080fd5b5061051261244d565b34801561096357600080fd5b506105ae612453565b34801561097857600080fd5b5061051261245c565b34801561098d57600080fd5b5061051261099c366004617beb565b612462565b3480156109ad57600080fd5b506104fb6124a2565b3480156109c257600080fd5b506106d26125b6565b3480156109d757600080fd5b5061055f6125bb565b3480156109ec57600080fd5b506105126125c1565b348015610a0157600080fd5b506105126125c6565b348015610a1657600080fd5b5061055f6125cb565b348015610a2b57600080fd5b5061058c6125d1565b348015610a4057600080fd5b506105ae6125f0565b348015610a5557600080fd5b5061055f6125f9565b348015610a6a57600080fd5b5061055f6125ff565b348015610a7f57600080fd5b50610512612605565b348015610a9457600080fd5b5061053d61229a565b348015610aa957600080fd5b506104fb610ab8366004617dce565b61260e565b348015610ac957600080fd5b50610512610ad8366004617beb565b612eac565b348015610ae957600080fd5b50610512612ebe565b348015610afe57600080fd5b50610b07612ecb565b60405161051f9190618022565b348015610b2057600080fd5b50610512612fb7565b348015610b3557600080fd5b50610512612fbc565b348015610b4a57600080fd5b506105126123c0565b348015610b5f57600080fd5b5061055f612fc2565b348015610b7457600080fd5b5061058c610b83366004617e2a565b612fc8565b348015610b9457600080fd5b50610512612fd5565b348015610ba957600080fd5b50610512613014565b348015610bbe57600080fd5b50610512613020565b348015610bd357600080fd5b5061055f613026565b348015610be857600080fd5b5061055f61302c565b348015610bfd57600080fd5b50610512610dc8565b348015610c1257600080fd5b506104fb613032565b348015610c2757600080fd5b506105126131e1565b348015610c3c57600080fd5b506104fb610c4b366004617beb565b6131e7565b348015610c5c57600080fd5b506105ae610c6b366004617d8f565b61332c565b348015610c7c57600080fd5b506104fb610c8b366004617beb565b6134b2565b348015610c9c57600080fd5b5061053d6135b6565b6104fb610cb3366004617beb565b6135bb565b348015610cc457600080fd5b50610512613923565b348015610cd957600080fd5b5061055f613929565b348015610cee57600080fd5b506106d26125c1565b348015610d0357600080fd5b5061055f61392f565b348015610d1857600080fd5b50610d2c610d27366004617e2a565b613935565b60405161051f93929190618c24565b348015610d4757600080fd5b5061055f6139f7565b6000610d5b33612462565b9050600b8181548110610d6a57fe5b600091825260209091206001601690920201015460ff16610da65760405162461bcd60e51b8152600401610d9d9061888f565b60405180910390fd5b6000610db0612fd5565b9050610dbd3383836139fd565b505050565b60095481565b606481565b61200181565b60005460609060ff16610df85760405162461bcd60e51b8152600401610d9d906182e9565b600b54610eb657610e07617797565b60015460005b81811015610eb257600b80546001810182556000919091528351600080516020618ed38339815191526016909202918201908155602080860151600080516020618f138339815191528401805460ff1916911515919091179055604086015180518794610e8e93600080516020618ef38339815191529091019201906177c6565b506060820151610ea49060038301906013617840565b505050806001019050610e0d565b5050505b610ebe61786d565b6000610eff85858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250613cce92505050565b9150915080610f1b57610f126064613e8a565b925050506110af565b815160009060ff16610f4057610f3983602001518460400151613eeb565b905061107b565b825160ff166001141561107757826020015151600114610f8557600080516020618eb3833981519152604051610f7590618748565b60405180910390a1506067611072565b6000600460008560200151600081518110610f9c57fe5b6020026020010151600001516001600160a01b03166001600160a01b0316815260200190815260200160002054905080600014806110045750600180820381548110610fe457fe5b9060005260206000209060040201600201601c9054906101000a900460ff165b1561106457836020015160008151811061101a57fe5b6020026020010151600001516001600160a01b03167fe209c46bebf57cf265d5d9009a00870e256d9150f3ed5281ab9d9eb3cec6e4be60405160405180910390a260009150611070565b61106d8161504f565b91505b505b61107b565b5060655b63ffffffff81166110a057505060408051600081526020810190915291506110af9050565b6110a981613e8a565b93505050505b9392505050565b60075460ff1681565b3341146110de5760405162461bcd60e51b8152600401610d9d90618a77565b3a156110fc5760405162461bcd60e51b8152600401610d9d906187ce565b825160408051828152602080840282010190915260609082801561113a57816020015b611127617891565b81526020019060019003908161111f5790505b50905060005b828110156111e4576040518060c0016040528087838151811061115f57fe5b60200260200101516001600160a01b0316815260200160006001600160a01b0316815260200160006001600160a01b031681526020018683815181106111a157fe5b60200260200101516001600160401b0316815260200160001515815260200160008152508282815181106111d157fe5b6020908102919091010152600101611140565b5060405163d31f968d60e01b81526120009063d31f968d9061120f9061100090600890600401618006565b60206040518083038186803b15801561122757600080fd5b505afa15801561123b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061125f9190617d6f565b156115585780518061127357505050610dbd565b6015548181111561130e57815b8181101561130c57601580548061129357fe5b60008281526020812060046000199093019283020180546001600160a01b0319908116825560018201805490911690556002810180546001600160e81b031916905560030155905560168054806112e657fe5b60019003818190600052602060002001600061130291906178c6565b9055600101611280565b505b60005b8281101561154e5781811061143657601584828151811061132e57fe5b602090810291909101810151825460018181018555600094855293839020825160049092020180546001600160a01b039283166001600160a01b0319918216178255938301519481018054958316958516959095179094556040820151600285018054606085015160808601511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b199590961692909716919091179290921692909217169290921790915560a0015160039091015585516016908790839081106113fe57fe5b6020908102919091018101518254600181018455600093845292829020815161143094919091019291909101906177c6565b50611546565b83818151811061144257fe5b60200260200101516015828154811061145757fe5b6000918252602091829020835160049092020180546001600160a01b039283166001600160a01b0319918216178255928401516001820180549184169185169190911790556040840151600282018054606087015160808801511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b1995909716929097169190911792909216939093171692909217905560a090910151600390910155855186908290811061151257fe5b60200260200101516016828154811061152757fe5b9060005260206000200190805190602001906115449291906177c6565b505b600101611311565b5050505050610dbd565b6060806115658386615163565b9150915060005b60015481101561164f576001818154811061158357fe5b906000526020600020906004020160030154600014611647576120026001600160a01b031663092193ab600183815481106115ba57fe5b906000526020600020906004020160030154600184815481106115d957fe5b60009182526020909120600491820201546040516001600160e01b031960e086901b168152611614926001600160a01b039092169101617f97565b6000604051808303818588803b15801561162d57600080fd5b505af1158015611641573d6000803e3d6000fd5b50505050505b60010161156c565b5047156116bd577f6ecc855f9440a9282c90913bbc91619fd44f5ec0b462af28d127b116f130aa4d476040516116859190618c1b565b60405180910390a1604051611002904780156108fc02916000818181858888f193505050501580156116bb573d6000803e3d6000fd5b505b600060038190556005558151156116d8576116d8828261539c565b6110016001600160a01b031663fc4333cd6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561171557600080fd5b505af1158015611729573d6000803e3d6000fd5b50506040517fedd8d7296956dd970ab4de3f2fc03be2b0ffc615d20cd4c72c6e44f928630ebf925060009150a150505050505050565b60035481565b606881565b3341146117895760405162461bcd60e51b8152600401610d9d90618a77565b60105443116117aa5760405162461bcd60e51b8152600401610d9d90618445565b3a156117c85760405162461bcd60e51b8152600401610d9d906187ce565b60005460ff166117ea5760405162461bcd60e51b8152600401610d9d906182e9565b60006110023168056bc75e2d631000008111156118215761181a8168056bc75e2d6310000063ffffffff615ba316565b9150611828565b5050611aa9565b6040516309a99b4f60e41b815261100290639a99b4f09061184f9030908690600401617fab565b602060405180830381600087803b15801561186957600080fd5b505af115801561187d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a19190617e42565b9150816118af575050611aa9565b6000805b848110156118dd578585828181106118c757fe5b90506020020135820191508060010190506118b3565b50806118eb57505050611aa9565b6000806000805b89811015611aa1578489898381811061190757fe5b9050602002013588028161191757fe5b0493508a8a8281811061192657fe5b905060200201602081019061193b9190617beb565b6001600160a01b03811660009081526004602052604090205490935091508115611a5757600060018084038154811061197057fe5b9060005260206000209060040201905080600201601c9054906101000a900460ff16156119dd57836001600160a01b03167fb9c75cbbfde137c4281689580799ef5f52144e78858f776a5979b2b212137d85866040516119d09190618c1b565b60405180910390a2611a51565b6003546119f0908663ffffffff615be516565b6003908155810154611a08908663ffffffff615be516565b60038201556040516001600160a01b038516907fcb0aad6cf9cd03bdf6137e359f541c42f38b39f007cae8e89e88aa7d8c6617b290611a48908890618c1b565b60405180910390a25b50611a99565b826001600160a01b03167fb9c75cbbfde137c4281689580799ef5f52144e78858f776a5979b2b212137d8585604051611a909190618c1b565b60405180910390a25b6001016118f2565b505050505050505b5050436010555050565b6001546000908210611ac757506000611b7d565b60006001600160a01b031660018381548110611adf57fe5b60009182526020909120600490910201546001600160a01b03161480611b0f57506008541580611b0f5750600a54155b80611b1e575060085460095410155b80611b2f5750611b2d82611b82565b155b80611b5857506000600b8381548110611b4457fe5b906000526020600020906016020160000154115b80611b6c57506001611b68612ecb565b5111155b15611b7957506000611b7d565b5060015b919050565b6001546000908210611b9657506000611b7d565b600b548210611bd35760018281548110611bac57fe5b9060005260206000209060040201600201601c9054906101000a900460ff16159050611b7d565b60018281548110611be057fe5b9060005260206000209060040201600201601c9054906101000a900460ff16158015611c2d5750600b8281548110611c1457fe5b600091825260209091206001601690920201015460ff16155b92915050565b3361100114611c545760405162461bcd60e51b8152600401610d9d90618b8c565b600b54611d1257611c63617797565b60015460005b81811015611d0e57600b80546001810182556000919091528351600080516020618ed38339815191526016909202918201908155602080860151600080516020618f138339815191528401805460ff1916911515919091179055604086015180518794611cea93600080516020618ef38339815191529091019201906177c6565b506060820151611d009060038301906013617840565b505050806001019050611c69565b5050505b6001600160a01b03811660009081526004602052604090205480611d365750611d89565b6001810390506000600b8281548110611d4b57fe5b600091825260209091206001601690920201015460ff169050611d6e8383615c0a565b8015611d775750805b15610dbd576009805460001901905550505b50565b60015460609081906000805b82811015611ddf5760018181548110611dad57fe5b9060005260206000209060040201600201601c9054906101000a900460ff16611dd7576001909101905b600101611d98565b50606081604051908082528060200260200182016040528015611e0c578160200160208202803683370190505b509050606082604051908082528060200260200182016040528015611e4557816020015b6060815260200190600190039081611e305790505b50600b5460009450909150841415611fc05760005b84811015611fba5760018181548110611e6f57fe5b9060005260206000209060040201600201601c9054906101000a900460ff16611fb25760018181548110611e9f57fe5b600091825260209091206004909102015483516001600160a01b0390911690849086908110611eca57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050600b8181548110611ef757fe5b600091825260209182902060026016909202018101805460408051601f600019610100600186161502019093169490940491820185900485028401850190528083529192909190830182828015611f8f5780601f10611f6457610100808354040283529160200191611f8f565b820191906000526020600020905b815481529060010190602001808311611f7257829003601f168201915b5050505050828581518110611fa057fe5b60209081029190910101526001909301925b600101611e5a565b5061205c565b60005b8481101561205a5760018181548110611fd857fe5b9060005260206000209060040201600201601c9054906101000a900460ff16612052576001818154811061200857fe5b600091825260209091206004909102015483516001600160a01b039091169084908690811061203357fe5b6001600160a01b03909216602092830291909101909101526001909301925b600101611fc3565b505b909450925050505b9091565b61271081565b600181565b61100181565b60085481565b6102ca81565b600881565b600e54600c5460609182918061209e575060155b60606120a8612ecb565b905060606120b582615fbd565b9050828251116120cc579094509250612064915050565b838383510310156120de578282510393505b83156121145760c843046120fa83838388880360008a8a61612b565b6121128383838888038989038a8b8b8b51030161612b565b505b606083604051908082528060200260200182016040528015612140578160200160208202803683370190505b50905060608460405190808252806020026020018201604052801561217957816020015b60608152602001906001900390816121645790505b50905060005b858110156121fa5784818151811061219357fe5b60200260200101518382815181106121a757fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508381815181106121d357fe5b60200260200101518282815181106121e757fe5b602090810291909101015260010161217f565b509096509450505050509091565b60065481565b61200081565b6001600160a01b0381166000908152600460205260408120548061223c576000915050611b7d565b600019016110af81611b82565b6001600160a01b03811660009081526004602052604081205480612271576000915050611b7d565b60018082038154811061228057fe5b906000526020600020906004020160030154915050919050565b600081565b606781565b600f5481565b601281815481106122b757fe5b600091825260209182902001805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152935090918301828280156123485780601f1061231d57610100808354040283529160200191612348565b820191906000526020600020905b81548152906001019060200180831161232b57829003601f168201915b505050505081565b60105481565b6001818154811061236357fe5b600091825260209091206004909102018054600182015460028301546003909301546001600160a01b0392831694509082169291821691600160a01b81046001600160401b031691600160e01b90910460ff169086565b61100581565b600281565b601081565b61100881565b6103e881565b600b81565b600c5481565b606681565b33612000146124075760405162461bcd60e51b8152600401610d9d90618a28565b7f41ce201247b6ceb957dcdb217d0b8acb50b9ea0e12af9af4f5e7f3890210160583838360405161243a93929190618c64565b60405180910390a1505050565b60025481565b60115481565b60145460ff1681565b600a5481565b6001600160a01b038116600090815260046020526040812054806124985760405162461bcd60e51b8152600401610d9d906189b0565b6000190192915050565b600b54612560576124b1617797565b60015460005b8181101561255c57600b80546001810182556000919091528351600080516020618ed38339815191526016909202918201908155602080860151600080516020618f138339815191528401805460ff191691151591909117905560408601518051879461253893600080516020618ef38339815191529091019201906177c6565b50606082015161254e9060038301906013617840565b5050508060010190506124b7565b5050505b60085461256d5760036008555b600a5461257a576002600a555b600061258533612462565b905061259081611ab3565b6125ac5760405162461bcd60e51b8152600401610d9d90618705565b611d893382616282565b600981565b61100781565b600381565b60c881565b61100681565b604051806101e001604052806101ab8152602001618d086101ab913981565b60005460ff1681565b61200281565b61300081565b6402540be40081565b60005460ff166126305760405162461bcd60e51b8152600401610d9d906182e9565b33611007146126515760405162461bcd60e51b8152600401610d9d906187fc565b6126bb84848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080518082019091526013815272065787069726554696d655365636f6e6447617606c1b6020820152915061631a9050565b1561275857602081146126e05760405162461bcd60e51b8152600401610d9d9061896a565b604080516020601f840181900481028201810190925282815260009161271e9185858083850183828082843760009201919091525061637392505050565b9050606481101580156127345750620186a08111155b6127505760405162461bcd60e51b8152600401610d9d906185f5565b600255612e69565b6127b884848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260098152686275726e526174696f60b81b6020820152915061631a9050565b1561284757602081146127dd5760405162461bcd60e51b8152600401610d9d9061816f565b604080516020601f840181900481028201810190925282815260009161281b9185858083850183828082843760009201919091525061637392505050565b905061271081111561283f5760405162461bcd60e51b8152600401610d9d90618487565b600655612e69565b6128b184848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260138152726d61784e756d4f664d61696e7461696e696e6760681b6020820152915061631a9050565b1561294b57602081146128d65760405162461bcd60e51b8152600401610d9d906181a6565b604080516020601f84018190048102820181019092528281526000916129149185858083850183828082843760009201919091525061637392505050565b600c5490915080612923575060155b8082106129425760405162461bcd60e51b8152600401610d9d906184fa565b50600855612e69565b6129b484848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260128152716d61696e7461696e536c6173685363616c6560701b6020820152915061631a9050565b15612a4d57602081146129d95760405162461bcd60e51b8152600401610d9d9061826f565b604080516020601f8401819004810282018101909252828152600091612a179185858083850183828082843760009201919091525061637392505050565b9050600081118015612a295750600a81105b612a455760405162461bcd60e51b8152600401610d9d90618b08565b600a55612e69565b612ac184848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601981527f6d61784e756d4f66576f726b696e6743616e64696461746573000000000000006020820152915061631a9050565b15612b505760208114612ae65760405162461bcd60e51b8152600401610d9d90618223565b604080516020601f8401819004810282018101909252828152600091612b249185858083850183828082843760009201919091525061637392505050565b9050600d54811115612b485760405162461bcd60e51b8152600401610d9d9061866b565b600e55612e69565b612bb984848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260128152716d61784e756d4f6643616e6469646174657360701b6020820152915061631a9050565b15612c3b5760208114612bde5760405162461bcd60e51b8152600401610d9d9061884a565b604080516020601f8401819004810282018101909252828152600091612c1c9185858083850183828082843760009201919091525061637392505050565b600d819055600e54909150811015612c3557600d54600e555b50612e69565b612c9f84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600d81526c6e756d4f66436162696e65747360981b6020820152915061631a9050565b15612d4d5760208114612cc45760405162461bcd60e51b8152600401610d9d906182b4565b604080516020601f8401819004810282018101909252828152600091612d029185858083850183828082843760009201919091525061637392505050565b905060008111612d245760405162461bcd60e51b8152600401610d9d90618357565b6064811115612d455760405162461bcd60e51b8152600401610d9d9061839f565b600c55612e69565b612db584848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601181527073797374656d526577617264526174696f60781b6020820152915061631a9050565b15612e515760208114612dda5760405162461bcd60e51b8152600401610d9d90618ac4565b604080516020601f8401819004810282018101909252828152600091612e189185858083850183828082843760009201919091525061637392505050565b905060018110158015612e2d57506127108111155b612e495760405162461bcd60e51b8152600401610d9d906185a2565b600f55612e69565b60405162461bcd60e51b8152600401610d9d90618b65565b7f6cdb0ac70ab7f2e2d035cca5be60d89906f2dede7648ddbd7402189c1eeed17a84848484604051612e9e949392919061813d565b60405180910390a150505050565b60046020526000908152604090205481565b68056bc75e2d6310000081565b6001546060906000805b82811015612efa57612ee681611b82565b15612ef2578160010191505b600101612ed5565b50606081604051908082528060200260200182016040528015612f27578160200160208202803683370190505b5090506000915060005b83811015612fae57612f4281611b82565b15612fa65760018181548110612f5457fe5b600091825260209091206004909102015482516001600160a01b0390911690839085908110612f7f57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508260010192505b600101612f31565b50925050505b90565b601581565b61027181565b61100281565b601381815481106122b757fe5b6000612fdf612ecb565b519050600080600c5411612ff4576015612ff8565b600c545b905080821115613006578091505b8161301057600191505b5090565b67016345785d8a000081565b60055481565b61100381565b61200481565b60005460ff16156130555760405162461bcd60e51b8152600401610d9d906188fc565b61305d61786d565b6000613083604051806101e001604052806101ab8152602001618d086101ab9139613cce565b91509150806130a45760405162461bcd60e51b8152600401610d9d906189e7565b60005b8260200151518110156131c9576001836020015182815181106130c657fe5b60209081029190910181015182546001818101855560009485528385208351600493840290910180546001600160a01b039283166001600160a01b03199182161782558587015182850180549185169183169190911790556040860151600283018054606089015160808a01511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b199590981692909516919091179290921694909417161790915560a09093015160039093019290925591860151805191850193918590811061319c57fe5b602090810291909101810151516001600160a01b03168252810191909152604001600020556001016130a7565b50506103e8600255506000805460ff19166001179055565b600d5481565b33612002146132085760405162461bcd60e51b8152600401610d9d90618bd5565b60005b60155481101561329057816001600160a01b03166015828154811061322c57fe5b60009182526020909120600490910201546001600160a01b031614156132885760016015828154811061325b57fe5b9060005260206000209060040201600201601c6101000a81548160ff021916908315150217905550613290565b60010161320b565b506001600160a01b0381166000908152600460205260409020548015806132e157506001808203815481106132c157fe5b9060005260206000209060040201600201601c9054906101000a900460ff165b1561331f576040516001600160a01b038316907fe209c46bebf57cf265d5d9009a00870e256d9150f3ed5281ab9d9eb3cec6e4be90600090a2613328565b610dbd8161504f565b5050565b601354600090815b818110156134355761341d85858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060138054909250859150811061338557fe5b600091825260209182902001805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156134135780601f106133e857610100808354040283529160200191613413565b820191906000526020600020905b8154815290600101906020018083116133f657829003601f168201915b5050505050616378565b1561342d57600192505050611c2d565b600101613334565b5060125460005b818110156134a65761348d86868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060128054909250859150811061338557fe5b1561349e5760019350505050611c2d565b60010161343c565b50600095945050505050565b33611001146134d35760405162461bcd60e51b8152600401610d9d90618b8c565b600b54613591576134e2617797565b60015460005b8181101561358d57600b80546001810182556000919091528351600080516020618ed38339815191526016909202918201908155602080860151600080516020618f138339815191528401805460ff191691151591909117905560408601518051879461356993600080516020618ef38339815191529091019201906177c6565b50606082015161357f9060038301906013617840565b5050508060010190506134e8565b5050505b600061359c826163dc565b90506135a781611ab3565b15613328576133288282616282565b606581565b3341146135da5760405162461bcd60e51b8152600401610d9d90618a77565b60005460ff166135fc5760405162461bcd60e51b8152600401610d9d906182e9565b6000341161361c5760405162461bcd60e51b8152600401610d9d9061863c565b3a1561363a5760405162461bcd60e51b8152600401610d9d906187ce565b6001600160a01b03811660009081526004602052604090205460145434919060ff1661367a57610271600f556103aa6006556014805460ff191660011790555b60006136a3612710613697600f548661657f90919063ffffffff16565b9063ffffffff6165b916565b90508015613713576040516110029082156108fc029083906000818181858888f193505050501580156136da573d6000803e3d6000fd5b507f6ecc855f9440a9282c90913bbc91619fd44f5ec0b462af28d127b116f130aa4d8160405161370a9190618c1b565b60405180910390a15b60008311801561372557506000600654115b156137cb5760006137476127106136976006548761657f90919063ffffffff16565b905080156137c95760405161dead9082156108fc029083906000818181858888f1935050505015801561377e573d6000803e3d6000fd5b507f627059660ea01c4733a328effb2294d2f86905bf806da763a89cee254de8bee5816040516137ae9190618c1b565b60405180910390a16137c6848263ffffffff615ba316565b93505b505b6137db838263ffffffff615ba316565b925081156138db5760006001808403815481106137f457fe5b9060005260206000209060040201905080600201601c9054906101000a900460ff161561386157846001600160a01b03167ff177e5d6c5764d79c32883ed824111d9b13f5668cf6ab1cc12dd36791dd955b4856040516138549190618c1b565b60405180910390a26138d5565b600354613874908563ffffffff615be516565b600390815581015461388c908563ffffffff615be516565b60038201556040516001600160a01b038616907f93a090ecc682c002995fad3c85b30c5651d7fd29b0be5da9d784a3302aedc055906138cc908790618c1b565b60405180910390a25b5061391d565b836001600160a01b03167ff177e5d6c5764d79c32883ed824111d9b13f5668cf6ab1cc12dd36791dd955b4846040516139149190618c1b565b60405180910390a25b50505050565b600e5481565b61100081565b61dead81565b600b818154811061394257fe5b6000918252602091829020601691909102018054600180830154600280850180546040805161010096831615969096026000190190911692909204601f810188900488028501880190925281845293965060ff909116949192918301828280156139ed5780601f106139c2576101008083540402835291602001916139ed565b820191906000526020600020905b8154815290600101906020018083116139d057829003601f168201915b5050505050905083565b61100481565b6000600a5460001480613a0e575081155b80613a195750600954155b15613a26575060006110af565b60096000815460019003919050819055506000613a71600a5461369785613697600b8981548110613a5357fe5b6000918252602090912060169091020154439063ffffffff615ba316565b90506000600b8581548110613a8257fe5b906000526020600020906016020160010160006101000a81548160ff0219169083151502179055506000806110016001600160a01b0316638256ace66040518163ffffffff1660e01b8152600401604080518083038186803b158015613ae757600080fd5b505afa158015613afb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b1f9190617e5a565b9150915060009350808310613c7e57613b388787615c0a565b506040516333c1892360e21b81526000906120029063cf06248c90613b61908b90600401617f97565b60206040518083038186803b158015613b7957600080fd5b505afa158015613b8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613bb19190617c07565b6001600160a01b031614613c1d576040516313d13bdb60e31b815261100190639e89ded890613be6908a908790600401617fab565b600060405180830381600087803b158015613c0057600080fd5b505af1158015613c14573d6000803e3d6000fd5b50505050613c75565b6040516305bfb49960e41b815261100190635bfb499090613c42908a90600401617f97565b600060405180830381600087803b158015613c5c57600080fd5b505af1158015613c70573d6000803e3d6000fd5b505050505b60019350613c90565b818310613c9057613c8e876163dc565b505b6040516001600160a01b038816907fb9d38178dc641ff1817967a63c9078cbcd955a9f1fcd75e0e3636de615d44d3b90600090a25050509392505050565b613cd661786d565b6000613ce061786d565b613ce861790a565b613cf9613cf4866165fb565b616620565b90506000805b613d088361666a565b15613e7c5780613d2d57613d23613d1e8461668b565b6166d9565b60ff168452613e74565b8060011415613e6f576060613d49613d448561668b565b616759565b90508051604051908082528060200260200182016040528015613d8657816020015b613d73617891565b815260200190600190039081613d6b5790505b5085602001819052508051604051908082528060200260200182016040528015613dc457816020015b6060815260200190600190039081613daf5790505b50604086015260005b8151811015613e6457613dde617891565b60606000613dfe858581518110613df157fe5b602002602001015161682a565b92509250925080613e1e578860009a509a50505050505050505050613e85565b8289602001518581518110613e2f57fe5b60200260200101819052508189604001518581518110613e4b57fe5b6020026020010181905250505050806001019050613dcd565b506001925050613e74565b613e7c565b600101613cff565b50919350909150505b915091565b604080516001808252818301909252606091829190816020015b6060815260200190600190039081613ea4579050509050613eca8363ffffffff16616944565b81600081518110613ed757fe5b60200260200101819052506110af81616957565b6000606483511115613f2257600080516020618eb3833981519152604051613f12906183fc565b60405180910390a1506066611c2d565b60005b8351811015613fc05760005b81811015613fb757848181518110613f4557fe5b6020026020010151600001516001600160a01b0316858381518110613f6657fe5b6020026020010151600001516001600160a01b03161415613faf57600080516020618eb3833981519152604051613f9c90618557565b60405180910390a1606692505050611c2d565b600101613f31565b50600101613f25565b5060608060606015805480602002602001604051908101604052809291908181526020016000905b828210156140725760008481526020908190206040805160c0810182526004860290920180546001600160a01b039081168452600180830154821685870152600283015491821693850193909352600160a01b81046001600160401b03166060850152600160e01b900460ff16151560808401526003015460a08301529083529092019101613fe8565b50505050905060606016805480602002602001604051908101604052809291908181526020016000905b828210156141475760008481526020908190208301805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156141335780601f1061410857610100808354040283529160200191614133565b820191906000526020600020905b81548152906001019060200180831161411657829003601f168201915b50505050508152602001906001019061409c565b50505050905060005b82518110156141a45782818151811061416557fe5b60200260200101516060015160020283828151811061418057fe5b60209081029190910101516001600160401b03909116606090910152600101614150565b506060806141b4898986866169e1565b915091506141c28282615163565b60015460408051828152602080840282010190915292985090965060009550859450925060609150828015614201578160200160208202803683370190505b50905060005b828110156143925760006001600160a01b03166120026001600160a01b031663cf06248c6001848154811061423857fe5b60009182526020909120600491820201546040516001600160e01b031960e085901b168152614273926001600160a01b039092169101617f97565b60206040518083038186803b15801561428b57600080fd5b505afa15801561429f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142c39190617c07565b6001600160a01b0316146143255760018282815181106142df57fe5b602002602001019060ff16908160ff16815250506001818154811061430057fe5b906000526020600020906004020160030154600014614320578360010193505b61438a565b67016345785d8a00006001828154811061433b57fe5b9060005260206000209060040201600301541061435d5784600101945061438a565b6001818154811061436a57fe5b90600052602060002090600402016003015460001461438a578360010193505b600101614207565b506060846040519080825280602002602001820160405280156143bf578160200160208202803683370190505b5090506060856040519080825280602002602001820160405280156143ee578160200160208202803683370190505b50905060608660405190808252806020026020018201604052801561441d578160200160208202803683370190505b50905060608760405190808252806020026020018201604052801561444c578160200160208202803683370190505b509050600060608860405190808252806020026020018201604052801561447d578160200160208202803683370190505b5090506060896040519080825280602002602001820160405280156144ac578160200160208202803683370190505b50905060009a506000995060006110046001600160a01b031663149d14d96040518163ffffffff1660e01b815260040160206040518083038186803b1580156144f457600080fd5b505afa158015614508573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061452c9190617e42565b905067016345785d8a000081111561457857600080516020618eb3833981519152604051614559906188bb565b60405180910390a160689e505050505050505050505050505050611c2d565b60005b8a81101561490c5789818151811061458f57fe5b602002602001015160ff166001141561468557600181815481106145af57fe5b90600052602060002090600402016003015460001461468057600181815481106145d557fe5b600091825260209091206004909102015484516001600160a01b039091169085908e90811061460057fe5b60200260200101906001600160a01b031690816001600160a01b0316815250506001818154811061462d57fe5b906000526020600020906004020160030154838d8151811061464b57fe5b60200260200101818152505060018a8d8151811061466557fe5b602002602001019060ff16908160ff16815250508b6001019b505b614904565b67016345785d8a00006001828154811061469b57fe5b9060005260206000209060040201600301541061482057600181815481106146bf57fe5b906000526020600020906004020160020160009054906101000a90046001600160a01b0316898e815181106146f057fe5b60200260200101906001600160a01b031690816001600160a01b03168152505060006402540be4006001838154811061472557fe5b9060005260206000209060040201600301548161473e57fe5b066001838154811061474c57fe5b9060005260206000209060040201600301540390506147748382615ba390919063ffffffff16565b898f8151811061478057fe5b6020026020010181815250506001828154811061479957fe5b906000526020600020906004020160010160009054906101000a90046001600160a01b0316878f815181106147ca57fe5b60200260200101906001600160a01b031690816001600160a01b03168152505081888f815181106147f757fe5b6020908102919091010152614812868263ffffffff615be516565b95508d6001019d5050614904565b6001818154811061482d57fe5b906000526020600020906004020160030154600014614904576001818154811061485357fe5b906000526020600020906004020160010160009054906101000a90046001600160a01b0316848d8151811061488457fe5b60200260200101906001600160a01b031690816001600160a01b031681525050600181815481106148b157fe5b906000526020600020906004020160030154838d815181106148cf57fe5b60200260200101818152505060008a8d815181106148e957fe5b602002602001019060ff16908160ff16815250508b6001019b505b60010161457b565b5060008415614b82576002546040516303702b2960e51b815261100491636e056520918891614946918e918e918d914201906004016180a5565b6020604051808303818588803b15801561495f57600080fd5b505af193505050508015614990575060408051601f3d908101601f1916820190925261498d91810190617d6f565b60015b614b07576040516000815260443d10156149ac57506000614a47565b60046000803e60005160e01c6308c379a081146149cd576000915050614a47565b60043d036004833e81513d60248201116001600160401b03821117156149f857600092505050614a47565b80830180516001600160401b03811115614a19576000945050505050614a47565b8060208301013d8601811115614a3757600095505050505050614a47565b601f01601f191660405250925050505b80614a525750614a94565b60019150857fa7cdeed7d0db45e3219a6e5d60838824c16f1d39991fcfe3f963029c844bf28082604051614a86919061812a565b60405180910390a250614b02565b3d808015614abe576040519150601f19603f3d011682016040523d82523d6000602084013e614ac3565b606091505b5060019150857fbfa884552dd8921b6ce90bfe906952ae5b3b29be0cc1a951d4f62697635a3a4582604051614af8919061812a565b60405180910390a2505b614b82565b8015614b49577fa217d08e65f80c73121cd9db834d81652d544bfbf452f6d04922b16c90a37b7086604051614b3c9190618c1b565b60405180910390a1614b80565b857fa7cdeed7d0db45e3219a6e5d60838824c16f1d39991fcfe3f963029c844bf280604051614b77906181ec565b60405180910390a25b505b8015614d385760005b8751811015614d36576000888281518110614ba257fe5b60200260200101519050600060018281548110614bbb57fe5b60009182526020909120600160049092020181015481546001600160a01b03909116916108fc9185908110614bec57fe5b9060005260206000209060040201600301549081150290604051600060405180830381858888f1935050505090508015614ca85760018281548110614c2d57fe5b60009182526020909120600160049092020181015481546001600160a01b03909116917f6c61d60f69a7beb3e1c80db7f39f37b208537cbb19da3174511b477812b2fc7d9185908110614c7c57fe5b906000526020600020906004020160030154604051614c9b9190618c1b565b60405180910390a2614d2c565b60018281548110614cb557fe5b60009182526020909120600160049092020181015481546001600160a01b03909116917f25d0ce7d2f0cec669a8c17efe49d195c13455bb8872b65fa610ac7f53fe4ca7d9185908110614d0457fe5b906000526020600020906004020160030154604051614d239190618c1b565b60405180910390a25b5050600101614b8b565b505b835115614f2e5760005b8451811015614f2c578a8181518110614d5757fe5b602002602001015160ff1660011415614df6576120026001600160a01b031663092193ab858381518110614d8757fe5b6020026020010151878481518110614d9b57fe5b60200260200101516040518363ffffffff1660e01b8152600401614dbf9190617f97565b6000604051808303818588803b158015614dd857600080fd5b505af1158015614dec573d6000803e3d6000fd5b5050505050614f24565b6000858281518110614e0457fe5b60200260200101516001600160a01b03166108fc868481518110614e2457fe5b60200260200101519081150290604051600060405180830381858888f1935050505090508015614eba57858281518110614e5a57fe5b60200260200101516001600160a01b03167f6c61d60f69a7beb3e1c80db7f39f37b208537cbb19da3174511b477812b2fc7d868481518110614e9857fe5b6020026020010151604051614ead9190618c1b565b60405180910390a2614f22565b858281518110614ec657fe5b60200260200101516001600160a01b03167f25d0ce7d2f0cec669a8c17efe49d195c13455bb8872b65fa610ac7f53fe4ca7d868481518110614f0457fe5b6020026020010151604051614f199190618c1b565b60405180910390a25b505b600101614d42565b505b505050505050505050505050506000471115614fab577f6ecc855f9440a9282c90913bbc91619fd44f5ec0b462af28d127b116f130aa4d47604051614f739190618c1b565b60405180910390a1604051611002904780156108fc02916000818181858888f19350505050158015614fa9573d6000803e3d6000fd5b505b60006003819055600555815115614fc657614fc6828261539c565b6110016001600160a01b031663fc4333cd6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561500357600080fd5b505af1158015615017573d6000803e3d6000fd5b50506040517fedd8d7296956dd970ab4de3f2fc03be2b0ffc615d20cd4c72c6e44f928630ebf925060009150a1506000949350505050565b600154600554600091906000198201118015906150c25760018085038154811061507557fe5b600091825260208220600490910201546040516001600160a01b03909116917fe209c46bebf57cf265d5d9009a00870e256d9150f3ed5281ab9d9eb3cec6e4be91a2600092505050611b7d565b6005805460019081019091558054819060001987019081106150e057fe5b9060005260206000209060040201600201601c6101000a81548160ff02191690831515021790555060018085038154811061511757fe5b600091825260208220600490910201546040516001600160a01b03909116917ff226e7d8f547ff903d9d419cf5f54e0d7d07efa9584135a53a057c5f1f27f49a91a25060009392505050565b606080600080808080615174612fd5565b6001549091505b801561528257600181039250600b838154811061519457fe5b600091825260209091206001601690920201015460ff166151b457615279565b600183815481106151c157fe5b60009182526020909120600490910201546001600160a01b031694506151e88584846139fd565b93508315806151fb575060018a51038610155b1561520557615279565b60005b8a5181101561527757856001600160a01b03168b828151811061522757fe5b6020026020010151600001516001600160a01b0316141561526f5760018b828151811061525057fe5b6020908102919091010151901515608090910152600190960195615277565b600101615208565b505b6000190161517b565b50848951036040519080825280602002602001820160405280156152c057816020015b6152ad617891565b8152602001906001900390816152a55790505b509650848951036040519080825280602002602001820160405280156152fa57816020015b60608152602001906001900390816152e55790505b5095506000915060005b895181101561538e5789818151811061531957fe5b6020026020010151608001516153865789818151811061533557fe5b602002602001015188848151811061534957fe5b602002602001018190525088818151811061536057fe5b602002602001015187848151811061537457fe5b60200260200101819052508260010192505b600101615304565b5050505050505b9250929050565b600154825160005b828110156154b95760016153b6617891565b600183815481106153c357fe5b600091825260208083206040805160c08101825260049490940290910180546001600160a01b0390811685526001820154811693850193909352600281015492831691840191909152600160a01b82046001600160401b03166060840152600160e01b90910460ff16151560808301526003015460a082015291505b8481101561548d5787818151811061545357fe5b6020026020010151600001516001600160a01b031682600001516001600160a01b03161415615485576000925061548d565b60010161543f565b5081156154af5780516001600160a01b03166000908152600460205260408120555b50506001016153a4565b508082111561557857805b828110156155765760018054806154d757fe5b60008281526020812060046000199093019283020180546001600160a01b0319908116825560018201805490911690556002810180546001600160e81b0319169055600301559055600b80548061552a57fe5b60008281526020812060166000199093019283020181815560018101805460ff191690559061555c60028301826178c6565b61556a60038301600061792a565b505090556001016154c4565b505b60008183106155875781615589565b825b905060005b818110156159455761563b8682815181106155a557fe5b6020026020010151600183815481106155ba57fe5b60009182526020918290206040805160c08101825260049390930290910180546001600160a01b0390811684526001820154811694840194909452600281015493841691830191909152600160a01b83046001600160401b03166060830152600160e01b90920460ff161515608082015260039091015460a0820152616dad565b6157ef57806001016004600088848151811061565357fe5b6020026020010151600001516001600160a01b03166001600160a01b031681526020019081526020016000208190555085818151811061568f57fe5b6020026020010151600182815481106156a457fe5b6000918252602091829020835160049092020180546001600160a01b039283166001600160a01b0319918216178255928401516001820180549184169185169190911790556040840151600282018054606087015160808801511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b1995909716929097169190911792909216939093171692909217905560a090910151600390910155845185908290811061575f57fe5b6020026020010151600b828154811061577457fe5b906000526020600020906016020160020190805190602001906157989291906177c6565b506000600b82815481106157a857fe5b60009182526020822060169190910201600101805460ff191692151592909217909155600b8054839081106157d957fe5b600091825260209091206016909102015561593d565b6158808582815181106157fe57fe5b6020026020010151600b838154811061581357fe5b600091825260209182902060026016909202018101805460408051601f6000196101006001861615020190931694909404918201859004850284018501905280835291929091908301828280156134135780601f106133e857610100808354040283529160200191613413565b6158cb5784818151811061589057fe5b6020026020010151600b82815481106158a557fe5b906000526020600020906016020160020190805190602001906158c99291906177c6565b505b6000600182815481106158da57fe5b9060005260206000209060040201600301819055508581815181106158fb57fe5b6020026020010151608001516001828154811061591457fe5b9060005260206000209060040201600201601c6101000a81548160ff0219169083151502179055505b60010161558e565b5082821115615b1d57615956617797565b835b83811015615b1a5785818151811061596c57fe5b60200260200101518260400181905250600187828151811061598a57fe5b6020908102919091018101518254600181810185556000948552838520835160049093020180546001600160a01b039384166001600160a01b0319918216178255848601518284018054918616918316919091179055604080860151600284018054606089015160808a01511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b1995909a1692909616919091179290921696909617169190911790935560a090930151600390930192909255600b8054928301815590935284516016909102600080516020618ed3833981519152810191825585830151600080516020618f138339815191528201805491151560ff1990921691909117905592850151805186949293615ac093600080516020618ef3833981519152019201906177c6565b506060820151615ad69060038301906013617840565b5050508060010160046000898481518110615aed57fe5b602090810291909101810151516001600160a01b0316825281019190915260400160002055600101615958565b50505b615b25616e2e565b615b2d617010565b6000600981905560015493505b83811015615b9b576000600b8281548110615b5157fe5b60009182526020822060169190910201600101805460ff191692151592909217909155600b805483908110615b8257fe5b6000918252602090912060169091020155600101615b3a565b505050505050565b60006110af83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506171fe565b6000828201838110156110af5760405162461bcd60e51b8152600401610d9d90618320565b60008060018381548110615c1a57fe5b90600052602060002090600402016003015490506000600180805490500390506001615c44612ecb565b5111615c7957600060018581548110615c5957fe5b906000526020600020906004020160030181905550600092505050611c2d565b846001600160a01b03167f3b6f9ef90462b512a1293ecec018670bf7b7f1876fb727590a8a6d7643130a7083604051615cb29190618c1b565b60405180910390a26001600160a01b038516600090815260046020526040812055835b60015460001901811015615e9f5760018160010181548110615cf357fe5b906000526020600020906004020160018281548110615d0e57fe5b60009182526020909120825460049092020180546001600160a01b03199081166001600160a01b0393841617825560018085015481840180548416918616919091179055600280860180549185018054909416919095161780835584546001600160401b03600160a01b91829004160267ffffffffffffffff60a01b1990911617808355935460ff600160e01b918290041615150260ff60e01b19909416939093179055600392830154920191909155600b805490918301908110615dcf57fe5b9060005260206000209060160201600b8281548110615dea57fe5b600091825260209091208254601690920201908155600180830154818301805460ff909216151560ff1990921691909117905560028084018054615e41938386019390821615610100026000190190911604617939565b50615e54600382810190840160136179ae565b50905050806001016004600060018481548110615e6d57fe5b600091825260208083206004909202909101546001600160a01b03168352820192909252604001902055600101615cd5565b506001805480615eab57fe5b60008281526020812060046000199093019283020180546001600160a01b0319908116825560018201805490911690556002810180546001600160e81b0319169055600301559055600b805480615efe57fe5b60008281526020812060166000199093019283020181815560018101805460ff1916905590615f3060028301826178c6565b615f3e60038301600061792a565b505090556000818381615f4d57fe5b0490508015615fb15760015460005b81811015615fae578260018281548110615f7257fe5b9060005260206000209060040201600301540160018281548110615f9257fe5b6000918252602090912060036004909202010155600101615f5c565b50505b50600195945050505050565b600154815160408051828152602080840282010190915260609291908390828015615ffc57816020015b6060815260200190600190039081615fe75790505b50600b549091508314616013579250611b7d915050565b60005b8281101561612257600b60016004600089858151811061603257fe5b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054038154811061606657fe5b600091825260209182902060026016909202018101805460408051601f6000196101006001861615020190931694909404918201859004850284018501905280835291929091908301828280156160fe5780601f106160d3576101008083540402835291602001916160fe565b820191906000526020600020905b8154815290600101906020018083116160e157829003601f168201915b505050505082828151811061610f57fe5b6020908102919091010152600101616016565b50949350505050565b60005b82811015616278576000828783880160405160200161614e929190617f89565b6040516020818303038152906040528051906020012060001c8161616e57fe5b0690508085018287011461626f576000898388018151811061618c57fe5b60200260200101519050606089848901815181106161a657fe5b602002602001015190508a838801815181106161be57fe5b60200260200101518b858a01815181106161d457fe5b60200260200101906001600160a01b031690816001600160a01b031681525050818b8489018151811061620357fe5b60200260200101906001600160a01b031690816001600160a01b031681525050898388018151811061623157fe5b60200260200101518a858a018151811061624757fe5b6020026020010181905250808a8489018151811061626157fe5b602002602001018190525050505b5060010161612e565b5050505050505050565b600980546001908101909155600b80548390811061629c57fe5b906000526020600020906016020160010160006101000a81548160ff02191690831515021790555043600b82815481106162d257fe5b600091825260208220601690910201919091556040516001600160a01b038416917ff62981a567ec3cec866c6fa93c55bcdf841d6292d18b8d522ececa769375d82d91a25050565b60008160405160200161632d9190617f6d565b60405160208183030381529060405280519060200120836040516020016163549190617f6d565b6040516020818303038152906040528051906020012014905092915050565b015190565b81518151600091600191811480831461639457600092506163d2565b600160208701838101602088015b6002848385100114156163cd5780518351146163c15760009650600093505b602092830192016163a2565b505050505b5090949350505050565b6001600160a01b0381166000908152600460205260408120548061640557506000199050611b7d565b60018103905060006001828154811061641a57fe5b906000526020600020906004020160030154905060006001838154811061643d57fe5b6000918252602090912060036004909202010155600154604051600019909101906001600160a01b038616907f8cd4e147d8af98a9e3b6724021b8bf6aed2e5dac71c38f2dce8161b82585b25d90616496908590618c1b565b60405180910390a2806164ae57829350505050611b7d565b60008183816164b957fe5b04905080156165755760005b848110156165175781600182815481106164db57fe5b90600052602060002090600402016003015401600182815481106164fb57fe5b60009182526020909120600360049092020101556001016164c5565b50600180549085015b8181101561657257826001828154811061653657fe5b906000526020600020906004020160030154016001828154811061655657fe5b6000918252602090912060036004909202010155600101616520565b50505b5091949350505050565b60008261658e57506000611c2d565b8282028284828161659b57fe5b04146110af5760405162461bcd60e51b8152600401610d9d9061878d565b60006110af83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061722a565b6166036179d8565b506040805180820190915281518152602082810190820152919050565b61662861790a565b61663182617261565b61663a57600080fd5b6000616649836020015161729b565b60208085015160408051808201909152868152920190820152915050919050565b60006166746179d8565b505080518051602091820151919092015191011190565b6166936179d8565b61669c8261666a565b6166a557600080fd5b602082015160006166b5826172fe565b80830160209586015260408051808201909152908152938401919091525090919050565b8051600090158015906166ee57508151602110155b6166f757600080fd5b6000616706836020015161729b565b9050808360000151101561672c5760405162461bcd60e51b8152600401610d9d90618933565b82516020808501518301805192849003929183101561612257506020919091036101000a90049392505050565b606061676482617261565b61676d57600080fd5b6000616778836173df565b90506060816040519080825280602002602001820160405280156167b657816020015b6167a36179d8565b81526020019060019003908161679b5790505b50905060006167c8856020015161729b565b60208601510190506000805b8481101561681f576167e5836172fe565b915060405180604001604052808381526020018481525084828151811061680857fe5b6020908102919091010152918101916001016167d4565b509195945050505050565b616832617891565b6060600061683e617891565b606061684861790a565b61685187616620565b90506000805b6168608361666a565b15616935578061688b5761687b6168768461668b565b61743b565b6001600160a01b0316855261692d565b80600114156168b3576168a06168768461668b565b6001600160a01b0316602086015261692d565b80600214156168db576168c86168768461668b565b6001600160a01b0316604086015261692d565b8060031415616907576168f0613d1e8461668b565b6001600160401b031660608601526001915061692d565b80600414156169285761692161691c8461668b565b617455565b935061692d565b616935565b600101616857565b50929791965091945092505050565b6060611c2d616952836174c5565b6175ab565b60608151600014156169785750604080516000815260208101909152611b7d565b60608260008151811061698757fe5b602002602001015190506000600190505b83518110156169c8576169be828583815181106169b157fe5b60200260200101516175fd565b9150600101616998565b506110af6169db825160c060ff1661767a565b826175fd565b60608060006120026001600160a01b031663c473318f6040518163ffffffff1660e01b815260040160206040518083038186803b158015616a2157600080fd5b505afa158015616a35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190616a599190617e42565b90508085518851011015616a6e575083518651015b606081604051908082528060200260200182016040528015616aaa57816020015b616a97617891565b815260200190600190039081616a8f5790505b509050606082604051908082528060200260200182016040528015616ae357816020015b6060815260200190600190039081616ace5790505b50905060008060005b8b51831080616afb5750895182105b8015616b0657508581105b15616d9b578b51831415616b7657898281518110616b2057fe5b6020026020010151858281518110616b3457fe5b6020026020010181905250888281518110616b4b57fe5b6020026020010151848281518110616b5f57fe5b602090810291909101015260019182019101616aec565b8951821415616be1578b8381518110616b8b57fe5b6020026020010151858281518110616b9f57fe5b60200260200101819052508a8381518110616bb657fe5b6020026020010151848281518110616bca57fe5b602090810291909101015260019283019201616aec565b898281518110616bed57fe5b6020026020010151606001516001600160401b03168c8481518110616c0e57fe5b6020026020010151606001516001600160401b03161115616c8a578b8381518110616c3557fe5b6020026020010151858281518110616c4957fe5b60200260200101819052508a8381518110616c6057fe5b6020026020010151848281518110616c7457fe5b6020026020010181905250826001019250616d93565b898281518110616c9657fe5b6020026020010151606001516001600160401b03168c8481518110616cb757fe5b6020026020010151606001516001600160401b03161015616d3357898281518110616cde57fe5b6020026020010151858281518110616cf257fe5b6020026020010181905250888281518110616d0957fe5b6020026020010151848281518110616d1d57fe5b6020026020010181905250816001019150616d93565b898281518110616d3f57fe5b6020026020010151600001516001600160a01b03168c8481518110616d6057fe5b6020026020010151600001516001600160a01b03161015616d87578b8381518110616c3557fe5b898281518110616b2057fe5b600101616aec565b50929a91995090975050505050505050565b805182516000916001600160a01b039182169116148015616de7575081602001516001600160a01b031683602001516001600160a01b0316145b8015616e0c575081604001516001600160a01b031683604001516001600160a01b0316145b80156110af5750506060908101519101516001600160401b0390811691161490565b60125460135480821115616e7957805b82811015616e77576012805480616e5157fe5b600190038181906000526020600020016000616e6d91906178c6565b9055600101616e3e565b505b6000818310616e885781616e8a565b825b905060005b81811015616fa257616f4760128281548110616ea757fe5b600091825260209182902001805460408051601f6002600019610100600187161502019094169390930492830185900485028101850190915281815292830182828015616f355780601f10616f0a57610100808354040283529160200191616f35565b820191906000526020600020905b815481529060010190602001808311616f1857829003601f168201915b50505050506013838154811061338557fe5b616f9a5760138181548110616f5857fe5b9060005260206000200160128281548110616f6f57fe5b906000526020600020019080546001816001161561010002031660029004616f98929190617939565b505b600101616e8f565b5082821115610dbd57825b8281101561391d57601260138281548110616fc457fe5b6000918252602080832084546001818101875595855291909320929091018054617007949390920192909160026101009282161592909202600019011604617939565b50600101616fad565b601354600b548082111561705b57805b8281101561705957601380548061703357fe5b60019003818190600052602060002001600061704f91906178c6565b9055600101617020565b505b600081831061706a578161706c565b825b905060005b8181101561718b576171296013828154811061708957fe5b600091825260209182902001805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156171175780601f106170ec57610100808354040283529160200191617117565b820191906000526020600020905b8154815290600101906020018083116170fa57829003601f168201915b5050505050600b838154811061581357fe5b61718357600b818154811061713a57fe5b90600052602060002090601602016002016013828154811061715857fe5b906000526020600020019080546001816001161561010002031660029004617181929190617939565b505b600101617071565b5082821115610dbd57825b8281101561391d576013600b82815481106171ad57fe5b6000918252602080832084546001808201875595855291909320601692909202909201600290810180546171f595939094019390926000199082161561010002011604617939565b50600101617196565b600081848411156172225760405162461bcd60e51b8152600401610d9d919061812a565b505050900390565b6000818361724b5760405162461bcd60e51b8152600401610d9d919061812a565b50600083858161725757fe5b0495945050505050565b805160009061727257506000611b7d565b6020820151805160001a9060c082101561729157600092505050611b7d565b5060019392505050565b8051600090811a60808110156172b5576000915050611b7d565b60b88110806172d0575060c081108015906172d0575060f881105b156172df576001915050611b7d565b60c08110156172f35760b519019050611b7d565b60f519019050611b7d565b80516000908190811a608081101561731957600191506173d8565b60b881101561732e57607e19810191506173d8565b60c081101561737f57600060b78203600186019550806020036101000a8651049150600181018201935050808310156173795760405162461bcd60e51b8152600401610d9d906186da565b506173d8565b60f88110156173945760be19810191506173d8565b600060f78203600186019550806020036101000a8651049150600181018201935050808310156173d65760405162461bcd60e51b8152600401610d9d906186da565b505b5092915050565b80516000906173f057506000611b7d565b60008090506000617404846020015161729b565b602085015185519181019250015b8082101561743257617423826172fe565b82019150826001019250617412565b50909392505050565b805160009060151461744c57600080fd5b611c2d826166d9565b805160609061746357600080fd5b6000617472836020015161729b565b83516040805191839003808352601f19601f82011683016020019091529192506060908280156174a9576020820181803683370190505b509050600081602001905061612284876020015101828561774c565b604080516020808252818301909252606091829190602082018180368337505050602081018490529050600067ffffffffffffffff1984166175095750601861752d565b6fffffffffffffffffffffffffffffffff1984166175295750601061752d565b5060005b60208110156175635781818151811061754257fe5b01602001516001600160f81b0319161561755b57617563565b60010161752d565b60008160200390506060816040519080825280601f01601f191660200182016040528015617598576020820181803683370190505b5080830196909652508452509192915050565b6060815160011480156175dd5750607f60f81b826000815181106175cb57fe5b01602001516001600160f81b03191611155b156175e9575080611b7d565b611c2d6175fb8351608060ff1661767a565b835b6060806040519050835180825260208201818101602087015b8183101561762e578051835260209283019201617616565b50855184518101855292509050808201602086015b8183101561765b578051835260209283019201617643565b508651929092011591909101601f01601f191660405250905092915050565b60606801000000000000000083106176a45760405162461bcd60e51b8152600401610d9d906184d2565b604080516001808252818301909252606091602082018180368337019050509050603784116176fe5782840160f81b816000815181106176e057fe5b60200101906001600160f81b031916908160001a9053509050611c2d565b6060617709856174c5565b90508381510160370160f81b8260008151811061772257fe5b60200101906001600160f81b031916908160001a90535061774382826175fd565b95945050505050565b8061775657610dbd565b5b60208110617776578251825260209283019290910190601f1901617757565b915181516020939093036101000a6000190180199091169216919091179052565b604051806080016040528060008152602001600015158152602001606081526020016177c16179f2565b905290565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061780757805160ff1916838001178555617834565b82800160010185558215617834579182015b82811115617834578251825591602001919060010190617819565b50613010929150617a11565b82601381019282156178345791602002820182811115617834578251825591602001919060010190617819565b6040518060600160405280600060ff16815260200160608152602001606081525090565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a081019190915290565b50805460018160011615610100020316600290046000825580601f106178ec5750611d89565b601f016020900490600052602060002090810190611d899190617a11565b604051806040016040528061791d6179d8565b8152602001600081525090565b50611d89906013810190617a11565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106179725780548555617834565b8280016001018555821561783457600052602060002091601f016020900482015b82811115617834578254825591600101919060010190617993565b82601381019282156178345791820182811115617834578254825591600101919060010190617993565b604051806040016040528060008152602001600081525090565b6040518061026001604052806013906020820280368337509192915050565b612fb491905b808211156130105760008155600101617a17565b8035611c2d81618cf2565b60008083601f840112617a47578182fd5b5081356001600160401b03811115617a5d578182fd5b602083019150836020808302850101111561539557600080fd5b6000601f8381840112617a88578182fd5b8235617a9b617a9682618ca7565b618c81565b818152925060208084019085810160005b84811015617b2d578135880189603f820112617ac757600080fd5b838101356001600160401b03811115617adf57600080fd5b617af0818901601f19168601618c81565b81815260408c81848601011115617b0657600080fd5b82818501888401375060009181018601919091528552509282019290820190600101617aac565b50505050505092915050565b600082601f830112617b49578081fd5b8135617b57617a9682618ca7565b818152915060208083019084810181840286018201871015617b7857600080fd5b6000805b85811015617b2d5782356001600160401b0381168114617b9a578283fd5b85529383019391830191600101617b7c565b60008083601f840112617bbd578182fd5b5081356001600160401b03811115617bd3578182fd5b60208301915083602082850101111561539557600080fd5b600060208284031215617bfc578081fd5b81356110af81618cf2565b600060208284031215617c18578081fd5b81516110af81618cf2565b60008060008060408587031215617c38578283fd5b84356001600160401b0380821115617c4e578485fd5b617c5a88838901617a36565b90965094506020870135915080821115617c72578384fd5b50617c7f87828801617a36565b95989497509550505050565b600080600060608486031215617c9f578283fd5b83356001600160401b0380821115617cb5578485fd5b81860187601f820112617cc6578586fd5b80359250617cd6617a9684618ca7565b80848252602080830192508084018b828389028701011115617cf657898afd5b8994505b86851015617d2057617d0c8c82617a2b565b845260019490940193928101928101617cfa565b509097508801359350505080821115617d37578384fd5b617d4387838801617b39565b93506040860135915080821115617d58578283fd5b50617d6586828701617a77565b9150509250925092565b600060208284031215617d80578081fd5b815180151581146110af578182fd5b60008060208385031215617da1578182fd5b82356001600160401b03811115617db6578283fd5b617dc285828601617bac565b90969095509350505050565b60008060008060408587031215617de3578384fd5b84356001600160401b0380821115617df9578586fd5b617e0588838901617bac565b90965094506020870135915080821115617e1d578384fd5b50617c7f87828801617bac565b600060208284031215617e3b578081fd5b5035919050565b600060208284031215617e53578081fd5b5051919050565b60008060408385031215617e6c578182fd5b505080516020909101519092909150565b600080600060408486031215617e91578081fd5b833560ff81168114617ea1578182fd5b925060208401356001600160401b03811115617ebb578182fd5b617ec786828701617bac565b9497909650939450505050565b6000815180845260208085019450808401835b83811015617f0c5781516001600160a01b031687529582019590820190600101617ee7565b509495945050505050565b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b60008151808452617f59816020860160208601618cc6565b601f01601f19169290920160200192915050565b60008251617f7f818460208701618cc6565b9190910192915050565b918252602082015260400190565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b03968716815294861660208601529290941660408401526001600160401b03166060830152911515608082015260a081019190915260c00190565b6001600160a01b0392909216825260ff16602082015260400190565b6000602082526110af6020830184617ed4565b6000604082526180486040830185617ed4565b602083820381850152818551808452828401915082838202850101838801865b8381101561809657601f19878403018552618084838351617f41565b94860194925090850190600101618068565b50909998505050505050505050565b6000608082526180b86080830187617ed4565b828103602084810191909152865180835287820192820190845b818110156180ee578451835293830193918301916001016180d2565b505084810360408601526181028188617ed4565b93505050506001600160401b038316606083015295945050505050565b901515815260200190565b6000602082526110af6020830184617f41565b600060408252618151604083018688617f17565b8281036020840152618164818587617f17565b979650505050505050565b6020808252601c908201527f6c656e677468206f66206275726e526174696f206d69736d6174636800000000604082015260600190565b60208082526026908201527f6c656e677468206f66206d61784e756d4f664d61696e7461696e696e67206d696040820152650e6dac2e8c6d60d31b606082015260800190565b6020808252601b908201527f6261746368207472616e736665722072657475726e2066616c73650000000000604082015260600190565b6020808252602c908201527f6c656e677468206f66206d61784e756d4f66576f726b696e6743616e6469646160408201526b0e8cae640dad2e6dac2e8c6d60a31b606082015260800190565b60208082526025908201527f6c656e677468206f66206d61696e7461696e536c6173685363616c65206d69736040820152640dac2e8c6d60db1b606082015260800190565b6020808252818101527f6c656e677468206f66206e756d4f66436162696e657473206d69736d61746368604082015260600190565b60208082526019908201527f74686520636f6e7472616374206e6f7420696e69742079657400000000000000604082015260600190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b60208082526028908201527f746865206e756d4f66436162696e657473206d75737420626520677265617465604082015267072207468616e20360c41b606082015260800190565b60208082526039908201527f746865206e756d4f66436162696e657473206d757374206265206c657373207460408201527f68616e204d41585f4e554d5f4f465f56414c494441544f525300000000000000606082015260800190565b60208082526029908201527f746865206e756d626572206f662076616c696461746f727320657863656564206040820152681d1a19481b1a5b5a5d60ba1b606082015260800190565b60208082526022908201527f63616e206e6f7420646f207468697320747769636520696e206f6e6520626c6f604082015261636b60f01b606082015260800190565b6020808252602b908201527f746865206275726e526174696f206d757374206265206e6f206772656174657260408201526a0207468616e2031303030360ac1b606082015260800190565b6020808252600e908201526d696e70757420746f6f206c6f6e6760901b604082015260600190565b60208082526037908201527f746865206d61784e756d4f664d61696e7461696e696e67206d7573742062652060408201527f6c657373207468616e206e756d4f66436162696e657473000000000000000000606082015260800190565b6020808252602b908201527f6475706c696361746520636f6e73656e7375732061646472657373206f66207660408201526a185b1a59185d1bdc94d95d60aa1b606082015260800190565b60208082526033908201527f7468652073797374656d526577617264526174696f206d757374206265206e6f60408201527202067726561746572207468616e20313030303606c1b606082015260800190565b60208082526027908201527f7468652065787069726554696d655365636f6e64476170206973206f7574206f604082015266662072616e676560c81b606082015260800190565b6020808252601590820152746465706f7369742076616c7565206973207a65726f60581b604082015260600190565b60208082526049908201527f746865206d61784e756d4f66576f726b696e6743616e64696461746573206d7560408201527f7374206265206e6f742067726561746572207468616e206d61784e756d4f6643606082015268616e6469646174657360b81b608082015260a00190565b6020808252601190820152706164646974696f6e206f766572666c6f7760781b604082015260600190565b60208082526023908201527f63616e206e6f7420656e7465722054656d706f72617279204d61696e74656e616040820152626e636560e81b606082015260800190565b60208082526025908201527f6c656e677468206f66206a61696c2076616c696461746f7273206d757374206260408201526465206f6e6560d81b606082015260800190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252601490820152736761737072696365206973206e6f74207a65726f60601b604082015260600190565b6020808252602e908201527f746865206d6573736167652073656e646572206d75737420626520676f76657260408201526d1b985b98d94818dbdb9d1c9858dd60921b606082015260800190565b60208082526025908201527f6c656e677468206f66206d61784e756d4f6643616e64696461746573206d69736040820152640dac2e8c6d60db1b606082015260800190565b6020808252601290820152716e6f7420696e206d61696e74656e616e636560701b604082015260600190565b60208082526021908201527f666565206973206c6172676572207468616e2044555354595f494e434f4d494e6040820152604760f81b606082015260800190565b60208082526019908201527f74686520636f6e747261637420616c726561647920696e697400000000000000604082015260600190565b6020808252601a908201527f6c656e677468206973206c657373207468616e206f6666736574000000000000604082015260600190565b60208082526026908201527f6c656e677468206f662065787069726554696d655365636f6e64476170206d696040820152650e6dac2e8c6d60d31b606082015260800190565b60208082526017908201527f6f6e6c792063757272656e742076616c696461746f7273000000000000000000604082015260600190565b60208082526021908201527f6661696c656420746f20706172736520696e69742076616c696461746f7253656040820152601d60fa1b606082015260800190565b6020808252602f908201527f746865206d6573736167652073656e646572206d7573742062652063726f737360408201526e0818da185a5b8818dbdb9d1c9858dd608a1b606082015260800190565b6020808252602d908201527f746865206d6573736167652073656e646572206d75737420626520746865206260408201526c3637b1b590383937b23ab1b2b960991b606082015260800190565b60208082526024908201527f6c656e677468206f662073797374656d526577617264526174696f206d69736d6040820152630c2e8c6d60e31b606082015260800190565b6020808252603e908201527f746865206d61696e7461696e536c6173685363616c65206d757374206265206760408201527f726561746572207468616e203020616e64206c657373207468616e2031300000606082015260800190565b6020808252600d908201526c756e6b6e6f776e20706172616d60981b604082015260600190565b60208082526029908201527f746865206d6573736167652073656e646572206d75737420626520736c6173686040820152680818dbdb9d1c9858dd60ba1b606082015260800190565b6020808252601f908201527f746865206d73672073656e646572206d757374206265207374616b6548756200604082015260600190565b61ffff91909116815260200190565b90815260200190565b60008482528315156020830152606060408301526177436060830184617f41565b63ffffffff91909116815260200190565b60ff91909116815260200190565b600060ff8516825260406020830152617743604083018486617f17565b6040518181016001600160401b0381118282101715618c9f57600080fd5b604052919050565b60006001600160401b03821115618cbc578081fd5b5060209081020190565b60005b83811015618ce1578181015183820152602001618cc9565b8381111561391d5750506000910152565b6001600160a01b0381168114611d8957600080fdfef901a880f901a4f844941284214b9b9c85549ab3d2b972df0deef66ac2c9946ddf42a51534fc98d0c0a3b42c963cace8441ddf946ddf42a51534fc98d0c0a3b42c963cace8441ddf8410000000f84494a2959d3f95eae5dc7d70144ce1b73b403b7eb6e0948081ef03f1d9e0bb4a5bf38f16285c879299f07f948081ef03f1d9e0bb4a5bf38f16285c879299f07f8410000000f8449435552c16704d214347f29fa77f77da6d75d7c75294dc4973e838e3949c77aced16ac2315dc2d7ab11194dc4973e838e3949c77aced16ac2315dc2d7ab1118410000000f84494980a75ecd1309ea12fa2ed87a8744fbfc9b863d594cc6ac05c95a99c1f7b5f88de0e3486c82293b27094cc6ac05c95a99c1f7b5f88de0e3486c82293b2708410000000f84494f474cf03cceff28abc65c9cbae594f725c80e12d94e61a183325a18a173319dd8e19c8d069459e217594e61a183325a18a173319dd8e19c8d069459e21758410000000f84494b71b214cb885500844365e95cd9942c7276e7fd894d22ca3ba2141d23adab65ce4940eb7665ea2b6a794d22ca3ba2141d23adab65ce4940eb7665ea2b6a7841000000070e72399380dcfb0338abc03dc8d47f9f470ada8e769c9a78d644ea97385ecb20175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db90175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01dbb0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01dbaa164736f6c6343000604000a", }, { ContractAddr: common.HexToAddress(SlashContract), CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/cfc0bd1127186a917ddc38fd38d22903034d3f0b", - Code: "608060405234801561001057600080fd5b50600436106102f15760003560e01c8063831d65d11161019d578063c81b1662116100e9578063df8079e9116100a2578063f9a2bbc71161007c578063f9a2bbc714610575578063fc3e59081461057d578063fc4333cd14610585578063fd6a68791461058d576102f1565b8063df8079e91461055d578063e1c7392a14610565578063eb57bff71461056d576102f1565b8063c81b16621461050c578063c8509d8114610514578063c96be4cb14610527578063cc844b731461053a578063d2a42e4b1461054d578063dc927faf14610555576102f1565b8063aa82dce111610156578063ac0af62911610130578063ac0af629146104e1578063ac431751146104e9578063ae61dc3b146104fc578063c80d4b8f14610504576102f1565b8063aa82dce1146104c9578063aad56063146104d1578063ab51bb96146104d9576102f1565b8063831d65d11461048357806396713da9146104965780639dc092621461049e5780639e89ded8146104a6578063a1a11bf5146104b9578063a78abc16146104c1576102f1565b8063493279b11161025c5780636e47b4821161021557806375d47a0a116101ef57806375d47a0a146104635780637912a65d1461046b5780637942fd05146104735780638256ace61461047b576102f1565b80636e47b4821461044b57806370fd5bad14610453578063718a8aa81461045b576102f1565b8063493279b1146104035780634bf6c8821461041857806351e8067214610420578063567a372d146104285780635bfb49901461043057806362b72cf514610443576102f1565b806335aa2e44116102ae57806335aa2e441461039557806337c8dab9146103a8578063389f4f71146103c95780633a63f4b1146103de5780633dffc387146103e657806343756e5c146103fb576102f1565b80630bee7a67146102f65780630e2374a5146103145780631182b8751461032957806322d1e80b1461034957806323bac5a21461035e5780632796211814610380575b600080fd5b6102fe610595565b60405161030b9190613dd9565b60405180910390f35b61031c61059a565b60405161030b91906135ac565b61033c6103373660046134e2565b6105a0565b60405161030b91906135e4565b610351610606565b60405161030b91906135d9565b61037161036c3660046131f9565b61060f565b60405161030b93929190613dc1565b61039361038e36600461333f565b610632565b005b61031c6103a33660046134b2565b610a4c565b6103bb6103b63660046131f9565b610a73565b60405161030b929190613db3565b6103d1610aca565b60405161030b9190613d89565b6103d1610ad0565b6103ee610ad6565b60405161030b9190613dea565b61031c610adb565b61040b610ae1565b60405161030b9190613d7a565b6103ee610ae6565b61031c610aeb565b6103d1610af1565b61039361043e3660046131f9565b610af7565b6103d1610ba2565b61031c610ba8565b6103ee610bae565b6103ee610bb3565b61031c610bb8565b6103d1610bbe565b6103ee610bc3565b6103bb610bc8565b6103936104913660046134e2565b610bd2565b6103ee610ce5565b61031c610cea565b6103936104b4366004613231565b610cf0565b61031c610d1f565b610351610d25565b61031c610d2e565b61031c610d34565b6102fe610d3a565b6103d1610d3f565b6103936104f7366004613396565b610d44565b6103d16112f4565b6103d16112fb565b61031c611300565b6103936105223660046134e2565b611306565b6103936105353660046131f9565b611377565b6103936105483660046133ff565b6117f8565b6103d1611e43565b61031c611e48565b61031c611e4e565b610393611e54565b6103d1611e91565b61031c611e97565b6103ee611e9d565b610393611ea2565b61031c6122eb565b606481565b61200181565b606033612000146105cc5760405162461bcd60e51b81526004016105c390613bd2565b60405180910390fd5b60005460ff166105ee5760405162461bcd60e51b81526004016105c390613702565b60405162461bcd60e51b81526004016105c390613cc3565b60075460ff1681565b600260208190526000918252604090912080546001820154919092015460ff1683565b60005460ff166106545760405162461bcd60e51b81526004016105c390613702565b8151158015906106645750805115155b6106805760405162461bcd60e51b81526004016105c390613b30565b60408051600380825260808201909252606091816020015b60608152602001906001900390816106985790505090506106b960386122f1565b816000815181106106c657fe5b60200260200101819052506106da8361230c565b816001815181106106e757fe5b60200260200101819052506106fb8261230c565b8160028151811061070857fe5b6020026020010181905250606061071e82612362565b60408051603480825260608281019093529293509091602082018180368337019050509050815160346020830182602086016068600019fa61075f57600080fd5b50601481015160348201516040516333c1892360e21b81526000906120029063cf06248c906107929086906004016135ac565b60206040518083038186803b1580156107aa57600080fd5b505afa1580156107be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107e29190613215565b6001600160a01b031614156108095760405162461bcd60e51b81526004016105c3906136d2565b4281621baf8001101561082e5760405162461bcd60e51b81526004016105c390613673565b60606110006001600160a01b0316633b071dcc6040518163ffffffff1660e01b815260040160006040518083038186803b15801561086b57600080fd5b505afa15801561087f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526108a7919081019061325c565b50905060005b81518110156109ea578181815181106108c257fe5b60200260200101516001600160a01b0316846001600160a01b031614156109e2576006546040516309a99b4f60e41b815260646110028031909302049190639a99b4f09061091690339085906004016135c0565b602060405180830381600087803b15801561093057600080fd5b505af1158015610944573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061096891906134ca565b506110006001600160a01b03166335409f7f84848151811061098657fe5b60200260200101516040518263ffffffff1660e01b81526004016109aa91906135ac565b600060405180830381600087803b1580156109c457600080fd5b505af11580156109d8573d6000803e3d6000fd5b50505050506109ea565b6001016108ad565b50604051631871f7d960e31b81526120029063c38fbec890610a109086906004016135ac565b600060405180830381600087803b158015610a2a57600080fd5b505af1158015610a3e573d6000803e3d6000fd5b505050505050505050505050565b60018181548110610a5957fe5b6000918252602090912001546001600160a01b0316905081565b600080610a7e612fe0565b5050506001600160a01b0316600090815260026020818152604092839020835160608101855281548082526001830154938201849052919093015460ff16151592909301919091529091565b60055481565b60065481565b600181565b61100181565b603881565b600881565b61200081565b60045481565b3361100014610b185760405162461bcd60e51b81526004016105c390613991565b60005460ff16610b3a5760405162461bcd60e51b81526004016105c390613702565b61200063f7a251d7600b610b4d846123f3565b60006040518463ffffffff1660e01b8152600401610b6d93929190613df8565b600060405180830381600087803b158015610b8757600080fd5b505af1158015610b9b573d6000803e3d6000fd5b5050505050565b60035481565b61100581565b600281565b601081565b61100881565b600581565b600b81565b6004546005549091565b3361200014610bf35760405162461bcd60e51b81526004016105c390613bd2565b60005460ff16610c155760405162461bcd60e51b81526004016105c390613702565b610c1d613003565b6000610c5e84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506124bc92505050565b915091508015610ca55781516040517f7f0956d47419b9525356e7111652b653b530ec6f5096dccc04589bc38e62996791610c9891613dd9565b60405180910390a1610b9b565b81516040517f7d45f62d17443dd4547bca8a8112c60e2385669318dc300ec61a5d2492f262e791610cd591613dd9565b60405180910390a150505b505050565b600981565b61100781565b3361100014610d115760405162461bcd60e51b81526004016105c390613991565b610d1b828261253c565b5050565b61100681565b60005460ff1681565b61200281565b61300081565b600081565b600481565b60005460ff16610d665760405162461bcd60e51b81526004016105c390613702565b3361100714610d875760405162461bcd60e51b81526004016105c390613a69565b610df284848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260148152731b5a5cd9195b59585b9bdc951a1c995cda1bdb1960621b602082015291506127139050565b15610e8d5760208114610e175760405162461bcd60e51b81526004016105c39061391d565b604080516020601f8401819004810282018101909252828152600091610e559185858083850183828082843760009201919091525061276d92505050565b905060018110158015610e69575060055481105b610e855760405162461bcd60e51b81526004016105c390613b8d565b6004556112b1565b610ef384848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600f81526e19995b1bdb9e551a1c995cda1bdb19608a1b602082015291506127139050565b15610f8f5760208114610f185760405162461bcd60e51b81526004016105c390613ab7565b604080516020601f8401819004810282018101909252828152600091610f569185858083850183828082843760009201919091525061276d92505050565b90506103e88111158015610f6b575060045481115b610f875760405162461bcd60e51b81526004016105c3906137bb565b6005556112b1565b61100384848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601881527f66696e616c697479536c617368526577617264526174696f0000000000000000602082015291506127139050565b1561109d57602081146110285760405162461bcd60e51b81526004016105c390613cfa565b604080516020601f84018190048102820181019092528281526000916110669185858083850183828082843760009201919091525061276d92505050565b9050600a81101580156110795750606481105b6110955760405162461bcd60e51b81526004016105c3906138d1565b6006556112b1565b61111184848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601881527f656e61626c654d616c6963696f7573566f7465536c6173680000000000000000602082015291506127139050565b1561118857602081146111365760405162461bcd60e51b81526004016105c3906137f0565b604080516020601f8401819004810282018101909252828152611172919084848083850183828082843760009201919091525061277292505050565b6007805460ff19169115159190911790556112b1565b6111fc84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601781527f6d616c6963696f7573566f7465536c61736853636f7065000000000000000000602082015291506127139050565b1561129957602081146112215760405162461bcd60e51b81526004016105c390613629565b604080516020601f840181900481028201810190925282815260009161125f9185858083850183828082843760009201919091525061276d92505050565b905061708081101580156112755750620d2f0081105b6112915760405162461bcd60e51b81526004016105c390613739565b6008556112b1565b60405162461bcd60e51b81526004016105c390613c6e565b7f6cdb0ac70ab7f2e2d035cca5be60d89906f2dede7648ddbd7402189c1eeed17a848484846040516112e694939291906135f7565b60405180910390a150505050565b6201518081565b600a81565b61100281565b33612000146113275760405162461bcd60e51b81526004016105c390613bd2565b60005460ff166113495760405162461bcd60e51b81526004016105c390613702565b6040517f07db600eebe2ac176be8dcebad61858c245a4961bb32ca2aa3d159b09aa0810e90600090a1505050565b3341146113965760405162461bcd60e51b81526004016105c390613c21565b60005460ff166113b85760405162461bcd60e51b81526004016105c390613702565b60035443116113d95760405162461bcd60e51b81526004016105c390613d45565b3a156113f75760405162461bcd60e51b81526004016105c390613a0c565b60405163155853f360e21b8152611000906355614fcc9061141c9084906004016135ac565b60206040518083038186803b15801561143457600080fd5b505afa158015611448573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061146c919061331f565b611475576117f1565b61147d612fe0565b506001600160a01b0381166000908152600260208181526040928390208351606081018552815481526001820154928101929092529091015460ff1615801592820192909252906114d8576020810180516001019052611531565b60016040820181905260208201819052805480820182556000919091527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180546001600160a01b0319166001600160a01b0384161790555b43815260055460208201518161154357fe5b0661171f57600060208201526040516335409f7f60e01b8152611000906335409f7f906115749085906004016135ac565b600060405180830381600087803b15801561158e57600080fd5b505af11580156115a2573d6000803e3d6000fd5b50506040516333c1892360e21b815260009250612002915063cf06248c906115ce9086906004016135ac565b60206040518083038186803b1580156115e657600080fd5b505afa1580156115fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061161e9190613215565b6001600160a01b03161461163f5761163a82826020015161253c565b61171a565b61200063f7a251d7600b611652856123f3565b60006040518463ffffffff1660e01b815260040161167293929190613df8565b600060405180830381600087803b15801561168c57600080fd5b505af192505050801561169d575060015b61171a573d8080156116cb576040519150601f19603f3d011682016040523d82523d6000602084013e6116d0565b606091505b50826001600160a01b03167fd7bc86ff5d08c8ab043edec743302aba2520e6635172a428bc956721db9e2d1c836020015183604051611710929190613d92565b60405180910390a2505b61178b565b60045481602001518161172e57fe5b0661178b576040516375abf10160e11b81526110009063eb57e202906117589085906004016135ac565b600060405180830381600087803b15801561177257600080fd5b505af1158015611786573d6000803e3d6000fd5b505050505b6001600160a01b0382166000818152600260208181526040808420865181559186015160018301558581015191909201805460ff1916911515919091179055517fddb6012116e51abf5436d956a4f0ebd927e92c576ff96d7918290c8782291e3e9190a2505b5043600355565b60005460ff1661181a5760405162461bcd60e51b81526004016105c390613702565b60075460ff1661183c5760405162461bcd60e51b81526004016105c39061369d565b6006546118495760146006555b60085461185857620151806008555b60085481516040015143910111801561187c57504360085482602001516040015101115b6118985760405162461bcd60e51b81526004016105c390613c95565b8060200151602001518160000151602001511480156118c65750806020015160600151816000015160600151145b156118e35760405162461bcd60e51b81526004016105c390613964565b8051604081015190511080156119025750602081015160408101519051105b61191e5760405162461bcd60e51b81526004016105c39061389a565b6020810151518151511080156119435750806000015160400151816020015160400151105b8061196e575080515160208201515110801561196e5750806020015160400151816000015160400151105b806119885750806020015160400151816000015160400151145b6119a45760405162461bcd60e51b81526004016105c390613784565b604080820151905163ea321e4960e01b81526110009163ea321e49916119cd91906004016135e4565b60206040518083038186803b1580156119e557600080fd5b505afa1580156119f9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a1d919061331f565b611a395760405162461bcd60e51b81526004016105c390613a3a565b611a4b8160000151826040015161279a565b8015611a645750611a648160200151826040015161279a565b611a805760405162461bcd60e51b81526004016105c39061383b565b6060806110006001600160a01b0316633b071dcc6040518163ffffffff1660e01b815260040160006040518083038186803b158015611abe57600080fd5b505afa158015611ad2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611afa919081019061325c565b9150915060005b8151811015611c3757611b2b828281518110611b1957fe5b60200260200101518560400151612972565b15611c2f576006546040516309a99b4f60e41b815260646110028031909302049190639a99b4f090611b6390339085906004016135c0565b602060405180830381600087803b158015611b7d57600080fd5b505af1158015611b91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bb591906134ca565b506110006001600160a01b03166335409f7f858481518110611bd357fe5b60200260200101516040518263ffffffff1660e01b8152600401611bf791906135ac565b600060405180830381600087803b158015611c1157600080fd5b505af1158015611c25573d6000803e3d6000fd5b5050505050611c37565b600101611b01565b506040808401519051630f5b9efd60e31b815260009161200291637adcf7e891611c63916004016135e4565b60206040518083038186803b158015611c7b57600080fd5b505afa158015611c8f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cb39190613215565b6001600160a01b031614611d21576040808401519051630e9fbf5160e01b815261200291630e9fbf5191611cea91906004016135e4565b600060405180830381600087803b158015611d0457600080fd5b505af1158015611d18573d6000803e3d6000fd5b50505050610ce0565b6000611d32846040015160006129d6565b90506120006001600160a01b031663f7a251d7600b611d5487604001516129f2565b60006040518463ffffffff1660e01b8152600401611d7493929190613df8565b600060405180830381600087803b158015611d8e57600080fd5b505af1925050508015611d9f575060015b611e11573d808015611dcd576040519150601f19603f3d011682016040523d82523d6000602084013e611dd2565b606091505b50817fd58d1183100bd0932c0588f31c4205d6bc6168909765a96c41adbed3115f362882604051611e0391906135e4565b60405180910390a250611e3d565b60405181907f7b78aadacff901d8b63d0dba4f86283d4db8aef27f9ed70413dd860f1c9532b690600090a25b50505050565b601481565b61100381565b61200481565b60005460ff1615611e775760405162461bcd60e51b81526004016105c390613af9565b60056004819055600a90556000805460ff19166001179055565b60085481565b61100081565b600381565b3361100014611ec35760405162461bcd60e51b81526004016105c390613991565b60005460ff16611ee55760405162461bcd60e51b81526004016105c390613702565b600154611ef1576122e9565b600154600090600019015b8082116122bd576000805b8284101561202057611f17612fe0565b6002600060018781548110611f2857fe5b60009182526020808320909101546001600160a01b0316835282810193909352604091820190208151606081018352815481526001820154938101939093526002015460ff16151590820152600554909150600490048160200151111561200a57600460055481611f9557fe5b04816020015103816020018181525050806002600060018881548110611fb757fe5b6000918252602080832091909101546001600160a01b0316835282810193909352604091820190208351815591830151600183015591909101516002909101805460ff1916911515919091179055612014565b6001925050612020565b50836001019350611f07565b8284116121b75761202f612fe0565b600260006001868154811061204057fe5b60009182526020808320909101546001600160a01b0316835282810193909352604091820190208151606081018352815481526001820154938101939093526002015460ff161515908201526005549091506004900481602001511115612128576004600554816120ad57fe5b048160200151038160200181815250508060026000600187815481106120cf57fe5b6000918252602080832091909101546001600160a01b03168352828101939093526040918201902083518155918301516001808401919091559201516002909101805460ff191691151591909117905591506121b79050565b600260006001868154811061213957fe5b60009182526020808320909101546001600160a01b031683528201929092526040018120818155600181810192909255600201805460ff1916905580548061217d57fe5b600082815260209020810160001990810180546001600160a01b0319169055019055836121aa57506121b7565b5060001990920191612020565b8180156121c15750805b156122a05760026000600186815481106121d757fe5b60009182526020808320909101546001600160a01b031683528201929092526040018120818155600181810192909255600201805460ff1916905580548490811061221e57fe5b600091825260209091200154600180546001600160a01b03909216918690811061224457fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600180548061227d57fe5b600082815260209020810160001990810180546001600160a01b03191690550190555b826122ac5750506122bd565b505060019091019060001901611efc565b6040517fcfdb3b6ccaeccbdc68be3c59c840e3b3c90f0a7c491f5fff1cf56cfda200dd9c90600090a150505b565b61100481565b60606123046122ff83612a2d565b61230c565b90505b919050565b60608151600114801561233e5750607f60f81b8260008151811061232c57fe5b01602001516001600160f81b03191611155b1561234a575080612307565b61230461235c8351608060ff16612b13565b83612be5565b60608151600014156123835750604080516000815260208101909152612307565b60608260008151811061239257fe5b602002602001015190506000600190505b83518110156123d3576123c9828583815181106123bc57fe5b6020026020010151612be5565b91506001016123a3565b506123ec6123e6825160c060ff16612b13565b82612be5565b9392505050565b60408051600480825260a08201909252606091829190816020015b606081526020019060019003908161240e579050509050612437836001600160a01b0316612c62565b8160008151811061244457fe5b6020026020010181905250612458436122f1565b8160018151811061246557fe5b602090810291909101015261247a60386122f1565b8160028151811061248757fe5b602002602001018190525061249b426122f1565b816003815181106124a857fe5b60200260200101819052506123ec81612362565b6124c4613003565b60006124ce613003565b6124d6613015565b6124e76124e286612c85565b612caa565b90506000805b6124f683612cf4565b1561252f57806125225761251161250c84612d15565b612d63565b63ffffffff16845260019150612527565b61252f565b6001016124ed565b5091935090915050915091565b6040516375cc7d8960e01b8152612002906375cc7d89906125619085906004016135ac565b600060405180830381600087803b15801561257b57600080fd5b505af192505050801561258c575060015b610d1b576040516000815260443d10156125a857506000612645565b60046000803e60005160e01c6308c379a081146125c9576000915050612645565b60043d036004833e81513d602482011167ffffffffffffffff821117156125f557600092505050612645565b808301805167ffffffffffffffff811115612617576000945050505050612645565b8060208301013d860181111561263557600095505050505050612645565b601f01601f191660405250925050505b806126505750612699565b826001600160a01b03167fd7bc86ff5d08c8ab043edec743302aba2520e6635172a428bc956721db9e2d1c838360405161268b929190613d92565b60405180910390a25061270e565b3d8080156126c3576040519150601f19603f3d011682016040523d82523d6000602084013e6126c8565b606091505b50826001600160a01b03167fd7bc86ff5d08c8ab043edec743302aba2520e6635172a428bc956721db9e2d1c8383604051612704929190613d92565b60405180910390a2505b610d1b565b6000816040516020016127269190613590565b604051602081830303815290604052805190602001208360405160200161274d9190613590565b604051602081830303815290604052805190602001201490505b92915050565b015190565b8082015160009060ff81161561278c576001915081612792565b60009150815b505092915050565b60408051600480825260a0820190925260009160609190816020015b60608152602001906001900390816127b65750506040805160208082528183019092529192506060919080820181803683370190505090506127fb85600001516122f1565b8260008151811061280857fe5b60200260200101819052506128236020866020015183612de5565b61282c8161230c565b8260018151811061283957fe5b602002602001018190525061285185604001516122f1565b8260028151811061285e57fe5b60200260200101819052506128796020866060015183612de5565b6128828161230c565b8260038151811061288f57fe5b60200260200101819052506128b560206128a884612362565b8051906020012083612de5565b6040805160b080825260e082019092526060916020820181803683370190505090506128e5818360006020612df5565b6128f781876080015160206060612df5565b612905818660806030612df5565b604080516001808252818301909252606091602082018180368337019050509050815160016020830182602086016066600019fa61294257600080fd5b506001612950826000612e48565b60ff1614612965576000945050505050612767565b5060019695505050505050565b81518151600091600191811480831461298e57600092506129cc565b600160208701838101602088015b6002848385100114156129c75780518351146129bb5760009650600093505b6020928301920161299c565b505050505b5090949350505050565b600081602001835110156129e957600080fd5b50016020015190565b60408051600480825260a08201909252606091829190816020015b6060815260200190600190039081612a0d5790505090506124378361230c565b604080516020808252818301909252606091829190602082018180368337505050602081018490529050600067ffffffffffffffff198416612a7157506018612a95565b6fffffffffffffffffffffffffffffffff198416612a9157506010612a95565b5060005b6020811015612acb57818181518110612aaa57fe5b01602001516001600160f81b03191615612ac357612acb565b600101612a95565b60008160200390506060816040519080825280601f01601f191660200182016040528015612b00576020820181803683370190505b5080830196909652508452509192915050565b6060680100000000000000008310612b3d5760405162461bcd60e51b81526004016105c390613872565b60408051600180825281830190925260609160208201818036833701905050905060378411612b975782840160f81b81600081518110612b7957fe5b60200101906001600160f81b031916908160001a9053509050612767565b6060612ba285612a2d565b90508381510160370160f81b82600081518110612bbb57fe5b60200101906001600160f81b031916908160001a905350612bdc8282612be5565b95945050505050565b6060806040519050835180825260208201818101602087015b81831015612c16578051835260209283019201612bfe565b50855184518101855292509050808201602086015b81831015612c43578051835260209283019201612c2b565b508651929092011591909101601f01601f191660405250905092915050565b60408051600560a21b83186014820152603481019091526060906123ec8161230c565b612c8d613035565b506040805180820190915281518152602082810190820152919050565b612cb2613015565b612cbb82612e64565b612cc457600080fd5b6000612cd38360200151612e9e565b60208085015160408051808201909152868152920190820152915050919050565b6000612cfe613035565b505080518051602091820151919092015191011190565b612d1d613035565b612d2682612cf4565b612d2f57600080fd5b60208201516000612d3f82612f01565b80830160209586015260408051808201909152908152938401919091525090919050565b805160009015801590612d7857508151602110155b612d8157600080fd5b6000612d908360200151612e9e565b90508083600001511015612db65760405162461bcd60e51b81526004016105c390613b56565b825160208085015183018051928490039291831015612ddc57826020036101000a820491505b50949350505050565b9091018181526020918201910152565b60005b81811015610b9b57838181518110612e0c57fe5b602001015160f81c60f81b858480600101955081518110612e2957fe5b60200101906001600160f81b031916908160001a905350600101612df8565b60008160010183511015612e5b57600080fd5b50016001015190565b8051600090612e7557506000612307565b6020820151805160001a9060c0821015612e9457600092505050612307565b5060019392505050565b8051600090811a6080811015612eb8576000915050612307565b60b8811080612ed3575060c08110801590612ed3575060f881105b15612ee2576001915050612307565b60c0811015612ef65760b519019050612307565b60f519019050612307565b80516000908190811a6080811015612f1c5760019150612fd9565b60b8811015612f3157607e1981019150612fd9565b60c0811015612f8257600060b78203600186019550806020036101000a865104915060018101820193505080831015612f7c5760405162461bcd60e51b81526004016105c3906139e1565b50612fd9565b60f8811015612f975760be1981019150612fd9565b600060f78203600186019550806020036101000a8651049150600181018201935050808310156127925760405162461bcd60e51b81526004016105c3906139e1565b5092915050565b604051806060016040528060008152602001600081526020016000151581525090565b60408051602081019091526000815290565b6040518060400160405280613028613035565b8152602001600081525090565b604051806040016040528060008152602001600081525090565b600082601f83011261305f578081fd5b815161307261306d82613e4b565b613e24565b818152915060208083019084810160005b848110156130e8578151870188603f82011261309e57600080fd5b838101516130ae61306d82613e6b565b81815260408b818486010111156130c457600080fd5b6130d383888401838701613e8f565b50865250509282019290820190600101613083565b505050505092915050565b60008083601f840112613104578182fd5b50813567ffffffffffffffff81111561311b578182fd5b60208301915083602082850101111561313357600080fd5b9250929050565b600082601f83011261314a578081fd5b813561315861306d82613e6b565b915080825283602082850101111561316f57600080fd5b8060208401602084013760009082016020015292915050565b600060a08284031215613199578081fd5b6131a360a0613e24565b905081358152602082013560208201526040820135604082015260608201356060820152608082013567ffffffffffffffff8111156131e157600080fd5b6131ed8482850161313a565b60808301525092915050565b60006020828403121561320a578081fd5b81356123ec81613ebb565b600060208284031215613226578081fd5b81516123ec81613ebb565b60008060408385031215613243578081fd5b823561324e81613ebb565b946020939093013593505050565b6000806040838503121561326e578182fd5b825167ffffffffffffffff80821115613285578384fd5b81850186601f820112613296578485fd5b805192506132a661306d84613e4b565b80848252602080830192508084018a8283890287010111156132c6578889fd5b8894505b868510156132f15780516132dd81613ebb565b8452600194909401939281019281016132ca565b508801519096509350505080821115613308578283fd5b506133158582860161304f565b9150509250929050565b600060208284031215613330578081fd5b815180151581146123ec578182fd5b60008060408385031215613351578182fd5b823567ffffffffffffffff80821115613368578384fd5b6133748683870161313a565b93506020850135915080821115613389578283fd5b506133158582860161313a565b600080600080604085870312156133ab578182fd5b843567ffffffffffffffff808211156133c2578384fd5b6133ce888389016130f3565b909650945060208701359150808211156133e6578384fd5b506133f3878288016130f3565b95989497509550505050565b600060208284031215613410578081fd5b813567ffffffffffffffff80821115613427578283fd5b81840160608187031215613439578384fd5b6134436060613e24565b9250803582811115613453578485fd5b61345f87828401613188565b845250602081013582811115613473578485fd5b61347f87828401613188565b602085015250604081013582811115613496578485fd5b6134a28782840161313a565b6040850152509195945050505050565b6000602082840312156134c3578081fd5b5035919050565b6000602082840312156134db578081fd5b5051919050565b6000806000604084860312156134f6578081fd5b833560ff81168114613506578182fd5b9250602084013567ffffffffffffffff811115613521578182fd5b61352d868287016130f3565b9497909650939450505050565b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b6000815180845261357c816020860160208601613e8f565b601f01601f19169290920160200192915050565b600082516135a2818460208701613e8f565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b901515815260200190565b6000602082526123ec6020830184613564565b60006040825261360b60408301868861353a565b828103602084015261361e81858761353a565b979650505050505050565b6020808252602a908201527f6c656e677468206f66206d616c6963696f7573566f7465536c61736853636f706040820152690ca40dad2e6dac2e8c6d60b31b606082015260800190565b60208082526010908201526f195d9a59195b98d9481d1bdbc81bdb1960821b604082015260600190565b6020808252818101527f6d616c6963696f757320766f746520736c617368206e6f7420656e61626c6564604082015260600190565b6020808252601690820152751d985b1a59185d1bdc881b9bdd081b5a59dc985d195960521b604082015260600190565b60208082526019908201527f74686520636f6e7472616374206e6f7420696e69742079657400000000000000604082015260600190565b6020808252602b908201527f746865206d616c6963696f757320766f746520736c6173682073636f7065206f60408201526a7574206f662072616e676560a81b606082015260800190565b6020808252601a908201527f6e6f2076696f6c6174696f6e206f6620766f74652072756c6573000000000000604082015260600190565b6020808252818101527f7468652066656c6f6e795468726573686f6c64206f7574206f662072616e6765604082015260600190565b6020808252602b908201527f6c656e677468206f6620656e61626c654d616c6963696f7573566f7465536c6160408201526a0e6d040dad2e6dac2e8c6d60ab1b606082015260800190565b60208082526017908201527f766572696679207369676e6174757265206661696c6564000000000000000000604082015260600190565b6020808252600e908201526d696e70757420746f6f206c6f6e6760901b604082015260600190565b60208082526019908201527f7372634e756d20626967676572207468616e207461724e756d00000000000000604082015260600190565b6020808252602c908201527f7468652066696e616c69747920736c6173682072657761726420726174696f2060408201526b6f7574206f662072616e676560a01b606082015260800190565b60208082526027908201527f6c656e677468206f66206d697364656d65616e6f725468726573686f6c64206d6040820152660d2e6dac2e8c6d60cb1b606082015260800190565b60208082526013908201527274776f206964656e746963616c20766f74657360681b604082015260600190565b60208082526030908201527f746865206d6573736167652073656e646572206d7573742062652076616c696460408201526f185d1bdc94d95d0818dbdb9d1c9858dd60821b606082015260800190565b6020808252601190820152706164646974696f6e206f766572666c6f7760781b604082015260600190565b6020808252601490820152736761737072696365206973206e6f74207a65726f60601b604082015260600190565b6020808252601590820152741d9bdd195059191c881a5cc81b9bdd08199bdd5b99605a1b604082015260600190565b6020808252602e908201527f746865206d6573736167652073656e646572206d75737420626520676f76657260408201526d1b985b98d94818dbdb9d1c9858dd60921b606082015260800190565b60208082526022908201527f6c656e677468206f662066656c6f6e795468726573686f6c64206d69736d61746040820152610c6d60f31b606082015260800190565b60208082526019908201527f74686520636f6e747261637420616c726561647920696e697400000000000000604082015260600190565b6020808252600c908201526b32b6b83a3c903432b0b232b960a11b604082015260600190565b6020808252601a908201527f6c656e677468206973206c657373207468616e206f6666736574000000000000604082015260600190565b60208082526025908201527f746865206d697364656d65616e6f725468726573686f6c64206f7574206f662060408201526472616e676560d81b606082015260800190565b6020808252602f908201527f746865206d6573736167652073656e646572206d7573742062652063726f737360408201526e0818da185a5b8818dbdb9d1c9858dd608a1b606082015260800190565b6020808252602d908201527f746865206d6573736167652073656e646572206d75737420626520746865206260408201526c3637b1b590383937b23ab1b2b960991b606082015260800190565b6020808252600d908201526c756e6b6e6f776e20706172616d60981b604082015260600190565b6020808252601490820152731d185c99d95d08189b1bd8dac81d1bdbc81bdb1960621b604082015260600190565b6020808252601e908201527f7265636569766520756e65787065637465642073796e207061636b6167650000604082015260600190565b6020808252602b908201527f6c656e677468206f662066696e616c697479536c61736852657761726452617460408201526a0d2de40dad2e6dac2e8c6d60ab1b606082015260800190565b6020808252818101527f63616e206e6f7420736c61736820747769636520696e206f6e6520626c6f636b604082015260600190565b61ffff91909116815260200190565b90815260200190565b600083825260406020830152613dab6040830184613564565b949350505050565b918252602082015260400190565b92835260208301919091521515604082015260600190565b63ffffffff91909116815260200190565b60ff91909116815260200190565b600060ff8516825260606020830152613e146060830185613564565b9050826040830152949350505050565b60405181810167ffffffffffffffff81118282101715613e4357600080fd5b604052919050565b600067ffffffffffffffff821115613e61578081fd5b5060209081020190565b600067ffffffffffffffff821115613e81578081fd5b50601f01601f191660200190565b60005b83811015613eaa578181015183820152602001613e92565b83811115611e3d5750506000910152565b6001600160a01b0381168114613ed057600080fd5b5056fea164736f6c6343000604000a", + Code: "608060405234801561001057600080fd5b50600436106102f15760003560e01c8063831d65d11161019d578063c81b1662116100e9578063df8079e9116100a2578063f9a2bbc71161007c578063f9a2bbc714610575578063fc3e59081461057d578063fc4333cd14610585578063fd6a68791461058d576102f1565b8063df8079e91461055d578063e1c7392a14610565578063eb57bff71461056d576102f1565b8063c81b16621461050c578063c8509d8114610514578063c96be4cb14610527578063cc844b731461053a578063d2a42e4b1461054d578063dc927faf14610555576102f1565b8063aa82dce111610156578063ac0af62911610130578063ac0af629146104e1578063ac431751146104e9578063ae61dc3b146104fc578063c80d4b8f14610504576102f1565b8063aa82dce1146104c9578063aad56063146104d1578063ab51bb96146104d9576102f1565b8063831d65d11461048357806396713da9146104965780639dc092621461049e5780639e89ded8146104a6578063a1a11bf5146104b9578063a78abc16146104c1576102f1565b8063493279b11161025c5780636e47b4821161021557806375d47a0a116101ef57806375d47a0a146104635780637912a65d1461046b5780637942fd05146104735780638256ace61461047b576102f1565b80636e47b4821461044b57806370fd5bad14610453578063718a8aa81461045b576102f1565b8063493279b1146104035780634bf6c8821461041857806351e8067214610420578063567a372d146104285780635bfb49901461043057806362b72cf514610443576102f1565b806335aa2e44116102ae57806335aa2e441461039557806337c8dab9146103a8578063389f4f71146103c95780633a63f4b1146103de5780633dffc387146103e657806343756e5c146103fb576102f1565b80630bee7a67146102f65780630e2374a5146103145780631182b8751461032957806322d1e80b1461034957806323bac5a21461035e5780632796211814610380575b600080fd5b6102fe610595565b60405161030b9190613ddc565b60405180910390f35b61031c61059a565b60405161030b91906135af565b61033c6103373660046134e5565b6105a0565b60405161030b91906135e7565b610351610606565b60405161030b91906135dc565b61037161036c3660046131fc565b61060f565b60405161030b93929190613dc4565b61039361038e366004613342565b610632565b005b61031c6103a33660046134b5565b610a4d565b6103bb6103b63660046131fc565b610a74565b60405161030b929190613db6565b6103d1610acb565b60405161030b9190613d8c565b6103d1610ad1565b6103ee610ad7565b60405161030b9190613ded565b61031c610adc565b61040b610ae2565b60405161030b9190613d7d565b6103ee610ae8565b61031c610aed565b6103d1610af3565b61039361043e3660046131fc565b610af9565b6103d1610ba4565b61031c610baa565b6103ee610bb0565b6103ee610bb5565b61031c610bba565b6103d1610bc0565b6103ee610bc5565b6103bb610bca565b6103936104913660046134e5565b610bd4565b6103ee610ce7565b61031c610cec565b6103936104b4366004613234565b610cf2565b61031c610d21565b610351610d27565b61031c610d30565b61031c610d36565b6102fe610d3c565b6103d1610d41565b6103936104f7366004613399565b610d46565b6103d16112f6565b6103d16112fd565b61031c611302565b6103936105223660046134e5565b611308565b6103936105353660046131fc565b611379565b610393610548366004613402565b6117fa565b6103d1611e45565b61031c611e4a565b61031c611e50565b610393611e56565b6103d1611e93565b61031c611e99565b6103ee611e9f565b610393611ea4565b61031c6122ed565b606481565b61200181565b606033612000146105cc5760405162461bcd60e51b81526004016105c390613bd5565b60405180910390fd5b60005460ff166105ee5760405162461bcd60e51b81526004016105c390613705565b60405162461bcd60e51b81526004016105c390613cc6565b60075460ff1681565b600260208190526000918252604090912080546001820154919092015460ff1683565b60005460ff166106545760405162461bcd60e51b81526004016105c390613705565b8151158015906106645750805115155b6106805760405162461bcd60e51b81526004016105c390613b33565b60408051600380825260808201909252606091816020015b60608152602001906001900390816106985790505090506106ba6102ca6122f3565b816000815181106106c757fe5b60200260200101819052506106db8361230e565b816001815181106106e857fe5b60200260200101819052506106fc8261230e565b8160028151811061070957fe5b6020026020010181905250606061071f82612364565b60408051603480825260608281019093529293509091602082018180368337019050509050815160346020830182602086016068600019fa61076057600080fd5b50601481015160348201516040516333c1892360e21b81526000906120029063cf06248c906107939086906004016135af565b60206040518083038186803b1580156107ab57600080fd5b505afa1580156107bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107e39190613218565b6001600160a01b0316141561080a5760405162461bcd60e51b81526004016105c3906136d5565b4281621baf8001101561082f5760405162461bcd60e51b81526004016105c390613676565b60606110006001600160a01b0316633b071dcc6040518163ffffffff1660e01b815260040160006040518083038186803b15801561086c57600080fd5b505afa158015610880573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526108a8919081019061325f565b50905060005b81518110156109eb578181815181106108c357fe5b60200260200101516001600160a01b0316846001600160a01b031614156109e3576006546040516309a99b4f60e41b815260646110028031909302049190639a99b4f09061091790339085906004016135c3565b602060405180830381600087803b15801561093157600080fd5b505af1158015610945573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061096991906134cd565b506110006001600160a01b03166335409f7f84848151811061098757fe5b60200260200101516040518263ffffffff1660e01b81526004016109ab91906135af565b600060405180830381600087803b1580156109c557600080fd5b505af11580156109d9573d6000803e3d6000fd5b50505050506109eb565b6001016108ae565b50604051631871f7d960e31b81526120029063c38fbec890610a119086906004016135af565b600060405180830381600087803b158015610a2b57600080fd5b505af1158015610a3f573d6000803e3d6000fd5b505050505050505050505050565b60018181548110610a5a57fe5b6000918252602090912001546001600160a01b0316905081565b600080610a7f612fe3565b5050506001600160a01b0316600090815260026020818152604092839020835160608101855281548082526001830154938201849052919093015460ff16151592909301919091529091565b60055481565b60065481565b600181565b61100181565b6102ca81565b600881565b61200081565b60045481565b3361100014610b1a5760405162461bcd60e51b81526004016105c390613994565b60005460ff16610b3c5760405162461bcd60e51b81526004016105c390613705565b61200063f7a251d7600b610b4f846123f5565b60006040518463ffffffff1660e01b8152600401610b6f93929190613dfb565b600060405180830381600087803b158015610b8957600080fd5b505af1158015610b9d573d6000803e3d6000fd5b5050505050565b60035481565b61100581565b600281565b601081565b61100881565b600581565b600b81565b6004546005549091565b3361200014610bf55760405162461bcd60e51b81526004016105c390613bd5565b60005460ff16610c175760405162461bcd60e51b81526004016105c390613705565b610c1f613006565b6000610c6084848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506124bf92505050565b915091508015610ca75781516040517f7f0956d47419b9525356e7111652b653b530ec6f5096dccc04589bc38e62996791610c9a91613ddc565b60405180910390a1610b9d565b81516040517f7d45f62d17443dd4547bca8a8112c60e2385669318dc300ec61a5d2492f262e791610cd791613ddc565b60405180910390a150505b505050565b600981565b61100781565b3361100014610d135760405162461bcd60e51b81526004016105c390613994565b610d1d828261253f565b5050565b61100681565b60005460ff1681565b61200281565b61300081565b600081565b600481565b60005460ff16610d685760405162461bcd60e51b81526004016105c390613705565b3361100714610d895760405162461bcd60e51b81526004016105c390613a6c565b610df484848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260148152731b5a5cd9195b59585b9bdc951a1c995cda1bdb1960621b602082015291506127169050565b15610e8f5760208114610e195760405162461bcd60e51b81526004016105c390613920565b604080516020601f8401819004810282018101909252828152600091610e579185858083850183828082843760009201919091525061277092505050565b905060018110158015610e6b575060055481105b610e875760405162461bcd60e51b81526004016105c390613b90565b6004556112b3565b610ef584848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600f81526e19995b1bdb9e551a1c995cda1bdb19608a1b602082015291506127169050565b15610f915760208114610f1a5760405162461bcd60e51b81526004016105c390613aba565b604080516020601f8401819004810282018101909252828152600091610f589185858083850183828082843760009201919091525061277092505050565b90506103e88111158015610f6d575060045481115b610f895760405162461bcd60e51b81526004016105c3906137be565b6005556112b3565b61100584848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601881527f66696e616c697479536c617368526577617264526174696f0000000000000000602082015291506127169050565b1561109f576020811461102a5760405162461bcd60e51b81526004016105c390613cfd565b604080516020601f84018190048102820181019092528281526000916110689185858083850183828082843760009201919091525061277092505050565b9050600a811015801561107b5750606481105b6110975760405162461bcd60e51b81526004016105c3906138d4565b6006556112b3565b61111384848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601881527f656e61626c654d616c6963696f7573566f7465536c6173680000000000000000602082015291506127169050565b1561118a57602081146111385760405162461bcd60e51b81526004016105c3906137f3565b604080516020601f8401819004810282018101909252828152611174919084848083850183828082843760009201919091525061277592505050565b6007805460ff19169115159190911790556112b3565b6111fe84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601781527f6d616c6963696f7573566f7465536c61736853636f7065000000000000000000602082015291506127169050565b1561129b57602081146112235760405162461bcd60e51b81526004016105c39061362c565b604080516020601f84018190048102820181019092528281526000916112619185858083850183828082843760009201919091525061277092505050565b905061708081101580156112775750620d2f0081105b6112935760405162461bcd60e51b81526004016105c39061373c565b6008556112b3565b60405162461bcd60e51b81526004016105c390613c71565b7f6cdb0ac70ab7f2e2d035cca5be60d89906f2dede7648ddbd7402189c1eeed17a848484846040516112e894939291906135fa565b60405180910390a150505050565b6201518081565b600a81565b61100281565b33612000146113295760405162461bcd60e51b81526004016105c390613bd5565b60005460ff1661134b5760405162461bcd60e51b81526004016105c390613705565b6040517f07db600eebe2ac176be8dcebad61858c245a4961bb32ca2aa3d159b09aa0810e90600090a1505050565b3341146113985760405162461bcd60e51b81526004016105c390613c24565b60005460ff166113ba5760405162461bcd60e51b81526004016105c390613705565b60035443116113db5760405162461bcd60e51b81526004016105c390613d48565b3a156113f95760405162461bcd60e51b81526004016105c390613a0f565b60405163155853f360e21b8152611000906355614fcc9061141e9084906004016135af565b60206040518083038186803b15801561143657600080fd5b505afa15801561144a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061146e9190613322565b611477576117f3565b61147f612fe3565b506001600160a01b0381166000908152600260208181526040928390208351606081018552815481526001820154928101929092529091015460ff1615801592820192909252906114da576020810180516001019052611533565b60016040820181905260208201819052805480820182556000919091527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180546001600160a01b0319166001600160a01b0384161790555b43815260055460208201518161154557fe5b0661172157600060208201526040516335409f7f60e01b8152611000906335409f7f906115769085906004016135af565b600060405180830381600087803b15801561159057600080fd5b505af11580156115a4573d6000803e3d6000fd5b50506040516333c1892360e21b815260009250612002915063cf06248c906115d09086906004016135af565b60206040518083038186803b1580156115e857600080fd5b505afa1580156115fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116209190613218565b6001600160a01b0316146116415761163c82826020015161253f565b61171c565b61200063f7a251d7600b611654856123f5565b60006040518463ffffffff1660e01b815260040161167493929190613dfb565b600060405180830381600087803b15801561168e57600080fd5b505af192505050801561169f575060015b61171c573d8080156116cd576040519150601f19603f3d011682016040523d82523d6000602084013e6116d2565b606091505b50826001600160a01b03167fd7bc86ff5d08c8ab043edec743302aba2520e6635172a428bc956721db9e2d1c836020015183604051611712929190613d95565b60405180910390a2505b61178d565b60045481602001518161173057fe5b0661178d576040516375abf10160e11b81526110009063eb57e2029061175a9085906004016135af565b600060405180830381600087803b15801561177457600080fd5b505af1158015611788573d6000803e3d6000fd5b505050505b6001600160a01b0382166000818152600260208181526040808420865181559186015160018301558581015191909201805460ff1916911515919091179055517fddb6012116e51abf5436d956a4f0ebd927e92c576ff96d7918290c8782291e3e9190a2505b5043600355565b60005460ff1661181c5760405162461bcd60e51b81526004016105c390613705565b60075460ff1661183e5760405162461bcd60e51b81526004016105c3906136a0565b60065461184b5760146006555b60085461185a57620151806008555b60085481516040015143910111801561187e57504360085482602001516040015101115b61189a5760405162461bcd60e51b81526004016105c390613c98565b8060200151602001518160000151602001511480156118c85750806020015160600151816000015160600151145b156118e55760405162461bcd60e51b81526004016105c390613967565b8051604081015190511080156119045750602081015160408101519051105b6119205760405162461bcd60e51b81526004016105c39061389d565b6020810151518151511080156119455750806000015160400151816020015160400151105b8061197057508051516020820151511080156119705750806020015160400151816000015160400151105b8061198a5750806020015160400151816000015160400151145b6119a65760405162461bcd60e51b81526004016105c390613787565b604080820151905163ea321e4960e01b81526110009163ea321e49916119cf91906004016135e7565b60206040518083038186803b1580156119e757600080fd5b505afa1580156119fb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a1f9190613322565b611a3b5760405162461bcd60e51b81526004016105c390613a3d565b611a4d8160000151826040015161279d565b8015611a665750611a668160200151826040015161279d565b611a825760405162461bcd60e51b81526004016105c39061383e565b6060806110006001600160a01b0316633b071dcc6040518163ffffffff1660e01b815260040160006040518083038186803b158015611ac057600080fd5b505afa158015611ad4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611afc919081019061325f565b9150915060005b8151811015611c3957611b2d828281518110611b1b57fe5b60200260200101518560400151612975565b15611c31576006546040516309a99b4f60e41b815260646110028031909302049190639a99b4f090611b6590339085906004016135c3565b602060405180830381600087803b158015611b7f57600080fd5b505af1158015611b93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bb791906134cd565b506110006001600160a01b03166335409f7f858481518110611bd557fe5b60200260200101516040518263ffffffff1660e01b8152600401611bf991906135af565b600060405180830381600087803b158015611c1357600080fd5b505af1158015611c27573d6000803e3d6000fd5b5050505050611c39565b600101611b03565b506040808401519051630f5b9efd60e31b815260009161200291637adcf7e891611c65916004016135e7565b60206040518083038186803b158015611c7d57600080fd5b505afa158015611c91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cb59190613218565b6001600160a01b031614611d23576040808401519051630e9fbf5160e01b815261200291630e9fbf5191611cec91906004016135e7565b600060405180830381600087803b158015611d0657600080fd5b505af1158015611d1a573d6000803e3d6000fd5b50505050610ce2565b6000611d34846040015160006129d9565b90506120006001600160a01b031663f7a251d7600b611d5687604001516129f5565b60006040518463ffffffff1660e01b8152600401611d7693929190613dfb565b600060405180830381600087803b158015611d9057600080fd5b505af1925050508015611da1575060015b611e13573d808015611dcf576040519150601f19603f3d011682016040523d82523d6000602084013e611dd4565b606091505b50817fd58d1183100bd0932c0588f31c4205d6bc6168909765a96c41adbed3115f362882604051611e0591906135e7565b60405180910390a250611e3f565b60405181907f7b78aadacff901d8b63d0dba4f86283d4db8aef27f9ed70413dd860f1c9532b690600090a25b50505050565b601481565b61100381565b61200481565b60005460ff1615611e795760405162461bcd60e51b81526004016105c390613afc565b60056004819055600a90556000805460ff19166001179055565b60085481565b61100081565b600381565b3361100014611ec55760405162461bcd60e51b81526004016105c390613994565b60005460ff16611ee75760405162461bcd60e51b81526004016105c390613705565b600154611ef3576122eb565b600154600090600019015b8082116122bf576000805b8284101561202257611f19612fe3565b6002600060018781548110611f2a57fe5b60009182526020808320909101546001600160a01b0316835282810193909352604091820190208151606081018352815481526001820154938101939093526002015460ff16151590820152600554909150600490048160200151111561200c57600460055481611f9757fe5b04816020015103816020018181525050806002600060018881548110611fb957fe5b6000918252602080832091909101546001600160a01b0316835282810193909352604091820190208351815591830151600183015591909101516002909101805460ff1916911515919091179055612016565b6001925050612022565b50836001019350611f09565b8284116121b957612031612fe3565b600260006001868154811061204257fe5b60009182526020808320909101546001600160a01b0316835282810193909352604091820190208151606081018352815481526001820154938101939093526002015460ff16151590820152600554909150600490048160200151111561212a576004600554816120af57fe5b048160200151038160200181815250508060026000600187815481106120d157fe5b6000918252602080832091909101546001600160a01b03168352828101939093526040918201902083518155918301516001808401919091559201516002909101805460ff191691151591909117905591506121b99050565b600260006001868154811061213b57fe5b60009182526020808320909101546001600160a01b031683528201929092526040018120818155600181810192909255600201805460ff1916905580548061217f57fe5b600082815260209020810160001990810180546001600160a01b0319169055019055836121ac57506121b9565b5060001990920191612022565b8180156121c35750805b156122a25760026000600186815481106121d957fe5b60009182526020808320909101546001600160a01b031683528201929092526040018120818155600181810192909255600201805460ff1916905580548490811061222057fe5b600091825260209091200154600180546001600160a01b03909216918690811061224657fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600180548061227f57fe5b600082815260209020810160001990810180546001600160a01b03191690550190555b826122ae5750506122bf565b505060019091019060001901611efe565b6040517fcfdb3b6ccaeccbdc68be3c59c840e3b3c90f0a7c491f5fff1cf56cfda200dd9c90600090a150505b565b61100481565b606061230661230183612a30565b61230e565b90505b919050565b6060815160011480156123405750607f60f81b8260008151811061232e57fe5b01602001516001600160f81b03191611155b1561234c575080612309565b61230661235e8351608060ff16612b16565b83612be8565b60608151600014156123855750604080516000815260208101909152612309565b60608260008151811061239457fe5b602002602001015190506000600190505b83518110156123d5576123cb828583815181106123be57fe5b6020026020010151612be8565b91506001016123a5565b506123ee6123e8825160c060ff16612b16565b82612be8565b9392505050565b60408051600480825260a08201909252606091829190816020015b6060815260200190600190039081612410579050509050612439836001600160a01b0316612c65565b8160008151811061244657fe5b602002602001018190525061245a436122f3565b8160018151811061246757fe5b602090810291909101015261247d6102ca6122f3565b8160028151811061248a57fe5b602002602001018190525061249e426122f3565b816003815181106124ab57fe5b60200260200101819052506123ee81612364565b6124c7613006565b60006124d1613006565b6124d9613018565b6124ea6124e586612c88565b612cad565b90506000805b6124f983612cf7565b1561253257806125255761251461250f84612d18565b612d66565b63ffffffff1684526001915061252a565b612532565b6001016124f0565b5091935090915050915091565b6040516375cc7d8960e01b8152612002906375cc7d89906125649085906004016135af565b600060405180830381600087803b15801561257e57600080fd5b505af192505050801561258f575060015b610d1d576040516000815260443d10156125ab57506000612648565b60046000803e60005160e01c6308c379a081146125cc576000915050612648565b60043d036004833e81513d602482011167ffffffffffffffff821117156125f857600092505050612648565b808301805167ffffffffffffffff81111561261a576000945050505050612648565b8060208301013d860181111561263857600095505050505050612648565b601f01601f191660405250925050505b80612653575061269c565b826001600160a01b03167fd7bc86ff5d08c8ab043edec743302aba2520e6635172a428bc956721db9e2d1c838360405161268e929190613d95565b60405180910390a250612711565b3d8080156126c6576040519150601f19603f3d011682016040523d82523d6000602084013e6126cb565b606091505b50826001600160a01b03167fd7bc86ff5d08c8ab043edec743302aba2520e6635172a428bc956721db9e2d1c8383604051612707929190613d95565b60405180910390a2505b610d1d565b6000816040516020016127299190613593565b60405160208183030381529060405280519060200120836040516020016127509190613593565b604051602081830303815290604052805190602001201490505b92915050565b015190565b8082015160009060ff81161561278f576001915081612795565b60009150815b505092915050565b60408051600480825260a0820190925260009160609190816020015b60608152602001906001900390816127b95750506040805160208082528183019092529192506060919080820181803683370190505090506127fe85600001516122f3565b8260008151811061280b57fe5b60200260200101819052506128266020866020015183612de8565b61282f8161230e565b8260018151811061283c57fe5b602002602001018190525061285485604001516122f3565b8260028151811061286157fe5b602002602001018190525061287c6020866060015183612de8565b6128858161230e565b8260038151811061289257fe5b60200260200101819052506128b860206128ab84612364565b8051906020012083612de8565b6040805160b080825260e082019092526060916020820181803683370190505090506128e8818360006020612df8565b6128fa81876080015160206060612df8565b612908818660806030612df8565b604080516001808252818301909252606091602082018180368337019050509050815160016020830182602086016066600019fa61294557600080fd5b506001612953826000612e4b565b60ff161461296857600094505050505061276a565b5060019695505050505050565b81518151600091600191811480831461299157600092506129cf565b600160208701838101602088015b6002848385100114156129ca5780518351146129be5760009650600093505b6020928301920161299f565b505050505b5090949350505050565b600081602001835110156129ec57600080fd5b50016020015190565b60408051600480825260a08201909252606091829190816020015b6060815260200190600190039081612a105790505090506124398361230e565b604080516020808252818301909252606091829190602082018180368337505050602081018490529050600067ffffffffffffffff198416612a7457506018612a98565b6fffffffffffffffffffffffffffffffff198416612a9457506010612a98565b5060005b6020811015612ace57818181518110612aad57fe5b01602001516001600160f81b03191615612ac657612ace565b600101612a98565b60008160200390506060816040519080825280601f01601f191660200182016040528015612b03576020820181803683370190505b5080830196909652508452509192915050565b6060680100000000000000008310612b405760405162461bcd60e51b81526004016105c390613875565b60408051600180825281830190925260609160208201818036833701905050905060378411612b9a5782840160f81b81600081518110612b7c57fe5b60200101906001600160f81b031916908160001a905350905061276a565b6060612ba585612a30565b90508381510160370160f81b82600081518110612bbe57fe5b60200101906001600160f81b031916908160001a905350612bdf8282612be8565b95945050505050565b6060806040519050835180825260208201818101602087015b81831015612c19578051835260209283019201612c01565b50855184518101855292509050808201602086015b81831015612c46578051835260209283019201612c2e565b508651929092011591909101601f01601f191660405250905092915050565b60408051600560a21b83186014820152603481019091526060906123ee8161230e565b612c90613038565b506040805180820190915281518152602082810190820152919050565b612cb5613018565b612cbe82612e67565b612cc757600080fd5b6000612cd68360200151612ea1565b60208085015160408051808201909152868152920190820152915050919050565b6000612d01613038565b505080518051602091820151919092015191011190565b612d20613038565b612d2982612cf7565b612d3257600080fd5b60208201516000612d4282612f04565b80830160209586015260408051808201909152908152938401919091525090919050565b805160009015801590612d7b57508151602110155b612d8457600080fd5b6000612d938360200151612ea1565b90508083600001511015612db95760405162461bcd60e51b81526004016105c390613b59565b825160208085015183018051928490039291831015612ddf57826020036101000a820491505b50949350505050565b9091018181526020918201910152565b60005b81811015610b9d57838181518110612e0f57fe5b602001015160f81c60f81b858480600101955081518110612e2c57fe5b60200101906001600160f81b031916908160001a905350600101612dfb565b60008160010183511015612e5e57600080fd5b50016001015190565b8051600090612e7857506000612309565b6020820151805160001a9060c0821015612e9757600092505050612309565b5060019392505050565b8051600090811a6080811015612ebb576000915050612309565b60b8811080612ed6575060c08110801590612ed6575060f881105b15612ee5576001915050612309565b60c0811015612ef95760b519019050612309565b60f519019050612309565b80516000908190811a6080811015612f1f5760019150612fdc565b60b8811015612f3457607e1981019150612fdc565b60c0811015612f8557600060b78203600186019550806020036101000a865104915060018101820193505080831015612f7f5760405162461bcd60e51b81526004016105c3906139e4565b50612fdc565b60f8811015612f9a5760be1981019150612fdc565b600060f78203600186019550806020036101000a8651049150600181018201935050808310156127955760405162461bcd60e51b81526004016105c3906139e4565b5092915050565b604051806060016040528060008152602001600081526020016000151581525090565b60408051602081019091526000815290565b604051806040016040528061302b613038565b8152602001600081525090565b604051806040016040528060008152602001600081525090565b600082601f830112613062578081fd5b815161307561307082613e4e565b613e27565b818152915060208083019084810160005b848110156130eb578151870188603f8201126130a157600080fd5b838101516130b161307082613e6e565b81815260408b818486010111156130c757600080fd5b6130d683888401838701613e92565b50865250509282019290820190600101613086565b505050505092915050565b60008083601f840112613107578182fd5b50813567ffffffffffffffff81111561311e578182fd5b60208301915083602082850101111561313657600080fd5b9250929050565b600082601f83011261314d578081fd5b813561315b61307082613e6e565b915080825283602082850101111561317257600080fd5b8060208401602084013760009082016020015292915050565b600060a0828403121561319c578081fd5b6131a660a0613e27565b905081358152602082013560208201526040820135604082015260608201356060820152608082013567ffffffffffffffff8111156131e457600080fd5b6131f08482850161313d565b60808301525092915050565b60006020828403121561320d578081fd5b81356123ee81613ebe565b600060208284031215613229578081fd5b81516123ee81613ebe565b60008060408385031215613246578081fd5b823561325181613ebe565b946020939093013593505050565b60008060408385031215613271578182fd5b825167ffffffffffffffff80821115613288578384fd5b81850186601f820112613299578485fd5b805192506132a961307084613e4e565b80848252602080830192508084018a8283890287010111156132c9578889fd5b8894505b868510156132f45780516132e081613ebe565b8452600194909401939281019281016132cd565b50880151909650935050508082111561330b578283fd5b5061331885828601613052565b9150509250929050565b600060208284031215613333578081fd5b815180151581146123ee578182fd5b60008060408385031215613354578182fd5b823567ffffffffffffffff8082111561336b578384fd5b6133778683870161313d565b9350602085013591508082111561338c578283fd5b506133188582860161313d565b600080600080604085870312156133ae578182fd5b843567ffffffffffffffff808211156133c5578384fd5b6133d1888389016130f6565b909650945060208701359150808211156133e9578384fd5b506133f6878288016130f6565b95989497509550505050565b600060208284031215613413578081fd5b813567ffffffffffffffff8082111561342a578283fd5b8184016060818703121561343c578384fd5b6134466060613e27565b9250803582811115613456578485fd5b6134628782840161318b565b845250602081013582811115613476578485fd5b6134828782840161318b565b602085015250604081013582811115613499578485fd5b6134a58782840161313d565b6040850152509195945050505050565b6000602082840312156134c6578081fd5b5035919050565b6000602082840312156134de578081fd5b5051919050565b6000806000604084860312156134f9578081fd5b833560ff81168114613509578182fd5b9250602084013567ffffffffffffffff811115613524578182fd5b613530868287016130f6565b9497909650939450505050565b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b6000815180845261357f816020860160208601613e92565b601f01601f19169290920160200192915050565b600082516135a5818460208701613e92565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b901515815260200190565b6000602082526123ee6020830184613567565b60006040825261360e60408301868861353d565b828103602084015261362181858761353d565b979650505050505050565b6020808252602a908201527f6c656e677468206f66206d616c6963696f7573566f7465536c61736853636f706040820152690ca40dad2e6dac2e8c6d60b31b606082015260800190565b60208082526010908201526f195d9a59195b98d9481d1bdbc81bdb1960821b604082015260600190565b6020808252818101527f6d616c6963696f757320766f746520736c617368206e6f7420656e61626c6564604082015260600190565b6020808252601690820152751d985b1a59185d1bdc881b9bdd081b5a59dc985d195960521b604082015260600190565b60208082526019908201527f74686520636f6e7472616374206e6f7420696e69742079657400000000000000604082015260600190565b6020808252602b908201527f746865206d616c6963696f757320766f746520736c6173682073636f7065206f60408201526a7574206f662072616e676560a81b606082015260800190565b6020808252601a908201527f6e6f2076696f6c6174696f6e206f6620766f74652072756c6573000000000000604082015260600190565b6020808252818101527f7468652066656c6f6e795468726573686f6c64206f7574206f662072616e6765604082015260600190565b6020808252602b908201527f6c656e677468206f6620656e61626c654d616c6963696f7573566f7465536c6160408201526a0e6d040dad2e6dac2e8c6d60ab1b606082015260800190565b60208082526017908201527f766572696679207369676e6174757265206661696c6564000000000000000000604082015260600190565b6020808252600e908201526d696e70757420746f6f206c6f6e6760901b604082015260600190565b60208082526019908201527f7372634e756d20626967676572207468616e207461724e756d00000000000000604082015260600190565b6020808252602c908201527f7468652066696e616c69747920736c6173682072657761726420726174696f2060408201526b6f7574206f662072616e676560a01b606082015260800190565b60208082526027908201527f6c656e677468206f66206d697364656d65616e6f725468726573686f6c64206d6040820152660d2e6dac2e8c6d60cb1b606082015260800190565b60208082526013908201527274776f206964656e746963616c20766f74657360681b604082015260600190565b60208082526030908201527f746865206d6573736167652073656e646572206d7573742062652076616c696460408201526f185d1bdc94d95d0818dbdb9d1c9858dd60821b606082015260800190565b6020808252601190820152706164646974696f6e206f766572666c6f7760781b604082015260600190565b6020808252601490820152736761737072696365206973206e6f74207a65726f60601b604082015260600190565b6020808252601590820152741d9bdd195059191c881a5cc81b9bdd08199bdd5b99605a1b604082015260600190565b6020808252602e908201527f746865206d6573736167652073656e646572206d75737420626520676f76657260408201526d1b985b98d94818dbdb9d1c9858dd60921b606082015260800190565b60208082526022908201527f6c656e677468206f662066656c6f6e795468726573686f6c64206d69736d61746040820152610c6d60f31b606082015260800190565b60208082526019908201527f74686520636f6e747261637420616c726561647920696e697400000000000000604082015260600190565b6020808252600c908201526b32b6b83a3c903432b0b232b960a11b604082015260600190565b6020808252601a908201527f6c656e677468206973206c657373207468616e206f6666736574000000000000604082015260600190565b60208082526025908201527f746865206d697364656d65616e6f725468726573686f6c64206f7574206f662060408201526472616e676560d81b606082015260800190565b6020808252602f908201527f746865206d6573736167652073656e646572206d7573742062652063726f737360408201526e0818da185a5b8818dbdb9d1c9858dd608a1b606082015260800190565b6020808252602d908201527f746865206d6573736167652073656e646572206d75737420626520746865206260408201526c3637b1b590383937b23ab1b2b960991b606082015260800190565b6020808252600d908201526c756e6b6e6f776e20706172616d60981b604082015260600190565b6020808252601490820152731d185c99d95d08189b1bd8dac81d1bdbc81bdb1960621b604082015260600190565b6020808252601e908201527f7265636569766520756e65787065637465642073796e207061636b6167650000604082015260600190565b6020808252602b908201527f6c656e677468206f662066696e616c697479536c61736852657761726452617460408201526a0d2de40dad2e6dac2e8c6d60ab1b606082015260800190565b6020808252818101527f63616e206e6f7420736c61736820747769636520696e206f6e6520626c6f636b604082015260600190565b61ffff91909116815260200190565b90815260200190565b600083825260406020830152613dae6040830184613567565b949350505050565b918252602082015260400190565b92835260208301919091521515604082015260600190565b63ffffffff91909116815260200190565b60ff91909116815260200190565b600060ff8516825260606020830152613e176060830185613567565b9050826040830152949350505050565b60405181810167ffffffffffffffff81118282101715613e4657600080fd5b604052919050565b600067ffffffffffffffff821115613e64578081fd5b5060209081020190565b600067ffffffffffffffff821115613e84578081fd5b50601f01601f191660200190565b60005b83811015613ead578181015183820152602001613e95565b83811115611e3f5750506000910152565b6001600160a01b0381168114613ed357600080fd5b5056fea164736f6c6343000604000a", }, { ContractAddr: common.HexToAddress(StakingContract), CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/cfc0bd1127186a917ddc38fd38d22903034d3f0b", - Code: "6080604052600436106103a65760003560e01c8063718a8aa8116101e7578063b88a802f1161010d578063dc927faf116100a0578063f9a2bbc71161006f578063f9a2bbc714610ca0578063fa03f79714610cb5578063fc3e590814610692578063fd6a687914610cca576103ad565b8063dc927faf14610c1c578063df8079e914610c31578063edc1a5b014610c46578063f45fd80b14610c5b576103ad565b8063c81b1662116100dc578063c81b166214610b47578063c8509d8114610b5c578063d61b9b9314610be1578063d7ecfcb61461083a576103ad565b8063b88a802f14610acd578063baaafd3b14610ae2578063bf8546ca14610af7578063c2117d8214610b32576103ad565b80639dc0926211610185578063aad5606311610154578063aad56063146109c3578063ab51bb96146109d8578063ac431751146109ed578063b14315df14610ab8576103ad565b80639dc092621461095b578063a1a11bf514610970578063a78abc1614610985578063aa82dce1146109ae576103ad565b80637942fd05116101c15780637942fd05146108ac578063831d65d1146108c157806392b888a41461063e57806396713da914610946576103ad565b8063718a8aa81461084f57806375aca5931461086457806375d47a0a14610897576103ad565b8063413d9c3a116102cc5780635d17c8bd1161026a5780636bd8f804116102395780636bd8f804146107bc5780636e47b482146107f25780636fb7f7eb1461080757806370fd5bad1461083a576103ad565b80635d17c8bd146107685780635d499b1b1461077d57806362b171d21461079257806369b635b6146107a7576103ad565b80634bf6c882116102a65780634bf6c882146106fd5780634d99dd161461071257806351e806721461073e578063552aaf9314610753576103ad565b8063413d9c3a146106a757806343756e5c146106bc578063493279b1146106d1576103ad565b806311fe9ec611610344578063333ad3e711610313578063333ad3e71461066857806334c433541461067d5780633dffc3871461063e5780633fdfa7e414610692576103ad565b806311fe9ec6146105e0578063151817e31461061357806317c9efb01461063e5780632fdeb11114610653576103ad565b80630bee7a67116103805780630bee7a67146104725780630c795715146104a05780630e2374a5146104b55780631182b875146104e6576103ad565b8063026e402b146103b257806302985992146103e0578063047636d114610407576103ad565b366103ad57005b600080fd5b6103de600480360360408110156103c857600080fd5b506001600160a01b038135169060200135610cdf565b005b3480156103ec57600080fd5b506103f5610d1c565b60408051918252519081900360200190f35b34801561041357600080fd5b5061043a6004803603602081101561042a57600080fd5b50356001600160a01b0316610d22565b6040518082606080838360005b8381101561045f578181015183820152602001610447565b5050505090500191505060405180910390f35b34801561047e57600080fd5b50610487610d76565b6040805163ffffffff9092168252519081900360200190f35b3480156104ac57600080fd5b506103f5610d7b565b3480156104c157600080fd5b506104ca610d81565b604080516001600160a01b039092168252519081900360200190f35b3480156104f257600080fd5b5061056b6004803603604081101561050957600080fd5b60ff8235169190810190604081016020820135600160201b81111561052d57600080fd5b82018360208201111561053f57600080fd5b803590602001918460018302840111600160201b8311171561056057600080fd5b509092509050610d87565b6040805160208082528351818301528351919283929083019185019080838360005b838110156105a557818101518382015260200161058d565b50505050905090810190601f1680156105d25780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156105ec57600080fd5b506103f56004803603602081101561060357600080fd5b50356001600160a01b0316610f43565b34801561061f57600080fd5b50610628610f5e565b6040805160ff9092168252519081900360200190f35b34801561064a57600080fd5b50610628610f63565b34801561065f57600080fd5b506103f5610f68565b34801561067457600080fd5b50610487610f6e565b34801561068957600080fd5b506103f5610f73565b34801561069e57600080fd5b50610628610f7e565b3480156106b357600080fd5b506103f5610f83565b3480156106c857600080fd5b506104ca610f8a565b3480156106dd57600080fd5b506106e6610f90565b6040805161ffff9092168252519081900360200190f35b34801561070957600080fd5b50610628610f95565b6103de6004803603604081101561072857600080fd5b506001600160a01b038135169060200135610f9a565b34801561074a57600080fd5b506104ca6115c7565b34801561075f57600080fd5b506106286115cd565b34801561077457600080fd5b506103f56115d2565b34801561078957600080fd5b506103f56115d8565b34801561079e57600080fd5b506103f56115e1565b3480156107b357600080fd5b506103f5611781565b6103de600480360360608110156107d257600080fd5b506001600160a01b03813581169160208101359091169060400135610cdf565b3480156107fe57600080fd5b506104ca611787565b34801561081357600080fd5b506103f56004803603602081101561082a57600080fd5b50356001600160a01b031661178d565b34801561084657600080fd5b506106286117a8565b34801561085b57600080fd5b506106286117ad565b34801561087057600080fd5b506103f56004803603602081101561088757600080fd5b50356001600160a01b03166117b2565b3480156108a357600080fd5b506104ca6117cd565b3480156108b857600080fd5b506106286117d3565b3480156108cd57600080fd5b506103de600480360360408110156108e457600080fd5b60ff8235169190810190604081016020820135600160201b81111561090857600080fd5b82018360208201111561091a57600080fd5b803590602001918460018302840111600160201b8311171561093b57600080fd5b5090925090506117d8565b34801561095257600080fd5b50610628611aa0565b34801561096757600080fd5b506104ca611aa5565b34801561097c57600080fd5b506104ca611aab565b34801561099157600080fd5b5061099a611ab1565b604080519115158252519081900360200190f35b3480156109ba57600080fd5b506104ca611aba565b3480156109cf57600080fd5b506104ca611ac0565b3480156109e457600080fd5b506104876115cd565b3480156109f957600080fd5b506103de60048036036040811015610a1057600080fd5b810190602081018135600160201b811115610a2a57600080fd5b820183602082011115610a3c57600080fd5b803590602001918460018302840111600160201b83111715610a5d57600080fd5b919390929091602081019035600160201b811115610a7a57600080fd5b820183602082011115610a8c57600080fd5b803590602001918460018302840111600160201b83111715610aad57600080fd5b509092509050611ac6565b348015610ac457600080fd5b50610628612258565b348015610ad957600080fd5b506103f561225d565b348015610aee57600080fd5b506103f56123fa565b348015610b0357600080fd5b506103f560048036036040811015610b1a57600080fd5b506001600160a01b0381358116916020013516612405565b348015610b3e57600080fd5b506103f5612432565b348015610b5357600080fd5b506104ca612438565b348015610b6857600080fd5b506103de60048036036040811015610b7f57600080fd5b60ff8235169190810190604081016020820135600160201b811115610ba357600080fd5b820183602082011115610bb557600080fd5b803590602001918460018302840111600160201b83111715610bd657600080fd5b50909250905061243e565b348015610bed57600080fd5b506103f560048036036040811015610c0457600080fd5b506001600160a01b0381358116916020013516612661565b348015610c2857600080fd5b506104ca61268c565b348015610c3d57600080fd5b506104ca612692565b348015610c5257600080fd5b506103f5612698565b348015610c6757600080fd5b506103f560048036036060811015610c7e57600080fd5b506001600160a01b0381358116916020810135821691604090910135166126a5565b348015610cac57600080fd5b506104ca6126da565b348015610cc157600080fd5b506103f56126e0565b348015610cd657600080fd5b506104ca6126e6565b6040805162461bcd60e51b815260206004820152600d60248201526c1b9bdd081cdd5c1c1bdc9d1959609a1b604482015290519081900360640190fd5b60035481565b610d2a614621565b610d32614621565b6001600160a01b0383166000818152600b60209081526040808320548552838352600c82528083205485830152928252600d9052819020549082015290505b919050565b606481565b6108fc81565b61200181565b60603361200014610dc95760405162461bcd60e51b815260040180806020018281038252602f815260200180614804602f913960400191505060405180910390fd5b60005460ff16610e0c576638d7ea4c6800006001908155662386f26fc1000060025568056bc75e2d631000006003556108fc6011556000805460ff191690911790555b610e1461463f565b610e5b610e5685858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506126ec92505050565b612711565b90506000610e70610e6b8361275b565b6127a9565b90506000606060ff831660041415610e9557610e8b84612860565b9092509050610eec565b60ff831660051415610eaa57610e8b84612a40565b6040805162461bcd60e51b8152602060048201526012602482015271756e6b6e6f776e206576656e74207479706560701b604482015290519081900360640190fd5b63ffffffff821615610f38576040805163ffffffff84168152905160ff8516917f391d6e5ea6ab6c49b9a0abb1782cae5def8d711f973b00c729658c0b2a80b31b919081900360200190a25b979650505050505050565b6001600160a01b031660009081526006602052604090205490565b600581565b600181565b60015481565b606581565b662386f26fc1000081565b600381565b620a8c0081565b61100181565b603881565b600881565b60105460ff1660021415610fe6576040805162461bcd60e51b815260206004820152600e60248201526d4e6f2072652d656e7472616e637960901b604482015290519081900360640190fd5b6010805460ff19166002179055806402540be400340615801561100e57506402540be4008106155b61105f576040805162461bcd60e51b815260206004820152601c60248201527f707265636973696f6e206c6f737320696e20636f6e76657273696f6e00000000604482015290519081900360640190fd5b60005460ff166110a2576638d7ea4c6800006001908155662386f26fc1000060025568056bc75e2d631000006003556108fc6011556000805460ff191690911790555b6001543410156110f0576040805162461bcd60e51b81526020600482015260146024820152736e6f7420656e6f7567682072656c61792066656560601b604482015290519081900360640190fd5b6003548210156111ab573360009081526005602090815260408083206001600160a01b03871684529091529020548214611162576040805162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a5908185b5bdd5b9d60921b604482015290519081900360640190fd5b60025482116111ab576040805162461bcd60e51b815260206004820152601060248201526f6e6f7420656e6f7567682066756e647360801b604482015290519081900360640190fd5b3360009081526007602090815260408083206001600160a01b0387168452909152902054421015611223576040805162461bcd60e51b815260206004820152601a60248201527f70656e64696e6720756e64656c65676174696f6e206578697374000000000000604482015290519081900360640190fd5b604080518082018252601081526f6e6f7420656e6f7567682066756e647360801b602080830191909152336000908152600582528381206001600160a01b03881682529091529182205461127e91859063ffffffff612c5c16565b905080156112c65760025481116112c65760405162461bcd60e51b81526004018080602001828103825260258152602001806147df6025913960400191505060405180910390fd5b60006112dd846402540be40063ffffffff612cf316565b60025490915034906000906112f990839063ffffffff612d3c16565b6040805160038082526080820190925291925060609190816020015b606081526020019060019003908161131557905050905061133533612d7e565b8160008151811061134257fe5b602002602001018190525061135f886001600160a01b0316612d7e565b8160018151811061136c57fe5b602002602001018190525061138084612da1565b8160028151811061138d57fe5b602002602001018190525060606113ad60026113a884612db4565b612e3e565b8051602080830191909120600f80546000908152600a845260408082209390935581546001908101909255338152600c90935291208054909101905590506113fe42620a8c0063ffffffff612ec416565b3360009081526007602090815260408083206001600160a01b038e16845290915290205561200063f7a251d7601083611442876402540be40063ffffffff612cf316565b6040518463ffffffff1660e01b8152600401808460ff1660ff16815260200180602001838152602001828103825284818151815260200191508051906020019080838360005b838110156114a0578181015183820152602001611488565b50505050905090810190601f1680156114cd5780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b1580156114ee57600080fd5b505af1158015611502573d6000803e3d6000fd5b5050604051611004925085156108fc02915085906000818181858888f19350505050158015611535573d6000803e3d6000fd5b506002546040516110029180156108fc02916000818181858888f19350505050158015611566573d6000803e3d6000fd5b50604080518981526020810185905281516001600160a01b038c169233927fdf0b6ac27f3f3bb31cee3dab0f4fe40cc19c6a3f8daaec52e06b261e58a12519929081900390910190a350506010805460ff1916600117905550505050505050565b61200081565b600081565b60025481565b6402540be40081565b60105460009060ff1660021415611630576040805162461bcd60e51b815260206004820152600e60248201526d4e6f2072652d656e7472616e637960901b604482015290519081900360640190fd5b506010805460ff191660021790553360009081526008602052604090205480611697576040805162461bcd60e51b81526020600482015260146024820152736e6f20756e64656c6567617465642066756e647360601b604482015290519081900360640190fd5b336000818152600860205260408082208290556011549051919291849084818181858888f193505050503d80600081146116ed576040519150601f19603f3d011682016040523d82523d6000602084013e6116f2565b606091505b505090508061173a576040805162461bcd60e51b815260206004820152600f60248201526e1d1c985b9cd9995c8819985a5b1959608a1b604482015290519081900360640190fd5b60408051838152905133917fc712d133b8d448221aaed2198ed1f0db6dfc860fb01bc3a630916fe6cbef946f919081900360200190a2506010805460ff1916600117905590565b60035490565b61100581565b6001600160a01b031660009081526004602052604090205490565b600281565b601081565b6001600160a01b031660009081526008602052604090205490565b61100881565b600b81565b33612000146118185760405162461bcd60e51b815260040180806020018281038252602f815260200180614804602f913960400191505060405180910390fd5b60005460ff1661185b576638d7ea4c6800006001908155662386f26fc1000060025568056bc75e2d631000006003556108fc6011556000805460ff191690911790555b61186361463f565b6118a5610e5684848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506126ec92505050565b905060008060606000805b6118b986612f1e565b1561192457806118d6576118cf610e6b8761275b565b945061191c565b80600114156118f2576118eb610e6b8761275b565b935061191c565b80600214156119175761190c6119078761275b565b612f3f565b92506001915061191c565b611924565b6001016118b0565b8161196a576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b61197383612faf565b6119b6576040805162461bcd60e51b815260206004820152600f60248201526e0eee4dedcce40e0c2c6d640d0c2e6d608b1b604482015290519081900360640190fd5b6119c2610e56846126ec565b955060006119d2610e6b8861275b565b90506119dc61463f565b6119e588612f1e565b15611a0857611a01610e566119fc6119078b61275b565b6126ec565b9050611a49565b6040805162461bcd60e51b8152602060048201526011602482015270656d7074792061636b207061636b61676560781b604482015290519081900360640190fd5b60ff821660011415611a6557611a60818888613003565b611a93565b60ff821660021415611a7c57611a608188886133ba565b60ff821660031415610eaa57611a60818888613687565b5050505050505050505050565b600981565b61100781565b61100681565b60005460ff1681565b61200281565b61300081565b60005460ff16611b1d576040805162461bcd60e51b815260206004820152601960248201527f74686520636f6e7472616374206e6f7420696e69742079657400000000000000604482015290519081900360640190fd5b3361100714611b5d5760405162461bcd60e51b815260040180806020018281038252602e815260200180614755602e913960400191505060405180910390fd5b611bbe84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600a81526972656c6179657246656560b01b602082015291506139ec9050565b15611d245760208114611c18576040805162461bcd60e51b815260206004820152601d60248201527f6c656e677468206f662072656c61796572466565206d69736d61746368000000604482015290519081900360640190fd5b604080516020601f8401819004810282018101909252828152600091611c5691858580838501838280828437600092019190915250613ad392505050565b90506003548110611c985760405162461bcd60e51b815260040180806020018281038252602e815260200180614783602e913960400191505060405180910390fd5b6002548111611cd85760405162461bcd60e51b815260040180806020018281038252602e8152602001806147b1602e913960400191505060405180910390fd5b6402540be400810615611d1c5760405162461bcd60e51b815260040180806020018281038252602c815260200180614729602c913960400191505060405180910390fd5b6001556121c6565b611d8884848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600d81526c62534352656c6179657246656560981b602082015291506139ec9050565b15611eea5760208114611de2576040805162461bcd60e51b815260206004820181905260248201527f6c656e677468206f662062534352656c61796572466565206d69736d61746368604482015290519081900360640190fd5b604080516020601f8401819004810282018101909252828152600091611e2091858580838501838280828437600092019190915250613ad392505050565b905080611e5e5760405162461bcd60e51b81526004018080602001828103825260228152602001806148336022913960400191505060405180910390fd5b6001548110611e9e5760405162461bcd60e51b815260040180806020018281038252602e8152602001806146a9602e913960400191505060405180910390fd5b6402540be400810615611ee25760405162461bcd60e51b815260040180806020018281038252602f81526020018061467a602f913960400191505060405180910390fd5b6002556121c6565b611f4e84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600d81526c36b4b72232b632b3b0ba34b7b760991b602082015291506139ec9050565b156120305760208114611fa8576040805162461bcd60e51b815260206004820181905260248201527f6c656e677468206f66206d696e44656c65676174696f6e206d69736d61746368604482015290519081900360640190fd5b604080516020601f8401819004810282018101909252828152600091611fe691858580838501838280828437600092019190915250613ad392505050565b905060015481116120285760405162461bcd60e51b81526004018080602001828103825260318152602001806146d76031913960400191505060405180910390fd5b6003556121c6565b61209284848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600b81526a7472616e7366657247617360a81b602082015291506139ec9050565b1561218957602081146120ec576040805162461bcd60e51b815260206004820152601e60248201527f6c656e677468206f66207472616e73666572476173206d69736d617463680000604482015290519081900360640190fd5b604080516020601f840181900481028201810190925282815260009161212a91858580838501838280828437600092019190915250613ad392505050565b905060008111612181576040805162461bcd60e51b815260206004820152601e60248201527f746865207472616e736665724761732063616e6e6f74206265207a65726f0000604482015290519081900360640190fd5b6011556121c6565b6040805162461bcd60e51b815260206004820152600d60248201526c756e6b6e6f776e20706172616d60981b604482015290519081900360640190fd5b7f6cdb0ac70ab7f2e2d035cca5be60d89906f2dede7648ddbd7402189c1eeed17a848484846040518080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600083820152604051601f909101601f19169092018290039850909650505050505050a150505050565b600481565b60105460009060ff16600214156122ac576040805162461bcd60e51b815260206004820152600e60248201526d4e6f2072652d656e7472616e637960901b604482015290519081900360640190fd5b506010805460ff191660021790553360009081526006602052604090205480612310576040805162461bcd60e51b81526020600482015260116024820152701b9bc81c195b991a5b99c81c995dd85c99607a1b604482015290519081900360640190fd5b336000818152600660205260408082208290556011549051919291849084818181858888f193505050503d8060008114612366576040519150601f19603f3d011682016040523d82523d6000602084013e61236b565b606091505b50509050806123b3576040805162461bcd60e51b815260206004820152600f60248201526e1d1c985b9cd9995c8819985a5b1959608a1b604482015290519081900360640190fd5b60408051838152905133917f83b78188b13346b2ffb484da70d42ee27de7fbf9f2bd8045269e10ed643ccd76919081900360200190a2506010805460ff1916600117905590565b6638d7ea4c68000081565b6001600160a01b038083166000908152600760209081526040808320938516835292905220545b92915050565b60015490565b61100281565b336120001461247e5760405162461bcd60e51b815260040180806020018281038252602f815260200180614804602f913960400191505060405180910390fd5b60005460ff166124c1576638d7ea4c6800006001908155662386f26fc1000060025568056bc75e2d631000006003556108fc6011556000805460ff191690911790555b61250082828080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612faf92505050565b612543576040805162461bcd60e51b815260206004820152600f60248201526e0eee4dedcce40e0c2c6d640d0c2e6d608b1b604482015290519081900360640190fd5b61254b61463f565b61258d610e5684848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506126ec92505050565b9050600061259d610e6b8361275b565b90506125a761463f565b6125b083612f1e565b156125ce576125c7610e566119fc6119078661275b565b9050612614565b6040805162461bcd60e51b8152602060048201526016602482015275656d707479206661696c2061636b207061636b61676560501b604482015290519081900360640190fd5b60ff82166001141561262e5761262981613ad8565b612658565b60ff8216600214156126435761262981613cf2565b60ff821660031415610eaa5761262981613e1c565b5050505b505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b61100381565b61200481565b68056bc75e2d6310000081565b6001600160a01b0392831660009081526009602090815260408083209486168352938152838220929094168152925290205490565b61100081565b60115481565b61100481565b6126f461465f565b506040805180820190915281518152602082810190820152919050565b61271961463f565b61272282613f81565b61272b57600080fd5b600061273a8360200151613fbb565b60208085015160408051808201909152868152920190820152915050919050565b61276361465f565b61276c82612f1e565b61277557600080fd5b602082015160006127858261401e565b80830160209586015260408051808201909152908152938401919091525090919050565b8051600090158015906127be57508151602110155b6127c757600080fd5b60006127d68360200151613fbb565b90508083600001511015612831576040805162461bcd60e51b815260206004820152601a60248201527f6c656e677468206973206c657373207468616e206f6666736574000000000000604482015290519081900360640190fd5b82516020808501518301805192849003929183101561285757826020036101000a820491505b50949350505050565b600060606000806000805b61287487612f1e565b156128c657826128965761288f61288a8861275b565b614151565b91506128bb565b82600114156128b6576128ab610e6b8861275b565b9050600193506128bb565b6128c6565b82600101925061286b565b8361290c576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b60006110046001600160a01b031663727be1f8836040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b15801561295657600080fd5b505af115801561296a573d6000803e3d6000fd5b505050506040513d602081101561298057600080fd5b50519050806129a55761299760048484606561416b565b965096505050505050612a3b565b6001600160a01b0383166000908152600660205260409020546129ce908363ffffffff612ec416565b6001600160a01b038416600081815260066020908152604091829020939093558051858152905191927f7cc266c7b444f808013fa187f7b904d470a051a6564e78f482aa496581ba4bf892918290030190a260408051600080825260208201909252909750955050505050505b915091565b6000606060008060008060005b612a5688612f1e565b15612abf5783612a7357612a6c61288a8961275b565b9250612ab4565b8360011415612a8f57612a8861288a8961275b565b9150612ab4565b8360021415612aaf57612aa4610e6b8961275b565b905060019450612ab4565b612abf565b836001019350612a4d565b84612b05576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b60006110046001600160a01b031663727be1f8836040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b158015612b4f57600080fd5b505af1158015612b63573d6000803e3d6000fd5b505050506040513d6020811015612b7957600080fd5b5051905080612b9f57612b9060058584606561416b565b97509750505050505050612a3b565b6001600160a01b038085166000818152600760209081526040808320948816835293815283822082905591815260089091522054612be3908363ffffffff612ec416565b6001600160a01b0380861660008181526008602090815260409182902094909455805186815290519287169391927f35a799836f74fac7eccf5c73902823b970543d2274d3b93d8da3d37a255772a2929181900390910190a3604080516000808252602082019092529098509650505050505050915091565b60008184841115612ceb5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612cb0578181015183820152602001612c98565b50505050905090810190601f168015612cdd5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000612d3583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614267565b9392505050565b6000612d3583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612c5c565b60408051600560a21b8318601482015260348101909152606090612d35816142cc565b606061242c612daf83614322565b6142cc565b6060815160001415612dd55750604080516000815260208101909152610d71565b606082600081518110612de457fe5b602002602001015190506000600190505b8351811015612e2557612e1b82858381518110612e0e57fe5b6020026020010151614408565b9150600101612df5565b50612d35612e38825160c060ff16614485565b82614408565b6040805160028082526060828101909352829190816020015b6060815260200190600190039081612e57579050509050612e7a8460ff16612da1565b81600081518110612e8757fe5b6020026020010181905250612e9b836142cc565b81600181518110612ea857fe5b6020026020010181905250612ebc81612db4565b949350505050565b600082820183811015612d35576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000612f2861465f565b505080518051602091820151919092015191011190565b8051606090612f4d57600080fd5b6000612f5c8360200151613fbb565b83516040805191839003808352601f19601f8201168301602001909152919250606090828015612f93576020820181803683370190505b509050600081602001905061285784876020015101828561457d565b8051602080830191909120600e546000908152600a9092526040822054808214612fde57600092505050610d71565b5050600e80546000908152600a60205260408120558054600190810190915592915050565b60008060008060005b61301588612f1e565b1561307e57836130325761302b61288a8961275b565b9250613073565b836001141561304e5761304761288a8961275b565b9150613073565b836002141561306e57613063610e6b8961275b565b905060019450613073565b61307e565b83600101935061300c565b846130c4576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b60006130db826402540be40063ffffffff6145c816565b6001600160a01b0385166000908152600b602052604090208054600019019055905060ff8816600114156132215760ff87161561314e576040805162461bcd60e51b815260206004820152600c60248201526b77726f6e672073746174757360a01b604482015290519081900360640190fd5b6001600160a01b038416600090815260046020526040902054613177908263ffffffff612ec416565b6001600160a01b038086166000908152600460209081526040808320949094556005815283822092871682529190915220546131b9908263ffffffff612ec416565b6001600160a01b038086166000818152600560209081526040808320948916808452948252918290209490945580518581529051929391927f9a57c81564ab02642f34fd87e41baa9b074c18342cec3b7268b62bf752018fd1929181900390910190a36133af565b60ff8816613373576001600160a01b038416600090815260086020526040902054613252908263ffffffff612ec416565b6001600160a01b0385166000908152600860209081526040808320939093558251630e4f7c3f60e31b81526004810185905292516110049363727be1f89360248083019493928390030190829087803b1580156132ae57600080fd5b505af11580156132c2573d6000803e3d6000fd5b505050506040513d60208110156132d857600080fd5b5051613321576040805162461bcd60e51b81526020600482015260136024820152721dda5d1a191c985dc8189b988819985a5b1959606a1b604482015290519081900360640190fd5b6040805182815260ff8916602082015281516001600160a01b0380871693908816927fcbd481ae600289fad8c0484d07ce0ffe4f010d7c844ecfdeaf2a13fead52886e929081900390910190a36133af565b6040805162461bcd60e51b815260206004820152600c60248201526b77726f6e672073746174757360a01b604482015290519081900360640190fd5b505050505050505050565b60008060008060005b6133cc88612f1e565b1561343557836133e9576133e261288a8961275b565b925061342a565b8360011415613405576133fe61288a8961275b565b915061342a565b83600214156134255761341a610e6b8961275b565b90506001945061342a565b613435565b8360010193506133c3565b8461347b576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b6000613492826402540be40063ffffffff6145c816565b6001600160a01b0385166000908152600c602052604090208054600019019055905060ff8816600114156136115760ff871615613505576040805162461bcd60e51b815260206004820152600c60248201526b77726f6e672073746174757360a01b604482015290519081900360640190fd5b6001600160a01b03841660009081526004602052604090205461352e908263ffffffff612d3c16565b6001600160a01b03808616600090815260046020908152604080832094909455600581528382209287168252919091522054613570908263ffffffff612d3c16565b6001600160a01b038086166000908152600560209081526040808320938816835292905220556135a942620a8c0063ffffffff612ec416565b6001600160a01b038086166000818152600760209081526040808320948916808452948252918290209490945580518581529051929391927fd6f878a5bcbbe79a64e6418bb0d56aaa20b9a60587d45749819df88dfc7c3c44929181900390910190a36133af565b60ff8816613373576001600160a01b03808516600081815260076020908152604080832094881680845294825280832092909255815185815260ff8c169181019190915281517f4417d10c1e33efa83a770b8d4f47176e78c08c1298d534901ad3b16bb585fa2e929181900390910190a36133af565b6000806000806000805b61369a89612f1e565b1561371f57846136b7576136b061288a8a61275b565b9350613714565b84600114156136d3576136cc61288a8a61275b565b9250613714565b84600214156136ef576136e861288a8a61275b565b9150613714565b846003141561370f57613704610e6b8a61275b565b905060019550613714565b61371f565b846001019450613691565b85613765576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b600061377c826402540be40063ffffffff6145c816565b6001600160a01b0386166000908152600d602052604090208054600019019055905060ff89166001141561394f5760ff8816156137ef576040805162461bcd60e51b815260206004820152600c60248201526b77726f6e672073746174757360a01b604482015290519081900360640190fd5b6001600160a01b03808616600090815260056020908152604080832093881683529290522054613825908263ffffffff612d3c16565b6001600160a01b038681166000908152600560209081526040808320898516845290915280822093909355908516815220546138619082612ec4565b6001600160a01b0380871660009081526005602090815260408083209388168352929052205561389a42620a8c0063ffffffff612ec416565b6001600160a01b03808716600090815260096020908152604080832089851684528252808320938816835292905220556138dd42620a8c0063ffffffff612ec416565b6001600160a01b038087166000818152600960209081526040808320898616808552908352818420958b1680855295835292819020959095558451868152945191947f78bffae3f8c6691ac7fc1a3bff800cb2d612f5ad9ae5b0444cfe2eb15c189e18929081900390910190a46139e0565b60ff8916613373576001600160a01b038581166000818152600960209081526040808320898616808552818452828520968a16808652968452828520859055908352818420818552835281842093909355805186815260ff8e169281019290925280519293927fb93bee5c59f85ede6b074a99f4ffcd3e3fc0d5c3d8156de331de89a49e0ce77c9281900390910190a45b50505050505050505050565b6000816040516020018082805190602001908083835b60208310613a215780518252601f199092019160209182019101613a02565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405280519060200120836040516020018082805190602001908083835b60208310613a8f5780518252601f199092019160209182019101613a70565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040528051906020012014905092915050565b015190565b60008060008060005b613aea86612f1e565b15613b535783613b0757613b0061288a8761275b565b9250613b48565b8360011415613b2357613b1c61288a8761275b565b9150613b48565b8360021415613b4357613b38610e6b8761275b565b905060019450613b48565b613b53565b836001019350613ae1565b84613b99576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b6000613bb0826402540be40063ffffffff6145c816565b6001600160a01b0385166000908152600b6020908152604080832080546000190190556008909152902054909150613bee908263ffffffff612ec416565b6001600160a01b0385166000908152600860209081526040808320939093558251630e4f7c3f60e31b81526004810185905292516110049363727be1f89360248083019493928390030190829087803b158015613c4a57600080fd5b505af1158015613c5e573d6000803e3d6000fd5b505050506040513d6020811015613c7457600080fd5b5051613cbd576040805162461bcd60e51b81526020600482015260136024820152721dda5d1a191c985dc8189b988819985a5b1959606a1b604482015290519081900360640190fd5b6040516001907ff83de021914a4585482db5ca47d520a5657165b443fa2c7ef8ed4635f054da9b90600090a250505050505050565b60008060008060005b613d0486612f1e565b15613d6d5783613d2157613d1a61288a8761275b565b9250613d62565b8360011415613d3d57613d3661288a8761275b565b9150613d62565b8360021415613d5d57613d52610e6b8761275b565b905060019450613d62565b613d6d565b836001019350613cfb565b84613db3576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b6001600160a01b038084166000908152600c60209081526040808320805460001901905560078252808320938616835292905281812081905590516002917ff83de021914a4585482db5ca47d520a5657165b443fa2c7ef8ed4635f054da9b91a2505050505050565b6000806000806000805b613e2f87612f1e565b15613eb45784613e4c57613e4561288a8861275b565b9350613ea9565b8460011415613e6857613e6161288a8861275b565b9250613ea9565b8460021415613e8457613e7d61288a8861275b565b9150613ea9565b8460031415613ea457613e99610e6b8861275b565b905060019550613ea9565b613eb4565b846001019450613e26565b85613efa576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b6001600160a01b038481166000908152600d602090815260408083208054600019019055600982528083208785168085528184528285209588168552948352818420849055825280832093835292905281812081905590516003917ff83de021914a4585482db5ca47d520a5657165b443fa2c7ef8ed4635f054da9b91a250505050505050565b8051600090613f9257506000610d71565b6020820151805160001a9060c0821015613fb157600092505050610d71565b5060019392505050565b8051600090811a6080811015613fd5576000915050610d71565b60b8811080613ff0575060c08110801590613ff0575060f881105b15613fff576001915050610d71565b60c08110156140135760b519019050610d71565b60f519019050610d71565b80516000908190811a6080811015614039576001915061414a565b60b881101561404e57607e198101915061414a565b60c08110156140c857600060b78203600186019550806020036101000a8651049150600181018201935050808310156140c2576040805162461bcd60e51b81526020600482015260116024820152706164646974696f6e206f766572666c6f7760781b604482015290519081900360640190fd5b5061414a565b60f88110156140dd5760be198101915061414a565b600060f78203600186019550806020036101000a865104915060018101820193505080831015614148576040805162461bcd60e51b81526020600482015260116024820152706164646974696f6e206f766572666c6f7760781b604482015290519081900360640190fd5b505b5092915050565b805160009060151461416257600080fd5b61242c826127a9565b60006060614184846402540be40063ffffffff612cf316565b60408051600480825260a0820190925291955060609190816020015b60608152602001906001900390816141a05790505090506141c38760ff16612da1565b816000815181106141d057fe5b60200260200101819052506141ed866001600160a01b0316612d7e565b816001815181106141fa57fe5b602002602001018190525061420e85612da1565b8160028151811061421b57fe5b60200260200101819052506142358463ffffffff16612da1565b8160038151811061424257fe5b6020026020010181905250606061425882612db4565b94989497509395505050505050565b600081836142b65760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315612cb0578181015183820152602001612c98565b5060008385816142c257fe5b0495945050505050565b6060815160011480156142fe5750607f60f81b826000815181106142ec57fe5b01602001516001600160f81b03191611155b1561430a575080610d71565b61242c61431c8351608060ff16614485565b83614408565b604080516020808252818301909252606091829190602082018180368337505050602081018490529050600067ffffffffffffffff1984166143665750601861438a565b6fffffffffffffffffffffffffffffffff1984166143865750601061438a565b5060005b60208110156143c05781818151811061439f57fe5b01602001516001600160f81b031916156143b8576143c0565b60010161438a565b60008160200390506060816040519080825280601f01601f1916602001820160405280156143f5576020820181803683370190505b5080830196909652508452509192915050565b6060806040519050835180825260208201818101602087015b81831015614439578051835260209283019201614421565b50855184518101855292509050808201602086015b8183101561446657805183526020928301920161444e565b508651929092011591909101601f01601f191660405250905092915050565b60606801000000000000000083106144d5576040805162461bcd60e51b815260206004820152600e60248201526d696e70757420746f6f206c6f6e6760901b604482015290519081900360640190fd5b6040805160018082528183019092526060916020820181803683370190505090506037841161452f5782840160f81b8160008151811061451157fe5b60200101906001600160f81b031916908160001a905350905061242c565b606061453a85614322565b90508381510160370160f81b8260008151811061455357fe5b60200101906001600160f81b031916908160001a9053506145748282614408565b95945050505050565b806145875761265c565b5b602081106145a7578251825260209283019290910190601f1901614588565b915181516020939093036101000a6000190180199091169216919091179052565b6000826145d75750600061242c565b828202828482816145e457fe5b0414612d355760405162461bcd60e51b81526004018080602001828103825260218152602001806147086021913960400191505060405180910390fd5b60405180606001604052806003906020820280368337509192915050565b604051806040016040528061465261465f565b8152602001600081525090565b60405180604001604052806000815260200160008152509056fe7468652042534352656c61796572466565206d6f642074656e20646563696d616c73206d757374206265207a65726f7468652042534352656c61796572466565206d757374206265206c657373207468616e2072656c61796572466565746865206d696e44656c65676174696f6e206d7573742062652067726561746572207468616e2072656c61796572466565536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f777468652072656c61796572466565206d6f642074656e20646563696d616c73206d757374206265207a65726f746865206d6573736167652073656e646572206d75737420626520676f7665726e616e636520636f6e74726163747468652072656c61796572466565206d757374206265206c657373207468616e206d696e44656c65676174696f6e7468652072656c61796572466565206d757374206265206d6f7265207468616e2042534352656c61796572466565696e73756666696369656e742062616c616e636520616674657220756e64656c6567617465746865206d6573736167652073656e646572206d7573742062652063726f737320636861696e20636f6e74726163747468652042534352656c61796572466565206d757374206e6f74206265207a65726fa164736f6c6343000604000a", + Code: "6080604052600436106103a65760003560e01c8063718a8aa8116101e7578063b88a802f1161010d578063dc927faf116100a0578063f9a2bbc71161006f578063f9a2bbc714610ca0578063fa03f79714610cb5578063fc3e590814610692578063fd6a687914610cca576103ad565b8063dc927faf14610c1c578063df8079e914610c31578063edc1a5b014610c46578063f45fd80b14610c5b576103ad565b8063c81b1662116100dc578063c81b166214610b47578063c8509d8114610b5c578063d61b9b9314610be1578063d7ecfcb61461083a576103ad565b8063b88a802f14610acd578063baaafd3b14610ae2578063bf8546ca14610af7578063c2117d8214610b32576103ad565b80639dc0926211610185578063aad5606311610154578063aad56063146109c3578063ab51bb96146109d8578063ac431751146109ed578063b14315df14610ab8576103ad565b80639dc092621461095b578063a1a11bf514610970578063a78abc1614610985578063aa82dce1146109ae576103ad565b80637942fd05116101c15780637942fd05146108ac578063831d65d1146108c157806392b888a41461063e57806396713da914610946576103ad565b8063718a8aa81461084f57806375aca5931461086457806375d47a0a14610897576103ad565b8063413d9c3a116102cc5780635d17c8bd1161026a5780636bd8f804116102395780636bd8f804146107bc5780636e47b482146107f25780636fb7f7eb1461080757806370fd5bad1461083a576103ad565b80635d17c8bd146107685780635d499b1b1461077d57806362b171d21461079257806369b635b6146107a7576103ad565b80634bf6c882116102a65780634bf6c882146106fd5780634d99dd161461071257806351e806721461073e578063552aaf9314610753576103ad565b8063413d9c3a146106a757806343756e5c146106bc578063493279b1146106d1576103ad565b806311fe9ec611610344578063333ad3e711610313578063333ad3e71461066857806334c433541461067d5780633dffc3871461063e5780633fdfa7e414610692576103ad565b806311fe9ec6146105e0578063151817e31461061357806317c9efb01461063e5780632fdeb11114610653576103ad565b80630bee7a67116103805780630bee7a67146104725780630c795715146104a05780630e2374a5146104b55780631182b875146104e6576103ad565b8063026e402b146103b257806302985992146103e0578063047636d114610407576103ad565b366103ad57005b600080fd5b6103de600480360360408110156103c857600080fd5b506001600160a01b038135169060200135610cdf565b005b3480156103ec57600080fd5b506103f5610d1c565b60408051918252519081900360200190f35b34801561041357600080fd5b5061043a6004803603602081101561042a57600080fd5b50356001600160a01b0316610d22565b6040518082606080838360005b8381101561045f578181015183820152602001610447565b5050505090500191505060405180910390f35b34801561047e57600080fd5b50610487610d76565b6040805163ffffffff9092168252519081900360200190f35b3480156104ac57600080fd5b506103f5610d7b565b3480156104c157600080fd5b506104ca610d81565b604080516001600160a01b039092168252519081900360200190f35b3480156104f257600080fd5b5061056b6004803603604081101561050957600080fd5b60ff8235169190810190604081016020820135600160201b81111561052d57600080fd5b82018360208201111561053f57600080fd5b803590602001918460018302840111600160201b8311171561056057600080fd5b509092509050610d87565b6040805160208082528351818301528351919283929083019185019080838360005b838110156105a557818101518382015260200161058d565b50505050905090810190601f1680156105d25780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156105ec57600080fd5b506103f56004803603602081101561060357600080fd5b50356001600160a01b0316610f43565b34801561061f57600080fd5b50610628610f5e565b6040805160ff9092168252519081900360200190f35b34801561064a57600080fd5b50610628610f63565b34801561065f57600080fd5b506103f5610f68565b34801561067457600080fd5b50610487610f6e565b34801561068957600080fd5b506103f5610f73565b34801561069e57600080fd5b50610628610f7e565b3480156106b357600080fd5b506103f5610f83565b3480156106c857600080fd5b506104ca610f8a565b3480156106dd57600080fd5b506106e6610f90565b6040805161ffff9092168252519081900360200190f35b34801561070957600080fd5b50610628610f96565b6103de6004803603604081101561072857600080fd5b506001600160a01b038135169060200135610f9b565b34801561074a57600080fd5b506104ca6115c8565b34801561075f57600080fd5b506106286115ce565b34801561077457600080fd5b506103f56115d3565b34801561078957600080fd5b506103f56115d9565b34801561079e57600080fd5b506103f56115e2565b3480156107b357600080fd5b506103f5611782565b6103de600480360360608110156107d257600080fd5b506001600160a01b03813581169160208101359091169060400135610cdf565b3480156107fe57600080fd5b506104ca611788565b34801561081357600080fd5b506103f56004803603602081101561082a57600080fd5b50356001600160a01b031661178e565b34801561084657600080fd5b506106286117a9565b34801561085b57600080fd5b506106286117ae565b34801561087057600080fd5b506103f56004803603602081101561088757600080fd5b50356001600160a01b03166117b3565b3480156108a357600080fd5b506104ca6117ce565b3480156108b857600080fd5b506106286117d4565b3480156108cd57600080fd5b506103de600480360360408110156108e457600080fd5b60ff8235169190810190604081016020820135600160201b81111561090857600080fd5b82018360208201111561091a57600080fd5b803590602001918460018302840111600160201b8311171561093b57600080fd5b5090925090506117d9565b34801561095257600080fd5b50610628611aa1565b34801561096757600080fd5b506104ca611aa6565b34801561097c57600080fd5b506104ca611aac565b34801561099157600080fd5b5061099a611ab2565b604080519115158252519081900360200190f35b3480156109ba57600080fd5b506104ca611abb565b3480156109cf57600080fd5b506104ca611ac1565b3480156109e457600080fd5b506104876115ce565b3480156109f957600080fd5b506103de60048036036040811015610a1057600080fd5b810190602081018135600160201b811115610a2a57600080fd5b820183602082011115610a3c57600080fd5b803590602001918460018302840111600160201b83111715610a5d57600080fd5b919390929091602081019035600160201b811115610a7a57600080fd5b820183602082011115610a8c57600080fd5b803590602001918460018302840111600160201b83111715610aad57600080fd5b509092509050611ac7565b348015610ac457600080fd5b50610628612259565b348015610ad957600080fd5b506103f561225e565b348015610aee57600080fd5b506103f56123fb565b348015610b0357600080fd5b506103f560048036036040811015610b1a57600080fd5b506001600160a01b0381358116916020013516612406565b348015610b3e57600080fd5b506103f5612433565b348015610b5357600080fd5b506104ca612439565b348015610b6857600080fd5b506103de60048036036040811015610b7f57600080fd5b60ff8235169190810190604081016020820135600160201b811115610ba357600080fd5b820183602082011115610bb557600080fd5b803590602001918460018302840111600160201b83111715610bd657600080fd5b50909250905061243f565b348015610bed57600080fd5b506103f560048036036040811015610c0457600080fd5b506001600160a01b0381358116916020013516612662565b348015610c2857600080fd5b506104ca61268d565b348015610c3d57600080fd5b506104ca612693565b348015610c5257600080fd5b506103f5612699565b348015610c6757600080fd5b506103f560048036036060811015610c7e57600080fd5b506001600160a01b0381358116916020810135821691604090910135166126a6565b348015610cac57600080fd5b506104ca6126db565b348015610cc157600080fd5b506103f56126e1565b348015610cd657600080fd5b506104ca6126e7565b6040805162461bcd60e51b815260206004820152600d60248201526c1b9bdd081cdd5c1c1bdc9d1959609a1b604482015290519081900360640190fd5b60035481565b610d2a614622565b610d32614622565b6001600160a01b0383166000818152600b60209081526040808320548552838352600c82528083205485830152928252600d9052819020549082015290505b919050565b606481565b6108fc81565b61200181565b60603361200014610dc95760405162461bcd60e51b815260040180806020018281038252602f815260200180614805602f913960400191505060405180910390fd5b60005460ff16610e0c576638d7ea4c6800006001908155662386f26fc1000060025568056bc75e2d631000006003556108fc6011556000805460ff191690911790555b610e14614640565b610e5b610e5685858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506126ed92505050565b612712565b90506000610e70610e6b8361275c565b6127aa565b90506000606060ff831660041415610e9557610e8b84612861565b9092509050610eec565b60ff831660051415610eaa57610e8b84612a41565b6040805162461bcd60e51b8152602060048201526012602482015271756e6b6e6f776e206576656e74207479706560701b604482015290519081900360640190fd5b63ffffffff821615610f38576040805163ffffffff84168152905160ff8516917f391d6e5ea6ab6c49b9a0abb1782cae5def8d711f973b00c729658c0b2a80b31b919081900360200190a25b979650505050505050565b6001600160a01b031660009081526006602052604090205490565b600581565b600181565b60015481565b606581565b662386f26fc1000081565b600381565b620a8c0081565b61100181565b6102ca81565b600881565b60105460ff1660021415610fe7576040805162461bcd60e51b815260206004820152600e60248201526d4e6f2072652d656e7472616e637960901b604482015290519081900360640190fd5b6010805460ff19166002179055806402540be400340615801561100f57506402540be4008106155b611060576040805162461bcd60e51b815260206004820152601c60248201527f707265636973696f6e206c6f737320696e20636f6e76657273696f6e00000000604482015290519081900360640190fd5b60005460ff166110a3576638d7ea4c6800006001908155662386f26fc1000060025568056bc75e2d631000006003556108fc6011556000805460ff191690911790555b6001543410156110f1576040805162461bcd60e51b81526020600482015260146024820152736e6f7420656e6f7567682072656c61792066656560601b604482015290519081900360640190fd5b6003548210156111ac573360009081526005602090815260408083206001600160a01b03871684529091529020548214611163576040805162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a5908185b5bdd5b9d60921b604482015290519081900360640190fd5b60025482116111ac576040805162461bcd60e51b815260206004820152601060248201526f6e6f7420656e6f7567682066756e647360801b604482015290519081900360640190fd5b3360009081526007602090815260408083206001600160a01b0387168452909152902054421015611224576040805162461bcd60e51b815260206004820152601a60248201527f70656e64696e6720756e64656c65676174696f6e206578697374000000000000604482015290519081900360640190fd5b604080518082018252601081526f6e6f7420656e6f7567682066756e647360801b602080830191909152336000908152600582528381206001600160a01b03881682529091529182205461127f91859063ffffffff612c5d16565b905080156112c75760025481116112c75760405162461bcd60e51b81526004018080602001828103825260258152602001806147e06025913960400191505060405180910390fd5b60006112de846402540be40063ffffffff612cf416565b60025490915034906000906112fa90839063ffffffff612d3d16565b6040805160038082526080820190925291925060609190816020015b606081526020019060019003908161131657905050905061133633612d7f565b8160008151811061134357fe5b6020026020010181905250611360886001600160a01b0316612d7f565b8160018151811061136d57fe5b602002602001018190525061138184612da2565b8160028151811061138e57fe5b602002602001018190525060606113ae60026113a984612db5565b612e3f565b8051602080830191909120600f80546000908152600a845260408082209390935581546001908101909255338152600c90935291208054909101905590506113ff42620a8c0063ffffffff612ec516565b3360009081526007602090815260408083206001600160a01b038e16845290915290205561200063f7a251d7601083611443876402540be40063ffffffff612cf416565b6040518463ffffffff1660e01b8152600401808460ff1660ff16815260200180602001838152602001828103825284818151815260200191508051906020019080838360005b838110156114a1578181015183820152602001611489565b50505050905090810190601f1680156114ce5780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b1580156114ef57600080fd5b505af1158015611503573d6000803e3d6000fd5b5050604051611004925085156108fc02915085906000818181858888f19350505050158015611536573d6000803e3d6000fd5b506002546040516110029180156108fc02916000818181858888f19350505050158015611567573d6000803e3d6000fd5b50604080518981526020810185905281516001600160a01b038c169233927fdf0b6ac27f3f3bb31cee3dab0f4fe40cc19c6a3f8daaec52e06b261e58a12519929081900390910190a350506010805460ff1916600117905550505050505050565b61200081565b600081565b60025481565b6402540be40081565b60105460009060ff1660021415611631576040805162461bcd60e51b815260206004820152600e60248201526d4e6f2072652d656e7472616e637960901b604482015290519081900360640190fd5b506010805460ff191660021790553360009081526008602052604090205480611698576040805162461bcd60e51b81526020600482015260146024820152736e6f20756e64656c6567617465642066756e647360601b604482015290519081900360640190fd5b336000818152600860205260408082208290556011549051919291849084818181858888f193505050503d80600081146116ee576040519150601f19603f3d011682016040523d82523d6000602084013e6116f3565b606091505b505090508061173b576040805162461bcd60e51b815260206004820152600f60248201526e1d1c985b9cd9995c8819985a5b1959608a1b604482015290519081900360640190fd5b60408051838152905133917fc712d133b8d448221aaed2198ed1f0db6dfc860fb01bc3a630916fe6cbef946f919081900360200190a2506010805460ff1916600117905590565b60035490565b61100581565b6001600160a01b031660009081526004602052604090205490565b600281565b601081565b6001600160a01b031660009081526008602052604090205490565b61100881565b600b81565b33612000146118195760405162461bcd60e51b815260040180806020018281038252602f815260200180614805602f913960400191505060405180910390fd5b60005460ff1661185c576638d7ea4c6800006001908155662386f26fc1000060025568056bc75e2d631000006003556108fc6011556000805460ff191690911790555b611864614640565b6118a6610e5684848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506126ed92505050565b905060008060606000805b6118ba86612f1f565b1561192557806118d7576118d0610e6b8761275c565b945061191d565b80600114156118f3576118ec610e6b8761275c565b935061191d565b80600214156119185761190d6119088761275c565b612f40565b92506001915061191d565b611925565b6001016118b1565b8161196b576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b61197483612fb0565b6119b7576040805162461bcd60e51b815260206004820152600f60248201526e0eee4dedcce40e0c2c6d640d0c2e6d608b1b604482015290519081900360640190fd5b6119c3610e56846126ed565b955060006119d3610e6b8861275c565b90506119dd614640565b6119e688612f1f565b15611a0957611a02610e566119fd6119088b61275c565b6126ed565b9050611a4a565b6040805162461bcd60e51b8152602060048201526011602482015270656d7074792061636b207061636b61676560781b604482015290519081900360640190fd5b60ff821660011415611a6657611a61818888613004565b611a94565b60ff821660021415611a7d57611a618188886133bb565b60ff821660031415610eaa57611a61818888613688565b5050505050505050505050565b600981565b61100781565b61100681565b60005460ff1681565b61200281565b61300081565b60005460ff16611b1e576040805162461bcd60e51b815260206004820152601960248201527f74686520636f6e7472616374206e6f7420696e69742079657400000000000000604482015290519081900360640190fd5b3361100714611b5e5760405162461bcd60e51b815260040180806020018281038252602e815260200180614756602e913960400191505060405180910390fd5b611bbf84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600a81526972656c6179657246656560b01b602082015291506139ed9050565b15611d255760208114611c19576040805162461bcd60e51b815260206004820152601d60248201527f6c656e677468206f662072656c61796572466565206d69736d61746368000000604482015290519081900360640190fd5b604080516020601f8401819004810282018101909252828152600091611c5791858580838501838280828437600092019190915250613ad492505050565b90506003548110611c995760405162461bcd60e51b815260040180806020018281038252602e815260200180614784602e913960400191505060405180910390fd5b6002548111611cd95760405162461bcd60e51b815260040180806020018281038252602e8152602001806147b2602e913960400191505060405180910390fd5b6402540be400810615611d1d5760405162461bcd60e51b815260040180806020018281038252602c81526020018061472a602c913960400191505060405180910390fd5b6001556121c7565b611d8984848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600d81526c62534352656c6179657246656560981b602082015291506139ed9050565b15611eeb5760208114611de3576040805162461bcd60e51b815260206004820181905260248201527f6c656e677468206f662062534352656c61796572466565206d69736d61746368604482015290519081900360640190fd5b604080516020601f8401819004810282018101909252828152600091611e2191858580838501838280828437600092019190915250613ad492505050565b905080611e5f5760405162461bcd60e51b81526004018080602001828103825260228152602001806148346022913960400191505060405180910390fd5b6001548110611e9f5760405162461bcd60e51b815260040180806020018281038252602e8152602001806146aa602e913960400191505060405180910390fd5b6402540be400810615611ee35760405162461bcd60e51b815260040180806020018281038252602f81526020018061467b602f913960400191505060405180910390fd5b6002556121c7565b611f4f84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600d81526c36b4b72232b632b3b0ba34b7b760991b602082015291506139ed9050565b156120315760208114611fa9576040805162461bcd60e51b815260206004820181905260248201527f6c656e677468206f66206d696e44656c65676174696f6e206d69736d61746368604482015290519081900360640190fd5b604080516020601f8401819004810282018101909252828152600091611fe791858580838501838280828437600092019190915250613ad492505050565b905060015481116120295760405162461bcd60e51b81526004018080602001828103825260318152602001806146d86031913960400191505060405180910390fd5b6003556121c7565b61209384848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600b81526a7472616e7366657247617360a81b602082015291506139ed9050565b1561218a57602081146120ed576040805162461bcd60e51b815260206004820152601e60248201527f6c656e677468206f66207472616e73666572476173206d69736d617463680000604482015290519081900360640190fd5b604080516020601f840181900481028201810190925282815260009161212b91858580838501838280828437600092019190915250613ad492505050565b905060008111612182576040805162461bcd60e51b815260206004820152601e60248201527f746865207472616e736665724761732063616e6e6f74206265207a65726f0000604482015290519081900360640190fd5b6011556121c7565b6040805162461bcd60e51b815260206004820152600d60248201526c756e6b6e6f776e20706172616d60981b604482015290519081900360640190fd5b7f6cdb0ac70ab7f2e2d035cca5be60d89906f2dede7648ddbd7402189c1eeed17a848484846040518080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600083820152604051601f909101601f19169092018290039850909650505050505050a150505050565b600481565b60105460009060ff16600214156122ad576040805162461bcd60e51b815260206004820152600e60248201526d4e6f2072652d656e7472616e637960901b604482015290519081900360640190fd5b506010805460ff191660021790553360009081526006602052604090205480612311576040805162461bcd60e51b81526020600482015260116024820152701b9bc81c195b991a5b99c81c995dd85c99607a1b604482015290519081900360640190fd5b336000818152600660205260408082208290556011549051919291849084818181858888f193505050503d8060008114612367576040519150601f19603f3d011682016040523d82523d6000602084013e61236c565b606091505b50509050806123b4576040805162461bcd60e51b815260206004820152600f60248201526e1d1c985b9cd9995c8819985a5b1959608a1b604482015290519081900360640190fd5b60408051838152905133917f83b78188b13346b2ffb484da70d42ee27de7fbf9f2bd8045269e10ed643ccd76919081900360200190a2506010805460ff1916600117905590565b6638d7ea4c68000081565b6001600160a01b038083166000908152600760209081526040808320938516835292905220545b92915050565b60015490565b61100281565b336120001461247f5760405162461bcd60e51b815260040180806020018281038252602f815260200180614805602f913960400191505060405180910390fd5b60005460ff166124c2576638d7ea4c6800006001908155662386f26fc1000060025568056bc75e2d631000006003556108fc6011556000805460ff191690911790555b61250182828080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612fb092505050565b612544576040805162461bcd60e51b815260206004820152600f60248201526e0eee4dedcce40e0c2c6d640d0c2e6d608b1b604482015290519081900360640190fd5b61254c614640565b61258e610e5684848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506126ed92505050565b9050600061259e610e6b8361275c565b90506125a8614640565b6125b183612f1f565b156125cf576125c8610e566119fd6119088661275c565b9050612615565b6040805162461bcd60e51b8152602060048201526016602482015275656d707479206661696c2061636b207061636b61676560501b604482015290519081900360640190fd5b60ff82166001141561262f5761262a81613ad9565b612659565b60ff8216600214156126445761262a81613cf3565b60ff821660031415610eaa5761262a81613e1d565b5050505b505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b61100381565b61200481565b68056bc75e2d6310000081565b6001600160a01b0392831660009081526009602090815260408083209486168352938152838220929094168152925290205490565b61100081565b60115481565b61100481565b6126f5614660565b506040805180820190915281518152602082810190820152919050565b61271a614640565b61272382613f82565b61272c57600080fd5b600061273b8360200151613fbc565b60208085015160408051808201909152868152920190820152915050919050565b612764614660565b61276d82612f1f565b61277657600080fd5b602082015160006127868261401f565b80830160209586015260408051808201909152908152938401919091525090919050565b8051600090158015906127bf57508151602110155b6127c857600080fd5b60006127d78360200151613fbc565b90508083600001511015612832576040805162461bcd60e51b815260206004820152601a60248201527f6c656e677468206973206c657373207468616e206f6666736574000000000000604482015290519081900360640190fd5b82516020808501518301805192849003929183101561285857826020036101000a820491505b50949350505050565b600060606000806000805b61287587612f1f565b156128c757826128975761289061288b8861275c565b614152565b91506128bc565b82600114156128b7576128ac610e6b8861275c565b9050600193506128bc565b6128c7565b82600101925061286c565b8361290d576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b60006110046001600160a01b031663727be1f8836040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b15801561295757600080fd5b505af115801561296b573d6000803e3d6000fd5b505050506040513d602081101561298157600080fd5b50519050806129a65761299860048484606561416c565b965096505050505050612a3c565b6001600160a01b0383166000908152600660205260409020546129cf908363ffffffff612ec516565b6001600160a01b038416600081815260066020908152604091829020939093558051858152905191927f7cc266c7b444f808013fa187f7b904d470a051a6564e78f482aa496581ba4bf892918290030190a260408051600080825260208201909252909750955050505050505b915091565b6000606060008060008060005b612a5788612f1f565b15612ac05783612a7457612a6d61288b8961275c565b9250612ab5565b8360011415612a9057612a8961288b8961275c565b9150612ab5565b8360021415612ab057612aa5610e6b8961275c565b905060019450612ab5565b612ac0565b836001019350612a4e565b84612b06576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b60006110046001600160a01b031663727be1f8836040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b158015612b5057600080fd5b505af1158015612b64573d6000803e3d6000fd5b505050506040513d6020811015612b7a57600080fd5b5051905080612ba057612b9160058584606561416c565b97509750505050505050612a3c565b6001600160a01b038085166000818152600760209081526040808320948816835293815283822082905591815260089091522054612be4908363ffffffff612ec516565b6001600160a01b0380861660008181526008602090815260409182902094909455805186815290519287169391927f35a799836f74fac7eccf5c73902823b970543d2274d3b93d8da3d37a255772a2929181900390910190a3604080516000808252602082019092529098509650505050505050915091565b60008184841115612cec5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612cb1578181015183820152602001612c99565b50505050905090810190601f168015612cde5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000612d3683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614268565b9392505050565b6000612d3683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612c5d565b60408051600560a21b8318601482015260348101909152606090612d36816142cd565b606061242d612db083614323565b6142cd565b6060815160001415612dd65750604080516000815260208101909152610d71565b606082600081518110612de557fe5b602002602001015190506000600190505b8351811015612e2657612e1c82858381518110612e0f57fe5b6020026020010151614409565b9150600101612df6565b50612d36612e39825160c060ff16614486565b82614409565b6040805160028082526060828101909352829190816020015b6060815260200190600190039081612e58579050509050612e7b8460ff16612da2565b81600081518110612e8857fe5b6020026020010181905250612e9c836142cd565b81600181518110612ea957fe5b6020026020010181905250612ebd81612db5565b949350505050565b600082820183811015612d36576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000612f29614660565b505080518051602091820151919092015191011190565b8051606090612f4e57600080fd5b6000612f5d8360200151613fbc565b83516040805191839003808352601f19601f8201168301602001909152919250606090828015612f94576020820181803683370190505b509050600081602001905061285884876020015101828561457e565b8051602080830191909120600e546000908152600a9092526040822054808214612fdf57600092505050610d71565b5050600e80546000908152600a60205260408120558054600190810190915592915050565b60008060008060005b61301688612f1f565b1561307f57836130335761302c61288b8961275c565b9250613074565b836001141561304f5761304861288b8961275c565b9150613074565b836002141561306f57613064610e6b8961275c565b905060019450613074565b61307f565b83600101935061300d565b846130c5576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b60006130dc826402540be40063ffffffff6145c916565b6001600160a01b0385166000908152600b602052604090208054600019019055905060ff8816600114156132225760ff87161561314f576040805162461bcd60e51b815260206004820152600c60248201526b77726f6e672073746174757360a01b604482015290519081900360640190fd5b6001600160a01b038416600090815260046020526040902054613178908263ffffffff612ec516565b6001600160a01b038086166000908152600460209081526040808320949094556005815283822092871682529190915220546131ba908263ffffffff612ec516565b6001600160a01b038086166000818152600560209081526040808320948916808452948252918290209490945580518581529051929391927f9a57c81564ab02642f34fd87e41baa9b074c18342cec3b7268b62bf752018fd1929181900390910190a36133b0565b60ff8816613374576001600160a01b038416600090815260086020526040902054613253908263ffffffff612ec516565b6001600160a01b0385166000908152600860209081526040808320939093558251630e4f7c3f60e31b81526004810185905292516110049363727be1f89360248083019493928390030190829087803b1580156132af57600080fd5b505af11580156132c3573d6000803e3d6000fd5b505050506040513d60208110156132d957600080fd5b5051613322576040805162461bcd60e51b81526020600482015260136024820152721dda5d1a191c985dc8189b988819985a5b1959606a1b604482015290519081900360640190fd5b6040805182815260ff8916602082015281516001600160a01b0380871693908816927fcbd481ae600289fad8c0484d07ce0ffe4f010d7c844ecfdeaf2a13fead52886e929081900390910190a36133b0565b6040805162461bcd60e51b815260206004820152600c60248201526b77726f6e672073746174757360a01b604482015290519081900360640190fd5b505050505050505050565b60008060008060005b6133cd88612f1f565b1561343657836133ea576133e361288b8961275c565b925061342b565b8360011415613406576133ff61288b8961275c565b915061342b565b83600214156134265761341b610e6b8961275c565b90506001945061342b565b613436565b8360010193506133c4565b8461347c576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b6000613493826402540be40063ffffffff6145c916565b6001600160a01b0385166000908152600c602052604090208054600019019055905060ff8816600114156136125760ff871615613506576040805162461bcd60e51b815260206004820152600c60248201526b77726f6e672073746174757360a01b604482015290519081900360640190fd5b6001600160a01b03841660009081526004602052604090205461352f908263ffffffff612d3d16565b6001600160a01b03808616600090815260046020908152604080832094909455600581528382209287168252919091522054613571908263ffffffff612d3d16565b6001600160a01b038086166000908152600560209081526040808320938816835292905220556135aa42620a8c0063ffffffff612ec516565b6001600160a01b038086166000818152600760209081526040808320948916808452948252918290209490945580518581529051929391927fd6f878a5bcbbe79a64e6418bb0d56aaa20b9a60587d45749819df88dfc7c3c44929181900390910190a36133b0565b60ff8816613374576001600160a01b03808516600081815260076020908152604080832094881680845294825280832092909255815185815260ff8c169181019190915281517f4417d10c1e33efa83a770b8d4f47176e78c08c1298d534901ad3b16bb585fa2e929181900390910190a36133b0565b6000806000806000805b61369b89612f1f565b1561372057846136b8576136b161288b8a61275c565b9350613715565b84600114156136d4576136cd61288b8a61275c565b9250613715565b84600214156136f0576136e961288b8a61275c565b9150613715565b846003141561371057613705610e6b8a61275c565b905060019550613715565b613720565b846001019450613692565b85613766576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b600061377d826402540be40063ffffffff6145c916565b6001600160a01b0386166000908152600d602052604090208054600019019055905060ff8916600114156139505760ff8816156137f0576040805162461bcd60e51b815260206004820152600c60248201526b77726f6e672073746174757360a01b604482015290519081900360640190fd5b6001600160a01b03808616600090815260056020908152604080832093881683529290522054613826908263ffffffff612d3d16565b6001600160a01b038681166000908152600560209081526040808320898516845290915280822093909355908516815220546138629082612ec5565b6001600160a01b0380871660009081526005602090815260408083209388168352929052205561389b42620a8c0063ffffffff612ec516565b6001600160a01b03808716600090815260096020908152604080832089851684528252808320938816835292905220556138de42620a8c0063ffffffff612ec516565b6001600160a01b038087166000818152600960209081526040808320898616808552908352818420958b1680855295835292819020959095558451868152945191947f78bffae3f8c6691ac7fc1a3bff800cb2d612f5ad9ae5b0444cfe2eb15c189e18929081900390910190a46139e1565b60ff8916613374576001600160a01b038581166000818152600960209081526040808320898616808552818452828520968a16808652968452828520859055908352818420818552835281842093909355805186815260ff8e169281019290925280519293927fb93bee5c59f85ede6b074a99f4ffcd3e3fc0d5c3d8156de331de89a49e0ce77c9281900390910190a45b50505050505050505050565b6000816040516020018082805190602001908083835b60208310613a225780518252601f199092019160209182019101613a03565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405280519060200120836040516020018082805190602001908083835b60208310613a905780518252601f199092019160209182019101613a71565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040528051906020012014905092915050565b015190565b60008060008060005b613aeb86612f1f565b15613b545783613b0857613b0161288b8761275c565b9250613b49565b8360011415613b2457613b1d61288b8761275c565b9150613b49565b8360021415613b4457613b39610e6b8761275c565b905060019450613b49565b613b54565b836001019350613ae2565b84613b9a576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b6000613bb1826402540be40063ffffffff6145c916565b6001600160a01b0385166000908152600b6020908152604080832080546000190190556008909152902054909150613bef908263ffffffff612ec516565b6001600160a01b0385166000908152600860209081526040808320939093558251630e4f7c3f60e31b81526004810185905292516110049363727be1f89360248083019493928390030190829087803b158015613c4b57600080fd5b505af1158015613c5f573d6000803e3d6000fd5b505050506040513d6020811015613c7557600080fd5b5051613cbe576040805162461bcd60e51b81526020600482015260136024820152721dda5d1a191c985dc8189b988819985a5b1959606a1b604482015290519081900360640190fd5b6040516001907ff83de021914a4585482db5ca47d520a5657165b443fa2c7ef8ed4635f054da9b90600090a250505050505050565b60008060008060005b613d0586612f1f565b15613d6e5783613d2257613d1b61288b8761275c565b9250613d63565b8360011415613d3e57613d3761288b8761275c565b9150613d63565b8360021415613d5e57613d53610e6b8761275c565b905060019450613d63565b613d6e565b836001019350613cfc565b84613db4576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b6001600160a01b038084166000908152600c60209081526040808320805460001901905560078252808320938616835292905281812081905590516002917ff83de021914a4585482db5ca47d520a5657165b443fa2c7ef8ed4635f054da9b91a2505050505050565b6000806000806000805b613e3087612f1f565b15613eb55784613e4d57613e4661288b8861275c565b9350613eaa565b8460011415613e6957613e6261288b8861275c565b9250613eaa565b8460021415613e8557613e7e61288b8861275c565b9150613eaa565b8460031415613ea557613e9a610e6b8861275c565b905060019550613eaa565b613eb5565b846001019450613e27565b85613efb576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b6001600160a01b038481166000908152600d602090815260408083208054600019019055600982528083208785168085528184528285209588168552948352818420849055825280832093835292905281812081905590516003917ff83de021914a4585482db5ca47d520a5657165b443fa2c7ef8ed4635f054da9b91a250505050505050565b8051600090613f9357506000610d71565b6020820151805160001a9060c0821015613fb257600092505050610d71565b5060019392505050565b8051600090811a6080811015613fd6576000915050610d71565b60b8811080613ff1575060c08110801590613ff1575060f881105b15614000576001915050610d71565b60c08110156140145760b519019050610d71565b60f519019050610d71565b80516000908190811a608081101561403a576001915061414b565b60b881101561404f57607e198101915061414b565b60c08110156140c957600060b78203600186019550806020036101000a8651049150600181018201935050808310156140c3576040805162461bcd60e51b81526020600482015260116024820152706164646974696f6e206f766572666c6f7760781b604482015290519081900360640190fd5b5061414b565b60f88110156140de5760be198101915061414b565b600060f78203600186019550806020036101000a865104915060018101820193505080831015614149576040805162461bcd60e51b81526020600482015260116024820152706164646974696f6e206f766572666c6f7760781b604482015290519081900360640190fd5b505b5092915050565b805160009060151461416357600080fd5b61242d826127aa565b60006060614185846402540be40063ffffffff612cf416565b60408051600480825260a0820190925291955060609190816020015b60608152602001906001900390816141a15790505090506141c48760ff16612da2565b816000815181106141d157fe5b60200260200101819052506141ee866001600160a01b0316612d7f565b816001815181106141fb57fe5b602002602001018190525061420f85612da2565b8160028151811061421c57fe5b60200260200101819052506142368463ffffffff16612da2565b8160038151811061424357fe5b6020026020010181905250606061425982612db5565b94989497509395505050505050565b600081836142b75760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315612cb1578181015183820152602001612c99565b5060008385816142c357fe5b0495945050505050565b6060815160011480156142ff5750607f60f81b826000815181106142ed57fe5b01602001516001600160f81b03191611155b1561430b575080610d71565b61242d61431d8351608060ff16614486565b83614409565b604080516020808252818301909252606091829190602082018180368337505050602081018490529050600067ffffffffffffffff1984166143675750601861438b565b6fffffffffffffffffffffffffffffffff1984166143875750601061438b565b5060005b60208110156143c1578181815181106143a057fe5b01602001516001600160f81b031916156143b9576143c1565b60010161438b565b60008160200390506060816040519080825280601f01601f1916602001820160405280156143f6576020820181803683370190505b5080830196909652508452509192915050565b6060806040519050835180825260208201818101602087015b8183101561443a578051835260209283019201614422565b50855184518101855292509050808201602086015b8183101561446757805183526020928301920161444f565b508651929092011591909101601f01601f191660405250905092915050565b60606801000000000000000083106144d6576040805162461bcd60e51b815260206004820152600e60248201526d696e70757420746f6f206c6f6e6760901b604482015290519081900360640190fd5b604080516001808252818301909252606091602082018180368337019050509050603784116145305782840160f81b8160008151811061451257fe5b60200101906001600160f81b031916908160001a905350905061242d565b606061453b85614323565b90508381510160370160f81b8260008151811061455457fe5b60200101906001600160f81b031916908160001a9053506145758282614409565b95945050505050565b806145885761265d565b5b602081106145a8578251825260209283019290910190601f1901614589565b915181516020939093036101000a6000190180199091169216919091179052565b6000826145d85750600061242d565b828202828482816145e557fe5b0414612d365760405162461bcd60e51b81526004018080602001828103825260218152602001806147096021913960400191505060405180910390fd5b60405180606001604052806003906020820280368337509192915050565b6040518060400160405280614653614660565b8152602001600081525090565b60405180604001604052806000815260200160008152509056fe7468652042534352656c61796572466565206d6f642074656e20646563696d616c73206d757374206265207a65726f7468652042534352656c61796572466565206d757374206265206c657373207468616e2072656c61796572466565746865206d696e44656c65676174696f6e206d7573742062652067726561746572207468616e2072656c61796572466565536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f777468652072656c61796572466565206d6f642074656e20646563696d616c73206d757374206265207a65726f746865206d6573736167652073656e646572206d75737420626520676f7665726e616e636520636f6e74726163747468652072656c61796572466565206d757374206265206c657373207468616e206d696e44656c65676174696f6e7468652072656c61796572466565206d757374206265206d6f7265207468616e2042534352656c61796572466565696e73756666696369656e742062616c616e636520616674657220756e64656c6567617465746865206d6573736167652073656e646572206d7573742062652063726f737320636861696e20636f6e74726163747468652042534352656c61796572466565206d757374206e6f74206265207a65726fa164736f6c6343000604000a", }, { ContractAddr: common.HexToAddress(StakeHubContract), @@ -853,7 +847,7 @@ func init() { { ContractAddr: common.HexToAddress(GovernorContract), CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/cfc0bd1127186a917ddc38fd38d22903034d3f0b", - Code: "6080604052600436106103905760003560e01c80637d5e81e2116101dc578063c59057e411610102578063e23a9a52116100a0578063f23a6e611161006f578063f23a6e6114610cd6578063f8ce560a14610d02578063fc0c546a14610d22578063fe0d94c114610d4357600080fd5b8063e23a9a5214610bab578063ea0217cf14610c76578063eb9019d414610c96578063ece40cc114610cb657600080fd5b8063da95691a116100dc578063da95691a14610af1578063dd4e2ba514610b11578063ddf0b00914610b57578063deaaa7cc14610b7757600080fd5b8063c59057e414610a92578063d07f91e914610ab2578063d33219b414610ad257600080fd5b8063a890c9101161017a578063bc197c8111610149578063bc197c8114610a18578063c01f9e3714610a44578063c170ec0b14610a64578063c28bc2fa14610a7f57600080fd5b8063a890c910146109a3578063ab58fb8e146109c3578063ac431751146109e3578063b58131b014610a0357600080fd5b806391ddadf4116101b657806391ddadf41461092e57806397c3d3341461095a5780639a802a6d1461096e578063a7713a701461098e57600080fd5b80637d5e81e2146108d15780638129fc1c146108f157806384b0196e1461090657600080fd5b806332b8113e116102c15780634bf5d7e91161025f5780635f398a141161022e5780635f398a141461085157806360c4247f1461087157806370b0f660146108915780637b3c71d3146108b157600080fd5b80634bf5d7e9146107c1578063533ddd14146107d657806354fd4d5014610807578063567813881461083157600080fd5b80633e4f49e61161029b5780633e4f49e61461070957806340e58ee5146107365780634385963214610756578063452115d6146107a157600080fd5b806332b8113e146106aa5780633932abb1146106d35780633bccf4fd146106e957600080fd5b8063150b7a021161032e5780632656227d116103085780632656227d146105fc5780632d63f6931461060f5780632fe3e26114610646578063328dd9821461067a57600080fd5b8063150b7a0214610583578063160cbed7146105c757806324bc1a64146105e757600080fd5b8063034201811161036a57806303420181146104cb57806306f3f9e6146104eb57806306fdde031461050b578063143489d01461052d57600080fd5b8063013cf08b1461040057806301ffc9a71461047b57806302a251a3146104ab57600080fd5b366103fb573061039e610d56565b6001600160a01b0316146103f95760405162461bcd60e51b815260206004820152601f60248201527f476f7665726e6f723a206d7573742073656e6420746f206578656375746f720060448201526064015b60405180910390fd5b005b600080fd5b34801561040c57600080fd5b5061042061041b3660046156a8565b610d70565b604080519a8b526001600160a01b0390991660208b0152978901969096526060880194909452608087019290925260a086015260c085015260e084015215156101008301521515610120820152610140015b60405180910390f35b34801561048757600080fd5b5061049b6104963660046156c1565b610e2b565b6040519015158152602001610472565b3480156104b757600080fd5b50610162545b604051908152602001610472565b3480156104d757600080fd5b506104bd6104e6366004615807565b610e3c565b3480156104f757600080fd5b506103f96105063660046156a8565b610f34565b34801561051757600080fd5b50610520610fbf565b60405161047291906158fd565b34801561053957600080fd5b5061056b6105483660046156a8565b60009081526101306020526040902054600160401b90046001600160a01b031690565b6040516001600160a01b039091168152602001610472565b34801561058f57600080fd5b506105ae61059e366004615925565b630a85bd0160e11b949350505050565b6040516001600160e01b03199091168152602001610472565b3480156105d357600080fd5b506104bd6105e2366004615afc565b611052565b3480156105f357600080fd5b506104bd611257565b6104bd61060a366004615afc565b61127d565b34801561061b57600080fd5b506104bd61062a3660046156a8565b600090815261013060205260409020546001600160401b031690565b34801561065257600080fd5b506104bd7fb3b3f3b703cd84ce352197dcff232b1b5d3cfb2025ce47cf04742d0651f1af8881565b34801561068657600080fd5b5061069a6106953660046156a8565b611370565b6040516104729493929190615c54565b3480156106b657600080fd5b5061025c546040516001600160401b039091168152602001610472565b3480156106df57600080fd5b50610161546104bd565b3480156106f557600080fd5b506104bd610704366004615ca1565b611602565b34801561071557600080fd5b506107296107243660046156a8565b611678565b6040516104729190615d05565b34801561074257600080fd5b506103f96107513660046156a8565b611683565b34801561076257600080fd5b5061049b610771366004615d2d565b6000828152610193602090815260408083206001600160a01b038516845260080190915290205460ff1692915050565b3480156107ad57600080fd5b506104bd6107bc366004615afc565b6116ae565b3480156107cd57600080fd5b506105206116c5565b3480156107e257600080fd5b5061049b6107f1366004615d5d565b61028e6020526000908152604090205460ff1681565b34801561081357600080fd5b506040805180820190915260018152603160f81b6020820152610520565b34801561083d57600080fd5b506104bd61084c366004615d7a565b611772565b34801561085d57600080fd5b506104bd61086c366004615da6565b61179b565b34801561087d57600080fd5b506104bd61088c3660046156a8565b6117e5565b34801561089d57600080fd5b506103f96108ac3660046156a8565b61189a565b3480156108bd57600080fd5b506104bd6108cc366004615e29565b611922565b3480156108dd57600080fd5b506104bd6108ec366004615e82565b611974565b3480156108fd57600080fd5b506103f9611a04565b34801561091257600080fd5b5061091b611e41565b6040516104729796959493929190615f22565b34801561093a57600080fd5b50610943611edf565b60405165ffffffffffff9091168152602001610472565b34801561096657600080fd5b5060646104bd565b34801561097a57600080fd5b506104bd610989366004615f84565b611f53565b34801561099a57600080fd5b506104bd611f6a565b3480156109af57600080fd5b506103f96109be366004615d5d565b611f97565b3480156109cf57600080fd5b506104bd6109de3660046156a8565b61201f565b3480156109ef57600080fd5b506103f96109fe366004615fdc565b6120bb565b348015610a0f57600080fd5b506104bd61269a565b348015610a2457600080fd5b506105ae610a3336600461603b565b63bc197c8160e01b95945050505050565b348015610a5057600080fd5b506104bd610a5f3660046156a8565b6126a6565b348015610a7057600080fd5b5061028f5461049b9060ff1681565b6103f9610a8d3660046160ce565b6126b1565b348015610a9e57600080fd5b506104bd610aad366004615afc565b6127c1565b348015610abe57600080fd5b506103f9610acd366004616111565b6127fb565b348015610ade57600080fd5b506101f8546001600160a01b031661056b565b348015610afd57600080fd5b506104bd610b0c36600461613a565b612883565b348015610b1d57600080fd5b5060408051808201909152601a81527f737570706f72743d627261766f2671756f72756d3d627261766f0000000000006020820152610520565b348015610b6357600080fd5b506103f9610b723660046156a8565b61290a565b348015610b8357600080fd5b506104bd7f150214d74d59b7d1e90c73fc22ef3d991dd0a76b046543d4d80ab92d2a50328f81565b348015610bb757600080fd5b50610c46610bc6366004615d2d565b6040805160608101825260008082526020820181905291810191909152506000918252610193602090815260408084206001600160a01b0393909316845260089092018152918190208151606081018352905460ff8082161515835261010082041693820193909352620100009092046001600160601b03169082015290565b6040805182511515815260208084015160ff1690820152918101516001600160601b031690820152606001610472565b348015610c8257600080fd5b506103f9610c913660046156a8565b61292d565b348015610ca257600080fd5b506104bd610cb13660046161db565b6129b5565b348015610cc257600080fd5b506103f9610cd13660046156a8565b6129d6565b348015610ce257600080fd5b506105ae610cf1366004616207565b63f23a6e6160e01b95945050505050565b348015610d0e57600080fd5b506104bd610d1d3660046156a8565b612a5e565b348015610d2e57600080fd5b506101c55461056b906001600160a01b031681565b6103f9610d513660046156a8565b612aed565b6000610d6b6101f8546001600160a01b031690565b905090565b8060008080808080808080610d848a61201f565b60008c815261013060205260409020549098506001600160401b03169650610dab8b6126a6565b60008c81526101936020526040812080546005820154600683015460078401546001600160a01b039093169e50949a509850929650919450610dec8d611678565b90506002816007811115610e0257610e02615cef565b1493506007816007811115610e1957610e19615cef565b14925050509193959799509193959799565b6000610e3682612b10565b92915050565b600080610ee0610ed87fb3b3f3b703cd84ce352197dcff232b1b5d3cfb2025ce47cf04742d0651f1af888c8c8c8c604051610e7892919061626f565b60405180910390208b80519060200120604051602001610ebd959493929190948552602085019390935260ff9190911660408401526060830152608082015260a00190565b60405160208183030381529060405280519060200120612b35565b868686612b62565b9050610f268a828b8b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508d9250612b80915050565b9a9950505050505050505050565b610f3c610d56565b6001600160a01b0316336001600160a01b031614610f6c5760405162461bcd60e51b81526004016103f09061627f565b30610f75610d56565b6001600160a01b031614610fb35760008036604051610f9592919061626f565b604051809103902090505b80610fac610131612b8f565b03610fa057505b610fbc81612c0e565b50565b606061012f8054610fcf906162b6565b80601f0160208091040260200160405190810160405280929190818152602001828054610ffb906162b6565b80156110485780601f1061101d57610100808354040283529160200191611048565b820191906000526020600020905b81548152906001019060200180831161102b57829003601f168201915b5050505050905090565b600080611061868686866127c1565b9050600461106e82611678565b600781111561107f5761107f615cef565b1461109c5760405162461bcd60e51b81526004016103f0906162f0565b6101f8546040805163793d064960e11b815290516000926001600160a01b03169163f27a0c929160048083019260209291908290030181865afa1580156110e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061110b9190616331565b6101f85460405163b1c5f42760e01b81529192506001600160a01b03169063b1c5f42790611146908a908a908a906000908b9060040161634a565b602060405180830381865afa158015611163573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111879190616331565b60008381526101f96020526040808220929092556101f85491516308f2a0bb60e41b81526001600160a01b0390921691638f2a0bb0916111d4918b918b918b91908b908990600401616398565b600060405180830381600087803b1580156111ee57600080fd5b505af1158015611202573d6000803e3d6000fd5b505050507f9a2e42fd6722813d69113e7d0079d3d940171428df7373df9c7f7617cfda28928282426112349190616406565b604080519283526020830191909152015b60405180910390a15095945050505050565b6000610d6b6001611266611edf565b6112709190616419565b65ffffffffffff16612a5e565b60008061128c868686866127c1565b9050600061129982611678565b905060048160078111156112af576112af615cef565b14806112cc575060058160078111156112ca576112ca615cef565b145b6112e85760405162461bcd60e51b81526004016103f0906162f0565b6000828152610130602052604090819020600201805460ff19166001179055517f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f906113379084815260200190565b60405180910390a161134c8288888888612d7f565b6113598288888888612e20565b6113668288888888612ea7565b5095945050505050565b60608060608060006101936000878152602001908152602001600020905080600101816002018260030183600401838054806020026020016040519081016040528092919081815260200182805480156113f357602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116113d5575b505050505093508280548060200260200160405190810160405280929190818152602001828054801561144557602002820191906000526020600020905b815481526020019060010190808311611431575b5050505050925081805480602002602001604051908101604052809291908181526020016000905b8282101561151957838290600052602060002001805461148c906162b6565b80601f01602080910402602001604051908101604052809291908181526020018280546114b8906162b6565b80156115055780601f106114da57610100808354040283529160200191611505565b820191906000526020600020905b8154815290600101906020018083116114e857829003601f168201915b50505050508152602001906001019061146d565b50505050915080805480602002602001604051908101604052809291908181526020016000905b828210156115ec57838290600052602060002001805461155f906162b6565b80601f016020809104026020016040519081016040528092919081815260200182805461158b906162b6565b80156115d85780601f106115ad576101008083540402835291602001916115d8565b820191906000526020600020905b8154815290600101906020018083116115bb57829003601f168201915b505050505081526020019060010190611540565b5050505090509450945094509450509193509193565b604080517f150214d74d59b7d1e90c73fc22ef3d991dd0a76b046543d4d80ab92d2a50328f602082015290810186905260ff85166060820152600090819061165090610ed890608001610ebd565b905061166d87828860405180602001604052806000815250612ee2565b979650505050505050565b6000610e3682612f05565b60008060008061169285613052565b93509350935093506116a6848484846116ae565b505050505050565b60006116bc858585856132e3565b95945050505050565b6101c55460408051634bf5d7e960e01b815290516060926001600160a01b031691634bf5d7e99160048083019260009291908290030181865afa92505050801561173157506040513d6000823e601f3d908101601f1916820160405261172e919081019061643f565b60015b61176d575060408051808201909152601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c74000000602082015290565b919050565b60008033905061179384828560405180602001604052806000815250612ee2565b949350505050565b60008033905061166d87828888888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a9250612b80915050565b61022b546000908082036117fe57505061022a54919050565b600061022b61180e6001846164ac565b8154811061181e5761181e6164bf565b60009182526020918290206040805180820190915291015463ffffffff8116808352600160201b9091046001600160e01b0316928201929092529150841061187457602001516001600160e01b03169392505050565b611889611880856133ae565b61022b90613417565b6001600160e01b0316949350505050565b6118a2610d56565b6001600160a01b0316336001600160a01b0316146118d25760405162461bcd60e51b81526004016103f09061627f565b306118db610d56565b6001600160a01b03161461191957600080366040516118fb92919061626f565b604051809103902090505b80611912610131612b8f565b0361190657505b610fbc816134ca565b60008033905061196a86828787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612ee292505050565b9695505050505050565b600061197e61350d565b60005b85518110156119f75761028e60008783815181106119a1576119a16164bf565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff166119e557604051630b094f2760e31b815260040160405180910390fd5b806119ef816164d5565b915050611981565b506116bc858585856135b8565b600054610100900460ff1615808015611a245750600054600160ff909116105b80611a3e5750303b158015611a3e575060005460ff166001145b611aa15760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016103f0565b6000805460ff191660011790558015611ac4576000805461ff0019166101001790555b334114611ae45760405163022d8c9560e31b815260040160405180910390fd5b3a15611b03576040516383f1b1d360e01b815260040160405180910390fd5b611b2f6040518060400160405280600b81526020016a2129a1a3b7bb32b93737b960a91b815250613620565b611b49620151806212750068056bc75e2d63100000613677565b611b516136ae565b611b5c6120056136d5565b611b67612006613705565b611b71600a613735565b611b7d62015180613765565b61028e6020527ff0f52cefb444f33092ac77280e2ff9c808a9c078a96d3cd7513137548137ed8f8054600160ff1991821681179092557fb2c9e894c6f17bfc84a6708e0ea85c2729271d7cae0a8d875cd1080fb415e7a080548216831790557fd8ceb939a734f5a4e0a6fede9e31504e16ac856b555e8bac20ad743b9ff2976a80548216831790557f2a7b967fc66f4b36023165170b23a76f880d3dbbf244a856aeee9e670cef725980548216831790557fdb1a1113bac2e4f0e6f8c2f2bc4f6dbecf1fccb033d5df1b55b5c5ad6c20ac7980548216831790557f8b1888b379fb3b749668d86c5bf8aaada8e2276c6ced3a4efcc1e877827ce0b380548216831790557feeeea8d485053a64711f2c5802d2cc63251dd394956c140a2e30db7cef242ec580548216831790557f4cdb1a6c4b56f62f27f7202d75e865c2405f138cb32ec45019c0f2ca8f91e47280548216831790557f49d6c403a3197b15e024f109c83eb730d7af1a8b49fc6f820e09bad2597c14c980548216831790557f7a41b38ceb33f296c1ff3db5ffcc6542acb091d5fb27586f3c551dd2ebac063880548216831790557f701fe333ee20fad5d5a6a9930dddd3fb815af1d976d5250e394e39d6e4123e3880548216831790557fee7ba9842df249188adc0fc380980c3099f608b602924e083dd61e8e70845b4a80548216831790557f29973aeebf3c17f2c3a9cf7ace17f2798aa544e1ea7427938024cde6df46bac180548216831790557f74c0d6e29c82d6628d5f083f86fc15f0c6acef97321252a1eee0bd893dae276580548216831790556120066000527f1bdfc01e60036e5be56ae85d8394ddf727e1021b3d74de5b554fedea2de43767805490911690911790558015610fbc576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b6000606080600080600060606065546000801b148015611e615750606654155b611ea55760405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b60448201526064016103f0565b611ead613795565b611eb56137a4565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b6101c554604080516324776b7d60e21b815290516000926001600160a01b0316916391ddadf49160048083019260209291908290030181865afa925050508015611f46575060408051601f3d908101601f19168201909252611f43918101906164ee565b60015b61176d57610d6b436137b3565b6000611f6084848461381a565b90505b9392505050565b61022b5460009015611f8f57611f8161022b613891565b6001600160e01b0316905090565b5061022a5490565b611f9f610d56565b6001600160a01b0316336001600160a01b031614611fcf5760405162461bcd60e51b81526004016103f09061627f565b30611fd8610d56565b6001600160a01b0316146120165760008036604051611ff892919061626f565b604051809103902090505b8061200f610131612b8f565b0361200357505b610fbc816138c1565b6101f85460008281526101f9602052604080822054905163d45c443560e01b81526004810191909152909182916001600160a01b039091169063d45c443590602401602060405180830381865afa15801561207e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120a29190616331565b9050806001146120b25780611f63565b60009392505050565b33611007146120e157604051630f22c43960e41b815261100760048201526024016103f0565b6121476040518060400160405280600b81526020016a766f74696e6744656c617960a81b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505061392c9050565b156121f057602081146121755783838383604051630a5a604160e01b81526004016103f0949392919061653f565b604080516020601f84018190048102820181019092528281526000916121b69185858083850183828082843760009201919091525092939250506139859050565b9050806000036121e15784848484604051630a5a604160e01b81526004016103f0949392919061653f565b6121ea816134ca565b50612657565b6122576040518060400160405280600c81526020016b1d9bdd1a5b99d4195c9a5bd960a21b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505061392c9050565b156122fa57602081146122855783838383604051630a5a604160e01b81526004016103f0949392919061653f565b604080516020601f84018190048102820181019092528281526000916122c69185858083850183828082843760009201919091525092939250506139859050565b9050806000036122f15784848484604051630a5a604160e01b81526004016103f0949392919061653f565b6121ea8161398a565b612366604051806040016040528060118152602001701c1c9bdc1bdcd85b151a1c995cda1bdb19607a1b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505061392c9050565b1561240957602081146123945783838383604051630a5a604160e01b81526004016103f0949392919061653f565b604080516020601f84018190048102820181019092528281526000916123d59185858083850183828082843760009201919091525092939250506139859050565b9050806000036124005784848484604051630a5a604160e01b81526004016103f0949392919061653f565b6121ea81613a2d565b6124736040518060400160405280600f81526020016e38bab7b93ab6a73ab6b2b930ba37b960891b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505061392c9050565b1561251657602081146124a15783838383604051630a5a604160e01b81526004016103f0949392919061653f565b604080516020601f84018190048102820181019092528281526000916124e29185858083850183828082843760009201919091525092939250506139859050565b90508060000361250d5784848484604051630a5a604160e01b81526004016103f0949392919061653f565b6121ea81612c0e565b612585604051806040016040528060148152602001736d696e506572696f64416674657251756f72756d60601b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505061392c9050565b1561263657600881146125b35783838383604051630a5a604160e01b81526004016103f0949392919061653f565b60006125f9600884848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506139859050565b9050806001600160401b031660000361262d5784848484604051630a5a604160e01b81526004016103f0949392919061653f565b6121ea81613a70565b838383836040516325ee20d560e21b81526004016103f0949392919061653f565b7ff1ce9b2cbf50eeb05769a29e2543fd350cab46894a7dd9978a12d534bb20e6338484848460405161268c949392919061653f565b60405180910390a150505050565b6000610d6b6101635490565b6000610e3682613adc565b6126b9610d56565b6001600160a01b0316336001600160a01b0316146126e95760405162461bcd60e51b81526004016103f09061627f565b306126f2610d56565b6001600160a01b031614612730576000803660405161271292919061626f565b604051809103902090505b80612729610131612b8f565b0361271d57505b600080856001600160a01b031685858560405161274e92919061626f565b60006040518083038185875af1925050503d806000811461278b576040519150601f19603f3d011682016040523d82523d6000602084013e612790565b606091505b50915091506127b8828260405180606001604052806028815260200161692760289139613b1a565b50505050505050565b6000848484846040516020016127da9493929190616566565b60408051601f19818403018152919052805160209091012095945050505050565b612803610d56565b6001600160a01b0316336001600160a01b0316146128335760405162461bcd60e51b81526004016103f09061627f565b3061283c610d56565b6001600160a01b03161461287a576000803660405161285c92919061626f565b604051809103902090505b80612873610131612b8f565b0361286757505b610fbc81613a70565b600082518451146128e75760405162461bcd60e51b815260206004820152602860248201527f476f7665726e6f72427261766f3a20696e76616c6964207369676e61747572656044820152670e640d8cadccee8d60c31b60648201526084016103f0565b6128f5338787878787613b33565b61196a86866129048787613bf1565b85611974565b60008060008061291985613052565b93509350935093506116a684848484611052565b612935610d56565b6001600160a01b0316336001600160a01b0316146129655760405162461bcd60e51b81526004016103f09061627f565b3061296e610d56565b6001600160a01b0316146129ac576000803660405161298e92919061626f565b604051809103902090505b806129a5610131612b8f565b0361299957505b610fbc8161398a565b6000611f6383836129d160408051602081019091526000815290565b61381a565b6129de610d56565b6001600160a01b0316336001600160a01b031614612a0e5760405162461bcd60e51b81526004016103f09061627f565b30612a17610d56565b6001600160a01b031614612a555760008036604051612a3792919061626f565b604051809103902090505b80612a4e610131612b8f565b03612a4257505b610fbc81613a2d565b60006064612a6b836117e5565b6101c554604051632394e7a360e21b8152600481018690526001600160a01b0390911690638e539e8c90602401602060405180830381865afa158015612ab5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ad99190616331565b612ae391906165b1565b610e3691906165de565b600080600080612afc85613052565b93509350935093506116a68484848461127d565b60006001600160e01b03198216636e665ced60e01b1480610e365750610e3682613d23565b6000610e36612b42613dbf565b8360405161190160f01b8152600281019290925260228201526042902090565b6000806000612b7387878787613dc9565b9150915061136681613e8d565b600061196a8686868686613fd7565b6000612baa8254600f81810b600160801b909204900b131590565b15612bc857604051631ed9509560e11b815260040160405180910390fd5b508054600f0b6000818152600180840160205260408220805492905583546fffffffffffffffffffffffffffffffff191692016001600160801b03169190911790915590565b6064811115612c915760405162461bcd60e51b815260206004820152604360248201527f476f7665726e6f72566f74657351756f72756d4672616374696f6e3a2071756f60448201527f72756d4e756d657261746f72206f7665722071756f72756d44656e6f6d696e616064820152623a37b960e91b608482015260a4016103f0565b6000612c9b611f6a565b90508015801590612cad575061022b54155b15612d1257604080518082019091526000815261022b9060208101612cd1846140da565b6001600160e01b039081169091528254600181018455600093845260209384902083519490930151909116600160201b0263ffffffff909316929092179101555b612d40612d2d612d20611edf565b65ffffffffffff166133ae565b612d36846140da565b61022b9190614143565b505060408051828152602081018490527f0553476bf02ef2726e8ce5ced78d63e26e602e4a2257b1f559418e24b4633997910160405180910390a15050565b30612d88610d56565b6001600160a01b031614612e195760005b84518110156116a657306001600160a01b0316858281518110612dbe57612dbe6164bf565b60200260200101516001600160a01b031603612e0957612e09838281518110612de957612de96164bf565b60200260200101518051906020012061013161415e90919063ffffffff16565b612e12816164d5565b9050612d99565b5050505050565b60005b8451811015612e995761028e6000868381518110612e4357612e436164bf565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16612e8757604051630b094f2760e31b815260040160405180910390fd5b80612e91816164d5565b915050612e23565b50612e19858585858561419a565b30612eb0610d56565b6001600160a01b031614612e195761013154600f81810b600160801b909204900b1315612e1957600061013155612e19565b60006116bc85858585612f0060408051602081019091526000815290565b612b80565b600080612f118361420f565b90506004816007811115612f2757612f27615cef565b14612f325792915050565b60008381526101f9602052604090205480612f4e575092915050565b6101f854604051632ab0f52960e01b8152600481018390526001600160a01b0390911690632ab0f52990602401602060405180830381865afa158015612f98573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fbc9190616600565b15612fcb575060079392505050565b6101f854604051632c258a9f60e11b8152600481018390526001600160a01b039091169063584b153e90602401602060405180830381865afa158015613015573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130399190616600565b15613048575060059392505050565b5060029392505050565b606080606060008061019360008781526020019081526020016000209050806001018160020161322483600301805480602002602001604051908101604052809291908181526020016000905b8282101561314b5783829060005260206000200180546130be906162b6565b80601f01602080910402602001604051908101604052809291908181526020018280546130ea906162b6565b80156131375780601f1061310c57610100808354040283529160200191613137565b820191906000526020600020905b81548152906001019060200180831161311a57829003601f168201915b50505050508152602001906001019061309f565b50505060048601805460408051602080840282018101909252828152935060009084015b8282101561321b57838290600052602060002001805461318e906162b6565b80601f01602080910402602001604051908101604052809291908181526020018280546131ba906162b6565b80156132075780601f106131dc57610100808354040283529160200191613207565b820191906000526020600020905b8154815290600101906020018083116131ea57829003601f168201915b50505050508152602001906001019061316f565b50505050613bf1565b600984015483546040805160208084028201810190925282815291869183018282801561327a57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161325c575b50505050509350828054806020026020016040519081016040528092919081815260200182805480156132cc57602002820191906000526020600020905b8154815260200190600101908083116132b8575b505050505092509450945094509450509193509193565b6000806132f2868686866127c1565b600081815261019360205260409020549091506001600160a01b031633811480613346575061331f61269a565b61334482600161332d611edf565b6133379190616419565b65ffffffffffff166129b5565b105b6133a25760405162461bcd60e51b815260206004820152602760248201527f476f7665726e6f72427261766f3a2070726f706f7365722061626f76652074686044820152661c995cda1bdb1960ca1b60648201526084016103f0565b61166d87878787614347565b600063ffffffff8211156134135760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201526532206269747360d01b60648201526084016103f0565b5090565b81546000908181600581111561347457600061343284614355565b61343c90856164ac565b60008881526020902090915081015463ffffffff908116908716101561346457809150613472565b61346f816001616406565b92505b505b60006134828787858561443d565b905080156134bd576134a7876134996001846164ac565b600091825260209091200190565b54600160201b90046001600160e01b031661166d565b6000979650505050505050565b6101615460408051918252602082018390527fc565b045403dc03c2eea82b81a0465edad9e2e7fc4d97e11421c209da93d7a93910160405180910390a161016155565b61028f5460ff166135b6576a084595161401484a0000006120056001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613564573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135889190616331565b10156135a7576040516311b6707f60e01b815260040160405180910390fd5b61028f805460ff191660011790555b565b600061361433868686516001600160401b038111156135d9576135d9615744565b60405190808252806020026020018201604052801561360c57816020015b60608152602001906001900390816135f75790505b508787613b33565b6116bc85858585614493565b600054610100900460ff166136475760405162461bcd60e51b81526004016103f090616622565b61366e816136696040805180820190915260018152603160f81b602082015290565b614872565b610fbc816148c1565b600054610100900460ff1661369e5760405162461bcd60e51b81526004016103f090616622565b6136a98383836148f9565b505050565b600054610100900460ff166135b65760405162461bcd60e51b81526004016103f090616622565b600054610100900460ff166136fc5760405162461bcd60e51b81526004016103f090616622565b610fbc8161493b565b600054610100900460ff1661372c5760405162461bcd60e51b81526004016103f090616622565b610fbc81614985565b600054610100900460ff1661375c5760405162461bcd60e51b81526004016103f090616622565b610fbc816149ac565b600054610100900460ff1661378c5760405162461bcd60e51b81526004016103f090616622565b610fbc816149d3565b606060678054610fcf906162b6565b606060688054610fcf906162b6565b600065ffffffffffff8211156134135760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203460448201526538206269747360d01b60648201526084016103f0565b6101c554604051630748d63560e31b81526001600160a01b038581166004830152602482018590526000921690633a46b1a890604401602060405180830381865afa15801561386d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f609190616331565b805460009080156120b2576138ab836134996001846164ac565b54600160201b90046001600160e01b0316611f63565b6101f854604080516001600160a01b03928316815291831660208301527f08f74ea46ef7894f65eabfb5e6e695de773a000b47c529ab559178069b226401910160405180910390a16101f880546001600160a01b0319166001600160a01b0392909216919091179055565b60008160405160200161393f919061666d565b6040516020818303038152906040528051906020012083604051602001613966919061666d565b6040516020818303038152906040528051906020012014905092915050565b015190565b600081116139ea5760405162461bcd60e51b815260206004820152602760248201527f476f7665726e6f7253657474696e67733a20766f74696e6720706572696f6420604482015266746f6f206c6f7760c81b60648201526084016103f0565b6101625460408051918252602082018390527f7e3f7f0708a84de9203036abaa450dccc85ad5ff52f78c170f3edb55cf5e8828910160405180910390a161016255565b6101635460408051918252602082018390527fccb45da8d5717e6c4544694297c4ba5cf151d455c9bb0ed4fc7a38411bc05461910160405180910390a161016355565b61025c54604080516001600160401b03928316815291831660208301527f7ca4ac117ed3cdce75c1161d8207c440389b1a15d69d096831664657c07dafc2910160405180910390a161025c805467ffffffffffffffff19166001600160401b0392909216919091179055565b60008181526101306020526040812060010154610e36906001600160401b0316600084815261025d60205260409020546001600160401b03166149fa565b60608315613b29575081611f63565b611f638383614a10565b805160208201206000613b518787613b4b8888613bf1565b856127c1565b600081815261019360205260409020600981015491925090613be65780546001600160a01b0319166001600160a01b038a161781558751613b9b90600183019060208b01906154df565b508651613bb190600283019060208a0190615540565b508551613bc7906003830190602089019061557b565b508451613bdd90600483019060208801906155cd565b50600981018390555b505050505050505050565b6060600082516001600160401b03811115613c0e57613c0e615744565b604051908082528060200260200182016040528015613c4157816020015b6060815260200190600190039081613c2c5790505b50905060005b8151811015613d1b57848181518110613c6257613c626164bf565b602002602001015151600014613cd257848181518110613c8457613c846164bf565b602002602001015180519060200120848281518110613ca557613ca56164bf565b6020026020010151604051602001613cbe929190616689565b604051602081830303815290604052613ced565b838181518110613ce457613ce46164bf565b60200260200101515b828281518110613cff57613cff6164bf565b602002602001018190525080613d14906164d5565b9050613c47565b509392505050565b600063288ace0360e11b6318df743f60e31b63bf26d89760e01b6379dd796f60e01b6001600160e01b03198616821480613d6957506001600160e01b0319868116908216145b80613d8057506001600160e01b0319868116908516145b80613d9b57506001600160e01b03198616630271189760e51b145b8061196a57506301ffc9a760e01b6001600160e01b03198716149695505050505050565b6000610d6b614a3a565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115613e005750600090506003613e84565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015613e54573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116613e7d57600060019250925050613e84565b9150600090505b94509492505050565b6000816004811115613ea157613ea1615cef565b03613ea95750565b6001816004811115613ebd57613ebd615cef565b03613f0a5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016103f0565b6002816004811115613f1e57613f1e615cef565b03613f6b5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016103f0565b6003816004811115613f7f57613f7f615cef565b03610fbc5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016103f0565b600080613fe78787878787614aae565b600088815261025d60205260409020549091506001600160401b0316158015614014575061401487614c04565b1561196a57600061402e61025c546001600160401b031690565b614036611edf565b65ffffffffffff1661404891906166ba565b9050614053886126a6565b816001600160401b031611156140a2576040516001600160401b038216815288907f541f725fb9f7c98a30cc9c0ff32fbb14358cd7159c847a3aa20a2bdc442ba5119060200160405180910390a25b600088815261025d60205260409020805467ffffffffffffffff19166001600160401b03929092169190911790559695505050505050565b60006001600160e01b038211156134135760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20326044820152663234206269747360c81b60648201526084016103f0565b600080614151858585614c44565b915091505b935093915050565b8154600160801b90819004600f0b6000818152600180860160205260409091209390935583546001600160801b03908116939091011602179055565b6101f85460405163e38335e560e01b81526001600160a01b039091169063e38335e59034906141d690889088908890600090899060040161634a565b6000604051808303818588803b1580156141ef57600080fd5b505af1158015614203573d6000803e3d6000fd5b50505050505050505050565b600081815261013060205260408120600281015460ff16156142345750600792915050565b6002810154610100900460ff161561424f5750600292915050565b600083815261013060205260408120546001600160401b0316908190036142b85760405162461bcd60e51b815260206004820152601d60248201527f476f7665726e6f723a20756e6b6e6f776e2070726f706f73616c20696400000060448201526064016103f0565b60006142c2611edf565b65ffffffffffff1690508082106142de57506000949350505050565b60006142e9866126a6565b90508181106142fe5750600195945050505050565b61430786614c04565b801561432a57506000868152610193602052604090206006810154600590910154115b1561433b5750600495945050505050565b50600395945050505050565b60006116bc85858585614de3565b60008160000361436757506000919050565b6000600161437484614e99565b901c6001901b9050600181848161438d5761438d6165c8565b048201901c905060018184816143a5576143a56165c8565b048201901c905060018184816143bd576143bd6165c8565b048201901c905060018184816143d5576143d56165c8565b048201901c905060018184816143ed576143ed6165c8565b048201901c90506001818481614405576144056165c8565b048201901c9050600181848161441d5761441d6165c8565b048201901c9050611f6381828581614437576144376165c8565b04614f2d565b60005b81831015613d1b5760006144548484614f3c565b60008781526020902090915063ffffffff86169082015463ffffffff16111561447f5780925061448d565b61448a816001616406565b93505b50614440565b6000336144a08184614f57565b6144ec5760405162461bcd60e51b815260206004820152601d60248201527f476f7665726e6f723a2070726f706f736572207265737472696374656400000060448201526064016103f0565b60006144f6611edf565b65ffffffffffff16905061450861269a565b61451783610cb16001856164ac565b101561457f5760405162461bcd60e51b815260206004820152603160248201527f476f7665726e6f723a2070726f706f73657220766f7465732062656c6f7720706044820152701c9bdc1bdcd85b081d1a1c995cda1bdb19607a1b60648201526084016103f0565b600061459488888888805190602001206127c1565b905086518851146145b75760405162461bcd60e51b81526004016103f0906166da565b85518851146145d85760405162461bcd60e51b81526004016103f0906166da565b60008851116146295760405162461bcd60e51b815260206004820152601860248201527f476f7665726e6f723a20656d7074792070726f706f73616c000000000000000060448201526064016103f0565b600081815261013060205260409020546001600160401b0316156146995760405162461bcd60e51b815260206004820152602160248201527f476f7665726e6f723a2070726f706f73616c20616c72656164792065786973746044820152607360f81b60648201526084016103f0565b60006146a56101615490565b6146af9084616406565b905060006146bd6101625490565b6146c79083616406565b90506040518060e001604052806146dd84615048565b6001600160401b031681526001600160a01b03871660208201526000604082015260600161470a83615048565b6001600160401b03908116825260006020808401829052604080850183905260609485018390528883526101308252918290208551815492870151878501519186166001600160e01b031990941693909317600160401b6001600160a01b039094168402176001600160e01b0316600160e01b60e09290921c91909102178155938501516080860151908416921c0217600183015560a08301516002909201805460c09094015161ffff1990941692151561ff00191692909217610100931515939093029290921790558a517f7d84a6263ae0d98d3329bd7b46bb4e8d6f98cd35a7adb45c274c8b7fd5ebd5e091859188918e918e9181111561480f5761480f615744565b60405190808252806020026020018201604052801561484257816020015b606081526020019060019003908161482d5790505b508d88888f60405161485c9998979695949392919061671b565b60405180910390a1509098975050505050505050565b600054610100900460ff166148995760405162461bcd60e51b81526004016103f090616622565b60676148a583826167f9565b5060686148b282826167f9565b50506000606581905560665550565b600054610100900460ff166148e85760405162461bcd60e51b81526004016103f090616622565b61012f6148f582826167f9565b5050565b600054610100900460ff166149205760405162461bcd60e51b81526004016103f090616622565b614929836134ca565b6149328261398a565b6136a981613a2d565b600054610100900460ff166149625760405162461bcd60e51b81526004016103f090616622565b6101c580546001600160a01b0319166001600160a01b0392909216919091179055565b600054610100900460ff166120165760405162461bcd60e51b81526004016103f090616622565b600054610100900460ff16610fb35760405162461bcd60e51b81526004016103f090616622565b600054610100900460ff1661287a5760405162461bcd60e51b81526004016103f090616622565b6000818311614a095781611f63565b5090919050565b815115614a205781518083602001fd5b8060405162461bcd60e51b81526004016103f091906158fd565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f614a656150b0565b614a6d615109565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b6000858152610130602052604081206001614ac888611678565b6007811115614ad957614ad9615cef565b14614b325760405162461bcd60e51b815260206004820152602360248201527f476f7665726e6f723a20766f7465206e6f742063757272656e746c792061637460448201526269766560e81b60648201526084016103f0565b8054600090614b4c9088906001600160401b03168661381a565b9050614b5b888888848861513a565b8351600003614bb057866001600160a01b03167fb8e138887d0aa13bab447e82de9d5c1777041ecd21ca36ba824ff1e6c07ddda489888489604051614ba394939291906168b8565b60405180910390a261166d565b866001600160a01b03167fe2babfbac5889a709b63bb7f598b324e08bc5a4fb9ec647fb3cbc9ec07eb87128988848989604051614bf19594939291906168e0565b60405180910390a2979650505050505050565b6000818152610193602052604081206005810154614c3b610d1d85600090815261013060205260409020546001600160401b031690565b11159392505050565b825460009081908015614d8a576000614c62876134996001856164ac565b60408051808201909152905463ffffffff808216808452600160201b9092046001600160e01b031660208401529192509087161015614ce35760405162461bcd60e51b815260206004820152601b60248201527f436865636b706f696e743a2064656372656173696e67206b657973000000000060448201526064016103f0565b805163ffffffff808816911603614d2b5784614d04886134996001866164ac565b80546001600160e01b0392909216600160201b0263ffffffff909216919091179055614d7a565b6040805180820190915263ffffffff80881682526001600160e01b0380881660208085019182528b54600181018d5560008d81529190912094519151909216600160201b029216919091179101555b6020015192508391506141569050565b50506040805180820190915263ffffffff80851682526001600160e01b0380851660208085019182528854600181018a5560008a815291822095519251909316600160201b029190931617920191909155905081614156565b600080614df2868686866152d8565b60008181526101f96020526040902054909150156116bc576101f85460008281526101f960205260409081902054905163c4d252f560e01b81526001600160a01b039092169163c4d252f591614e4e9160040190815260200190565b600060405180830381600087803b158015614e6857600080fd5b505af1158015614e7c573d6000803e3d6000fd5b50505060008281526101f960205260408120555095945050505050565b600080608083901c15614eae57608092831c92015b604083901c15614ec057604092831c92015b602083901c15614ed257602092831c92015b601083901c15614ee457601092831c92015b600883901c15614ef657600892831c92015b600483901c15614f0857600492831c92015b600283901c15614f1a57600292831c92015b600183901c15610e365760010192915050565b6000818310614a095781611f63565b6000614f4b60028484186165de565b611f6390848416616406565b80516000906034811015614f6f576001915050610e36565b82810160131901516001600160a01b031981166b046e0e4dee0dee6cae47a60f60a31b14614fa257600192505050610e36565b600080614fb06028856164ac565b90505b8381101561502757600080614fe7888481518110614fd357614fd36164bf565b01602001516001600160f81b0319166153e5565b9150915081614fff5760019650505050505050610e36565b8060ff166004856001600160a01b0316901b179350505080615020906164d5565b9050614fb3565b50856001600160a01b0316816001600160a01b031614935050505092915050565b60006001600160401b038211156134135760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203660448201526534206269747360d01b60648201526084016103f0565b6000806150bb613795565b8051909150156150d2578051602090910120919050565b60655480156150e15792915050565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4709250505090565b6000806151146137a4565b80519091501561512b578051602090910120919050565b60665480156150e15792915050565b6000858152610193602090815260408083206001600160a01b038816845260088101909252909120805460ff16156151ca5760405162461bcd60e51b815260206004820152602d60248201527f476f7665726e6f72436f6d7061746962696c697479427261766f3a20766f746560448201526c08185b1c9958591e4818d85cdd609a1b60648201526084016103f0565b805460ff86166101000261ffff199091161760011781556151ea84615477565b81546001600160601b039190911662010000026dffffffffffffffffffffffff00001990911617815560ff851661523a578382600601600082825461522f9190616406565b909155506127b89050565b60001960ff86160161525a578382600501600082825461522f9190616406565b60011960ff86160161527a578382600701600082825461522f9190616406565b60405162461bcd60e51b815260206004820152602d60248201527f476f7665726e6f72436f6d7061746962696c697479427261766f3a20696e766160448201526c6c696420766f7465207479706560981b60648201526084016103f0565b6000806152e7868686866127c1565b905060006152f482611678565b9050600281600781111561530a5761530a615cef565b1415801561532a5750600681600781111561532757615327615cef565b14155b80156153485750600781600781111561534557615345615cef565b14155b6153945760405162461bcd60e51b815260206004820152601d60248201527f476f7665726e6f723a2070726f706f73616c206e6f742061637469766500000060448201526064016103f0565b6000828152610130602052604090819020600201805461ff001916610100179055517f789cf55be980739dad1d0699b93b58e806b51c9d96619bfa8fe0a28abaa7b30c906112459084815260200190565b60008060f883901c602f811180156154005750603a8160ff16105b1561541557600194602f199091019350915050565b8060ff16604010801561542b575060478160ff16105b15615440576001946036199091019350915050565b8060ff166060108015615456575060678160ff16105b1561546b576001946056199091019350915050565b50600093849350915050565b60006001600160601b038211156134135760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203960448201526536206269747360d01b60648201526084016103f0565b828054828255906000526020600020908101928215615534579160200282015b8281111561553457825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906154ff565b5061341392915061561f565b828054828255906000526020600020908101928215615534579160200282015b82811115615534578251825591602001919060010190615560565b8280548282559060005260206000209081019282156155c1579160200282015b828111156155c157825182906155b190826167f9565b509160200191906001019061559b565b50613413929150615634565b828054828255906000526020600020908101928215615613579160200282015b82811115615613578251829061560390826167f9565b50916020019190600101906155ed565b50613413929150615651565b5b808211156134135760008155600101615620565b80821115613413576000615648828261566e565b50600101615634565b80821115613413576000615665828261566e565b50600101615651565b50805461567a906162b6565b6000825580601f1061568a575050565b601f016020900490600052602060002090810190610fbc919061561f565b6000602082840312156156ba57600080fd5b5035919050565b6000602082840312156156d357600080fd5b81356001600160e01b031981168114611f6357600080fd5b803560ff8116811461176d57600080fd5b60008083601f84011261570e57600080fd5b5081356001600160401b0381111561572557600080fd5b60208301915083602082850101111561573d57600080fd5b9250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561578257615782615744565b604052919050565b60006001600160401b038211156157a3576157a3615744565b50601f01601f191660200190565b600082601f8301126157c257600080fd5b81356157d56157d08261578a565b61575a565b8181528460208386010111156157ea57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060008060008060e0898b03121561582357600080fd5b8835975061583360208a016156eb565b965060408901356001600160401b038082111561584f57600080fd5b61585b8c838d016156fc565b909850965060608b013591508082111561587457600080fd5b506158818b828c016157b1565b94505061589060808a016156eb565b925060a0890135915060c089013590509295985092959890939650565b60005b838110156158c85781810151838201526020016158b0565b50506000910152565b600081518084526158e98160208601602086016158ad565b601f01601f19169290920160200192915050565b602081526000611f6360208301846158d1565b6001600160a01b0381168114610fbc57600080fd5b6000806000806080858703121561593b57600080fd5b843561594681615910565b9350602085013561595681615910565b92506040850135915060608501356001600160401b0381111561597857600080fd5b615984878288016157b1565b91505092959194509250565b60006001600160401b038211156159a9576159a9615744565b5060051b60200190565b600082601f8301126159c457600080fd5b813560206159d46157d083615990565b82815260059290921b840181019181810190868411156159f357600080fd5b8286015b84811015615a17578035615a0a81615910565b83529183019183016159f7565b509695505050505050565b600082601f830112615a3357600080fd5b81356020615a436157d083615990565b82815260059290921b84018101918181019086841115615a6257600080fd5b8286015b84811015615a175780358352918301918301615a66565b600082601f830112615a8e57600080fd5b81356020615a9e6157d083615990565b82815260059290921b84018101918181019086841115615abd57600080fd5b8286015b84811015615a175780356001600160401b03811115615ae05760008081fd5b615aee8986838b01016157b1565b845250918301918301615ac1565b60008060008060808587031215615b1257600080fd5b84356001600160401b0380821115615b2957600080fd5b615b35888389016159b3565b95506020870135915080821115615b4b57600080fd5b615b5788838901615a22565b94506040870135915080821115615b6d57600080fd5b50615b7a87828801615a7d565b949793965093946060013593505050565b600081518084526020808501945080840160005b83811015615bc45781516001600160a01b031687529582019590820190600101615b9f565b509495945050505050565b600081518084526020808501945080840160005b83811015615bc457815187529582019590820190600101615be3565b600081518084526020808501808196508360051b8101915082860160005b85811015615c47578284038952615c358483516158d1565b98850198935090840190600101615c1d565b5091979650505050505050565b608081526000615c676080830187615b8b565b8281036020840152615c798187615bcf565b90508281036040840152615c8d8186615bff565b9050828103606084015261166d8185615bff565b600080600080600060a08688031215615cb957600080fd5b85359450615cc9602087016156eb565b9350615cd7604087016156eb565b94979396509394606081013594506080013592915050565b634e487b7160e01b600052602160045260246000fd5b6020810160088310615d2757634e487b7160e01b600052602160045260246000fd5b91905290565b60008060408385031215615d4057600080fd5b823591506020830135615d5281615910565b809150509250929050565b600060208284031215615d6f57600080fd5b8135611f6381615910565b60008060408385031215615d8d57600080fd5b82359150615d9d602084016156eb565b90509250929050565b600080600080600060808688031215615dbe57600080fd5b85359450615dce602087016156eb565b935060408601356001600160401b0380821115615dea57600080fd5b615df689838a016156fc565b90955093506060880135915080821115615e0f57600080fd5b50615e1c888289016157b1565b9150509295509295909350565b60008060008060608587031215615e3f57600080fd5b84359350615e4f602086016156eb565b925060408501356001600160401b03811115615e6a57600080fd5b615e76878288016156fc565b95989497509550505050565b60008060008060808587031215615e9857600080fd5b84356001600160401b0380821115615eaf57600080fd5b615ebb888389016159b3565b95506020870135915080821115615ed157600080fd5b615edd88838901615a22565b94506040870135915080821115615ef357600080fd5b615eff88838901615a7d565b93506060870135915080821115615f1557600080fd5b50615984878288016157b1565b60ff60f81b8816815260e060208201526000615f4160e08301896158d1565b8281036040840152615f5381896158d1565b606084018890526001600160a01b038716608085015260a0840186905283810360c08501529050610f268185615bcf565b600080600060608486031215615f9957600080fd5b8335615fa481615910565b92506020840135915060408401356001600160401b03811115615fc657600080fd5b615fd2868287016157b1565b9150509250925092565b60008060008060408587031215615ff257600080fd5b84356001600160401b038082111561600957600080fd5b616015888389016156fc565b9096509450602087013591508082111561602e57600080fd5b50615e76878288016156fc565b600080600080600060a0868803121561605357600080fd5b853561605e81615910565b9450602086013561606e81615910565b935060408601356001600160401b038082111561608a57600080fd5b61609689838a01615a22565b945060608801359150808211156160ac57600080fd5b6160b889838a01615a22565b93506080880135915080821115615e0f57600080fd5b600080600080606085870312156160e457600080fd5b84356160ef81615910565b93506020850135925060408501356001600160401b03811115615e6a57600080fd5b60006020828403121561612357600080fd5b81356001600160401b0381168114611f6357600080fd5b600080600080600060a0868803121561615257600080fd5b85356001600160401b038082111561616957600080fd5b61617589838a016159b3565b9650602088013591508082111561618b57600080fd5b61619789838a01615a22565b955060408801359150808211156161ad57600080fd5b6161b989838a01615a7d565b945060608801359150808211156161cf57600080fd5b6160b889838a01615a7d565b600080604083850312156161ee57600080fd5b82356161f981615910565b946020939093013593505050565b600080600080600060a0868803121561621f57600080fd5b853561622a81615910565b9450602086013561623a81615910565b9350604086013592506060860135915060808601356001600160401b0381111561626357600080fd5b615e1c888289016157b1565b8183823760009101908152919050565b60208082526018908201527f476f7665726e6f723a206f6e6c79476f7665726e616e63650000000000000000604082015260600190565b600181811c908216806162ca57607f821691505b6020821081036162ea57634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526021908201527f476f7665726e6f723a2070726f706f73616c206e6f74207375636365737366756040820152601b60fa1b606082015260800190565b60006020828403121561634357600080fd5b5051919050565b60a08152600061635d60a0830188615b8b565b828103602084015261636f8188615bcf565b905082810360408401526163838187615bff565b60608401959095525050608001529392505050565b60c0815260006163ab60c0830189615b8b565b82810360208401526163bd8189615bcf565b905082810360408401526163d18188615bff565b60608401969096525050608081019290925260a0909101529392505050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610e3657610e366163f0565b65ffffffffffff828116828216039080821115616438576164386163f0565b5092915050565b60006020828403121561645157600080fd5b81516001600160401b0381111561646757600080fd5b8201601f8101841361647857600080fd5b80516164866157d08261578a565b81815285602083850101111561649b57600080fd5b6116bc8260208301602086016158ad565b81810381811115610e3657610e366163f0565b634e487b7160e01b600052603260045260246000fd5b6000600182016164e7576164e76163f0565b5060010190565b60006020828403121561650057600080fd5b815165ffffffffffff81168114611f6357600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b604081526000616553604083018688616516565b828103602084015261166d818587616516565b6080815260006165796080830187615b8b565b828103602084015261658b8187615bcf565b9050828103604084015261659f8186615bff565b91505082606083015295945050505050565b8082028115828204841417610e3657610e366163f0565b634e487b7160e01b600052601260045260246000fd5b6000826165fb57634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561661257600080fd5b81518015158114611f6357600080fd5b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6000825161667f8184602087016158ad565b9190910192915050565b6001600160e01b03198316815281516000906166ac8160048501602087016158ad565b919091016004019392505050565b6001600160401b03818116838216019080821115616438576164386163f0565b60208082526021908201527f476f7665726e6f723a20696e76616c69642070726f706f73616c206c656e67746040820152600d60fb1b606082015260800190565b8981526001600160a01b0389166020820152610120604082018190526000906167468382018b615b8b565b9050828103606084015261675a818a615bcf565b9050828103608084015261676e8189615bff565b905082810360a08401526167828188615bff565b90508560c08401528460e08401528281036101008401526167a381856158d1565b9c9b505050505050505050505050565b601f8211156136a957600081815260208120601f850160051c810160208610156167da5750805b601f850160051c820191505b818110156116a6578281556001016167e6565b81516001600160401b0381111561681257616812615744565b6168268161682084546162b6565b846167b3565b602080601f83116001811461685b57600084156168435750858301515b600019600386901b1c1916600185901b1785556116a6565b600085815260208120601f198616915b8281101561688a5788860151825594840194600190910190840161686b565b50858210156168a85787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b84815260ff8416602082015282604082015260806060820152600061196a60808301846158d1565b85815260ff8516602082015283604082015260a06060820152600061690860a08301856158d1565b828103608084015261691a81856158d1565b9897505050505050505056fe476f7665726e6f723a2072656c617920726576657274656420776974686f7574206d657373616765a164736f6c6343000811000a", + Code: "6080604052600436106103bc5760003560e01c80637b3c71d3116101f2578063c28bc2fa1161010d578063e23a9a52116100a0578063f23a6e611161006f578063f23a6e6114610d73578063f8ce560a14610d9f578063fc0c546a14610dbf578063fe0d94c114610de057600080fd5b8063e23a9a5214610c48578063ea0217cf14610d13578063eb9019d414610d33578063ece40cc114610d5357600080fd5b8063da95691a116100dc578063da95691a14610b8e578063dd4e2ba514610bae578063ddf0b00914610bf4578063deaaa7cc14610c1457600080fd5b8063c28bc2fa14610b1c578063c59057e414610b2f578063d07f91e914610b4f578063d33219b414610b6f57600080fd5b8063a7713a7011610185578063b58131b011610154578063b58131b014610aa0578063bc197c8114610ab5578063c01f9e3714610ae1578063c170ec0b14610b0157600080fd5b8063a7713a7014610a2b578063a890c91014610a40578063ab58fb8e14610a60578063ac43175114610a8057600080fd5b806384b0196e116101c157806384b0196e146109a357806391ddadf4146109cb57806397c3d334146109f75780639a802a6d14610a0b57600080fd5b80637b3c71d3146109395780637d5e81e2146109595780638129fc1c146109795780638456cb591461098e57600080fd5b806332b8113e116102e2578063533ddd14116102755780635f398a14116102445780635f398a14146108b257806360c4247f146108d257806363d42b38146108f257806370b0f6601461091957600080fd5b8063533ddd141461081757806354fd4d501461084857806356781388146108725780635c975abb1461089257600080fd5b806340e58ee5116102b157806340e58ee5146107775780634385963214610797578063452115d6146107e25780634bf5d7e91461080257600080fd5b806332b8113e146106eb5780633932abb1146107145780633bccf4fd1461072a5780633e4f49e61461074a57600080fd5b8063143489d01161035a5780632656227d116103295780632656227d1461063d5780632d63f693146106505780632fe3e26114610687578063328dd982146106bb57600080fd5b8063143489d01461056e578063150b7a02146105c4578063160cbed71461060857806324bc1a641461062857600080fd5b8063034201811161039657806303420181146104f7578063046f7da21461051757806306f3f9e61461052c57806306fdde031461054c57600080fd5b8063013cf08b1461042c57806301ffc9a7146104a757806302a251a3146104d757600080fd5b3661042757306103ca610df3565b6001600160a01b0316146104255760405162461bcd60e51b815260206004820152601f60248201527f476f7665726e6f723a206d7573742073656e6420746f206578656375746f720060448201526064015b60405180910390fd5b005b600080fd5b34801561043857600080fd5b5061044c61044736600461585e565b610e0d565b604080519a8b526001600160a01b0390991660208b0152978901969096526060880194909452608087019290925260a086015260c085015260e084015215156101008301521515610120820152610140015b60405180910390f35b3480156104b357600080fd5b506104c76104c2366004615877565b610ec8565b604051901515815260200161049e565b3480156104e357600080fd5b50610162545b60405190815260200161049e565b34801561050357600080fd5b506104e96105123660046159bd565b610ed9565b34801561052357600080fd5b50610425610fd1565b34801561053857600080fd5b5061042561054736600461585e565b61103a565b34801561055857600080fd5b506105616110c5565b60405161049e9190615ab3565b34801561057a57600080fd5b506105ac61058936600461585e565b60009081526101306020526040902054600160401b90046001600160a01b031690565b6040516001600160a01b03909116815260200161049e565b3480156105d057600080fd5b506105ef6105df366004615adb565b630a85bd0160e11b949350505050565b6040516001600160e01b0319909116815260200161049e565b34801561061457600080fd5b506104e9610623366004615cb2565b611158565b34801561063457600080fd5b506104e961135d565b6104e961064b366004615cb2565b611383565b34801561065c57600080fd5b506104e961066b36600461585e565b600090815261013060205260409020546001600160401b031690565b34801561069357600080fd5b506104e97fb3b3f3b703cd84ce352197dcff232b1b5d3cfb2025ce47cf04742d0651f1af8881565b3480156106c757600080fd5b506106db6106d636600461585e565b611476565b60405161049e9493929190615e0a565b3480156106f757600080fd5b5061025c546040516001600160401b03909116815260200161049e565b34801561072057600080fd5b50610161546104e9565b34801561073657600080fd5b506104e9610745366004615e57565b611708565b34801561075657600080fd5b5061076a61076536600461585e565b61177e565b60405161049e9190615ebb565b34801561078357600080fd5b5061042561079236600461585e565b611789565b3480156107a357600080fd5b506104c76107b2366004615ee3565b6000828152610193602090815260408083206001600160a01b038516845260080190915290205460ff1692915050565b3480156107ee57600080fd5b506104e96107fd366004615cb2565b6117b4565b34801561080e57600080fd5b506105616117cb565b34801561082357600080fd5b506104c7610832366004615f13565b61028e6020526000908152604090205460ff1681565b34801561085457600080fd5b506040805180820190915260018152603160f81b6020820152610561565b34801561087e57600080fd5b506104e961088d366004615f30565b611878565b34801561089e57600080fd5b5061028f546104c790610100900460ff1681565b3480156108be57600080fd5b506104e96108cd366004615f5c565b6118a1565b3480156108de57600080fd5b506104e96108ed36600461585e565b6118eb565b3480156108fe57600080fd5b5061028f546105ac906201000090046001600160a01b031681565b34801561092557600080fd5b5061042561093436600461585e565b6119a0565b34801561094557600080fd5b506104e9610954366004615fdf565b611a28565b34801561096557600080fd5b506104e9610974366004616038565b611a7a565b34801561098557600080fd5b50610425611b0a565b34801561099a57600080fd5b50610425611f60565b3480156109af57600080fd5b506109b8611fcd565b60405161049e97969594939291906160d8565b3480156109d757600080fd5b506109e061206b565b60405165ffffffffffff909116815260200161049e565b348015610a0357600080fd5b5060646104e9565b348015610a1757600080fd5b506104e9610a2636600461613a565b6120df565b348015610a3757600080fd5b506104e96120f6565b348015610a4c57600080fd5b50610425610a5b366004615f13565b612123565b348015610a6c57600080fd5b506104e9610a7b36600461585e565b6121ab565b348015610a8c57600080fd5b50610425610a9b366004616192565b612247565b348015610aac57600080fd5b506104e9612826565b348015610ac157600080fd5b506105ef610ad03660046161f1565b63bc197c8160e01b95945050505050565b348015610aed57600080fd5b506104e9610afc36600461585e565b612832565b348015610b0d57600080fd5b5061028f546104c79060ff1681565b610425610b2a366004616284565b61283d565b348015610b3b57600080fd5b506104e9610b4a366004615cb2565b61294d565b348015610b5b57600080fd5b50610425610b6a3660046162c7565b612987565b348015610b7b57600080fd5b506101f8546001600160a01b03166105ac565b348015610b9a57600080fd5b506104e9610ba93660046162f0565b612a0f565b348015610bba57600080fd5b5060408051808201909152601a81527f737570706f72743d627261766f2671756f72756d3d627261766f0000000000006020820152610561565b348015610c0057600080fd5b50610425610c0f36600461585e565b612a96565b348015610c2057600080fd5b506104e97f150214d74d59b7d1e90c73fc22ef3d991dd0a76b046543d4d80ab92d2a50328f81565b348015610c5457600080fd5b50610ce3610c63366004615ee3565b6040805160608101825260008082526020820181905291810191909152506000918252610193602090815260408084206001600160a01b0393909316845260089092018152918190208151606081018352905460ff8082161515835261010082041693820193909352620100009092046001600160601b03169082015290565b6040805182511515815260208084015160ff1690820152918101516001600160601b03169082015260600161049e565b348015610d1f57600080fd5b50610425610d2e36600461585e565b612ab9565b348015610d3f57600080fd5b506104e9610d4e366004616391565b612b41565b348015610d5f57600080fd5b50610425610d6e36600461585e565b612b62565b348015610d7f57600080fd5b506105ef610d8e3660046163bd565b63f23a6e6160e01b95945050505050565b348015610dab57600080fd5b506104e9610dba36600461585e565b612bea565b348015610dcb57600080fd5b506101c5546105ac906001600160a01b031681565b610425610dee36600461585e565b612c79565b6000610e086101f8546001600160a01b031690565b905090565b8060008080808080808080610e218a6121ab565b60008c815261013060205260409020549098506001600160401b03169650610e488b612832565b60008c81526101936020526040812080546005820154600683015460078401546001600160a01b039093169e50949a509850929650919450610e898d61177e565b90506002816007811115610e9f57610e9f615ea5565b1493506007816007811115610eb657610eb6615ea5565b14925050509193959799509193959799565b6000610ed382612c9c565b92915050565b600080610f7d610f757fb3b3f3b703cd84ce352197dcff232b1b5d3cfb2025ce47cf04742d0651f1af888c8c8c8c604051610f15929190616425565b60405180910390208b80519060200120604051602001610f5a959493929190948552602085019390935260ff9190911660408401526060830152608082015260a00190565b60405160208183030381529060405280519060200120612cc1565b868686612cee565b9050610fc38a828b8b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508d9250612d0c915050565b9a9950505050505050505050565b61028f546201000090046001600160a01b0316331461100357604051631431806f60e11b815260040160405180910390fd5b61028f805461ff00191690556040517f62451d457bc659158be6e6247f56ec1df424a5c7597f71c20c2bc44e0965c8f990600090a1565b611042610df3565b6001600160a01b0316336001600160a01b0316146110725760405162461bcd60e51b815260040161041c90616435565b3061107b610df3565b6001600160a01b0316146110b9576000803660405161109b929190616425565b604051809103902090505b806110b2610131612d1b565b036110a657505b6110c281612d9a565b50565b606061012f80546110d59061646c565b80601f01602080910402602001604051908101604052809291908181526020018280546111019061646c565b801561114e5780601f106111235761010080835404028352916020019161114e565b820191906000526020600020905b81548152906001019060200180831161113157829003601f168201915b5050505050905090565b6000806111678686868661294d565b905060046111748261177e565b600781111561118557611185615ea5565b146111a25760405162461bcd60e51b815260040161041c906164a6565b6101f8546040805163793d064960e11b815290516000926001600160a01b03169163f27a0c929160048083019260209291908290030181865afa1580156111ed573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061121191906164e7565b6101f85460405163b1c5f42760e01b81529192506001600160a01b03169063b1c5f4279061124c908a908a908a906000908b90600401616500565b602060405180830381865afa158015611269573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061128d91906164e7565b60008381526101f96020526040808220929092556101f85491516308f2a0bb60e41b81526001600160a01b0390921691638f2a0bb0916112da918b918b918b91908b90899060040161654e565b600060405180830381600087803b1580156112f457600080fd5b505af1158015611308573d6000803e3d6000fd5b505050507f9a2e42fd6722813d69113e7d0079d3d940171428df7373df9c7f7617cfda289282824261133a91906165bc565b604080519283526020830191909152015b60405180910390a15095945050505050565b6000610e08600161136c61206b565b61137691906165cf565b65ffffffffffff16612bea565b6000806113928686868661294d565b9050600061139f8261177e565b905060048160078111156113b5576113b5615ea5565b14806113d2575060058160078111156113d0576113d0615ea5565b145b6113ee5760405162461bcd60e51b815260040161041c906164a6565b6000828152610130602052604090819020600201805460ff19166001179055517f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f9061143d9084815260200190565b60405180910390a16114528288888888612f0b565b61145f8288888888612fac565b61146c828888888861305d565b5095945050505050565b60608060608060006101936000878152602001908152602001600020905080600101816002018260030183600401838054806020026020016040519081016040528092919081815260200182805480156114f957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116114db575b505050505093508280548060200260200160405190810160405280929190818152602001828054801561154b57602002820191906000526020600020905b815481526020019060010190808311611537575b5050505050925081805480602002602001604051908101604052809291908181526020016000905b8282101561161f5783829060005260206000200180546115929061646c565b80601f01602080910402602001604051908101604052809291908181526020018280546115be9061646c565b801561160b5780601f106115e05761010080835404028352916020019161160b565b820191906000526020600020905b8154815290600101906020018083116115ee57829003601f168201915b505050505081526020019060010190611573565b50505050915080805480602002602001604051908101604052809291908181526020016000905b828210156116f25783829060005260206000200180546116659061646c565b80601f01602080910402602001604051908101604052809291908181526020018280546116919061646c565b80156116de5780601f106116b3576101008083540402835291602001916116de565b820191906000526020600020905b8154815290600101906020018083116116c157829003601f168201915b505050505081526020019060010190611646565b5050505090509450945094509450509193509193565b604080517f150214d74d59b7d1e90c73fc22ef3d991dd0a76b046543d4d80ab92d2a50328f602082015290810186905260ff85166060820152600090819061175690610f7590608001610f5a565b905061177387828860405180602001604052806000815250613098565b979650505050505050565b6000610ed3826130bb565b60008060008061179885613208565b93509350935093506117ac848484846117b4565b505050505050565b60006117c285858585613499565b95945050505050565b6101c55460408051634bf5d7e960e01b815290516060926001600160a01b031691634bf5d7e99160048083019260009291908290030181865afa92505050801561183757506040513d6000823e601f3d908101601f1916820160405261183491908101906165f5565b60015b611873575060408051808201909152601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c74000000602082015290565b919050565b60008033905061189984828560405180602001604052806000815250613098565b949350505050565b60008033905061177387828888888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a9250612d0c915050565b61022b5460009080820361190457505061022a54919050565b600061022b611914600184616662565b8154811061192457611924616675565b60009182526020918290206040805180820190915291015463ffffffff8116808352600160201b9091046001600160e01b0316928201929092529150841061197a57602001516001600160e01b03169392505050565b61198f61198685613564565b61022b906135cd565b6001600160e01b0316949350505050565b6119a8610df3565b6001600160a01b0316336001600160a01b0316146119d85760405162461bcd60e51b815260040161041c90616435565b306119e1610df3565b6001600160a01b031614611a1f5760008036604051611a01929190616425565b604051809103902090505b80611a18610131612d1b565b03611a0c57505b6110c281613680565b600080339050611a7086828787878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061309892505050565b9695505050505050565b6000611a846136c3565b60005b8551811015611afd5761028e6000878381518110611aa757611aa7616675565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16611aeb57604051630b094f2760e31b815260040160405180910390fd5b80611af58161668b565b915050611a87565b506117c28585858561376e565b600054610100900460ff1615808015611b2a5750600054600160ff909116105b80611b445750303b158015611b44575060005460ff166001145b611ba75760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161041c565b6000805460ff191660011790558015611bca576000805461ff0019166101001790555b334114611bea5760405163022d8c9560e31b815260040160405180910390fd5b3a15611c09576040516383f1b1d360e01b815260040160405180910390fd5b611c356040518060400160405280600b81526020016a2129a1a3b7bb32b93737b960a91b8152506137d6565b611c4f620151806212750068056bc75e2d6310000061382d565b611c57613864565b611c6261200561388b565b611c6d6120066138bb565b611c77600a6138eb565b611c836201518061391b565b61028e6020527ff0f52cefb444f33092ac77280e2ff9c808a9c078a96d3cd7513137548137ed8f8054600160ff1991821681179092557fb2c9e894c6f17bfc84a6708e0ea85c2729271d7cae0a8d875cd1080fb415e7a080548216831790557fd8ceb939a734f5a4e0a6fede9e31504e16ac856b555e8bac20ad743b9ff2976a80548216831790557f2a7b967fc66f4b36023165170b23a76f880d3dbbf244a856aeee9e670cef725980548216831790557fdb1a1113bac2e4f0e6f8c2f2bc4f6dbecf1fccb033d5df1b55b5c5ad6c20ac7980548216831790557f8b1888b379fb3b749668d86c5bf8aaada8e2276c6ced3a4efcc1e877827ce0b380548216831790557feeeea8d485053a64711f2c5802d2cc63251dd394956c140a2e30db7cef242ec580548216831790557f4cdb1a6c4b56f62f27f7202d75e865c2405f138cb32ec45019c0f2ca8f91e47280548216831790557f49d6c403a3197b15e024f109c83eb730d7af1a8b49fc6f820e09bad2597c14c980548216831790557f7a41b38ceb33f296c1ff3db5ffcc6542acb091d5fb27586f3c551dd2ebac063880548216831790557f701fe333ee20fad5d5a6a9930dddd3fb815af1d976d5250e394e39d6e4123e3880548216831790557fee7ba9842df249188adc0fc380980c3099f608b602924e083dd61e8e70845b4a80548216831790557f29973aeebf3c17f2c3a9cf7ace17f2798aa544e1ea7427938024cde6df46bac180548216831790557f74c0d6e29c82d6628d5f083f86fc15f0c6acef97321252a1eee0bd893dae276580548216831790556120066000527f1bdfc01e60036e5be56ae85d8394ddf727e1021b3d74de5b554fedea2de437678054909116909117905561028f805462010000600160b01b03191663dead000017905580156110c2576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b61028f546201000090046001600160a01b03163314611f9257604051631431806f60e11b815260040160405180910390fd5b61028f805461ff0019166101001790556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e75290600090a1565b6000606080600080600060606065546000801b148015611fed5750606654155b6120315760405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b604482015260640161041c565b61203961394b565b61204161395a565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b6101c554604080516324776b7d60e21b815290516000926001600160a01b0316916391ddadf49160048083019260209291908290030181865afa9250505080156120d2575060408051601f3d908101601f191682019092526120cf918101906166a4565b60015b61187357610e0843613969565b60006120ec8484846139d0565b90505b9392505050565b61022b546000901561211b5761210d61022b613a47565b6001600160e01b0316905090565b5061022a5490565b61212b610df3565b6001600160a01b0316336001600160a01b03161461215b5760405162461bcd60e51b815260040161041c90616435565b30612164610df3565b6001600160a01b0316146121a25760008036604051612184929190616425565b604051809103902090505b8061219b610131612d1b565b0361218f57505b6110c281613a77565b6101f85460008281526101f9602052604080822054905163d45c443560e01b81526004810191909152909182916001600160a01b039091169063d45c443590602401602060405180830381865afa15801561220a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061222e91906164e7565b90508060011461223e57806120ef565b60009392505050565b336110071461226d57604051630f22c43960e41b8152611007600482015260240161041c565b6122d36040518060400160405280600b81526020016a766f74696e6744656c617960a81b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613ae29050565b1561237c57602081146123015783838383604051630a5a604160e01b815260040161041c94939291906166f5565b604080516020601f8401819004810282018101909252828152600091612342918585808385018382808284376000920191909152509293925050613b3b9050565b90508060000361236d5784848484604051630a5a604160e01b815260040161041c94939291906166f5565b61237681613680565b506127e3565b6123e36040518060400160405280600c81526020016b1d9bdd1a5b99d4195c9a5bd960a21b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613ae29050565b1561248657602081146124115783838383604051630a5a604160e01b815260040161041c94939291906166f5565b604080516020601f8401819004810282018101909252828152600091612452918585808385018382808284376000920191909152509293925050613b3b9050565b90508060000361247d5784848484604051630a5a604160e01b815260040161041c94939291906166f5565b61237681613b40565b6124f2604051806040016040528060118152602001701c1c9bdc1bdcd85b151a1c995cda1bdb19607a1b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613ae29050565b1561259557602081146125205783838383604051630a5a604160e01b815260040161041c94939291906166f5565b604080516020601f8401819004810282018101909252828152600091612561918585808385018382808284376000920191909152509293925050613b3b9050565b90508060000361258c5784848484604051630a5a604160e01b815260040161041c94939291906166f5565b61237681613be3565b6125ff6040518060400160405280600f81526020016e38bab7b93ab6a73ab6b2b930ba37b960891b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613ae29050565b156126a2576020811461262d5783838383604051630a5a604160e01b815260040161041c94939291906166f5565b604080516020601f840181900481028201810190925282815260009161266e918585808385018382808284376000920191909152509293925050613b3b9050565b9050806000036126995784848484604051630a5a604160e01b815260040161041c94939291906166f5565b61237681612d9a565b612711604051806040016040528060148152602001736d696e506572696f64416674657251756f72756d60601b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613ae29050565b156127c2576008811461273f5783838383604051630a5a604160e01b815260040161041c94939291906166f5565b6000612785600884848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613b3b9050565b9050806001600160401b03166000036127b95784848484604051630a5a604160e01b815260040161041c94939291906166f5565b61237681613c26565b838383836040516325ee20d560e21b815260040161041c94939291906166f5565b7ff1ce9b2cbf50eeb05769a29e2543fd350cab46894a7dd9978a12d534bb20e6338484848460405161281894939291906166f5565b60405180910390a150505050565b6000610e086101635490565b6000610ed382613c92565b612845610df3565b6001600160a01b0316336001600160a01b0316146128755760405162461bcd60e51b815260040161041c90616435565b3061287e610df3565b6001600160a01b0316146128bc576000803660405161289e929190616425565b604051809103902090505b806128b5610131612d1b565b036128a957505b600080856001600160a01b03168585856040516128da929190616425565b60006040518083038185875af1925050503d8060008114612917576040519150601f19603f3d011682016040523d82523d6000602084013e61291c565b606091505b50915091506129448282604051806060016040528060288152602001616add60289139613cd0565b50505050505050565b600084848484604051602001612966949392919061671c565b60408051601f19818403018152919052805160209091012095945050505050565b61298f610df3565b6001600160a01b0316336001600160a01b0316146129bf5760405162461bcd60e51b815260040161041c90616435565b306129c8610df3565b6001600160a01b031614612a0657600080366040516129e8929190616425565b604051809103902090505b806129ff610131612d1b565b036129f357505b6110c281613c26565b60008251845114612a735760405162461bcd60e51b815260206004820152602860248201527f476f7665726e6f72427261766f3a20696e76616c6964207369676e61747572656044820152670e640d8cadccee8d60c31b606482015260840161041c565b612a81338787878787613ce9565b611a708686612a908787613da7565b85611a7a565b600080600080612aa585613208565b93509350935093506117ac84848484611158565b612ac1610df3565b6001600160a01b0316336001600160a01b031614612af15760405162461bcd60e51b815260040161041c90616435565b30612afa610df3565b6001600160a01b031614612b385760008036604051612b1a929190616425565b604051809103902090505b80612b31610131612d1b565b03612b2557505b6110c281613b40565b60006120ef8383612b5d60408051602081019091526000815290565b6139d0565b612b6a610df3565b6001600160a01b0316336001600160a01b031614612b9a5760405162461bcd60e51b815260040161041c90616435565b30612ba3610df3565b6001600160a01b031614612be15760008036604051612bc3929190616425565b604051809103902090505b80612bda610131612d1b565b03612bce57505b6110c281613be3565b60006064612bf7836118eb565b6101c554604051632394e7a360e21b8152600481018690526001600160a01b0390911690638e539e8c90602401602060405180830381865afa158015612c41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c6591906164e7565b612c6f9190616767565b610ed39190616794565b600080600080612c8885613208565b93509350935093506117ac84848484611383565b60006001600160e01b03198216636e665ced60e01b1480610ed35750610ed382613ed9565b6000610ed3612cce613f75565b8360405161190160f01b8152600281019290925260228201526042902090565b6000806000612cff87878787613f7f565b9150915061146c81614043565b6000611a70868686868661418d565b6000612d368254600f81810b600160801b909204900b131590565b15612d5457604051631ed9509560e11b815260040160405180910390fd5b508054600f0b6000818152600180840160205260408220805492905583546fffffffffffffffffffffffffffffffff191692016001600160801b03169190911790915590565b6064811115612e1d5760405162461bcd60e51b815260206004820152604360248201527f476f7665726e6f72566f74657351756f72756d4672616374696f6e3a2071756f60448201527f72756d4e756d657261746f72206f7665722071756f72756d44656e6f6d696e616064820152623a37b960e91b608482015260a40161041c565b6000612e276120f6565b90508015801590612e39575061022b54155b15612e9e57604080518082019091526000815261022b9060208101612e5d84614290565b6001600160e01b039081169091528254600181018455600093845260209384902083519490930151909116600160201b0263ffffffff909316929092179101555b612ecc612eb9612eac61206b565b65ffffffffffff16613564565b612ec284614290565b61022b91906142f9565b505060408051828152602081018490527f0553476bf02ef2726e8ce5ced78d63e26e602e4a2257b1f559418e24b4633997910160405180910390a15050565b30612f14610df3565b6001600160a01b031614612fa55760005b84518110156117ac57306001600160a01b0316858281518110612f4a57612f4a616675565b60200260200101516001600160a01b031603612f9557612f95838281518110612f7557612f75616675565b60200260200101518051906020012061013161431490919063ffffffff16565b612f9e8161668b565b9050612f25565b5050505050565b61028f54610100900460ff1615612fd65760405163e96776bf60e01b815260040160405180910390fd5b60005b845181101561304f5761028e6000868381518110612ff957612ff9616675565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff1661303d57604051630b094f2760e31b815260040160405180910390fd5b806130478161668b565b915050612fd9565b50612fa58585858585614350565b30613066610df3565b6001600160a01b031614612fa55761013154600f81810b600160801b909204900b1315612fa557600061013155612fa5565b60006117c2858585856130b660408051602081019091526000815290565b612d0c565b6000806130c7836143c5565b905060048160078111156130dd576130dd615ea5565b146130e85792915050565b60008381526101f9602052604090205480613104575092915050565b6101f854604051632ab0f52960e01b8152600481018390526001600160a01b0390911690632ab0f52990602401602060405180830381865afa15801561314e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061317291906167b6565b15613181575060079392505050565b6101f854604051632c258a9f60e11b8152600481018390526001600160a01b039091169063584b153e90602401602060405180830381865afa1580156131cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131ef91906167b6565b156131fe575060059392505050565b5060029392505050565b60608060606000806101936000878152602001908152602001600020905080600101816002016133da83600301805480602002602001604051908101604052809291908181526020016000905b828210156133015783829060005260206000200180546132749061646c565b80601f01602080910402602001604051908101604052809291908181526020018280546132a09061646c565b80156132ed5780601f106132c2576101008083540402835291602001916132ed565b820191906000526020600020905b8154815290600101906020018083116132d057829003601f168201915b505050505081526020019060010190613255565b50505060048601805460408051602080840282018101909252828152935060009084015b828210156133d15783829060005260206000200180546133449061646c565b80601f01602080910402602001604051908101604052809291908181526020018280546133709061646c565b80156133bd5780601f10613392576101008083540402835291602001916133bd565b820191906000526020600020905b8154815290600101906020018083116133a057829003601f168201915b505050505081526020019060010190613325565b50505050613da7565b600984015483546040805160208084028201810190925282815291869183018282801561343057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311613412575b505050505093508280548060200260200160405190810160405280929190818152602001828054801561348257602002820191906000526020600020905b81548152602001906001019080831161346e575b505050505092509450945094509450509193509193565b6000806134a88686868661294d565b600081815261019360205260409020549091506001600160a01b0316338114806134fc57506134d5612826565b6134fa8260016134e361206b565b6134ed91906165cf565b65ffffffffffff16612b41565b105b6135585760405162461bcd60e51b815260206004820152602760248201527f476f7665726e6f72427261766f3a2070726f706f7365722061626f76652074686044820152661c995cda1bdb1960ca1b606482015260840161041c565b611773878787876144fd565b600063ffffffff8211156135c95760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201526532206269747360d01b606482015260840161041c565b5090565b81546000908181600581111561362a5760006135e88461450b565b6135f29085616662565b60008881526020902090915081015463ffffffff908116908716101561361a57809150613628565b6136258160016165bc565b92505b505b6000613638878785856145f3565b905080156136735761365d8761364f600184616662565b600091825260209091200190565b54600160201b90046001600160e01b0316611773565b6000979650505050505050565b6101615460408051918252602082018390527fc565b045403dc03c2eea82b81a0465edad9e2e7fc4d97e11421c209da93d7a93910160405180910390a161016155565b61028f5460ff1661376c576a084595161401484a0000006120056001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561371a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061373e91906164e7565b101561375d576040516311b6707f60e01b815260040160405180910390fd5b61028f805460ff191660011790555b565b60006137ca33868686516001600160401b0381111561378f5761378f6158fa565b6040519080825280602002602001820160405280156137c257816020015b60608152602001906001900390816137ad5790505b508787613ce9565b6117c285858585614649565b600054610100900460ff166137fd5760405162461bcd60e51b815260040161041c906167d8565b6138248161381f6040805180820190915260018152603160f81b602082015290565b614a28565b6110c281614a77565b600054610100900460ff166138545760405162461bcd60e51b815260040161041c906167d8565b61385f838383614aaf565b505050565b600054610100900460ff1661376c5760405162461bcd60e51b815260040161041c906167d8565b600054610100900460ff166138b25760405162461bcd60e51b815260040161041c906167d8565b6110c281614af1565b600054610100900460ff166138e25760405162461bcd60e51b815260040161041c906167d8565b6110c281614b3b565b600054610100900460ff166139125760405162461bcd60e51b815260040161041c906167d8565b6110c281614b62565b600054610100900460ff166139425760405162461bcd60e51b815260040161041c906167d8565b6110c281614b89565b6060606780546110d59061646c565b6060606880546110d59061646c565b600065ffffffffffff8211156135c95760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203460448201526538206269747360d01b606482015260840161041c565b6101c554604051630748d63560e31b81526001600160a01b038581166004830152602482018590526000921690633a46b1a890604401602060405180830381865afa158015613a23573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120ec91906164e7565b8054600090801561223e57613a618361364f600184616662565b54600160201b90046001600160e01b03166120ef565b6101f854604080516001600160a01b03928316815291831660208301527f08f74ea46ef7894f65eabfb5e6e695de773a000b47c529ab559178069b226401910160405180910390a16101f880546001600160a01b0319166001600160a01b0392909216919091179055565b600081604051602001613af59190616823565b6040516020818303038152906040528051906020012083604051602001613b1c9190616823565b6040516020818303038152906040528051906020012014905092915050565b015190565b60008111613ba05760405162461bcd60e51b815260206004820152602760248201527f476f7665726e6f7253657474696e67733a20766f74696e6720706572696f6420604482015266746f6f206c6f7760c81b606482015260840161041c565b6101625460408051918252602082018390527f7e3f7f0708a84de9203036abaa450dccc85ad5ff52f78c170f3edb55cf5e8828910160405180910390a161016255565b6101635460408051918252602082018390527fccb45da8d5717e6c4544694297c4ba5cf151d455c9bb0ed4fc7a38411bc05461910160405180910390a161016355565b61025c54604080516001600160401b03928316815291831660208301527f7ca4ac117ed3cdce75c1161d8207c440389b1a15d69d096831664657c07dafc2910160405180910390a161025c805467ffffffffffffffff19166001600160401b0392909216919091179055565b60008181526101306020526040812060010154610ed3906001600160401b0316600084815261025d60205260409020546001600160401b0316614bb0565b60608315613cdf5750816120ef565b6120ef8383614bc6565b805160208201206000613d078787613d018888613da7565b8561294d565b600081815261019360205260409020600981015491925090613d9c5780546001600160a01b0319166001600160a01b038a161781558751613d5190600183019060208b0190615695565b508651613d6790600283019060208a01906156f6565b508551613d7d9060038301906020890190615731565b508451613d939060048301906020880190615783565b50600981018390555b505050505050505050565b6060600082516001600160401b03811115613dc457613dc46158fa565b604051908082528060200260200182016040528015613df757816020015b6060815260200190600190039081613de25790505b50905060005b8151811015613ed157848181518110613e1857613e18616675565b602002602001015151600014613e8857848181518110613e3a57613e3a616675565b602002602001015180519060200120848281518110613e5b57613e5b616675565b6020026020010151604051602001613e7492919061683f565b604051602081830303815290604052613ea3565b838181518110613e9a57613e9a616675565b60200260200101515b828281518110613eb557613eb5616675565b602002602001018190525080613eca9061668b565b9050613dfd565b509392505050565b600063288ace0360e11b6318df743f60e31b63bf26d89760e01b6379dd796f60e01b6001600160e01b03198616821480613f1f57506001600160e01b0319868116908216145b80613f3657506001600160e01b0319868116908516145b80613f5157506001600160e01b03198616630271189760e51b145b80611a7057506301ffc9a760e01b6001600160e01b03198716149695505050505050565b6000610e08614bf0565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115613fb6575060009050600361403a565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa15801561400a573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166140335760006001925092505061403a565b9150600090505b94509492505050565b600081600481111561405757614057615ea5565b0361405f5750565b600181600481111561407357614073615ea5565b036140c05760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640161041c565b60028160048111156140d4576140d4615ea5565b036141215760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161041c565b600381600481111561413557614135615ea5565b036110c25760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b606482015260840161041c565b60008061419d8787878787614c64565b600088815261025d60205260409020549091506001600160401b03161580156141ca57506141ca87614dba565b15611a705760006141e461025c546001600160401b031690565b6141ec61206b565b65ffffffffffff166141fe9190616870565b905061420988612832565b816001600160401b03161115614258576040516001600160401b038216815288907f541f725fb9f7c98a30cc9c0ff32fbb14358cd7159c847a3aa20a2bdc442ba5119060200160405180910390a25b600088815261025d60205260409020805467ffffffffffffffff19166001600160401b03929092169190911790559695505050505050565b60006001600160e01b038211156135c95760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20326044820152663234206269747360c81b606482015260840161041c565b600080614307858585614dfa565b915091505b935093915050565b8154600160801b90819004600f0b6000818152600180860160205260409091209390935583546001600160801b03908116939091011602179055565b6101f85460405163e38335e560e01b81526001600160a01b039091169063e38335e590349061438c908890889088906000908990600401616500565b6000604051808303818588803b1580156143a557600080fd5b505af11580156143b9573d6000803e3d6000fd5b50505050505050505050565b600081815261013060205260408120600281015460ff16156143ea5750600792915050565b6002810154610100900460ff16156144055750600292915050565b600083815261013060205260408120546001600160401b03169081900361446e5760405162461bcd60e51b815260206004820152601d60248201527f476f7665726e6f723a20756e6b6e6f776e2070726f706f73616c206964000000604482015260640161041c565b600061447861206b565b65ffffffffffff16905080821061449457506000949350505050565b600061449f86612832565b90508181106144b45750600195945050505050565b6144bd86614dba565b80156144e057506000868152610193602052604090206006810154600590910154115b156144f15750600495945050505050565b50600395945050505050565b60006117c285858585614f99565b60008160000361451d57506000919050565b6000600161452a8461504f565b901c6001901b905060018184816145435761454361677e565b048201901c9050600181848161455b5761455b61677e565b048201901c905060018184816145735761457361677e565b048201901c9050600181848161458b5761458b61677e565b048201901c905060018184816145a3576145a361677e565b048201901c905060018184816145bb576145bb61677e565b048201901c905060018184816145d3576145d361677e565b048201901c90506120ef818285816145ed576145ed61677e565b046150e3565b60005b81831015613ed157600061460a84846150f2565b60008781526020902090915063ffffffff86169082015463ffffffff16111561463557809250614643565b6146408160016165bc565b93505b506145f6565b600033614656818461510d565b6146a25760405162461bcd60e51b815260206004820152601d60248201527f476f7665726e6f723a2070726f706f7365722072657374726963746564000000604482015260640161041c565b60006146ac61206b565b65ffffffffffff1690506146be612826565b6146cd83610d4e600185616662565b10156147355760405162461bcd60e51b815260206004820152603160248201527f476f7665726e6f723a2070726f706f73657220766f7465732062656c6f7720706044820152701c9bdc1bdcd85b081d1a1c995cda1bdb19607a1b606482015260840161041c565b600061474a888888888051906020012061294d565b9050865188511461476d5760405162461bcd60e51b815260040161041c90616890565b855188511461478e5760405162461bcd60e51b815260040161041c90616890565b60008851116147df5760405162461bcd60e51b815260206004820152601860248201527f476f7665726e6f723a20656d7074792070726f706f73616c0000000000000000604482015260640161041c565b600081815261013060205260409020546001600160401b03161561484f5760405162461bcd60e51b815260206004820152602160248201527f476f7665726e6f723a2070726f706f73616c20616c72656164792065786973746044820152607360f81b606482015260840161041c565b600061485b6101615490565b61486590846165bc565b905060006148736101625490565b61487d90836165bc565b90506040518060e00160405280614893846151fe565b6001600160401b031681526001600160a01b0387166020820152600060408201526060016148c0836151fe565b6001600160401b03908116825260006020808401829052604080850183905260609485018390528883526101308252918290208551815492870151878501519186166001600160e01b031990941693909317600160401b6001600160a01b039094168402176001600160e01b0316600160e01b60e09290921c91909102178155938501516080860151908416921c0217600183015560a08301516002909201805460c09094015161ffff1990941692151561ff00191692909217610100931515939093029290921790558a517f7d84a6263ae0d98d3329bd7b46bb4e8d6f98cd35a7adb45c274c8b7fd5ebd5e091859188918e918e918111156149c5576149c56158fa565b6040519080825280602002602001820160405280156149f857816020015b60608152602001906001900390816149e35790505b508d88888f604051614a12999897969594939291906168d1565b60405180910390a1509098975050505050505050565b600054610100900460ff16614a4f5760405162461bcd60e51b815260040161041c906167d8565b6067614a5b83826169af565b506068614a6882826169af565b50506000606581905560665550565b600054610100900460ff16614a9e5760405162461bcd60e51b815260040161041c906167d8565b61012f614aab82826169af565b5050565b600054610100900460ff16614ad65760405162461bcd60e51b815260040161041c906167d8565b614adf83613680565b614ae882613b40565b61385f81613be3565b600054610100900460ff16614b185760405162461bcd60e51b815260040161041c906167d8565b6101c580546001600160a01b0319166001600160a01b0392909216919091179055565b600054610100900460ff166121a25760405162461bcd60e51b815260040161041c906167d8565b600054610100900460ff166110b95760405162461bcd60e51b815260040161041c906167d8565b600054610100900460ff16612a065760405162461bcd60e51b815260040161041c906167d8565b6000818311614bbf57816120ef565b5090919050565b815115614bd65781518083602001fd5b8060405162461bcd60e51b815260040161041c9190615ab3565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f614c1b615266565b614c236152bf565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b6000858152610130602052604081206001614c7e8861177e565b6007811115614c8f57614c8f615ea5565b14614ce85760405162461bcd60e51b815260206004820152602360248201527f476f7665726e6f723a20766f7465206e6f742063757272656e746c792061637460448201526269766560e81b606482015260840161041c565b8054600090614d029088906001600160401b0316866139d0565b9050614d1188888884886152f0565b8351600003614d6657866001600160a01b03167fb8e138887d0aa13bab447e82de9d5c1777041ecd21ca36ba824ff1e6c07ddda489888489604051614d599493929190616a6e565b60405180910390a2611773565b866001600160a01b03167fe2babfbac5889a709b63bb7f598b324e08bc5a4fb9ec647fb3cbc9ec07eb87128988848989604051614da7959493929190616a96565b60405180910390a2979650505050505050565b6000818152610193602052604081206005810154614df1610dba85600090815261013060205260409020546001600160401b031690565b11159392505050565b825460009081908015614f40576000614e188761364f600185616662565b60408051808201909152905463ffffffff808216808452600160201b9092046001600160e01b031660208401529192509087161015614e995760405162461bcd60e51b815260206004820152601b60248201527f436865636b706f696e743a2064656372656173696e67206b6579730000000000604482015260640161041c565b805163ffffffff808816911603614ee15784614eba8861364f600186616662565b80546001600160e01b0392909216600160201b0263ffffffff909216919091179055614f30565b6040805180820190915263ffffffff80881682526001600160e01b0380881660208085019182528b54600181018d5560008d81529190912094519151909216600160201b029216919091179101555b60200151925083915061430c9050565b50506040805180820190915263ffffffff80851682526001600160e01b0380851660208085019182528854600181018a5560008a815291822095519251909316600160201b02919093161792019190915590508161430c565b600080614fa88686868661548e565b60008181526101f96020526040902054909150156117c2576101f85460008281526101f960205260409081902054905163c4d252f560e01b81526001600160a01b039092169163c4d252f5916150049160040190815260200190565b600060405180830381600087803b15801561501e57600080fd5b505af1158015615032573d6000803e3d6000fd5b50505060008281526101f960205260408120555095945050505050565b600080608083901c1561506457608092831c92015b604083901c1561507657604092831c92015b602083901c1561508857602092831c92015b601083901c1561509a57601092831c92015b600883901c156150ac57600892831c92015b600483901c156150be57600492831c92015b600283901c156150d057600292831c92015b600183901c15610ed35760010192915050565b6000818310614bbf57816120ef565b60006151016002848418616794565b6120ef908484166165bc565b80516000906034811015615125576001915050610ed3565b82810160131901516001600160a01b031981166b046e0e4dee0dee6cae47a60f60a31b1461515857600192505050610ed3565b600080615166602885616662565b90505b838110156151dd5760008061519d88848151811061518957615189616675565b01602001516001600160f81b03191661559b565b91509150816151b55760019650505050505050610ed3565b8060ff166004856001600160a01b0316901b1793505050806151d69061668b565b9050615169565b50856001600160a01b0316816001600160a01b031614935050505092915050565b60006001600160401b038211156135c95760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203660448201526534206269747360d01b606482015260840161041c565b60008061527161394b565b805190915015615288578051602090910120919050565b60655480156152975792915050565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4709250505090565b6000806152ca61395a565b8051909150156152e1578051602090910120919050565b60665480156152975792915050565b6000858152610193602090815260408083206001600160a01b038816845260088101909252909120805460ff16156153805760405162461bcd60e51b815260206004820152602d60248201527f476f7665726e6f72436f6d7061746962696c697479427261766f3a20766f746560448201526c08185b1c9958591e4818d85cdd609a1b606482015260840161041c565b805460ff86166101000261ffff199091161760011781556153a08461562d565b81546001600160601b039190911662010000026dffffffffffffffffffffffff00001990911617815560ff85166153f057838260060160008282546153e591906165bc565b909155506129449050565b60001960ff86160161541057838260050160008282546153e591906165bc565b60011960ff86160161543057838260070160008282546153e591906165bc565b60405162461bcd60e51b815260206004820152602d60248201527f476f7665726e6f72436f6d7061746962696c697479427261766f3a20696e766160448201526c6c696420766f7465207479706560981b606482015260840161041c565b60008061549d8686868661294d565b905060006154aa8261177e565b905060028160078111156154c0576154c0615ea5565b141580156154e0575060068160078111156154dd576154dd615ea5565b14155b80156154fe575060078160078111156154fb576154fb615ea5565b14155b61554a5760405162461bcd60e51b815260206004820152601d60248201527f476f7665726e6f723a2070726f706f73616c206e6f7420616374697665000000604482015260640161041c565b6000828152610130602052604090819020600201805461ff001916610100179055517f789cf55be980739dad1d0699b93b58e806b51c9d96619bfa8fe0a28abaa7b30c9061134b9084815260200190565b60008060f883901c602f811180156155b65750603a8160ff16105b156155cb57600194602f199091019350915050565b8060ff1660401080156155e1575060478160ff16105b156155f6576001946036199091019350915050565b8060ff16606010801561560c575060678160ff16105b15615621576001946056199091019350915050565b50600093849350915050565b60006001600160601b038211156135c95760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203960448201526536206269747360d01b606482015260840161041c565b8280548282559060005260206000209081019282156156ea579160200282015b828111156156ea57825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906156b5565b506135c99291506157d5565b8280548282559060005260206000209081019282156156ea579160200282015b828111156156ea578251825591602001919060010190615716565b828054828255906000526020600020908101928215615777579160200282015b82811115615777578251829061576790826169af565b5091602001919060010190615751565b506135c99291506157ea565b8280548282559060005260206000209081019282156157c9579160200282015b828111156157c957825182906157b990826169af565b50916020019190600101906157a3565b506135c9929150615807565b5b808211156135c957600081556001016157d6565b808211156135c95760006157fe8282615824565b506001016157ea565b808211156135c957600061581b8282615824565b50600101615807565b5080546158309061646c565b6000825580601f10615840575050565b601f0160209004906000526020600020908101906110c291906157d5565b60006020828403121561587057600080fd5b5035919050565b60006020828403121561588957600080fd5b81356001600160e01b0319811681146120ef57600080fd5b803560ff8116811461187357600080fd5b60008083601f8401126158c457600080fd5b5081356001600160401b038111156158db57600080fd5b6020830191508360208285010111156158f357600080fd5b9250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715615938576159386158fa565b604052919050565b60006001600160401b03821115615959576159596158fa565b50601f01601f191660200190565b600082601f83011261597857600080fd5b813561598b61598682615940565b615910565b8181528460208386010111156159a057600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060008060008060e0898b0312156159d957600080fd5b883597506159e960208a016158a1565b965060408901356001600160401b0380821115615a0557600080fd5b615a118c838d016158b2565b909850965060608b0135915080821115615a2a57600080fd5b50615a378b828c01615967565b945050615a4660808a016158a1565b925060a0890135915060c089013590509295985092959890939650565b60005b83811015615a7e578181015183820152602001615a66565b50506000910152565b60008151808452615a9f816020860160208601615a63565b601f01601f19169290920160200192915050565b6020815260006120ef6020830184615a87565b6001600160a01b03811681146110c257600080fd5b60008060008060808587031215615af157600080fd5b8435615afc81615ac6565b93506020850135615b0c81615ac6565b92506040850135915060608501356001600160401b03811115615b2e57600080fd5b615b3a87828801615967565b91505092959194509250565b60006001600160401b03821115615b5f57615b5f6158fa565b5060051b60200190565b600082601f830112615b7a57600080fd5b81356020615b8a61598683615b46565b82815260059290921b84018101918181019086841115615ba957600080fd5b8286015b84811015615bcd578035615bc081615ac6565b8352918301918301615bad565b509695505050505050565b600082601f830112615be957600080fd5b81356020615bf961598683615b46565b82815260059290921b84018101918181019086841115615c1857600080fd5b8286015b84811015615bcd5780358352918301918301615c1c565b600082601f830112615c4457600080fd5b81356020615c5461598683615b46565b82815260059290921b84018101918181019086841115615c7357600080fd5b8286015b84811015615bcd5780356001600160401b03811115615c965760008081fd5b615ca48986838b0101615967565b845250918301918301615c77565b60008060008060808587031215615cc857600080fd5b84356001600160401b0380821115615cdf57600080fd5b615ceb88838901615b69565b95506020870135915080821115615d0157600080fd5b615d0d88838901615bd8565b94506040870135915080821115615d2357600080fd5b50615d3087828801615c33565b949793965093946060013593505050565b600081518084526020808501945080840160005b83811015615d7a5781516001600160a01b031687529582019590820190600101615d55565b509495945050505050565b600081518084526020808501945080840160005b83811015615d7a57815187529582019590820190600101615d99565b600081518084526020808501808196508360051b8101915082860160005b85811015615dfd578284038952615deb848351615a87565b98850198935090840190600101615dd3565b5091979650505050505050565b608081526000615e1d6080830187615d41565b8281036020840152615e2f8187615d85565b90508281036040840152615e438186615db5565b905082810360608401526117738185615db5565b600080600080600060a08688031215615e6f57600080fd5b85359450615e7f602087016158a1565b9350615e8d604087016158a1565b94979396509394606081013594506080013592915050565b634e487b7160e01b600052602160045260246000fd5b6020810160088310615edd57634e487b7160e01b600052602160045260246000fd5b91905290565b60008060408385031215615ef657600080fd5b823591506020830135615f0881615ac6565b809150509250929050565b600060208284031215615f2557600080fd5b81356120ef81615ac6565b60008060408385031215615f4357600080fd5b82359150615f53602084016158a1565b90509250929050565b600080600080600060808688031215615f7457600080fd5b85359450615f84602087016158a1565b935060408601356001600160401b0380821115615fa057600080fd5b615fac89838a016158b2565b90955093506060880135915080821115615fc557600080fd5b50615fd288828901615967565b9150509295509295909350565b60008060008060608587031215615ff557600080fd5b84359350616005602086016158a1565b925060408501356001600160401b0381111561602057600080fd5b61602c878288016158b2565b95989497509550505050565b6000806000806080858703121561604e57600080fd5b84356001600160401b038082111561606557600080fd5b61607188838901615b69565b9550602087013591508082111561608757600080fd5b61609388838901615bd8565b945060408701359150808211156160a957600080fd5b6160b588838901615c33565b935060608701359150808211156160cb57600080fd5b50615b3a87828801615967565b60ff60f81b8816815260e0602082015260006160f760e0830189615a87565b82810360408401526161098189615a87565b606084018890526001600160a01b038716608085015260a0840186905283810360c08501529050610fc38185615d85565b60008060006060848603121561614f57600080fd5b833561615a81615ac6565b92506020840135915060408401356001600160401b0381111561617c57600080fd5b61618886828701615967565b9150509250925092565b600080600080604085870312156161a857600080fd5b84356001600160401b03808211156161bf57600080fd5b6161cb888389016158b2565b909650945060208701359150808211156161e457600080fd5b5061602c878288016158b2565b600080600080600060a0868803121561620957600080fd5b853561621481615ac6565b9450602086013561622481615ac6565b935060408601356001600160401b038082111561624057600080fd5b61624c89838a01615bd8565b9450606088013591508082111561626257600080fd5b61626e89838a01615bd8565b93506080880135915080821115615fc557600080fd5b6000806000806060858703121561629a57600080fd5b84356162a581615ac6565b93506020850135925060408501356001600160401b0381111561602057600080fd5b6000602082840312156162d957600080fd5b81356001600160401b03811681146120ef57600080fd5b600080600080600060a0868803121561630857600080fd5b85356001600160401b038082111561631f57600080fd5b61632b89838a01615b69565b9650602088013591508082111561634157600080fd5b61634d89838a01615bd8565b9550604088013591508082111561636357600080fd5b61636f89838a01615c33565b9450606088013591508082111561638557600080fd5b61626e89838a01615c33565b600080604083850312156163a457600080fd5b82356163af81615ac6565b946020939093013593505050565b600080600080600060a086880312156163d557600080fd5b85356163e081615ac6565b945060208601356163f081615ac6565b9350604086013592506060860135915060808601356001600160401b0381111561641957600080fd5b615fd288828901615967565b8183823760009101908152919050565b60208082526018908201527f476f7665726e6f723a206f6e6c79476f7665726e616e63650000000000000000604082015260600190565b600181811c9082168061648057607f821691505b6020821081036164a057634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526021908201527f476f7665726e6f723a2070726f706f73616c206e6f74207375636365737366756040820152601b60fa1b606082015260800190565b6000602082840312156164f957600080fd5b5051919050565b60a08152600061651360a0830188615d41565b82810360208401526165258188615d85565b905082810360408401526165398187615db5565b60608401959095525050608001529392505050565b60c08152600061656160c0830189615d41565b82810360208401526165738189615d85565b905082810360408401526165878188615db5565b60608401969096525050608081019290925260a0909101529392505050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610ed357610ed36165a6565b65ffffffffffff8281168282160390808211156165ee576165ee6165a6565b5092915050565b60006020828403121561660757600080fd5b81516001600160401b0381111561661d57600080fd5b8201601f8101841361662e57600080fd5b805161663c61598682615940565b81815285602083850101111561665157600080fd5b6117c2826020830160208601615a63565b81810381811115610ed357610ed36165a6565b634e487b7160e01b600052603260045260246000fd5b60006001820161669d5761669d6165a6565b5060010190565b6000602082840312156166b657600080fd5b815165ffffffffffff811681146120ef57600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6040815260006167096040830186886166cc565b82810360208401526117738185876166cc565b60808152600061672f6080830187615d41565b82810360208401526167418187615d85565b905082810360408401526167558186615db5565b91505082606083015295945050505050565b8082028115828204841417610ed357610ed36165a6565b634e487b7160e01b600052601260045260246000fd5b6000826167b157634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156167c857600080fd5b815180151581146120ef57600080fd5b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60008251616835818460208701615a63565b9190910192915050565b6001600160e01b0319831681528151600090616862816004850160208701615a63565b919091016004019392505050565b6001600160401b038181168382160190808211156165ee576165ee6165a6565b60208082526021908201527f476f7665726e6f723a20696e76616c69642070726f706f73616c206c656e67746040820152600d60fb1b606082015260800190565b8981526001600160a01b0389166020820152610120604082018190526000906168fc8382018b615d41565b90508281036060840152616910818a615d85565b905082810360808401526169248189615db5565b905082810360a08401526169388188615db5565b90508560c08401528460e08401528281036101008401526169598185615a87565b9c9b505050505050505050505050565b601f82111561385f57600081815260208120601f850160051c810160208610156169905750805b601f850160051c820191505b818110156117ac5782815560010161699c565b81516001600160401b038111156169c8576169c86158fa565b6169dc816169d6845461646c565b84616969565b602080601f831160018114616a1157600084156169f95750858301515b600019600386901b1c1916600185901b1785556117ac565b600085815260208120601f198616915b82811015616a4057888601518255948401946001909101908401616a21565b5085821015616a5e5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b84815260ff84166020820152826040820152608060608201526000611a706080830184615a87565b85815260ff8516602082015283604082015260a060608201526000616abe60a0830185615a87565b8281036080840152616ad08185615a87565b9897505050505050505056fe476f7665726e6f723a2072656c617920726576657274656420776974686f7574206d657373616765a164736f6c6343000811000a", }, { ContractAddr: common.HexToAddress(GovTokenContract), @@ -868,12 +862,7 @@ func init() { { ContractAddr: common.HexToAddress(TokenRecoverPortalContract), CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/cfc0bd1127186a917ddc38fd38d22903034d3f0b", - Code: "608060405234801561001057600080fd5b50600436106100a95760003560e01c80639fcb5012116100715780639fcb50121461012f578063ac4317511461014c578063bfb5a6a11461015f578063de88700b14610172578063e33f8d321461019d578063f4b88300146101c057600080fd5b8063046f7da2146100ae5780632eb4a7ab146100b85780634c335368146100d4578063572c9980146101145780638456cb5914610127575b600080fd5b6100b66101d3565b005b6100c160345481565b6040519081526020015b60405180910390f35b6101076040518060400160405280601481526020017342696e616e63652d436861696e2d47616e67657360601b81525081565b6040516100cb91906113eb565b6100b661012236600461141e565b610236565b6100b66102c7565b60355461013c9060ff1681565b60405190151581526020016100cb565b6100b661015a36600461149c565b610330565b6100b661016d36600461154d565b610756565b603754610185906001600160a01b031681565b6040516001600160a01b0390911681526020016100cb565b61013c6101ab366004611627565b60009081526036602052604090205460ff1690565b603354610185906001600160a01b031681565b6037546001600160a01b031633146101fe5760405163f2771a9960e01b815260040160405180910390fd5b6037805460ff60a01b191690556040517f62451d457bc659158be6e6247f56ec1df424a5c7597f71c20c2bc44e0965c8f990600090a1565b6037546001600160a01b031633146102615760405163f2771a9960e01b815260040160405180910390fd5b604051638525db0360e01b8152600481018390526001600160a01b038216602482015261100490638525db0390604401600060405180830381600087803b1580156102ab57600080fd5b505af11580156102bf573d6000803e3d6000fd5b505050505050565b6037546001600160a01b031633146102f25760405163f2771a9960e01b815260040160405180910390fd5b6037805460ff60a01b1916600160a01b1790556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e75290600090a1565b336110071461035b57604051630f22c43960e41b815261100760048201526024015b60405180910390fd5b6103c56040518060400160405280600f81526020016e617070726f7665724164647265737360881b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610a989050565b1561048d57601481146103f35783838383604051630a5a604160e01b81526004016103529493929190611669565b600061043783838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060149250610af2915050565b90506001600160a01b0381166104685784848484604051630a5a604160e01b81526004016103529493929190611669565b603380546001600160a01b0319166001600160a01b0392909216919091179055610713565b6104f26040518060400160405280600a8152602001691b595c9adb19549bdbdd60b21b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610a989050565b156105bf5760355460ff161561051b576040516379b3306f60e11b815260040160405180910390fd5b602081146105445783838383604051630a5a604160e01b81526004016103529493929190611669565b604080516020601f840181900481028201810190925282815260009161058491858580838501838280828437600092019190915250869250610af7915050565b806105aa5784848484604051630a5a604160e01b81526004016103529493929190611669565b6034556035805460ff19166001179055610713565b6106286040518060400160405280600e81526020016d30b9b9b2ba283937ba32b1ba37b960911b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610a989050565b156106f257601481146106565783838383604051630a5a604160e01b81526004016103529493929190611669565b600061069c601484848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610af29050565b90506001600160a01b0381166106cd5784848484604051630a5a604160e01b81526004016103529493929190611669565b603780546001600160a01b0319166001600160a01b0392909216919091179055610713565b838383836040516325ee20d560e21b81526004016103529493929190611669565b7ff1ce9b2cbf50eeb05769a29e2543fd350cab46894a7dd9978a12d534bb20e633848484846040516107489493929190611669565b60405180910390a150505050565b60355460ff1661077957604051635740729760e01b815260040160405180910390fd5b60345461079957604051635740729760e01b815260040160405180910390fd5b603754600160a01b900460ff16156107c45760405163c629ac8160e01b815260040160405180910390fd5b6107cc610b06565b600061085a89898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8d018190048102820181019092528b815292508b91508a9081908401838280828437600081840152601f19601f820116905080830192505050505050506108558e8e33610b5f565b610c80565b90506000818c8c6040516020016108739392919061169b565b6040516020818303038152906040528051906020012090506108a48160009081526036602052604090205460ff1690565b156108c157604051623e493160e81b815260040160405180910390fd5b6109693389898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8d018190048102820181019092528b815292508b91508a908190840183828082843760009201919091525050604080516020808c0282810182019093528b82528994509092508b918b91829190850190849080828437600092019190915250610d7492505050565b6109aa848480806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250506034549150849050610e7f565b6109c7576040516309bde33960e01b815260040160405180910390fd5b60008181526036602052604090819020805460ff191660011790555163799758b960e01b8152600481018d9052336024820152604481018c90526110049063799758b990606401600060405180830381600087803b158015610a2857600080fd5b505af1158015610a3c573d6000803e3d6000fd5b5050604080518f81523360208201529081018e90527f4ba6833d14341f931aa6ef39835b58eb5d657ebf0d968db68dbc7dd49d073f6d9250606001905060405180910390a15050610a8c60018055565b50505050505050505050565b600081604051602001610aab91906116c2565b6040516020818303038152906040528051906020012083604051602001610ad291906116c2565b604051602081830303815290604052805190602001201490505b92915050565b015190565b91018082526020908101910152565b600260015403610b585760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610352565b6002600155565b600060026040518060400160405280601481526020017342696e616e63652d436861696e2d47616e67657360601b815250610bbc85604051602001610ba691815260200190565b6040516020818303038152906040526000610e95565b6040516bffffffffffffffffffffffff19606087901b166020820152610bf5906034016040516020818303038152906040526001610e95565b610c0b88604051602001610ba691815260200190565b604051602001610c1e94939291906116de565b60408051601f1981840301815290829052610c38916116c2565b602060405180830381855afa158015610c55573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610c78919061180d565b949350505050565b60608351602114610ca457604051638152ea1b60e01b815260040160405180910390fd5b8251604014610cc657604051635e4bd79760e11b815260040160405180910390fd5b60408051608180825260c08201909252600091602082018180368337019050509050610cf6818660006021611067565b610d04818560216040611067565b610d338184604051602001610d1b91815260200190565b60405160208183030381529060405260616020611067565b604080516014808252818301909252600091602082018180368337019050509050815160148282856069600019fa610d6a57600080fd5b5095945050505050565b606060005b8251811015610dd25781838281518110610d9557610d9561183c565b6020026020010151604051602001610dae929190611852565b60405160208183030381529060405291508080610dca9061188a565b915050610d79565b5060006040518060400160405280601481526020017342696e616e63652d436861696e2d47616e67657360601b81525087878660345486604051602001610e1e969594939291906118a3565b60408051601f1981840301815291905280516020909101206033549091506001600160a01b0316610e4f82876110de565b6001600160a01b031614610e7657604051636eb5c6cb60e11b815260040160405180910390fd5b50505050505050565b600082610e8c85846110fa565b14949350505050565b6060600083516002610ea79190611914565b67ffffffffffffffff811115610ebf57610ebf611826565b6040519080825280601f01601f191660200182016040528015610ee9576020820181803683370190505b5060408051808201909152601081526f181899199a1a9b1b9c1cb0b131b232b360811b602082015290915060005b855181101561102f57818251878381518110610f3557610f3561183c565b0160200151610f47919060f81c611941565b81518110610f5757610f5761183c565b01602001516001600160f81b03191683610f72836002611914565b81518110610f8257610f8261183c565b60200101906001600160f81b031916908160001a905350818251878381518110610fae57610fae61183c565b0160200151610fc0919060f81c611955565b81518110610fd057610fd061183c565b01602001516001600160f81b03191683610feb836002611914565b610ff6906001611969565b815181106110065761100661183c565b60200101906001600160f81b031916908160001a905350806110278161188a565b915050610f17565b50831561105f5781604051602001611047919061197c565b60405160208183030381529060405292505050610aec565b509392505050565b60005b818110156110d7578381815181106110845761108461183c565b01602001516001600160f81b031916858461109e8161188a565b9550815181106110b0576110b061183c565b60200101906001600160f81b031916908160001a9053506110d08161188a565b905061106a565b5050505050565b60008060006110ed858561113f565b9150915061105f81611184565b600081815b845181101561105f5761112b8286838151811061111e5761111e61183c565b60200260200101516112d1565b9150806111378161188a565b9150506110ff565b60008082516041036111755760208301516040840151606085015160001a61116987828585611303565b9450945050505061117d565b506000905060025b9250929050565b6000816004811115611198576111986119a6565b036111a05750565b60018160048111156111b4576111b46119a6565b036112015760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610352565b6002816004811115611215576112156119a6565b036112625760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610352565b6003816004811115611276576112766119a6565b036112ce5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610352565b50565b60008183106112ed5760008281526020849052604090206112fc565b60008381526020839052604090205b9392505050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561133a57506000905060036113be565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa15801561138e573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166113b7576000600192509250506113be565b9150600090505b94509492505050565b60005b838110156113e25781810151838201526020016113ca565b50506000910152565b602081526000825180602084015261140a8160408501602087016113c7565b601f01601f19169190910160400192915050565b6000806040838503121561143157600080fd5b8235915060208301356001600160a01b038116811461144f57600080fd5b809150509250929050565b60008083601f84011261146c57600080fd5b50813567ffffffffffffffff81111561148457600080fd5b60208301915083602082850101111561117d57600080fd5b600080600080604085870312156114b257600080fd5b843567ffffffffffffffff808211156114ca57600080fd5b6114d68883890161145a565b909650945060208701359150808211156114ef57600080fd5b506114fc8782880161145a565b95989497509550505050565b60008083601f84011261151a57600080fd5b50813567ffffffffffffffff81111561153257600080fd5b6020830191508360208260051b850101111561117d57600080fd5b60008060008060008060008060008060c08b8d03121561156c57600080fd5b8a35995060208b0135985060408b013567ffffffffffffffff8082111561159257600080fd5b61159e8e838f0161145a565b909a50985060608d01359150808211156115b757600080fd5b6115c38e838f0161145a565b909850965060808d01359150808211156115dc57600080fd5b6115e88e838f0161145a565b909650945060a08d013591508082111561160157600080fd5b5061160e8d828e01611508565b915080935050809150509295989b9194979a5092959850565b60006020828403121561163957600080fd5b5035919050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60408152600061167d604083018688611640565b8281036020840152611690818587611640565b979650505050505050565b600084516116ad8184602089016113c7565b91909101928352506020820152604001919050565b600082516116d48184602087016113c7565b9190910192915050565b7f7b226163636f756e745f6e756d626572223a2230222c22636861696e5f6964228152611d1160f11b602082015260008551611721816022850160208a016113c7565b7f222c2264617461223a6e756c6c2c226d656d6f223a22222c226d736773223a5b6022918401918201526a3d9130b6b7bab73a111d1160a91b6042820152855161177281604d840160208a016113c7565b6e1116113932b1b4b834b2b73a111d1160891b604d929091019182015284516117a281605c8401602089016113c7565b711116113a37b5b2b72fb9bcb6b137b6111d1160711b605c929091019182015283516117d581606e8401602088016113c7565b7f227d5d2c2273657175656e6365223a2230222c22736f75726365223a2230227d606e9290910191820152608e019695505050505050565b60006020828403121561181f57600080fd5b5051919050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b600083516118648184602088016113c7565b9190910191825250602001919050565b634e487b7160e01b600052601160045260246000fd5b60006001820161189c5761189c611874565b5060010190565b600087516118b5818460208c016113c7565b606088901b6bffffffffffffffffffffffff191690830190815286516118e2816014840160208b016113c7565b01601481018690526034810185905283516119048160548401602088016113c7565b0160540198975050505050505050565b8082028115828204841417610aec57610aec611874565b634e487b7160e01b600052601260045260246000fd5b6000826119505761195061192b565b500490565b6000826119645761196461192b565b500690565b80820180821115610aec57610aec611874565b61060f60f31b8152600082516119998160028501602087016113c7565b9190910160020192915050565b634e487b7160e01b600052602160045260246000fdfea164736f6c6343000811000a", - }, - { - ContractAddr: common.HexToAddress(TokenRecoverPortalContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/0f352c4623898d92664a46cbfc26c52b79aad838", - Code: "0", // TODO: update this when contract was ready + Code: "608060405234801561001057600080fd5b50600436106100a95760003560e01c80639fcb5012116100715780639fcb50121461012f578063ac4317511461014c578063bfb5a6a11461015f578063de88700b14610172578063e33f8d321461019d578063f4b88300146101c057600080fd5b8063046f7da2146100ae5780632eb4a7ab146100b85780634c335368146100d4578063572c9980146101145780638456cb5914610127575b600080fd5b6100b66101d3565b005b6100c160345481565b6040519081526020015b60405180910390f35b6101076040518060400160405280601481526020017342696e616e63652d436861696e2d47616e67657360601b81525081565b6040516100cb91906113eb565b6100b661012236600461141e565b610236565b6100b66102c7565b60355461013c9060ff1681565b60405190151581526020016100cb565b6100b661015a36600461149c565b610330565b6100b661016d36600461154d565b610756565b603754610185906001600160a01b031681565b6040516001600160a01b0390911681526020016100cb565b61013c6101ab366004611627565b60009081526036602052604090205460ff1690565b603354610185906001600160a01b031681565b6037546001600160a01b031633146101fe5760405163f2771a9960e01b815260040160405180910390fd5b6037805460ff60a01b191690556040517f62451d457bc659158be6e6247f56ec1df424a5c7597f71c20c2bc44e0965c8f990600090a1565b6037546001600160a01b031633146102615760405163f2771a9960e01b815260040160405180910390fd5b604051638525db0360e01b8152600481018390526001600160a01b038216602482015261100490638525db0390604401600060405180830381600087803b1580156102ab57600080fd5b505af11580156102bf573d6000803e3d6000fd5b505050505050565b6037546001600160a01b031633146102f25760405163f2771a9960e01b815260040160405180910390fd5b6037805460ff60a01b1916600160a01b1790556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e75290600090a1565b336110071461035b57604051630f22c43960e41b815261100760048201526024015b60405180910390fd5b6103c56040518060400160405280600f81526020016e617070726f7665724164647265737360881b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610a989050565b1561048d57601481146103f35783838383604051630a5a604160e01b81526004016103529493929190611669565b600061043783838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060149250610af2915050565b90506001600160a01b0381166104685784848484604051630a5a604160e01b81526004016103529493929190611669565b603380546001600160a01b0319166001600160a01b0392909216919091179055610713565b6104f26040518060400160405280600a8152602001691b595c9adb19549bdbdd60b21b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610a989050565b156105bf5760355460ff161561051b576040516379b3306f60e11b815260040160405180910390fd5b602081146105445783838383604051630a5a604160e01b81526004016103529493929190611669565b604080516020601f840181900481028201810190925282815260009161058491858580838501838280828437600092019190915250869250610af7915050565b806105aa5784848484604051630a5a604160e01b81526004016103529493929190611669565b6034556035805460ff19166001179055610713565b6106286040518060400160405280600e81526020016d30b9b9b2ba283937ba32b1ba37b960911b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610a989050565b156106f257601481146106565783838383604051630a5a604160e01b81526004016103529493929190611669565b600061069c601484848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610af29050565b90506001600160a01b0381166106cd5784848484604051630a5a604160e01b81526004016103529493929190611669565b603780546001600160a01b0319166001600160a01b0392909216919091179055610713565b838383836040516325ee20d560e21b81526004016103529493929190611669565b7ff1ce9b2cbf50eeb05769a29e2543fd350cab46894a7dd9978a12d534bb20e633848484846040516107489493929190611669565b60405180910390a150505050565b60355460ff1661077957604051635740729760e01b815260040160405180910390fd5b60345461079957604051635740729760e01b815260040160405180910390fd5b603754600160a01b900460ff16156107c45760405163c629ac8160e01b815260040160405180910390fd5b6107cc610b06565b600061085a89898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8d018190048102820181019092528b815292508b91508a9081908401838280828437600081840152601f19601f820116905080830192505050505050506108558e8e33610b5f565b610c80565b90506000818c8c6040516020016108739392919061169b565b6040516020818303038152906040528051906020012090506108a48160009081526036602052604090205460ff1690565b156108c157604051623e493160e81b815260040160405180910390fd5b6109693389898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8d018190048102820181019092528b815292508b91508a908190840183828082843760009201919091525050604080516020808c0282810182019093528b82528994509092508b918b91829190850190849080828437600092019190915250610d7492505050565b6109aa848480806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250506034549150849050610e7f565b6109c7576040516309bde33960e01b815260040160405180910390fd5b60008181526036602052604090819020805460ff191660011790555163799758b960e01b8152600481018d9052336024820152604481018c90526110049063799758b990606401600060405180830381600087803b158015610a2857600080fd5b505af1158015610a3c573d6000803e3d6000fd5b5050604080518f81523360208201529081018e90527f717c40d7a8dbe67bb6371e964c24423645711d1624980e1c74e6956fc21088059250606001905060405180910390a15050610a8c60018055565b50505050505050505050565b600081604051602001610aab91906116c2565b6040516020818303038152906040528051906020012083604051602001610ad291906116c2565b604051602081830303815290604052805190602001201490505b92915050565b015190565b91018082526020908101910152565b600260015403610b585760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610352565b6002600155565b600060026040518060400160405280601481526020017342696e616e63652d436861696e2d47616e67657360601b815250610bbc85604051602001610ba691815260200190565b6040516020818303038152906040526000610e95565b6040516bffffffffffffffffffffffff19606087901b166020820152610bf5906034016040516020818303038152906040526001610e95565b610c0b88604051602001610ba691815260200190565b604051602001610c1e94939291906116de565b60408051601f1981840301815290829052610c38916116c2565b602060405180830381855afa158015610c55573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610c78919061180d565b949350505050565b60608351602114610ca457604051638152ea1b60e01b815260040160405180910390fd5b8251604014610cc657604051635e4bd79760e11b815260040160405180910390fd5b60408051608180825260c08201909252600091602082018180368337019050509050610cf6818660006021611067565b610d04818560216040611067565b610d338184604051602001610d1b91815260200190565b60405160208183030381529060405260616020611067565b604080516014808252818301909252600091602082018180368337019050509050815160148282856069600019fa610d6a57600080fd5b5095945050505050565b606060005b8251811015610dd25781838281518110610d9557610d9561183c565b6020026020010151604051602001610dae929190611852565b60405160208183030381529060405291508080610dca9061188a565b915050610d79565b5060006040518060400160405280601481526020017342696e616e63652d436861696e2d47616e67657360601b81525087878660345486604051602001610e1e969594939291906118a3565b60408051601f1981840301815291905280516020909101206033549091506001600160a01b0316610e4f82876110de565b6001600160a01b031614610e7657604051636eb5c6cb60e11b815260040160405180910390fd5b50505050505050565b600082610e8c85846110fa565b14949350505050565b6060600083516002610ea79190611914565b67ffffffffffffffff811115610ebf57610ebf611826565b6040519080825280601f01601f191660200182016040528015610ee9576020820181803683370190505b5060408051808201909152601081526f181899199a1a9b1b9c1cb0b131b232b360811b602082015290915060005b855181101561102f57818251878381518110610f3557610f3561183c565b0160200151610f47919060f81c611941565b81518110610f5757610f5761183c565b01602001516001600160f81b03191683610f72836002611914565b81518110610f8257610f8261183c565b60200101906001600160f81b031916908160001a905350818251878381518110610fae57610fae61183c565b0160200151610fc0919060f81c611955565b81518110610fd057610fd061183c565b01602001516001600160f81b03191683610feb836002611914565b610ff6906001611969565b815181106110065761100661183c565b60200101906001600160f81b031916908160001a905350806110278161188a565b915050610f17565b50831561105f5781604051602001611047919061197c565b60405160208183030381529060405292505050610aec565b509392505050565b60005b818110156110d7578381815181106110845761108461183c565b01602001516001600160f81b031916858461109e8161188a565b9550815181106110b0576110b061183c565b60200101906001600160f81b031916908160001a9053506110d08161188a565b905061106a565b5050505050565b60008060006110ed858561113f565b9150915061105f81611184565b600081815b845181101561105f5761112b8286838151811061111e5761111e61183c565b60200260200101516112d1565b9150806111378161188a565b9150506110ff565b60008082516041036111755760208301516040840151606085015160001a61116987828585611303565b9450945050505061117d565b506000905060025b9250929050565b6000816004811115611198576111986119a6565b036111a05750565b60018160048111156111b4576111b46119a6565b036112015760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610352565b6002816004811115611215576112156119a6565b036112625760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610352565b6003816004811115611276576112766119a6565b036112ce5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610352565b50565b60008183106112ed5760008281526020849052604090206112fc565b60008381526020839052604090205b9392505050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561133a57506000905060036113be565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa15801561138e573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166113b7576000600192509250506113be565b9150600090505b94509492505050565b60005b838110156113e25781810151838201526020016113ca565b50506000910152565b602081526000825180602084015261140a8160408501602087016113c7565b601f01601f19169190910160400192915050565b6000806040838503121561143157600080fd5b8235915060208301356001600160a01b038116811461144f57600080fd5b809150509250929050565b60008083601f84011261146c57600080fd5b50813567ffffffffffffffff81111561148457600080fd5b60208301915083602082850101111561117d57600080fd5b600080600080604085870312156114b257600080fd5b843567ffffffffffffffff808211156114ca57600080fd5b6114d68883890161145a565b909650945060208701359150808211156114ef57600080fd5b506114fc8782880161145a565b95989497509550505050565b60008083601f84011261151a57600080fd5b50813567ffffffffffffffff81111561153257600080fd5b6020830191508360208260051b850101111561117d57600080fd5b60008060008060008060008060008060c08b8d03121561156c57600080fd5b8a35995060208b0135985060408b013567ffffffffffffffff8082111561159257600080fd5b61159e8e838f0161145a565b909a50985060608d01359150808211156115b757600080fd5b6115c38e838f0161145a565b909850965060808d01359150808211156115dc57600080fd5b6115e88e838f0161145a565b909650945060a08d013591508082111561160157600080fd5b5061160e8d828e01611508565b915080935050809150509295989b9194979a5092959850565b60006020828403121561163957600080fd5b5035919050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60408152600061167d604083018688611640565b8281036020840152611690818587611640565b979650505050505050565b600084516116ad8184602089016113c7565b91909101928352506020820152604001919050565b600082516116d48184602087016113c7565b9190910192915050565b7f7b226163636f756e745f6e756d626572223a2230222c22636861696e5f6964228152611d1160f11b602082015260008551611721816022850160208a016113c7565b7f222c2264617461223a6e756c6c2c226d656d6f223a22222c226d736773223a5b6022918401918201526a3d9130b6b7bab73a111d1160a91b6042820152855161177281604d840160208a016113c7565b6e1116113932b1b4b834b2b73a111d1160891b604d929091019182015284516117a281605c8401602089016113c7565b711116113a37b5b2b72fb9bcb6b137b6111d1160711b605c929091019182015283516117d581606e8401602088016113c7565b7f227d5d2c2273657175656e6365223a2230222c22736f75726365223a2230227d606e9290910191820152608e019695505050505050565b60006020828403121561181f57600080fd5b5051919050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b600083516118648184602088016113c7565b9190910191825250602001919050565b634e487b7160e01b600052601160045260246000fd5b60006001820161189c5761189c611874565b5060010190565b600087516118b5818460208c016113c7565b606088901b6bffffffffffffffffffffffff191690830190815286516118e2816014840160208b016113c7565b01601481018690526034810185905283516119048160548401602088016113c7565b0160540198975050505050505050565b8082028115828204841417610aec57610aec611874565b634e487b7160e01b600052601260045260246000fd5b6000826119505761195061192b565b500490565b6000826119645761196461192b565b500690565b80820180821115610aec57610aec611874565b61060f60f31b8152600082516119998160028501602087016113c7565b9190910160020192915050565b634e487b7160e01b600052602160045260246000fdfea164736f6c6343000811000a", }, }, } @@ -884,17 +873,17 @@ func init() { { ContractAddr: common.HexToAddress(ValidatorContract), CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/cfc0bd1127186a917ddc38fd38d22903034d3f0b", - Code: "6080604052600436106104da5760003560e01c80638a7beb0111610281578063c6d339451161015a578063e40716a1116100cc578063f92eb86b11610085578063f92eb86b14610ccd578063f9a2bbc714610ce2578063fc3e590814610cf7578063fccc281314610d0c578063fd4ad81f14610d21578063fd6a687914610d50576104e1565b8063e40716a114610c30578063e589b61e14610c45578063ea321e4914610c65578063eb57e20214610c85578063eda5868c14610ca5578063f340fa0114610cba576104e1565b8063d86222d51161011e578063d86222d514610bb2578063daacdb6614610bc7578063dc927faf14610bdc578063df8079e914610bf1578063e086c7b114610c06578063e1c7392a14610c1b576104e1565b8063c6d3394514610b53578063c81b166214610b68578063c8509d811461090d578063ce910b0c14610b7d578063d68fb56a14610b9d576104e1565b8063aa82dce1116101f3578063ad3c9da6116101b7578063ad3c9da614610ad2578063aef198a914610af2578063b7ab4db514610b07578063b8cf4ef114610b29578063bf9f4995146106bd578063c466689d14610b3e576104e1565b8063aa82dce114610a5e578063aad5606314610a73578063aaf5eb6814610a88578063ab51bb9614610a9d578063ac43175114610ab2576104e1565b80639dc09262116102455780639dc09262146109e05780639fe0f816146109f5578063a0dc275814610a0a578063a1a11bf514610a1f578063a5422d5c14610a34578063a78abc1614610a49576104e1565b80638a7beb011461096c5780638b5ad0c9146109815780638d19a410146109965780639369d7de146109b657806396713da9146109cb576104e1565b806351e80672116103b357806370fd5bad116103255780637a84ca2a116102e95780637a84ca2a146108e357806381650b62146108f8578063831d65d11461090d578063853230aa1461092d578063862498821461094257806388b32f1114610957576104e1565b806370fd5bad1461087a578063718a8aa81461088f57806375d47a0a146108a457806378dfed4a146108b95780637942fd05146108ce576104e1565b80635de1e22c116103775780635de1e22c146107e9578063603d86d3146106a857806360eba4fe146107fe57806362b72cf51461081e5780636969a25c146108335780636e47b48214610865576104e1565b806351e806721461076a57806355614fcc1461077f578063565c56b31461079f5780635667515a146107bf5780635d77156c146107d4576104e1565b80633365af3a1161044c57806343756e5c1161041057806343756e5c146106df57806345cf9daf146106f4578063493279b1146107095780634bf6c8821461072b5780634df6e0c3146107405780635192c82c14610755576104e1565b80633365af3a1461064557806335409f7f146106655780633b071dcc146106855780633de0f0d8146106a85780633dffc387146106bd576104e1565b8063152ad3b81161049e578063152ad3b8146105995780631e4c1524146105bb5780631ff18069146105db578063219f22d5146105f0578063300c356714610605578063321d398a14610625576104e1565b806304c4fec6146104e657806307a56847146104fd5780630bee7a67146105285780630e2374a51461054a5780631182b8751461056c576104e1565b366104e157005b600080fd5b3480156104f257600080fd5b506104fb610d65565b005b34801561050957600080fd5b50610512610dd7565b60405161051f9190618c29565b60405180910390f35b34801561053457600080fd5b5061053d610ddd565b60405161051f9190618c53565b34801561055657600080fd5b5061055f610de2565b60405161051f9190617fa5565b34801561057857600080fd5b5061058c610587366004617e8b565b610de8565b60405161051f9190618138565b3480156105a557600080fd5b506105ae6110cb565b60405161051f919061812d565b3480156105c757600080fd5b506104fb6105d6366004617c99565b6110d4565b3480156105e757600080fd5b50610512611774565b3480156105fc57600080fd5b5061053d61177a565b34801561061157600080fd5b506104fb610620366004617c31565b61177f565b34801561063157600080fd5b506105ae610640366004617e38565b611ac8565b34801561065157600080fd5b506105ae610660366004617e38565b611b97565b34801561067157600080fd5b506104fb610680366004617bf9565b611c48565b34801561069157600080fd5b5061069a611da1565b60405161051f929190618043565b3480156106b457600080fd5b5061051261207d565b3480156106c957600080fd5b506106d2612083565b60405161051f9190618c64565b3480156106eb57600080fd5b5061055f612088565b34801561070057600080fd5b5061051261208e565b34801561071557600080fd5b5061071e612094565b60405161051f9190618c1a565b34801561073757600080fd5b506106d2612099565b34801561074c57600080fd5b5061069a61209e565b34801561076157600080fd5b5061051261221c565b34801561077657600080fd5b5061055f612222565b34801561078b57600080fd5b506105ae61079a366004617bf9565b612228565b3480156107ab57600080fd5b506105126107ba366004617bf9565b61225d565b3480156107cb57600080fd5b506106d26122ae565b3480156107e057600080fd5b5061053d6122b3565b3480156107f557600080fd5b506105126122b8565b34801561080a57600080fd5b5061058c610819366004617e38565b6122be565b34801561082a57600080fd5b50610512612364565b34801561083f57600080fd5b5061085361084e366004617e38565b61236a565b60405161051f96959493929190617fd2565b34801561087157600080fd5b5061055f6123ce565b34801561088657600080fd5b506106d26123d4565b34801561089b57600080fd5b506106d26123d9565b3480156108b057600080fd5b5061055f6123de565b3480156108c557600080fd5b506105126122ae565b3480156108da57600080fd5b506106d26123e4565b3480156108ef57600080fd5b506105126123e9565b34801561090457600080fd5b5061053d6123ef565b34801561091957600080fd5b506104fb610928366004617e8b565b6123f4565b34801561093957600080fd5b50610512612455565b34801561094e57600080fd5b5061051261245b565b34801561096357600080fd5b50610512612461565b34801561097857600080fd5b506105ae612467565b34801561098d57600080fd5b50610512612470565b3480156109a257600080fd5b506105126109b1366004617bf9565b612476565b3480156109c257600080fd5b506104fb6124b6565b3480156109d757600080fd5b506106d26125ca565b3480156109ec57600080fd5b5061055f6125cf565b348015610a0157600080fd5b506105126125d5565b348015610a1657600080fd5b506105126125da565b348015610a2b57600080fd5b5061055f6125df565b348015610a4057600080fd5b5061058c6125e5565b348015610a5557600080fd5b506105ae612601565b348015610a6a57600080fd5b5061055f61260a565b348015610a7f57600080fd5b5061055f612610565b348015610a9457600080fd5b50610512612616565b348015610aa957600080fd5b5061053d6122ae565b348015610abe57600080fd5b506104fb610acd366004617ddc565b61261f565b348015610ade57600080fd5b50610512610aed366004617bf9565b612ebd565b348015610afe57600080fd5b50610512612ecf565b348015610b1357600080fd5b50610b1c612edc565b60405161051f9190618030565b348015610b3557600080fd5b50610512612fc8565b348015610b4a57600080fd5b50610512612fcd565b348015610b5f57600080fd5b506105126123d4565b348015610b7457600080fd5b5061055f612fd3565b348015610b8957600080fd5b5061058c610b98366004617e38565b612fd9565b348015610ba957600080fd5b50610512612fe6565b348015610bbe57600080fd5b50610512613025565b348015610bd357600080fd5b50610512613031565b348015610be857600080fd5b5061055f613037565b348015610bfd57600080fd5b5061055f61303d565b348015610c1257600080fd5b50610512610ddd565b348015610c2757600080fd5b506104fb613043565b348015610c3c57600080fd5b506105126131ef565b348015610c5157600080fd5b506104fb610c60366004617bf9565b6131f5565b348015610c7157600080fd5b506105ae610c80366004617d9d565b61333a565b348015610c9157600080fd5b506104fb610ca0366004617bf9565b6134c0565b348015610cb157600080fd5b5061053d6135c4565b6104fb610cc8366004617bf9565b6135c9565b348015610cd957600080fd5b50610512613931565b348015610cee57600080fd5b5061055f613937565b348015610d0357600080fd5b506106d26125d5565b348015610d1857600080fd5b5061055f61393d565b348015610d2d57600080fd5b50610d41610d3c366004617e38565b613943565b60405161051f93929190618c32565b348015610d5c57600080fd5b5061055f613a05565b6000610d7033612476565b9050600b8181548110610d7f57fe5b600091825260209091206001601690920201015460ff16610dbb5760405162461bcd60e51b8152600401610db29061889d565b60405180910390fd5b6000610dc5612fe6565b9050610dd2338383613a0b565b505050565b60095481565b606481565b61200181565b60005460609060ff16610e0d5760405162461bcd60e51b8152600401610db2906182f7565b600b54610ecb57610e1c6177a5565b60015460005b81811015610ec757600b80546001810182556000919091528351600080516020618d368339815191526016909202918201908155602080860151600080516020618d768339815191528401805460ff1916911515919091179055604086015180518794610ea393600080516020618d568339815191529091019201906177d4565b506060820151610eb9906003830190601361784e565b505050806001019050610e22565b5050505b610ed361787b565b6000610f1485858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250613cdc92505050565b9150915080610f3057610f276064613e98565b925050506110c4565b815160009060ff16610f5557610f4e83602001518460400151613ef9565b9050611090565b825160ff166001141561108c57826020015151600114610f9a57600080516020618d16833981519152604051610f8a90618756565b60405180910390a1506067611087565b6000600460008560200151600081518110610fb157fe5b6020026020010151600001516001600160a01b03166001600160a01b0316815260200190815260200160002054905080600014806110195750600180820381548110610ff957fe5b9060005260206000209060040201600201601c9054906101000a900460ff165b1561107957836020015160008151811061102f57fe5b6020026020010151600001516001600160a01b03167fe209c46bebf57cf265d5d9009a00870e256d9150f3ed5281ab9d9eb3cec6e4be60405160405180910390a260009150611085565b6110828161505d565b91505b505b611090565b5060655b63ffffffff81166110b557505060408051600081526020810190915291506110c49050565b6110be81613e98565b93505050505b9392505050565b60075460ff1681565b3341146110f35760405162461bcd60e51b8152600401610db290618a85565b3a156111115760405162461bcd60e51b8152600401610db2906187dc565b825160408051828152602080840282010190915260609082801561114f57816020015b61113c61789f565b8152602001906001900390816111345790505b50905060005b828110156111f9576040518060c0016040528087838151811061117457fe5b60200260200101516001600160a01b0316815260200160006001600160a01b0316815260200160006001600160a01b031681526020018683815181106111b657fe5b60200260200101516001600160401b0316815260200160001515815260200160008152508282815181106111e657fe5b6020908102919091010152600101611155565b5060405163d31f968d60e01b81526120009063d31f968d906112249061100090600890600401618014565b60206040518083038186803b15801561123c57600080fd5b505afa158015611250573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112749190617d7d565b1561156d5780518061128857505050610dd2565b6015548181111561132357815b818110156113215760158054806112a857fe5b60008281526020812060046000199093019283020180546001600160a01b0319908116825560018201805490911690556002810180546001600160e81b031916905560030155905560168054806112fb57fe5b60019003818190600052602060002001600061131791906178d4565b9055600101611295565b505b60005b828110156115635781811061144b57601584828151811061134357fe5b602090810291909101810151825460018181018555600094855293839020825160049092020180546001600160a01b039283166001600160a01b0319918216178255938301519481018054958316958516959095179094556040820151600285018054606085015160808601511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b199590961692909716919091179290921692909217169290921790915560a00151600390910155855160169087908390811061141357fe5b6020908102919091018101518254600181018455600093845292829020815161144594919091019291909101906177d4565b5061155b565b83818151811061145757fe5b60200260200101516015828154811061146c57fe5b6000918252602091829020835160049092020180546001600160a01b039283166001600160a01b0319918216178255928401516001820180549184169185169190911790556040840151600282018054606087015160808801511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b1995909716929097169190911792909216939093171692909217905560a090910151600390910155855186908290811061152757fe5b60200260200101516016828154811061153c57fe5b9060005260206000200190805190602001906115599291906177d4565b505b600101611326565b5050505050610dd2565b60608061157a8386615171565b9150915060005b600154811015611664576001818154811061159857fe5b90600052602060002090600402016003015460001461165c576120026001600160a01b031663092193ab600183815481106115cf57fe5b906000526020600020906004020160030154600184815481106115ee57fe5b60009182526020909120600491820201546040516001600160e01b031960e086901b168152611629926001600160a01b039092169101617fa5565b6000604051808303818588803b15801561164257600080fd5b505af1158015611656573d6000803e3d6000fd5b50505050505b600101611581565b5047156116d2577f6ecc855f9440a9282c90913bbc91619fd44f5ec0b462af28d127b116f130aa4d4760405161169a9190618c29565b60405180910390a1604051611002904780156108fc02916000818181858888f193505050501580156116d0573d6000803e3d6000fd5b505b600060038190556005558151156116ed576116ed82826153aa565b6110016001600160a01b031663fc4333cd6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561172a57600080fd5b505af115801561173e573d6000803e3d6000fd5b50506040517fedd8d7296956dd970ab4de3f2fc03be2b0ffc615d20cd4c72c6e44f928630ebf925060009150a150505050505050565b60035481565b606881565b33411461179e5760405162461bcd60e51b8152600401610db290618a85565b60105443116117bf5760405162461bcd60e51b8152600401610db290618453565b3a156117dd5760405162461bcd60e51b8152600401610db2906187dc565b60005460ff166117ff5760405162461bcd60e51b8152600401610db2906182f7565b60006110023168056bc75e2d631000008111156118365761182f8168056bc75e2d6310000063ffffffff615bb116565b915061183d565b5050611abe565b6040516309a99b4f60e41b815261100290639a99b4f0906118649030908690600401617fb9565b602060405180830381600087803b15801561187e57600080fd5b505af1158015611892573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118b69190617e50565b9150816118c4575050611abe565b6000805b848110156118f2578585828181106118dc57fe5b90506020020135820191508060010190506118c8565b508061190057505050611abe565b6000806000805b89811015611ab6578489898381811061191c57fe5b9050602002013588028161192c57fe5b0493508a8a8281811061193b57fe5b90506020020160208101906119509190617bf9565b6001600160a01b03811660009081526004602052604090205490935091508115611a6c57600060018084038154811061198557fe5b9060005260206000209060040201905080600201601c9054906101000a900460ff16156119f257836001600160a01b03167fb9c75cbbfde137c4281689580799ef5f52144e78858f776a5979b2b212137d85866040516119e59190618c29565b60405180910390a2611a66565b600354611a05908663ffffffff615bf316565b6003908155810154611a1d908663ffffffff615bf316565b60038201556040516001600160a01b038516907fcb0aad6cf9cd03bdf6137e359f541c42f38b39f007cae8e89e88aa7d8c6617b290611a5d908890618c29565b60405180910390a25b50611aae565b826001600160a01b03167fb9c75cbbfde137c4281689580799ef5f52144e78858f776a5979b2b212137d8585604051611aa59190618c29565b60405180910390a25b600101611907565b505050505050505b5050436010555050565b6001546000908210611adc57506000611b92565b60006001600160a01b031660018381548110611af457fe5b60009182526020909120600490910201546001600160a01b03161480611b2457506008541580611b245750600a54155b80611b33575060085460095410155b80611b445750611b4282611b97565b155b80611b6d57506000600b8381548110611b5957fe5b906000526020600020906016020160000154115b80611b8157506001611b7d612edc565b5111155b15611b8e57506000611b92565b5060015b919050565b6001546000908210611bab57506000611b92565b600b548210611be85760018281548110611bc157fe5b9060005260206000209060040201600201601c9054906101000a900460ff16159050611b92565b60018281548110611bf557fe5b9060005260206000209060040201600201601c9054906101000a900460ff16158015611c425750600b8281548110611c2957fe5b600091825260209091206001601690920201015460ff16155b92915050565b3361100114611c695760405162461bcd60e51b8152600401610db290618b9a565b600b54611d2757611c786177a5565b60015460005b81811015611d2357600b80546001810182556000919091528351600080516020618d368339815191526016909202918201908155602080860151600080516020618d768339815191528401805460ff1916911515919091179055604086015180518794611cff93600080516020618d568339815191529091019201906177d4565b506060820151611d15906003830190601361784e565b505050806001019050611c7e565b5050505b6001600160a01b03811660009081526004602052604090205480611d4b5750611d9e565b6001810390506000600b8281548110611d6057fe5b600091825260209091206001601690920201015460ff169050611d838383615c18565b8015611d8c5750805b15610dd2576009805460001901905550505b50565b60015460609081906000805b82811015611df45760018181548110611dc257fe5b9060005260206000209060040201600201601c9054906101000a900460ff16611dec576001909101905b600101611dad565b50606081604051908082528060200260200182016040528015611e21578160200160208202803683370190505b509050606082604051908082528060200260200182016040528015611e5a57816020015b6060815260200190600190039081611e455790505b50600b5460009450909150841415611fd55760005b84811015611fcf5760018181548110611e8457fe5b9060005260206000209060040201600201601c9054906101000a900460ff16611fc75760018181548110611eb457fe5b600091825260209091206004909102015483516001600160a01b0390911690849086908110611edf57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050600b8181548110611f0c57fe5b600091825260209182902060026016909202018101805460408051601f600019610100600186161502019093169490940491820185900485028401850190528083529192909190830182828015611fa45780601f10611f7957610100808354040283529160200191611fa4565b820191906000526020600020905b815481529060010190602001808311611f8757829003601f168201915b5050505050828581518110611fb557fe5b60209081029190910101526001909301925b600101611e6f565b50612071565b60005b8481101561206f5760018181548110611fed57fe5b9060005260206000209060040201600201601c9054906101000a900460ff16612067576001818154811061201d57fe5b600091825260209091206004909102015483516001600160a01b039091169084908690811061204857fe5b6001600160a01b03909216602092830291909101909101526001909301925b600101611fd8565b505b909450925050505b9091565b61271081565b600181565b61100181565b60085481565b603881565b600881565b600e54600c546060918291806120b2575060155b60606120bc612edc565b905060606120c982615fcb565b9050828251116120e0579094509250612079915050565b838383510310156120f2578282510393505b83156121285760c8430461210e83838388880360008a8a616139565b6121268383838888038989038a8b8b8b510301616139565b505b606083604051908082528060200260200182016040528015612154578160200160208202803683370190505b50905060608460405190808252806020026020018201604052801561218d57816020015b60608152602001906001900390816121785790505b50905060005b8581101561220e578481815181106121a757fe5b60200260200101518382815181106121bb57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508381815181106121e757fe5b60200260200101518282815181106121fb57fe5b6020908102919091010152600101612193565b509096509450505050509091565b60065481565b61200081565b6001600160a01b03811660009081526004602052604081205480612250576000915050611b92565b600019016110c481611b97565b6001600160a01b03811660009081526004602052604081205480612285576000915050611b92565b60018082038154811061229457fe5b906000526020600020906004020160030154915050919050565b600081565b606781565b600f5481565b601281815481106122cb57fe5b600091825260209182902001805460408051601f600260001961010060018716150201909416939093049283018590048502810185019091528181529350909183018282801561235c5780601f106123315761010080835404028352916020019161235c565b820191906000526020600020905b81548152906001019060200180831161233f57829003601f168201915b505050505081565b60105481565b6001818154811061237757fe5b600091825260209091206004909102018054600182015460028301546003909301546001600160a01b0392831694509082169291821691600160a01b81046001600160401b031691600160e01b90910460ff169086565b61100581565b600281565b601081565b61100881565b600b81565b600c5481565b606681565b33612000146124155760405162461bcd60e51b8152600401610db290618a36565b7f41ce201247b6ceb957dcdb217d0b8acb50b9ea0e12af9af4f5e7f3890210160583838360405161244893929190618c72565b60405180910390a1505050565b6103e881565b60025481565b60115481565b60145460ff1681565b600a5481565b6001600160a01b038116600090815260046020526040812054806124ac5760405162461bcd60e51b8152600401610db2906189be565b6000190192915050565b600b54612574576124c56177a5565b60015460005b8181101561257057600b80546001810182556000919091528351600080516020618d368339815191526016909202918201908155602080860151600080516020618d768339815191528401805460ff191691151591909117905560408601518051879461254c93600080516020618d568339815191529091019201906177d4565b506060820151612562906003830190601361784e565b5050508060010190506124cb565b5050505b6008546125815760036008555b600a5461258e576002600a555b600061259933612476565b90506125a481611ac8565b6125c05760405162461bcd60e51b8152600401610db290618713565b611d9e3382616290565b600981565b61100781565b600381565b60c881565b61100681565b6040518060a0016040528060788152602001618d966078913981565b60005460ff1681565b61200281565b61300081565b6402540be40081565b60005460ff166126415760405162461bcd60e51b8152600401610db2906182f7565b33611007146126625760405162461bcd60e51b8152600401610db29061880a565b6126cc84848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080518082019091526013815272065787069726554696d655365636f6e6447617606c1b602082015291506163289050565b1561276957602081146126f15760405162461bcd60e51b8152600401610db290618978565b604080516020601f840181900481028201810190925282815260009161272f9185858083850183828082843760009201919091525061638192505050565b9050606481101580156127455750620186a08111155b6127615760405162461bcd60e51b8152600401610db290618603565b600255612e7a565b6127c984848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260098152686275726e526174696f60b81b602082015291506163289050565b1561285857602081146127ee5760405162461bcd60e51b8152600401610db29061817d565b604080516020601f840181900481028201810190925282815260009161282c9185858083850183828082843760009201919091525061638192505050565b90506127108111156128505760405162461bcd60e51b8152600401610db290618495565b600655612e7a565b6128c284848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260138152726d61784e756d4f664d61696e7461696e696e6760681b602082015291506163289050565b1561295c57602081146128e75760405162461bcd60e51b8152600401610db2906181b4565b604080516020601f84018190048102820181019092528281526000916129259185858083850183828082843760009201919091525061638192505050565b600c5490915080612934575060155b8082106129535760405162461bcd60e51b8152600401610db290618508565b50600855612e7a565b6129c584848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260128152716d61696e7461696e536c6173685363616c6560701b602082015291506163289050565b15612a5e57602081146129ea5760405162461bcd60e51b8152600401610db29061827d565b604080516020601f8401819004810282018101909252828152600091612a289185858083850183828082843760009201919091525061638192505050565b9050600081118015612a3a5750600a81105b612a565760405162461bcd60e51b8152600401610db290618b16565b600a55612e7a565b612ad284848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601981527f6d61784e756d4f66576f726b696e6743616e6469646174657300000000000000602082015291506163289050565b15612b615760208114612af75760405162461bcd60e51b8152600401610db290618231565b604080516020601f8401819004810282018101909252828152600091612b359185858083850183828082843760009201919091525061638192505050565b9050600d54811115612b595760405162461bcd60e51b8152600401610db290618679565b600e55612e7a565b612bca84848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260128152716d61784e756d4f6643616e6469646174657360701b602082015291506163289050565b15612c4c5760208114612bef5760405162461bcd60e51b8152600401610db290618858565b604080516020601f8401819004810282018101909252828152600091612c2d9185858083850183828082843760009201919091525061638192505050565b600d819055600e54909150811015612c4657600d54600e555b50612e7a565b612cb084848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600d81526c6e756d4f66436162696e65747360981b602082015291506163289050565b15612d5e5760208114612cd55760405162461bcd60e51b8152600401610db2906182c2565b604080516020601f8401819004810282018101909252828152600091612d139185858083850183828082843760009201919091525061638192505050565b905060008111612d355760405162461bcd60e51b8152600401610db290618365565b6064811115612d565760405162461bcd60e51b8152600401610db2906183ad565b600c55612e7a565b612dc684848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601181527073797374656d526577617264526174696f60781b602082015291506163289050565b15612e625760208114612deb5760405162461bcd60e51b8152600401610db290618ad2565b604080516020601f8401819004810282018101909252828152600091612e299185858083850183828082843760009201919091525061638192505050565b905060018110158015612e3e57506127108111155b612e5a5760405162461bcd60e51b8152600401610db2906185b0565b600f55612e7a565b60405162461bcd60e51b8152600401610db290618b73565b7f6cdb0ac70ab7f2e2d035cca5be60d89906f2dede7648ddbd7402189c1eeed17a84848484604051612eaf949392919061814b565b60405180910390a150505050565b60046020526000908152604090205481565b68056bc75e2d6310000081565b6001546060906000805b82811015612f0b57612ef781611b97565b15612f03578160010191505b600101612ee6565b50606081604051908082528060200260200182016040528015612f38578160200160208202803683370190505b5090506000915060005b83811015612fbf57612f5381611b97565b15612fb75760018181548110612f6557fe5b600091825260209091206004909102015482516001600160a01b0390911690839085908110612f9057fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508260010192505b600101612f42565b50925050505b90565b601581565b61027181565b61100281565b601381815481106122cb57fe5b6000612ff0612edc565b519050600080600c5411613005576015613009565b600c545b905080821115613017578091505b8161302157600191505b5090565b67016345785d8a000081565b60055481565b61100381565b61200481565b60005460ff16156130665760405162461bcd60e51b8152600401610db29061890a565b61306e61787b565b60006130916040518060a0016040528060788152602001618d9660789139613cdc565b91509150806130b25760405162461bcd60e51b8152600401610db2906189f5565b60005b8260200151518110156131d7576001836020015182815181106130d457fe5b60209081029190910181015182546001818101855560009485528385208351600493840290910180546001600160a01b039283166001600160a01b03199182161782558587015182850180549185169183169190911790556040860151600283018054606089015160808a01511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b199590981692909516919091179290921694909417161790915560a0909301516003909301929092559186015180519185019391859081106131aa57fe5b602090810291909101810151516001600160a01b03168252810191909152604001600020556001016130b5565b50506103e8600255506000805460ff19166001179055565b600d5481565b33612002146132165760405162461bcd60e51b8152600401610db290618be3565b60005b60155481101561329e57816001600160a01b03166015828154811061323a57fe5b60009182526020909120600490910201546001600160a01b031614156132965760016015828154811061326957fe5b9060005260206000209060040201600201601c6101000a81548160ff02191690831515021790555061329e565b600101613219565b506001600160a01b0381166000908152600460205260409020548015806132ef57506001808203815481106132cf57fe5b9060005260206000209060040201600201601c9054906101000a900460ff165b1561332d576040516001600160a01b038316907fe209c46bebf57cf265d5d9009a00870e256d9150f3ed5281ab9d9eb3cec6e4be90600090a2613336565b610dd28161505d565b5050565b601354600090815b818110156134435761342b85858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060138054909250859150811061339357fe5b600091825260209182902001805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156134215780601f106133f657610100808354040283529160200191613421565b820191906000526020600020905b81548152906001019060200180831161340457829003601f168201915b5050505050616386565b1561343b57600192505050611c42565b600101613342565b5060125460005b818110156134b45761349b86868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060128054909250859150811061339357fe5b156134ac5760019350505050611c42565b60010161344a565b50600095945050505050565b33611001146134e15760405162461bcd60e51b8152600401610db290618b9a565b600b5461359f576134f06177a5565b60015460005b8181101561359b57600b80546001810182556000919091528351600080516020618d368339815191526016909202918201908155602080860151600080516020618d768339815191528401805460ff191691151591909117905560408601518051879461357793600080516020618d568339815191529091019201906177d4565b50606082015161358d906003830190601361784e565b5050508060010190506134f6565b5050505b60006135aa826163ea565b90506135b581611ac8565b15613336576133368282616290565b606581565b3341146135e85760405162461bcd60e51b8152600401610db290618a85565b60005460ff1661360a5760405162461bcd60e51b8152600401610db2906182f7565b6000341161362a5760405162461bcd60e51b8152600401610db29061864a565b3a156136485760405162461bcd60e51b8152600401610db2906187dc565b6001600160a01b03811660009081526004602052604090205460145434919060ff1661368857610271600f556103aa6006556014805460ff191660011790555b60006136b16127106136a5600f548661658d90919063ffffffff16565b9063ffffffff6165c716565b90508015613721576040516110029082156108fc029083906000818181858888f193505050501580156136e8573d6000803e3d6000fd5b507f6ecc855f9440a9282c90913bbc91619fd44f5ec0b462af28d127b116f130aa4d816040516137189190618c29565b60405180910390a15b60008311801561373357506000600654115b156137d95760006137556127106136a56006548761658d90919063ffffffff16565b905080156137d75760405161dead9082156108fc029083906000818181858888f1935050505015801561378c573d6000803e3d6000fd5b507f627059660ea01c4733a328effb2294d2f86905bf806da763a89cee254de8bee5816040516137bc9190618c29565b60405180910390a16137d4848263ffffffff615bb116565b93505b505b6137e9838263ffffffff615bb116565b925081156138e957600060018084038154811061380257fe5b9060005260206000209060040201905080600201601c9054906101000a900460ff161561386f57846001600160a01b03167ff177e5d6c5764d79c32883ed824111d9b13f5668cf6ab1cc12dd36791dd955b4856040516138629190618c29565b60405180910390a26138e3565b600354613882908563ffffffff615bf316565b600390815581015461389a908563ffffffff615bf316565b60038201556040516001600160a01b038616907f93a090ecc682c002995fad3c85b30c5651d7fd29b0be5da9d784a3302aedc055906138da908790618c29565b60405180910390a25b5061392b565b836001600160a01b03167ff177e5d6c5764d79c32883ed824111d9b13f5668cf6ab1cc12dd36791dd955b4846040516139229190618c29565b60405180910390a25b50505050565b600e5481565b61100081565b61dead81565b600b818154811061395057fe5b6000918252602091829020601691909102018054600180830154600280850180546040805161010096831615969096026000190190911692909204601f810188900488028501880190925281845293965060ff909116949192918301828280156139fb5780601f106139d0576101008083540402835291602001916139fb565b820191906000526020600020905b8154815290600101906020018083116139de57829003601f168201915b5050505050905083565b61100481565b6000600a5460001480613a1c575081155b80613a275750600954155b15613a34575060006110c4565b60096000815460019003919050819055506000613a7f600a546136a5856136a5600b8981548110613a6157fe5b6000918252602090912060169091020154439063ffffffff615bb116565b90506000600b8581548110613a9057fe5b906000526020600020906016020160010160006101000a81548160ff0219169083151502179055506000806110016001600160a01b0316638256ace66040518163ffffffff1660e01b8152600401604080518083038186803b158015613af557600080fd5b505afa158015613b09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b2d9190617e68565b9150915060009350808310613c8c57613b468787615c18565b506040516333c1892360e21b81526000906120029063cf06248c90613b6f908b90600401617fa5565b60206040518083038186803b158015613b8757600080fd5b505afa158015613b9b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613bbf9190617c15565b6001600160a01b031614613c2b576040516313d13bdb60e31b815261100190639e89ded890613bf4908a908790600401617fb9565b600060405180830381600087803b158015613c0e57600080fd5b505af1158015613c22573d6000803e3d6000fd5b50505050613c83565b6040516305bfb49960e41b815261100190635bfb499090613c50908a90600401617fa5565b600060405180830381600087803b158015613c6a57600080fd5b505af1158015613c7e573d6000803e3d6000fd5b505050505b60019350613c9e565b818310613c9e57613c9c876163ea565b505b6040516001600160a01b038816907fb9d38178dc641ff1817967a63c9078cbcd955a9f1fcd75e0e3636de615d44d3b90600090a25050509392505050565b613ce461787b565b6000613cee61787b565b613cf6617918565b613d07613d0286616609565b61662e565b90506000805b613d1683616678565b15613e8a5780613d3b57613d31613d2c84616699565b6166e7565b60ff168452613e82565b8060011415613e7d576060613d57613d5285616699565b616767565b90508051604051908082528060200260200182016040528015613d9457816020015b613d8161789f565b815260200190600190039081613d795790505b5085602001819052508051604051908082528060200260200182016040528015613dd257816020015b6060815260200190600190039081613dbd5790505b50604086015260005b8151811015613e7257613dec61789f565b60606000613e0c858581518110613dff57fe5b6020026020010151616838565b92509250925080613e2c578860009a509a50505050505050505050613e93565b8289602001518581518110613e3d57fe5b60200260200101819052508189604001518581518110613e5957fe5b6020026020010181905250505050806001019050613ddb565b506001925050613e82565b613e8a565b600101613d0d565b50919350909150505b915091565b604080516001808252818301909252606091829190816020015b6060815260200190600190039081613eb2579050509050613ed88363ffffffff16616952565b81600081518110613ee557fe5b60200260200101819052506110c481616965565b6000606483511115613f3057600080516020618d16833981519152604051613f209061840a565b60405180910390a1506066611c42565b60005b8351811015613fce5760005b81811015613fc557848181518110613f5357fe5b6020026020010151600001516001600160a01b0316858381518110613f7457fe5b6020026020010151600001516001600160a01b03161415613fbd57600080516020618d16833981519152604051613faa90618565565b60405180910390a1606692505050611c42565b600101613f3f565b50600101613f33565b5060608060606015805480602002602001604051908101604052809291908181526020016000905b828210156140805760008481526020908190206040805160c0810182526004860290920180546001600160a01b039081168452600180830154821685870152600283015491821693850193909352600160a01b81046001600160401b03166060850152600160e01b900460ff16151560808401526003015460a08301529083529092019101613ff6565b50505050905060606016805480602002602001604051908101604052809291908181526020016000905b828210156141555760008481526020908190208301805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156141415780601f1061411657610100808354040283529160200191614141565b820191906000526020600020905b81548152906001019060200180831161412457829003601f168201915b5050505050815260200190600101906140aa565b50505050905060005b82518110156141b25782818151811061417357fe5b60200260200101516060015160020283828151811061418e57fe5b60209081029190910101516001600160401b0390911660609091015260010161415e565b506060806141c2898986866169ef565b915091506141d08282615171565b6001546040805182815260208084028201019091529298509096506000955085945092506060915082801561420f578160200160208202803683370190505b50905060005b828110156143a05760006001600160a01b03166120026001600160a01b031663cf06248c6001848154811061424657fe5b60009182526020909120600491820201546040516001600160e01b031960e085901b168152614281926001600160a01b039092169101617fa5565b60206040518083038186803b15801561429957600080fd5b505afa1580156142ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142d19190617c15565b6001600160a01b0316146143335760018282815181106142ed57fe5b602002602001019060ff16908160ff16815250506001818154811061430e57fe5b90600052602060002090600402016003015460001461432e578360010193505b614398565b67016345785d8a00006001828154811061434957fe5b9060005260206000209060040201600301541061436b57846001019450614398565b6001818154811061437857fe5b906000526020600020906004020160030154600014614398578360010193505b600101614215565b506060846040519080825280602002602001820160405280156143cd578160200160208202803683370190505b5090506060856040519080825280602002602001820160405280156143fc578160200160208202803683370190505b50905060608660405190808252806020026020018201604052801561442b578160200160208202803683370190505b50905060608760405190808252806020026020018201604052801561445a578160200160208202803683370190505b509050600060608860405190808252806020026020018201604052801561448b578160200160208202803683370190505b5090506060896040519080825280602002602001820160405280156144ba578160200160208202803683370190505b50905060009a506000995060006110046001600160a01b031663149d14d96040518163ffffffff1660e01b815260040160206040518083038186803b15801561450257600080fd5b505afa158015614516573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061453a9190617e50565b905067016345785d8a000081111561458657600080516020618d16833981519152604051614567906188c9565b60405180910390a160689e505050505050505050505050505050611c42565b60005b8a81101561491a5789818151811061459d57fe5b602002602001015160ff166001141561469357600181815481106145bd57fe5b90600052602060002090600402016003015460001461468e57600181815481106145e357fe5b600091825260209091206004909102015484516001600160a01b039091169085908e90811061460e57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250506001818154811061463b57fe5b906000526020600020906004020160030154838d8151811061465957fe5b60200260200101818152505060018a8d8151811061467357fe5b602002602001019060ff16908160ff16815250508b6001019b505b614912565b67016345785d8a0000600182815481106146a957fe5b9060005260206000209060040201600301541061482e57600181815481106146cd57fe5b906000526020600020906004020160020160009054906101000a90046001600160a01b0316898e815181106146fe57fe5b60200260200101906001600160a01b031690816001600160a01b03168152505060006402540be4006001838154811061473357fe5b9060005260206000209060040201600301548161474c57fe5b066001838154811061475a57fe5b9060005260206000209060040201600301540390506147828382615bb190919063ffffffff16565b898f8151811061478e57fe5b602002602001018181525050600182815481106147a757fe5b906000526020600020906004020160010160009054906101000a90046001600160a01b0316878f815181106147d857fe5b60200260200101906001600160a01b031690816001600160a01b03168152505081888f8151811061480557fe5b6020908102919091010152614820868263ffffffff615bf316565b95508d6001019d5050614912565b6001818154811061483b57fe5b906000526020600020906004020160030154600014614912576001818154811061486157fe5b906000526020600020906004020160010160009054906101000a90046001600160a01b0316848d8151811061489257fe5b60200260200101906001600160a01b031690816001600160a01b031681525050600181815481106148bf57fe5b906000526020600020906004020160030154838d815181106148dd57fe5b60200260200101818152505060008a8d815181106148f757fe5b602002602001019060ff16908160ff16815250508b6001019b505b600101614589565b5060008415614b90576002546040516303702b2960e51b815261100491636e056520918891614954918e918e918d914201906004016180b3565b6020604051808303818588803b15801561496d57600080fd5b505af19350505050801561499e575060408051601f3d908101601f1916820190925261499b91810190617d7d565b60015b614b15576040516000815260443d10156149ba57506000614a55565b60046000803e60005160e01c6308c379a081146149db576000915050614a55565b60043d036004833e81513d60248201116001600160401b0382111715614a0657600092505050614a55565b80830180516001600160401b03811115614a27576000945050505050614a55565b8060208301013d8601811115614a4557600095505050505050614a55565b601f01601f191660405250925050505b80614a605750614aa2565b60019150857fa7cdeed7d0db45e3219a6e5d60838824c16f1d39991fcfe3f963029c844bf28082604051614a949190618138565b60405180910390a250614b10565b3d808015614acc576040519150601f19603f3d011682016040523d82523d6000602084013e614ad1565b606091505b5060019150857fbfa884552dd8921b6ce90bfe906952ae5b3b29be0cc1a951d4f62697635a3a4582604051614b069190618138565b60405180910390a2505b614b90565b8015614b57577fa217d08e65f80c73121cd9db834d81652d544bfbf452f6d04922b16c90a37b7086604051614b4a9190618c29565b60405180910390a1614b8e565b857fa7cdeed7d0db45e3219a6e5d60838824c16f1d39991fcfe3f963029c844bf280604051614b85906181fa565b60405180910390a25b505b8015614d465760005b8751811015614d44576000888281518110614bb057fe5b60200260200101519050600060018281548110614bc957fe5b60009182526020909120600160049092020181015481546001600160a01b03909116916108fc9185908110614bfa57fe5b9060005260206000209060040201600301549081150290604051600060405180830381858888f1935050505090508015614cb65760018281548110614c3b57fe5b60009182526020909120600160049092020181015481546001600160a01b03909116917f6c61d60f69a7beb3e1c80db7f39f37b208537cbb19da3174511b477812b2fc7d9185908110614c8a57fe5b906000526020600020906004020160030154604051614ca99190618c29565b60405180910390a2614d3a565b60018281548110614cc357fe5b60009182526020909120600160049092020181015481546001600160a01b03909116917f25d0ce7d2f0cec669a8c17efe49d195c13455bb8872b65fa610ac7f53fe4ca7d9185908110614d1257fe5b906000526020600020906004020160030154604051614d319190618c29565b60405180910390a25b5050600101614b99565b505b835115614f3c5760005b8451811015614f3a578a8181518110614d6557fe5b602002602001015160ff1660011415614e04576120026001600160a01b031663092193ab858381518110614d9557fe5b6020026020010151878481518110614da957fe5b60200260200101516040518363ffffffff1660e01b8152600401614dcd9190617fa5565b6000604051808303818588803b158015614de657600080fd5b505af1158015614dfa573d6000803e3d6000fd5b5050505050614f32565b6000858281518110614e1257fe5b60200260200101516001600160a01b03166108fc868481518110614e3257fe5b60200260200101519081150290604051600060405180830381858888f1935050505090508015614ec857858281518110614e6857fe5b60200260200101516001600160a01b03167f6c61d60f69a7beb3e1c80db7f39f37b208537cbb19da3174511b477812b2fc7d868481518110614ea657fe5b6020026020010151604051614ebb9190618c29565b60405180910390a2614f30565b858281518110614ed457fe5b60200260200101516001600160a01b03167f25d0ce7d2f0cec669a8c17efe49d195c13455bb8872b65fa610ac7f53fe4ca7d868481518110614f1257fe5b6020026020010151604051614f279190618c29565b60405180910390a25b505b600101614d50565b505b505050505050505050505050506000471115614fb9577f6ecc855f9440a9282c90913bbc91619fd44f5ec0b462af28d127b116f130aa4d47604051614f819190618c29565b60405180910390a1604051611002904780156108fc02916000818181858888f19350505050158015614fb7573d6000803e3d6000fd5b505b60006003819055600555815115614fd457614fd482826153aa565b6110016001600160a01b031663fc4333cd6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561501157600080fd5b505af1158015615025573d6000803e3d6000fd5b50506040517fedd8d7296956dd970ab4de3f2fc03be2b0ffc615d20cd4c72c6e44f928630ebf925060009150a1506000949350505050565b600154600554600091906000198201118015906150d05760018085038154811061508357fe5b600091825260208220600490910201546040516001600160a01b03909116917fe209c46bebf57cf265d5d9009a00870e256d9150f3ed5281ab9d9eb3cec6e4be91a2600092505050611b92565b6005805460019081019091558054819060001987019081106150ee57fe5b9060005260206000209060040201600201601c6101000a81548160ff02191690831515021790555060018085038154811061512557fe5b600091825260208220600490910201546040516001600160a01b03909116917ff226e7d8f547ff903d9d419cf5f54e0d7d07efa9584135a53a057c5f1f27f49a91a25060009392505050565b606080600080808080615182612fe6565b6001549091505b801561529057600181039250600b83815481106151a257fe5b600091825260209091206001601690920201015460ff166151c257615287565b600183815481106151cf57fe5b60009182526020909120600490910201546001600160a01b031694506151f6858484613a0b565b9350831580615209575060018a51038610155b1561521357615287565b60005b8a5181101561528557856001600160a01b03168b828151811061523557fe5b6020026020010151600001516001600160a01b0316141561527d5760018b828151811061525e57fe5b6020908102919091010151901515608090910152600190960195615285565b600101615216565b505b60001901615189565b50848951036040519080825280602002602001820160405280156152ce57816020015b6152bb61789f565b8152602001906001900390816152b35790505b5096508489510360405190808252806020026020018201604052801561530857816020015b60608152602001906001900390816152f35790505b5095506000915060005b895181101561539c5789818151811061532757fe5b6020026020010151608001516153945789818151811061534357fe5b602002602001015188848151811061535757fe5b602002602001018190525088818151811061536e57fe5b602002602001015187848151811061538257fe5b60200260200101819052508260010192505b600101615312565b5050505050505b9250929050565b600154825160005b828110156154c75760016153c461789f565b600183815481106153d157fe5b600091825260208083206040805160c08101825260049490940290910180546001600160a01b0390811685526001820154811693850193909352600281015492831691840191909152600160a01b82046001600160401b03166060840152600160e01b90910460ff16151560808301526003015460a082015291505b8481101561549b5787818151811061546157fe5b6020026020010151600001516001600160a01b031682600001516001600160a01b03161415615493576000925061549b565b60010161544d565b5081156154bd5780516001600160a01b03166000908152600460205260408120555b50506001016153b2565b508082111561558657805b828110156155845760018054806154e557fe5b60008281526020812060046000199093019283020180546001600160a01b0319908116825560018201805490911690556002810180546001600160e81b0319169055600301559055600b80548061553857fe5b60008281526020812060166000199093019283020181815560018101805460ff191690559061556a60028301826178d4565b615578600383016000617938565b505090556001016154d2565b505b60008183106155955781615597565b825b905060005b81811015615953576156498682815181106155b357fe5b6020026020010151600183815481106155c857fe5b60009182526020918290206040805160c08101825260049390930290910180546001600160a01b0390811684526001820154811694840194909452600281015493841691830191909152600160a01b83046001600160401b03166060830152600160e01b90920460ff161515608082015260039091015460a0820152616dbb565b6157fd57806001016004600088848151811061566157fe5b6020026020010151600001516001600160a01b03166001600160a01b031681526020019081526020016000208190555085818151811061569d57fe5b6020026020010151600182815481106156b257fe5b6000918252602091829020835160049092020180546001600160a01b039283166001600160a01b0319918216178255928401516001820180549184169185169190911790556040840151600282018054606087015160808801511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b1995909716929097169190911792909216939093171692909217905560a090910151600390910155845185908290811061576d57fe5b6020026020010151600b828154811061578257fe5b906000526020600020906016020160020190805190602001906157a69291906177d4565b506000600b82815481106157b657fe5b60009182526020822060169190910201600101805460ff191692151592909217909155600b8054839081106157e757fe5b600091825260209091206016909102015561594b565b61588e85828151811061580c57fe5b6020026020010151600b838154811061582157fe5b600091825260209182902060026016909202018101805460408051601f6000196101006001861615020190931694909404918201859004850284018501905280835291929091908301828280156134215780601f106133f657610100808354040283529160200191613421565b6158d95784818151811061589e57fe5b6020026020010151600b82815481106158b357fe5b906000526020600020906016020160020190805190602001906158d79291906177d4565b505b6000600182815481106158e857fe5b90600052602060002090600402016003018190555085818151811061590957fe5b6020026020010151608001516001828154811061592257fe5b9060005260206000209060040201600201601c6101000a81548160ff0219169083151502179055505b60010161559c565b5082821115615b2b576159646177a5565b835b83811015615b285785818151811061597a57fe5b60200260200101518260400181905250600187828151811061599857fe5b6020908102919091018101518254600181810185556000948552838520835160049093020180546001600160a01b039384166001600160a01b0319918216178255848601518284018054918616918316919091179055604080860151600284018054606089015160808a01511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b1995909a1692909616919091179290921696909617169190911790935560a090930151600390930192909255600b8054928301815590935284516016909102600080516020618d36833981519152810191825585830151600080516020618d768339815191528201805491151560ff1990921691909117905592850151805186949293615ace93600080516020618d56833981519152019201906177d4565b506060820151615ae4906003830190601361784e565b5050508060010160046000898481518110615afb57fe5b602090810291909101810151516001600160a01b0316825281019190915260400160002055600101615966565b50505b615b33616e3c565b615b3b61701e565b6000600981905560015493505b83811015615ba9576000600b8281548110615b5f57fe5b60009182526020822060169190910201600101805460ff191692151592909217909155600b805483908110615b9057fe5b6000918252602090912060169091020155600101615b48565b505050505050565b60006110c483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061720c565b6000828201838110156110c45760405162461bcd60e51b8152600401610db29061832e565b60008060018381548110615c2857fe5b90600052602060002090600402016003015490506000600180805490500390506001615c52612edc565b5111615c8757600060018581548110615c6757fe5b906000526020600020906004020160030181905550600092505050611c42565b846001600160a01b03167f3b6f9ef90462b512a1293ecec018670bf7b7f1876fb727590a8a6d7643130a7083604051615cc09190618c29565b60405180910390a26001600160a01b038516600090815260046020526040812055835b60015460001901811015615ead5760018160010181548110615d0157fe5b906000526020600020906004020160018281548110615d1c57fe5b60009182526020909120825460049092020180546001600160a01b03199081166001600160a01b0393841617825560018085015481840180548416918616919091179055600280860180549185018054909416919095161780835584546001600160401b03600160a01b91829004160267ffffffffffffffff60a01b1990911617808355935460ff600160e01b918290041615150260ff60e01b19909416939093179055600392830154920191909155600b805490918301908110615ddd57fe5b9060005260206000209060160201600b8281548110615df857fe5b600091825260209091208254601690920201908155600180830154818301805460ff909216151560ff1990921691909117905560028084018054615e4f938386019390821615610100026000190190911604617947565b50615e62600382810190840160136179bc565b50905050806001016004600060018481548110615e7b57fe5b600091825260208083206004909202909101546001600160a01b03168352820192909252604001902055600101615ce3565b506001805480615eb957fe5b60008281526020812060046000199093019283020180546001600160a01b0319908116825560018201805490911690556002810180546001600160e81b0319169055600301559055600b805480615f0c57fe5b60008281526020812060166000199093019283020181815560018101805460ff1916905590615f3e60028301826178d4565b615f4c600383016000617938565b505090556000818381615f5b57fe5b0490508015615fbf5760015460005b81811015615fbc578260018281548110615f8057fe5b9060005260206000209060040201600301540160018281548110615fa057fe5b6000918252602090912060036004909202010155600101615f6a565b50505b50600195945050505050565b60015481516040805182815260208084028201019091526060929190839082801561600a57816020015b6060815260200190600190039081615ff55790505b50600b549091508314616021579250611b92915050565b60005b8281101561613057600b60016004600089858151811061604057fe5b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054038154811061607457fe5b600091825260209182902060026016909202018101805460408051601f60001961010060018616150201909316949094049182018590048502840185019052808352919290919083018282801561610c5780601f106160e15761010080835404028352916020019161610c565b820191906000526020600020905b8154815290600101906020018083116160ef57829003601f168201915b505050505082828151811061611d57fe5b6020908102919091010152600101616024565b50949350505050565b60005b82811015616286576000828783880160405160200161615c929190617f97565b6040516020818303038152906040528051906020012060001c8161617c57fe5b0690508085018287011461627d576000898388018151811061619a57fe5b60200260200101519050606089848901815181106161b457fe5b602002602001015190508a838801815181106161cc57fe5b60200260200101518b858a01815181106161e257fe5b60200260200101906001600160a01b031690816001600160a01b031681525050818b8489018151811061621157fe5b60200260200101906001600160a01b031690816001600160a01b031681525050898388018151811061623f57fe5b60200260200101518a858a018151811061625557fe5b6020026020010181905250808a8489018151811061626f57fe5b602002602001018190525050505b5060010161613c565b5050505050505050565b600980546001908101909155600b8054839081106162aa57fe5b906000526020600020906016020160010160006101000a81548160ff02191690831515021790555043600b82815481106162e057fe5b600091825260208220601690910201919091556040516001600160a01b038416917ff62981a567ec3cec866c6fa93c55bcdf841d6292d18b8d522ececa769375d82d91a25050565b60008160405160200161633b9190617f7b565b60405160208183030381529060405280519060200120836040516020016163629190617f7b565b6040516020818303038152906040528051906020012014905092915050565b015190565b8151815160009160019181148083146163a257600092506163e0565b600160208701838101602088015b6002848385100114156163db5780518351146163cf5760009650600093505b602092830192016163b0565b505050505b5090949350505050565b6001600160a01b0381166000908152600460205260408120548061641357506000199050611b92565b60018103905060006001828154811061642857fe5b906000526020600020906004020160030154905060006001838154811061644b57fe5b6000918252602090912060036004909202010155600154604051600019909101906001600160a01b038616907f8cd4e147d8af98a9e3b6724021b8bf6aed2e5dac71c38f2dce8161b82585b25d906164a4908590618c29565b60405180910390a2806164bc57829350505050611b92565b60008183816164c757fe5b04905080156165835760005b848110156165255781600182815481106164e957fe5b906000526020600020906004020160030154016001828154811061650957fe5b60009182526020909120600360049092020101556001016164d3565b50600180549085015b8181101561658057826001828154811061654457fe5b906000526020600020906004020160030154016001828154811061656457fe5b600091825260209091206003600490920201015560010161652e565b50505b5091949350505050565b60008261659c57506000611c42565b828202828482816165a957fe5b04146110c45760405162461bcd60e51b8152600401610db29061879b565b60006110c483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250617238565b6166116179e6565b506040805180820190915281518152602082810190820152919050565b616636617918565b61663f8261726f565b61664857600080fd5b600061665783602001516172a9565b60208085015160408051808201909152868152920190820152915050919050565b60006166826179e6565b505080518051602091820151919092015191011190565b6166a16179e6565b6166aa82616678565b6166b357600080fd5b602082015160006166c38261730c565b80830160209586015260408051808201909152908152938401919091525090919050565b8051600090158015906166fc57508151602110155b61670557600080fd5b600061671483602001516172a9565b9050808360000151101561673a5760405162461bcd60e51b8152600401610db290618941565b82516020808501518301805192849003929183101561613057506020919091036101000a90049392505050565b60606167728261726f565b61677b57600080fd5b6000616786836173ed565b90506060816040519080825280602002602001820160405280156167c457816020015b6167b16179e6565b8152602001906001900390816167a95790505b50905060006167d685602001516172a9565b60208601510190506000805b8481101561682d576167f38361730c565b915060405180604001604052808381526020018481525084828151811061681657fe5b6020908102919091010152918101916001016167e2565b509195945050505050565b61684061789f565b6060600061684c61789f565b6060616856617918565b61685f8761662e565b90506000805b61686e83616678565b1561694357806168995761688961688484616699565b617449565b6001600160a01b0316855261693b565b80600114156168c1576168ae61688484616699565b6001600160a01b0316602086015261693b565b80600214156168e9576168d661688484616699565b6001600160a01b0316604086015261693b565b8060031415616915576168fe613d2c84616699565b6001600160401b031660608601526001915061693b565b80600414156169365761692f61692a84616699565b617463565b935061693b565b616943565b600101616865565b50929791965091945092505050565b6060611c42616960836174d3565b6175b9565b60608151600014156169865750604080516000815260208101909152611b92565b60608260008151811061699557fe5b602002602001015190506000600190505b83518110156169d6576169cc828583815181106169bf57fe5b602002602001015161760b565b91506001016169a6565b506110c46169e9825160c060ff16617688565b8261760b565b60608060006120026001600160a01b031663c473318f6040518163ffffffff1660e01b815260040160206040518083038186803b158015616a2f57600080fd5b505afa158015616a43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190616a679190617e50565b90508085518851011015616a7c575083518651015b606081604051908082528060200260200182016040528015616ab857816020015b616aa561789f565b815260200190600190039081616a9d5790505b509050606082604051908082528060200260200182016040528015616af157816020015b6060815260200190600190039081616adc5790505b50905060008060005b8b51831080616b095750895182105b8015616b1457508581105b15616da9578b51831415616b8457898281518110616b2e57fe5b6020026020010151858281518110616b4257fe5b6020026020010181905250888281518110616b5957fe5b6020026020010151848281518110616b6d57fe5b602090810291909101015260019182019101616afa565b8951821415616bef578b8381518110616b9957fe5b6020026020010151858281518110616bad57fe5b60200260200101819052508a8381518110616bc457fe5b6020026020010151848281518110616bd857fe5b602090810291909101015260019283019201616afa565b898281518110616bfb57fe5b6020026020010151606001516001600160401b03168c8481518110616c1c57fe5b6020026020010151606001516001600160401b03161115616c98578b8381518110616c4357fe5b6020026020010151858281518110616c5757fe5b60200260200101819052508a8381518110616c6e57fe5b6020026020010151848281518110616c8257fe5b6020026020010181905250826001019250616da1565b898281518110616ca457fe5b6020026020010151606001516001600160401b03168c8481518110616cc557fe5b6020026020010151606001516001600160401b03161015616d4157898281518110616cec57fe5b6020026020010151858281518110616d0057fe5b6020026020010181905250888281518110616d1757fe5b6020026020010151848281518110616d2b57fe5b6020026020010181905250816001019150616da1565b898281518110616d4d57fe5b6020026020010151600001516001600160a01b03168c8481518110616d6e57fe5b6020026020010151600001516001600160a01b03161015616d95578b8381518110616c4357fe5b898281518110616b2e57fe5b600101616afa565b50929a91995090975050505050505050565b805182516000916001600160a01b039182169116148015616df5575081602001516001600160a01b031683602001516001600160a01b0316145b8015616e1a575081604001516001600160a01b031683604001516001600160a01b0316145b80156110c45750506060908101519101516001600160401b0390811691161490565b60125460135480821115616e8757805b82811015616e85576012805480616e5f57fe5b600190038181906000526020600020016000616e7b91906178d4565b9055600101616e4c565b505b6000818310616e965781616e98565b825b905060005b81811015616fb057616f5560128281548110616eb557fe5b600091825260209182902001805460408051601f6002600019610100600187161502019094169390930492830185900485028101850190915281815292830182828015616f435780601f10616f1857610100808354040283529160200191616f43565b820191906000526020600020905b815481529060010190602001808311616f2657829003601f168201915b50505050506013838154811061339357fe5b616fa85760138181548110616f6657fe5b9060005260206000200160128281548110616f7d57fe5b906000526020600020019080546001816001161561010002031660029004616fa6929190617947565b505b600101616e9d565b5082821115610dd257825b8281101561392b57601260138281548110616fd257fe5b6000918252602080832084546001818101875595855291909320929091018054617015949390920192909160026101009282161592909202600019011604617947565b50600101616fbb565b601354600b548082111561706957805b8281101561706757601380548061704157fe5b60019003818190600052602060002001600061705d91906178d4565b905560010161702e565b505b6000818310617078578161707a565b825b905060005b81811015617199576171376013828154811061709757fe5b600091825260209182902001805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156171255780601f106170fa57610100808354040283529160200191617125565b820191906000526020600020905b81548152906001019060200180831161710857829003601f168201915b5050505050600b838154811061582157fe5b61719157600b818154811061714857fe5b90600052602060002090601602016002016013828154811061716657fe5b90600052602060002001908054600181600116156101000203166002900461718f929190617947565b505b60010161707f565b5082821115610dd257825b8281101561392b576013600b82815481106171bb57fe5b60009182526020808320845460018082018755958552919093206016929092029092016002908101805461720395939094019390926000199082161561010002011604617947565b506001016171a4565b600081848411156172305760405162461bcd60e51b8152600401610db29190618138565b505050900390565b600081836172595760405162461bcd60e51b8152600401610db29190618138565b50600083858161726557fe5b0495945050505050565b805160009061728057506000611b92565b6020820151805160001a9060c082101561729f57600092505050611b92565b5060019392505050565b8051600090811a60808110156172c3576000915050611b92565b60b88110806172de575060c081108015906172de575060f881105b156172ed576001915050611b92565b60c08110156173015760b519019050611b92565b60f519019050611b92565b80516000908190811a608081101561732757600191506173e6565b60b881101561733c57607e19810191506173e6565b60c081101561738d57600060b78203600186019550806020036101000a8651049150600181018201935050808310156173875760405162461bcd60e51b8152600401610db2906186e8565b506173e6565b60f88110156173a25760be19810191506173e6565b600060f78203600186019550806020036101000a8651049150600181018201935050808310156173e45760405162461bcd60e51b8152600401610db2906186e8565b505b5092915050565b80516000906173fe57506000611b92565b6000809050600061741284602001516172a9565b602085015185519181019250015b80821015617440576174318261730c565b82019150826001019250617420565b50909392505050565b805160009060151461745a57600080fd5b611c42826166e7565b805160609061747157600080fd5b600061748083602001516172a9565b83516040805191839003808352601f19601f82011683016020019091529192506060908280156174b7576020820181803683370190505b509050600081602001905061613084876020015101828561775a565b604080516020808252818301909252606091829190602082018180368337505050602081018490529050600067ffffffffffffffff1984166175175750601861753b565b6fffffffffffffffffffffffffffffffff1984166175375750601061753b565b5060005b60208110156175715781818151811061755057fe5b01602001516001600160f81b0319161561756957617571565b60010161753b565b60008160200390506060816040519080825280601f01601f1916602001820160405280156175a6576020820181803683370190505b5080830196909652508452509192915050565b6060815160011480156175eb5750607f60f81b826000815181106175d957fe5b01602001516001600160f81b03191611155b156175f7575080611b92565b611c426176098351608060ff16617688565b835b6060806040519050835180825260208201818101602087015b8183101561763c578051835260209283019201617624565b50855184518101855292509050808201602086015b81831015617669578051835260209283019201617651565b508651929092011591909101601f01601f191660405250905092915050565b60606801000000000000000083106176b25760405162461bcd60e51b8152600401610db2906184e0565b6040805160018082528183019092526060916020820181803683370190505090506037841161770c5782840160f81b816000815181106176ee57fe5b60200101906001600160f81b031916908160001a9053509050611c42565b6060617717856174d3565b90508381510160370160f81b8260008151811061773057fe5b60200101906001600160f81b031916908160001a905350617751828261760b565b95945050505050565b8061776457610dd2565b5b60208110617784578251825260209283019290910190601f1901617765565b915181516020939093036101000a6000190180199091169216919091179052565b604051806080016040528060008152602001600015158152602001606081526020016177cf617a00565b905290565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061781557805160ff1916838001178555617842565b82800160010185558215617842579182015b82811115617842578251825591602001919060010190617827565b50613021929150617a1f565b82601381019282156178425791602002820182811115617842578251825591602001919060010190617827565b6040518060600160405280600060ff16815260200160608152602001606081525090565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a081019190915290565b50805460018160011615610100020316600290046000825580601f106178fa5750611d9e565b601f016020900490600052602060002090810190611d9e9190617a1f565b604051806040016040528061792b6179e6565b8152602001600081525090565b50611d9e906013810190617a1f565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106179805780548555617842565b8280016001018555821561784257600052602060002091601f016020900482015b828111156178425782548255916001019190600101906179a1565b826013810192821561784257918201828111156178425782548255916001019190600101906179a1565b604051806040016040528060008152602001600081525090565b6040518061026001604052806013906020820280368337509192915050565b612fc591905b808211156130215760008155600101617a25565b8035611c4281618d00565b60008083601f840112617a55578182fd5b5081356001600160401b03811115617a6b578182fd5b60208301915083602080830285010111156153a357600080fd5b6000601f8381840112617a96578182fd5b8235617aa9617aa482618cb5565b618c8f565b818152925060208084019085810160005b84811015617b3b578135880189603f820112617ad557600080fd5b838101356001600160401b03811115617aed57600080fd5b617afe818901601f19168601618c8f565b81815260408c81848601011115617b1457600080fd5b82818501888401375060009181018601919091528552509282019290820190600101617aba565b50505050505092915050565b600082601f830112617b57578081fd5b8135617b65617aa482618cb5565b818152915060208083019084810181840286018201871015617b8657600080fd5b6000805b85811015617b3b5782356001600160401b0381168114617ba8578283fd5b85529383019391830191600101617b8a565b60008083601f840112617bcb578182fd5b5081356001600160401b03811115617be1578182fd5b6020830191508360208285010111156153a357600080fd5b600060208284031215617c0a578081fd5b81356110c481618d00565b600060208284031215617c26578081fd5b81516110c481618d00565b60008060008060408587031215617c46578283fd5b84356001600160401b0380821115617c5c578485fd5b617c6888838901617a44565b90965094506020870135915080821115617c80578384fd5b50617c8d87828801617a44565b95989497509550505050565b600080600060608486031215617cad578283fd5b83356001600160401b0380821115617cc3578485fd5b81860187601f820112617cd4578586fd5b80359250617ce4617aa484618cb5565b80848252602080830192508084018b828389028701011115617d0457898afd5b8994505b86851015617d2e57617d1a8c82617a39565b845260019490940193928101928101617d08565b509097508801359350505080821115617d45578384fd5b617d5187838801617b47565b93506040860135915080821115617d66578283fd5b50617d7386828701617a85565b9150509250925092565b600060208284031215617d8e578081fd5b815180151581146110c4578182fd5b60008060208385031215617daf578182fd5b82356001600160401b03811115617dc4578283fd5b617dd085828601617bba565b90969095509350505050565b60008060008060408587031215617df1578384fd5b84356001600160401b0380821115617e07578586fd5b617e1388838901617bba565b90965094506020870135915080821115617e2b578384fd5b50617c8d87828801617bba565b600060208284031215617e49578081fd5b5035919050565b600060208284031215617e61578081fd5b5051919050565b60008060408385031215617e7a578182fd5b505080516020909101519092909150565b600080600060408486031215617e9f578081fd5b833560ff81168114617eaf578182fd5b925060208401356001600160401b03811115617ec9578182fd5b617ed586828701617bba565b9497909650939450505050565b6000815180845260208085019450808401835b83811015617f1a5781516001600160a01b031687529582019590820190600101617ef5565b509495945050505050565b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b60008151808452617f67816020860160208601618cd4565b601f01601f19169290920160200192915050565b60008251617f8d818460208701618cd4565b9190910192915050565b918252602082015260400190565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b03968716815294861660208601529290941660408401526001600160401b03166060830152911515608082015260a081019190915260c00190565b6001600160a01b0392909216825260ff16602082015260400190565b6000602082526110c46020830184617ee2565b6000604082526180566040830185617ee2565b602083820381850152818551808452828401915082838202850101838801865b838110156180a457601f19878403018552618092838351617f4f565b94860194925090850190600101618076565b50909998505050505050505050565b6000608082526180c66080830187617ee2565b828103602084810191909152865180835287820192820190845b818110156180fc578451835293830193918301916001016180e0565b505084810360408601526181108188617ee2565b93505050506001600160401b038316606083015295945050505050565b901515815260200190565b6000602082526110c46020830184617f4f565b60006040825261815f604083018688617f25565b8281036020840152618172818587617f25565b979650505050505050565b6020808252601c908201527f6c656e677468206f66206275726e526174696f206d69736d6174636800000000604082015260600190565b60208082526026908201527f6c656e677468206f66206d61784e756d4f664d61696e7461696e696e67206d696040820152650e6dac2e8c6d60d31b606082015260800190565b6020808252601b908201527f6261746368207472616e736665722072657475726e2066616c73650000000000604082015260600190565b6020808252602c908201527f6c656e677468206f66206d61784e756d4f66576f726b696e6743616e6469646160408201526b0e8cae640dad2e6dac2e8c6d60a31b606082015260800190565b60208082526025908201527f6c656e677468206f66206d61696e7461696e536c6173685363616c65206d69736040820152640dac2e8c6d60db1b606082015260800190565b6020808252818101527f6c656e677468206f66206e756d4f66436162696e657473206d69736d61746368604082015260600190565b60208082526019908201527f74686520636f6e7472616374206e6f7420696e69742079657400000000000000604082015260600190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b60208082526028908201527f746865206e756d4f66436162696e657473206d75737420626520677265617465604082015267072207468616e20360c41b606082015260800190565b60208082526039908201527f746865206e756d4f66436162696e657473206d757374206265206c657373207460408201527f68616e204d41585f4e554d5f4f465f56414c494441544f525300000000000000606082015260800190565b60208082526029908201527f746865206e756d626572206f662076616c696461746f727320657863656564206040820152681d1a19481b1a5b5a5d60ba1b606082015260800190565b60208082526022908201527f63616e206e6f7420646f207468697320747769636520696e206f6e6520626c6f604082015261636b60f01b606082015260800190565b6020808252602b908201527f746865206275726e526174696f206d757374206265206e6f206772656174657260408201526a0207468616e2031303030360ac1b606082015260800190565b6020808252600e908201526d696e70757420746f6f206c6f6e6760901b604082015260600190565b60208082526037908201527f746865206d61784e756d4f664d61696e7461696e696e67206d7573742062652060408201527f6c657373207468616e206e756d4f66436162696e657473000000000000000000606082015260800190565b6020808252602b908201527f6475706c696361746520636f6e73656e7375732061646472657373206f66207660408201526a185b1a59185d1bdc94d95d60aa1b606082015260800190565b60208082526033908201527f7468652073797374656d526577617264526174696f206d757374206265206e6f60408201527202067726561746572207468616e20313030303606c1b606082015260800190565b60208082526027908201527f7468652065787069726554696d655365636f6e64476170206973206f7574206f604082015266662072616e676560c81b606082015260800190565b6020808252601590820152746465706f7369742076616c7565206973207a65726f60581b604082015260600190565b60208082526049908201527f746865206d61784e756d4f66576f726b696e6743616e64696461746573206d7560408201527f7374206265206e6f742067726561746572207468616e206d61784e756d4f6643606082015268616e6469646174657360b81b608082015260a00190565b6020808252601190820152706164646974696f6e206f766572666c6f7760781b604082015260600190565b60208082526023908201527f63616e206e6f7420656e7465722054656d706f72617279204d61696e74656e616040820152626e636560e81b606082015260800190565b60208082526025908201527f6c656e677468206f66206a61696c2076616c696461746f7273206d757374206260408201526465206f6e6560d81b606082015260800190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252601490820152736761737072696365206973206e6f74207a65726f60601b604082015260600190565b6020808252602e908201527f746865206d6573736167652073656e646572206d75737420626520676f76657260408201526d1b985b98d94818dbdb9d1c9858dd60921b606082015260800190565b60208082526025908201527f6c656e677468206f66206d61784e756d4f6643616e64696461746573206d69736040820152640dac2e8c6d60db1b606082015260800190565b6020808252601290820152716e6f7420696e206d61696e74656e616e636560701b604082015260600190565b60208082526021908201527f666565206973206c6172676572207468616e2044555354595f494e434f4d494e6040820152604760f81b606082015260800190565b60208082526019908201527f74686520636f6e747261637420616c726561647920696e697400000000000000604082015260600190565b6020808252601a908201527f6c656e677468206973206c657373207468616e206f6666736574000000000000604082015260600190565b60208082526026908201527f6c656e677468206f662065787069726554696d655365636f6e64476170206d696040820152650e6dac2e8c6d60d31b606082015260800190565b60208082526017908201527f6f6e6c792063757272656e742076616c696461746f7273000000000000000000604082015260600190565b60208082526021908201527f6661696c656420746f20706172736520696e69742076616c696461746f7253656040820152601d60fa1b606082015260800190565b6020808252602f908201527f746865206d6573736167652073656e646572206d7573742062652063726f737360408201526e0818da185a5b8818dbdb9d1c9858dd608a1b606082015260800190565b6020808252602d908201527f746865206d6573736167652073656e646572206d75737420626520746865206260408201526c3637b1b590383937b23ab1b2b960991b606082015260800190565b60208082526024908201527f6c656e677468206f662073797374656d526577617264526174696f206d69736d6040820152630c2e8c6d60e31b606082015260800190565b6020808252603e908201527f746865206d61696e7461696e536c6173685363616c65206d757374206265206760408201527f726561746572207468616e203020616e64206c657373207468616e2031300000606082015260800190565b6020808252600d908201526c756e6b6e6f776e20706172616d60981b604082015260600190565b60208082526029908201527f746865206d6573736167652073656e646572206d75737420626520736c6173686040820152680818dbdb9d1c9858dd60ba1b606082015260800190565b6020808252601f908201527f746865206d73672073656e646572206d757374206265207374616b6548756200604082015260600190565b61ffff91909116815260200190565b90815260200190565b60008482528315156020830152606060408301526177516060830184617f4f565b63ffffffff91909116815260200190565b60ff91909116815260200190565b600060ff8516825260406020830152617751604083018486617f25565b6040518181016001600160401b0381118282101715618cad57600080fd5b604052919050565b60006001600160401b03821115618cca578081fd5b5060209081020190565b60005b83811015618cef578181015183820152602001618cd7565b8381111561392b5750506000910152565b6001600160a01b0381168114611d9e57600080fdfe70e72399380dcfb0338abc03dc8d47f9f470ada8e769c9a78d644ea97385ecb20175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db90175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01dbb0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01dbaf87680f873f871949fb29aac15b9a4b7f17c3385939b007540f4d791949fb29aac15b9a4b7f17c3385939b007540f4d791949fb29aac15b9a4b7f17c3385939b007540f4d79164b085e6972fc98cd3c81d64d40e325acfed44365b97a7567a27939c14dbc7512ddcf54cb1284eb637cfa308ae4e00cb5588a164736f6c6343000604000a", + Code: "6080604052600436106104da5760003560e01c80638a7beb0111610281578063c6d339451161015a578063e40716a1116100cc578063f92eb86b11610085578063f92eb86b14610cb8578063f9a2bbc714610ccd578063fc3e590814610ce2578063fccc281314610cf7578063fd4ad81f14610d0c578063fd6a687914610d3b576104e1565b8063e40716a114610c1b578063e589b61e14610c30578063ea321e4914610c50578063eb57e20214610c70578063eda5868c14610c90578063f340fa0114610ca5576104e1565b8063d86222d51161011e578063d86222d514610b9d578063daacdb6614610bb2578063dc927faf14610bc7578063df8079e914610bdc578063e086c7b114610bf1578063e1c7392a14610c06576104e1565b8063c6d3394514610b3e578063c81b166214610b53578063c8509d811461090d578063ce910b0c14610b68578063d68fb56a14610b88576104e1565b8063aa82dce1116101f3578063ad3c9da6116101b7578063ad3c9da614610abd578063aef198a914610add578063b7ab4db514610af2578063b8cf4ef114610b14578063bf9f4995146106bd578063c466689d14610b29576104e1565b8063aa82dce114610a49578063aad5606314610a5e578063aaf5eb6814610a73578063ab51bb9614610a88578063ac43175114610a9d576104e1565b80639dc09262116102455780639dc09262146109cb5780639fe0f816146109e0578063a0dc2758146109f5578063a1a11bf514610a0a578063a5422d5c14610a1f578063a78abc1614610a34576104e1565b80638a7beb01146109575780638b5ad0c91461096c5780638d19a410146109815780639369d7de146109a157806396713da9146109b6576104e1565b806351e80672116103b357806370fd5bad116103255780637a84ca2a116102e95780637a84ca2a146108e357806381650b62146108f8578063831d65d11461090d578063853230aa146108b9578063862498821461092d57806388b32f1114610942576104e1565b806370fd5bad1461087a578063718a8aa81461088f57806375d47a0a146108a457806378dfed4a146108b95780637942fd05146108ce576104e1565b80635de1e22c116103775780635de1e22c146107e9578063603d86d3146106a857806360eba4fe146107fe57806362b72cf51461081e5780636969a25c146108335780636e47b48214610865576104e1565b806351e806721461076a57806355614fcc1461077f578063565c56b31461079f5780635667515a146107bf5780635d77156c146107d4576104e1565b80633365af3a1161044c57806343756e5c1161041057806343756e5c146106df57806345cf9daf146106f4578063493279b1146107095780634bf6c8821461072b5780634df6e0c3146107405780635192c82c14610755576104e1565b80633365af3a1461064557806335409f7f146106655780633b071dcc146106855780633de0f0d8146106a85780633dffc387146106bd576104e1565b8063152ad3b81161049e578063152ad3b8146105995780631e4c1524146105bb5780631ff18069146105db578063219f22d5146105f0578063300c356714610605578063321d398a14610625576104e1565b806304c4fec6146104e657806307a56847146104fd5780630bee7a67146105285780630e2374a51461054a5780631182b8751461056c576104e1565b366104e157005b600080fd5b3480156104f257600080fd5b506104fb610d50565b005b34801561050957600080fd5b50610512610dc2565b60405161051f9190618c1b565b60405180910390f35b34801561053457600080fd5b5061053d610dc8565b60405161051f9190618c45565b34801561055657600080fd5b5061055f610dcd565b60405161051f9190617f97565b34801561057857600080fd5b5061058c610587366004617e7d565b610dd3565b60405161051f919061812a565b3480156105a557600080fd5b506105ae6110b6565b60405161051f919061811f565b3480156105c757600080fd5b506104fb6105d6366004617c8b565b6110bf565b3480156105e757600080fd5b5061051261175f565b3480156105fc57600080fd5b5061053d611765565b34801561061157600080fd5b506104fb610620366004617c23565b61176a565b34801561063157600080fd5b506105ae610640366004617e2a565b611ab3565b34801561065157600080fd5b506105ae610660366004617e2a565b611b82565b34801561067157600080fd5b506104fb610680366004617beb565b611c33565b34801561069157600080fd5b5061069a611d8c565b60405161051f929190618035565b3480156106b457600080fd5b50610512612068565b3480156106c957600080fd5b506106d261206e565b60405161051f9190618c56565b3480156106eb57600080fd5b5061055f612073565b34801561070057600080fd5b50610512612079565b34801561071557600080fd5b5061071e61207f565b60405161051f9190618c0c565b34801561073757600080fd5b506106d2612085565b34801561074c57600080fd5b5061069a61208a565b34801561076157600080fd5b50610512612208565b34801561077657600080fd5b5061055f61220e565b34801561078b57600080fd5b506105ae61079a366004617beb565b612214565b3480156107ab57600080fd5b506105126107ba366004617beb565b612249565b3480156107cb57600080fd5b506106d261229a565b3480156107e057600080fd5b5061053d61229f565b3480156107f557600080fd5b506105126122a4565b34801561080a57600080fd5b5061058c610819366004617e2a565b6122aa565b34801561082a57600080fd5b50610512612350565b34801561083f57600080fd5b5061085361084e366004617e2a565b612356565b60405161051f96959493929190617fc4565b34801561087157600080fd5b5061055f6123ba565b34801561088657600080fd5b506106d26123c0565b34801561089b57600080fd5b506106d26123c5565b3480156108b057600080fd5b5061055f6123ca565b3480156108c557600080fd5b506105126123d0565b3480156108da57600080fd5b506106d26123d6565b3480156108ef57600080fd5b506105126123db565b34801561090457600080fd5b5061053d6123e1565b34801561091957600080fd5b506104fb610928366004617e7d565b6123e6565b34801561093957600080fd5b50610512612447565b34801561094e57600080fd5b5061051261244d565b34801561096357600080fd5b506105ae612453565b34801561097857600080fd5b5061051261245c565b34801561098d57600080fd5b5061051261099c366004617beb565b612462565b3480156109ad57600080fd5b506104fb6124a2565b3480156109c257600080fd5b506106d26125b6565b3480156109d757600080fd5b5061055f6125bb565b3480156109ec57600080fd5b506105126125c1565b348015610a0157600080fd5b506105126125c6565b348015610a1657600080fd5b5061055f6125cb565b348015610a2b57600080fd5b5061058c6125d1565b348015610a4057600080fd5b506105ae6125f0565b348015610a5557600080fd5b5061055f6125f9565b348015610a6a57600080fd5b5061055f6125ff565b348015610a7f57600080fd5b50610512612605565b348015610a9457600080fd5b5061053d61229a565b348015610aa957600080fd5b506104fb610ab8366004617dce565b61260e565b348015610ac957600080fd5b50610512610ad8366004617beb565b612eac565b348015610ae957600080fd5b50610512612ebe565b348015610afe57600080fd5b50610b07612ecb565b60405161051f9190618022565b348015610b2057600080fd5b50610512612fb7565b348015610b3557600080fd5b50610512612fbc565b348015610b4a57600080fd5b506105126123c0565b348015610b5f57600080fd5b5061055f612fc2565b348015610b7457600080fd5b5061058c610b83366004617e2a565b612fc8565b348015610b9457600080fd5b50610512612fd5565b348015610ba957600080fd5b50610512613014565b348015610bbe57600080fd5b50610512613020565b348015610bd357600080fd5b5061055f613026565b348015610be857600080fd5b5061055f61302c565b348015610bfd57600080fd5b50610512610dc8565b348015610c1257600080fd5b506104fb613032565b348015610c2757600080fd5b506105126131e1565b348015610c3c57600080fd5b506104fb610c4b366004617beb565b6131e7565b348015610c5c57600080fd5b506105ae610c6b366004617d8f565b61332c565b348015610c7c57600080fd5b506104fb610c8b366004617beb565b6134b2565b348015610c9c57600080fd5b5061053d6135b6565b6104fb610cb3366004617beb565b6135bb565b348015610cc457600080fd5b50610512613923565b348015610cd957600080fd5b5061055f613929565b348015610cee57600080fd5b506106d26125c1565b348015610d0357600080fd5b5061055f61392f565b348015610d1857600080fd5b50610d2c610d27366004617e2a565b613935565b60405161051f93929190618c24565b348015610d4757600080fd5b5061055f6139f7565b6000610d5b33612462565b9050600b8181548110610d6a57fe5b600091825260209091206001601690920201015460ff16610da65760405162461bcd60e51b8152600401610d9d9061888f565b60405180910390fd5b6000610db0612fd5565b9050610dbd3383836139fd565b505050565b60095481565b606481565b61200181565b60005460609060ff16610df85760405162461bcd60e51b8152600401610d9d906182e9565b600b54610eb657610e07617797565b60015460005b81811015610eb257600b80546001810182556000919091528351600080516020618ed38339815191526016909202918201908155602080860151600080516020618f138339815191528401805460ff1916911515919091179055604086015180518794610e8e93600080516020618ef38339815191529091019201906177c6565b506060820151610ea49060038301906013617840565b505050806001019050610e0d565b5050505b610ebe61786d565b6000610eff85858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250613cce92505050565b9150915080610f1b57610f126064613e8a565b925050506110af565b815160009060ff16610f4057610f3983602001518460400151613eeb565b905061107b565b825160ff166001141561107757826020015151600114610f8557600080516020618eb3833981519152604051610f7590618748565b60405180910390a1506067611072565b6000600460008560200151600081518110610f9c57fe5b6020026020010151600001516001600160a01b03166001600160a01b0316815260200190815260200160002054905080600014806110045750600180820381548110610fe457fe5b9060005260206000209060040201600201601c9054906101000a900460ff165b1561106457836020015160008151811061101a57fe5b6020026020010151600001516001600160a01b03167fe209c46bebf57cf265d5d9009a00870e256d9150f3ed5281ab9d9eb3cec6e4be60405160405180910390a260009150611070565b61106d8161504f565b91505b505b61107b565b5060655b63ffffffff81166110a057505060408051600081526020810190915291506110af9050565b6110a981613e8a565b93505050505b9392505050565b60075460ff1681565b3341146110de5760405162461bcd60e51b8152600401610d9d90618a77565b3a156110fc5760405162461bcd60e51b8152600401610d9d906187ce565b825160408051828152602080840282010190915260609082801561113a57816020015b611127617891565b81526020019060019003908161111f5790505b50905060005b828110156111e4576040518060c0016040528087838151811061115f57fe5b60200260200101516001600160a01b0316815260200160006001600160a01b0316815260200160006001600160a01b031681526020018683815181106111a157fe5b60200260200101516001600160401b0316815260200160001515815260200160008152508282815181106111d157fe5b6020908102919091010152600101611140565b5060405163d31f968d60e01b81526120009063d31f968d9061120f9061100090600890600401618006565b60206040518083038186803b15801561122757600080fd5b505afa15801561123b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061125f9190617d6f565b156115585780518061127357505050610dbd565b6015548181111561130e57815b8181101561130c57601580548061129357fe5b60008281526020812060046000199093019283020180546001600160a01b0319908116825560018201805490911690556002810180546001600160e81b031916905560030155905560168054806112e657fe5b60019003818190600052602060002001600061130291906178c6565b9055600101611280565b505b60005b8281101561154e5781811061143657601584828151811061132e57fe5b602090810291909101810151825460018181018555600094855293839020825160049092020180546001600160a01b039283166001600160a01b0319918216178255938301519481018054958316958516959095179094556040820151600285018054606085015160808601511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b199590961692909716919091179290921692909217169290921790915560a0015160039091015585516016908790839081106113fe57fe5b6020908102919091018101518254600181018455600093845292829020815161143094919091019291909101906177c6565b50611546565b83818151811061144257fe5b60200260200101516015828154811061145757fe5b6000918252602091829020835160049092020180546001600160a01b039283166001600160a01b0319918216178255928401516001820180549184169185169190911790556040840151600282018054606087015160808801511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b1995909716929097169190911792909216939093171692909217905560a090910151600390910155855186908290811061151257fe5b60200260200101516016828154811061152757fe5b9060005260206000200190805190602001906115449291906177c6565b505b600101611311565b5050505050610dbd565b6060806115658386615163565b9150915060005b60015481101561164f576001818154811061158357fe5b906000526020600020906004020160030154600014611647576120026001600160a01b031663092193ab600183815481106115ba57fe5b906000526020600020906004020160030154600184815481106115d957fe5b60009182526020909120600491820201546040516001600160e01b031960e086901b168152611614926001600160a01b039092169101617f97565b6000604051808303818588803b15801561162d57600080fd5b505af1158015611641573d6000803e3d6000fd5b50505050505b60010161156c565b5047156116bd577f6ecc855f9440a9282c90913bbc91619fd44f5ec0b462af28d127b116f130aa4d476040516116859190618c1b565b60405180910390a1604051611002904780156108fc02916000818181858888f193505050501580156116bb573d6000803e3d6000fd5b505b600060038190556005558151156116d8576116d8828261539c565b6110016001600160a01b031663fc4333cd6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561171557600080fd5b505af1158015611729573d6000803e3d6000fd5b50506040517fedd8d7296956dd970ab4de3f2fc03be2b0ffc615d20cd4c72c6e44f928630ebf925060009150a150505050505050565b60035481565b606881565b3341146117895760405162461bcd60e51b8152600401610d9d90618a77565b60105443116117aa5760405162461bcd60e51b8152600401610d9d90618445565b3a156117c85760405162461bcd60e51b8152600401610d9d906187ce565b60005460ff166117ea5760405162461bcd60e51b8152600401610d9d906182e9565b60006110023168056bc75e2d631000008111156118215761181a8168056bc75e2d6310000063ffffffff615ba316565b9150611828565b5050611aa9565b6040516309a99b4f60e41b815261100290639a99b4f09061184f9030908690600401617fab565b602060405180830381600087803b15801561186957600080fd5b505af115801561187d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a19190617e42565b9150816118af575050611aa9565b6000805b848110156118dd578585828181106118c757fe5b90506020020135820191508060010190506118b3565b50806118eb57505050611aa9565b6000806000805b89811015611aa1578489898381811061190757fe5b9050602002013588028161191757fe5b0493508a8a8281811061192657fe5b905060200201602081019061193b9190617beb565b6001600160a01b03811660009081526004602052604090205490935091508115611a5757600060018084038154811061197057fe5b9060005260206000209060040201905080600201601c9054906101000a900460ff16156119dd57836001600160a01b03167fb9c75cbbfde137c4281689580799ef5f52144e78858f776a5979b2b212137d85866040516119d09190618c1b565b60405180910390a2611a51565b6003546119f0908663ffffffff615be516565b6003908155810154611a08908663ffffffff615be516565b60038201556040516001600160a01b038516907fcb0aad6cf9cd03bdf6137e359f541c42f38b39f007cae8e89e88aa7d8c6617b290611a48908890618c1b565b60405180910390a25b50611a99565b826001600160a01b03167fb9c75cbbfde137c4281689580799ef5f52144e78858f776a5979b2b212137d8585604051611a909190618c1b565b60405180910390a25b6001016118f2565b505050505050505b5050436010555050565b6001546000908210611ac757506000611b7d565b60006001600160a01b031660018381548110611adf57fe5b60009182526020909120600490910201546001600160a01b03161480611b0f57506008541580611b0f5750600a54155b80611b1e575060085460095410155b80611b2f5750611b2d82611b82565b155b80611b5857506000600b8381548110611b4457fe5b906000526020600020906016020160000154115b80611b6c57506001611b68612ecb565b5111155b15611b7957506000611b7d565b5060015b919050565b6001546000908210611b9657506000611b7d565b600b548210611bd35760018281548110611bac57fe5b9060005260206000209060040201600201601c9054906101000a900460ff16159050611b7d565b60018281548110611be057fe5b9060005260206000209060040201600201601c9054906101000a900460ff16158015611c2d5750600b8281548110611c1457fe5b600091825260209091206001601690920201015460ff16155b92915050565b3361100114611c545760405162461bcd60e51b8152600401610d9d90618b8c565b600b54611d1257611c63617797565b60015460005b81811015611d0e57600b80546001810182556000919091528351600080516020618ed38339815191526016909202918201908155602080860151600080516020618f138339815191528401805460ff1916911515919091179055604086015180518794611cea93600080516020618ef38339815191529091019201906177c6565b506060820151611d009060038301906013617840565b505050806001019050611c69565b5050505b6001600160a01b03811660009081526004602052604090205480611d365750611d89565b6001810390506000600b8281548110611d4b57fe5b600091825260209091206001601690920201015460ff169050611d6e8383615c0a565b8015611d775750805b15610dbd576009805460001901905550505b50565b60015460609081906000805b82811015611ddf5760018181548110611dad57fe5b9060005260206000209060040201600201601c9054906101000a900460ff16611dd7576001909101905b600101611d98565b50606081604051908082528060200260200182016040528015611e0c578160200160208202803683370190505b509050606082604051908082528060200260200182016040528015611e4557816020015b6060815260200190600190039081611e305790505b50600b5460009450909150841415611fc05760005b84811015611fba5760018181548110611e6f57fe5b9060005260206000209060040201600201601c9054906101000a900460ff16611fb25760018181548110611e9f57fe5b600091825260209091206004909102015483516001600160a01b0390911690849086908110611eca57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050600b8181548110611ef757fe5b600091825260209182902060026016909202018101805460408051601f600019610100600186161502019093169490940491820185900485028401850190528083529192909190830182828015611f8f5780601f10611f6457610100808354040283529160200191611f8f565b820191906000526020600020905b815481529060010190602001808311611f7257829003601f168201915b5050505050828581518110611fa057fe5b60209081029190910101526001909301925b600101611e5a565b5061205c565b60005b8481101561205a5760018181548110611fd857fe5b9060005260206000209060040201600201601c9054906101000a900460ff16612052576001818154811061200857fe5b600091825260209091206004909102015483516001600160a01b039091169084908690811061203357fe5b6001600160a01b03909216602092830291909101909101526001909301925b600101611fc3565b505b909450925050505b9091565b61271081565b600181565b61100181565b60085481565b6102ca81565b600881565b600e54600c5460609182918061209e575060155b60606120a8612ecb565b905060606120b582615fbd565b9050828251116120cc579094509250612064915050565b838383510310156120de578282510393505b83156121145760c843046120fa83838388880360008a8a61612b565b6121128383838888038989038a8b8b8b51030161612b565b505b606083604051908082528060200260200182016040528015612140578160200160208202803683370190505b50905060608460405190808252806020026020018201604052801561217957816020015b60608152602001906001900390816121645790505b50905060005b858110156121fa5784818151811061219357fe5b60200260200101518382815181106121a757fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508381815181106121d357fe5b60200260200101518282815181106121e757fe5b602090810291909101015260010161217f565b509096509450505050509091565b60065481565b61200081565b6001600160a01b0381166000908152600460205260408120548061223c576000915050611b7d565b600019016110af81611b82565b6001600160a01b03811660009081526004602052604081205480612271576000915050611b7d565b60018082038154811061228057fe5b906000526020600020906004020160030154915050919050565b600081565b606781565b600f5481565b601281815481106122b757fe5b600091825260209182902001805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152935090918301828280156123485780601f1061231d57610100808354040283529160200191612348565b820191906000526020600020905b81548152906001019060200180831161232b57829003601f168201915b505050505081565b60105481565b6001818154811061236357fe5b600091825260209091206004909102018054600182015460028301546003909301546001600160a01b0392831694509082169291821691600160a01b81046001600160401b031691600160e01b90910460ff169086565b61100581565b600281565b601081565b61100881565b6103e881565b600b81565b600c5481565b606681565b33612000146124075760405162461bcd60e51b8152600401610d9d90618a28565b7f41ce201247b6ceb957dcdb217d0b8acb50b9ea0e12af9af4f5e7f3890210160583838360405161243a93929190618c64565b60405180910390a1505050565b60025481565b60115481565b60145460ff1681565b600a5481565b6001600160a01b038116600090815260046020526040812054806124985760405162461bcd60e51b8152600401610d9d906189b0565b6000190192915050565b600b54612560576124b1617797565b60015460005b8181101561255c57600b80546001810182556000919091528351600080516020618ed38339815191526016909202918201908155602080860151600080516020618f138339815191528401805460ff191691151591909117905560408601518051879461253893600080516020618ef38339815191529091019201906177c6565b50606082015161254e9060038301906013617840565b5050508060010190506124b7565b5050505b60085461256d5760036008555b600a5461257a576002600a555b600061258533612462565b905061259081611ab3565b6125ac5760405162461bcd60e51b8152600401610d9d90618705565b611d893382616282565b600981565b61100781565b600381565b60c881565b61100681565b604051806101e001604052806101ab8152602001618d086101ab913981565b60005460ff1681565b61200281565b61300081565b6402540be40081565b60005460ff166126305760405162461bcd60e51b8152600401610d9d906182e9565b33611007146126515760405162461bcd60e51b8152600401610d9d906187fc565b6126bb84848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080518082019091526013815272065787069726554696d655365636f6e6447617606c1b6020820152915061631a9050565b1561275857602081146126e05760405162461bcd60e51b8152600401610d9d9061896a565b604080516020601f840181900481028201810190925282815260009161271e9185858083850183828082843760009201919091525061637392505050565b9050606481101580156127345750620186a08111155b6127505760405162461bcd60e51b8152600401610d9d906185f5565b600255612e69565b6127b884848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260098152686275726e526174696f60b81b6020820152915061631a9050565b1561284757602081146127dd5760405162461bcd60e51b8152600401610d9d9061816f565b604080516020601f840181900481028201810190925282815260009161281b9185858083850183828082843760009201919091525061637392505050565b905061271081111561283f5760405162461bcd60e51b8152600401610d9d90618487565b600655612e69565b6128b184848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260138152726d61784e756d4f664d61696e7461696e696e6760681b6020820152915061631a9050565b1561294b57602081146128d65760405162461bcd60e51b8152600401610d9d906181a6565b604080516020601f84018190048102820181019092528281526000916129149185858083850183828082843760009201919091525061637392505050565b600c5490915080612923575060155b8082106129425760405162461bcd60e51b8152600401610d9d906184fa565b50600855612e69565b6129b484848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260128152716d61696e7461696e536c6173685363616c6560701b6020820152915061631a9050565b15612a4d57602081146129d95760405162461bcd60e51b8152600401610d9d9061826f565b604080516020601f8401819004810282018101909252828152600091612a179185858083850183828082843760009201919091525061637392505050565b9050600081118015612a295750600a81105b612a455760405162461bcd60e51b8152600401610d9d90618b08565b600a55612e69565b612ac184848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601981527f6d61784e756d4f66576f726b696e6743616e64696461746573000000000000006020820152915061631a9050565b15612b505760208114612ae65760405162461bcd60e51b8152600401610d9d90618223565b604080516020601f8401819004810282018101909252828152600091612b249185858083850183828082843760009201919091525061637392505050565b9050600d54811115612b485760405162461bcd60e51b8152600401610d9d9061866b565b600e55612e69565b612bb984848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260128152716d61784e756d4f6643616e6469646174657360701b6020820152915061631a9050565b15612c3b5760208114612bde5760405162461bcd60e51b8152600401610d9d9061884a565b604080516020601f8401819004810282018101909252828152600091612c1c9185858083850183828082843760009201919091525061637392505050565b600d819055600e54909150811015612c3557600d54600e555b50612e69565b612c9f84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600d81526c6e756d4f66436162696e65747360981b6020820152915061631a9050565b15612d4d5760208114612cc45760405162461bcd60e51b8152600401610d9d906182b4565b604080516020601f8401819004810282018101909252828152600091612d029185858083850183828082843760009201919091525061637392505050565b905060008111612d245760405162461bcd60e51b8152600401610d9d90618357565b6064811115612d455760405162461bcd60e51b8152600401610d9d9061839f565b600c55612e69565b612db584848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601181527073797374656d526577617264526174696f60781b6020820152915061631a9050565b15612e515760208114612dda5760405162461bcd60e51b8152600401610d9d90618ac4565b604080516020601f8401819004810282018101909252828152600091612e189185858083850183828082843760009201919091525061637392505050565b905060018110158015612e2d57506127108111155b612e495760405162461bcd60e51b8152600401610d9d906185a2565b600f55612e69565b60405162461bcd60e51b8152600401610d9d90618b65565b7f6cdb0ac70ab7f2e2d035cca5be60d89906f2dede7648ddbd7402189c1eeed17a84848484604051612e9e949392919061813d565b60405180910390a150505050565b60046020526000908152604090205481565b68056bc75e2d6310000081565b6001546060906000805b82811015612efa57612ee681611b82565b15612ef2578160010191505b600101612ed5565b50606081604051908082528060200260200182016040528015612f27578160200160208202803683370190505b5090506000915060005b83811015612fae57612f4281611b82565b15612fa65760018181548110612f5457fe5b600091825260209091206004909102015482516001600160a01b0390911690839085908110612f7f57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508260010192505b600101612f31565b50925050505b90565b601581565b61027181565b61100281565b601381815481106122b757fe5b6000612fdf612ecb565b519050600080600c5411612ff4576015612ff8565b600c545b905080821115613006578091505b8161301057600191505b5090565b67016345785d8a000081565b60055481565b61100381565b61200481565b60005460ff16156130555760405162461bcd60e51b8152600401610d9d906188fc565b61305d61786d565b6000613083604051806101e001604052806101ab8152602001618d086101ab9139613cce565b91509150806130a45760405162461bcd60e51b8152600401610d9d906189e7565b60005b8260200151518110156131c9576001836020015182815181106130c657fe5b60209081029190910181015182546001818101855560009485528385208351600493840290910180546001600160a01b039283166001600160a01b03199182161782558587015182850180549185169183169190911790556040860151600283018054606089015160808a01511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b199590981692909516919091179290921694909417161790915560a09093015160039093019290925591860151805191850193918590811061319c57fe5b602090810291909101810151516001600160a01b03168252810191909152604001600020556001016130a7565b50506103e8600255506000805460ff19166001179055565b600d5481565b33612002146132085760405162461bcd60e51b8152600401610d9d90618bd5565b60005b60155481101561329057816001600160a01b03166015828154811061322c57fe5b60009182526020909120600490910201546001600160a01b031614156132885760016015828154811061325b57fe5b9060005260206000209060040201600201601c6101000a81548160ff021916908315150217905550613290565b60010161320b565b506001600160a01b0381166000908152600460205260409020548015806132e157506001808203815481106132c157fe5b9060005260206000209060040201600201601c9054906101000a900460ff165b1561331f576040516001600160a01b038316907fe209c46bebf57cf265d5d9009a00870e256d9150f3ed5281ab9d9eb3cec6e4be90600090a2613328565b610dbd8161504f565b5050565b601354600090815b818110156134355761341d85858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060138054909250859150811061338557fe5b600091825260209182902001805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156134135780601f106133e857610100808354040283529160200191613413565b820191906000526020600020905b8154815290600101906020018083116133f657829003601f168201915b5050505050616378565b1561342d57600192505050611c2d565b600101613334565b5060125460005b818110156134a65761348d86868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060128054909250859150811061338557fe5b1561349e5760019350505050611c2d565b60010161343c565b50600095945050505050565b33611001146134d35760405162461bcd60e51b8152600401610d9d90618b8c565b600b54613591576134e2617797565b60015460005b8181101561358d57600b80546001810182556000919091528351600080516020618ed38339815191526016909202918201908155602080860151600080516020618f138339815191528401805460ff191691151591909117905560408601518051879461356993600080516020618ef38339815191529091019201906177c6565b50606082015161357f9060038301906013617840565b5050508060010190506134e8565b5050505b600061359c826163dc565b90506135a781611ab3565b15613328576133288282616282565b606581565b3341146135da5760405162461bcd60e51b8152600401610d9d90618a77565b60005460ff166135fc5760405162461bcd60e51b8152600401610d9d906182e9565b6000341161361c5760405162461bcd60e51b8152600401610d9d9061863c565b3a1561363a5760405162461bcd60e51b8152600401610d9d906187ce565b6001600160a01b03811660009081526004602052604090205460145434919060ff1661367a57610271600f556103aa6006556014805460ff191660011790555b60006136a3612710613697600f548661657f90919063ffffffff16565b9063ffffffff6165b916565b90508015613713576040516110029082156108fc029083906000818181858888f193505050501580156136da573d6000803e3d6000fd5b507f6ecc855f9440a9282c90913bbc91619fd44f5ec0b462af28d127b116f130aa4d8160405161370a9190618c1b565b60405180910390a15b60008311801561372557506000600654115b156137cb5760006137476127106136976006548761657f90919063ffffffff16565b905080156137c95760405161dead9082156108fc029083906000818181858888f1935050505015801561377e573d6000803e3d6000fd5b507f627059660ea01c4733a328effb2294d2f86905bf806da763a89cee254de8bee5816040516137ae9190618c1b565b60405180910390a16137c6848263ffffffff615ba316565b93505b505b6137db838263ffffffff615ba316565b925081156138db5760006001808403815481106137f457fe5b9060005260206000209060040201905080600201601c9054906101000a900460ff161561386157846001600160a01b03167ff177e5d6c5764d79c32883ed824111d9b13f5668cf6ab1cc12dd36791dd955b4856040516138549190618c1b565b60405180910390a26138d5565b600354613874908563ffffffff615be516565b600390815581015461388c908563ffffffff615be516565b60038201556040516001600160a01b038616907f93a090ecc682c002995fad3c85b30c5651d7fd29b0be5da9d784a3302aedc055906138cc908790618c1b565b60405180910390a25b5061391d565b836001600160a01b03167ff177e5d6c5764d79c32883ed824111d9b13f5668cf6ab1cc12dd36791dd955b4846040516139149190618c1b565b60405180910390a25b50505050565b600e5481565b61100081565b61dead81565b600b818154811061394257fe5b6000918252602091829020601691909102018054600180830154600280850180546040805161010096831615969096026000190190911692909204601f810188900488028501880190925281845293965060ff909116949192918301828280156139ed5780601f106139c2576101008083540402835291602001916139ed565b820191906000526020600020905b8154815290600101906020018083116139d057829003601f168201915b5050505050905083565b61100481565b6000600a5460001480613a0e575081155b80613a195750600954155b15613a26575060006110af565b60096000815460019003919050819055506000613a71600a5461369785613697600b8981548110613a5357fe5b6000918252602090912060169091020154439063ffffffff615ba316565b90506000600b8581548110613a8257fe5b906000526020600020906016020160010160006101000a81548160ff0219169083151502179055506000806110016001600160a01b0316638256ace66040518163ffffffff1660e01b8152600401604080518083038186803b158015613ae757600080fd5b505afa158015613afb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b1f9190617e5a565b9150915060009350808310613c7e57613b388787615c0a565b506040516333c1892360e21b81526000906120029063cf06248c90613b61908b90600401617f97565b60206040518083038186803b158015613b7957600080fd5b505afa158015613b8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613bb19190617c07565b6001600160a01b031614613c1d576040516313d13bdb60e31b815261100190639e89ded890613be6908a908790600401617fab565b600060405180830381600087803b158015613c0057600080fd5b505af1158015613c14573d6000803e3d6000fd5b50505050613c75565b6040516305bfb49960e41b815261100190635bfb499090613c42908a90600401617f97565b600060405180830381600087803b158015613c5c57600080fd5b505af1158015613c70573d6000803e3d6000fd5b505050505b60019350613c90565b818310613c9057613c8e876163dc565b505b6040516001600160a01b038816907fb9d38178dc641ff1817967a63c9078cbcd955a9f1fcd75e0e3636de615d44d3b90600090a25050509392505050565b613cd661786d565b6000613ce061786d565b613ce861790a565b613cf9613cf4866165fb565b616620565b90506000805b613d088361666a565b15613e7c5780613d2d57613d23613d1e8461668b565b6166d9565b60ff168452613e74565b8060011415613e6f576060613d49613d448561668b565b616759565b90508051604051908082528060200260200182016040528015613d8657816020015b613d73617891565b815260200190600190039081613d6b5790505b5085602001819052508051604051908082528060200260200182016040528015613dc457816020015b6060815260200190600190039081613daf5790505b50604086015260005b8151811015613e6457613dde617891565b60606000613dfe858581518110613df157fe5b602002602001015161682a565b92509250925080613e1e578860009a509a50505050505050505050613e85565b8289602001518581518110613e2f57fe5b60200260200101819052508189604001518581518110613e4b57fe5b6020026020010181905250505050806001019050613dcd565b506001925050613e74565b613e7c565b600101613cff565b50919350909150505b915091565b604080516001808252818301909252606091829190816020015b6060815260200190600190039081613ea4579050509050613eca8363ffffffff16616944565b81600081518110613ed757fe5b60200260200101819052506110af81616957565b6000606483511115613f2257600080516020618eb3833981519152604051613f12906183fc565b60405180910390a1506066611c2d565b60005b8351811015613fc05760005b81811015613fb757848181518110613f4557fe5b6020026020010151600001516001600160a01b0316858381518110613f6657fe5b6020026020010151600001516001600160a01b03161415613faf57600080516020618eb3833981519152604051613f9c90618557565b60405180910390a1606692505050611c2d565b600101613f31565b50600101613f25565b5060608060606015805480602002602001604051908101604052809291908181526020016000905b828210156140725760008481526020908190206040805160c0810182526004860290920180546001600160a01b039081168452600180830154821685870152600283015491821693850193909352600160a01b81046001600160401b03166060850152600160e01b900460ff16151560808401526003015460a08301529083529092019101613fe8565b50505050905060606016805480602002602001604051908101604052809291908181526020016000905b828210156141475760008481526020908190208301805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156141335780601f1061410857610100808354040283529160200191614133565b820191906000526020600020905b81548152906001019060200180831161411657829003601f168201915b50505050508152602001906001019061409c565b50505050905060005b82518110156141a45782818151811061416557fe5b60200260200101516060015160020283828151811061418057fe5b60209081029190910101516001600160401b03909116606090910152600101614150565b506060806141b4898986866169e1565b915091506141c28282615163565b60015460408051828152602080840282010190915292985090965060009550859450925060609150828015614201578160200160208202803683370190505b50905060005b828110156143925760006001600160a01b03166120026001600160a01b031663cf06248c6001848154811061423857fe5b60009182526020909120600491820201546040516001600160e01b031960e085901b168152614273926001600160a01b039092169101617f97565b60206040518083038186803b15801561428b57600080fd5b505afa15801561429f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142c39190617c07565b6001600160a01b0316146143255760018282815181106142df57fe5b602002602001019060ff16908160ff16815250506001818154811061430057fe5b906000526020600020906004020160030154600014614320578360010193505b61438a565b67016345785d8a00006001828154811061433b57fe5b9060005260206000209060040201600301541061435d5784600101945061438a565b6001818154811061436a57fe5b90600052602060002090600402016003015460001461438a578360010193505b600101614207565b506060846040519080825280602002602001820160405280156143bf578160200160208202803683370190505b5090506060856040519080825280602002602001820160405280156143ee578160200160208202803683370190505b50905060608660405190808252806020026020018201604052801561441d578160200160208202803683370190505b50905060608760405190808252806020026020018201604052801561444c578160200160208202803683370190505b509050600060608860405190808252806020026020018201604052801561447d578160200160208202803683370190505b5090506060896040519080825280602002602001820160405280156144ac578160200160208202803683370190505b50905060009a506000995060006110046001600160a01b031663149d14d96040518163ffffffff1660e01b815260040160206040518083038186803b1580156144f457600080fd5b505afa158015614508573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061452c9190617e42565b905067016345785d8a000081111561457857600080516020618eb3833981519152604051614559906188bb565b60405180910390a160689e505050505050505050505050505050611c2d565b60005b8a81101561490c5789818151811061458f57fe5b602002602001015160ff166001141561468557600181815481106145af57fe5b90600052602060002090600402016003015460001461468057600181815481106145d557fe5b600091825260209091206004909102015484516001600160a01b039091169085908e90811061460057fe5b60200260200101906001600160a01b031690816001600160a01b0316815250506001818154811061462d57fe5b906000526020600020906004020160030154838d8151811061464b57fe5b60200260200101818152505060018a8d8151811061466557fe5b602002602001019060ff16908160ff16815250508b6001019b505b614904565b67016345785d8a00006001828154811061469b57fe5b9060005260206000209060040201600301541061482057600181815481106146bf57fe5b906000526020600020906004020160020160009054906101000a90046001600160a01b0316898e815181106146f057fe5b60200260200101906001600160a01b031690816001600160a01b03168152505060006402540be4006001838154811061472557fe5b9060005260206000209060040201600301548161473e57fe5b066001838154811061474c57fe5b9060005260206000209060040201600301540390506147748382615ba390919063ffffffff16565b898f8151811061478057fe5b6020026020010181815250506001828154811061479957fe5b906000526020600020906004020160010160009054906101000a90046001600160a01b0316878f815181106147ca57fe5b60200260200101906001600160a01b031690816001600160a01b03168152505081888f815181106147f757fe5b6020908102919091010152614812868263ffffffff615be516565b95508d6001019d5050614904565b6001818154811061482d57fe5b906000526020600020906004020160030154600014614904576001818154811061485357fe5b906000526020600020906004020160010160009054906101000a90046001600160a01b0316848d8151811061488457fe5b60200260200101906001600160a01b031690816001600160a01b031681525050600181815481106148b157fe5b906000526020600020906004020160030154838d815181106148cf57fe5b60200260200101818152505060008a8d815181106148e957fe5b602002602001019060ff16908160ff16815250508b6001019b505b60010161457b565b5060008415614b82576002546040516303702b2960e51b815261100491636e056520918891614946918e918e918d914201906004016180a5565b6020604051808303818588803b15801561495f57600080fd5b505af193505050508015614990575060408051601f3d908101601f1916820190925261498d91810190617d6f565b60015b614b07576040516000815260443d10156149ac57506000614a47565b60046000803e60005160e01c6308c379a081146149cd576000915050614a47565b60043d036004833e81513d60248201116001600160401b03821117156149f857600092505050614a47565b80830180516001600160401b03811115614a19576000945050505050614a47565b8060208301013d8601811115614a3757600095505050505050614a47565b601f01601f191660405250925050505b80614a525750614a94565b60019150857fa7cdeed7d0db45e3219a6e5d60838824c16f1d39991fcfe3f963029c844bf28082604051614a86919061812a565b60405180910390a250614b02565b3d808015614abe576040519150601f19603f3d011682016040523d82523d6000602084013e614ac3565b606091505b5060019150857fbfa884552dd8921b6ce90bfe906952ae5b3b29be0cc1a951d4f62697635a3a4582604051614af8919061812a565b60405180910390a2505b614b82565b8015614b49577fa217d08e65f80c73121cd9db834d81652d544bfbf452f6d04922b16c90a37b7086604051614b3c9190618c1b565b60405180910390a1614b80565b857fa7cdeed7d0db45e3219a6e5d60838824c16f1d39991fcfe3f963029c844bf280604051614b77906181ec565b60405180910390a25b505b8015614d385760005b8751811015614d36576000888281518110614ba257fe5b60200260200101519050600060018281548110614bbb57fe5b60009182526020909120600160049092020181015481546001600160a01b03909116916108fc9185908110614bec57fe5b9060005260206000209060040201600301549081150290604051600060405180830381858888f1935050505090508015614ca85760018281548110614c2d57fe5b60009182526020909120600160049092020181015481546001600160a01b03909116917f6c61d60f69a7beb3e1c80db7f39f37b208537cbb19da3174511b477812b2fc7d9185908110614c7c57fe5b906000526020600020906004020160030154604051614c9b9190618c1b565b60405180910390a2614d2c565b60018281548110614cb557fe5b60009182526020909120600160049092020181015481546001600160a01b03909116917f25d0ce7d2f0cec669a8c17efe49d195c13455bb8872b65fa610ac7f53fe4ca7d9185908110614d0457fe5b906000526020600020906004020160030154604051614d239190618c1b565b60405180910390a25b5050600101614b8b565b505b835115614f2e5760005b8451811015614f2c578a8181518110614d5757fe5b602002602001015160ff1660011415614df6576120026001600160a01b031663092193ab858381518110614d8757fe5b6020026020010151878481518110614d9b57fe5b60200260200101516040518363ffffffff1660e01b8152600401614dbf9190617f97565b6000604051808303818588803b158015614dd857600080fd5b505af1158015614dec573d6000803e3d6000fd5b5050505050614f24565b6000858281518110614e0457fe5b60200260200101516001600160a01b03166108fc868481518110614e2457fe5b60200260200101519081150290604051600060405180830381858888f1935050505090508015614eba57858281518110614e5a57fe5b60200260200101516001600160a01b03167f6c61d60f69a7beb3e1c80db7f39f37b208537cbb19da3174511b477812b2fc7d868481518110614e9857fe5b6020026020010151604051614ead9190618c1b565b60405180910390a2614f22565b858281518110614ec657fe5b60200260200101516001600160a01b03167f25d0ce7d2f0cec669a8c17efe49d195c13455bb8872b65fa610ac7f53fe4ca7d868481518110614f0457fe5b6020026020010151604051614f199190618c1b565b60405180910390a25b505b600101614d42565b505b505050505050505050505050506000471115614fab577f6ecc855f9440a9282c90913bbc91619fd44f5ec0b462af28d127b116f130aa4d47604051614f739190618c1b565b60405180910390a1604051611002904780156108fc02916000818181858888f19350505050158015614fa9573d6000803e3d6000fd5b505b60006003819055600555815115614fc657614fc6828261539c565b6110016001600160a01b031663fc4333cd6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561500357600080fd5b505af1158015615017573d6000803e3d6000fd5b50506040517fedd8d7296956dd970ab4de3f2fc03be2b0ffc615d20cd4c72c6e44f928630ebf925060009150a1506000949350505050565b600154600554600091906000198201118015906150c25760018085038154811061507557fe5b600091825260208220600490910201546040516001600160a01b03909116917fe209c46bebf57cf265d5d9009a00870e256d9150f3ed5281ab9d9eb3cec6e4be91a2600092505050611b7d565b6005805460019081019091558054819060001987019081106150e057fe5b9060005260206000209060040201600201601c6101000a81548160ff02191690831515021790555060018085038154811061511757fe5b600091825260208220600490910201546040516001600160a01b03909116917ff226e7d8f547ff903d9d419cf5f54e0d7d07efa9584135a53a057c5f1f27f49a91a25060009392505050565b606080600080808080615174612fd5565b6001549091505b801561528257600181039250600b838154811061519457fe5b600091825260209091206001601690920201015460ff166151b457615279565b600183815481106151c157fe5b60009182526020909120600490910201546001600160a01b031694506151e88584846139fd565b93508315806151fb575060018a51038610155b1561520557615279565b60005b8a5181101561527757856001600160a01b03168b828151811061522757fe5b6020026020010151600001516001600160a01b0316141561526f5760018b828151811061525057fe5b6020908102919091010151901515608090910152600190960195615277565b600101615208565b505b6000190161517b565b50848951036040519080825280602002602001820160405280156152c057816020015b6152ad617891565b8152602001906001900390816152a55790505b509650848951036040519080825280602002602001820160405280156152fa57816020015b60608152602001906001900390816152e55790505b5095506000915060005b895181101561538e5789818151811061531957fe5b6020026020010151608001516153865789818151811061533557fe5b602002602001015188848151811061534957fe5b602002602001018190525088818151811061536057fe5b602002602001015187848151811061537457fe5b60200260200101819052508260010192505b600101615304565b5050505050505b9250929050565b600154825160005b828110156154b95760016153b6617891565b600183815481106153c357fe5b600091825260208083206040805160c08101825260049490940290910180546001600160a01b0390811685526001820154811693850193909352600281015492831691840191909152600160a01b82046001600160401b03166060840152600160e01b90910460ff16151560808301526003015460a082015291505b8481101561548d5787818151811061545357fe5b6020026020010151600001516001600160a01b031682600001516001600160a01b03161415615485576000925061548d565b60010161543f565b5081156154af5780516001600160a01b03166000908152600460205260408120555b50506001016153a4565b508082111561557857805b828110156155765760018054806154d757fe5b60008281526020812060046000199093019283020180546001600160a01b0319908116825560018201805490911690556002810180546001600160e81b0319169055600301559055600b80548061552a57fe5b60008281526020812060166000199093019283020181815560018101805460ff191690559061555c60028301826178c6565b61556a60038301600061792a565b505090556001016154c4565b505b60008183106155875781615589565b825b905060005b818110156159455761563b8682815181106155a557fe5b6020026020010151600183815481106155ba57fe5b60009182526020918290206040805160c08101825260049390930290910180546001600160a01b0390811684526001820154811694840194909452600281015493841691830191909152600160a01b83046001600160401b03166060830152600160e01b90920460ff161515608082015260039091015460a0820152616dad565b6157ef57806001016004600088848151811061565357fe5b6020026020010151600001516001600160a01b03166001600160a01b031681526020019081526020016000208190555085818151811061568f57fe5b6020026020010151600182815481106156a457fe5b6000918252602091829020835160049092020180546001600160a01b039283166001600160a01b0319918216178255928401516001820180549184169185169190911790556040840151600282018054606087015160808801511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b1995909716929097169190911792909216939093171692909217905560a090910151600390910155845185908290811061575f57fe5b6020026020010151600b828154811061577457fe5b906000526020600020906016020160020190805190602001906157989291906177c6565b506000600b82815481106157a857fe5b60009182526020822060169190910201600101805460ff191692151592909217909155600b8054839081106157d957fe5b600091825260209091206016909102015561593d565b6158808582815181106157fe57fe5b6020026020010151600b838154811061581357fe5b600091825260209182902060026016909202018101805460408051601f6000196101006001861615020190931694909404918201859004850284018501905280835291929091908301828280156134135780601f106133e857610100808354040283529160200191613413565b6158cb5784818151811061589057fe5b6020026020010151600b82815481106158a557fe5b906000526020600020906016020160020190805190602001906158c99291906177c6565b505b6000600182815481106158da57fe5b9060005260206000209060040201600301819055508581815181106158fb57fe5b6020026020010151608001516001828154811061591457fe5b9060005260206000209060040201600201601c6101000a81548160ff0219169083151502179055505b60010161558e565b5082821115615b1d57615956617797565b835b83811015615b1a5785818151811061596c57fe5b60200260200101518260400181905250600187828151811061598a57fe5b6020908102919091018101518254600181810185556000948552838520835160049093020180546001600160a01b039384166001600160a01b0319918216178255848601518284018054918616918316919091179055604080860151600284018054606089015160808a01511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b1995909a1692909616919091179290921696909617169190911790935560a090930151600390930192909255600b8054928301815590935284516016909102600080516020618ed3833981519152810191825585830151600080516020618f138339815191528201805491151560ff1990921691909117905592850151805186949293615ac093600080516020618ef3833981519152019201906177c6565b506060820151615ad69060038301906013617840565b5050508060010160046000898481518110615aed57fe5b602090810291909101810151516001600160a01b0316825281019190915260400160002055600101615958565b50505b615b25616e2e565b615b2d617010565b6000600981905560015493505b83811015615b9b576000600b8281548110615b5157fe5b60009182526020822060169190910201600101805460ff191692151592909217909155600b805483908110615b8257fe5b6000918252602090912060169091020155600101615b3a565b505050505050565b60006110af83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506171fe565b6000828201838110156110af5760405162461bcd60e51b8152600401610d9d90618320565b60008060018381548110615c1a57fe5b90600052602060002090600402016003015490506000600180805490500390506001615c44612ecb565b5111615c7957600060018581548110615c5957fe5b906000526020600020906004020160030181905550600092505050611c2d565b846001600160a01b03167f3b6f9ef90462b512a1293ecec018670bf7b7f1876fb727590a8a6d7643130a7083604051615cb29190618c1b565b60405180910390a26001600160a01b038516600090815260046020526040812055835b60015460001901811015615e9f5760018160010181548110615cf357fe5b906000526020600020906004020160018281548110615d0e57fe5b60009182526020909120825460049092020180546001600160a01b03199081166001600160a01b0393841617825560018085015481840180548416918616919091179055600280860180549185018054909416919095161780835584546001600160401b03600160a01b91829004160267ffffffffffffffff60a01b1990911617808355935460ff600160e01b918290041615150260ff60e01b19909416939093179055600392830154920191909155600b805490918301908110615dcf57fe5b9060005260206000209060160201600b8281548110615dea57fe5b600091825260209091208254601690920201908155600180830154818301805460ff909216151560ff1990921691909117905560028084018054615e41938386019390821615610100026000190190911604617939565b50615e54600382810190840160136179ae565b50905050806001016004600060018481548110615e6d57fe5b600091825260208083206004909202909101546001600160a01b03168352820192909252604001902055600101615cd5565b506001805480615eab57fe5b60008281526020812060046000199093019283020180546001600160a01b0319908116825560018201805490911690556002810180546001600160e81b0319169055600301559055600b805480615efe57fe5b60008281526020812060166000199093019283020181815560018101805460ff1916905590615f3060028301826178c6565b615f3e60038301600061792a565b505090556000818381615f4d57fe5b0490508015615fb15760015460005b81811015615fae578260018281548110615f7257fe5b9060005260206000209060040201600301540160018281548110615f9257fe5b6000918252602090912060036004909202010155600101615f5c565b50505b50600195945050505050565b600154815160408051828152602080840282010190915260609291908390828015615ffc57816020015b6060815260200190600190039081615fe75790505b50600b549091508314616013579250611b7d915050565b60005b8281101561612257600b60016004600089858151811061603257fe5b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054038154811061606657fe5b600091825260209182902060026016909202018101805460408051601f6000196101006001861615020190931694909404918201859004850284018501905280835291929091908301828280156160fe5780601f106160d3576101008083540402835291602001916160fe565b820191906000526020600020905b8154815290600101906020018083116160e157829003601f168201915b505050505082828151811061610f57fe5b6020908102919091010152600101616016565b50949350505050565b60005b82811015616278576000828783880160405160200161614e929190617f89565b6040516020818303038152906040528051906020012060001c8161616e57fe5b0690508085018287011461626f576000898388018151811061618c57fe5b60200260200101519050606089848901815181106161a657fe5b602002602001015190508a838801815181106161be57fe5b60200260200101518b858a01815181106161d457fe5b60200260200101906001600160a01b031690816001600160a01b031681525050818b8489018151811061620357fe5b60200260200101906001600160a01b031690816001600160a01b031681525050898388018151811061623157fe5b60200260200101518a858a018151811061624757fe5b6020026020010181905250808a8489018151811061626157fe5b602002602001018190525050505b5060010161612e565b5050505050505050565b600980546001908101909155600b80548390811061629c57fe5b906000526020600020906016020160010160006101000a81548160ff02191690831515021790555043600b82815481106162d257fe5b600091825260208220601690910201919091556040516001600160a01b038416917ff62981a567ec3cec866c6fa93c55bcdf841d6292d18b8d522ececa769375d82d91a25050565b60008160405160200161632d9190617f6d565b60405160208183030381529060405280519060200120836040516020016163549190617f6d565b6040516020818303038152906040528051906020012014905092915050565b015190565b81518151600091600191811480831461639457600092506163d2565b600160208701838101602088015b6002848385100114156163cd5780518351146163c15760009650600093505b602092830192016163a2565b505050505b5090949350505050565b6001600160a01b0381166000908152600460205260408120548061640557506000199050611b7d565b60018103905060006001828154811061641a57fe5b906000526020600020906004020160030154905060006001838154811061643d57fe5b6000918252602090912060036004909202010155600154604051600019909101906001600160a01b038616907f8cd4e147d8af98a9e3b6724021b8bf6aed2e5dac71c38f2dce8161b82585b25d90616496908590618c1b565b60405180910390a2806164ae57829350505050611b7d565b60008183816164b957fe5b04905080156165755760005b848110156165175781600182815481106164db57fe5b90600052602060002090600402016003015401600182815481106164fb57fe5b60009182526020909120600360049092020101556001016164c5565b50600180549085015b8181101561657257826001828154811061653657fe5b906000526020600020906004020160030154016001828154811061655657fe5b6000918252602090912060036004909202010155600101616520565b50505b5091949350505050565b60008261658e57506000611c2d565b8282028284828161659b57fe5b04146110af5760405162461bcd60e51b8152600401610d9d9061878d565b60006110af83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061722a565b6166036179d8565b506040805180820190915281518152602082810190820152919050565b61662861790a565b61663182617261565b61663a57600080fd5b6000616649836020015161729b565b60208085015160408051808201909152868152920190820152915050919050565b60006166746179d8565b505080518051602091820151919092015191011190565b6166936179d8565b61669c8261666a565b6166a557600080fd5b602082015160006166b5826172fe565b80830160209586015260408051808201909152908152938401919091525090919050565b8051600090158015906166ee57508151602110155b6166f757600080fd5b6000616706836020015161729b565b9050808360000151101561672c5760405162461bcd60e51b8152600401610d9d90618933565b82516020808501518301805192849003929183101561612257506020919091036101000a90049392505050565b606061676482617261565b61676d57600080fd5b6000616778836173df565b90506060816040519080825280602002602001820160405280156167b657816020015b6167a36179d8565b81526020019060019003908161679b5790505b50905060006167c8856020015161729b565b60208601510190506000805b8481101561681f576167e5836172fe565b915060405180604001604052808381526020018481525084828151811061680857fe5b6020908102919091010152918101916001016167d4565b509195945050505050565b616832617891565b6060600061683e617891565b606061684861790a565b61685187616620565b90506000805b6168608361666a565b15616935578061688b5761687b6168768461668b565b61743b565b6001600160a01b0316855261692d565b80600114156168b3576168a06168768461668b565b6001600160a01b0316602086015261692d565b80600214156168db576168c86168768461668b565b6001600160a01b0316604086015261692d565b8060031415616907576168f0613d1e8461668b565b6001600160401b031660608601526001915061692d565b80600414156169285761692161691c8461668b565b617455565b935061692d565b616935565b600101616857565b50929791965091945092505050565b6060611c2d616952836174c5565b6175ab565b60608151600014156169785750604080516000815260208101909152611b7d565b60608260008151811061698757fe5b602002602001015190506000600190505b83518110156169c8576169be828583815181106169b157fe5b60200260200101516175fd565b9150600101616998565b506110af6169db825160c060ff1661767a565b826175fd565b60608060006120026001600160a01b031663c473318f6040518163ffffffff1660e01b815260040160206040518083038186803b158015616a2157600080fd5b505afa158015616a35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190616a599190617e42565b90508085518851011015616a6e575083518651015b606081604051908082528060200260200182016040528015616aaa57816020015b616a97617891565b815260200190600190039081616a8f5790505b509050606082604051908082528060200260200182016040528015616ae357816020015b6060815260200190600190039081616ace5790505b50905060008060005b8b51831080616afb5750895182105b8015616b0657508581105b15616d9b578b51831415616b7657898281518110616b2057fe5b6020026020010151858281518110616b3457fe5b6020026020010181905250888281518110616b4b57fe5b6020026020010151848281518110616b5f57fe5b602090810291909101015260019182019101616aec565b8951821415616be1578b8381518110616b8b57fe5b6020026020010151858281518110616b9f57fe5b60200260200101819052508a8381518110616bb657fe5b6020026020010151848281518110616bca57fe5b602090810291909101015260019283019201616aec565b898281518110616bed57fe5b6020026020010151606001516001600160401b03168c8481518110616c0e57fe5b6020026020010151606001516001600160401b03161115616c8a578b8381518110616c3557fe5b6020026020010151858281518110616c4957fe5b60200260200101819052508a8381518110616c6057fe5b6020026020010151848281518110616c7457fe5b6020026020010181905250826001019250616d93565b898281518110616c9657fe5b6020026020010151606001516001600160401b03168c8481518110616cb757fe5b6020026020010151606001516001600160401b03161015616d3357898281518110616cde57fe5b6020026020010151858281518110616cf257fe5b6020026020010181905250888281518110616d0957fe5b6020026020010151848281518110616d1d57fe5b6020026020010181905250816001019150616d93565b898281518110616d3f57fe5b6020026020010151600001516001600160a01b03168c8481518110616d6057fe5b6020026020010151600001516001600160a01b03161015616d87578b8381518110616c3557fe5b898281518110616b2057fe5b600101616aec565b50929a91995090975050505050505050565b805182516000916001600160a01b039182169116148015616de7575081602001516001600160a01b031683602001516001600160a01b0316145b8015616e0c575081604001516001600160a01b031683604001516001600160a01b0316145b80156110af5750506060908101519101516001600160401b0390811691161490565b60125460135480821115616e7957805b82811015616e77576012805480616e5157fe5b600190038181906000526020600020016000616e6d91906178c6565b9055600101616e3e565b505b6000818310616e885781616e8a565b825b905060005b81811015616fa257616f4760128281548110616ea757fe5b600091825260209182902001805460408051601f6002600019610100600187161502019094169390930492830185900485028101850190915281815292830182828015616f355780601f10616f0a57610100808354040283529160200191616f35565b820191906000526020600020905b815481529060010190602001808311616f1857829003601f168201915b50505050506013838154811061338557fe5b616f9a5760138181548110616f5857fe5b9060005260206000200160128281548110616f6f57fe5b906000526020600020019080546001816001161561010002031660029004616f98929190617939565b505b600101616e8f565b5082821115610dbd57825b8281101561391d57601260138281548110616fc457fe5b6000918252602080832084546001818101875595855291909320929091018054617007949390920192909160026101009282161592909202600019011604617939565b50600101616fad565b601354600b548082111561705b57805b8281101561705957601380548061703357fe5b60019003818190600052602060002001600061704f91906178c6565b9055600101617020565b505b600081831061706a578161706c565b825b905060005b8181101561718b576171296013828154811061708957fe5b600091825260209182902001805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156171175780601f106170ec57610100808354040283529160200191617117565b820191906000526020600020905b8154815290600101906020018083116170fa57829003601f168201915b5050505050600b838154811061581357fe5b61718357600b818154811061713a57fe5b90600052602060002090601602016002016013828154811061715857fe5b906000526020600020019080546001816001161561010002031660029004617181929190617939565b505b600101617071565b5082821115610dbd57825b8281101561391d576013600b82815481106171ad57fe5b6000918252602080832084546001808201875595855291909320601692909202909201600290810180546171f595939094019390926000199082161561010002011604617939565b50600101617196565b600081848411156172225760405162461bcd60e51b8152600401610d9d919061812a565b505050900390565b6000818361724b5760405162461bcd60e51b8152600401610d9d919061812a565b50600083858161725757fe5b0495945050505050565b805160009061727257506000611b7d565b6020820151805160001a9060c082101561729157600092505050611b7d565b5060019392505050565b8051600090811a60808110156172b5576000915050611b7d565b60b88110806172d0575060c081108015906172d0575060f881105b156172df576001915050611b7d565b60c08110156172f35760b519019050611b7d565b60f519019050611b7d565b80516000908190811a608081101561731957600191506173d8565b60b881101561732e57607e19810191506173d8565b60c081101561737f57600060b78203600186019550806020036101000a8651049150600181018201935050808310156173795760405162461bcd60e51b8152600401610d9d906186da565b506173d8565b60f88110156173945760be19810191506173d8565b600060f78203600186019550806020036101000a8651049150600181018201935050808310156173d65760405162461bcd60e51b8152600401610d9d906186da565b505b5092915050565b80516000906173f057506000611b7d565b60008090506000617404846020015161729b565b602085015185519181019250015b8082101561743257617423826172fe565b82019150826001019250617412565b50909392505050565b805160009060151461744c57600080fd5b611c2d826166d9565b805160609061746357600080fd5b6000617472836020015161729b565b83516040805191839003808352601f19601f82011683016020019091529192506060908280156174a9576020820181803683370190505b509050600081602001905061612284876020015101828561774c565b604080516020808252818301909252606091829190602082018180368337505050602081018490529050600067ffffffffffffffff1984166175095750601861752d565b6fffffffffffffffffffffffffffffffff1984166175295750601061752d565b5060005b60208110156175635781818151811061754257fe5b01602001516001600160f81b0319161561755b57617563565b60010161752d565b60008160200390506060816040519080825280601f01601f191660200182016040528015617598576020820181803683370190505b5080830196909652508452509192915050565b6060815160011480156175dd5750607f60f81b826000815181106175cb57fe5b01602001516001600160f81b03191611155b156175e9575080611b7d565b611c2d6175fb8351608060ff1661767a565b835b6060806040519050835180825260208201818101602087015b8183101561762e578051835260209283019201617616565b50855184518101855292509050808201602086015b8183101561765b578051835260209283019201617643565b508651929092011591909101601f01601f191660405250905092915050565b60606801000000000000000083106176a45760405162461bcd60e51b8152600401610d9d906184d2565b604080516001808252818301909252606091602082018180368337019050509050603784116176fe5782840160f81b816000815181106176e057fe5b60200101906001600160f81b031916908160001a9053509050611c2d565b6060617709856174c5565b90508381510160370160f81b8260008151811061772257fe5b60200101906001600160f81b031916908160001a90535061774382826175fd565b95945050505050565b8061775657610dbd565b5b60208110617776578251825260209283019290910190601f1901617757565b915181516020939093036101000a6000190180199091169216919091179052565b604051806080016040528060008152602001600015158152602001606081526020016177c16179f2565b905290565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061780757805160ff1916838001178555617834565b82800160010185558215617834579182015b82811115617834578251825591602001919060010190617819565b50613010929150617a11565b82601381019282156178345791602002820182811115617834578251825591602001919060010190617819565b6040518060600160405280600060ff16815260200160608152602001606081525090565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a081019190915290565b50805460018160011615610100020316600290046000825580601f106178ec5750611d89565b601f016020900490600052602060002090810190611d899190617a11565b604051806040016040528061791d6179d8565b8152602001600081525090565b50611d89906013810190617a11565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106179725780548555617834565b8280016001018555821561783457600052602060002091601f016020900482015b82811115617834578254825591600101919060010190617993565b82601381019282156178345791820182811115617834578254825591600101919060010190617993565b604051806040016040528060008152602001600081525090565b6040518061026001604052806013906020820280368337509192915050565b612fb491905b808211156130105760008155600101617a17565b8035611c2d81618cf2565b60008083601f840112617a47578182fd5b5081356001600160401b03811115617a5d578182fd5b602083019150836020808302850101111561539557600080fd5b6000601f8381840112617a88578182fd5b8235617a9b617a9682618ca7565b618c81565b818152925060208084019085810160005b84811015617b2d578135880189603f820112617ac757600080fd5b838101356001600160401b03811115617adf57600080fd5b617af0818901601f19168601618c81565b81815260408c81848601011115617b0657600080fd5b82818501888401375060009181018601919091528552509282019290820190600101617aac565b50505050505092915050565b600082601f830112617b49578081fd5b8135617b57617a9682618ca7565b818152915060208083019084810181840286018201871015617b7857600080fd5b6000805b85811015617b2d5782356001600160401b0381168114617b9a578283fd5b85529383019391830191600101617b7c565b60008083601f840112617bbd578182fd5b5081356001600160401b03811115617bd3578182fd5b60208301915083602082850101111561539557600080fd5b600060208284031215617bfc578081fd5b81356110af81618cf2565b600060208284031215617c18578081fd5b81516110af81618cf2565b60008060008060408587031215617c38578283fd5b84356001600160401b0380821115617c4e578485fd5b617c5a88838901617a36565b90965094506020870135915080821115617c72578384fd5b50617c7f87828801617a36565b95989497509550505050565b600080600060608486031215617c9f578283fd5b83356001600160401b0380821115617cb5578485fd5b81860187601f820112617cc6578586fd5b80359250617cd6617a9684618ca7565b80848252602080830192508084018b828389028701011115617cf657898afd5b8994505b86851015617d2057617d0c8c82617a2b565b845260019490940193928101928101617cfa565b509097508801359350505080821115617d37578384fd5b617d4387838801617b39565b93506040860135915080821115617d58578283fd5b50617d6586828701617a77565b9150509250925092565b600060208284031215617d80578081fd5b815180151581146110af578182fd5b60008060208385031215617da1578182fd5b82356001600160401b03811115617db6578283fd5b617dc285828601617bac565b90969095509350505050565b60008060008060408587031215617de3578384fd5b84356001600160401b0380821115617df9578586fd5b617e0588838901617bac565b90965094506020870135915080821115617e1d578384fd5b50617c7f87828801617bac565b600060208284031215617e3b578081fd5b5035919050565b600060208284031215617e53578081fd5b5051919050565b60008060408385031215617e6c578182fd5b505080516020909101519092909150565b600080600060408486031215617e91578081fd5b833560ff81168114617ea1578182fd5b925060208401356001600160401b03811115617ebb578182fd5b617ec786828701617bac565b9497909650939450505050565b6000815180845260208085019450808401835b83811015617f0c5781516001600160a01b031687529582019590820190600101617ee7565b509495945050505050565b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b60008151808452617f59816020860160208601618cc6565b601f01601f19169290920160200192915050565b60008251617f7f818460208701618cc6565b9190910192915050565b918252602082015260400190565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b03968716815294861660208601529290941660408401526001600160401b03166060830152911515608082015260a081019190915260c00190565b6001600160a01b0392909216825260ff16602082015260400190565b6000602082526110af6020830184617ed4565b6000604082526180486040830185617ed4565b602083820381850152818551808452828401915082838202850101838801865b8381101561809657601f19878403018552618084838351617f41565b94860194925090850190600101618068565b50909998505050505050505050565b6000608082526180b86080830187617ed4565b828103602084810191909152865180835287820192820190845b818110156180ee578451835293830193918301916001016180d2565b505084810360408601526181028188617ed4565b93505050506001600160401b038316606083015295945050505050565b901515815260200190565b6000602082526110af6020830184617f41565b600060408252618151604083018688617f17565b8281036020840152618164818587617f17565b979650505050505050565b6020808252601c908201527f6c656e677468206f66206275726e526174696f206d69736d6174636800000000604082015260600190565b60208082526026908201527f6c656e677468206f66206d61784e756d4f664d61696e7461696e696e67206d696040820152650e6dac2e8c6d60d31b606082015260800190565b6020808252601b908201527f6261746368207472616e736665722072657475726e2066616c73650000000000604082015260600190565b6020808252602c908201527f6c656e677468206f66206d61784e756d4f66576f726b696e6743616e6469646160408201526b0e8cae640dad2e6dac2e8c6d60a31b606082015260800190565b60208082526025908201527f6c656e677468206f66206d61696e7461696e536c6173685363616c65206d69736040820152640dac2e8c6d60db1b606082015260800190565b6020808252818101527f6c656e677468206f66206e756d4f66436162696e657473206d69736d61746368604082015260600190565b60208082526019908201527f74686520636f6e7472616374206e6f7420696e69742079657400000000000000604082015260600190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b60208082526028908201527f746865206e756d4f66436162696e657473206d75737420626520677265617465604082015267072207468616e20360c41b606082015260800190565b60208082526039908201527f746865206e756d4f66436162696e657473206d757374206265206c657373207460408201527f68616e204d41585f4e554d5f4f465f56414c494441544f525300000000000000606082015260800190565b60208082526029908201527f746865206e756d626572206f662076616c696461746f727320657863656564206040820152681d1a19481b1a5b5a5d60ba1b606082015260800190565b60208082526022908201527f63616e206e6f7420646f207468697320747769636520696e206f6e6520626c6f604082015261636b60f01b606082015260800190565b6020808252602b908201527f746865206275726e526174696f206d757374206265206e6f206772656174657260408201526a0207468616e2031303030360ac1b606082015260800190565b6020808252600e908201526d696e70757420746f6f206c6f6e6760901b604082015260600190565b60208082526037908201527f746865206d61784e756d4f664d61696e7461696e696e67206d7573742062652060408201527f6c657373207468616e206e756d4f66436162696e657473000000000000000000606082015260800190565b6020808252602b908201527f6475706c696361746520636f6e73656e7375732061646472657373206f66207660408201526a185b1a59185d1bdc94d95d60aa1b606082015260800190565b60208082526033908201527f7468652073797374656d526577617264526174696f206d757374206265206e6f60408201527202067726561746572207468616e20313030303606c1b606082015260800190565b60208082526027908201527f7468652065787069726554696d655365636f6e64476170206973206f7574206f604082015266662072616e676560c81b606082015260800190565b6020808252601590820152746465706f7369742076616c7565206973207a65726f60581b604082015260600190565b60208082526049908201527f746865206d61784e756d4f66576f726b696e6743616e64696461746573206d7560408201527f7374206265206e6f742067726561746572207468616e206d61784e756d4f6643606082015268616e6469646174657360b81b608082015260a00190565b6020808252601190820152706164646974696f6e206f766572666c6f7760781b604082015260600190565b60208082526023908201527f63616e206e6f7420656e7465722054656d706f72617279204d61696e74656e616040820152626e636560e81b606082015260800190565b60208082526025908201527f6c656e677468206f66206a61696c2076616c696461746f7273206d757374206260408201526465206f6e6560d81b606082015260800190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252601490820152736761737072696365206973206e6f74207a65726f60601b604082015260600190565b6020808252602e908201527f746865206d6573736167652073656e646572206d75737420626520676f76657260408201526d1b985b98d94818dbdb9d1c9858dd60921b606082015260800190565b60208082526025908201527f6c656e677468206f66206d61784e756d4f6643616e64696461746573206d69736040820152640dac2e8c6d60db1b606082015260800190565b6020808252601290820152716e6f7420696e206d61696e74656e616e636560701b604082015260600190565b60208082526021908201527f666565206973206c6172676572207468616e2044555354595f494e434f4d494e6040820152604760f81b606082015260800190565b60208082526019908201527f74686520636f6e747261637420616c726561647920696e697400000000000000604082015260600190565b6020808252601a908201527f6c656e677468206973206c657373207468616e206f6666736574000000000000604082015260600190565b60208082526026908201527f6c656e677468206f662065787069726554696d655365636f6e64476170206d696040820152650e6dac2e8c6d60d31b606082015260800190565b60208082526017908201527f6f6e6c792063757272656e742076616c696461746f7273000000000000000000604082015260600190565b60208082526021908201527f6661696c656420746f20706172736520696e69742076616c696461746f7253656040820152601d60fa1b606082015260800190565b6020808252602f908201527f746865206d6573736167652073656e646572206d7573742062652063726f737360408201526e0818da185a5b8818dbdb9d1c9858dd608a1b606082015260800190565b6020808252602d908201527f746865206d6573736167652073656e646572206d75737420626520746865206260408201526c3637b1b590383937b23ab1b2b960991b606082015260800190565b60208082526024908201527f6c656e677468206f662073797374656d526577617264526174696f206d69736d6040820152630c2e8c6d60e31b606082015260800190565b6020808252603e908201527f746865206d61696e7461696e536c6173685363616c65206d757374206265206760408201527f726561746572207468616e203020616e64206c657373207468616e2031300000606082015260800190565b6020808252600d908201526c756e6b6e6f776e20706172616d60981b604082015260600190565b60208082526029908201527f746865206d6573736167652073656e646572206d75737420626520736c6173686040820152680818dbdb9d1c9858dd60ba1b606082015260800190565b6020808252601f908201527f746865206d73672073656e646572206d757374206265207374616b6548756200604082015260600190565b61ffff91909116815260200190565b90815260200190565b60008482528315156020830152606060408301526177436060830184617f41565b63ffffffff91909116815260200190565b60ff91909116815260200190565b600060ff8516825260406020830152617743604083018486617f17565b6040518181016001600160401b0381118282101715618c9f57600080fd5b604052919050565b60006001600160401b03821115618cbc578081fd5b5060209081020190565b60005b83811015618ce1578181015183820152602001618cc9565b8381111561391d5750506000910152565b6001600160a01b0381168114611d8957600080fdfef901a880f901a4f844941284214b9b9c85549ab3d2b972df0deef66ac2c9946ddf42a51534fc98d0c0a3b42c963cace8441ddf946ddf42a51534fc98d0c0a3b42c963cace8441ddf8410000000f84494a2959d3f95eae5dc7d70144ce1b73b403b7eb6e0948081ef03f1d9e0bb4a5bf38f16285c879299f07f948081ef03f1d9e0bb4a5bf38f16285c879299f07f8410000000f8449435552c16704d214347f29fa77f77da6d75d7c75294dc4973e838e3949c77aced16ac2315dc2d7ab11194dc4973e838e3949c77aced16ac2315dc2d7ab1118410000000f84494980a75ecd1309ea12fa2ed87a8744fbfc9b863d594cc6ac05c95a99c1f7b5f88de0e3486c82293b27094cc6ac05c95a99c1f7b5f88de0e3486c82293b2708410000000f84494f474cf03cceff28abc65c9cbae594f725c80e12d94e61a183325a18a173319dd8e19c8d069459e217594e61a183325a18a173319dd8e19c8d069459e21758410000000f84494b71b214cb885500844365e95cd9942c7276e7fd894d22ca3ba2141d23adab65ce4940eb7665ea2b6a794d22ca3ba2141d23adab65ce4940eb7665ea2b6a7841000000070e72399380dcfb0338abc03dc8d47f9f470ada8e769c9a78d644ea97385ecb20175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db90175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01dbb0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01dbaa164736f6c6343000604000a", }, { ContractAddr: common.HexToAddress(SlashContract), CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/cfc0bd1127186a917ddc38fd38d22903034d3f0b", - Code: "608060405234801561001057600080fd5b50600436106102f15760003560e01c8063831d65d11161019d578063c81b1662116100e9578063df8079e9116100a2578063f9a2bbc71161007c578063f9a2bbc714610575578063fc3e59081461057d578063fc4333cd14610585578063fd6a68791461058d576102f1565b8063df8079e91461055d578063e1c7392a14610565578063eb57bff71461056d576102f1565b8063c81b16621461050c578063c8509d8114610514578063c96be4cb14610527578063cc844b731461053a578063d2a42e4b1461054d578063dc927faf14610555576102f1565b8063aa82dce111610156578063ac0af62911610130578063ac0af629146104e1578063ac431751146104e9578063ae61dc3b146104fc578063c80d4b8f14610504576102f1565b8063aa82dce1146104c9578063aad56063146104d1578063ab51bb96146104d9576102f1565b8063831d65d11461048357806396713da9146104965780639dc092621461049e5780639e89ded8146104a6578063a1a11bf5146104b9578063a78abc16146104c1576102f1565b8063493279b11161025c5780636e47b4821161021557806375d47a0a116101ef57806375d47a0a146104635780637912a65d1461046b5780637942fd05146104735780638256ace61461047b576102f1565b80636e47b4821461044b57806370fd5bad14610453578063718a8aa81461045b576102f1565b8063493279b1146104035780634bf6c8821461041857806351e8067214610420578063567a372d146104285780635bfb49901461043057806362b72cf514610443576102f1565b806335aa2e44116102ae57806335aa2e441461039557806337c8dab9146103a8578063389f4f71146103c95780633a63f4b1146103de5780633dffc387146103e657806343756e5c146103fb576102f1565b80630bee7a67146102f65780630e2374a5146103145780631182b8751461032957806322d1e80b1461034957806323bac5a21461035e5780632796211814610380575b600080fd5b6102fe610595565b60405161030b9190613dd9565b60405180910390f35b61031c61059a565b60405161030b91906135ac565b61033c6103373660046134e2565b6105a0565b60405161030b91906135e4565b610351610606565b60405161030b91906135d9565b61037161036c3660046131f9565b61060f565b60405161030b93929190613dc1565b61039361038e36600461333f565b610632565b005b61031c6103a33660046134b2565b610a4c565b6103bb6103b63660046131f9565b610a73565b60405161030b929190613db3565b6103d1610aca565b60405161030b9190613d89565b6103d1610ad0565b6103ee610ad6565b60405161030b9190613dea565b61031c610adb565b61040b610ae1565b60405161030b9190613d7a565b6103ee610ae6565b61031c610aeb565b6103d1610af1565b61039361043e3660046131f9565b610af7565b6103d1610ba2565b61031c610ba8565b6103ee610bae565b6103ee610bb3565b61031c610bb8565b6103d1610bbe565b6103ee610bc3565b6103bb610bc8565b6103936104913660046134e2565b610bd2565b6103ee610ce5565b61031c610cea565b6103936104b4366004613231565b610cf0565b61031c610d1f565b610351610d25565b61031c610d2e565b61031c610d34565b6102fe610d3a565b6103d1610d3f565b6103936104f7366004613396565b610d44565b6103d16112f4565b6103d16112fb565b61031c611300565b6103936105223660046134e2565b611306565b6103936105353660046131f9565b611377565b6103936105483660046133ff565b6117f8565b6103d1611e43565b61031c611e48565b61031c611e4e565b610393611e54565b6103d1611e91565b61031c611e97565b6103ee611e9d565b610393611ea2565b61031c6122eb565b606481565b61200181565b606033612000146105cc5760405162461bcd60e51b81526004016105c390613bd2565b60405180910390fd5b60005460ff166105ee5760405162461bcd60e51b81526004016105c390613702565b60405162461bcd60e51b81526004016105c390613cc3565b60075460ff1681565b600260208190526000918252604090912080546001820154919092015460ff1683565b60005460ff166106545760405162461bcd60e51b81526004016105c390613702565b8151158015906106645750805115155b6106805760405162461bcd60e51b81526004016105c390613b30565b60408051600380825260808201909252606091816020015b60608152602001906001900390816106985790505090506106b960386122f1565b816000815181106106c657fe5b60200260200101819052506106da8361230c565b816001815181106106e757fe5b60200260200101819052506106fb8261230c565b8160028151811061070857fe5b6020026020010181905250606061071e82612362565b60408051603480825260608281019093529293509091602082018180368337019050509050815160346020830182602086016068600019fa61075f57600080fd5b50601481015160348201516040516333c1892360e21b81526000906120029063cf06248c906107929086906004016135ac565b60206040518083038186803b1580156107aa57600080fd5b505afa1580156107be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107e29190613215565b6001600160a01b031614156108095760405162461bcd60e51b81526004016105c3906136d2565b4281621baf8001101561082e5760405162461bcd60e51b81526004016105c390613673565b60606110006001600160a01b0316633b071dcc6040518163ffffffff1660e01b815260040160006040518083038186803b15801561086b57600080fd5b505afa15801561087f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526108a7919081019061325c565b50905060005b81518110156109ea578181815181106108c257fe5b60200260200101516001600160a01b0316846001600160a01b031614156109e2576006546040516309a99b4f60e41b815260646110028031909302049190639a99b4f09061091690339085906004016135c0565b602060405180830381600087803b15801561093057600080fd5b505af1158015610944573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061096891906134ca565b506110006001600160a01b03166335409f7f84848151811061098657fe5b60200260200101516040518263ffffffff1660e01b81526004016109aa91906135ac565b600060405180830381600087803b1580156109c457600080fd5b505af11580156109d8573d6000803e3d6000fd5b50505050506109ea565b6001016108ad565b50604051631871f7d960e31b81526120029063c38fbec890610a109086906004016135ac565b600060405180830381600087803b158015610a2a57600080fd5b505af1158015610a3e573d6000803e3d6000fd5b505050505050505050505050565b60018181548110610a5957fe5b6000918252602090912001546001600160a01b0316905081565b600080610a7e612fe0565b5050506001600160a01b0316600090815260026020818152604092839020835160608101855281548082526001830154938201849052919093015460ff16151592909301919091529091565b60055481565b60065481565b600181565b61100181565b603881565b600881565b61200081565b60045481565b3361100014610b185760405162461bcd60e51b81526004016105c390613991565b60005460ff16610b3a5760405162461bcd60e51b81526004016105c390613702565b61200063f7a251d7600b610b4d846123f3565b60006040518463ffffffff1660e01b8152600401610b6d93929190613df8565b600060405180830381600087803b158015610b8757600080fd5b505af1158015610b9b573d6000803e3d6000fd5b5050505050565b60035481565b61100581565b600281565b601081565b61100881565b600581565b600b81565b6004546005549091565b3361200014610bf35760405162461bcd60e51b81526004016105c390613bd2565b60005460ff16610c155760405162461bcd60e51b81526004016105c390613702565b610c1d613003565b6000610c5e84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506124bc92505050565b915091508015610ca55781516040517f7f0956d47419b9525356e7111652b653b530ec6f5096dccc04589bc38e62996791610c9891613dd9565b60405180910390a1610b9b565b81516040517f7d45f62d17443dd4547bca8a8112c60e2385669318dc300ec61a5d2492f262e791610cd591613dd9565b60405180910390a150505b505050565b600981565b61100781565b3361100014610d115760405162461bcd60e51b81526004016105c390613991565b610d1b828261253c565b5050565b61100681565b60005460ff1681565b61200281565b61300081565b600081565b600481565b60005460ff16610d665760405162461bcd60e51b81526004016105c390613702565b3361100714610d875760405162461bcd60e51b81526004016105c390613a69565b610df284848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260148152731b5a5cd9195b59585b9bdc951a1c995cda1bdb1960621b602082015291506127139050565b15610e8d5760208114610e175760405162461bcd60e51b81526004016105c39061391d565b604080516020601f8401819004810282018101909252828152600091610e559185858083850183828082843760009201919091525061276d92505050565b905060018110158015610e69575060055481105b610e855760405162461bcd60e51b81526004016105c390613b8d565b6004556112b1565b610ef384848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600f81526e19995b1bdb9e551a1c995cda1bdb19608a1b602082015291506127139050565b15610f8f5760208114610f185760405162461bcd60e51b81526004016105c390613ab7565b604080516020601f8401819004810282018101909252828152600091610f569185858083850183828082843760009201919091525061276d92505050565b90506103e88111158015610f6b575060045481115b610f875760405162461bcd60e51b81526004016105c3906137bb565b6005556112b1565b61100384848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601881527f66696e616c697479536c617368526577617264526174696f0000000000000000602082015291506127139050565b1561109d57602081146110285760405162461bcd60e51b81526004016105c390613cfa565b604080516020601f84018190048102820181019092528281526000916110669185858083850183828082843760009201919091525061276d92505050565b9050600a81101580156110795750606481105b6110955760405162461bcd60e51b81526004016105c3906138d1565b6006556112b1565b61111184848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601881527f656e61626c654d616c6963696f7573566f7465536c6173680000000000000000602082015291506127139050565b1561118857602081146111365760405162461bcd60e51b81526004016105c3906137f0565b604080516020601f8401819004810282018101909252828152611172919084848083850183828082843760009201919091525061277292505050565b6007805460ff19169115159190911790556112b1565b6111fc84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601781527f6d616c6963696f7573566f7465536c61736853636f7065000000000000000000602082015291506127139050565b1561129957602081146112215760405162461bcd60e51b81526004016105c390613629565b604080516020601f840181900481028201810190925282815260009161125f9185858083850183828082843760009201919091525061276d92505050565b905061708081101580156112755750620d2f0081105b6112915760405162461bcd60e51b81526004016105c390613739565b6008556112b1565b60405162461bcd60e51b81526004016105c390613c6e565b7f6cdb0ac70ab7f2e2d035cca5be60d89906f2dede7648ddbd7402189c1eeed17a848484846040516112e694939291906135f7565b60405180910390a150505050565b6201518081565b600a81565b61100281565b33612000146113275760405162461bcd60e51b81526004016105c390613bd2565b60005460ff166113495760405162461bcd60e51b81526004016105c390613702565b6040517f07db600eebe2ac176be8dcebad61858c245a4961bb32ca2aa3d159b09aa0810e90600090a1505050565b3341146113965760405162461bcd60e51b81526004016105c390613c21565b60005460ff166113b85760405162461bcd60e51b81526004016105c390613702565b60035443116113d95760405162461bcd60e51b81526004016105c390613d45565b3a156113f75760405162461bcd60e51b81526004016105c390613a0c565b60405163155853f360e21b8152611000906355614fcc9061141c9084906004016135ac565b60206040518083038186803b15801561143457600080fd5b505afa158015611448573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061146c919061331f565b611475576117f1565b61147d612fe0565b506001600160a01b0381166000908152600260208181526040928390208351606081018552815481526001820154928101929092529091015460ff1615801592820192909252906114d8576020810180516001019052611531565b60016040820181905260208201819052805480820182556000919091527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180546001600160a01b0319166001600160a01b0384161790555b43815260055460208201518161154357fe5b0661171f57600060208201526040516335409f7f60e01b8152611000906335409f7f906115749085906004016135ac565b600060405180830381600087803b15801561158e57600080fd5b505af11580156115a2573d6000803e3d6000fd5b50506040516333c1892360e21b815260009250612002915063cf06248c906115ce9086906004016135ac565b60206040518083038186803b1580156115e657600080fd5b505afa1580156115fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061161e9190613215565b6001600160a01b03161461163f5761163a82826020015161253c565b61171a565b61200063f7a251d7600b611652856123f3565b60006040518463ffffffff1660e01b815260040161167293929190613df8565b600060405180830381600087803b15801561168c57600080fd5b505af192505050801561169d575060015b61171a573d8080156116cb576040519150601f19603f3d011682016040523d82523d6000602084013e6116d0565b606091505b50826001600160a01b03167fd7bc86ff5d08c8ab043edec743302aba2520e6635172a428bc956721db9e2d1c836020015183604051611710929190613d92565b60405180910390a2505b61178b565b60045481602001518161172e57fe5b0661178b576040516375abf10160e11b81526110009063eb57e202906117589085906004016135ac565b600060405180830381600087803b15801561177257600080fd5b505af1158015611786573d6000803e3d6000fd5b505050505b6001600160a01b0382166000818152600260208181526040808420865181559186015160018301558581015191909201805460ff1916911515919091179055517fddb6012116e51abf5436d956a4f0ebd927e92c576ff96d7918290c8782291e3e9190a2505b5043600355565b60005460ff1661181a5760405162461bcd60e51b81526004016105c390613702565b60075460ff1661183c5760405162461bcd60e51b81526004016105c39061369d565b6006546118495760146006555b60085461185857620151806008555b60085481516040015143910111801561187c57504360085482602001516040015101115b6118985760405162461bcd60e51b81526004016105c390613c95565b8060200151602001518160000151602001511480156118c65750806020015160600151816000015160600151145b156118e35760405162461bcd60e51b81526004016105c390613964565b8051604081015190511080156119025750602081015160408101519051105b61191e5760405162461bcd60e51b81526004016105c39061389a565b6020810151518151511080156119435750806000015160400151816020015160400151105b8061196e575080515160208201515110801561196e5750806020015160400151816000015160400151105b806119885750806020015160400151816000015160400151145b6119a45760405162461bcd60e51b81526004016105c390613784565b604080820151905163ea321e4960e01b81526110009163ea321e49916119cd91906004016135e4565b60206040518083038186803b1580156119e557600080fd5b505afa1580156119f9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a1d919061331f565b611a395760405162461bcd60e51b81526004016105c390613a3a565b611a4b8160000151826040015161279a565b8015611a645750611a648160200151826040015161279a565b611a805760405162461bcd60e51b81526004016105c39061383b565b6060806110006001600160a01b0316633b071dcc6040518163ffffffff1660e01b815260040160006040518083038186803b158015611abe57600080fd5b505afa158015611ad2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611afa919081019061325c565b9150915060005b8151811015611c3757611b2b828281518110611b1957fe5b60200260200101518560400151612972565b15611c2f576006546040516309a99b4f60e41b815260646110028031909302049190639a99b4f090611b6390339085906004016135c0565b602060405180830381600087803b158015611b7d57600080fd5b505af1158015611b91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bb591906134ca565b506110006001600160a01b03166335409f7f858481518110611bd357fe5b60200260200101516040518263ffffffff1660e01b8152600401611bf791906135ac565b600060405180830381600087803b158015611c1157600080fd5b505af1158015611c25573d6000803e3d6000fd5b5050505050611c37565b600101611b01565b506040808401519051630f5b9efd60e31b815260009161200291637adcf7e891611c63916004016135e4565b60206040518083038186803b158015611c7b57600080fd5b505afa158015611c8f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cb39190613215565b6001600160a01b031614611d21576040808401519051630e9fbf5160e01b815261200291630e9fbf5191611cea91906004016135e4565b600060405180830381600087803b158015611d0457600080fd5b505af1158015611d18573d6000803e3d6000fd5b50505050610ce0565b6000611d32846040015160006129d6565b90506120006001600160a01b031663f7a251d7600b611d5487604001516129f2565b60006040518463ffffffff1660e01b8152600401611d7493929190613df8565b600060405180830381600087803b158015611d8e57600080fd5b505af1925050508015611d9f575060015b611e11573d808015611dcd576040519150601f19603f3d011682016040523d82523d6000602084013e611dd2565b606091505b50817fd58d1183100bd0932c0588f31c4205d6bc6168909765a96c41adbed3115f362882604051611e0391906135e4565b60405180910390a250611e3d565b60405181907f7b78aadacff901d8b63d0dba4f86283d4db8aef27f9ed70413dd860f1c9532b690600090a25b50505050565b601481565b61100381565b61200481565b60005460ff1615611e775760405162461bcd60e51b81526004016105c390613af9565b60056004819055600a90556000805460ff19166001179055565b60085481565b61100081565b600381565b3361100014611ec35760405162461bcd60e51b81526004016105c390613991565b60005460ff16611ee55760405162461bcd60e51b81526004016105c390613702565b600154611ef1576122e9565b600154600090600019015b8082116122bd576000805b8284101561202057611f17612fe0565b6002600060018781548110611f2857fe5b60009182526020808320909101546001600160a01b0316835282810193909352604091820190208151606081018352815481526001820154938101939093526002015460ff16151590820152600554909150600490048160200151111561200a57600460055481611f9557fe5b04816020015103816020018181525050806002600060018881548110611fb757fe5b6000918252602080832091909101546001600160a01b0316835282810193909352604091820190208351815591830151600183015591909101516002909101805460ff1916911515919091179055612014565b6001925050612020565b50836001019350611f07565b8284116121b75761202f612fe0565b600260006001868154811061204057fe5b60009182526020808320909101546001600160a01b0316835282810193909352604091820190208151606081018352815481526001820154938101939093526002015460ff161515908201526005549091506004900481602001511115612128576004600554816120ad57fe5b048160200151038160200181815250508060026000600187815481106120cf57fe5b6000918252602080832091909101546001600160a01b03168352828101939093526040918201902083518155918301516001808401919091559201516002909101805460ff191691151591909117905591506121b79050565b600260006001868154811061213957fe5b60009182526020808320909101546001600160a01b031683528201929092526040018120818155600181810192909255600201805460ff1916905580548061217d57fe5b600082815260209020810160001990810180546001600160a01b0319169055019055836121aa57506121b7565b5060001990920191612020565b8180156121c15750805b156122a05760026000600186815481106121d757fe5b60009182526020808320909101546001600160a01b031683528201929092526040018120818155600181810192909255600201805460ff1916905580548490811061221e57fe5b600091825260209091200154600180546001600160a01b03909216918690811061224457fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600180548061227d57fe5b600082815260209020810160001990810180546001600160a01b03191690550190555b826122ac5750506122bd565b505060019091019060001901611efc565b6040517fcfdb3b6ccaeccbdc68be3c59c840e3b3c90f0a7c491f5fff1cf56cfda200dd9c90600090a150505b565b61100481565b60606123046122ff83612a2d565b61230c565b90505b919050565b60608151600114801561233e5750607f60f81b8260008151811061232c57fe5b01602001516001600160f81b03191611155b1561234a575080612307565b61230461235c8351608060ff16612b13565b83612be5565b60608151600014156123835750604080516000815260208101909152612307565b60608260008151811061239257fe5b602002602001015190506000600190505b83518110156123d3576123c9828583815181106123bc57fe5b6020026020010151612be5565b91506001016123a3565b506123ec6123e6825160c060ff16612b13565b82612be5565b9392505050565b60408051600480825260a08201909252606091829190816020015b606081526020019060019003908161240e579050509050612437836001600160a01b0316612c62565b8160008151811061244457fe5b6020026020010181905250612458436122f1565b8160018151811061246557fe5b602090810291909101015261247a60386122f1565b8160028151811061248757fe5b602002602001018190525061249b426122f1565b816003815181106124a857fe5b60200260200101819052506123ec81612362565b6124c4613003565b60006124ce613003565b6124d6613015565b6124e76124e286612c85565b612caa565b90506000805b6124f683612cf4565b1561252f57806125225761251161250c84612d15565b612d63565b63ffffffff16845260019150612527565b61252f565b6001016124ed565b5091935090915050915091565b6040516375cc7d8960e01b8152612002906375cc7d89906125619085906004016135ac565b600060405180830381600087803b15801561257b57600080fd5b505af192505050801561258c575060015b610d1b576040516000815260443d10156125a857506000612645565b60046000803e60005160e01c6308c379a081146125c9576000915050612645565b60043d036004833e81513d602482011167ffffffffffffffff821117156125f557600092505050612645565b808301805167ffffffffffffffff811115612617576000945050505050612645565b8060208301013d860181111561263557600095505050505050612645565b601f01601f191660405250925050505b806126505750612699565b826001600160a01b03167fd7bc86ff5d08c8ab043edec743302aba2520e6635172a428bc956721db9e2d1c838360405161268b929190613d92565b60405180910390a25061270e565b3d8080156126c3576040519150601f19603f3d011682016040523d82523d6000602084013e6126c8565b606091505b50826001600160a01b03167fd7bc86ff5d08c8ab043edec743302aba2520e6635172a428bc956721db9e2d1c8383604051612704929190613d92565b60405180910390a2505b610d1b565b6000816040516020016127269190613590565b604051602081830303815290604052805190602001208360405160200161274d9190613590565b604051602081830303815290604052805190602001201490505b92915050565b015190565b8082015160009060ff81161561278c576001915081612792565b60009150815b505092915050565b60408051600480825260a0820190925260009160609190816020015b60608152602001906001900390816127b65750506040805160208082528183019092529192506060919080820181803683370190505090506127fb85600001516122f1565b8260008151811061280857fe5b60200260200101819052506128236020866020015183612de5565b61282c8161230c565b8260018151811061283957fe5b602002602001018190525061285185604001516122f1565b8260028151811061285e57fe5b60200260200101819052506128796020866060015183612de5565b6128828161230c565b8260038151811061288f57fe5b60200260200101819052506128b560206128a884612362565b8051906020012083612de5565b6040805160b080825260e082019092526060916020820181803683370190505090506128e5818360006020612df5565b6128f781876080015160206060612df5565b612905818660806030612df5565b604080516001808252818301909252606091602082018180368337019050509050815160016020830182602086016066600019fa61294257600080fd5b506001612950826000612e48565b60ff1614612965576000945050505050612767565b5060019695505050505050565b81518151600091600191811480831461298e57600092506129cc565b600160208701838101602088015b6002848385100114156129c75780518351146129bb5760009650600093505b6020928301920161299c565b505050505b5090949350505050565b600081602001835110156129e957600080fd5b50016020015190565b60408051600480825260a08201909252606091829190816020015b6060815260200190600190039081612a0d5790505090506124378361230c565b604080516020808252818301909252606091829190602082018180368337505050602081018490529050600067ffffffffffffffff198416612a7157506018612a95565b6fffffffffffffffffffffffffffffffff198416612a9157506010612a95565b5060005b6020811015612acb57818181518110612aaa57fe5b01602001516001600160f81b03191615612ac357612acb565b600101612a95565b60008160200390506060816040519080825280601f01601f191660200182016040528015612b00576020820181803683370190505b5080830196909652508452509192915050565b6060680100000000000000008310612b3d5760405162461bcd60e51b81526004016105c390613872565b60408051600180825281830190925260609160208201818036833701905050905060378411612b975782840160f81b81600081518110612b7957fe5b60200101906001600160f81b031916908160001a9053509050612767565b6060612ba285612a2d565b90508381510160370160f81b82600081518110612bbb57fe5b60200101906001600160f81b031916908160001a905350612bdc8282612be5565b95945050505050565b6060806040519050835180825260208201818101602087015b81831015612c16578051835260209283019201612bfe565b50855184518101855292509050808201602086015b81831015612c43578051835260209283019201612c2b565b508651929092011591909101601f01601f191660405250905092915050565b60408051600560a21b83186014820152603481019091526060906123ec8161230c565b612c8d613035565b506040805180820190915281518152602082810190820152919050565b612cb2613015565b612cbb82612e64565b612cc457600080fd5b6000612cd38360200151612e9e565b60208085015160408051808201909152868152920190820152915050919050565b6000612cfe613035565b505080518051602091820151919092015191011190565b612d1d613035565b612d2682612cf4565b612d2f57600080fd5b60208201516000612d3f82612f01565b80830160209586015260408051808201909152908152938401919091525090919050565b805160009015801590612d7857508151602110155b612d8157600080fd5b6000612d908360200151612e9e565b90508083600001511015612db65760405162461bcd60e51b81526004016105c390613b56565b825160208085015183018051928490039291831015612ddc57826020036101000a820491505b50949350505050565b9091018181526020918201910152565b60005b81811015610b9b57838181518110612e0c57fe5b602001015160f81c60f81b858480600101955081518110612e2957fe5b60200101906001600160f81b031916908160001a905350600101612df8565b60008160010183511015612e5b57600080fd5b50016001015190565b8051600090612e7557506000612307565b6020820151805160001a9060c0821015612e9457600092505050612307565b5060019392505050565b8051600090811a6080811015612eb8576000915050612307565b60b8811080612ed3575060c08110801590612ed3575060f881105b15612ee2576001915050612307565b60c0811015612ef65760b519019050612307565b60f519019050612307565b80516000908190811a6080811015612f1c5760019150612fd9565b60b8811015612f3157607e1981019150612fd9565b60c0811015612f8257600060b78203600186019550806020036101000a865104915060018101820193505080831015612f7c5760405162461bcd60e51b81526004016105c3906139e1565b50612fd9565b60f8811015612f975760be1981019150612fd9565b600060f78203600186019550806020036101000a8651049150600181018201935050808310156127925760405162461bcd60e51b81526004016105c3906139e1565b5092915050565b604051806060016040528060008152602001600081526020016000151581525090565b60408051602081019091526000815290565b6040518060400160405280613028613035565b8152602001600081525090565b604051806040016040528060008152602001600081525090565b600082601f83011261305f578081fd5b815161307261306d82613e4b565b613e24565b818152915060208083019084810160005b848110156130e8578151870188603f82011261309e57600080fd5b838101516130ae61306d82613e6b565b81815260408b818486010111156130c457600080fd5b6130d383888401838701613e8f565b50865250509282019290820190600101613083565b505050505092915050565b60008083601f840112613104578182fd5b50813567ffffffffffffffff81111561311b578182fd5b60208301915083602082850101111561313357600080fd5b9250929050565b600082601f83011261314a578081fd5b813561315861306d82613e6b565b915080825283602082850101111561316f57600080fd5b8060208401602084013760009082016020015292915050565b600060a08284031215613199578081fd5b6131a360a0613e24565b905081358152602082013560208201526040820135604082015260608201356060820152608082013567ffffffffffffffff8111156131e157600080fd5b6131ed8482850161313a565b60808301525092915050565b60006020828403121561320a578081fd5b81356123ec81613ebb565b600060208284031215613226578081fd5b81516123ec81613ebb565b60008060408385031215613243578081fd5b823561324e81613ebb565b946020939093013593505050565b6000806040838503121561326e578182fd5b825167ffffffffffffffff80821115613285578384fd5b81850186601f820112613296578485fd5b805192506132a661306d84613e4b565b80848252602080830192508084018a8283890287010111156132c6578889fd5b8894505b868510156132f15780516132dd81613ebb565b8452600194909401939281019281016132ca565b508801519096509350505080821115613308578283fd5b506133158582860161304f565b9150509250929050565b600060208284031215613330578081fd5b815180151581146123ec578182fd5b60008060408385031215613351578182fd5b823567ffffffffffffffff80821115613368578384fd5b6133748683870161313a565b93506020850135915080821115613389578283fd5b506133158582860161313a565b600080600080604085870312156133ab578182fd5b843567ffffffffffffffff808211156133c2578384fd5b6133ce888389016130f3565b909650945060208701359150808211156133e6578384fd5b506133f3878288016130f3565b95989497509550505050565b600060208284031215613410578081fd5b813567ffffffffffffffff80821115613427578283fd5b81840160608187031215613439578384fd5b6134436060613e24565b9250803582811115613453578485fd5b61345f87828401613188565b845250602081013582811115613473578485fd5b61347f87828401613188565b602085015250604081013582811115613496578485fd5b6134a28782840161313a565b6040850152509195945050505050565b6000602082840312156134c3578081fd5b5035919050565b6000602082840312156134db578081fd5b5051919050565b6000806000604084860312156134f6578081fd5b833560ff81168114613506578182fd5b9250602084013567ffffffffffffffff811115613521578182fd5b61352d868287016130f3565b9497909650939450505050565b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b6000815180845261357c816020860160208601613e8f565b601f01601f19169290920160200192915050565b600082516135a2818460208701613e8f565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b901515815260200190565b6000602082526123ec6020830184613564565b60006040825261360b60408301868861353a565b828103602084015261361e81858761353a565b979650505050505050565b6020808252602a908201527f6c656e677468206f66206d616c6963696f7573566f7465536c61736853636f706040820152690ca40dad2e6dac2e8c6d60b31b606082015260800190565b60208082526010908201526f195d9a59195b98d9481d1bdbc81bdb1960821b604082015260600190565b6020808252818101527f6d616c6963696f757320766f746520736c617368206e6f7420656e61626c6564604082015260600190565b6020808252601690820152751d985b1a59185d1bdc881b9bdd081b5a59dc985d195960521b604082015260600190565b60208082526019908201527f74686520636f6e7472616374206e6f7420696e69742079657400000000000000604082015260600190565b6020808252602b908201527f746865206d616c6963696f757320766f746520736c6173682073636f7065206f60408201526a7574206f662072616e676560a81b606082015260800190565b6020808252601a908201527f6e6f2076696f6c6174696f6e206f6620766f74652072756c6573000000000000604082015260600190565b6020808252818101527f7468652066656c6f6e795468726573686f6c64206f7574206f662072616e6765604082015260600190565b6020808252602b908201527f6c656e677468206f6620656e61626c654d616c6963696f7573566f7465536c6160408201526a0e6d040dad2e6dac2e8c6d60ab1b606082015260800190565b60208082526017908201527f766572696679207369676e6174757265206661696c6564000000000000000000604082015260600190565b6020808252600e908201526d696e70757420746f6f206c6f6e6760901b604082015260600190565b60208082526019908201527f7372634e756d20626967676572207468616e207461724e756d00000000000000604082015260600190565b6020808252602c908201527f7468652066696e616c69747920736c6173682072657761726420726174696f2060408201526b6f7574206f662072616e676560a01b606082015260800190565b60208082526027908201527f6c656e677468206f66206d697364656d65616e6f725468726573686f6c64206d6040820152660d2e6dac2e8c6d60cb1b606082015260800190565b60208082526013908201527274776f206964656e746963616c20766f74657360681b604082015260600190565b60208082526030908201527f746865206d6573736167652073656e646572206d7573742062652076616c696460408201526f185d1bdc94d95d0818dbdb9d1c9858dd60821b606082015260800190565b6020808252601190820152706164646974696f6e206f766572666c6f7760781b604082015260600190565b6020808252601490820152736761737072696365206973206e6f74207a65726f60601b604082015260600190565b6020808252601590820152741d9bdd195059191c881a5cc81b9bdd08199bdd5b99605a1b604082015260600190565b6020808252602e908201527f746865206d6573736167652073656e646572206d75737420626520676f76657260408201526d1b985b98d94818dbdb9d1c9858dd60921b606082015260800190565b60208082526022908201527f6c656e677468206f662066656c6f6e795468726573686f6c64206d69736d61746040820152610c6d60f31b606082015260800190565b60208082526019908201527f74686520636f6e747261637420616c726561647920696e697400000000000000604082015260600190565b6020808252600c908201526b32b6b83a3c903432b0b232b960a11b604082015260600190565b6020808252601a908201527f6c656e677468206973206c657373207468616e206f6666736574000000000000604082015260600190565b60208082526025908201527f746865206d697364656d65616e6f725468726573686f6c64206f7574206f662060408201526472616e676560d81b606082015260800190565b6020808252602f908201527f746865206d6573736167652073656e646572206d7573742062652063726f737360408201526e0818da185a5b8818dbdb9d1c9858dd608a1b606082015260800190565b6020808252602d908201527f746865206d6573736167652073656e646572206d75737420626520746865206260408201526c3637b1b590383937b23ab1b2b960991b606082015260800190565b6020808252600d908201526c756e6b6e6f776e20706172616d60981b604082015260600190565b6020808252601490820152731d185c99d95d08189b1bd8dac81d1bdbc81bdb1960621b604082015260600190565b6020808252601e908201527f7265636569766520756e65787065637465642073796e207061636b6167650000604082015260600190565b6020808252602b908201527f6c656e677468206f662066696e616c697479536c61736852657761726452617460408201526a0d2de40dad2e6dac2e8c6d60ab1b606082015260800190565b6020808252818101527f63616e206e6f7420736c61736820747769636520696e206f6e6520626c6f636b604082015260600190565b61ffff91909116815260200190565b90815260200190565b600083825260406020830152613dab6040830184613564565b949350505050565b918252602082015260400190565b92835260208301919091521515604082015260600190565b63ffffffff91909116815260200190565b60ff91909116815260200190565b600060ff8516825260606020830152613e146060830185613564565b9050826040830152949350505050565b60405181810167ffffffffffffffff81118282101715613e4357600080fd5b604052919050565b600067ffffffffffffffff821115613e61578081fd5b5060209081020190565b600067ffffffffffffffff821115613e81578081fd5b50601f01601f191660200190565b60005b83811015613eaa578181015183820152602001613e92565b83811115611e3d5750506000910152565b6001600160a01b0381168114613ed057600080fd5b5056fea164736f6c6343000604000a", + Code: "608060405234801561001057600080fd5b50600436106102f15760003560e01c8063831d65d11161019d578063c81b1662116100e9578063df8079e9116100a2578063f9a2bbc71161007c578063f9a2bbc714610575578063fc3e59081461057d578063fc4333cd14610585578063fd6a68791461058d576102f1565b8063df8079e91461055d578063e1c7392a14610565578063eb57bff71461056d576102f1565b8063c81b16621461050c578063c8509d8114610514578063c96be4cb14610527578063cc844b731461053a578063d2a42e4b1461054d578063dc927faf14610555576102f1565b8063aa82dce111610156578063ac0af62911610130578063ac0af629146104e1578063ac431751146104e9578063ae61dc3b146104fc578063c80d4b8f14610504576102f1565b8063aa82dce1146104c9578063aad56063146104d1578063ab51bb96146104d9576102f1565b8063831d65d11461048357806396713da9146104965780639dc092621461049e5780639e89ded8146104a6578063a1a11bf5146104b9578063a78abc16146104c1576102f1565b8063493279b11161025c5780636e47b4821161021557806375d47a0a116101ef57806375d47a0a146104635780637912a65d1461046b5780637942fd05146104735780638256ace61461047b576102f1565b80636e47b4821461044b57806370fd5bad14610453578063718a8aa81461045b576102f1565b8063493279b1146104035780634bf6c8821461041857806351e8067214610420578063567a372d146104285780635bfb49901461043057806362b72cf514610443576102f1565b806335aa2e44116102ae57806335aa2e441461039557806337c8dab9146103a8578063389f4f71146103c95780633a63f4b1146103de5780633dffc387146103e657806343756e5c146103fb576102f1565b80630bee7a67146102f65780630e2374a5146103145780631182b8751461032957806322d1e80b1461034957806323bac5a21461035e5780632796211814610380575b600080fd5b6102fe610595565b60405161030b9190613ddc565b60405180910390f35b61031c61059a565b60405161030b91906135af565b61033c6103373660046134e5565b6105a0565b60405161030b91906135e7565b610351610606565b60405161030b91906135dc565b61037161036c3660046131fc565b61060f565b60405161030b93929190613dc4565b61039361038e366004613342565b610632565b005b61031c6103a33660046134b5565b610a4d565b6103bb6103b63660046131fc565b610a74565b60405161030b929190613db6565b6103d1610acb565b60405161030b9190613d8c565b6103d1610ad1565b6103ee610ad7565b60405161030b9190613ded565b61031c610adc565b61040b610ae2565b60405161030b9190613d7d565b6103ee610ae8565b61031c610aed565b6103d1610af3565b61039361043e3660046131fc565b610af9565b6103d1610ba4565b61031c610baa565b6103ee610bb0565b6103ee610bb5565b61031c610bba565b6103d1610bc0565b6103ee610bc5565b6103bb610bca565b6103936104913660046134e5565b610bd4565b6103ee610ce7565b61031c610cec565b6103936104b4366004613234565b610cf2565b61031c610d21565b610351610d27565b61031c610d30565b61031c610d36565b6102fe610d3c565b6103d1610d41565b6103936104f7366004613399565b610d46565b6103d16112f6565b6103d16112fd565b61031c611302565b6103936105223660046134e5565b611308565b6103936105353660046131fc565b611379565b610393610548366004613402565b6117fa565b6103d1611e45565b61031c611e4a565b61031c611e50565b610393611e56565b6103d1611e93565b61031c611e99565b6103ee611e9f565b610393611ea4565b61031c6122ed565b606481565b61200181565b606033612000146105cc5760405162461bcd60e51b81526004016105c390613bd5565b60405180910390fd5b60005460ff166105ee5760405162461bcd60e51b81526004016105c390613705565b60405162461bcd60e51b81526004016105c390613cc6565b60075460ff1681565b600260208190526000918252604090912080546001820154919092015460ff1683565b60005460ff166106545760405162461bcd60e51b81526004016105c390613705565b8151158015906106645750805115155b6106805760405162461bcd60e51b81526004016105c390613b33565b60408051600380825260808201909252606091816020015b60608152602001906001900390816106985790505090506106ba6102ca6122f3565b816000815181106106c757fe5b60200260200101819052506106db8361230e565b816001815181106106e857fe5b60200260200101819052506106fc8261230e565b8160028151811061070957fe5b6020026020010181905250606061071f82612364565b60408051603480825260608281019093529293509091602082018180368337019050509050815160346020830182602086016068600019fa61076057600080fd5b50601481015160348201516040516333c1892360e21b81526000906120029063cf06248c906107939086906004016135af565b60206040518083038186803b1580156107ab57600080fd5b505afa1580156107bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107e39190613218565b6001600160a01b0316141561080a5760405162461bcd60e51b81526004016105c3906136d5565b4281621baf8001101561082f5760405162461bcd60e51b81526004016105c390613676565b60606110006001600160a01b0316633b071dcc6040518163ffffffff1660e01b815260040160006040518083038186803b15801561086c57600080fd5b505afa158015610880573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526108a8919081019061325f565b50905060005b81518110156109eb578181815181106108c357fe5b60200260200101516001600160a01b0316846001600160a01b031614156109e3576006546040516309a99b4f60e41b815260646110028031909302049190639a99b4f09061091790339085906004016135c3565b602060405180830381600087803b15801561093157600080fd5b505af1158015610945573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061096991906134cd565b506110006001600160a01b03166335409f7f84848151811061098757fe5b60200260200101516040518263ffffffff1660e01b81526004016109ab91906135af565b600060405180830381600087803b1580156109c557600080fd5b505af11580156109d9573d6000803e3d6000fd5b50505050506109eb565b6001016108ae565b50604051631871f7d960e31b81526120029063c38fbec890610a119086906004016135af565b600060405180830381600087803b158015610a2b57600080fd5b505af1158015610a3f573d6000803e3d6000fd5b505050505050505050505050565b60018181548110610a5a57fe5b6000918252602090912001546001600160a01b0316905081565b600080610a7f612fe3565b5050506001600160a01b0316600090815260026020818152604092839020835160608101855281548082526001830154938201849052919093015460ff16151592909301919091529091565b60055481565b60065481565b600181565b61100181565b6102ca81565b600881565b61200081565b60045481565b3361100014610b1a5760405162461bcd60e51b81526004016105c390613994565b60005460ff16610b3c5760405162461bcd60e51b81526004016105c390613705565b61200063f7a251d7600b610b4f846123f5565b60006040518463ffffffff1660e01b8152600401610b6f93929190613dfb565b600060405180830381600087803b158015610b8957600080fd5b505af1158015610b9d573d6000803e3d6000fd5b5050505050565b60035481565b61100581565b600281565b601081565b61100881565b600581565b600b81565b6004546005549091565b3361200014610bf55760405162461bcd60e51b81526004016105c390613bd5565b60005460ff16610c175760405162461bcd60e51b81526004016105c390613705565b610c1f613006565b6000610c6084848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506124bf92505050565b915091508015610ca75781516040517f7f0956d47419b9525356e7111652b653b530ec6f5096dccc04589bc38e62996791610c9a91613ddc565b60405180910390a1610b9d565b81516040517f7d45f62d17443dd4547bca8a8112c60e2385669318dc300ec61a5d2492f262e791610cd791613ddc565b60405180910390a150505b505050565b600981565b61100781565b3361100014610d135760405162461bcd60e51b81526004016105c390613994565b610d1d828261253f565b5050565b61100681565b60005460ff1681565b61200281565b61300081565b600081565b600481565b60005460ff16610d685760405162461bcd60e51b81526004016105c390613705565b3361100714610d895760405162461bcd60e51b81526004016105c390613a6c565b610df484848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260148152731b5a5cd9195b59585b9bdc951a1c995cda1bdb1960621b602082015291506127169050565b15610e8f5760208114610e195760405162461bcd60e51b81526004016105c390613920565b604080516020601f8401819004810282018101909252828152600091610e579185858083850183828082843760009201919091525061277092505050565b905060018110158015610e6b575060055481105b610e875760405162461bcd60e51b81526004016105c390613b90565b6004556112b3565b610ef584848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600f81526e19995b1bdb9e551a1c995cda1bdb19608a1b602082015291506127169050565b15610f915760208114610f1a5760405162461bcd60e51b81526004016105c390613aba565b604080516020601f8401819004810282018101909252828152600091610f589185858083850183828082843760009201919091525061277092505050565b90506103e88111158015610f6d575060045481115b610f895760405162461bcd60e51b81526004016105c3906137be565b6005556112b3565b61100584848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601881527f66696e616c697479536c617368526577617264526174696f0000000000000000602082015291506127169050565b1561109f576020811461102a5760405162461bcd60e51b81526004016105c390613cfd565b604080516020601f84018190048102820181019092528281526000916110689185858083850183828082843760009201919091525061277092505050565b9050600a811015801561107b5750606481105b6110975760405162461bcd60e51b81526004016105c3906138d4565b6006556112b3565b61111384848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601881527f656e61626c654d616c6963696f7573566f7465536c6173680000000000000000602082015291506127169050565b1561118a57602081146111385760405162461bcd60e51b81526004016105c3906137f3565b604080516020601f8401819004810282018101909252828152611174919084848083850183828082843760009201919091525061277592505050565b6007805460ff19169115159190911790556112b3565b6111fe84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601781527f6d616c6963696f7573566f7465536c61736853636f7065000000000000000000602082015291506127169050565b1561129b57602081146112235760405162461bcd60e51b81526004016105c39061362c565b604080516020601f84018190048102820181019092528281526000916112619185858083850183828082843760009201919091525061277092505050565b905061708081101580156112775750620d2f0081105b6112935760405162461bcd60e51b81526004016105c39061373c565b6008556112b3565b60405162461bcd60e51b81526004016105c390613c71565b7f6cdb0ac70ab7f2e2d035cca5be60d89906f2dede7648ddbd7402189c1eeed17a848484846040516112e894939291906135fa565b60405180910390a150505050565b6201518081565b600a81565b61100281565b33612000146113295760405162461bcd60e51b81526004016105c390613bd5565b60005460ff1661134b5760405162461bcd60e51b81526004016105c390613705565b6040517f07db600eebe2ac176be8dcebad61858c245a4961bb32ca2aa3d159b09aa0810e90600090a1505050565b3341146113985760405162461bcd60e51b81526004016105c390613c24565b60005460ff166113ba5760405162461bcd60e51b81526004016105c390613705565b60035443116113db5760405162461bcd60e51b81526004016105c390613d48565b3a156113f95760405162461bcd60e51b81526004016105c390613a0f565b60405163155853f360e21b8152611000906355614fcc9061141e9084906004016135af565b60206040518083038186803b15801561143657600080fd5b505afa15801561144a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061146e9190613322565b611477576117f3565b61147f612fe3565b506001600160a01b0381166000908152600260208181526040928390208351606081018552815481526001820154928101929092529091015460ff1615801592820192909252906114da576020810180516001019052611533565b60016040820181905260208201819052805480820182556000919091527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180546001600160a01b0319166001600160a01b0384161790555b43815260055460208201518161154557fe5b0661172157600060208201526040516335409f7f60e01b8152611000906335409f7f906115769085906004016135af565b600060405180830381600087803b15801561159057600080fd5b505af11580156115a4573d6000803e3d6000fd5b50506040516333c1892360e21b815260009250612002915063cf06248c906115d09086906004016135af565b60206040518083038186803b1580156115e857600080fd5b505afa1580156115fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116209190613218565b6001600160a01b0316146116415761163c82826020015161253f565b61171c565b61200063f7a251d7600b611654856123f5565b60006040518463ffffffff1660e01b815260040161167493929190613dfb565b600060405180830381600087803b15801561168e57600080fd5b505af192505050801561169f575060015b61171c573d8080156116cd576040519150601f19603f3d011682016040523d82523d6000602084013e6116d2565b606091505b50826001600160a01b03167fd7bc86ff5d08c8ab043edec743302aba2520e6635172a428bc956721db9e2d1c836020015183604051611712929190613d95565b60405180910390a2505b61178d565b60045481602001518161173057fe5b0661178d576040516375abf10160e11b81526110009063eb57e2029061175a9085906004016135af565b600060405180830381600087803b15801561177457600080fd5b505af1158015611788573d6000803e3d6000fd5b505050505b6001600160a01b0382166000818152600260208181526040808420865181559186015160018301558581015191909201805460ff1916911515919091179055517fddb6012116e51abf5436d956a4f0ebd927e92c576ff96d7918290c8782291e3e9190a2505b5043600355565b60005460ff1661181c5760405162461bcd60e51b81526004016105c390613705565b60075460ff1661183e5760405162461bcd60e51b81526004016105c3906136a0565b60065461184b5760146006555b60085461185a57620151806008555b60085481516040015143910111801561187e57504360085482602001516040015101115b61189a5760405162461bcd60e51b81526004016105c390613c98565b8060200151602001518160000151602001511480156118c85750806020015160600151816000015160600151145b156118e55760405162461bcd60e51b81526004016105c390613967565b8051604081015190511080156119045750602081015160408101519051105b6119205760405162461bcd60e51b81526004016105c39061389d565b6020810151518151511080156119455750806000015160400151816020015160400151105b8061197057508051516020820151511080156119705750806020015160400151816000015160400151105b8061198a5750806020015160400151816000015160400151145b6119a65760405162461bcd60e51b81526004016105c390613787565b604080820151905163ea321e4960e01b81526110009163ea321e49916119cf91906004016135e7565b60206040518083038186803b1580156119e757600080fd5b505afa1580156119fb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a1f9190613322565b611a3b5760405162461bcd60e51b81526004016105c390613a3d565b611a4d8160000151826040015161279d565b8015611a665750611a668160200151826040015161279d565b611a825760405162461bcd60e51b81526004016105c39061383e565b6060806110006001600160a01b0316633b071dcc6040518163ffffffff1660e01b815260040160006040518083038186803b158015611ac057600080fd5b505afa158015611ad4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611afc919081019061325f565b9150915060005b8151811015611c3957611b2d828281518110611b1b57fe5b60200260200101518560400151612975565b15611c31576006546040516309a99b4f60e41b815260646110028031909302049190639a99b4f090611b6590339085906004016135c3565b602060405180830381600087803b158015611b7f57600080fd5b505af1158015611b93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bb791906134cd565b506110006001600160a01b03166335409f7f858481518110611bd557fe5b60200260200101516040518263ffffffff1660e01b8152600401611bf991906135af565b600060405180830381600087803b158015611c1357600080fd5b505af1158015611c27573d6000803e3d6000fd5b5050505050611c39565b600101611b03565b506040808401519051630f5b9efd60e31b815260009161200291637adcf7e891611c65916004016135e7565b60206040518083038186803b158015611c7d57600080fd5b505afa158015611c91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cb59190613218565b6001600160a01b031614611d23576040808401519051630e9fbf5160e01b815261200291630e9fbf5191611cec91906004016135e7565b600060405180830381600087803b158015611d0657600080fd5b505af1158015611d1a573d6000803e3d6000fd5b50505050610ce2565b6000611d34846040015160006129d9565b90506120006001600160a01b031663f7a251d7600b611d5687604001516129f5565b60006040518463ffffffff1660e01b8152600401611d7693929190613dfb565b600060405180830381600087803b158015611d9057600080fd5b505af1925050508015611da1575060015b611e13573d808015611dcf576040519150601f19603f3d011682016040523d82523d6000602084013e611dd4565b606091505b50817fd58d1183100bd0932c0588f31c4205d6bc6168909765a96c41adbed3115f362882604051611e0591906135e7565b60405180910390a250611e3f565b60405181907f7b78aadacff901d8b63d0dba4f86283d4db8aef27f9ed70413dd860f1c9532b690600090a25b50505050565b601481565b61100381565b61200481565b60005460ff1615611e795760405162461bcd60e51b81526004016105c390613afc565b60056004819055600a90556000805460ff19166001179055565b60085481565b61100081565b600381565b3361100014611ec55760405162461bcd60e51b81526004016105c390613994565b60005460ff16611ee75760405162461bcd60e51b81526004016105c390613705565b600154611ef3576122eb565b600154600090600019015b8082116122bf576000805b8284101561202257611f19612fe3565b6002600060018781548110611f2a57fe5b60009182526020808320909101546001600160a01b0316835282810193909352604091820190208151606081018352815481526001820154938101939093526002015460ff16151590820152600554909150600490048160200151111561200c57600460055481611f9757fe5b04816020015103816020018181525050806002600060018881548110611fb957fe5b6000918252602080832091909101546001600160a01b0316835282810193909352604091820190208351815591830151600183015591909101516002909101805460ff1916911515919091179055612016565b6001925050612022565b50836001019350611f09565b8284116121b957612031612fe3565b600260006001868154811061204257fe5b60009182526020808320909101546001600160a01b0316835282810193909352604091820190208151606081018352815481526001820154938101939093526002015460ff16151590820152600554909150600490048160200151111561212a576004600554816120af57fe5b048160200151038160200181815250508060026000600187815481106120d157fe5b6000918252602080832091909101546001600160a01b03168352828101939093526040918201902083518155918301516001808401919091559201516002909101805460ff191691151591909117905591506121b99050565b600260006001868154811061213b57fe5b60009182526020808320909101546001600160a01b031683528201929092526040018120818155600181810192909255600201805460ff1916905580548061217f57fe5b600082815260209020810160001990810180546001600160a01b0319169055019055836121ac57506121b9565b5060001990920191612022565b8180156121c35750805b156122a25760026000600186815481106121d957fe5b60009182526020808320909101546001600160a01b031683528201929092526040018120818155600181810192909255600201805460ff1916905580548490811061222057fe5b600091825260209091200154600180546001600160a01b03909216918690811061224657fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600180548061227f57fe5b600082815260209020810160001990810180546001600160a01b03191690550190555b826122ae5750506122bf565b505060019091019060001901611efe565b6040517fcfdb3b6ccaeccbdc68be3c59c840e3b3c90f0a7c491f5fff1cf56cfda200dd9c90600090a150505b565b61100481565b606061230661230183612a30565b61230e565b90505b919050565b6060815160011480156123405750607f60f81b8260008151811061232e57fe5b01602001516001600160f81b03191611155b1561234c575080612309565b61230661235e8351608060ff16612b16565b83612be8565b60608151600014156123855750604080516000815260208101909152612309565b60608260008151811061239457fe5b602002602001015190506000600190505b83518110156123d5576123cb828583815181106123be57fe5b6020026020010151612be8565b91506001016123a5565b506123ee6123e8825160c060ff16612b16565b82612be8565b9392505050565b60408051600480825260a08201909252606091829190816020015b6060815260200190600190039081612410579050509050612439836001600160a01b0316612c65565b8160008151811061244657fe5b602002602001018190525061245a436122f3565b8160018151811061246757fe5b602090810291909101015261247d6102ca6122f3565b8160028151811061248a57fe5b602002602001018190525061249e426122f3565b816003815181106124ab57fe5b60200260200101819052506123ee81612364565b6124c7613006565b60006124d1613006565b6124d9613018565b6124ea6124e586612c88565b612cad565b90506000805b6124f983612cf7565b1561253257806125255761251461250f84612d18565b612d66565b63ffffffff1684526001915061252a565b612532565b6001016124f0565b5091935090915050915091565b6040516375cc7d8960e01b8152612002906375cc7d89906125649085906004016135af565b600060405180830381600087803b15801561257e57600080fd5b505af192505050801561258f575060015b610d1d576040516000815260443d10156125ab57506000612648565b60046000803e60005160e01c6308c379a081146125cc576000915050612648565b60043d036004833e81513d602482011167ffffffffffffffff821117156125f857600092505050612648565b808301805167ffffffffffffffff81111561261a576000945050505050612648565b8060208301013d860181111561263857600095505050505050612648565b601f01601f191660405250925050505b80612653575061269c565b826001600160a01b03167fd7bc86ff5d08c8ab043edec743302aba2520e6635172a428bc956721db9e2d1c838360405161268e929190613d95565b60405180910390a250612711565b3d8080156126c6576040519150601f19603f3d011682016040523d82523d6000602084013e6126cb565b606091505b50826001600160a01b03167fd7bc86ff5d08c8ab043edec743302aba2520e6635172a428bc956721db9e2d1c8383604051612707929190613d95565b60405180910390a2505b610d1d565b6000816040516020016127299190613593565b60405160208183030381529060405280519060200120836040516020016127509190613593565b604051602081830303815290604052805190602001201490505b92915050565b015190565b8082015160009060ff81161561278f576001915081612795565b60009150815b505092915050565b60408051600480825260a0820190925260009160609190816020015b60608152602001906001900390816127b95750506040805160208082528183019092529192506060919080820181803683370190505090506127fe85600001516122f3565b8260008151811061280b57fe5b60200260200101819052506128266020866020015183612de8565b61282f8161230e565b8260018151811061283c57fe5b602002602001018190525061285485604001516122f3565b8260028151811061286157fe5b602002602001018190525061287c6020866060015183612de8565b6128858161230e565b8260038151811061289257fe5b60200260200101819052506128b860206128ab84612364565b8051906020012083612de8565b6040805160b080825260e082019092526060916020820181803683370190505090506128e8818360006020612df8565b6128fa81876080015160206060612df8565b612908818660806030612df8565b604080516001808252818301909252606091602082018180368337019050509050815160016020830182602086016066600019fa61294557600080fd5b506001612953826000612e4b565b60ff161461296857600094505050505061276a565b5060019695505050505050565b81518151600091600191811480831461299157600092506129cf565b600160208701838101602088015b6002848385100114156129ca5780518351146129be5760009650600093505b6020928301920161299f565b505050505b5090949350505050565b600081602001835110156129ec57600080fd5b50016020015190565b60408051600480825260a08201909252606091829190816020015b6060815260200190600190039081612a105790505090506124398361230e565b604080516020808252818301909252606091829190602082018180368337505050602081018490529050600067ffffffffffffffff198416612a7457506018612a98565b6fffffffffffffffffffffffffffffffff198416612a9457506010612a98565b5060005b6020811015612ace57818181518110612aad57fe5b01602001516001600160f81b03191615612ac657612ace565b600101612a98565b60008160200390506060816040519080825280601f01601f191660200182016040528015612b03576020820181803683370190505b5080830196909652508452509192915050565b6060680100000000000000008310612b405760405162461bcd60e51b81526004016105c390613875565b60408051600180825281830190925260609160208201818036833701905050905060378411612b9a5782840160f81b81600081518110612b7c57fe5b60200101906001600160f81b031916908160001a905350905061276a565b6060612ba585612a30565b90508381510160370160f81b82600081518110612bbe57fe5b60200101906001600160f81b031916908160001a905350612bdf8282612be8565b95945050505050565b6060806040519050835180825260208201818101602087015b81831015612c19578051835260209283019201612c01565b50855184518101855292509050808201602086015b81831015612c46578051835260209283019201612c2e565b508651929092011591909101601f01601f191660405250905092915050565b60408051600560a21b83186014820152603481019091526060906123ee8161230e565b612c90613038565b506040805180820190915281518152602082810190820152919050565b612cb5613018565b612cbe82612e67565b612cc757600080fd5b6000612cd68360200151612ea1565b60208085015160408051808201909152868152920190820152915050919050565b6000612d01613038565b505080518051602091820151919092015191011190565b612d20613038565b612d2982612cf7565b612d3257600080fd5b60208201516000612d4282612f04565b80830160209586015260408051808201909152908152938401919091525090919050565b805160009015801590612d7b57508151602110155b612d8457600080fd5b6000612d938360200151612ea1565b90508083600001511015612db95760405162461bcd60e51b81526004016105c390613b59565b825160208085015183018051928490039291831015612ddf57826020036101000a820491505b50949350505050565b9091018181526020918201910152565b60005b81811015610b9d57838181518110612e0f57fe5b602001015160f81c60f81b858480600101955081518110612e2c57fe5b60200101906001600160f81b031916908160001a905350600101612dfb565b60008160010183511015612e5e57600080fd5b50016001015190565b8051600090612e7857506000612309565b6020820151805160001a9060c0821015612e9757600092505050612309565b5060019392505050565b8051600090811a6080811015612ebb576000915050612309565b60b8811080612ed6575060c08110801590612ed6575060f881105b15612ee5576001915050612309565b60c0811015612ef95760b519019050612309565b60f519019050612309565b80516000908190811a6080811015612f1f5760019150612fdc565b60b8811015612f3457607e1981019150612fdc565b60c0811015612f8557600060b78203600186019550806020036101000a865104915060018101820193505080831015612f7f5760405162461bcd60e51b81526004016105c3906139e4565b50612fdc565b60f8811015612f9a5760be1981019150612fdc565b600060f78203600186019550806020036101000a8651049150600181018201935050808310156127955760405162461bcd60e51b81526004016105c3906139e4565b5092915050565b604051806060016040528060008152602001600081526020016000151581525090565b60408051602081019091526000815290565b604051806040016040528061302b613038565b8152602001600081525090565b604051806040016040528060008152602001600081525090565b600082601f830112613062578081fd5b815161307561307082613e4e565b613e27565b818152915060208083019084810160005b848110156130eb578151870188603f8201126130a157600080fd5b838101516130b161307082613e6e565b81815260408b818486010111156130c757600080fd5b6130d683888401838701613e92565b50865250509282019290820190600101613086565b505050505092915050565b60008083601f840112613107578182fd5b50813567ffffffffffffffff81111561311e578182fd5b60208301915083602082850101111561313657600080fd5b9250929050565b600082601f83011261314d578081fd5b813561315b61307082613e6e565b915080825283602082850101111561317257600080fd5b8060208401602084013760009082016020015292915050565b600060a0828403121561319c578081fd5b6131a660a0613e27565b905081358152602082013560208201526040820135604082015260608201356060820152608082013567ffffffffffffffff8111156131e457600080fd5b6131f08482850161313d565b60808301525092915050565b60006020828403121561320d578081fd5b81356123ee81613ebe565b600060208284031215613229578081fd5b81516123ee81613ebe565b60008060408385031215613246578081fd5b823561325181613ebe565b946020939093013593505050565b60008060408385031215613271578182fd5b825167ffffffffffffffff80821115613288578384fd5b81850186601f820112613299578485fd5b805192506132a961307084613e4e565b80848252602080830192508084018a8283890287010111156132c9578889fd5b8894505b868510156132f45780516132e081613ebe565b8452600194909401939281019281016132cd565b50880151909650935050508082111561330b578283fd5b5061331885828601613052565b9150509250929050565b600060208284031215613333578081fd5b815180151581146123ee578182fd5b60008060408385031215613354578182fd5b823567ffffffffffffffff8082111561336b578384fd5b6133778683870161313d565b9350602085013591508082111561338c578283fd5b506133188582860161313d565b600080600080604085870312156133ae578182fd5b843567ffffffffffffffff808211156133c5578384fd5b6133d1888389016130f6565b909650945060208701359150808211156133e9578384fd5b506133f6878288016130f6565b95989497509550505050565b600060208284031215613413578081fd5b813567ffffffffffffffff8082111561342a578283fd5b8184016060818703121561343c578384fd5b6134466060613e27565b9250803582811115613456578485fd5b6134628782840161318b565b845250602081013582811115613476578485fd5b6134828782840161318b565b602085015250604081013582811115613499578485fd5b6134a58782840161313d565b6040850152509195945050505050565b6000602082840312156134c6578081fd5b5035919050565b6000602082840312156134de578081fd5b5051919050565b6000806000604084860312156134f9578081fd5b833560ff81168114613509578182fd5b9250602084013567ffffffffffffffff811115613524578182fd5b613530868287016130f6565b9497909650939450505050565b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b6000815180845261357f816020860160208601613e92565b601f01601f19169290920160200192915050565b600082516135a5818460208701613e92565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b901515815260200190565b6000602082526123ee6020830184613567565b60006040825261360e60408301868861353d565b828103602084015261362181858761353d565b979650505050505050565b6020808252602a908201527f6c656e677468206f66206d616c6963696f7573566f7465536c61736853636f706040820152690ca40dad2e6dac2e8c6d60b31b606082015260800190565b60208082526010908201526f195d9a59195b98d9481d1bdbc81bdb1960821b604082015260600190565b6020808252818101527f6d616c6963696f757320766f746520736c617368206e6f7420656e61626c6564604082015260600190565b6020808252601690820152751d985b1a59185d1bdc881b9bdd081b5a59dc985d195960521b604082015260600190565b60208082526019908201527f74686520636f6e7472616374206e6f7420696e69742079657400000000000000604082015260600190565b6020808252602b908201527f746865206d616c6963696f757320766f746520736c6173682073636f7065206f60408201526a7574206f662072616e676560a81b606082015260800190565b6020808252601a908201527f6e6f2076696f6c6174696f6e206f6620766f74652072756c6573000000000000604082015260600190565b6020808252818101527f7468652066656c6f6e795468726573686f6c64206f7574206f662072616e6765604082015260600190565b6020808252602b908201527f6c656e677468206f6620656e61626c654d616c6963696f7573566f7465536c6160408201526a0e6d040dad2e6dac2e8c6d60ab1b606082015260800190565b60208082526017908201527f766572696679207369676e6174757265206661696c6564000000000000000000604082015260600190565b6020808252600e908201526d696e70757420746f6f206c6f6e6760901b604082015260600190565b60208082526019908201527f7372634e756d20626967676572207468616e207461724e756d00000000000000604082015260600190565b6020808252602c908201527f7468652066696e616c69747920736c6173682072657761726420726174696f2060408201526b6f7574206f662072616e676560a01b606082015260800190565b60208082526027908201527f6c656e677468206f66206d697364656d65616e6f725468726573686f6c64206d6040820152660d2e6dac2e8c6d60cb1b606082015260800190565b60208082526013908201527274776f206964656e746963616c20766f74657360681b604082015260600190565b60208082526030908201527f746865206d6573736167652073656e646572206d7573742062652076616c696460408201526f185d1bdc94d95d0818dbdb9d1c9858dd60821b606082015260800190565b6020808252601190820152706164646974696f6e206f766572666c6f7760781b604082015260600190565b6020808252601490820152736761737072696365206973206e6f74207a65726f60601b604082015260600190565b6020808252601590820152741d9bdd195059191c881a5cc81b9bdd08199bdd5b99605a1b604082015260600190565b6020808252602e908201527f746865206d6573736167652073656e646572206d75737420626520676f76657260408201526d1b985b98d94818dbdb9d1c9858dd60921b606082015260800190565b60208082526022908201527f6c656e677468206f662066656c6f6e795468726573686f6c64206d69736d61746040820152610c6d60f31b606082015260800190565b60208082526019908201527f74686520636f6e747261637420616c726561647920696e697400000000000000604082015260600190565b6020808252600c908201526b32b6b83a3c903432b0b232b960a11b604082015260600190565b6020808252601a908201527f6c656e677468206973206c657373207468616e206f6666736574000000000000604082015260600190565b60208082526025908201527f746865206d697364656d65616e6f725468726573686f6c64206f7574206f662060408201526472616e676560d81b606082015260800190565b6020808252602f908201527f746865206d6573736167652073656e646572206d7573742062652063726f737360408201526e0818da185a5b8818dbdb9d1c9858dd608a1b606082015260800190565b6020808252602d908201527f746865206d6573736167652073656e646572206d75737420626520746865206260408201526c3637b1b590383937b23ab1b2b960991b606082015260800190565b6020808252600d908201526c756e6b6e6f776e20706172616d60981b604082015260600190565b6020808252601490820152731d185c99d95d08189b1bd8dac81d1bdbc81bdb1960621b604082015260600190565b6020808252601e908201527f7265636569766520756e65787065637465642073796e207061636b6167650000604082015260600190565b6020808252602b908201527f6c656e677468206f662066696e616c697479536c61736852657761726452617460408201526a0d2de40dad2e6dac2e8c6d60ab1b606082015260800190565b6020808252818101527f63616e206e6f7420736c61736820747769636520696e206f6e6520626c6f636b604082015260600190565b61ffff91909116815260200190565b90815260200190565b600083825260406020830152613dae6040830184613567565b949350505050565b918252602082015260400190565b92835260208301919091521515604082015260600190565b63ffffffff91909116815260200190565b60ff91909116815260200190565b600060ff8516825260606020830152613e176060830185613567565b9050826040830152949350505050565b60405181810167ffffffffffffffff81118282101715613e4657600080fd5b604052919050565b600067ffffffffffffffff821115613e64578081fd5b5060209081020190565b600067ffffffffffffffff821115613e84578081fd5b50601f01601f191660200190565b60005b83811015613ead578181015183820152602001613e95565b83811115611e3f5750506000910152565b6001600160a01b0381168114613ed357600080fd5b5056fea164736f6c6343000604000a", }, { ContractAddr: common.HexToAddress(StakingContract), CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/cfc0bd1127186a917ddc38fd38d22903034d3f0b", - Code: "6080604052600436106103a65760003560e01c8063718a8aa8116101e7578063b88a802f1161010d578063dc927faf116100a0578063f9a2bbc71161006f578063f9a2bbc714610ca0578063fa03f79714610cb5578063fc3e590814610692578063fd6a687914610cca576103ad565b8063dc927faf14610c1c578063df8079e914610c31578063edc1a5b014610c46578063f45fd80b14610c5b576103ad565b8063c81b1662116100dc578063c81b166214610b47578063c8509d8114610b5c578063d61b9b9314610be1578063d7ecfcb61461083a576103ad565b8063b88a802f14610acd578063baaafd3b14610ae2578063bf8546ca14610af7578063c2117d8214610b32576103ad565b80639dc0926211610185578063aad5606311610154578063aad56063146109c3578063ab51bb96146109d8578063ac431751146109ed578063b14315df14610ab8576103ad565b80639dc092621461095b578063a1a11bf514610970578063a78abc1614610985578063aa82dce1146109ae576103ad565b80637942fd05116101c15780637942fd05146108ac578063831d65d1146108c157806392b888a41461063e57806396713da914610946576103ad565b8063718a8aa81461084f57806375aca5931461086457806375d47a0a14610897576103ad565b8063413d9c3a116102cc5780635d17c8bd1161026a5780636bd8f804116102395780636bd8f804146107bc5780636e47b482146107f25780636fb7f7eb1461080757806370fd5bad1461083a576103ad565b80635d17c8bd146107685780635d499b1b1461077d57806362b171d21461079257806369b635b6146107a7576103ad565b80634bf6c882116102a65780634bf6c882146106fd5780634d99dd161461071257806351e806721461073e578063552aaf9314610753576103ad565b8063413d9c3a146106a757806343756e5c146106bc578063493279b1146106d1576103ad565b806311fe9ec611610344578063333ad3e711610313578063333ad3e71461066857806334c433541461067d5780633dffc3871461063e5780633fdfa7e414610692576103ad565b806311fe9ec6146105e0578063151817e31461061357806317c9efb01461063e5780632fdeb11114610653576103ad565b80630bee7a67116103805780630bee7a67146104725780630c795715146104a05780630e2374a5146104b55780631182b875146104e6576103ad565b8063026e402b146103b257806302985992146103e0578063047636d114610407576103ad565b366103ad57005b600080fd5b6103de600480360360408110156103c857600080fd5b506001600160a01b038135169060200135610cdf565b005b3480156103ec57600080fd5b506103f5610d1c565b60408051918252519081900360200190f35b34801561041357600080fd5b5061043a6004803603602081101561042a57600080fd5b50356001600160a01b0316610d22565b6040518082606080838360005b8381101561045f578181015183820152602001610447565b5050505090500191505060405180910390f35b34801561047e57600080fd5b50610487610d76565b6040805163ffffffff9092168252519081900360200190f35b3480156104ac57600080fd5b506103f5610d7b565b3480156104c157600080fd5b506104ca610d81565b604080516001600160a01b039092168252519081900360200190f35b3480156104f257600080fd5b5061056b6004803603604081101561050957600080fd5b60ff8235169190810190604081016020820135600160201b81111561052d57600080fd5b82018360208201111561053f57600080fd5b803590602001918460018302840111600160201b8311171561056057600080fd5b509092509050610d87565b6040805160208082528351818301528351919283929083019185019080838360005b838110156105a557818101518382015260200161058d565b50505050905090810190601f1680156105d25780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156105ec57600080fd5b506103f56004803603602081101561060357600080fd5b50356001600160a01b0316610f43565b34801561061f57600080fd5b50610628610f5e565b6040805160ff9092168252519081900360200190f35b34801561064a57600080fd5b50610628610f63565b34801561065f57600080fd5b506103f5610f68565b34801561067457600080fd5b50610487610f6e565b34801561068957600080fd5b506103f5610f73565b34801561069e57600080fd5b50610628610f7e565b3480156106b357600080fd5b506103f5610f83565b3480156106c857600080fd5b506104ca610f8a565b3480156106dd57600080fd5b506106e6610f90565b6040805161ffff9092168252519081900360200190f35b34801561070957600080fd5b50610628610f95565b6103de6004803603604081101561072857600080fd5b506001600160a01b038135169060200135610f9a565b34801561074a57600080fd5b506104ca6115c7565b34801561075f57600080fd5b506106286115cd565b34801561077457600080fd5b506103f56115d2565b34801561078957600080fd5b506103f56115d8565b34801561079e57600080fd5b506103f56115e1565b3480156107b357600080fd5b506103f5611781565b6103de600480360360608110156107d257600080fd5b506001600160a01b03813581169160208101359091169060400135610cdf565b3480156107fe57600080fd5b506104ca611787565b34801561081357600080fd5b506103f56004803603602081101561082a57600080fd5b50356001600160a01b031661178d565b34801561084657600080fd5b506106286117a8565b34801561085b57600080fd5b506106286117ad565b34801561087057600080fd5b506103f56004803603602081101561088757600080fd5b50356001600160a01b03166117b2565b3480156108a357600080fd5b506104ca6117cd565b3480156108b857600080fd5b506106286117d3565b3480156108cd57600080fd5b506103de600480360360408110156108e457600080fd5b60ff8235169190810190604081016020820135600160201b81111561090857600080fd5b82018360208201111561091a57600080fd5b803590602001918460018302840111600160201b8311171561093b57600080fd5b5090925090506117d8565b34801561095257600080fd5b50610628611aa0565b34801561096757600080fd5b506104ca611aa5565b34801561097c57600080fd5b506104ca611aab565b34801561099157600080fd5b5061099a611ab1565b604080519115158252519081900360200190f35b3480156109ba57600080fd5b506104ca611aba565b3480156109cf57600080fd5b506104ca611ac0565b3480156109e457600080fd5b506104876115cd565b3480156109f957600080fd5b506103de60048036036040811015610a1057600080fd5b810190602081018135600160201b811115610a2a57600080fd5b820183602082011115610a3c57600080fd5b803590602001918460018302840111600160201b83111715610a5d57600080fd5b919390929091602081019035600160201b811115610a7a57600080fd5b820183602082011115610a8c57600080fd5b803590602001918460018302840111600160201b83111715610aad57600080fd5b509092509050611ac6565b348015610ac457600080fd5b50610628612258565b348015610ad957600080fd5b506103f561225d565b348015610aee57600080fd5b506103f56123fa565b348015610b0357600080fd5b506103f560048036036040811015610b1a57600080fd5b506001600160a01b0381358116916020013516612405565b348015610b3e57600080fd5b506103f5612432565b348015610b5357600080fd5b506104ca612438565b348015610b6857600080fd5b506103de60048036036040811015610b7f57600080fd5b60ff8235169190810190604081016020820135600160201b811115610ba357600080fd5b820183602082011115610bb557600080fd5b803590602001918460018302840111600160201b83111715610bd657600080fd5b50909250905061243e565b348015610bed57600080fd5b506103f560048036036040811015610c0457600080fd5b506001600160a01b0381358116916020013516612661565b348015610c2857600080fd5b506104ca61268c565b348015610c3d57600080fd5b506104ca612692565b348015610c5257600080fd5b506103f5612698565b348015610c6757600080fd5b506103f560048036036060811015610c7e57600080fd5b506001600160a01b0381358116916020810135821691604090910135166126a5565b348015610cac57600080fd5b506104ca6126da565b348015610cc157600080fd5b506103f56126e0565b348015610cd657600080fd5b506104ca6126e6565b6040805162461bcd60e51b815260206004820152600d60248201526c1b9bdd081cdd5c1c1bdc9d1959609a1b604482015290519081900360640190fd5b60035481565b610d2a614621565b610d32614621565b6001600160a01b0383166000818152600b60209081526040808320548552838352600c82528083205485830152928252600d9052819020549082015290505b919050565b606481565b6108fc81565b61200181565b60603361200014610dc95760405162461bcd60e51b815260040180806020018281038252602f815260200180614804602f913960400191505060405180910390fd5b60005460ff16610e0c576638d7ea4c6800006001908155662386f26fc1000060025568056bc75e2d631000006003556108fc6011556000805460ff191690911790555b610e1461463f565b610e5b610e5685858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506126ec92505050565b612711565b90506000610e70610e6b8361275b565b6127a9565b90506000606060ff831660041415610e9557610e8b84612860565b9092509050610eec565b60ff831660051415610eaa57610e8b84612a40565b6040805162461bcd60e51b8152602060048201526012602482015271756e6b6e6f776e206576656e74207479706560701b604482015290519081900360640190fd5b63ffffffff821615610f38576040805163ffffffff84168152905160ff8516917f391d6e5ea6ab6c49b9a0abb1782cae5def8d711f973b00c729658c0b2a80b31b919081900360200190a25b979650505050505050565b6001600160a01b031660009081526006602052604090205490565b600581565b600181565b60015481565b606581565b662386f26fc1000081565b600381565b620a8c0081565b61100181565b603881565b600881565b60105460ff1660021415610fe6576040805162461bcd60e51b815260206004820152600e60248201526d4e6f2072652d656e7472616e637960901b604482015290519081900360640190fd5b6010805460ff19166002179055806402540be400340615801561100e57506402540be4008106155b61105f576040805162461bcd60e51b815260206004820152601c60248201527f707265636973696f6e206c6f737320696e20636f6e76657273696f6e00000000604482015290519081900360640190fd5b60005460ff166110a2576638d7ea4c6800006001908155662386f26fc1000060025568056bc75e2d631000006003556108fc6011556000805460ff191690911790555b6001543410156110f0576040805162461bcd60e51b81526020600482015260146024820152736e6f7420656e6f7567682072656c61792066656560601b604482015290519081900360640190fd5b6003548210156111ab573360009081526005602090815260408083206001600160a01b03871684529091529020548214611162576040805162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a5908185b5bdd5b9d60921b604482015290519081900360640190fd5b60025482116111ab576040805162461bcd60e51b815260206004820152601060248201526f6e6f7420656e6f7567682066756e647360801b604482015290519081900360640190fd5b3360009081526007602090815260408083206001600160a01b0387168452909152902054421015611223576040805162461bcd60e51b815260206004820152601a60248201527f70656e64696e6720756e64656c65676174696f6e206578697374000000000000604482015290519081900360640190fd5b604080518082018252601081526f6e6f7420656e6f7567682066756e647360801b602080830191909152336000908152600582528381206001600160a01b03881682529091529182205461127e91859063ffffffff612c5c16565b905080156112c65760025481116112c65760405162461bcd60e51b81526004018080602001828103825260258152602001806147df6025913960400191505060405180910390fd5b60006112dd846402540be40063ffffffff612cf316565b60025490915034906000906112f990839063ffffffff612d3c16565b6040805160038082526080820190925291925060609190816020015b606081526020019060019003908161131557905050905061133533612d7e565b8160008151811061134257fe5b602002602001018190525061135f886001600160a01b0316612d7e565b8160018151811061136c57fe5b602002602001018190525061138084612da1565b8160028151811061138d57fe5b602002602001018190525060606113ad60026113a884612db4565b612e3e565b8051602080830191909120600f80546000908152600a845260408082209390935581546001908101909255338152600c90935291208054909101905590506113fe42620a8c0063ffffffff612ec416565b3360009081526007602090815260408083206001600160a01b038e16845290915290205561200063f7a251d7601083611442876402540be40063ffffffff612cf316565b6040518463ffffffff1660e01b8152600401808460ff1660ff16815260200180602001838152602001828103825284818151815260200191508051906020019080838360005b838110156114a0578181015183820152602001611488565b50505050905090810190601f1680156114cd5780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b1580156114ee57600080fd5b505af1158015611502573d6000803e3d6000fd5b5050604051611004925085156108fc02915085906000818181858888f19350505050158015611535573d6000803e3d6000fd5b506002546040516110029180156108fc02916000818181858888f19350505050158015611566573d6000803e3d6000fd5b50604080518981526020810185905281516001600160a01b038c169233927fdf0b6ac27f3f3bb31cee3dab0f4fe40cc19c6a3f8daaec52e06b261e58a12519929081900390910190a350506010805460ff1916600117905550505050505050565b61200081565b600081565b60025481565b6402540be40081565b60105460009060ff1660021415611630576040805162461bcd60e51b815260206004820152600e60248201526d4e6f2072652d656e7472616e637960901b604482015290519081900360640190fd5b506010805460ff191660021790553360009081526008602052604090205480611697576040805162461bcd60e51b81526020600482015260146024820152736e6f20756e64656c6567617465642066756e647360601b604482015290519081900360640190fd5b336000818152600860205260408082208290556011549051919291849084818181858888f193505050503d80600081146116ed576040519150601f19603f3d011682016040523d82523d6000602084013e6116f2565b606091505b505090508061173a576040805162461bcd60e51b815260206004820152600f60248201526e1d1c985b9cd9995c8819985a5b1959608a1b604482015290519081900360640190fd5b60408051838152905133917fc712d133b8d448221aaed2198ed1f0db6dfc860fb01bc3a630916fe6cbef946f919081900360200190a2506010805460ff1916600117905590565b60035490565b61100581565b6001600160a01b031660009081526004602052604090205490565b600281565b601081565b6001600160a01b031660009081526008602052604090205490565b61100881565b600b81565b33612000146118185760405162461bcd60e51b815260040180806020018281038252602f815260200180614804602f913960400191505060405180910390fd5b60005460ff1661185b576638d7ea4c6800006001908155662386f26fc1000060025568056bc75e2d631000006003556108fc6011556000805460ff191690911790555b61186361463f565b6118a5610e5684848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506126ec92505050565b905060008060606000805b6118b986612f1e565b1561192457806118d6576118cf610e6b8761275b565b945061191c565b80600114156118f2576118eb610e6b8761275b565b935061191c565b80600214156119175761190c6119078761275b565b612f3f565b92506001915061191c565b611924565b6001016118b0565b8161196a576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b61197383612faf565b6119b6576040805162461bcd60e51b815260206004820152600f60248201526e0eee4dedcce40e0c2c6d640d0c2e6d608b1b604482015290519081900360640190fd5b6119c2610e56846126ec565b955060006119d2610e6b8861275b565b90506119dc61463f565b6119e588612f1e565b15611a0857611a01610e566119fc6119078b61275b565b6126ec565b9050611a49565b6040805162461bcd60e51b8152602060048201526011602482015270656d7074792061636b207061636b61676560781b604482015290519081900360640190fd5b60ff821660011415611a6557611a60818888613003565b611a93565b60ff821660021415611a7c57611a608188886133ba565b60ff821660031415610eaa57611a60818888613687565b5050505050505050505050565b600981565b61100781565b61100681565b60005460ff1681565b61200281565b61300081565b60005460ff16611b1d576040805162461bcd60e51b815260206004820152601960248201527f74686520636f6e7472616374206e6f7420696e69742079657400000000000000604482015290519081900360640190fd5b3361100714611b5d5760405162461bcd60e51b815260040180806020018281038252602e815260200180614755602e913960400191505060405180910390fd5b611bbe84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600a81526972656c6179657246656560b01b602082015291506139ec9050565b15611d245760208114611c18576040805162461bcd60e51b815260206004820152601d60248201527f6c656e677468206f662072656c61796572466565206d69736d61746368000000604482015290519081900360640190fd5b604080516020601f8401819004810282018101909252828152600091611c5691858580838501838280828437600092019190915250613ad392505050565b90506003548110611c985760405162461bcd60e51b815260040180806020018281038252602e815260200180614783602e913960400191505060405180910390fd5b6002548111611cd85760405162461bcd60e51b815260040180806020018281038252602e8152602001806147b1602e913960400191505060405180910390fd5b6402540be400810615611d1c5760405162461bcd60e51b815260040180806020018281038252602c815260200180614729602c913960400191505060405180910390fd5b6001556121c6565b611d8884848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600d81526c62534352656c6179657246656560981b602082015291506139ec9050565b15611eea5760208114611de2576040805162461bcd60e51b815260206004820181905260248201527f6c656e677468206f662062534352656c61796572466565206d69736d61746368604482015290519081900360640190fd5b604080516020601f8401819004810282018101909252828152600091611e2091858580838501838280828437600092019190915250613ad392505050565b905080611e5e5760405162461bcd60e51b81526004018080602001828103825260228152602001806148336022913960400191505060405180910390fd5b6001548110611e9e5760405162461bcd60e51b815260040180806020018281038252602e8152602001806146a9602e913960400191505060405180910390fd5b6402540be400810615611ee25760405162461bcd60e51b815260040180806020018281038252602f81526020018061467a602f913960400191505060405180910390fd5b6002556121c6565b611f4e84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600d81526c36b4b72232b632b3b0ba34b7b760991b602082015291506139ec9050565b156120305760208114611fa8576040805162461bcd60e51b815260206004820181905260248201527f6c656e677468206f66206d696e44656c65676174696f6e206d69736d61746368604482015290519081900360640190fd5b604080516020601f8401819004810282018101909252828152600091611fe691858580838501838280828437600092019190915250613ad392505050565b905060015481116120285760405162461bcd60e51b81526004018080602001828103825260318152602001806146d76031913960400191505060405180910390fd5b6003556121c6565b61209284848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600b81526a7472616e7366657247617360a81b602082015291506139ec9050565b1561218957602081146120ec576040805162461bcd60e51b815260206004820152601e60248201527f6c656e677468206f66207472616e73666572476173206d69736d617463680000604482015290519081900360640190fd5b604080516020601f840181900481028201810190925282815260009161212a91858580838501838280828437600092019190915250613ad392505050565b905060008111612181576040805162461bcd60e51b815260206004820152601e60248201527f746865207472616e736665724761732063616e6e6f74206265207a65726f0000604482015290519081900360640190fd5b6011556121c6565b6040805162461bcd60e51b815260206004820152600d60248201526c756e6b6e6f776e20706172616d60981b604482015290519081900360640190fd5b7f6cdb0ac70ab7f2e2d035cca5be60d89906f2dede7648ddbd7402189c1eeed17a848484846040518080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600083820152604051601f909101601f19169092018290039850909650505050505050a150505050565b600481565b60105460009060ff16600214156122ac576040805162461bcd60e51b815260206004820152600e60248201526d4e6f2072652d656e7472616e637960901b604482015290519081900360640190fd5b506010805460ff191660021790553360009081526006602052604090205480612310576040805162461bcd60e51b81526020600482015260116024820152701b9bc81c195b991a5b99c81c995dd85c99607a1b604482015290519081900360640190fd5b336000818152600660205260408082208290556011549051919291849084818181858888f193505050503d8060008114612366576040519150601f19603f3d011682016040523d82523d6000602084013e61236b565b606091505b50509050806123b3576040805162461bcd60e51b815260206004820152600f60248201526e1d1c985b9cd9995c8819985a5b1959608a1b604482015290519081900360640190fd5b60408051838152905133917f83b78188b13346b2ffb484da70d42ee27de7fbf9f2bd8045269e10ed643ccd76919081900360200190a2506010805460ff1916600117905590565b6638d7ea4c68000081565b6001600160a01b038083166000908152600760209081526040808320938516835292905220545b92915050565b60015490565b61100281565b336120001461247e5760405162461bcd60e51b815260040180806020018281038252602f815260200180614804602f913960400191505060405180910390fd5b60005460ff166124c1576638d7ea4c6800006001908155662386f26fc1000060025568056bc75e2d631000006003556108fc6011556000805460ff191690911790555b61250082828080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612faf92505050565b612543576040805162461bcd60e51b815260206004820152600f60248201526e0eee4dedcce40e0c2c6d640d0c2e6d608b1b604482015290519081900360640190fd5b61254b61463f565b61258d610e5684848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506126ec92505050565b9050600061259d610e6b8361275b565b90506125a761463f565b6125b083612f1e565b156125ce576125c7610e566119fc6119078661275b565b9050612614565b6040805162461bcd60e51b8152602060048201526016602482015275656d707479206661696c2061636b207061636b61676560501b604482015290519081900360640190fd5b60ff82166001141561262e5761262981613ad8565b612658565b60ff8216600214156126435761262981613cf2565b60ff821660031415610eaa5761262981613e1c565b5050505b505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b61100381565b61200481565b68056bc75e2d6310000081565b6001600160a01b0392831660009081526009602090815260408083209486168352938152838220929094168152925290205490565b61100081565b60115481565b61100481565b6126f461465f565b506040805180820190915281518152602082810190820152919050565b61271961463f565b61272282613f81565b61272b57600080fd5b600061273a8360200151613fbb565b60208085015160408051808201909152868152920190820152915050919050565b61276361465f565b61276c82612f1e565b61277557600080fd5b602082015160006127858261401e565b80830160209586015260408051808201909152908152938401919091525090919050565b8051600090158015906127be57508151602110155b6127c757600080fd5b60006127d68360200151613fbb565b90508083600001511015612831576040805162461bcd60e51b815260206004820152601a60248201527f6c656e677468206973206c657373207468616e206f6666736574000000000000604482015290519081900360640190fd5b82516020808501518301805192849003929183101561285757826020036101000a820491505b50949350505050565b600060606000806000805b61287487612f1e565b156128c657826128965761288f61288a8861275b565b614151565b91506128bb565b82600114156128b6576128ab610e6b8861275b565b9050600193506128bb565b6128c6565b82600101925061286b565b8361290c576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b60006110046001600160a01b031663727be1f8836040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b15801561295657600080fd5b505af115801561296a573d6000803e3d6000fd5b505050506040513d602081101561298057600080fd5b50519050806129a55761299760048484606561416b565b965096505050505050612a3b565b6001600160a01b0383166000908152600660205260409020546129ce908363ffffffff612ec416565b6001600160a01b038416600081815260066020908152604091829020939093558051858152905191927f7cc266c7b444f808013fa187f7b904d470a051a6564e78f482aa496581ba4bf892918290030190a260408051600080825260208201909252909750955050505050505b915091565b6000606060008060008060005b612a5688612f1e565b15612abf5783612a7357612a6c61288a8961275b565b9250612ab4565b8360011415612a8f57612a8861288a8961275b565b9150612ab4565b8360021415612aaf57612aa4610e6b8961275b565b905060019450612ab4565b612abf565b836001019350612a4d565b84612b05576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b60006110046001600160a01b031663727be1f8836040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b158015612b4f57600080fd5b505af1158015612b63573d6000803e3d6000fd5b505050506040513d6020811015612b7957600080fd5b5051905080612b9f57612b9060058584606561416b565b97509750505050505050612a3b565b6001600160a01b038085166000818152600760209081526040808320948816835293815283822082905591815260089091522054612be3908363ffffffff612ec416565b6001600160a01b0380861660008181526008602090815260409182902094909455805186815290519287169391927f35a799836f74fac7eccf5c73902823b970543d2274d3b93d8da3d37a255772a2929181900390910190a3604080516000808252602082019092529098509650505050505050915091565b60008184841115612ceb5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612cb0578181015183820152602001612c98565b50505050905090810190601f168015612cdd5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000612d3583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614267565b9392505050565b6000612d3583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612c5c565b60408051600560a21b8318601482015260348101909152606090612d35816142cc565b606061242c612daf83614322565b6142cc565b6060815160001415612dd55750604080516000815260208101909152610d71565b606082600081518110612de457fe5b602002602001015190506000600190505b8351811015612e2557612e1b82858381518110612e0e57fe5b6020026020010151614408565b9150600101612df5565b50612d35612e38825160c060ff16614485565b82614408565b6040805160028082526060828101909352829190816020015b6060815260200190600190039081612e57579050509050612e7a8460ff16612da1565b81600081518110612e8757fe5b6020026020010181905250612e9b836142cc565b81600181518110612ea857fe5b6020026020010181905250612ebc81612db4565b949350505050565b600082820183811015612d35576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000612f2861465f565b505080518051602091820151919092015191011190565b8051606090612f4d57600080fd5b6000612f5c8360200151613fbb565b83516040805191839003808352601f19601f8201168301602001909152919250606090828015612f93576020820181803683370190505b509050600081602001905061285784876020015101828561457d565b8051602080830191909120600e546000908152600a9092526040822054808214612fde57600092505050610d71565b5050600e80546000908152600a60205260408120558054600190810190915592915050565b60008060008060005b61301588612f1e565b1561307e57836130325761302b61288a8961275b565b9250613073565b836001141561304e5761304761288a8961275b565b9150613073565b836002141561306e57613063610e6b8961275b565b905060019450613073565b61307e565b83600101935061300c565b846130c4576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b60006130db826402540be40063ffffffff6145c816565b6001600160a01b0385166000908152600b602052604090208054600019019055905060ff8816600114156132215760ff87161561314e576040805162461bcd60e51b815260206004820152600c60248201526b77726f6e672073746174757360a01b604482015290519081900360640190fd5b6001600160a01b038416600090815260046020526040902054613177908263ffffffff612ec416565b6001600160a01b038086166000908152600460209081526040808320949094556005815283822092871682529190915220546131b9908263ffffffff612ec416565b6001600160a01b038086166000818152600560209081526040808320948916808452948252918290209490945580518581529051929391927f9a57c81564ab02642f34fd87e41baa9b074c18342cec3b7268b62bf752018fd1929181900390910190a36133af565b60ff8816613373576001600160a01b038416600090815260086020526040902054613252908263ffffffff612ec416565b6001600160a01b0385166000908152600860209081526040808320939093558251630e4f7c3f60e31b81526004810185905292516110049363727be1f89360248083019493928390030190829087803b1580156132ae57600080fd5b505af11580156132c2573d6000803e3d6000fd5b505050506040513d60208110156132d857600080fd5b5051613321576040805162461bcd60e51b81526020600482015260136024820152721dda5d1a191c985dc8189b988819985a5b1959606a1b604482015290519081900360640190fd5b6040805182815260ff8916602082015281516001600160a01b0380871693908816927fcbd481ae600289fad8c0484d07ce0ffe4f010d7c844ecfdeaf2a13fead52886e929081900390910190a36133af565b6040805162461bcd60e51b815260206004820152600c60248201526b77726f6e672073746174757360a01b604482015290519081900360640190fd5b505050505050505050565b60008060008060005b6133cc88612f1e565b1561343557836133e9576133e261288a8961275b565b925061342a565b8360011415613405576133fe61288a8961275b565b915061342a565b83600214156134255761341a610e6b8961275b565b90506001945061342a565b613435565b8360010193506133c3565b8461347b576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b6000613492826402540be40063ffffffff6145c816565b6001600160a01b0385166000908152600c602052604090208054600019019055905060ff8816600114156136115760ff871615613505576040805162461bcd60e51b815260206004820152600c60248201526b77726f6e672073746174757360a01b604482015290519081900360640190fd5b6001600160a01b03841660009081526004602052604090205461352e908263ffffffff612d3c16565b6001600160a01b03808616600090815260046020908152604080832094909455600581528382209287168252919091522054613570908263ffffffff612d3c16565b6001600160a01b038086166000908152600560209081526040808320938816835292905220556135a942620a8c0063ffffffff612ec416565b6001600160a01b038086166000818152600760209081526040808320948916808452948252918290209490945580518581529051929391927fd6f878a5bcbbe79a64e6418bb0d56aaa20b9a60587d45749819df88dfc7c3c44929181900390910190a36133af565b60ff8816613373576001600160a01b03808516600081815260076020908152604080832094881680845294825280832092909255815185815260ff8c169181019190915281517f4417d10c1e33efa83a770b8d4f47176e78c08c1298d534901ad3b16bb585fa2e929181900390910190a36133af565b6000806000806000805b61369a89612f1e565b1561371f57846136b7576136b061288a8a61275b565b9350613714565b84600114156136d3576136cc61288a8a61275b565b9250613714565b84600214156136ef576136e861288a8a61275b565b9150613714565b846003141561370f57613704610e6b8a61275b565b905060019550613714565b61371f565b846001019450613691565b85613765576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b600061377c826402540be40063ffffffff6145c816565b6001600160a01b0386166000908152600d602052604090208054600019019055905060ff89166001141561394f5760ff8816156137ef576040805162461bcd60e51b815260206004820152600c60248201526b77726f6e672073746174757360a01b604482015290519081900360640190fd5b6001600160a01b03808616600090815260056020908152604080832093881683529290522054613825908263ffffffff612d3c16565b6001600160a01b038681166000908152600560209081526040808320898516845290915280822093909355908516815220546138619082612ec4565b6001600160a01b0380871660009081526005602090815260408083209388168352929052205561389a42620a8c0063ffffffff612ec416565b6001600160a01b03808716600090815260096020908152604080832089851684528252808320938816835292905220556138dd42620a8c0063ffffffff612ec416565b6001600160a01b038087166000818152600960209081526040808320898616808552908352818420958b1680855295835292819020959095558451868152945191947f78bffae3f8c6691ac7fc1a3bff800cb2d612f5ad9ae5b0444cfe2eb15c189e18929081900390910190a46139e0565b60ff8916613373576001600160a01b038581166000818152600960209081526040808320898616808552818452828520968a16808652968452828520859055908352818420818552835281842093909355805186815260ff8e169281019290925280519293927fb93bee5c59f85ede6b074a99f4ffcd3e3fc0d5c3d8156de331de89a49e0ce77c9281900390910190a45b50505050505050505050565b6000816040516020018082805190602001908083835b60208310613a215780518252601f199092019160209182019101613a02565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405280519060200120836040516020018082805190602001908083835b60208310613a8f5780518252601f199092019160209182019101613a70565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040528051906020012014905092915050565b015190565b60008060008060005b613aea86612f1e565b15613b535783613b0757613b0061288a8761275b565b9250613b48565b8360011415613b2357613b1c61288a8761275b565b9150613b48565b8360021415613b4357613b38610e6b8761275b565b905060019450613b48565b613b53565b836001019350613ae1565b84613b99576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b6000613bb0826402540be40063ffffffff6145c816565b6001600160a01b0385166000908152600b6020908152604080832080546000190190556008909152902054909150613bee908263ffffffff612ec416565b6001600160a01b0385166000908152600860209081526040808320939093558251630e4f7c3f60e31b81526004810185905292516110049363727be1f89360248083019493928390030190829087803b158015613c4a57600080fd5b505af1158015613c5e573d6000803e3d6000fd5b505050506040513d6020811015613c7457600080fd5b5051613cbd576040805162461bcd60e51b81526020600482015260136024820152721dda5d1a191c985dc8189b988819985a5b1959606a1b604482015290519081900360640190fd5b6040516001907ff83de021914a4585482db5ca47d520a5657165b443fa2c7ef8ed4635f054da9b90600090a250505050505050565b60008060008060005b613d0486612f1e565b15613d6d5783613d2157613d1a61288a8761275b565b9250613d62565b8360011415613d3d57613d3661288a8761275b565b9150613d62565b8360021415613d5d57613d52610e6b8761275b565b905060019450613d62565b613d6d565b836001019350613cfb565b84613db3576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b6001600160a01b038084166000908152600c60209081526040808320805460001901905560078252808320938616835292905281812081905590516002917ff83de021914a4585482db5ca47d520a5657165b443fa2c7ef8ed4635f054da9b91a2505050505050565b6000806000806000805b613e2f87612f1e565b15613eb45784613e4c57613e4561288a8861275b565b9350613ea9565b8460011415613e6857613e6161288a8861275b565b9250613ea9565b8460021415613e8457613e7d61288a8861275b565b9150613ea9565b8460031415613ea457613e99610e6b8861275b565b905060019550613ea9565b613eb4565b846001019450613e26565b85613efa576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b6001600160a01b038481166000908152600d602090815260408083208054600019019055600982528083208785168085528184528285209588168552948352818420849055825280832093835292905281812081905590516003917ff83de021914a4585482db5ca47d520a5657165b443fa2c7ef8ed4635f054da9b91a250505050505050565b8051600090613f9257506000610d71565b6020820151805160001a9060c0821015613fb157600092505050610d71565b5060019392505050565b8051600090811a6080811015613fd5576000915050610d71565b60b8811080613ff0575060c08110801590613ff0575060f881105b15613fff576001915050610d71565b60c08110156140135760b519019050610d71565b60f519019050610d71565b80516000908190811a6080811015614039576001915061414a565b60b881101561404e57607e198101915061414a565b60c08110156140c857600060b78203600186019550806020036101000a8651049150600181018201935050808310156140c2576040805162461bcd60e51b81526020600482015260116024820152706164646974696f6e206f766572666c6f7760781b604482015290519081900360640190fd5b5061414a565b60f88110156140dd5760be198101915061414a565b600060f78203600186019550806020036101000a865104915060018101820193505080831015614148576040805162461bcd60e51b81526020600482015260116024820152706164646974696f6e206f766572666c6f7760781b604482015290519081900360640190fd5b505b5092915050565b805160009060151461416257600080fd5b61242c826127a9565b60006060614184846402540be40063ffffffff612cf316565b60408051600480825260a0820190925291955060609190816020015b60608152602001906001900390816141a05790505090506141c38760ff16612da1565b816000815181106141d057fe5b60200260200101819052506141ed866001600160a01b0316612d7e565b816001815181106141fa57fe5b602002602001018190525061420e85612da1565b8160028151811061421b57fe5b60200260200101819052506142358463ffffffff16612da1565b8160038151811061424257fe5b6020026020010181905250606061425882612db4565b94989497509395505050505050565b600081836142b65760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315612cb0578181015183820152602001612c98565b5060008385816142c257fe5b0495945050505050565b6060815160011480156142fe5750607f60f81b826000815181106142ec57fe5b01602001516001600160f81b03191611155b1561430a575080610d71565b61242c61431c8351608060ff16614485565b83614408565b604080516020808252818301909252606091829190602082018180368337505050602081018490529050600067ffffffffffffffff1984166143665750601861438a565b6fffffffffffffffffffffffffffffffff1984166143865750601061438a565b5060005b60208110156143c05781818151811061439f57fe5b01602001516001600160f81b031916156143b8576143c0565b60010161438a565b60008160200390506060816040519080825280601f01601f1916602001820160405280156143f5576020820181803683370190505b5080830196909652508452509192915050565b6060806040519050835180825260208201818101602087015b81831015614439578051835260209283019201614421565b50855184518101855292509050808201602086015b8183101561446657805183526020928301920161444e565b508651929092011591909101601f01601f191660405250905092915050565b60606801000000000000000083106144d5576040805162461bcd60e51b815260206004820152600e60248201526d696e70757420746f6f206c6f6e6760901b604482015290519081900360640190fd5b6040805160018082528183019092526060916020820181803683370190505090506037841161452f5782840160f81b8160008151811061451157fe5b60200101906001600160f81b031916908160001a905350905061242c565b606061453a85614322565b90508381510160370160f81b8260008151811061455357fe5b60200101906001600160f81b031916908160001a9053506145748282614408565b95945050505050565b806145875761265c565b5b602081106145a7578251825260209283019290910190601f1901614588565b915181516020939093036101000a6000190180199091169216919091179052565b6000826145d75750600061242c565b828202828482816145e457fe5b0414612d355760405162461bcd60e51b81526004018080602001828103825260218152602001806147086021913960400191505060405180910390fd5b60405180606001604052806003906020820280368337509192915050565b604051806040016040528061465261465f565b8152602001600081525090565b60405180604001604052806000815260200160008152509056fe7468652042534352656c61796572466565206d6f642074656e20646563696d616c73206d757374206265207a65726f7468652042534352656c61796572466565206d757374206265206c657373207468616e2072656c61796572466565746865206d696e44656c65676174696f6e206d7573742062652067726561746572207468616e2072656c61796572466565536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f777468652072656c61796572466565206d6f642074656e20646563696d616c73206d757374206265207a65726f746865206d6573736167652073656e646572206d75737420626520676f7665726e616e636520636f6e74726163747468652072656c61796572466565206d757374206265206c657373207468616e206d696e44656c65676174696f6e7468652072656c61796572466565206d757374206265206d6f7265207468616e2042534352656c61796572466565696e73756666696369656e742062616c616e636520616674657220756e64656c6567617465746865206d6573736167652073656e646572206d7573742062652063726f737320636861696e20636f6e74726163747468652042534352656c61796572466565206d757374206e6f74206265207a65726fa164736f6c6343000604000a", + Code: "6080604052600436106103a65760003560e01c8063718a8aa8116101e7578063b88a802f1161010d578063dc927faf116100a0578063f9a2bbc71161006f578063f9a2bbc714610ca0578063fa03f79714610cb5578063fc3e590814610692578063fd6a687914610cca576103ad565b8063dc927faf14610c1c578063df8079e914610c31578063edc1a5b014610c46578063f45fd80b14610c5b576103ad565b8063c81b1662116100dc578063c81b166214610b47578063c8509d8114610b5c578063d61b9b9314610be1578063d7ecfcb61461083a576103ad565b8063b88a802f14610acd578063baaafd3b14610ae2578063bf8546ca14610af7578063c2117d8214610b32576103ad565b80639dc0926211610185578063aad5606311610154578063aad56063146109c3578063ab51bb96146109d8578063ac431751146109ed578063b14315df14610ab8576103ad565b80639dc092621461095b578063a1a11bf514610970578063a78abc1614610985578063aa82dce1146109ae576103ad565b80637942fd05116101c15780637942fd05146108ac578063831d65d1146108c157806392b888a41461063e57806396713da914610946576103ad565b8063718a8aa81461084f57806375aca5931461086457806375d47a0a14610897576103ad565b8063413d9c3a116102cc5780635d17c8bd1161026a5780636bd8f804116102395780636bd8f804146107bc5780636e47b482146107f25780636fb7f7eb1461080757806370fd5bad1461083a576103ad565b80635d17c8bd146107685780635d499b1b1461077d57806362b171d21461079257806369b635b6146107a7576103ad565b80634bf6c882116102a65780634bf6c882146106fd5780634d99dd161461071257806351e806721461073e578063552aaf9314610753576103ad565b8063413d9c3a146106a757806343756e5c146106bc578063493279b1146106d1576103ad565b806311fe9ec611610344578063333ad3e711610313578063333ad3e71461066857806334c433541461067d5780633dffc3871461063e5780633fdfa7e414610692576103ad565b806311fe9ec6146105e0578063151817e31461061357806317c9efb01461063e5780632fdeb11114610653576103ad565b80630bee7a67116103805780630bee7a67146104725780630c795715146104a05780630e2374a5146104b55780631182b875146104e6576103ad565b8063026e402b146103b257806302985992146103e0578063047636d114610407576103ad565b366103ad57005b600080fd5b6103de600480360360408110156103c857600080fd5b506001600160a01b038135169060200135610cdf565b005b3480156103ec57600080fd5b506103f5610d1c565b60408051918252519081900360200190f35b34801561041357600080fd5b5061043a6004803603602081101561042a57600080fd5b50356001600160a01b0316610d22565b6040518082606080838360005b8381101561045f578181015183820152602001610447565b5050505090500191505060405180910390f35b34801561047e57600080fd5b50610487610d76565b6040805163ffffffff9092168252519081900360200190f35b3480156104ac57600080fd5b506103f5610d7b565b3480156104c157600080fd5b506104ca610d81565b604080516001600160a01b039092168252519081900360200190f35b3480156104f257600080fd5b5061056b6004803603604081101561050957600080fd5b60ff8235169190810190604081016020820135600160201b81111561052d57600080fd5b82018360208201111561053f57600080fd5b803590602001918460018302840111600160201b8311171561056057600080fd5b509092509050610d87565b6040805160208082528351818301528351919283929083019185019080838360005b838110156105a557818101518382015260200161058d565b50505050905090810190601f1680156105d25780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156105ec57600080fd5b506103f56004803603602081101561060357600080fd5b50356001600160a01b0316610f43565b34801561061f57600080fd5b50610628610f5e565b6040805160ff9092168252519081900360200190f35b34801561064a57600080fd5b50610628610f63565b34801561065f57600080fd5b506103f5610f68565b34801561067457600080fd5b50610487610f6e565b34801561068957600080fd5b506103f5610f73565b34801561069e57600080fd5b50610628610f7e565b3480156106b357600080fd5b506103f5610f83565b3480156106c857600080fd5b506104ca610f8a565b3480156106dd57600080fd5b506106e6610f90565b6040805161ffff9092168252519081900360200190f35b34801561070957600080fd5b50610628610f96565b6103de6004803603604081101561072857600080fd5b506001600160a01b038135169060200135610f9b565b34801561074a57600080fd5b506104ca6115c8565b34801561075f57600080fd5b506106286115ce565b34801561077457600080fd5b506103f56115d3565b34801561078957600080fd5b506103f56115d9565b34801561079e57600080fd5b506103f56115e2565b3480156107b357600080fd5b506103f5611782565b6103de600480360360608110156107d257600080fd5b506001600160a01b03813581169160208101359091169060400135610cdf565b3480156107fe57600080fd5b506104ca611788565b34801561081357600080fd5b506103f56004803603602081101561082a57600080fd5b50356001600160a01b031661178e565b34801561084657600080fd5b506106286117a9565b34801561085b57600080fd5b506106286117ae565b34801561087057600080fd5b506103f56004803603602081101561088757600080fd5b50356001600160a01b03166117b3565b3480156108a357600080fd5b506104ca6117ce565b3480156108b857600080fd5b506106286117d4565b3480156108cd57600080fd5b506103de600480360360408110156108e457600080fd5b60ff8235169190810190604081016020820135600160201b81111561090857600080fd5b82018360208201111561091a57600080fd5b803590602001918460018302840111600160201b8311171561093b57600080fd5b5090925090506117d9565b34801561095257600080fd5b50610628611aa1565b34801561096757600080fd5b506104ca611aa6565b34801561097c57600080fd5b506104ca611aac565b34801561099157600080fd5b5061099a611ab2565b604080519115158252519081900360200190f35b3480156109ba57600080fd5b506104ca611abb565b3480156109cf57600080fd5b506104ca611ac1565b3480156109e457600080fd5b506104876115ce565b3480156109f957600080fd5b506103de60048036036040811015610a1057600080fd5b810190602081018135600160201b811115610a2a57600080fd5b820183602082011115610a3c57600080fd5b803590602001918460018302840111600160201b83111715610a5d57600080fd5b919390929091602081019035600160201b811115610a7a57600080fd5b820183602082011115610a8c57600080fd5b803590602001918460018302840111600160201b83111715610aad57600080fd5b509092509050611ac7565b348015610ac457600080fd5b50610628612259565b348015610ad957600080fd5b506103f561225e565b348015610aee57600080fd5b506103f56123fb565b348015610b0357600080fd5b506103f560048036036040811015610b1a57600080fd5b506001600160a01b0381358116916020013516612406565b348015610b3e57600080fd5b506103f5612433565b348015610b5357600080fd5b506104ca612439565b348015610b6857600080fd5b506103de60048036036040811015610b7f57600080fd5b60ff8235169190810190604081016020820135600160201b811115610ba357600080fd5b820183602082011115610bb557600080fd5b803590602001918460018302840111600160201b83111715610bd657600080fd5b50909250905061243f565b348015610bed57600080fd5b506103f560048036036040811015610c0457600080fd5b506001600160a01b0381358116916020013516612662565b348015610c2857600080fd5b506104ca61268d565b348015610c3d57600080fd5b506104ca612693565b348015610c5257600080fd5b506103f5612699565b348015610c6757600080fd5b506103f560048036036060811015610c7e57600080fd5b506001600160a01b0381358116916020810135821691604090910135166126a6565b348015610cac57600080fd5b506104ca6126db565b348015610cc157600080fd5b506103f56126e1565b348015610cd657600080fd5b506104ca6126e7565b6040805162461bcd60e51b815260206004820152600d60248201526c1b9bdd081cdd5c1c1bdc9d1959609a1b604482015290519081900360640190fd5b60035481565b610d2a614622565b610d32614622565b6001600160a01b0383166000818152600b60209081526040808320548552838352600c82528083205485830152928252600d9052819020549082015290505b919050565b606481565b6108fc81565b61200181565b60603361200014610dc95760405162461bcd60e51b815260040180806020018281038252602f815260200180614805602f913960400191505060405180910390fd5b60005460ff16610e0c576638d7ea4c6800006001908155662386f26fc1000060025568056bc75e2d631000006003556108fc6011556000805460ff191690911790555b610e14614640565b610e5b610e5685858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506126ed92505050565b612712565b90506000610e70610e6b8361275c565b6127aa565b90506000606060ff831660041415610e9557610e8b84612861565b9092509050610eec565b60ff831660051415610eaa57610e8b84612a41565b6040805162461bcd60e51b8152602060048201526012602482015271756e6b6e6f776e206576656e74207479706560701b604482015290519081900360640190fd5b63ffffffff821615610f38576040805163ffffffff84168152905160ff8516917f391d6e5ea6ab6c49b9a0abb1782cae5def8d711f973b00c729658c0b2a80b31b919081900360200190a25b979650505050505050565b6001600160a01b031660009081526006602052604090205490565b600581565b600181565b60015481565b606581565b662386f26fc1000081565b600381565b620a8c0081565b61100181565b6102ca81565b600881565b60105460ff1660021415610fe7576040805162461bcd60e51b815260206004820152600e60248201526d4e6f2072652d656e7472616e637960901b604482015290519081900360640190fd5b6010805460ff19166002179055806402540be400340615801561100f57506402540be4008106155b611060576040805162461bcd60e51b815260206004820152601c60248201527f707265636973696f6e206c6f737320696e20636f6e76657273696f6e00000000604482015290519081900360640190fd5b60005460ff166110a3576638d7ea4c6800006001908155662386f26fc1000060025568056bc75e2d631000006003556108fc6011556000805460ff191690911790555b6001543410156110f1576040805162461bcd60e51b81526020600482015260146024820152736e6f7420656e6f7567682072656c61792066656560601b604482015290519081900360640190fd5b6003548210156111ac573360009081526005602090815260408083206001600160a01b03871684529091529020548214611163576040805162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a5908185b5bdd5b9d60921b604482015290519081900360640190fd5b60025482116111ac576040805162461bcd60e51b815260206004820152601060248201526f6e6f7420656e6f7567682066756e647360801b604482015290519081900360640190fd5b3360009081526007602090815260408083206001600160a01b0387168452909152902054421015611224576040805162461bcd60e51b815260206004820152601a60248201527f70656e64696e6720756e64656c65676174696f6e206578697374000000000000604482015290519081900360640190fd5b604080518082018252601081526f6e6f7420656e6f7567682066756e647360801b602080830191909152336000908152600582528381206001600160a01b03881682529091529182205461127f91859063ffffffff612c5d16565b905080156112c75760025481116112c75760405162461bcd60e51b81526004018080602001828103825260258152602001806147e06025913960400191505060405180910390fd5b60006112de846402540be40063ffffffff612cf416565b60025490915034906000906112fa90839063ffffffff612d3d16565b6040805160038082526080820190925291925060609190816020015b606081526020019060019003908161131657905050905061133633612d7f565b8160008151811061134357fe5b6020026020010181905250611360886001600160a01b0316612d7f565b8160018151811061136d57fe5b602002602001018190525061138184612da2565b8160028151811061138e57fe5b602002602001018190525060606113ae60026113a984612db5565b612e3f565b8051602080830191909120600f80546000908152600a845260408082209390935581546001908101909255338152600c90935291208054909101905590506113ff42620a8c0063ffffffff612ec516565b3360009081526007602090815260408083206001600160a01b038e16845290915290205561200063f7a251d7601083611443876402540be40063ffffffff612cf416565b6040518463ffffffff1660e01b8152600401808460ff1660ff16815260200180602001838152602001828103825284818151815260200191508051906020019080838360005b838110156114a1578181015183820152602001611489565b50505050905090810190601f1680156114ce5780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b1580156114ef57600080fd5b505af1158015611503573d6000803e3d6000fd5b5050604051611004925085156108fc02915085906000818181858888f19350505050158015611536573d6000803e3d6000fd5b506002546040516110029180156108fc02916000818181858888f19350505050158015611567573d6000803e3d6000fd5b50604080518981526020810185905281516001600160a01b038c169233927fdf0b6ac27f3f3bb31cee3dab0f4fe40cc19c6a3f8daaec52e06b261e58a12519929081900390910190a350506010805460ff1916600117905550505050505050565b61200081565b600081565b60025481565b6402540be40081565b60105460009060ff1660021415611631576040805162461bcd60e51b815260206004820152600e60248201526d4e6f2072652d656e7472616e637960901b604482015290519081900360640190fd5b506010805460ff191660021790553360009081526008602052604090205480611698576040805162461bcd60e51b81526020600482015260146024820152736e6f20756e64656c6567617465642066756e647360601b604482015290519081900360640190fd5b336000818152600860205260408082208290556011549051919291849084818181858888f193505050503d80600081146116ee576040519150601f19603f3d011682016040523d82523d6000602084013e6116f3565b606091505b505090508061173b576040805162461bcd60e51b815260206004820152600f60248201526e1d1c985b9cd9995c8819985a5b1959608a1b604482015290519081900360640190fd5b60408051838152905133917fc712d133b8d448221aaed2198ed1f0db6dfc860fb01bc3a630916fe6cbef946f919081900360200190a2506010805460ff1916600117905590565b60035490565b61100581565b6001600160a01b031660009081526004602052604090205490565b600281565b601081565b6001600160a01b031660009081526008602052604090205490565b61100881565b600b81565b33612000146118195760405162461bcd60e51b815260040180806020018281038252602f815260200180614805602f913960400191505060405180910390fd5b60005460ff1661185c576638d7ea4c6800006001908155662386f26fc1000060025568056bc75e2d631000006003556108fc6011556000805460ff191690911790555b611864614640565b6118a6610e5684848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506126ed92505050565b905060008060606000805b6118ba86612f1f565b1561192557806118d7576118d0610e6b8761275c565b945061191d565b80600114156118f3576118ec610e6b8761275c565b935061191d565b80600214156119185761190d6119088761275c565b612f40565b92506001915061191d565b611925565b6001016118b1565b8161196b576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b61197483612fb0565b6119b7576040805162461bcd60e51b815260206004820152600f60248201526e0eee4dedcce40e0c2c6d640d0c2e6d608b1b604482015290519081900360640190fd5b6119c3610e56846126ed565b955060006119d3610e6b8861275c565b90506119dd614640565b6119e688612f1f565b15611a0957611a02610e566119fd6119088b61275c565b6126ed565b9050611a4a565b6040805162461bcd60e51b8152602060048201526011602482015270656d7074792061636b207061636b61676560781b604482015290519081900360640190fd5b60ff821660011415611a6657611a61818888613004565b611a94565b60ff821660021415611a7d57611a618188886133bb565b60ff821660031415610eaa57611a61818888613688565b5050505050505050505050565b600981565b61100781565b61100681565b60005460ff1681565b61200281565b61300081565b60005460ff16611b1e576040805162461bcd60e51b815260206004820152601960248201527f74686520636f6e7472616374206e6f7420696e69742079657400000000000000604482015290519081900360640190fd5b3361100714611b5e5760405162461bcd60e51b815260040180806020018281038252602e815260200180614756602e913960400191505060405180910390fd5b611bbf84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600a81526972656c6179657246656560b01b602082015291506139ed9050565b15611d255760208114611c19576040805162461bcd60e51b815260206004820152601d60248201527f6c656e677468206f662072656c61796572466565206d69736d61746368000000604482015290519081900360640190fd5b604080516020601f8401819004810282018101909252828152600091611c5791858580838501838280828437600092019190915250613ad492505050565b90506003548110611c995760405162461bcd60e51b815260040180806020018281038252602e815260200180614784602e913960400191505060405180910390fd5b6002548111611cd95760405162461bcd60e51b815260040180806020018281038252602e8152602001806147b2602e913960400191505060405180910390fd5b6402540be400810615611d1d5760405162461bcd60e51b815260040180806020018281038252602c81526020018061472a602c913960400191505060405180910390fd5b6001556121c7565b611d8984848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600d81526c62534352656c6179657246656560981b602082015291506139ed9050565b15611eeb5760208114611de3576040805162461bcd60e51b815260206004820181905260248201527f6c656e677468206f662062534352656c61796572466565206d69736d61746368604482015290519081900360640190fd5b604080516020601f8401819004810282018101909252828152600091611e2191858580838501838280828437600092019190915250613ad492505050565b905080611e5f5760405162461bcd60e51b81526004018080602001828103825260228152602001806148346022913960400191505060405180910390fd5b6001548110611e9f5760405162461bcd60e51b815260040180806020018281038252602e8152602001806146aa602e913960400191505060405180910390fd5b6402540be400810615611ee35760405162461bcd60e51b815260040180806020018281038252602f81526020018061467b602f913960400191505060405180910390fd5b6002556121c7565b611f4f84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600d81526c36b4b72232b632b3b0ba34b7b760991b602082015291506139ed9050565b156120315760208114611fa9576040805162461bcd60e51b815260206004820181905260248201527f6c656e677468206f66206d696e44656c65676174696f6e206d69736d61746368604482015290519081900360640190fd5b604080516020601f8401819004810282018101909252828152600091611fe791858580838501838280828437600092019190915250613ad492505050565b905060015481116120295760405162461bcd60e51b81526004018080602001828103825260318152602001806146d86031913960400191505060405180910390fd5b6003556121c7565b61209384848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600b81526a7472616e7366657247617360a81b602082015291506139ed9050565b1561218a57602081146120ed576040805162461bcd60e51b815260206004820152601e60248201527f6c656e677468206f66207472616e73666572476173206d69736d617463680000604482015290519081900360640190fd5b604080516020601f840181900481028201810190925282815260009161212b91858580838501838280828437600092019190915250613ad492505050565b905060008111612182576040805162461bcd60e51b815260206004820152601e60248201527f746865207472616e736665724761732063616e6e6f74206265207a65726f0000604482015290519081900360640190fd5b6011556121c7565b6040805162461bcd60e51b815260206004820152600d60248201526c756e6b6e6f776e20706172616d60981b604482015290519081900360640190fd5b7f6cdb0ac70ab7f2e2d035cca5be60d89906f2dede7648ddbd7402189c1eeed17a848484846040518080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600083820152604051601f909101601f19169092018290039850909650505050505050a150505050565b600481565b60105460009060ff16600214156122ad576040805162461bcd60e51b815260206004820152600e60248201526d4e6f2072652d656e7472616e637960901b604482015290519081900360640190fd5b506010805460ff191660021790553360009081526006602052604090205480612311576040805162461bcd60e51b81526020600482015260116024820152701b9bc81c195b991a5b99c81c995dd85c99607a1b604482015290519081900360640190fd5b336000818152600660205260408082208290556011549051919291849084818181858888f193505050503d8060008114612367576040519150601f19603f3d011682016040523d82523d6000602084013e61236c565b606091505b50509050806123b4576040805162461bcd60e51b815260206004820152600f60248201526e1d1c985b9cd9995c8819985a5b1959608a1b604482015290519081900360640190fd5b60408051838152905133917f83b78188b13346b2ffb484da70d42ee27de7fbf9f2bd8045269e10ed643ccd76919081900360200190a2506010805460ff1916600117905590565b6638d7ea4c68000081565b6001600160a01b038083166000908152600760209081526040808320938516835292905220545b92915050565b60015490565b61100281565b336120001461247f5760405162461bcd60e51b815260040180806020018281038252602f815260200180614805602f913960400191505060405180910390fd5b60005460ff166124c2576638d7ea4c6800006001908155662386f26fc1000060025568056bc75e2d631000006003556108fc6011556000805460ff191690911790555b61250182828080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612fb092505050565b612544576040805162461bcd60e51b815260206004820152600f60248201526e0eee4dedcce40e0c2c6d640d0c2e6d608b1b604482015290519081900360640190fd5b61254c614640565b61258e610e5684848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506126ed92505050565b9050600061259e610e6b8361275c565b90506125a8614640565b6125b183612f1f565b156125cf576125c8610e566119fd6119088661275c565b9050612615565b6040805162461bcd60e51b8152602060048201526016602482015275656d707479206661696c2061636b207061636b61676560501b604482015290519081900360640190fd5b60ff82166001141561262f5761262a81613ad9565b612659565b60ff8216600214156126445761262a81613cf3565b60ff821660031415610eaa5761262a81613e1d565b5050505b505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b61100381565b61200481565b68056bc75e2d6310000081565b6001600160a01b0392831660009081526009602090815260408083209486168352938152838220929094168152925290205490565b61100081565b60115481565b61100481565b6126f5614660565b506040805180820190915281518152602082810190820152919050565b61271a614640565b61272382613f82565b61272c57600080fd5b600061273b8360200151613fbc565b60208085015160408051808201909152868152920190820152915050919050565b612764614660565b61276d82612f1f565b61277657600080fd5b602082015160006127868261401f565b80830160209586015260408051808201909152908152938401919091525090919050565b8051600090158015906127bf57508151602110155b6127c857600080fd5b60006127d78360200151613fbc565b90508083600001511015612832576040805162461bcd60e51b815260206004820152601a60248201527f6c656e677468206973206c657373207468616e206f6666736574000000000000604482015290519081900360640190fd5b82516020808501518301805192849003929183101561285857826020036101000a820491505b50949350505050565b600060606000806000805b61287587612f1f565b156128c757826128975761289061288b8861275c565b614152565b91506128bc565b82600114156128b7576128ac610e6b8861275c565b9050600193506128bc565b6128c7565b82600101925061286c565b8361290d576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b60006110046001600160a01b031663727be1f8836040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b15801561295757600080fd5b505af115801561296b573d6000803e3d6000fd5b505050506040513d602081101561298157600080fd5b50519050806129a65761299860048484606561416c565b965096505050505050612a3c565b6001600160a01b0383166000908152600660205260409020546129cf908363ffffffff612ec516565b6001600160a01b038416600081815260066020908152604091829020939093558051858152905191927f7cc266c7b444f808013fa187f7b904d470a051a6564e78f482aa496581ba4bf892918290030190a260408051600080825260208201909252909750955050505050505b915091565b6000606060008060008060005b612a5788612f1f565b15612ac05783612a7457612a6d61288b8961275c565b9250612ab5565b8360011415612a9057612a8961288b8961275c565b9150612ab5565b8360021415612ab057612aa5610e6b8961275c565b905060019450612ab5565b612ac0565b836001019350612a4e565b84612b06576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b60006110046001600160a01b031663727be1f8836040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b158015612b5057600080fd5b505af1158015612b64573d6000803e3d6000fd5b505050506040513d6020811015612b7a57600080fd5b5051905080612ba057612b9160058584606561416c565b97509750505050505050612a3c565b6001600160a01b038085166000818152600760209081526040808320948816835293815283822082905591815260089091522054612be4908363ffffffff612ec516565b6001600160a01b0380861660008181526008602090815260409182902094909455805186815290519287169391927f35a799836f74fac7eccf5c73902823b970543d2274d3b93d8da3d37a255772a2929181900390910190a3604080516000808252602082019092529098509650505050505050915091565b60008184841115612cec5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612cb1578181015183820152602001612c99565b50505050905090810190601f168015612cde5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000612d3683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614268565b9392505050565b6000612d3683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612c5d565b60408051600560a21b8318601482015260348101909152606090612d36816142cd565b606061242d612db083614323565b6142cd565b6060815160001415612dd65750604080516000815260208101909152610d71565b606082600081518110612de557fe5b602002602001015190506000600190505b8351811015612e2657612e1c82858381518110612e0f57fe5b6020026020010151614409565b9150600101612df6565b50612d36612e39825160c060ff16614486565b82614409565b6040805160028082526060828101909352829190816020015b6060815260200190600190039081612e58579050509050612e7b8460ff16612da2565b81600081518110612e8857fe5b6020026020010181905250612e9c836142cd565b81600181518110612ea957fe5b6020026020010181905250612ebd81612db5565b949350505050565b600082820183811015612d36576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000612f29614660565b505080518051602091820151919092015191011190565b8051606090612f4e57600080fd5b6000612f5d8360200151613fbc565b83516040805191839003808352601f19601f8201168301602001909152919250606090828015612f94576020820181803683370190505b509050600081602001905061285884876020015101828561457e565b8051602080830191909120600e546000908152600a9092526040822054808214612fdf57600092505050610d71565b5050600e80546000908152600a60205260408120558054600190810190915592915050565b60008060008060005b61301688612f1f565b1561307f57836130335761302c61288b8961275c565b9250613074565b836001141561304f5761304861288b8961275c565b9150613074565b836002141561306f57613064610e6b8961275c565b905060019450613074565b61307f565b83600101935061300d565b846130c5576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b60006130dc826402540be40063ffffffff6145c916565b6001600160a01b0385166000908152600b602052604090208054600019019055905060ff8816600114156132225760ff87161561314f576040805162461bcd60e51b815260206004820152600c60248201526b77726f6e672073746174757360a01b604482015290519081900360640190fd5b6001600160a01b038416600090815260046020526040902054613178908263ffffffff612ec516565b6001600160a01b038086166000908152600460209081526040808320949094556005815283822092871682529190915220546131ba908263ffffffff612ec516565b6001600160a01b038086166000818152600560209081526040808320948916808452948252918290209490945580518581529051929391927f9a57c81564ab02642f34fd87e41baa9b074c18342cec3b7268b62bf752018fd1929181900390910190a36133b0565b60ff8816613374576001600160a01b038416600090815260086020526040902054613253908263ffffffff612ec516565b6001600160a01b0385166000908152600860209081526040808320939093558251630e4f7c3f60e31b81526004810185905292516110049363727be1f89360248083019493928390030190829087803b1580156132af57600080fd5b505af11580156132c3573d6000803e3d6000fd5b505050506040513d60208110156132d957600080fd5b5051613322576040805162461bcd60e51b81526020600482015260136024820152721dda5d1a191c985dc8189b988819985a5b1959606a1b604482015290519081900360640190fd5b6040805182815260ff8916602082015281516001600160a01b0380871693908816927fcbd481ae600289fad8c0484d07ce0ffe4f010d7c844ecfdeaf2a13fead52886e929081900390910190a36133b0565b6040805162461bcd60e51b815260206004820152600c60248201526b77726f6e672073746174757360a01b604482015290519081900360640190fd5b505050505050505050565b60008060008060005b6133cd88612f1f565b1561343657836133ea576133e361288b8961275c565b925061342b565b8360011415613406576133ff61288b8961275c565b915061342b565b83600214156134265761341b610e6b8961275c565b90506001945061342b565b613436565b8360010193506133c4565b8461347c576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b6000613493826402540be40063ffffffff6145c916565b6001600160a01b0385166000908152600c602052604090208054600019019055905060ff8816600114156136125760ff871615613506576040805162461bcd60e51b815260206004820152600c60248201526b77726f6e672073746174757360a01b604482015290519081900360640190fd5b6001600160a01b03841660009081526004602052604090205461352f908263ffffffff612d3d16565b6001600160a01b03808616600090815260046020908152604080832094909455600581528382209287168252919091522054613571908263ffffffff612d3d16565b6001600160a01b038086166000908152600560209081526040808320938816835292905220556135aa42620a8c0063ffffffff612ec516565b6001600160a01b038086166000818152600760209081526040808320948916808452948252918290209490945580518581529051929391927fd6f878a5bcbbe79a64e6418bb0d56aaa20b9a60587d45749819df88dfc7c3c44929181900390910190a36133b0565b60ff8816613374576001600160a01b03808516600081815260076020908152604080832094881680845294825280832092909255815185815260ff8c169181019190915281517f4417d10c1e33efa83a770b8d4f47176e78c08c1298d534901ad3b16bb585fa2e929181900390910190a36133b0565b6000806000806000805b61369b89612f1f565b1561372057846136b8576136b161288b8a61275c565b9350613715565b84600114156136d4576136cd61288b8a61275c565b9250613715565b84600214156136f0576136e961288b8a61275c565b9150613715565b846003141561371057613705610e6b8a61275c565b905060019550613715565b613720565b846001019450613692565b85613766576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b600061377d826402540be40063ffffffff6145c916565b6001600160a01b0386166000908152600d602052604090208054600019019055905060ff8916600114156139505760ff8816156137f0576040805162461bcd60e51b815260206004820152600c60248201526b77726f6e672073746174757360a01b604482015290519081900360640190fd5b6001600160a01b03808616600090815260056020908152604080832093881683529290522054613826908263ffffffff612d3d16565b6001600160a01b038681166000908152600560209081526040808320898516845290915280822093909355908516815220546138629082612ec5565b6001600160a01b0380871660009081526005602090815260408083209388168352929052205561389b42620a8c0063ffffffff612ec516565b6001600160a01b03808716600090815260096020908152604080832089851684528252808320938816835292905220556138de42620a8c0063ffffffff612ec516565b6001600160a01b038087166000818152600960209081526040808320898616808552908352818420958b1680855295835292819020959095558451868152945191947f78bffae3f8c6691ac7fc1a3bff800cb2d612f5ad9ae5b0444cfe2eb15c189e18929081900390910190a46139e1565b60ff8916613374576001600160a01b038581166000818152600960209081526040808320898616808552818452828520968a16808652968452828520859055908352818420818552835281842093909355805186815260ff8e169281019290925280519293927fb93bee5c59f85ede6b074a99f4ffcd3e3fc0d5c3d8156de331de89a49e0ce77c9281900390910190a45b50505050505050505050565b6000816040516020018082805190602001908083835b60208310613a225780518252601f199092019160209182019101613a03565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405280519060200120836040516020018082805190602001908083835b60208310613a905780518252601f199092019160209182019101613a71565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040528051906020012014905092915050565b015190565b60008060008060005b613aeb86612f1f565b15613b545783613b0857613b0161288b8761275c565b9250613b49565b8360011415613b2457613b1d61288b8761275c565b9150613b49565b8360021415613b4457613b39610e6b8761275c565b905060019450613b49565b613b54565b836001019350613ae2565b84613b9a576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b6000613bb1826402540be40063ffffffff6145c916565b6001600160a01b0385166000908152600b6020908152604080832080546000190190556008909152902054909150613bef908263ffffffff612ec516565b6001600160a01b0385166000908152600860209081526040808320939093558251630e4f7c3f60e31b81526004810185905292516110049363727be1f89360248083019493928390030190829087803b158015613c4b57600080fd5b505af1158015613c5f573d6000803e3d6000fd5b505050506040513d6020811015613c7557600080fd5b5051613cbe576040805162461bcd60e51b81526020600482015260136024820152721dda5d1a191c985dc8189b988819985a5b1959606a1b604482015290519081900360640190fd5b6040516001907ff83de021914a4585482db5ca47d520a5657165b443fa2c7ef8ed4635f054da9b90600090a250505050505050565b60008060008060005b613d0586612f1f565b15613d6e5783613d2257613d1b61288b8761275c565b9250613d63565b8360011415613d3e57613d3761288b8761275c565b9150613d63565b8360021415613d5e57613d53610e6b8761275c565b905060019450613d63565b613d6e565b836001019350613cfc565b84613db4576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b6001600160a01b038084166000908152600c60209081526040808320805460001901905560078252808320938616835292905281812081905590516002917ff83de021914a4585482db5ca47d520a5657165b443fa2c7ef8ed4635f054da9b91a2505050505050565b6000806000806000805b613e3087612f1f565b15613eb55784613e4d57613e4661288b8861275c565b9350613eaa565b8460011415613e6957613e6261288b8861275c565b9250613eaa565b8460021415613e8557613e7e61288b8861275c565b9150613eaa565b8460031415613ea557613e9a610e6b8861275c565b905060019550613eaa565b613eb5565b846001019450613e27565b85613efb576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b6001600160a01b038481166000908152600d602090815260408083208054600019019055600982528083208785168085528184528285209588168552948352818420849055825280832093835292905281812081905590516003917ff83de021914a4585482db5ca47d520a5657165b443fa2c7ef8ed4635f054da9b91a250505050505050565b8051600090613f9357506000610d71565b6020820151805160001a9060c0821015613fb257600092505050610d71565b5060019392505050565b8051600090811a6080811015613fd6576000915050610d71565b60b8811080613ff1575060c08110801590613ff1575060f881105b15614000576001915050610d71565b60c08110156140145760b519019050610d71565b60f519019050610d71565b80516000908190811a608081101561403a576001915061414b565b60b881101561404f57607e198101915061414b565b60c08110156140c957600060b78203600186019550806020036101000a8651049150600181018201935050808310156140c3576040805162461bcd60e51b81526020600482015260116024820152706164646974696f6e206f766572666c6f7760781b604482015290519081900360640190fd5b5061414b565b60f88110156140de5760be198101915061414b565b600060f78203600186019550806020036101000a865104915060018101820193505080831015614149576040805162461bcd60e51b81526020600482015260116024820152706164646974696f6e206f766572666c6f7760781b604482015290519081900360640190fd5b505b5092915050565b805160009060151461416357600080fd5b61242d826127aa565b60006060614185846402540be40063ffffffff612cf416565b60408051600480825260a0820190925291955060609190816020015b60608152602001906001900390816141a15790505090506141c48760ff16612da2565b816000815181106141d157fe5b60200260200101819052506141ee866001600160a01b0316612d7f565b816001815181106141fb57fe5b602002602001018190525061420f85612da2565b8160028151811061421c57fe5b60200260200101819052506142368463ffffffff16612da2565b8160038151811061424357fe5b6020026020010181905250606061425982612db5565b94989497509395505050505050565b600081836142b75760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315612cb1578181015183820152602001612c99565b5060008385816142c357fe5b0495945050505050565b6060815160011480156142ff5750607f60f81b826000815181106142ed57fe5b01602001516001600160f81b03191611155b1561430b575080610d71565b61242d61431d8351608060ff16614486565b83614409565b604080516020808252818301909252606091829190602082018180368337505050602081018490529050600067ffffffffffffffff1984166143675750601861438b565b6fffffffffffffffffffffffffffffffff1984166143875750601061438b565b5060005b60208110156143c1578181815181106143a057fe5b01602001516001600160f81b031916156143b9576143c1565b60010161438b565b60008160200390506060816040519080825280601f01601f1916602001820160405280156143f6576020820181803683370190505b5080830196909652508452509192915050565b6060806040519050835180825260208201818101602087015b8183101561443a578051835260209283019201614422565b50855184518101855292509050808201602086015b8183101561446757805183526020928301920161444f565b508651929092011591909101601f01601f191660405250905092915050565b60606801000000000000000083106144d6576040805162461bcd60e51b815260206004820152600e60248201526d696e70757420746f6f206c6f6e6760901b604482015290519081900360640190fd5b604080516001808252818301909252606091602082018180368337019050509050603784116145305782840160f81b8160008151811061451257fe5b60200101906001600160f81b031916908160001a905350905061242d565b606061453b85614323565b90508381510160370160f81b8260008151811061455457fe5b60200101906001600160f81b031916908160001a9053506145758282614409565b95945050505050565b806145885761265d565b5b602081106145a8578251825260209283019290910190601f1901614589565b915181516020939093036101000a6000190180199091169216919091179052565b6000826145d85750600061242d565b828202828482816145e557fe5b0414612d365760405162461bcd60e51b81526004018080602001828103825260218152602001806147096021913960400191505060405180910390fd5b60405180606001604052806003906020820280368337509192915050565b6040518060400160405280614653614660565b8152602001600081525090565b60405180604001604052806000815260200160008152509056fe7468652042534352656c61796572466565206d6f642074656e20646563696d616c73206d757374206265207a65726f7468652042534352656c61796572466565206d757374206265206c657373207468616e2072656c61796572466565746865206d696e44656c65676174696f6e206d7573742062652067726561746572207468616e2072656c61796572466565536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f777468652072656c61796572466565206d6f642074656e20646563696d616c73206d757374206265207a65726f746865206d6573736167652073656e646572206d75737420626520676f7665726e616e636520636f6e74726163747468652072656c61796572466565206d757374206265206c657373207468616e206d696e44656c65676174696f6e7468652072656c61796572466565206d757374206265206d6f7265207468616e2042534352656c61796572466565696e73756666696369656e742062616c616e636520616674657220756e64656c6567617465746865206d6573736167652073656e646572206d7573742062652063726f737320636861696e20636f6e74726163747468652042534352656c61796572466565206d757374206e6f74206265207a65726fa164736f6c6343000604000a", }, { ContractAddr: common.HexToAddress(StakeHubContract), @@ -909,7 +898,7 @@ func init() { { ContractAddr: common.HexToAddress(GovernorContract), CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/cfc0bd1127186a917ddc38fd38d22903034d3f0b", - Code: "6080604052600436106103905760003560e01c80637d5e81e2116101dc578063c59057e411610102578063e23a9a52116100a0578063f23a6e611161006f578063f23a6e6114610cd6578063f8ce560a14610d02578063fc0c546a14610d22578063fe0d94c114610d4357600080fd5b8063e23a9a5214610bab578063ea0217cf14610c76578063eb9019d414610c96578063ece40cc114610cb657600080fd5b8063da95691a116100dc578063da95691a14610af1578063dd4e2ba514610b11578063ddf0b00914610b57578063deaaa7cc14610b7757600080fd5b8063c59057e414610a92578063d07f91e914610ab2578063d33219b414610ad257600080fd5b8063a890c9101161017a578063bc197c8111610149578063bc197c8114610a18578063c01f9e3714610a44578063c170ec0b14610a64578063c28bc2fa14610a7f57600080fd5b8063a890c910146109a3578063ab58fb8e146109c3578063ac431751146109e3578063b58131b014610a0357600080fd5b806391ddadf4116101b657806391ddadf41461092e57806397c3d3341461095a5780639a802a6d1461096e578063a7713a701461098e57600080fd5b80637d5e81e2146108d15780638129fc1c146108f157806384b0196e1461090657600080fd5b806332b8113e116102c15780634bf5d7e91161025f5780635f398a141161022e5780635f398a141461085157806360c4247f1461087157806370b0f660146108915780637b3c71d3146108b157600080fd5b80634bf5d7e9146107c1578063533ddd14146107d657806354fd4d5014610807578063567813881461083157600080fd5b80633e4f49e61161029b5780633e4f49e61461070957806340e58ee5146107365780634385963214610756578063452115d6146107a157600080fd5b806332b8113e146106aa5780633932abb1146106d35780633bccf4fd146106e957600080fd5b8063150b7a021161032e5780632656227d116103085780632656227d146105fc5780632d63f6931461060f5780632fe3e26114610646578063328dd9821461067a57600080fd5b8063150b7a0214610583578063160cbed7146105c757806324bc1a64146105e757600080fd5b8063034201811161036a57806303420181146104cb57806306f3f9e6146104eb57806306fdde031461050b578063143489d01461052d57600080fd5b8063013cf08b1461040057806301ffc9a71461047b57806302a251a3146104ab57600080fd5b366103fb573061039e610d56565b6001600160a01b0316146103f95760405162461bcd60e51b815260206004820152601f60248201527f476f7665726e6f723a206d7573742073656e6420746f206578656375746f720060448201526064015b60405180910390fd5b005b600080fd5b34801561040c57600080fd5b5061042061041b3660046156a8565b610d70565b604080519a8b526001600160a01b0390991660208b0152978901969096526060880194909452608087019290925260a086015260c085015260e084015215156101008301521515610120820152610140015b60405180910390f35b34801561048757600080fd5b5061049b6104963660046156c1565b610e2b565b6040519015158152602001610472565b3480156104b757600080fd5b50610162545b604051908152602001610472565b3480156104d757600080fd5b506104bd6104e6366004615807565b610e3c565b3480156104f757600080fd5b506103f96105063660046156a8565b610f34565b34801561051757600080fd5b50610520610fbf565b60405161047291906158fd565b34801561053957600080fd5b5061056b6105483660046156a8565b60009081526101306020526040902054600160401b90046001600160a01b031690565b6040516001600160a01b039091168152602001610472565b34801561058f57600080fd5b506105ae61059e366004615925565b630a85bd0160e11b949350505050565b6040516001600160e01b03199091168152602001610472565b3480156105d357600080fd5b506104bd6105e2366004615afc565b611052565b3480156105f357600080fd5b506104bd611257565b6104bd61060a366004615afc565b61127d565b34801561061b57600080fd5b506104bd61062a3660046156a8565b600090815261013060205260409020546001600160401b031690565b34801561065257600080fd5b506104bd7fb3b3f3b703cd84ce352197dcff232b1b5d3cfb2025ce47cf04742d0651f1af8881565b34801561068657600080fd5b5061069a6106953660046156a8565b611370565b6040516104729493929190615c54565b3480156106b657600080fd5b5061025c546040516001600160401b039091168152602001610472565b3480156106df57600080fd5b50610161546104bd565b3480156106f557600080fd5b506104bd610704366004615ca1565b611602565b34801561071557600080fd5b506107296107243660046156a8565b611678565b6040516104729190615d05565b34801561074257600080fd5b506103f96107513660046156a8565b611683565b34801561076257600080fd5b5061049b610771366004615d2d565b6000828152610193602090815260408083206001600160a01b038516845260080190915290205460ff1692915050565b3480156107ad57600080fd5b506104bd6107bc366004615afc565b6116ae565b3480156107cd57600080fd5b506105206116c5565b3480156107e257600080fd5b5061049b6107f1366004615d5d565b61028e6020526000908152604090205460ff1681565b34801561081357600080fd5b506040805180820190915260018152603160f81b6020820152610520565b34801561083d57600080fd5b506104bd61084c366004615d7a565b611772565b34801561085d57600080fd5b506104bd61086c366004615da6565b61179b565b34801561087d57600080fd5b506104bd61088c3660046156a8565b6117e5565b34801561089d57600080fd5b506103f96108ac3660046156a8565b61189a565b3480156108bd57600080fd5b506104bd6108cc366004615e29565b611922565b3480156108dd57600080fd5b506104bd6108ec366004615e82565b611974565b3480156108fd57600080fd5b506103f9611a04565b34801561091257600080fd5b5061091b611e41565b6040516104729796959493929190615f22565b34801561093a57600080fd5b50610943611edf565b60405165ffffffffffff9091168152602001610472565b34801561096657600080fd5b5060646104bd565b34801561097a57600080fd5b506104bd610989366004615f84565b611f53565b34801561099a57600080fd5b506104bd611f6a565b3480156109af57600080fd5b506103f96109be366004615d5d565b611f97565b3480156109cf57600080fd5b506104bd6109de3660046156a8565b61201f565b3480156109ef57600080fd5b506103f96109fe366004615fdc565b6120bb565b348015610a0f57600080fd5b506104bd61269a565b348015610a2457600080fd5b506105ae610a3336600461603b565b63bc197c8160e01b95945050505050565b348015610a5057600080fd5b506104bd610a5f3660046156a8565b6126a6565b348015610a7057600080fd5b5061028f5461049b9060ff1681565b6103f9610a8d3660046160ce565b6126b1565b348015610a9e57600080fd5b506104bd610aad366004615afc565b6127c1565b348015610abe57600080fd5b506103f9610acd366004616111565b6127fb565b348015610ade57600080fd5b506101f8546001600160a01b031661056b565b348015610afd57600080fd5b506104bd610b0c36600461613a565b612883565b348015610b1d57600080fd5b5060408051808201909152601a81527f737570706f72743d627261766f2671756f72756d3d627261766f0000000000006020820152610520565b348015610b6357600080fd5b506103f9610b723660046156a8565b61290a565b348015610b8357600080fd5b506104bd7f150214d74d59b7d1e90c73fc22ef3d991dd0a76b046543d4d80ab92d2a50328f81565b348015610bb757600080fd5b50610c46610bc6366004615d2d565b6040805160608101825260008082526020820181905291810191909152506000918252610193602090815260408084206001600160a01b0393909316845260089092018152918190208151606081018352905460ff8082161515835261010082041693820193909352620100009092046001600160601b03169082015290565b6040805182511515815260208084015160ff1690820152918101516001600160601b031690820152606001610472565b348015610c8257600080fd5b506103f9610c913660046156a8565b61292d565b348015610ca257600080fd5b506104bd610cb13660046161db565b6129b5565b348015610cc257600080fd5b506103f9610cd13660046156a8565b6129d6565b348015610ce257600080fd5b506105ae610cf1366004616207565b63f23a6e6160e01b95945050505050565b348015610d0e57600080fd5b506104bd610d1d3660046156a8565b612a5e565b348015610d2e57600080fd5b506101c55461056b906001600160a01b031681565b6103f9610d513660046156a8565b612aed565b6000610d6b6101f8546001600160a01b031690565b905090565b8060008080808080808080610d848a61201f565b60008c815261013060205260409020549098506001600160401b03169650610dab8b6126a6565b60008c81526101936020526040812080546005820154600683015460078401546001600160a01b039093169e50949a509850929650919450610dec8d611678565b90506002816007811115610e0257610e02615cef565b1493506007816007811115610e1957610e19615cef565b14925050509193959799509193959799565b6000610e3682612b10565b92915050565b600080610ee0610ed87fb3b3f3b703cd84ce352197dcff232b1b5d3cfb2025ce47cf04742d0651f1af888c8c8c8c604051610e7892919061626f565b60405180910390208b80519060200120604051602001610ebd959493929190948552602085019390935260ff9190911660408401526060830152608082015260a00190565b60405160208183030381529060405280519060200120612b35565b868686612b62565b9050610f268a828b8b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508d9250612b80915050565b9a9950505050505050505050565b610f3c610d56565b6001600160a01b0316336001600160a01b031614610f6c5760405162461bcd60e51b81526004016103f09061627f565b30610f75610d56565b6001600160a01b031614610fb35760008036604051610f9592919061626f565b604051809103902090505b80610fac610131612b8f565b03610fa057505b610fbc81612c0e565b50565b606061012f8054610fcf906162b6565b80601f0160208091040260200160405190810160405280929190818152602001828054610ffb906162b6565b80156110485780601f1061101d57610100808354040283529160200191611048565b820191906000526020600020905b81548152906001019060200180831161102b57829003601f168201915b5050505050905090565b600080611061868686866127c1565b9050600461106e82611678565b600781111561107f5761107f615cef565b1461109c5760405162461bcd60e51b81526004016103f0906162f0565b6101f8546040805163793d064960e11b815290516000926001600160a01b03169163f27a0c929160048083019260209291908290030181865afa1580156110e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061110b9190616331565b6101f85460405163b1c5f42760e01b81529192506001600160a01b03169063b1c5f42790611146908a908a908a906000908b9060040161634a565b602060405180830381865afa158015611163573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111879190616331565b60008381526101f96020526040808220929092556101f85491516308f2a0bb60e41b81526001600160a01b0390921691638f2a0bb0916111d4918b918b918b91908b908990600401616398565b600060405180830381600087803b1580156111ee57600080fd5b505af1158015611202573d6000803e3d6000fd5b505050507f9a2e42fd6722813d69113e7d0079d3d940171428df7373df9c7f7617cfda28928282426112349190616406565b604080519283526020830191909152015b60405180910390a15095945050505050565b6000610d6b6001611266611edf565b6112709190616419565b65ffffffffffff16612a5e565b60008061128c868686866127c1565b9050600061129982611678565b905060048160078111156112af576112af615cef565b14806112cc575060058160078111156112ca576112ca615cef565b145b6112e85760405162461bcd60e51b81526004016103f0906162f0565b6000828152610130602052604090819020600201805460ff19166001179055517f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f906113379084815260200190565b60405180910390a161134c8288888888612d7f565b6113598288888888612e20565b6113668288888888612ea7565b5095945050505050565b60608060608060006101936000878152602001908152602001600020905080600101816002018260030183600401838054806020026020016040519081016040528092919081815260200182805480156113f357602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116113d5575b505050505093508280548060200260200160405190810160405280929190818152602001828054801561144557602002820191906000526020600020905b815481526020019060010190808311611431575b5050505050925081805480602002602001604051908101604052809291908181526020016000905b8282101561151957838290600052602060002001805461148c906162b6565b80601f01602080910402602001604051908101604052809291908181526020018280546114b8906162b6565b80156115055780601f106114da57610100808354040283529160200191611505565b820191906000526020600020905b8154815290600101906020018083116114e857829003601f168201915b50505050508152602001906001019061146d565b50505050915080805480602002602001604051908101604052809291908181526020016000905b828210156115ec57838290600052602060002001805461155f906162b6565b80601f016020809104026020016040519081016040528092919081815260200182805461158b906162b6565b80156115d85780601f106115ad576101008083540402835291602001916115d8565b820191906000526020600020905b8154815290600101906020018083116115bb57829003601f168201915b505050505081526020019060010190611540565b5050505090509450945094509450509193509193565b604080517f150214d74d59b7d1e90c73fc22ef3d991dd0a76b046543d4d80ab92d2a50328f602082015290810186905260ff85166060820152600090819061165090610ed890608001610ebd565b905061166d87828860405180602001604052806000815250612ee2565b979650505050505050565b6000610e3682612f05565b60008060008061169285613052565b93509350935093506116a6848484846116ae565b505050505050565b60006116bc858585856132e3565b95945050505050565b6101c55460408051634bf5d7e960e01b815290516060926001600160a01b031691634bf5d7e99160048083019260009291908290030181865afa92505050801561173157506040513d6000823e601f3d908101601f1916820160405261172e919081019061643f565b60015b61176d575060408051808201909152601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c74000000602082015290565b919050565b60008033905061179384828560405180602001604052806000815250612ee2565b949350505050565b60008033905061166d87828888888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a9250612b80915050565b61022b546000908082036117fe57505061022a54919050565b600061022b61180e6001846164ac565b8154811061181e5761181e6164bf565b60009182526020918290206040805180820190915291015463ffffffff8116808352600160201b9091046001600160e01b0316928201929092529150841061187457602001516001600160e01b03169392505050565b611889611880856133ae565b61022b90613417565b6001600160e01b0316949350505050565b6118a2610d56565b6001600160a01b0316336001600160a01b0316146118d25760405162461bcd60e51b81526004016103f09061627f565b306118db610d56565b6001600160a01b03161461191957600080366040516118fb92919061626f565b604051809103902090505b80611912610131612b8f565b0361190657505b610fbc816134ca565b60008033905061196a86828787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612ee292505050565b9695505050505050565b600061197e61350d565b60005b85518110156119f75761028e60008783815181106119a1576119a16164bf565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff166119e557604051630b094f2760e31b815260040160405180910390fd5b806119ef816164d5565b915050611981565b506116bc858585856135b8565b600054610100900460ff1615808015611a245750600054600160ff909116105b80611a3e5750303b158015611a3e575060005460ff166001145b611aa15760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016103f0565b6000805460ff191660011790558015611ac4576000805461ff0019166101001790555b334114611ae45760405163022d8c9560e31b815260040160405180910390fd5b3a15611b03576040516383f1b1d360e01b815260040160405180910390fd5b611b2f6040518060400160405280600b81526020016a2129a1a3b7bb32b93737b960a91b815250613620565b611b49620151806212750068056bc75e2d63100000613677565b611b516136ae565b611b5c6120056136d5565b611b67612006613705565b611b71600a613735565b611b7d62015180613765565b61028e6020527ff0f52cefb444f33092ac77280e2ff9c808a9c078a96d3cd7513137548137ed8f8054600160ff1991821681179092557fb2c9e894c6f17bfc84a6708e0ea85c2729271d7cae0a8d875cd1080fb415e7a080548216831790557fd8ceb939a734f5a4e0a6fede9e31504e16ac856b555e8bac20ad743b9ff2976a80548216831790557f2a7b967fc66f4b36023165170b23a76f880d3dbbf244a856aeee9e670cef725980548216831790557fdb1a1113bac2e4f0e6f8c2f2bc4f6dbecf1fccb033d5df1b55b5c5ad6c20ac7980548216831790557f8b1888b379fb3b749668d86c5bf8aaada8e2276c6ced3a4efcc1e877827ce0b380548216831790557feeeea8d485053a64711f2c5802d2cc63251dd394956c140a2e30db7cef242ec580548216831790557f4cdb1a6c4b56f62f27f7202d75e865c2405f138cb32ec45019c0f2ca8f91e47280548216831790557f49d6c403a3197b15e024f109c83eb730d7af1a8b49fc6f820e09bad2597c14c980548216831790557f7a41b38ceb33f296c1ff3db5ffcc6542acb091d5fb27586f3c551dd2ebac063880548216831790557f701fe333ee20fad5d5a6a9930dddd3fb815af1d976d5250e394e39d6e4123e3880548216831790557fee7ba9842df249188adc0fc380980c3099f608b602924e083dd61e8e70845b4a80548216831790557f29973aeebf3c17f2c3a9cf7ace17f2798aa544e1ea7427938024cde6df46bac180548216831790557f74c0d6e29c82d6628d5f083f86fc15f0c6acef97321252a1eee0bd893dae276580548216831790556120066000527f1bdfc01e60036e5be56ae85d8394ddf727e1021b3d74de5b554fedea2de43767805490911690911790558015610fbc576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b6000606080600080600060606065546000801b148015611e615750606654155b611ea55760405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b60448201526064016103f0565b611ead613795565b611eb56137a4565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b6101c554604080516324776b7d60e21b815290516000926001600160a01b0316916391ddadf49160048083019260209291908290030181865afa925050508015611f46575060408051601f3d908101601f19168201909252611f43918101906164ee565b60015b61176d57610d6b436137b3565b6000611f6084848461381a565b90505b9392505050565b61022b5460009015611f8f57611f8161022b613891565b6001600160e01b0316905090565b5061022a5490565b611f9f610d56565b6001600160a01b0316336001600160a01b031614611fcf5760405162461bcd60e51b81526004016103f09061627f565b30611fd8610d56565b6001600160a01b0316146120165760008036604051611ff892919061626f565b604051809103902090505b8061200f610131612b8f565b0361200357505b610fbc816138c1565b6101f85460008281526101f9602052604080822054905163d45c443560e01b81526004810191909152909182916001600160a01b039091169063d45c443590602401602060405180830381865afa15801561207e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120a29190616331565b9050806001146120b25780611f63565b60009392505050565b33611007146120e157604051630f22c43960e41b815261100760048201526024016103f0565b6121476040518060400160405280600b81526020016a766f74696e6744656c617960a81b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505061392c9050565b156121f057602081146121755783838383604051630a5a604160e01b81526004016103f0949392919061653f565b604080516020601f84018190048102820181019092528281526000916121b69185858083850183828082843760009201919091525092939250506139859050565b9050806000036121e15784848484604051630a5a604160e01b81526004016103f0949392919061653f565b6121ea816134ca565b50612657565b6122576040518060400160405280600c81526020016b1d9bdd1a5b99d4195c9a5bd960a21b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505061392c9050565b156122fa57602081146122855783838383604051630a5a604160e01b81526004016103f0949392919061653f565b604080516020601f84018190048102820181019092528281526000916122c69185858083850183828082843760009201919091525092939250506139859050565b9050806000036122f15784848484604051630a5a604160e01b81526004016103f0949392919061653f565b6121ea8161398a565b612366604051806040016040528060118152602001701c1c9bdc1bdcd85b151a1c995cda1bdb19607a1b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505061392c9050565b1561240957602081146123945783838383604051630a5a604160e01b81526004016103f0949392919061653f565b604080516020601f84018190048102820181019092528281526000916123d59185858083850183828082843760009201919091525092939250506139859050565b9050806000036124005784848484604051630a5a604160e01b81526004016103f0949392919061653f565b6121ea81613a2d565b6124736040518060400160405280600f81526020016e38bab7b93ab6a73ab6b2b930ba37b960891b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505061392c9050565b1561251657602081146124a15783838383604051630a5a604160e01b81526004016103f0949392919061653f565b604080516020601f84018190048102820181019092528281526000916124e29185858083850183828082843760009201919091525092939250506139859050565b90508060000361250d5784848484604051630a5a604160e01b81526004016103f0949392919061653f565b6121ea81612c0e565b612585604051806040016040528060148152602001736d696e506572696f64416674657251756f72756d60601b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505061392c9050565b1561263657600881146125b35783838383604051630a5a604160e01b81526004016103f0949392919061653f565b60006125f9600884848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506139859050565b9050806001600160401b031660000361262d5784848484604051630a5a604160e01b81526004016103f0949392919061653f565b6121ea81613a70565b838383836040516325ee20d560e21b81526004016103f0949392919061653f565b7ff1ce9b2cbf50eeb05769a29e2543fd350cab46894a7dd9978a12d534bb20e6338484848460405161268c949392919061653f565b60405180910390a150505050565b6000610d6b6101635490565b6000610e3682613adc565b6126b9610d56565b6001600160a01b0316336001600160a01b0316146126e95760405162461bcd60e51b81526004016103f09061627f565b306126f2610d56565b6001600160a01b031614612730576000803660405161271292919061626f565b604051809103902090505b80612729610131612b8f565b0361271d57505b600080856001600160a01b031685858560405161274e92919061626f565b60006040518083038185875af1925050503d806000811461278b576040519150601f19603f3d011682016040523d82523d6000602084013e612790565b606091505b50915091506127b8828260405180606001604052806028815260200161692760289139613b1a565b50505050505050565b6000848484846040516020016127da9493929190616566565b60408051601f19818403018152919052805160209091012095945050505050565b612803610d56565b6001600160a01b0316336001600160a01b0316146128335760405162461bcd60e51b81526004016103f09061627f565b3061283c610d56565b6001600160a01b03161461287a576000803660405161285c92919061626f565b604051809103902090505b80612873610131612b8f565b0361286757505b610fbc81613a70565b600082518451146128e75760405162461bcd60e51b815260206004820152602860248201527f476f7665726e6f72427261766f3a20696e76616c6964207369676e61747572656044820152670e640d8cadccee8d60c31b60648201526084016103f0565b6128f5338787878787613b33565b61196a86866129048787613bf1565b85611974565b60008060008061291985613052565b93509350935093506116a684848484611052565b612935610d56565b6001600160a01b0316336001600160a01b0316146129655760405162461bcd60e51b81526004016103f09061627f565b3061296e610d56565b6001600160a01b0316146129ac576000803660405161298e92919061626f565b604051809103902090505b806129a5610131612b8f565b0361299957505b610fbc8161398a565b6000611f6383836129d160408051602081019091526000815290565b61381a565b6129de610d56565b6001600160a01b0316336001600160a01b031614612a0e5760405162461bcd60e51b81526004016103f09061627f565b30612a17610d56565b6001600160a01b031614612a555760008036604051612a3792919061626f565b604051809103902090505b80612a4e610131612b8f565b03612a4257505b610fbc81613a2d565b60006064612a6b836117e5565b6101c554604051632394e7a360e21b8152600481018690526001600160a01b0390911690638e539e8c90602401602060405180830381865afa158015612ab5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ad99190616331565b612ae391906165b1565b610e3691906165de565b600080600080612afc85613052565b93509350935093506116a68484848461127d565b60006001600160e01b03198216636e665ced60e01b1480610e365750610e3682613d23565b6000610e36612b42613dbf565b8360405161190160f01b8152600281019290925260228201526042902090565b6000806000612b7387878787613dc9565b9150915061136681613e8d565b600061196a8686868686613fd7565b6000612baa8254600f81810b600160801b909204900b131590565b15612bc857604051631ed9509560e11b815260040160405180910390fd5b508054600f0b6000818152600180840160205260408220805492905583546fffffffffffffffffffffffffffffffff191692016001600160801b03169190911790915590565b6064811115612c915760405162461bcd60e51b815260206004820152604360248201527f476f7665726e6f72566f74657351756f72756d4672616374696f6e3a2071756f60448201527f72756d4e756d657261746f72206f7665722071756f72756d44656e6f6d696e616064820152623a37b960e91b608482015260a4016103f0565b6000612c9b611f6a565b90508015801590612cad575061022b54155b15612d1257604080518082019091526000815261022b9060208101612cd1846140da565b6001600160e01b039081169091528254600181018455600093845260209384902083519490930151909116600160201b0263ffffffff909316929092179101555b612d40612d2d612d20611edf565b65ffffffffffff166133ae565b612d36846140da565b61022b9190614143565b505060408051828152602081018490527f0553476bf02ef2726e8ce5ced78d63e26e602e4a2257b1f559418e24b4633997910160405180910390a15050565b30612d88610d56565b6001600160a01b031614612e195760005b84518110156116a657306001600160a01b0316858281518110612dbe57612dbe6164bf565b60200260200101516001600160a01b031603612e0957612e09838281518110612de957612de96164bf565b60200260200101518051906020012061013161415e90919063ffffffff16565b612e12816164d5565b9050612d99565b5050505050565b60005b8451811015612e995761028e6000868381518110612e4357612e436164bf565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16612e8757604051630b094f2760e31b815260040160405180910390fd5b80612e91816164d5565b915050612e23565b50612e19858585858561419a565b30612eb0610d56565b6001600160a01b031614612e195761013154600f81810b600160801b909204900b1315612e1957600061013155612e19565b60006116bc85858585612f0060408051602081019091526000815290565b612b80565b600080612f118361420f565b90506004816007811115612f2757612f27615cef565b14612f325792915050565b60008381526101f9602052604090205480612f4e575092915050565b6101f854604051632ab0f52960e01b8152600481018390526001600160a01b0390911690632ab0f52990602401602060405180830381865afa158015612f98573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fbc9190616600565b15612fcb575060079392505050565b6101f854604051632c258a9f60e11b8152600481018390526001600160a01b039091169063584b153e90602401602060405180830381865afa158015613015573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130399190616600565b15613048575060059392505050565b5060029392505050565b606080606060008061019360008781526020019081526020016000209050806001018160020161322483600301805480602002602001604051908101604052809291908181526020016000905b8282101561314b5783829060005260206000200180546130be906162b6565b80601f01602080910402602001604051908101604052809291908181526020018280546130ea906162b6565b80156131375780601f1061310c57610100808354040283529160200191613137565b820191906000526020600020905b81548152906001019060200180831161311a57829003601f168201915b50505050508152602001906001019061309f565b50505060048601805460408051602080840282018101909252828152935060009084015b8282101561321b57838290600052602060002001805461318e906162b6565b80601f01602080910402602001604051908101604052809291908181526020018280546131ba906162b6565b80156132075780601f106131dc57610100808354040283529160200191613207565b820191906000526020600020905b8154815290600101906020018083116131ea57829003601f168201915b50505050508152602001906001019061316f565b50505050613bf1565b600984015483546040805160208084028201810190925282815291869183018282801561327a57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161325c575b50505050509350828054806020026020016040519081016040528092919081815260200182805480156132cc57602002820191906000526020600020905b8154815260200190600101908083116132b8575b505050505092509450945094509450509193509193565b6000806132f2868686866127c1565b600081815261019360205260409020549091506001600160a01b031633811480613346575061331f61269a565b61334482600161332d611edf565b6133379190616419565b65ffffffffffff166129b5565b105b6133a25760405162461bcd60e51b815260206004820152602760248201527f476f7665726e6f72427261766f3a2070726f706f7365722061626f76652074686044820152661c995cda1bdb1960ca1b60648201526084016103f0565b61166d87878787614347565b600063ffffffff8211156134135760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201526532206269747360d01b60648201526084016103f0565b5090565b81546000908181600581111561347457600061343284614355565b61343c90856164ac565b60008881526020902090915081015463ffffffff908116908716101561346457809150613472565b61346f816001616406565b92505b505b60006134828787858561443d565b905080156134bd576134a7876134996001846164ac565b600091825260209091200190565b54600160201b90046001600160e01b031661166d565b6000979650505050505050565b6101615460408051918252602082018390527fc565b045403dc03c2eea82b81a0465edad9e2e7fc4d97e11421c209da93d7a93910160405180910390a161016155565b61028f5460ff166135b6576a084595161401484a0000006120056001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613564573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135889190616331565b10156135a7576040516311b6707f60e01b815260040160405180910390fd5b61028f805460ff191660011790555b565b600061361433868686516001600160401b038111156135d9576135d9615744565b60405190808252806020026020018201604052801561360c57816020015b60608152602001906001900390816135f75790505b508787613b33565b6116bc85858585614493565b600054610100900460ff166136475760405162461bcd60e51b81526004016103f090616622565b61366e816136696040805180820190915260018152603160f81b602082015290565b614872565b610fbc816148c1565b600054610100900460ff1661369e5760405162461bcd60e51b81526004016103f090616622565b6136a98383836148f9565b505050565b600054610100900460ff166135b65760405162461bcd60e51b81526004016103f090616622565b600054610100900460ff166136fc5760405162461bcd60e51b81526004016103f090616622565b610fbc8161493b565b600054610100900460ff1661372c5760405162461bcd60e51b81526004016103f090616622565b610fbc81614985565b600054610100900460ff1661375c5760405162461bcd60e51b81526004016103f090616622565b610fbc816149ac565b600054610100900460ff1661378c5760405162461bcd60e51b81526004016103f090616622565b610fbc816149d3565b606060678054610fcf906162b6565b606060688054610fcf906162b6565b600065ffffffffffff8211156134135760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203460448201526538206269747360d01b60648201526084016103f0565b6101c554604051630748d63560e31b81526001600160a01b038581166004830152602482018590526000921690633a46b1a890604401602060405180830381865afa15801561386d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f609190616331565b805460009080156120b2576138ab836134996001846164ac565b54600160201b90046001600160e01b0316611f63565b6101f854604080516001600160a01b03928316815291831660208301527f08f74ea46ef7894f65eabfb5e6e695de773a000b47c529ab559178069b226401910160405180910390a16101f880546001600160a01b0319166001600160a01b0392909216919091179055565b60008160405160200161393f919061666d565b6040516020818303038152906040528051906020012083604051602001613966919061666d565b6040516020818303038152906040528051906020012014905092915050565b015190565b600081116139ea5760405162461bcd60e51b815260206004820152602760248201527f476f7665726e6f7253657474696e67733a20766f74696e6720706572696f6420604482015266746f6f206c6f7760c81b60648201526084016103f0565b6101625460408051918252602082018390527f7e3f7f0708a84de9203036abaa450dccc85ad5ff52f78c170f3edb55cf5e8828910160405180910390a161016255565b6101635460408051918252602082018390527fccb45da8d5717e6c4544694297c4ba5cf151d455c9bb0ed4fc7a38411bc05461910160405180910390a161016355565b61025c54604080516001600160401b03928316815291831660208301527f7ca4ac117ed3cdce75c1161d8207c440389b1a15d69d096831664657c07dafc2910160405180910390a161025c805467ffffffffffffffff19166001600160401b0392909216919091179055565b60008181526101306020526040812060010154610e36906001600160401b0316600084815261025d60205260409020546001600160401b03166149fa565b60608315613b29575081611f63565b611f638383614a10565b805160208201206000613b518787613b4b8888613bf1565b856127c1565b600081815261019360205260409020600981015491925090613be65780546001600160a01b0319166001600160a01b038a161781558751613b9b90600183019060208b01906154df565b508651613bb190600283019060208a0190615540565b508551613bc7906003830190602089019061557b565b508451613bdd90600483019060208801906155cd565b50600981018390555b505050505050505050565b6060600082516001600160401b03811115613c0e57613c0e615744565b604051908082528060200260200182016040528015613c4157816020015b6060815260200190600190039081613c2c5790505b50905060005b8151811015613d1b57848181518110613c6257613c626164bf565b602002602001015151600014613cd257848181518110613c8457613c846164bf565b602002602001015180519060200120848281518110613ca557613ca56164bf565b6020026020010151604051602001613cbe929190616689565b604051602081830303815290604052613ced565b838181518110613ce457613ce46164bf565b60200260200101515b828281518110613cff57613cff6164bf565b602002602001018190525080613d14906164d5565b9050613c47565b509392505050565b600063288ace0360e11b6318df743f60e31b63bf26d89760e01b6379dd796f60e01b6001600160e01b03198616821480613d6957506001600160e01b0319868116908216145b80613d8057506001600160e01b0319868116908516145b80613d9b57506001600160e01b03198616630271189760e51b145b8061196a57506301ffc9a760e01b6001600160e01b03198716149695505050505050565b6000610d6b614a3a565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115613e005750600090506003613e84565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015613e54573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116613e7d57600060019250925050613e84565b9150600090505b94509492505050565b6000816004811115613ea157613ea1615cef565b03613ea95750565b6001816004811115613ebd57613ebd615cef565b03613f0a5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016103f0565b6002816004811115613f1e57613f1e615cef565b03613f6b5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016103f0565b6003816004811115613f7f57613f7f615cef565b03610fbc5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016103f0565b600080613fe78787878787614aae565b600088815261025d60205260409020549091506001600160401b0316158015614014575061401487614c04565b1561196a57600061402e61025c546001600160401b031690565b614036611edf565b65ffffffffffff1661404891906166ba565b9050614053886126a6565b816001600160401b031611156140a2576040516001600160401b038216815288907f541f725fb9f7c98a30cc9c0ff32fbb14358cd7159c847a3aa20a2bdc442ba5119060200160405180910390a25b600088815261025d60205260409020805467ffffffffffffffff19166001600160401b03929092169190911790559695505050505050565b60006001600160e01b038211156134135760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20326044820152663234206269747360c81b60648201526084016103f0565b600080614151858585614c44565b915091505b935093915050565b8154600160801b90819004600f0b6000818152600180860160205260409091209390935583546001600160801b03908116939091011602179055565b6101f85460405163e38335e560e01b81526001600160a01b039091169063e38335e59034906141d690889088908890600090899060040161634a565b6000604051808303818588803b1580156141ef57600080fd5b505af1158015614203573d6000803e3d6000fd5b50505050505050505050565b600081815261013060205260408120600281015460ff16156142345750600792915050565b6002810154610100900460ff161561424f5750600292915050565b600083815261013060205260408120546001600160401b0316908190036142b85760405162461bcd60e51b815260206004820152601d60248201527f476f7665726e6f723a20756e6b6e6f776e2070726f706f73616c20696400000060448201526064016103f0565b60006142c2611edf565b65ffffffffffff1690508082106142de57506000949350505050565b60006142e9866126a6565b90508181106142fe5750600195945050505050565b61430786614c04565b801561432a57506000868152610193602052604090206006810154600590910154115b1561433b5750600495945050505050565b50600395945050505050565b60006116bc85858585614de3565b60008160000361436757506000919050565b6000600161437484614e99565b901c6001901b9050600181848161438d5761438d6165c8565b048201901c905060018184816143a5576143a56165c8565b048201901c905060018184816143bd576143bd6165c8565b048201901c905060018184816143d5576143d56165c8565b048201901c905060018184816143ed576143ed6165c8565b048201901c90506001818481614405576144056165c8565b048201901c9050600181848161441d5761441d6165c8565b048201901c9050611f6381828581614437576144376165c8565b04614f2d565b60005b81831015613d1b5760006144548484614f3c565b60008781526020902090915063ffffffff86169082015463ffffffff16111561447f5780925061448d565b61448a816001616406565b93505b50614440565b6000336144a08184614f57565b6144ec5760405162461bcd60e51b815260206004820152601d60248201527f476f7665726e6f723a2070726f706f736572207265737472696374656400000060448201526064016103f0565b60006144f6611edf565b65ffffffffffff16905061450861269a565b61451783610cb16001856164ac565b101561457f5760405162461bcd60e51b815260206004820152603160248201527f476f7665726e6f723a2070726f706f73657220766f7465732062656c6f7720706044820152701c9bdc1bdcd85b081d1a1c995cda1bdb19607a1b60648201526084016103f0565b600061459488888888805190602001206127c1565b905086518851146145b75760405162461bcd60e51b81526004016103f0906166da565b85518851146145d85760405162461bcd60e51b81526004016103f0906166da565b60008851116146295760405162461bcd60e51b815260206004820152601860248201527f476f7665726e6f723a20656d7074792070726f706f73616c000000000000000060448201526064016103f0565b600081815261013060205260409020546001600160401b0316156146995760405162461bcd60e51b815260206004820152602160248201527f476f7665726e6f723a2070726f706f73616c20616c72656164792065786973746044820152607360f81b60648201526084016103f0565b60006146a56101615490565b6146af9084616406565b905060006146bd6101625490565b6146c79083616406565b90506040518060e001604052806146dd84615048565b6001600160401b031681526001600160a01b03871660208201526000604082015260600161470a83615048565b6001600160401b03908116825260006020808401829052604080850183905260609485018390528883526101308252918290208551815492870151878501519186166001600160e01b031990941693909317600160401b6001600160a01b039094168402176001600160e01b0316600160e01b60e09290921c91909102178155938501516080860151908416921c0217600183015560a08301516002909201805460c09094015161ffff1990941692151561ff00191692909217610100931515939093029290921790558a517f7d84a6263ae0d98d3329bd7b46bb4e8d6f98cd35a7adb45c274c8b7fd5ebd5e091859188918e918e9181111561480f5761480f615744565b60405190808252806020026020018201604052801561484257816020015b606081526020019060019003908161482d5790505b508d88888f60405161485c9998979695949392919061671b565b60405180910390a1509098975050505050505050565b600054610100900460ff166148995760405162461bcd60e51b81526004016103f090616622565b60676148a583826167f9565b5060686148b282826167f9565b50506000606581905560665550565b600054610100900460ff166148e85760405162461bcd60e51b81526004016103f090616622565b61012f6148f582826167f9565b5050565b600054610100900460ff166149205760405162461bcd60e51b81526004016103f090616622565b614929836134ca565b6149328261398a565b6136a981613a2d565b600054610100900460ff166149625760405162461bcd60e51b81526004016103f090616622565b6101c580546001600160a01b0319166001600160a01b0392909216919091179055565b600054610100900460ff166120165760405162461bcd60e51b81526004016103f090616622565b600054610100900460ff16610fb35760405162461bcd60e51b81526004016103f090616622565b600054610100900460ff1661287a5760405162461bcd60e51b81526004016103f090616622565b6000818311614a095781611f63565b5090919050565b815115614a205781518083602001fd5b8060405162461bcd60e51b81526004016103f091906158fd565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f614a656150b0565b614a6d615109565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b6000858152610130602052604081206001614ac888611678565b6007811115614ad957614ad9615cef565b14614b325760405162461bcd60e51b815260206004820152602360248201527f476f7665726e6f723a20766f7465206e6f742063757272656e746c792061637460448201526269766560e81b60648201526084016103f0565b8054600090614b4c9088906001600160401b03168661381a565b9050614b5b888888848861513a565b8351600003614bb057866001600160a01b03167fb8e138887d0aa13bab447e82de9d5c1777041ecd21ca36ba824ff1e6c07ddda489888489604051614ba394939291906168b8565b60405180910390a261166d565b866001600160a01b03167fe2babfbac5889a709b63bb7f598b324e08bc5a4fb9ec647fb3cbc9ec07eb87128988848989604051614bf19594939291906168e0565b60405180910390a2979650505050505050565b6000818152610193602052604081206005810154614c3b610d1d85600090815261013060205260409020546001600160401b031690565b11159392505050565b825460009081908015614d8a576000614c62876134996001856164ac565b60408051808201909152905463ffffffff808216808452600160201b9092046001600160e01b031660208401529192509087161015614ce35760405162461bcd60e51b815260206004820152601b60248201527f436865636b706f696e743a2064656372656173696e67206b657973000000000060448201526064016103f0565b805163ffffffff808816911603614d2b5784614d04886134996001866164ac565b80546001600160e01b0392909216600160201b0263ffffffff909216919091179055614d7a565b6040805180820190915263ffffffff80881682526001600160e01b0380881660208085019182528b54600181018d5560008d81529190912094519151909216600160201b029216919091179101555b6020015192508391506141569050565b50506040805180820190915263ffffffff80851682526001600160e01b0380851660208085019182528854600181018a5560008a815291822095519251909316600160201b029190931617920191909155905081614156565b600080614df2868686866152d8565b60008181526101f96020526040902054909150156116bc576101f85460008281526101f960205260409081902054905163c4d252f560e01b81526001600160a01b039092169163c4d252f591614e4e9160040190815260200190565b600060405180830381600087803b158015614e6857600080fd5b505af1158015614e7c573d6000803e3d6000fd5b50505060008281526101f960205260408120555095945050505050565b600080608083901c15614eae57608092831c92015b604083901c15614ec057604092831c92015b602083901c15614ed257602092831c92015b601083901c15614ee457601092831c92015b600883901c15614ef657600892831c92015b600483901c15614f0857600492831c92015b600283901c15614f1a57600292831c92015b600183901c15610e365760010192915050565b6000818310614a095781611f63565b6000614f4b60028484186165de565b611f6390848416616406565b80516000906034811015614f6f576001915050610e36565b82810160131901516001600160a01b031981166b046e0e4dee0dee6cae47a60f60a31b14614fa257600192505050610e36565b600080614fb06028856164ac565b90505b8381101561502757600080614fe7888481518110614fd357614fd36164bf565b01602001516001600160f81b0319166153e5565b9150915081614fff5760019650505050505050610e36565b8060ff166004856001600160a01b0316901b179350505080615020906164d5565b9050614fb3565b50856001600160a01b0316816001600160a01b031614935050505092915050565b60006001600160401b038211156134135760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203660448201526534206269747360d01b60648201526084016103f0565b6000806150bb613795565b8051909150156150d2578051602090910120919050565b60655480156150e15792915050565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4709250505090565b6000806151146137a4565b80519091501561512b578051602090910120919050565b60665480156150e15792915050565b6000858152610193602090815260408083206001600160a01b038816845260088101909252909120805460ff16156151ca5760405162461bcd60e51b815260206004820152602d60248201527f476f7665726e6f72436f6d7061746962696c697479427261766f3a20766f746560448201526c08185b1c9958591e4818d85cdd609a1b60648201526084016103f0565b805460ff86166101000261ffff199091161760011781556151ea84615477565b81546001600160601b039190911662010000026dffffffffffffffffffffffff00001990911617815560ff851661523a578382600601600082825461522f9190616406565b909155506127b89050565b60001960ff86160161525a578382600501600082825461522f9190616406565b60011960ff86160161527a578382600701600082825461522f9190616406565b60405162461bcd60e51b815260206004820152602d60248201527f476f7665726e6f72436f6d7061746962696c697479427261766f3a20696e766160448201526c6c696420766f7465207479706560981b60648201526084016103f0565b6000806152e7868686866127c1565b905060006152f482611678565b9050600281600781111561530a5761530a615cef565b1415801561532a5750600681600781111561532757615327615cef565b14155b80156153485750600781600781111561534557615345615cef565b14155b6153945760405162461bcd60e51b815260206004820152601d60248201527f476f7665726e6f723a2070726f706f73616c206e6f742061637469766500000060448201526064016103f0565b6000828152610130602052604090819020600201805461ff001916610100179055517f789cf55be980739dad1d0699b93b58e806b51c9d96619bfa8fe0a28abaa7b30c906112459084815260200190565b60008060f883901c602f811180156154005750603a8160ff16105b1561541557600194602f199091019350915050565b8060ff16604010801561542b575060478160ff16105b15615440576001946036199091019350915050565b8060ff166060108015615456575060678160ff16105b1561546b576001946056199091019350915050565b50600093849350915050565b60006001600160601b038211156134135760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203960448201526536206269747360d01b60648201526084016103f0565b828054828255906000526020600020908101928215615534579160200282015b8281111561553457825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906154ff565b5061341392915061561f565b828054828255906000526020600020908101928215615534579160200282015b82811115615534578251825591602001919060010190615560565b8280548282559060005260206000209081019282156155c1579160200282015b828111156155c157825182906155b190826167f9565b509160200191906001019061559b565b50613413929150615634565b828054828255906000526020600020908101928215615613579160200282015b82811115615613578251829061560390826167f9565b50916020019190600101906155ed565b50613413929150615651565b5b808211156134135760008155600101615620565b80821115613413576000615648828261566e565b50600101615634565b80821115613413576000615665828261566e565b50600101615651565b50805461567a906162b6565b6000825580601f1061568a575050565b601f016020900490600052602060002090810190610fbc919061561f565b6000602082840312156156ba57600080fd5b5035919050565b6000602082840312156156d357600080fd5b81356001600160e01b031981168114611f6357600080fd5b803560ff8116811461176d57600080fd5b60008083601f84011261570e57600080fd5b5081356001600160401b0381111561572557600080fd5b60208301915083602082850101111561573d57600080fd5b9250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561578257615782615744565b604052919050565b60006001600160401b038211156157a3576157a3615744565b50601f01601f191660200190565b600082601f8301126157c257600080fd5b81356157d56157d08261578a565b61575a565b8181528460208386010111156157ea57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060008060008060e0898b03121561582357600080fd5b8835975061583360208a016156eb565b965060408901356001600160401b038082111561584f57600080fd5b61585b8c838d016156fc565b909850965060608b013591508082111561587457600080fd5b506158818b828c016157b1565b94505061589060808a016156eb565b925060a0890135915060c089013590509295985092959890939650565b60005b838110156158c85781810151838201526020016158b0565b50506000910152565b600081518084526158e98160208601602086016158ad565b601f01601f19169290920160200192915050565b602081526000611f6360208301846158d1565b6001600160a01b0381168114610fbc57600080fd5b6000806000806080858703121561593b57600080fd5b843561594681615910565b9350602085013561595681615910565b92506040850135915060608501356001600160401b0381111561597857600080fd5b615984878288016157b1565b91505092959194509250565b60006001600160401b038211156159a9576159a9615744565b5060051b60200190565b600082601f8301126159c457600080fd5b813560206159d46157d083615990565b82815260059290921b840181019181810190868411156159f357600080fd5b8286015b84811015615a17578035615a0a81615910565b83529183019183016159f7565b509695505050505050565b600082601f830112615a3357600080fd5b81356020615a436157d083615990565b82815260059290921b84018101918181019086841115615a6257600080fd5b8286015b84811015615a175780358352918301918301615a66565b600082601f830112615a8e57600080fd5b81356020615a9e6157d083615990565b82815260059290921b84018101918181019086841115615abd57600080fd5b8286015b84811015615a175780356001600160401b03811115615ae05760008081fd5b615aee8986838b01016157b1565b845250918301918301615ac1565b60008060008060808587031215615b1257600080fd5b84356001600160401b0380821115615b2957600080fd5b615b35888389016159b3565b95506020870135915080821115615b4b57600080fd5b615b5788838901615a22565b94506040870135915080821115615b6d57600080fd5b50615b7a87828801615a7d565b949793965093946060013593505050565b600081518084526020808501945080840160005b83811015615bc45781516001600160a01b031687529582019590820190600101615b9f565b509495945050505050565b600081518084526020808501945080840160005b83811015615bc457815187529582019590820190600101615be3565b600081518084526020808501808196508360051b8101915082860160005b85811015615c47578284038952615c358483516158d1565b98850198935090840190600101615c1d565b5091979650505050505050565b608081526000615c676080830187615b8b565b8281036020840152615c798187615bcf565b90508281036040840152615c8d8186615bff565b9050828103606084015261166d8185615bff565b600080600080600060a08688031215615cb957600080fd5b85359450615cc9602087016156eb565b9350615cd7604087016156eb565b94979396509394606081013594506080013592915050565b634e487b7160e01b600052602160045260246000fd5b6020810160088310615d2757634e487b7160e01b600052602160045260246000fd5b91905290565b60008060408385031215615d4057600080fd5b823591506020830135615d5281615910565b809150509250929050565b600060208284031215615d6f57600080fd5b8135611f6381615910565b60008060408385031215615d8d57600080fd5b82359150615d9d602084016156eb565b90509250929050565b600080600080600060808688031215615dbe57600080fd5b85359450615dce602087016156eb565b935060408601356001600160401b0380821115615dea57600080fd5b615df689838a016156fc565b90955093506060880135915080821115615e0f57600080fd5b50615e1c888289016157b1565b9150509295509295909350565b60008060008060608587031215615e3f57600080fd5b84359350615e4f602086016156eb565b925060408501356001600160401b03811115615e6a57600080fd5b615e76878288016156fc565b95989497509550505050565b60008060008060808587031215615e9857600080fd5b84356001600160401b0380821115615eaf57600080fd5b615ebb888389016159b3565b95506020870135915080821115615ed157600080fd5b615edd88838901615a22565b94506040870135915080821115615ef357600080fd5b615eff88838901615a7d565b93506060870135915080821115615f1557600080fd5b50615984878288016157b1565b60ff60f81b8816815260e060208201526000615f4160e08301896158d1565b8281036040840152615f5381896158d1565b606084018890526001600160a01b038716608085015260a0840186905283810360c08501529050610f268185615bcf565b600080600060608486031215615f9957600080fd5b8335615fa481615910565b92506020840135915060408401356001600160401b03811115615fc657600080fd5b615fd2868287016157b1565b9150509250925092565b60008060008060408587031215615ff257600080fd5b84356001600160401b038082111561600957600080fd5b616015888389016156fc565b9096509450602087013591508082111561602e57600080fd5b50615e76878288016156fc565b600080600080600060a0868803121561605357600080fd5b853561605e81615910565b9450602086013561606e81615910565b935060408601356001600160401b038082111561608a57600080fd5b61609689838a01615a22565b945060608801359150808211156160ac57600080fd5b6160b889838a01615a22565b93506080880135915080821115615e0f57600080fd5b600080600080606085870312156160e457600080fd5b84356160ef81615910565b93506020850135925060408501356001600160401b03811115615e6a57600080fd5b60006020828403121561612357600080fd5b81356001600160401b0381168114611f6357600080fd5b600080600080600060a0868803121561615257600080fd5b85356001600160401b038082111561616957600080fd5b61617589838a016159b3565b9650602088013591508082111561618b57600080fd5b61619789838a01615a22565b955060408801359150808211156161ad57600080fd5b6161b989838a01615a7d565b945060608801359150808211156161cf57600080fd5b6160b889838a01615a7d565b600080604083850312156161ee57600080fd5b82356161f981615910565b946020939093013593505050565b600080600080600060a0868803121561621f57600080fd5b853561622a81615910565b9450602086013561623a81615910565b9350604086013592506060860135915060808601356001600160401b0381111561626357600080fd5b615e1c888289016157b1565b8183823760009101908152919050565b60208082526018908201527f476f7665726e6f723a206f6e6c79476f7665726e616e63650000000000000000604082015260600190565b600181811c908216806162ca57607f821691505b6020821081036162ea57634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526021908201527f476f7665726e6f723a2070726f706f73616c206e6f74207375636365737366756040820152601b60fa1b606082015260800190565b60006020828403121561634357600080fd5b5051919050565b60a08152600061635d60a0830188615b8b565b828103602084015261636f8188615bcf565b905082810360408401526163838187615bff565b60608401959095525050608001529392505050565b60c0815260006163ab60c0830189615b8b565b82810360208401526163bd8189615bcf565b905082810360408401526163d18188615bff565b60608401969096525050608081019290925260a0909101529392505050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610e3657610e366163f0565b65ffffffffffff828116828216039080821115616438576164386163f0565b5092915050565b60006020828403121561645157600080fd5b81516001600160401b0381111561646757600080fd5b8201601f8101841361647857600080fd5b80516164866157d08261578a565b81815285602083850101111561649b57600080fd5b6116bc8260208301602086016158ad565b81810381811115610e3657610e366163f0565b634e487b7160e01b600052603260045260246000fd5b6000600182016164e7576164e76163f0565b5060010190565b60006020828403121561650057600080fd5b815165ffffffffffff81168114611f6357600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b604081526000616553604083018688616516565b828103602084015261166d818587616516565b6080815260006165796080830187615b8b565b828103602084015261658b8187615bcf565b9050828103604084015261659f8186615bff565b91505082606083015295945050505050565b8082028115828204841417610e3657610e366163f0565b634e487b7160e01b600052601260045260246000fd5b6000826165fb57634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561661257600080fd5b81518015158114611f6357600080fd5b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6000825161667f8184602087016158ad565b9190910192915050565b6001600160e01b03198316815281516000906166ac8160048501602087016158ad565b919091016004019392505050565b6001600160401b03818116838216019080821115616438576164386163f0565b60208082526021908201527f476f7665726e6f723a20696e76616c69642070726f706f73616c206c656e67746040820152600d60fb1b606082015260800190565b8981526001600160a01b0389166020820152610120604082018190526000906167468382018b615b8b565b9050828103606084015261675a818a615bcf565b9050828103608084015261676e8189615bff565b905082810360a08401526167828188615bff565b90508560c08401528460e08401528281036101008401526167a381856158d1565b9c9b505050505050505050505050565b601f8211156136a957600081815260208120601f850160051c810160208610156167da5750805b601f850160051c820191505b818110156116a6578281556001016167e6565b81516001600160401b0381111561681257616812615744565b6168268161682084546162b6565b846167b3565b602080601f83116001811461685b57600084156168435750858301515b600019600386901b1c1916600185901b1785556116a6565b600085815260208120601f198616915b8281101561688a5788860151825594840194600190910190840161686b565b50858210156168a85787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b84815260ff8416602082015282604082015260806060820152600061196a60808301846158d1565b85815260ff8516602082015283604082015260a06060820152600061690860a08301856158d1565b828103608084015261691a81856158d1565b9897505050505050505056fe476f7665726e6f723a2072656c617920726576657274656420776974686f7574206d657373616765a164736f6c6343000811000a", + Code: "6080604052600436106103bc5760003560e01c80637b3c71d3116101f2578063c28bc2fa1161010d578063e23a9a52116100a0578063f23a6e611161006f578063f23a6e6114610d73578063f8ce560a14610d9f578063fc0c546a14610dbf578063fe0d94c114610de057600080fd5b8063e23a9a5214610c48578063ea0217cf14610d13578063eb9019d414610d33578063ece40cc114610d5357600080fd5b8063da95691a116100dc578063da95691a14610b8e578063dd4e2ba514610bae578063ddf0b00914610bf4578063deaaa7cc14610c1457600080fd5b8063c28bc2fa14610b1c578063c59057e414610b2f578063d07f91e914610b4f578063d33219b414610b6f57600080fd5b8063a7713a7011610185578063b58131b011610154578063b58131b014610aa0578063bc197c8114610ab5578063c01f9e3714610ae1578063c170ec0b14610b0157600080fd5b8063a7713a7014610a2b578063a890c91014610a40578063ab58fb8e14610a60578063ac43175114610a8057600080fd5b806384b0196e116101c157806384b0196e146109a357806391ddadf4146109cb57806397c3d334146109f75780639a802a6d14610a0b57600080fd5b80637b3c71d3146109395780637d5e81e2146109595780638129fc1c146109795780638456cb591461098e57600080fd5b806332b8113e116102e2578063533ddd14116102755780635f398a14116102445780635f398a14146108b257806360c4247f146108d257806363d42b38146108f257806370b0f6601461091957600080fd5b8063533ddd141461081757806354fd4d501461084857806356781388146108725780635c975abb1461089257600080fd5b806340e58ee5116102b157806340e58ee5146107775780634385963214610797578063452115d6146107e25780634bf5d7e91461080257600080fd5b806332b8113e146106eb5780633932abb1146107145780633bccf4fd1461072a5780633e4f49e61461074a57600080fd5b8063143489d01161035a5780632656227d116103295780632656227d1461063d5780632d63f693146106505780632fe3e26114610687578063328dd982146106bb57600080fd5b8063143489d01461056e578063150b7a02146105c4578063160cbed71461060857806324bc1a641461062857600080fd5b8063034201811161039657806303420181146104f7578063046f7da21461051757806306f3f9e61461052c57806306fdde031461054c57600080fd5b8063013cf08b1461042c57806301ffc9a7146104a757806302a251a3146104d757600080fd5b3661042757306103ca610df3565b6001600160a01b0316146104255760405162461bcd60e51b815260206004820152601f60248201527f476f7665726e6f723a206d7573742073656e6420746f206578656375746f720060448201526064015b60405180910390fd5b005b600080fd5b34801561043857600080fd5b5061044c61044736600461585e565b610e0d565b604080519a8b526001600160a01b0390991660208b0152978901969096526060880194909452608087019290925260a086015260c085015260e084015215156101008301521515610120820152610140015b60405180910390f35b3480156104b357600080fd5b506104c76104c2366004615877565b610ec8565b604051901515815260200161049e565b3480156104e357600080fd5b50610162545b60405190815260200161049e565b34801561050357600080fd5b506104e96105123660046159bd565b610ed9565b34801561052357600080fd5b50610425610fd1565b34801561053857600080fd5b5061042561054736600461585e565b61103a565b34801561055857600080fd5b506105616110c5565b60405161049e9190615ab3565b34801561057a57600080fd5b506105ac61058936600461585e565b60009081526101306020526040902054600160401b90046001600160a01b031690565b6040516001600160a01b03909116815260200161049e565b3480156105d057600080fd5b506105ef6105df366004615adb565b630a85bd0160e11b949350505050565b6040516001600160e01b0319909116815260200161049e565b34801561061457600080fd5b506104e9610623366004615cb2565b611158565b34801561063457600080fd5b506104e961135d565b6104e961064b366004615cb2565b611383565b34801561065c57600080fd5b506104e961066b36600461585e565b600090815261013060205260409020546001600160401b031690565b34801561069357600080fd5b506104e97fb3b3f3b703cd84ce352197dcff232b1b5d3cfb2025ce47cf04742d0651f1af8881565b3480156106c757600080fd5b506106db6106d636600461585e565b611476565b60405161049e9493929190615e0a565b3480156106f757600080fd5b5061025c546040516001600160401b03909116815260200161049e565b34801561072057600080fd5b50610161546104e9565b34801561073657600080fd5b506104e9610745366004615e57565b611708565b34801561075657600080fd5b5061076a61076536600461585e565b61177e565b60405161049e9190615ebb565b34801561078357600080fd5b5061042561079236600461585e565b611789565b3480156107a357600080fd5b506104c76107b2366004615ee3565b6000828152610193602090815260408083206001600160a01b038516845260080190915290205460ff1692915050565b3480156107ee57600080fd5b506104e96107fd366004615cb2565b6117b4565b34801561080e57600080fd5b506105616117cb565b34801561082357600080fd5b506104c7610832366004615f13565b61028e6020526000908152604090205460ff1681565b34801561085457600080fd5b506040805180820190915260018152603160f81b6020820152610561565b34801561087e57600080fd5b506104e961088d366004615f30565b611878565b34801561089e57600080fd5b5061028f546104c790610100900460ff1681565b3480156108be57600080fd5b506104e96108cd366004615f5c565b6118a1565b3480156108de57600080fd5b506104e96108ed36600461585e565b6118eb565b3480156108fe57600080fd5b5061028f546105ac906201000090046001600160a01b031681565b34801561092557600080fd5b5061042561093436600461585e565b6119a0565b34801561094557600080fd5b506104e9610954366004615fdf565b611a28565b34801561096557600080fd5b506104e9610974366004616038565b611a7a565b34801561098557600080fd5b50610425611b0a565b34801561099a57600080fd5b50610425611f60565b3480156109af57600080fd5b506109b8611fcd565b60405161049e97969594939291906160d8565b3480156109d757600080fd5b506109e061206b565b60405165ffffffffffff909116815260200161049e565b348015610a0357600080fd5b5060646104e9565b348015610a1757600080fd5b506104e9610a2636600461613a565b6120df565b348015610a3757600080fd5b506104e96120f6565b348015610a4c57600080fd5b50610425610a5b366004615f13565b612123565b348015610a6c57600080fd5b506104e9610a7b36600461585e565b6121ab565b348015610a8c57600080fd5b50610425610a9b366004616192565b612247565b348015610aac57600080fd5b506104e9612826565b348015610ac157600080fd5b506105ef610ad03660046161f1565b63bc197c8160e01b95945050505050565b348015610aed57600080fd5b506104e9610afc36600461585e565b612832565b348015610b0d57600080fd5b5061028f546104c79060ff1681565b610425610b2a366004616284565b61283d565b348015610b3b57600080fd5b506104e9610b4a366004615cb2565b61294d565b348015610b5b57600080fd5b50610425610b6a3660046162c7565b612987565b348015610b7b57600080fd5b506101f8546001600160a01b03166105ac565b348015610b9a57600080fd5b506104e9610ba93660046162f0565b612a0f565b348015610bba57600080fd5b5060408051808201909152601a81527f737570706f72743d627261766f2671756f72756d3d627261766f0000000000006020820152610561565b348015610c0057600080fd5b50610425610c0f36600461585e565b612a96565b348015610c2057600080fd5b506104e97f150214d74d59b7d1e90c73fc22ef3d991dd0a76b046543d4d80ab92d2a50328f81565b348015610c5457600080fd5b50610ce3610c63366004615ee3565b6040805160608101825260008082526020820181905291810191909152506000918252610193602090815260408084206001600160a01b0393909316845260089092018152918190208151606081018352905460ff8082161515835261010082041693820193909352620100009092046001600160601b03169082015290565b6040805182511515815260208084015160ff1690820152918101516001600160601b03169082015260600161049e565b348015610d1f57600080fd5b50610425610d2e36600461585e565b612ab9565b348015610d3f57600080fd5b506104e9610d4e366004616391565b612b41565b348015610d5f57600080fd5b50610425610d6e36600461585e565b612b62565b348015610d7f57600080fd5b506105ef610d8e3660046163bd565b63f23a6e6160e01b95945050505050565b348015610dab57600080fd5b506104e9610dba36600461585e565b612bea565b348015610dcb57600080fd5b506101c5546105ac906001600160a01b031681565b610425610dee36600461585e565b612c79565b6000610e086101f8546001600160a01b031690565b905090565b8060008080808080808080610e218a6121ab565b60008c815261013060205260409020549098506001600160401b03169650610e488b612832565b60008c81526101936020526040812080546005820154600683015460078401546001600160a01b039093169e50949a509850929650919450610e898d61177e565b90506002816007811115610e9f57610e9f615ea5565b1493506007816007811115610eb657610eb6615ea5565b14925050509193959799509193959799565b6000610ed382612c9c565b92915050565b600080610f7d610f757fb3b3f3b703cd84ce352197dcff232b1b5d3cfb2025ce47cf04742d0651f1af888c8c8c8c604051610f15929190616425565b60405180910390208b80519060200120604051602001610f5a959493929190948552602085019390935260ff9190911660408401526060830152608082015260a00190565b60405160208183030381529060405280519060200120612cc1565b868686612cee565b9050610fc38a828b8b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508d9250612d0c915050565b9a9950505050505050505050565b61028f546201000090046001600160a01b0316331461100357604051631431806f60e11b815260040160405180910390fd5b61028f805461ff00191690556040517f62451d457bc659158be6e6247f56ec1df424a5c7597f71c20c2bc44e0965c8f990600090a1565b611042610df3565b6001600160a01b0316336001600160a01b0316146110725760405162461bcd60e51b815260040161041c90616435565b3061107b610df3565b6001600160a01b0316146110b9576000803660405161109b929190616425565b604051809103902090505b806110b2610131612d1b565b036110a657505b6110c281612d9a565b50565b606061012f80546110d59061646c565b80601f01602080910402602001604051908101604052809291908181526020018280546111019061646c565b801561114e5780601f106111235761010080835404028352916020019161114e565b820191906000526020600020905b81548152906001019060200180831161113157829003601f168201915b5050505050905090565b6000806111678686868661294d565b905060046111748261177e565b600781111561118557611185615ea5565b146111a25760405162461bcd60e51b815260040161041c906164a6565b6101f8546040805163793d064960e11b815290516000926001600160a01b03169163f27a0c929160048083019260209291908290030181865afa1580156111ed573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061121191906164e7565b6101f85460405163b1c5f42760e01b81529192506001600160a01b03169063b1c5f4279061124c908a908a908a906000908b90600401616500565b602060405180830381865afa158015611269573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061128d91906164e7565b60008381526101f96020526040808220929092556101f85491516308f2a0bb60e41b81526001600160a01b0390921691638f2a0bb0916112da918b918b918b91908b90899060040161654e565b600060405180830381600087803b1580156112f457600080fd5b505af1158015611308573d6000803e3d6000fd5b505050507f9a2e42fd6722813d69113e7d0079d3d940171428df7373df9c7f7617cfda289282824261133a91906165bc565b604080519283526020830191909152015b60405180910390a15095945050505050565b6000610e08600161136c61206b565b61137691906165cf565b65ffffffffffff16612bea565b6000806113928686868661294d565b9050600061139f8261177e565b905060048160078111156113b5576113b5615ea5565b14806113d2575060058160078111156113d0576113d0615ea5565b145b6113ee5760405162461bcd60e51b815260040161041c906164a6565b6000828152610130602052604090819020600201805460ff19166001179055517f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f9061143d9084815260200190565b60405180910390a16114528288888888612f0b565b61145f8288888888612fac565b61146c828888888861305d565b5095945050505050565b60608060608060006101936000878152602001908152602001600020905080600101816002018260030183600401838054806020026020016040519081016040528092919081815260200182805480156114f957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116114db575b505050505093508280548060200260200160405190810160405280929190818152602001828054801561154b57602002820191906000526020600020905b815481526020019060010190808311611537575b5050505050925081805480602002602001604051908101604052809291908181526020016000905b8282101561161f5783829060005260206000200180546115929061646c565b80601f01602080910402602001604051908101604052809291908181526020018280546115be9061646c565b801561160b5780601f106115e05761010080835404028352916020019161160b565b820191906000526020600020905b8154815290600101906020018083116115ee57829003601f168201915b505050505081526020019060010190611573565b50505050915080805480602002602001604051908101604052809291908181526020016000905b828210156116f25783829060005260206000200180546116659061646c565b80601f01602080910402602001604051908101604052809291908181526020018280546116919061646c565b80156116de5780601f106116b3576101008083540402835291602001916116de565b820191906000526020600020905b8154815290600101906020018083116116c157829003601f168201915b505050505081526020019060010190611646565b5050505090509450945094509450509193509193565b604080517f150214d74d59b7d1e90c73fc22ef3d991dd0a76b046543d4d80ab92d2a50328f602082015290810186905260ff85166060820152600090819061175690610f7590608001610f5a565b905061177387828860405180602001604052806000815250613098565b979650505050505050565b6000610ed3826130bb565b60008060008061179885613208565b93509350935093506117ac848484846117b4565b505050505050565b60006117c285858585613499565b95945050505050565b6101c55460408051634bf5d7e960e01b815290516060926001600160a01b031691634bf5d7e99160048083019260009291908290030181865afa92505050801561183757506040513d6000823e601f3d908101601f1916820160405261183491908101906165f5565b60015b611873575060408051808201909152601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c74000000602082015290565b919050565b60008033905061189984828560405180602001604052806000815250613098565b949350505050565b60008033905061177387828888888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a9250612d0c915050565b61022b5460009080820361190457505061022a54919050565b600061022b611914600184616662565b8154811061192457611924616675565b60009182526020918290206040805180820190915291015463ffffffff8116808352600160201b9091046001600160e01b0316928201929092529150841061197a57602001516001600160e01b03169392505050565b61198f61198685613564565b61022b906135cd565b6001600160e01b0316949350505050565b6119a8610df3565b6001600160a01b0316336001600160a01b0316146119d85760405162461bcd60e51b815260040161041c90616435565b306119e1610df3565b6001600160a01b031614611a1f5760008036604051611a01929190616425565b604051809103902090505b80611a18610131612d1b565b03611a0c57505b6110c281613680565b600080339050611a7086828787878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061309892505050565b9695505050505050565b6000611a846136c3565b60005b8551811015611afd5761028e6000878381518110611aa757611aa7616675565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16611aeb57604051630b094f2760e31b815260040160405180910390fd5b80611af58161668b565b915050611a87565b506117c28585858561376e565b600054610100900460ff1615808015611b2a5750600054600160ff909116105b80611b445750303b158015611b44575060005460ff166001145b611ba75760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161041c565b6000805460ff191660011790558015611bca576000805461ff0019166101001790555b334114611bea5760405163022d8c9560e31b815260040160405180910390fd5b3a15611c09576040516383f1b1d360e01b815260040160405180910390fd5b611c356040518060400160405280600b81526020016a2129a1a3b7bb32b93737b960a91b8152506137d6565b611c4f620151806212750068056bc75e2d6310000061382d565b611c57613864565b611c6261200561388b565b611c6d6120066138bb565b611c77600a6138eb565b611c836201518061391b565b61028e6020527ff0f52cefb444f33092ac77280e2ff9c808a9c078a96d3cd7513137548137ed8f8054600160ff1991821681179092557fb2c9e894c6f17bfc84a6708e0ea85c2729271d7cae0a8d875cd1080fb415e7a080548216831790557fd8ceb939a734f5a4e0a6fede9e31504e16ac856b555e8bac20ad743b9ff2976a80548216831790557f2a7b967fc66f4b36023165170b23a76f880d3dbbf244a856aeee9e670cef725980548216831790557fdb1a1113bac2e4f0e6f8c2f2bc4f6dbecf1fccb033d5df1b55b5c5ad6c20ac7980548216831790557f8b1888b379fb3b749668d86c5bf8aaada8e2276c6ced3a4efcc1e877827ce0b380548216831790557feeeea8d485053a64711f2c5802d2cc63251dd394956c140a2e30db7cef242ec580548216831790557f4cdb1a6c4b56f62f27f7202d75e865c2405f138cb32ec45019c0f2ca8f91e47280548216831790557f49d6c403a3197b15e024f109c83eb730d7af1a8b49fc6f820e09bad2597c14c980548216831790557f7a41b38ceb33f296c1ff3db5ffcc6542acb091d5fb27586f3c551dd2ebac063880548216831790557f701fe333ee20fad5d5a6a9930dddd3fb815af1d976d5250e394e39d6e4123e3880548216831790557fee7ba9842df249188adc0fc380980c3099f608b602924e083dd61e8e70845b4a80548216831790557f29973aeebf3c17f2c3a9cf7ace17f2798aa544e1ea7427938024cde6df46bac180548216831790557f74c0d6e29c82d6628d5f083f86fc15f0c6acef97321252a1eee0bd893dae276580548216831790556120066000527f1bdfc01e60036e5be56ae85d8394ddf727e1021b3d74de5b554fedea2de437678054909116909117905561028f805462010000600160b01b03191663dead000017905580156110c2576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b61028f546201000090046001600160a01b03163314611f9257604051631431806f60e11b815260040160405180910390fd5b61028f805461ff0019166101001790556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e75290600090a1565b6000606080600080600060606065546000801b148015611fed5750606654155b6120315760405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b604482015260640161041c565b61203961394b565b61204161395a565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b6101c554604080516324776b7d60e21b815290516000926001600160a01b0316916391ddadf49160048083019260209291908290030181865afa9250505080156120d2575060408051601f3d908101601f191682019092526120cf918101906166a4565b60015b61187357610e0843613969565b60006120ec8484846139d0565b90505b9392505050565b61022b546000901561211b5761210d61022b613a47565b6001600160e01b0316905090565b5061022a5490565b61212b610df3565b6001600160a01b0316336001600160a01b03161461215b5760405162461bcd60e51b815260040161041c90616435565b30612164610df3565b6001600160a01b0316146121a25760008036604051612184929190616425565b604051809103902090505b8061219b610131612d1b565b0361218f57505b6110c281613a77565b6101f85460008281526101f9602052604080822054905163d45c443560e01b81526004810191909152909182916001600160a01b039091169063d45c443590602401602060405180830381865afa15801561220a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061222e91906164e7565b90508060011461223e57806120ef565b60009392505050565b336110071461226d57604051630f22c43960e41b8152611007600482015260240161041c565b6122d36040518060400160405280600b81526020016a766f74696e6744656c617960a81b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613ae29050565b1561237c57602081146123015783838383604051630a5a604160e01b815260040161041c94939291906166f5565b604080516020601f8401819004810282018101909252828152600091612342918585808385018382808284376000920191909152509293925050613b3b9050565b90508060000361236d5784848484604051630a5a604160e01b815260040161041c94939291906166f5565b61237681613680565b506127e3565b6123e36040518060400160405280600c81526020016b1d9bdd1a5b99d4195c9a5bd960a21b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613ae29050565b1561248657602081146124115783838383604051630a5a604160e01b815260040161041c94939291906166f5565b604080516020601f8401819004810282018101909252828152600091612452918585808385018382808284376000920191909152509293925050613b3b9050565b90508060000361247d5784848484604051630a5a604160e01b815260040161041c94939291906166f5565b61237681613b40565b6124f2604051806040016040528060118152602001701c1c9bdc1bdcd85b151a1c995cda1bdb19607a1b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613ae29050565b1561259557602081146125205783838383604051630a5a604160e01b815260040161041c94939291906166f5565b604080516020601f8401819004810282018101909252828152600091612561918585808385018382808284376000920191909152509293925050613b3b9050565b90508060000361258c5784848484604051630a5a604160e01b815260040161041c94939291906166f5565b61237681613be3565b6125ff6040518060400160405280600f81526020016e38bab7b93ab6a73ab6b2b930ba37b960891b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613ae29050565b156126a2576020811461262d5783838383604051630a5a604160e01b815260040161041c94939291906166f5565b604080516020601f840181900481028201810190925282815260009161266e918585808385018382808284376000920191909152509293925050613b3b9050565b9050806000036126995784848484604051630a5a604160e01b815260040161041c94939291906166f5565b61237681612d9a565b612711604051806040016040528060148152602001736d696e506572696f64416674657251756f72756d60601b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613ae29050565b156127c2576008811461273f5783838383604051630a5a604160e01b815260040161041c94939291906166f5565b6000612785600884848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613b3b9050565b9050806001600160401b03166000036127b95784848484604051630a5a604160e01b815260040161041c94939291906166f5565b61237681613c26565b838383836040516325ee20d560e21b815260040161041c94939291906166f5565b7ff1ce9b2cbf50eeb05769a29e2543fd350cab46894a7dd9978a12d534bb20e6338484848460405161281894939291906166f5565b60405180910390a150505050565b6000610e086101635490565b6000610ed382613c92565b612845610df3565b6001600160a01b0316336001600160a01b0316146128755760405162461bcd60e51b815260040161041c90616435565b3061287e610df3565b6001600160a01b0316146128bc576000803660405161289e929190616425565b604051809103902090505b806128b5610131612d1b565b036128a957505b600080856001600160a01b03168585856040516128da929190616425565b60006040518083038185875af1925050503d8060008114612917576040519150601f19603f3d011682016040523d82523d6000602084013e61291c565b606091505b50915091506129448282604051806060016040528060288152602001616add60289139613cd0565b50505050505050565b600084848484604051602001612966949392919061671c565b60408051601f19818403018152919052805160209091012095945050505050565b61298f610df3565b6001600160a01b0316336001600160a01b0316146129bf5760405162461bcd60e51b815260040161041c90616435565b306129c8610df3565b6001600160a01b031614612a0657600080366040516129e8929190616425565b604051809103902090505b806129ff610131612d1b565b036129f357505b6110c281613c26565b60008251845114612a735760405162461bcd60e51b815260206004820152602860248201527f476f7665726e6f72427261766f3a20696e76616c6964207369676e61747572656044820152670e640d8cadccee8d60c31b606482015260840161041c565b612a81338787878787613ce9565b611a708686612a908787613da7565b85611a7a565b600080600080612aa585613208565b93509350935093506117ac84848484611158565b612ac1610df3565b6001600160a01b0316336001600160a01b031614612af15760405162461bcd60e51b815260040161041c90616435565b30612afa610df3565b6001600160a01b031614612b385760008036604051612b1a929190616425565b604051809103902090505b80612b31610131612d1b565b03612b2557505b6110c281613b40565b60006120ef8383612b5d60408051602081019091526000815290565b6139d0565b612b6a610df3565b6001600160a01b0316336001600160a01b031614612b9a5760405162461bcd60e51b815260040161041c90616435565b30612ba3610df3565b6001600160a01b031614612be15760008036604051612bc3929190616425565b604051809103902090505b80612bda610131612d1b565b03612bce57505b6110c281613be3565b60006064612bf7836118eb565b6101c554604051632394e7a360e21b8152600481018690526001600160a01b0390911690638e539e8c90602401602060405180830381865afa158015612c41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c6591906164e7565b612c6f9190616767565b610ed39190616794565b600080600080612c8885613208565b93509350935093506117ac84848484611383565b60006001600160e01b03198216636e665ced60e01b1480610ed35750610ed382613ed9565b6000610ed3612cce613f75565b8360405161190160f01b8152600281019290925260228201526042902090565b6000806000612cff87878787613f7f565b9150915061146c81614043565b6000611a70868686868661418d565b6000612d368254600f81810b600160801b909204900b131590565b15612d5457604051631ed9509560e11b815260040160405180910390fd5b508054600f0b6000818152600180840160205260408220805492905583546fffffffffffffffffffffffffffffffff191692016001600160801b03169190911790915590565b6064811115612e1d5760405162461bcd60e51b815260206004820152604360248201527f476f7665726e6f72566f74657351756f72756d4672616374696f6e3a2071756f60448201527f72756d4e756d657261746f72206f7665722071756f72756d44656e6f6d696e616064820152623a37b960e91b608482015260a40161041c565b6000612e276120f6565b90508015801590612e39575061022b54155b15612e9e57604080518082019091526000815261022b9060208101612e5d84614290565b6001600160e01b039081169091528254600181018455600093845260209384902083519490930151909116600160201b0263ffffffff909316929092179101555b612ecc612eb9612eac61206b565b65ffffffffffff16613564565b612ec284614290565b61022b91906142f9565b505060408051828152602081018490527f0553476bf02ef2726e8ce5ced78d63e26e602e4a2257b1f559418e24b4633997910160405180910390a15050565b30612f14610df3565b6001600160a01b031614612fa55760005b84518110156117ac57306001600160a01b0316858281518110612f4a57612f4a616675565b60200260200101516001600160a01b031603612f9557612f95838281518110612f7557612f75616675565b60200260200101518051906020012061013161431490919063ffffffff16565b612f9e8161668b565b9050612f25565b5050505050565b61028f54610100900460ff1615612fd65760405163e96776bf60e01b815260040160405180910390fd5b60005b845181101561304f5761028e6000868381518110612ff957612ff9616675565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff1661303d57604051630b094f2760e31b815260040160405180910390fd5b806130478161668b565b915050612fd9565b50612fa58585858585614350565b30613066610df3565b6001600160a01b031614612fa55761013154600f81810b600160801b909204900b1315612fa557600061013155612fa5565b60006117c2858585856130b660408051602081019091526000815290565b612d0c565b6000806130c7836143c5565b905060048160078111156130dd576130dd615ea5565b146130e85792915050565b60008381526101f9602052604090205480613104575092915050565b6101f854604051632ab0f52960e01b8152600481018390526001600160a01b0390911690632ab0f52990602401602060405180830381865afa15801561314e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061317291906167b6565b15613181575060079392505050565b6101f854604051632c258a9f60e11b8152600481018390526001600160a01b039091169063584b153e90602401602060405180830381865afa1580156131cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131ef91906167b6565b156131fe575060059392505050565b5060029392505050565b60608060606000806101936000878152602001908152602001600020905080600101816002016133da83600301805480602002602001604051908101604052809291908181526020016000905b828210156133015783829060005260206000200180546132749061646c565b80601f01602080910402602001604051908101604052809291908181526020018280546132a09061646c565b80156132ed5780601f106132c2576101008083540402835291602001916132ed565b820191906000526020600020905b8154815290600101906020018083116132d057829003601f168201915b505050505081526020019060010190613255565b50505060048601805460408051602080840282018101909252828152935060009084015b828210156133d15783829060005260206000200180546133449061646c565b80601f01602080910402602001604051908101604052809291908181526020018280546133709061646c565b80156133bd5780601f10613392576101008083540402835291602001916133bd565b820191906000526020600020905b8154815290600101906020018083116133a057829003601f168201915b505050505081526020019060010190613325565b50505050613da7565b600984015483546040805160208084028201810190925282815291869183018282801561343057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311613412575b505050505093508280548060200260200160405190810160405280929190818152602001828054801561348257602002820191906000526020600020905b81548152602001906001019080831161346e575b505050505092509450945094509450509193509193565b6000806134a88686868661294d565b600081815261019360205260409020549091506001600160a01b0316338114806134fc57506134d5612826565b6134fa8260016134e361206b565b6134ed91906165cf565b65ffffffffffff16612b41565b105b6135585760405162461bcd60e51b815260206004820152602760248201527f476f7665726e6f72427261766f3a2070726f706f7365722061626f76652074686044820152661c995cda1bdb1960ca1b606482015260840161041c565b611773878787876144fd565b600063ffffffff8211156135c95760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201526532206269747360d01b606482015260840161041c565b5090565b81546000908181600581111561362a5760006135e88461450b565b6135f29085616662565b60008881526020902090915081015463ffffffff908116908716101561361a57809150613628565b6136258160016165bc565b92505b505b6000613638878785856145f3565b905080156136735761365d8761364f600184616662565b600091825260209091200190565b54600160201b90046001600160e01b0316611773565b6000979650505050505050565b6101615460408051918252602082018390527fc565b045403dc03c2eea82b81a0465edad9e2e7fc4d97e11421c209da93d7a93910160405180910390a161016155565b61028f5460ff1661376c576a084595161401484a0000006120056001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561371a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061373e91906164e7565b101561375d576040516311b6707f60e01b815260040160405180910390fd5b61028f805460ff191660011790555b565b60006137ca33868686516001600160401b0381111561378f5761378f6158fa565b6040519080825280602002602001820160405280156137c257816020015b60608152602001906001900390816137ad5790505b508787613ce9565b6117c285858585614649565b600054610100900460ff166137fd5760405162461bcd60e51b815260040161041c906167d8565b6138248161381f6040805180820190915260018152603160f81b602082015290565b614a28565b6110c281614a77565b600054610100900460ff166138545760405162461bcd60e51b815260040161041c906167d8565b61385f838383614aaf565b505050565b600054610100900460ff1661376c5760405162461bcd60e51b815260040161041c906167d8565b600054610100900460ff166138b25760405162461bcd60e51b815260040161041c906167d8565b6110c281614af1565b600054610100900460ff166138e25760405162461bcd60e51b815260040161041c906167d8565b6110c281614b3b565b600054610100900460ff166139125760405162461bcd60e51b815260040161041c906167d8565b6110c281614b62565b600054610100900460ff166139425760405162461bcd60e51b815260040161041c906167d8565b6110c281614b89565b6060606780546110d59061646c565b6060606880546110d59061646c565b600065ffffffffffff8211156135c95760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203460448201526538206269747360d01b606482015260840161041c565b6101c554604051630748d63560e31b81526001600160a01b038581166004830152602482018590526000921690633a46b1a890604401602060405180830381865afa158015613a23573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120ec91906164e7565b8054600090801561223e57613a618361364f600184616662565b54600160201b90046001600160e01b03166120ef565b6101f854604080516001600160a01b03928316815291831660208301527f08f74ea46ef7894f65eabfb5e6e695de773a000b47c529ab559178069b226401910160405180910390a16101f880546001600160a01b0319166001600160a01b0392909216919091179055565b600081604051602001613af59190616823565b6040516020818303038152906040528051906020012083604051602001613b1c9190616823565b6040516020818303038152906040528051906020012014905092915050565b015190565b60008111613ba05760405162461bcd60e51b815260206004820152602760248201527f476f7665726e6f7253657474696e67733a20766f74696e6720706572696f6420604482015266746f6f206c6f7760c81b606482015260840161041c565b6101625460408051918252602082018390527f7e3f7f0708a84de9203036abaa450dccc85ad5ff52f78c170f3edb55cf5e8828910160405180910390a161016255565b6101635460408051918252602082018390527fccb45da8d5717e6c4544694297c4ba5cf151d455c9bb0ed4fc7a38411bc05461910160405180910390a161016355565b61025c54604080516001600160401b03928316815291831660208301527f7ca4ac117ed3cdce75c1161d8207c440389b1a15d69d096831664657c07dafc2910160405180910390a161025c805467ffffffffffffffff19166001600160401b0392909216919091179055565b60008181526101306020526040812060010154610ed3906001600160401b0316600084815261025d60205260409020546001600160401b0316614bb0565b60608315613cdf5750816120ef565b6120ef8383614bc6565b805160208201206000613d078787613d018888613da7565b8561294d565b600081815261019360205260409020600981015491925090613d9c5780546001600160a01b0319166001600160a01b038a161781558751613d5190600183019060208b0190615695565b508651613d6790600283019060208a01906156f6565b508551613d7d9060038301906020890190615731565b508451613d939060048301906020880190615783565b50600981018390555b505050505050505050565b6060600082516001600160401b03811115613dc457613dc46158fa565b604051908082528060200260200182016040528015613df757816020015b6060815260200190600190039081613de25790505b50905060005b8151811015613ed157848181518110613e1857613e18616675565b602002602001015151600014613e8857848181518110613e3a57613e3a616675565b602002602001015180519060200120848281518110613e5b57613e5b616675565b6020026020010151604051602001613e7492919061683f565b604051602081830303815290604052613ea3565b838181518110613e9a57613e9a616675565b60200260200101515b828281518110613eb557613eb5616675565b602002602001018190525080613eca9061668b565b9050613dfd565b509392505050565b600063288ace0360e11b6318df743f60e31b63bf26d89760e01b6379dd796f60e01b6001600160e01b03198616821480613f1f57506001600160e01b0319868116908216145b80613f3657506001600160e01b0319868116908516145b80613f5157506001600160e01b03198616630271189760e51b145b80611a7057506301ffc9a760e01b6001600160e01b03198716149695505050505050565b6000610e08614bf0565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115613fb6575060009050600361403a565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa15801561400a573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166140335760006001925092505061403a565b9150600090505b94509492505050565b600081600481111561405757614057615ea5565b0361405f5750565b600181600481111561407357614073615ea5565b036140c05760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640161041c565b60028160048111156140d4576140d4615ea5565b036141215760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161041c565b600381600481111561413557614135615ea5565b036110c25760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b606482015260840161041c565b60008061419d8787878787614c64565b600088815261025d60205260409020549091506001600160401b03161580156141ca57506141ca87614dba565b15611a705760006141e461025c546001600160401b031690565b6141ec61206b565b65ffffffffffff166141fe9190616870565b905061420988612832565b816001600160401b03161115614258576040516001600160401b038216815288907f541f725fb9f7c98a30cc9c0ff32fbb14358cd7159c847a3aa20a2bdc442ba5119060200160405180910390a25b600088815261025d60205260409020805467ffffffffffffffff19166001600160401b03929092169190911790559695505050505050565b60006001600160e01b038211156135c95760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20326044820152663234206269747360c81b606482015260840161041c565b600080614307858585614dfa565b915091505b935093915050565b8154600160801b90819004600f0b6000818152600180860160205260409091209390935583546001600160801b03908116939091011602179055565b6101f85460405163e38335e560e01b81526001600160a01b039091169063e38335e590349061438c908890889088906000908990600401616500565b6000604051808303818588803b1580156143a557600080fd5b505af11580156143b9573d6000803e3d6000fd5b50505050505050505050565b600081815261013060205260408120600281015460ff16156143ea5750600792915050565b6002810154610100900460ff16156144055750600292915050565b600083815261013060205260408120546001600160401b03169081900361446e5760405162461bcd60e51b815260206004820152601d60248201527f476f7665726e6f723a20756e6b6e6f776e2070726f706f73616c206964000000604482015260640161041c565b600061447861206b565b65ffffffffffff16905080821061449457506000949350505050565b600061449f86612832565b90508181106144b45750600195945050505050565b6144bd86614dba565b80156144e057506000868152610193602052604090206006810154600590910154115b156144f15750600495945050505050565b50600395945050505050565b60006117c285858585614f99565b60008160000361451d57506000919050565b6000600161452a8461504f565b901c6001901b905060018184816145435761454361677e565b048201901c9050600181848161455b5761455b61677e565b048201901c905060018184816145735761457361677e565b048201901c9050600181848161458b5761458b61677e565b048201901c905060018184816145a3576145a361677e565b048201901c905060018184816145bb576145bb61677e565b048201901c905060018184816145d3576145d361677e565b048201901c90506120ef818285816145ed576145ed61677e565b046150e3565b60005b81831015613ed157600061460a84846150f2565b60008781526020902090915063ffffffff86169082015463ffffffff16111561463557809250614643565b6146408160016165bc565b93505b506145f6565b600033614656818461510d565b6146a25760405162461bcd60e51b815260206004820152601d60248201527f476f7665726e6f723a2070726f706f7365722072657374726963746564000000604482015260640161041c565b60006146ac61206b565b65ffffffffffff1690506146be612826565b6146cd83610d4e600185616662565b10156147355760405162461bcd60e51b815260206004820152603160248201527f476f7665726e6f723a2070726f706f73657220766f7465732062656c6f7720706044820152701c9bdc1bdcd85b081d1a1c995cda1bdb19607a1b606482015260840161041c565b600061474a888888888051906020012061294d565b9050865188511461476d5760405162461bcd60e51b815260040161041c90616890565b855188511461478e5760405162461bcd60e51b815260040161041c90616890565b60008851116147df5760405162461bcd60e51b815260206004820152601860248201527f476f7665726e6f723a20656d7074792070726f706f73616c0000000000000000604482015260640161041c565b600081815261013060205260409020546001600160401b03161561484f5760405162461bcd60e51b815260206004820152602160248201527f476f7665726e6f723a2070726f706f73616c20616c72656164792065786973746044820152607360f81b606482015260840161041c565b600061485b6101615490565b61486590846165bc565b905060006148736101625490565b61487d90836165bc565b90506040518060e00160405280614893846151fe565b6001600160401b031681526001600160a01b0387166020820152600060408201526060016148c0836151fe565b6001600160401b03908116825260006020808401829052604080850183905260609485018390528883526101308252918290208551815492870151878501519186166001600160e01b031990941693909317600160401b6001600160a01b039094168402176001600160e01b0316600160e01b60e09290921c91909102178155938501516080860151908416921c0217600183015560a08301516002909201805460c09094015161ffff1990941692151561ff00191692909217610100931515939093029290921790558a517f7d84a6263ae0d98d3329bd7b46bb4e8d6f98cd35a7adb45c274c8b7fd5ebd5e091859188918e918e918111156149c5576149c56158fa565b6040519080825280602002602001820160405280156149f857816020015b60608152602001906001900390816149e35790505b508d88888f604051614a12999897969594939291906168d1565b60405180910390a1509098975050505050505050565b600054610100900460ff16614a4f5760405162461bcd60e51b815260040161041c906167d8565b6067614a5b83826169af565b506068614a6882826169af565b50506000606581905560665550565b600054610100900460ff16614a9e5760405162461bcd60e51b815260040161041c906167d8565b61012f614aab82826169af565b5050565b600054610100900460ff16614ad65760405162461bcd60e51b815260040161041c906167d8565b614adf83613680565b614ae882613b40565b61385f81613be3565b600054610100900460ff16614b185760405162461bcd60e51b815260040161041c906167d8565b6101c580546001600160a01b0319166001600160a01b0392909216919091179055565b600054610100900460ff166121a25760405162461bcd60e51b815260040161041c906167d8565b600054610100900460ff166110b95760405162461bcd60e51b815260040161041c906167d8565b600054610100900460ff16612a065760405162461bcd60e51b815260040161041c906167d8565b6000818311614bbf57816120ef565b5090919050565b815115614bd65781518083602001fd5b8060405162461bcd60e51b815260040161041c9190615ab3565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f614c1b615266565b614c236152bf565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b6000858152610130602052604081206001614c7e8861177e565b6007811115614c8f57614c8f615ea5565b14614ce85760405162461bcd60e51b815260206004820152602360248201527f476f7665726e6f723a20766f7465206e6f742063757272656e746c792061637460448201526269766560e81b606482015260840161041c565b8054600090614d029088906001600160401b0316866139d0565b9050614d1188888884886152f0565b8351600003614d6657866001600160a01b03167fb8e138887d0aa13bab447e82de9d5c1777041ecd21ca36ba824ff1e6c07ddda489888489604051614d599493929190616a6e565b60405180910390a2611773565b866001600160a01b03167fe2babfbac5889a709b63bb7f598b324e08bc5a4fb9ec647fb3cbc9ec07eb87128988848989604051614da7959493929190616a96565b60405180910390a2979650505050505050565b6000818152610193602052604081206005810154614df1610dba85600090815261013060205260409020546001600160401b031690565b11159392505050565b825460009081908015614f40576000614e188761364f600185616662565b60408051808201909152905463ffffffff808216808452600160201b9092046001600160e01b031660208401529192509087161015614e995760405162461bcd60e51b815260206004820152601b60248201527f436865636b706f696e743a2064656372656173696e67206b6579730000000000604482015260640161041c565b805163ffffffff808816911603614ee15784614eba8861364f600186616662565b80546001600160e01b0392909216600160201b0263ffffffff909216919091179055614f30565b6040805180820190915263ffffffff80881682526001600160e01b0380881660208085019182528b54600181018d5560008d81529190912094519151909216600160201b029216919091179101555b60200151925083915061430c9050565b50506040805180820190915263ffffffff80851682526001600160e01b0380851660208085019182528854600181018a5560008a815291822095519251909316600160201b02919093161792019190915590508161430c565b600080614fa88686868661548e565b60008181526101f96020526040902054909150156117c2576101f85460008281526101f960205260409081902054905163c4d252f560e01b81526001600160a01b039092169163c4d252f5916150049160040190815260200190565b600060405180830381600087803b15801561501e57600080fd5b505af1158015615032573d6000803e3d6000fd5b50505060008281526101f960205260408120555095945050505050565b600080608083901c1561506457608092831c92015b604083901c1561507657604092831c92015b602083901c1561508857602092831c92015b601083901c1561509a57601092831c92015b600883901c156150ac57600892831c92015b600483901c156150be57600492831c92015b600283901c156150d057600292831c92015b600183901c15610ed35760010192915050565b6000818310614bbf57816120ef565b60006151016002848418616794565b6120ef908484166165bc565b80516000906034811015615125576001915050610ed3565b82810160131901516001600160a01b031981166b046e0e4dee0dee6cae47a60f60a31b1461515857600192505050610ed3565b600080615166602885616662565b90505b838110156151dd5760008061519d88848151811061518957615189616675565b01602001516001600160f81b03191661559b565b91509150816151b55760019650505050505050610ed3565b8060ff166004856001600160a01b0316901b1793505050806151d69061668b565b9050615169565b50856001600160a01b0316816001600160a01b031614935050505092915050565b60006001600160401b038211156135c95760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203660448201526534206269747360d01b606482015260840161041c565b60008061527161394b565b805190915015615288578051602090910120919050565b60655480156152975792915050565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4709250505090565b6000806152ca61395a565b8051909150156152e1578051602090910120919050565b60665480156152975792915050565b6000858152610193602090815260408083206001600160a01b038816845260088101909252909120805460ff16156153805760405162461bcd60e51b815260206004820152602d60248201527f476f7665726e6f72436f6d7061746962696c697479427261766f3a20766f746560448201526c08185b1c9958591e4818d85cdd609a1b606482015260840161041c565b805460ff86166101000261ffff199091161760011781556153a08461562d565b81546001600160601b039190911662010000026dffffffffffffffffffffffff00001990911617815560ff85166153f057838260060160008282546153e591906165bc565b909155506129449050565b60001960ff86160161541057838260050160008282546153e591906165bc565b60011960ff86160161543057838260070160008282546153e591906165bc565b60405162461bcd60e51b815260206004820152602d60248201527f476f7665726e6f72436f6d7061746962696c697479427261766f3a20696e766160448201526c6c696420766f7465207479706560981b606482015260840161041c565b60008061549d8686868661294d565b905060006154aa8261177e565b905060028160078111156154c0576154c0615ea5565b141580156154e0575060068160078111156154dd576154dd615ea5565b14155b80156154fe575060078160078111156154fb576154fb615ea5565b14155b61554a5760405162461bcd60e51b815260206004820152601d60248201527f476f7665726e6f723a2070726f706f73616c206e6f7420616374697665000000604482015260640161041c565b6000828152610130602052604090819020600201805461ff001916610100179055517f789cf55be980739dad1d0699b93b58e806b51c9d96619bfa8fe0a28abaa7b30c9061134b9084815260200190565b60008060f883901c602f811180156155b65750603a8160ff16105b156155cb57600194602f199091019350915050565b8060ff1660401080156155e1575060478160ff16105b156155f6576001946036199091019350915050565b8060ff16606010801561560c575060678160ff16105b15615621576001946056199091019350915050565b50600093849350915050565b60006001600160601b038211156135c95760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203960448201526536206269747360d01b606482015260840161041c565b8280548282559060005260206000209081019282156156ea579160200282015b828111156156ea57825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906156b5565b506135c99291506157d5565b8280548282559060005260206000209081019282156156ea579160200282015b828111156156ea578251825591602001919060010190615716565b828054828255906000526020600020908101928215615777579160200282015b82811115615777578251829061576790826169af565b5091602001919060010190615751565b506135c99291506157ea565b8280548282559060005260206000209081019282156157c9579160200282015b828111156157c957825182906157b990826169af565b50916020019190600101906157a3565b506135c9929150615807565b5b808211156135c957600081556001016157d6565b808211156135c95760006157fe8282615824565b506001016157ea565b808211156135c957600061581b8282615824565b50600101615807565b5080546158309061646c565b6000825580601f10615840575050565b601f0160209004906000526020600020908101906110c291906157d5565b60006020828403121561587057600080fd5b5035919050565b60006020828403121561588957600080fd5b81356001600160e01b0319811681146120ef57600080fd5b803560ff8116811461187357600080fd5b60008083601f8401126158c457600080fd5b5081356001600160401b038111156158db57600080fd5b6020830191508360208285010111156158f357600080fd5b9250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715615938576159386158fa565b604052919050565b60006001600160401b03821115615959576159596158fa565b50601f01601f191660200190565b600082601f83011261597857600080fd5b813561598b61598682615940565b615910565b8181528460208386010111156159a057600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060008060008060e0898b0312156159d957600080fd5b883597506159e960208a016158a1565b965060408901356001600160401b0380821115615a0557600080fd5b615a118c838d016158b2565b909850965060608b0135915080821115615a2a57600080fd5b50615a378b828c01615967565b945050615a4660808a016158a1565b925060a0890135915060c089013590509295985092959890939650565b60005b83811015615a7e578181015183820152602001615a66565b50506000910152565b60008151808452615a9f816020860160208601615a63565b601f01601f19169290920160200192915050565b6020815260006120ef6020830184615a87565b6001600160a01b03811681146110c257600080fd5b60008060008060808587031215615af157600080fd5b8435615afc81615ac6565b93506020850135615b0c81615ac6565b92506040850135915060608501356001600160401b03811115615b2e57600080fd5b615b3a87828801615967565b91505092959194509250565b60006001600160401b03821115615b5f57615b5f6158fa565b5060051b60200190565b600082601f830112615b7a57600080fd5b81356020615b8a61598683615b46565b82815260059290921b84018101918181019086841115615ba957600080fd5b8286015b84811015615bcd578035615bc081615ac6565b8352918301918301615bad565b509695505050505050565b600082601f830112615be957600080fd5b81356020615bf961598683615b46565b82815260059290921b84018101918181019086841115615c1857600080fd5b8286015b84811015615bcd5780358352918301918301615c1c565b600082601f830112615c4457600080fd5b81356020615c5461598683615b46565b82815260059290921b84018101918181019086841115615c7357600080fd5b8286015b84811015615bcd5780356001600160401b03811115615c965760008081fd5b615ca48986838b0101615967565b845250918301918301615c77565b60008060008060808587031215615cc857600080fd5b84356001600160401b0380821115615cdf57600080fd5b615ceb88838901615b69565b95506020870135915080821115615d0157600080fd5b615d0d88838901615bd8565b94506040870135915080821115615d2357600080fd5b50615d3087828801615c33565b949793965093946060013593505050565b600081518084526020808501945080840160005b83811015615d7a5781516001600160a01b031687529582019590820190600101615d55565b509495945050505050565b600081518084526020808501945080840160005b83811015615d7a57815187529582019590820190600101615d99565b600081518084526020808501808196508360051b8101915082860160005b85811015615dfd578284038952615deb848351615a87565b98850198935090840190600101615dd3565b5091979650505050505050565b608081526000615e1d6080830187615d41565b8281036020840152615e2f8187615d85565b90508281036040840152615e438186615db5565b905082810360608401526117738185615db5565b600080600080600060a08688031215615e6f57600080fd5b85359450615e7f602087016158a1565b9350615e8d604087016158a1565b94979396509394606081013594506080013592915050565b634e487b7160e01b600052602160045260246000fd5b6020810160088310615edd57634e487b7160e01b600052602160045260246000fd5b91905290565b60008060408385031215615ef657600080fd5b823591506020830135615f0881615ac6565b809150509250929050565b600060208284031215615f2557600080fd5b81356120ef81615ac6565b60008060408385031215615f4357600080fd5b82359150615f53602084016158a1565b90509250929050565b600080600080600060808688031215615f7457600080fd5b85359450615f84602087016158a1565b935060408601356001600160401b0380821115615fa057600080fd5b615fac89838a016158b2565b90955093506060880135915080821115615fc557600080fd5b50615fd288828901615967565b9150509295509295909350565b60008060008060608587031215615ff557600080fd5b84359350616005602086016158a1565b925060408501356001600160401b0381111561602057600080fd5b61602c878288016158b2565b95989497509550505050565b6000806000806080858703121561604e57600080fd5b84356001600160401b038082111561606557600080fd5b61607188838901615b69565b9550602087013591508082111561608757600080fd5b61609388838901615bd8565b945060408701359150808211156160a957600080fd5b6160b588838901615c33565b935060608701359150808211156160cb57600080fd5b50615b3a87828801615967565b60ff60f81b8816815260e0602082015260006160f760e0830189615a87565b82810360408401526161098189615a87565b606084018890526001600160a01b038716608085015260a0840186905283810360c08501529050610fc38185615d85565b60008060006060848603121561614f57600080fd5b833561615a81615ac6565b92506020840135915060408401356001600160401b0381111561617c57600080fd5b61618886828701615967565b9150509250925092565b600080600080604085870312156161a857600080fd5b84356001600160401b03808211156161bf57600080fd5b6161cb888389016158b2565b909650945060208701359150808211156161e457600080fd5b5061602c878288016158b2565b600080600080600060a0868803121561620957600080fd5b853561621481615ac6565b9450602086013561622481615ac6565b935060408601356001600160401b038082111561624057600080fd5b61624c89838a01615bd8565b9450606088013591508082111561626257600080fd5b61626e89838a01615bd8565b93506080880135915080821115615fc557600080fd5b6000806000806060858703121561629a57600080fd5b84356162a581615ac6565b93506020850135925060408501356001600160401b0381111561602057600080fd5b6000602082840312156162d957600080fd5b81356001600160401b03811681146120ef57600080fd5b600080600080600060a0868803121561630857600080fd5b85356001600160401b038082111561631f57600080fd5b61632b89838a01615b69565b9650602088013591508082111561634157600080fd5b61634d89838a01615bd8565b9550604088013591508082111561636357600080fd5b61636f89838a01615c33565b9450606088013591508082111561638557600080fd5b61626e89838a01615c33565b600080604083850312156163a457600080fd5b82356163af81615ac6565b946020939093013593505050565b600080600080600060a086880312156163d557600080fd5b85356163e081615ac6565b945060208601356163f081615ac6565b9350604086013592506060860135915060808601356001600160401b0381111561641957600080fd5b615fd288828901615967565b8183823760009101908152919050565b60208082526018908201527f476f7665726e6f723a206f6e6c79476f7665726e616e63650000000000000000604082015260600190565b600181811c9082168061648057607f821691505b6020821081036164a057634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526021908201527f476f7665726e6f723a2070726f706f73616c206e6f74207375636365737366756040820152601b60fa1b606082015260800190565b6000602082840312156164f957600080fd5b5051919050565b60a08152600061651360a0830188615d41565b82810360208401526165258188615d85565b905082810360408401526165398187615db5565b60608401959095525050608001529392505050565b60c08152600061656160c0830189615d41565b82810360208401526165738189615d85565b905082810360408401526165878188615db5565b60608401969096525050608081019290925260a0909101529392505050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610ed357610ed36165a6565b65ffffffffffff8281168282160390808211156165ee576165ee6165a6565b5092915050565b60006020828403121561660757600080fd5b81516001600160401b0381111561661d57600080fd5b8201601f8101841361662e57600080fd5b805161663c61598682615940565b81815285602083850101111561665157600080fd5b6117c2826020830160208601615a63565b81810381811115610ed357610ed36165a6565b634e487b7160e01b600052603260045260246000fd5b60006001820161669d5761669d6165a6565b5060010190565b6000602082840312156166b657600080fd5b815165ffffffffffff811681146120ef57600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6040815260006167096040830186886166cc565b82810360208401526117738185876166cc565b60808152600061672f6080830187615d41565b82810360208401526167418187615d85565b905082810360408401526167558186615db5565b91505082606083015295945050505050565b8082028115828204841417610ed357610ed36165a6565b634e487b7160e01b600052601260045260246000fd5b6000826167b157634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156167c857600080fd5b815180151581146120ef57600080fd5b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60008251616835818460208701615a63565b9190910192915050565b6001600160e01b0319831681528151600090616862816004850160208701615a63565b919091016004019392505050565b6001600160401b038181168382160190808211156165ee576165ee6165a6565b60208082526021908201527f476f7665726e6f723a20696e76616c69642070726f706f73616c206c656e67746040820152600d60fb1b606082015260800190565b8981526001600160a01b0389166020820152610120604082018190526000906168fc8382018b615d41565b90508281036060840152616910818a615d85565b905082810360808401526169248189615db5565b905082810360a08401526169388188615db5565b90508560c08401528460e08401528281036101008401526169598185615a87565b9c9b505050505050505050505050565b601f82111561385f57600081815260208120601f850160051c810160208610156169905750805b601f850160051c820191505b818110156117ac5782815560010161699c565b81516001600160401b038111156169c8576169c86158fa565b6169dc816169d6845461646c565b84616969565b602080601f831160018114616a1157600084156169f95750858301515b600019600386901b1c1916600185901b1785556117ac565b600085815260208120601f198616915b82811015616a4057888601518255948401946001909101908401616a21565b5085821015616a5e5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b84815260ff84166020820152826040820152608060608201526000611a706080830184615a87565b85815260ff8516602082015283604082015260a060608201526000616abe60a0830185615a87565b8281036080840152616ad08185615a87565b9897505050505050505056fe476f7665726e6f723a2072656c617920726576657274656420776974686f7574206d657373616765a164736f6c6343000811000a", }, { ContractAddr: common.HexToAddress(GovTokenContract), @@ -924,18 +913,12 @@ func init() { { ContractAddr: common.HexToAddress(TokenRecoverPortalContract), CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/cfc0bd1127186a917ddc38fd38d22903034d3f0b", - Code: "608060405234801561001057600080fd5b50600436106100a95760003560e01c80639fcb5012116100715780639fcb50121461012f578063ac4317511461014c578063bfb5a6a11461015f578063de88700b14610172578063e33f8d321461019d578063f4b88300146101c057600080fd5b8063046f7da2146100ae5780632eb4a7ab146100b85780634c335368146100d4578063572c9980146101145780638456cb5914610127575b600080fd5b6100b66101d3565b005b6100c160345481565b6040519081526020015b60405180910390f35b6101076040518060400160405280601481526020017342696e616e63652d436861696e2d47616e67657360601b81525081565b6040516100cb91906113eb565b6100b661012236600461141e565b610236565b6100b66102c7565b60355461013c9060ff1681565b60405190151581526020016100cb565b6100b661015a36600461149c565b610330565b6100b661016d36600461154d565b610756565b603754610185906001600160a01b031681565b6040516001600160a01b0390911681526020016100cb565b61013c6101ab366004611627565b60009081526036602052604090205460ff1690565b603354610185906001600160a01b031681565b6037546001600160a01b031633146101fe5760405163f2771a9960e01b815260040160405180910390fd5b6037805460ff60a01b191690556040517f62451d457bc659158be6e6247f56ec1df424a5c7597f71c20c2bc44e0965c8f990600090a1565b6037546001600160a01b031633146102615760405163f2771a9960e01b815260040160405180910390fd5b604051638525db0360e01b8152600481018390526001600160a01b038216602482015261100490638525db0390604401600060405180830381600087803b1580156102ab57600080fd5b505af11580156102bf573d6000803e3d6000fd5b505050505050565b6037546001600160a01b031633146102f25760405163f2771a9960e01b815260040160405180910390fd5b6037805460ff60a01b1916600160a01b1790556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e75290600090a1565b336110071461035b57604051630f22c43960e41b815261100760048201526024015b60405180910390fd5b6103c56040518060400160405280600f81526020016e617070726f7665724164647265737360881b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610a989050565b1561048d57601481146103f35783838383604051630a5a604160e01b81526004016103529493929190611669565b600061043783838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060149250610af2915050565b90506001600160a01b0381166104685784848484604051630a5a604160e01b81526004016103529493929190611669565b603380546001600160a01b0319166001600160a01b0392909216919091179055610713565b6104f26040518060400160405280600a8152602001691b595c9adb19549bdbdd60b21b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610a989050565b156105bf5760355460ff161561051b576040516379b3306f60e11b815260040160405180910390fd5b602081146105445783838383604051630a5a604160e01b81526004016103529493929190611669565b604080516020601f840181900481028201810190925282815260009161058491858580838501838280828437600092019190915250869250610af7915050565b806105aa5784848484604051630a5a604160e01b81526004016103529493929190611669565b6034556035805460ff19166001179055610713565b6106286040518060400160405280600e81526020016d30b9b9b2ba283937ba32b1ba37b960911b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610a989050565b156106f257601481146106565783838383604051630a5a604160e01b81526004016103529493929190611669565b600061069c601484848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610af29050565b90506001600160a01b0381166106cd5784848484604051630a5a604160e01b81526004016103529493929190611669565b603780546001600160a01b0319166001600160a01b0392909216919091179055610713565b838383836040516325ee20d560e21b81526004016103529493929190611669565b7ff1ce9b2cbf50eeb05769a29e2543fd350cab46894a7dd9978a12d534bb20e633848484846040516107489493929190611669565b60405180910390a150505050565b60355460ff1661077957604051635740729760e01b815260040160405180910390fd5b60345461079957604051635740729760e01b815260040160405180910390fd5b603754600160a01b900460ff16156107c45760405163c629ac8160e01b815260040160405180910390fd5b6107cc610b06565b600061085a89898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8d018190048102820181019092528b815292508b91508a9081908401838280828437600081840152601f19601f820116905080830192505050505050506108558e8e33610b5f565b610c80565b90506000818c8c6040516020016108739392919061169b565b6040516020818303038152906040528051906020012090506108a48160009081526036602052604090205460ff1690565b156108c157604051623e493160e81b815260040160405180910390fd5b6109693389898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8d018190048102820181019092528b815292508b91508a908190840183828082843760009201919091525050604080516020808c0282810182019093528b82528994509092508b918b91829190850190849080828437600092019190915250610d7492505050565b6109aa848480806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250506034549150849050610e7f565b6109c7576040516309bde33960e01b815260040160405180910390fd5b60008181526036602052604090819020805460ff191660011790555163799758b960e01b8152600481018d9052336024820152604481018c90526110049063799758b990606401600060405180830381600087803b158015610a2857600080fd5b505af1158015610a3c573d6000803e3d6000fd5b5050604080518f81523360208201529081018e90527f4ba6833d14341f931aa6ef39835b58eb5d657ebf0d968db68dbc7dd49d073f6d9250606001905060405180910390a15050610a8c60018055565b50505050505050505050565b600081604051602001610aab91906116c2565b6040516020818303038152906040528051906020012083604051602001610ad291906116c2565b604051602081830303815290604052805190602001201490505b92915050565b015190565b91018082526020908101910152565b600260015403610b585760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610352565b6002600155565b600060026040518060400160405280601481526020017342696e616e63652d436861696e2d47616e67657360601b815250610bbc85604051602001610ba691815260200190565b6040516020818303038152906040526000610e95565b6040516bffffffffffffffffffffffff19606087901b166020820152610bf5906034016040516020818303038152906040526001610e95565b610c0b88604051602001610ba691815260200190565b604051602001610c1e94939291906116de565b60408051601f1981840301815290829052610c38916116c2565b602060405180830381855afa158015610c55573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610c78919061180d565b949350505050565b60608351602114610ca457604051638152ea1b60e01b815260040160405180910390fd5b8251604014610cc657604051635e4bd79760e11b815260040160405180910390fd5b60408051608180825260c08201909252600091602082018180368337019050509050610cf6818660006021611067565b610d04818560216040611067565b610d338184604051602001610d1b91815260200190565b60405160208183030381529060405260616020611067565b604080516014808252818301909252600091602082018180368337019050509050815160148282856069600019fa610d6a57600080fd5b5095945050505050565b606060005b8251811015610dd25781838281518110610d9557610d9561183c565b6020026020010151604051602001610dae929190611852565b60405160208183030381529060405291508080610dca9061188a565b915050610d79565b5060006040518060400160405280601481526020017342696e616e63652d436861696e2d47616e67657360601b81525087878660345486604051602001610e1e969594939291906118a3565b60408051601f1981840301815291905280516020909101206033549091506001600160a01b0316610e4f82876110de565b6001600160a01b031614610e7657604051636eb5c6cb60e11b815260040160405180910390fd5b50505050505050565b600082610e8c85846110fa565b14949350505050565b6060600083516002610ea79190611914565b67ffffffffffffffff811115610ebf57610ebf611826565b6040519080825280601f01601f191660200182016040528015610ee9576020820181803683370190505b5060408051808201909152601081526f181899199a1a9b1b9c1cb0b131b232b360811b602082015290915060005b855181101561102f57818251878381518110610f3557610f3561183c565b0160200151610f47919060f81c611941565b81518110610f5757610f5761183c565b01602001516001600160f81b03191683610f72836002611914565b81518110610f8257610f8261183c565b60200101906001600160f81b031916908160001a905350818251878381518110610fae57610fae61183c565b0160200151610fc0919060f81c611955565b81518110610fd057610fd061183c565b01602001516001600160f81b03191683610feb836002611914565b610ff6906001611969565b815181106110065761100661183c565b60200101906001600160f81b031916908160001a905350806110278161188a565b915050610f17565b50831561105f5781604051602001611047919061197c565b60405160208183030381529060405292505050610aec565b509392505050565b60005b818110156110d7578381815181106110845761108461183c565b01602001516001600160f81b031916858461109e8161188a565b9550815181106110b0576110b061183c565b60200101906001600160f81b031916908160001a9053506110d08161188a565b905061106a565b5050505050565b60008060006110ed858561113f565b9150915061105f81611184565b600081815b845181101561105f5761112b8286838151811061111e5761111e61183c565b60200260200101516112d1565b9150806111378161188a565b9150506110ff565b60008082516041036111755760208301516040840151606085015160001a61116987828585611303565b9450945050505061117d565b506000905060025b9250929050565b6000816004811115611198576111986119a6565b036111a05750565b60018160048111156111b4576111b46119a6565b036112015760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610352565b6002816004811115611215576112156119a6565b036112625760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610352565b6003816004811115611276576112766119a6565b036112ce5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610352565b50565b60008183106112ed5760008281526020849052604090206112fc565b60008381526020839052604090205b9392505050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561133a57506000905060036113be565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa15801561138e573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166113b7576000600192509250506113be565b9150600090505b94509492505050565b60005b838110156113e25781810151838201526020016113ca565b50506000910152565b602081526000825180602084015261140a8160408501602087016113c7565b601f01601f19169190910160400192915050565b6000806040838503121561143157600080fd5b8235915060208301356001600160a01b038116811461144f57600080fd5b809150509250929050565b60008083601f84011261146c57600080fd5b50813567ffffffffffffffff81111561148457600080fd5b60208301915083602082850101111561117d57600080fd5b600080600080604085870312156114b257600080fd5b843567ffffffffffffffff808211156114ca57600080fd5b6114d68883890161145a565b909650945060208701359150808211156114ef57600080fd5b506114fc8782880161145a565b95989497509550505050565b60008083601f84011261151a57600080fd5b50813567ffffffffffffffff81111561153257600080fd5b6020830191508360208260051b850101111561117d57600080fd5b60008060008060008060008060008060c08b8d03121561156c57600080fd5b8a35995060208b0135985060408b013567ffffffffffffffff8082111561159257600080fd5b61159e8e838f0161145a565b909a50985060608d01359150808211156115b757600080fd5b6115c38e838f0161145a565b909850965060808d01359150808211156115dc57600080fd5b6115e88e838f0161145a565b909650945060a08d013591508082111561160157600080fd5b5061160e8d828e01611508565b915080935050809150509295989b9194979a5092959850565b60006020828403121561163957600080fd5b5035919050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60408152600061167d604083018688611640565b8281036020840152611690818587611640565b979650505050505050565b600084516116ad8184602089016113c7565b91909101928352506020820152604001919050565b600082516116d48184602087016113c7565b9190910192915050565b7f7b226163636f756e745f6e756d626572223a2230222c22636861696e5f6964228152611d1160f11b602082015260008551611721816022850160208a016113c7565b7f222c2264617461223a6e756c6c2c226d656d6f223a22222c226d736773223a5b6022918401918201526a3d9130b6b7bab73a111d1160a91b6042820152855161177281604d840160208a016113c7565b6e1116113932b1b4b834b2b73a111d1160891b604d929091019182015284516117a281605c8401602089016113c7565b711116113a37b5b2b72fb9bcb6b137b6111d1160711b605c929091019182015283516117d581606e8401602088016113c7565b7f227d5d2c2273657175656e6365223a2230222c22736f75726365223a2230227d606e9290910191820152608e019695505050505050565b60006020828403121561181f57600080fd5b5051919050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b600083516118648184602088016113c7565b9190910191825250602001919050565b634e487b7160e01b600052601160045260246000fd5b60006001820161189c5761189c611874565b5060010190565b600087516118b5818460208c016113c7565b606088901b6bffffffffffffffffffffffff191690830190815286516118e2816014840160208b016113c7565b01601481018690526034810185905283516119048160548401602088016113c7565b0160540198975050505050505050565b8082028115828204841417610aec57610aec611874565b634e487b7160e01b600052601260045260246000fd5b6000826119505761195061192b565b500490565b6000826119645761196461192b565b500690565b80820180821115610aec57610aec611874565b61060f60f31b8152600082516119998160028501602087016113c7565b9190910160020192915050565b634e487b7160e01b600052602160045260246000fdfea164736f6c6343000811000a", - }, - { - ContractAddr: common.HexToAddress(TokenRecoverPortalContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/0f352c4623898d92664a46cbfc26c52b79aad838", - Code: "0", // TODO: update this when contract was ready + Code: "608060405234801561001057600080fd5b50600436106100a95760003560e01c80639fcb5012116100715780639fcb50121461012f578063ac4317511461014c578063bfb5a6a11461015f578063de88700b14610172578063e33f8d321461019d578063f4b88300146101c057600080fd5b8063046f7da2146100ae5780632eb4a7ab146100b85780634c335368146100d4578063572c9980146101145780638456cb5914610127575b600080fd5b6100b66101d3565b005b6100c160345481565b6040519081526020015b60405180910390f35b6101076040518060400160405280601481526020017342696e616e63652d436861696e2d47616e67657360601b81525081565b6040516100cb91906113eb565b6100b661012236600461141e565b610236565b6100b66102c7565b60355461013c9060ff1681565b60405190151581526020016100cb565b6100b661015a36600461149c565b610330565b6100b661016d36600461154d565b610756565b603754610185906001600160a01b031681565b6040516001600160a01b0390911681526020016100cb565b61013c6101ab366004611627565b60009081526036602052604090205460ff1690565b603354610185906001600160a01b031681565b6037546001600160a01b031633146101fe5760405163f2771a9960e01b815260040160405180910390fd5b6037805460ff60a01b191690556040517f62451d457bc659158be6e6247f56ec1df424a5c7597f71c20c2bc44e0965c8f990600090a1565b6037546001600160a01b031633146102615760405163f2771a9960e01b815260040160405180910390fd5b604051638525db0360e01b8152600481018390526001600160a01b038216602482015261100490638525db0390604401600060405180830381600087803b1580156102ab57600080fd5b505af11580156102bf573d6000803e3d6000fd5b505050505050565b6037546001600160a01b031633146102f25760405163f2771a9960e01b815260040160405180910390fd5b6037805460ff60a01b1916600160a01b1790556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e75290600090a1565b336110071461035b57604051630f22c43960e41b815261100760048201526024015b60405180910390fd5b6103c56040518060400160405280600f81526020016e617070726f7665724164647265737360881b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610a989050565b1561048d57601481146103f35783838383604051630a5a604160e01b81526004016103529493929190611669565b600061043783838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060149250610af2915050565b90506001600160a01b0381166104685784848484604051630a5a604160e01b81526004016103529493929190611669565b603380546001600160a01b0319166001600160a01b0392909216919091179055610713565b6104f26040518060400160405280600a8152602001691b595c9adb19549bdbdd60b21b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610a989050565b156105bf5760355460ff161561051b576040516379b3306f60e11b815260040160405180910390fd5b602081146105445783838383604051630a5a604160e01b81526004016103529493929190611669565b604080516020601f840181900481028201810190925282815260009161058491858580838501838280828437600092019190915250869250610af7915050565b806105aa5784848484604051630a5a604160e01b81526004016103529493929190611669565b6034556035805460ff19166001179055610713565b6106286040518060400160405280600e81526020016d30b9b9b2ba283937ba32b1ba37b960911b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610a989050565b156106f257601481146106565783838383604051630a5a604160e01b81526004016103529493929190611669565b600061069c601484848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610af29050565b90506001600160a01b0381166106cd5784848484604051630a5a604160e01b81526004016103529493929190611669565b603780546001600160a01b0319166001600160a01b0392909216919091179055610713565b838383836040516325ee20d560e21b81526004016103529493929190611669565b7ff1ce9b2cbf50eeb05769a29e2543fd350cab46894a7dd9978a12d534bb20e633848484846040516107489493929190611669565b60405180910390a150505050565b60355460ff1661077957604051635740729760e01b815260040160405180910390fd5b60345461079957604051635740729760e01b815260040160405180910390fd5b603754600160a01b900460ff16156107c45760405163c629ac8160e01b815260040160405180910390fd5b6107cc610b06565b600061085a89898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8d018190048102820181019092528b815292508b91508a9081908401838280828437600081840152601f19601f820116905080830192505050505050506108558e8e33610b5f565b610c80565b90506000818c8c6040516020016108739392919061169b565b6040516020818303038152906040528051906020012090506108a48160009081526036602052604090205460ff1690565b156108c157604051623e493160e81b815260040160405180910390fd5b6109693389898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8d018190048102820181019092528b815292508b91508a908190840183828082843760009201919091525050604080516020808c0282810182019093528b82528994509092508b918b91829190850190849080828437600092019190915250610d7492505050565b6109aa848480806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250506034549150849050610e7f565b6109c7576040516309bde33960e01b815260040160405180910390fd5b60008181526036602052604090819020805460ff191660011790555163799758b960e01b8152600481018d9052336024820152604481018c90526110049063799758b990606401600060405180830381600087803b158015610a2857600080fd5b505af1158015610a3c573d6000803e3d6000fd5b5050604080518f81523360208201529081018e90527f717c40d7a8dbe67bb6371e964c24423645711d1624980e1c74e6956fc21088059250606001905060405180910390a15050610a8c60018055565b50505050505050505050565b600081604051602001610aab91906116c2565b6040516020818303038152906040528051906020012083604051602001610ad291906116c2565b604051602081830303815290604052805190602001201490505b92915050565b015190565b91018082526020908101910152565b600260015403610b585760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610352565b6002600155565b600060026040518060400160405280601481526020017342696e616e63652d436861696e2d47616e67657360601b815250610bbc85604051602001610ba691815260200190565b6040516020818303038152906040526000610e95565b6040516bffffffffffffffffffffffff19606087901b166020820152610bf5906034016040516020818303038152906040526001610e95565b610c0b88604051602001610ba691815260200190565b604051602001610c1e94939291906116de565b60408051601f1981840301815290829052610c38916116c2565b602060405180830381855afa158015610c55573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610c78919061180d565b949350505050565b60608351602114610ca457604051638152ea1b60e01b815260040160405180910390fd5b8251604014610cc657604051635e4bd79760e11b815260040160405180910390fd5b60408051608180825260c08201909252600091602082018180368337019050509050610cf6818660006021611067565b610d04818560216040611067565b610d338184604051602001610d1b91815260200190565b60405160208183030381529060405260616020611067565b604080516014808252818301909252600091602082018180368337019050509050815160148282856069600019fa610d6a57600080fd5b5095945050505050565b606060005b8251811015610dd25781838281518110610d9557610d9561183c565b6020026020010151604051602001610dae929190611852565b60405160208183030381529060405291508080610dca9061188a565b915050610d79565b5060006040518060400160405280601481526020017342696e616e63652d436861696e2d47616e67657360601b81525087878660345486604051602001610e1e969594939291906118a3565b60408051601f1981840301815291905280516020909101206033549091506001600160a01b0316610e4f82876110de565b6001600160a01b031614610e7657604051636eb5c6cb60e11b815260040160405180910390fd5b50505050505050565b600082610e8c85846110fa565b14949350505050565b6060600083516002610ea79190611914565b67ffffffffffffffff811115610ebf57610ebf611826565b6040519080825280601f01601f191660200182016040528015610ee9576020820181803683370190505b5060408051808201909152601081526f181899199a1a9b1b9c1cb0b131b232b360811b602082015290915060005b855181101561102f57818251878381518110610f3557610f3561183c565b0160200151610f47919060f81c611941565b81518110610f5757610f5761183c565b01602001516001600160f81b03191683610f72836002611914565b81518110610f8257610f8261183c565b60200101906001600160f81b031916908160001a905350818251878381518110610fae57610fae61183c565b0160200151610fc0919060f81c611955565b81518110610fd057610fd061183c565b01602001516001600160f81b03191683610feb836002611914565b610ff6906001611969565b815181106110065761100661183c565b60200101906001600160f81b031916908160001a905350806110278161188a565b915050610f17565b50831561105f5781604051602001611047919061197c565b60405160208183030381529060405292505050610aec565b509392505050565b60005b818110156110d7578381815181106110845761108461183c565b01602001516001600160f81b031916858461109e8161188a565b9550815181106110b0576110b061183c565b60200101906001600160f81b031916908160001a9053506110d08161188a565b905061106a565b5050505050565b60008060006110ed858561113f565b9150915061105f81611184565b600081815b845181101561105f5761112b8286838151811061111e5761111e61183c565b60200260200101516112d1565b9150806111378161188a565b9150506110ff565b60008082516041036111755760208301516040840151606085015160001a61116987828585611303565b9450945050505061117d565b506000905060025b9250929050565b6000816004811115611198576111986119a6565b036111a05750565b60018160048111156111b4576111b46119a6565b036112015760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610352565b6002816004811115611215576112156119a6565b036112625760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610352565b6003816004811115611276576112766119a6565b036112ce5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610352565b50565b60008183106112ed5760008281526020849052604090206112fc565b60008381526020839052604090205b9392505050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561133a57506000905060036113be565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa15801561138e573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166113b7576000600192509250506113be565b9150600090505b94509492505050565b60005b838110156113e25781810151838201526020016113ca565b50506000910152565b602081526000825180602084015261140a8160408501602087016113c7565b601f01601f19169190910160400192915050565b6000806040838503121561143157600080fd5b8235915060208301356001600160a01b038116811461144f57600080fd5b809150509250929050565b60008083601f84011261146c57600080fd5b50813567ffffffffffffffff81111561148457600080fd5b60208301915083602082850101111561117d57600080fd5b600080600080604085870312156114b257600080fd5b843567ffffffffffffffff808211156114ca57600080fd5b6114d68883890161145a565b909650945060208701359150808211156114ef57600080fd5b506114fc8782880161145a565b95989497509550505050565b60008083601f84011261151a57600080fd5b50813567ffffffffffffffff81111561153257600080fd5b6020830191508360208260051b850101111561117d57600080fd5b60008060008060008060008060008060c08b8d03121561156c57600080fd5b8a35995060208b0135985060408b013567ffffffffffffffff8082111561159257600080fd5b61159e8e838f0161145a565b909a50985060608d01359150808211156115b757600080fd5b6115c38e838f0161145a565b909850965060808d01359150808211156115dc57600080fd5b6115e88e838f0161145a565b909650945060a08d013591508082111561160157600080fd5b5061160e8d828e01611508565b915080935050809150509295989b9194979a5092959850565b60006020828403121561163957600080fd5b5035919050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60408152600061167d604083018688611640565b8281036020840152611690818587611640565b979650505050505050565b600084516116ad8184602089016113c7565b91909101928352506020820152604001919050565b600082516116d48184602087016113c7565b9190910192915050565b7f7b226163636f756e745f6e756d626572223a2230222c22636861696e5f6964228152611d1160f11b602082015260008551611721816022850160208a016113c7565b7f222c2264617461223a6e756c6c2c226d656d6f223a22222c226d736773223a5b6022918401918201526a3d9130b6b7bab73a111d1160a91b6042820152855161177281604d840160208a016113c7565b6e1116113932b1b4b834b2b73a111d1160891b604d929091019182015284516117a281605c8401602089016113c7565b711116113a37b5b2b72fb9bcb6b137b6111d1160711b605c929091019182015283516117d581606e8401602088016113c7565b7f227d5d2c2273657175656e6365223a2230222c22736f75726365223a2230227d606e9290910191820152608e019695505050505050565b60006020828403121561181f57600080fd5b5051919050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b600083516118648184602088016113c7565b9190910191825250602001919050565b634e487b7160e01b600052601160045260246000fd5b60006001820161189c5761189c611874565b5060010190565b600087516118b5818460208c016113c7565b606088901b6bffffffffffffffffffffffff191690830190815286516118e2816014840160208b016113c7565b01601481018690526034810185905283516119048160548401602088016113c7565b0160540198975050505050505050565b8082028115828204841417610aec57610aec611874565b634e487b7160e01b600052601260045260246000fd5b6000826119505761195061192b565b500490565b6000826119645761196461192b565b500690565b80820180821115610aec57610aec611874565b61060f60f31b8152600082516119998160028501602087016113c7565b9190910160020192915050565b634e487b7160e01b600052602160045260246000fdfea164736f6c6343000811000a", }, }, } - // TODO: revert this - // latestUpgrade[defaultNet] = latestUpgrade[rialtoNet] + latestUpgrade[defaultNet] = latestUpgrade[rialtoNet] } func UpgradeBuildInSystemContract(config *params.ChainConfig, blockNumber *big.Int, lastBlockTime uint64, blockTime uint64, statedb *state.StateDB) { From 5743b067ba34c34b64e58b6793aa70d1f5882394 Mon Sep 17 00:00:00 2001 From: Roshan <48975233+Pythonberg1997@users.noreply.github.com> Date: Tue, 5 Dec 2023 11:46:54 +0800 Subject: [PATCH 03/28] feat: add `generate-proof` to geth cmd (#2028) * feat: add `generate-proof` to geth cmd * chore: rename variable --- cmd/geth/blsaccountcmd.go | 107 ++++++++++++++++++++++++++++++++++++-- 1 file changed, 103 insertions(+), 4 deletions(-) diff --git a/cmd/geth/blsaccountcmd.go b/cmd/geth/blsaccountcmd.go index 1eeb5ee884..25d8b8df96 100644 --- a/cmd/geth/blsaccountcmd.go +++ b/cmd/geth/blsaccountcmd.go @@ -5,6 +5,7 @@ import ( "encoding/hex" "encoding/json" "fmt" + "math/big" "os" "path/filepath" "strings" @@ -15,6 +16,7 @@ import ( "github.com/prysmaticlabs/prysm/v4/encoding/bytesutil" "github.com/prysmaticlabs/prysm/v4/io/prompt" "github.com/prysmaticlabs/prysm/v4/proto/eth/service" + validatorpb "github.com/prysmaticlabs/prysm/v4/proto/prysm/v1alpha1/validator-client" "github.com/prysmaticlabs/prysm/v4/validator/accounts" "github.com/prysmaticlabs/prysm/v4/validator/accounts/iface" "github.com/prysmaticlabs/prysm/v4/validator/accounts/petnames" @@ -26,6 +28,7 @@ import ( "github.com/ethereum/go-ethereum/cmd/utils" "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/crypto" "github.com/ethereum/go-ethereum/signer/core" ) @@ -45,10 +48,14 @@ var ( Name: "show-private-key", Usage: "Show the BLS12-381 private key you will encrypt into a keystore file", } - BLSAccountPasswordFileFlag = &cli.StringFlag{ + blsAccountPasswordFileFlag = &cli.StringFlag{ Name: "blsaccountpassword", Usage: "File path for the BLS account password, which contains the password to encrypt private key into keystore file for managing votes in fast_finality feature", } + chainIdFlag = &cli.Int64Flag{ + Name: "chain-id", + Usage: "The chain id of the network that the validator will be created at", + } ) var ( @@ -133,7 +140,7 @@ Make sure you backup your BLS keys regularly.`, privateKeyFlag, showPrivateKeyFlag, utils.BLSPasswordFileFlag, - BLSAccountPasswordFileFlag, + blsAccountPasswordFileFlag, }, Description: ` geth bls account new @@ -154,7 +161,7 @@ You must remember this password to unlock your account in the future.`, Flags: []cli.Flag{ utils.DataDirFlag, utils.BLSPasswordFileFlag, - BLSAccountPasswordFileFlag, + blsAccountPasswordFileFlag, }, Description: ` geth bls account import @@ -193,6 +200,22 @@ Print summary of existing BLS accounts in the current BLS wallet.`, Delete the selected BLS account from the BLS wallet.`, }, + { + Name: "generate-proof", + Usage: "Generate ownership proof for the selected BLS account from the BLS wallet", + Action: blsAccountGenerateProof, + ArgsUsage: "", + Category: "BLS ACCOUNT COMMANDS", + Flags: []cli.Flag{ + utils.DataDirFlag, + utils.BLSPasswordFileFlag, + chainIdFlag, + }, + Description: ` + geth bls account generate-proof + +Generate ownership proof for the selected BLS account from the BLS wallet. The proof is used to prove the ownership of the BLS account when creating validator on BSC after feynman upgrade.`, + }, }, }, }, @@ -599,6 +622,82 @@ func blsAccountDelete(ctx *cli.Context) error { return nil } +// blsAccountGenerateProof generate ownership proof for a selected BLS account. +func blsAccountGenerateProof(ctx *cli.Context) error { + if ctx.Args().Len() == 0 { + utils.Fatalf("No BLS account specified.") + } + var filteredPubKeys []bls.PublicKey + for _, str := range ctx.Args().Slice() { + pkString := str + if strings.Contains(pkString, "0x") { + pkString = pkString[2:] + } + pubKeyBytes, err := hex.DecodeString(pkString) + if err != nil { + utils.Fatalf("Could not decode string %s as hex.", pkString) + } + blsPublicKey, err := bls.PublicKeyFromBytes(pubKeyBytes) + if err != nil { + utils.Fatalf("%#x is not a valid BLS public key.", pubKeyBytes) + } + filteredPubKeys = append(filteredPubKeys, blsPublicKey) + } + if len(filteredPubKeys) > 1 { + utils.Fatalf("Only support one BLS account specified.") + } + pubkeyBz := filteredPubKeys[0].Marshal() + + cfg := gethConfig{Node: defaultNodeConfig()} + // Load config file. + if file := ctx.String(configFileFlag.Name); file != "" { + if err := loadConfig(file, &cfg); err != nil { + utils.Fatalf("%v", err) + } + } + utils.SetNodeConfig(ctx, &cfg.Node) + + walletDir := filepath.Join(cfg.Node.DataDir, BLSWalletPath) + dirExists, err := wallet.Exists(walletDir) + if err != nil || !dirExists { + utils.Fatalf("BLS wallet not exists.") + } + + walletPassword := utils.GetPassPhraseWithList("Enter the password for your BLS wallet.", false, 0, GetBLSPassword(ctx)) + w, err := wallet.OpenWallet(context.Background(), &wallet.Config{ + WalletDir: walletDir, + WalletPassword: walletPassword, + }) + if err != nil { + utils.Fatalf("Open BLS wallet failed: %v.", err) + } + km, err := w.InitializeKeymanager(context.Background(), iface.InitKeymanagerConfig{ListenForChanges: false}) + if err != nil { + utils.Fatalf("Initialize key manager failed: %v.", err) + } + + chainIdInt64 := ctx.Int64(chainIdFlag.Name) + if chainIdInt64 == 0 { + utils.Fatalf("Chain id is required.") + } + chainId := new(big.Int).SetInt64(chainIdInt64) + paddedChainIdBytes := make([]byte, 32) + copy(paddedChainIdBytes[32-len(chainId.Bytes()):], chainId.Bytes()) + msgHash := crypto.Keccak256(append(pubkeyBz, paddedChainIdBytes...)) + + req := &validatorpb.SignRequest{ + PublicKey: pubkeyBz, + SigningRoot: msgHash, + } + sig, err := km.Sign(context.Background(), req) + if err != nil { + utils.Fatalf("Generate signature failed: %v.", err) + } + fmt.Printf("Proof: %#x\n", sig.Marshal()) + + return nil +} + func GetBLSPassword(ctx *cli.Context) []string { path := ctx.String(utils.BLSPasswordFileFlag.Name) if path == "" { @@ -612,7 +711,7 @@ func GetBLSPassword(ctx *cli.Context) []string { } func GetBLSAccountPassword(ctx *cli.Context) []string { - path := ctx.String(BLSAccountPasswordFileFlag.Name) + path := ctx.String(blsAccountPasswordFileFlag.Name) if path == "" { return nil } From 8f3c525adccb8d4fe8559137d14929303cb53523 Mon Sep 17 00:00:00 2001 From: Roshan Date: Fri, 8 Dec 2023 16:20:30 +0800 Subject: [PATCH 04/28] chore: resolve merge conflicts and fix review comments --- .github/workflows/build-test.yml | 6 +-- .github/workflows/commit-lint.yml | 4 +- .github/workflows/integration-test.yml | 3 ++ .github/workflows/lint.yml | 4 +- .github/workflows/unit-test.yml | 7 +-- cmd/geth/blsaccountcmd.go | 2 +- consensus/parlia/abi.go | 48 +++++++++++++++++++ consensus/parlia/feynmanfork.go | 16 +++---- ...fusionfork_test.go => feynmanfork_test.go} | 0 core/vm/contracts.go | 3 ++ 10 files changed, 76 insertions(+), 17 deletions(-) rename consensus/parlia/{fusionfork_test.go => feynmanfork_test.go} (100%) diff --git a/.github/workflows/build-test.yml b/.github/workflows/build-test.yml index 159ab63769..124fe8b3b0 100644 --- a/.github/workflows/build-test.yml +++ b/.github/workflows/build-test.yml @@ -7,7 +7,9 @@ on: - develop pull_request: - + branches: + - master + - develop jobs: unit-test: @@ -45,5 +47,3 @@ jobs: run: | go mod download make geth - - diff --git a/.github/workflows/commit-lint.yml b/.github/workflows/commit-lint.yml index 990ac35ffd..4d16ac7fb2 100644 --- a/.github/workflows/commit-lint.yml +++ b/.github/workflows/commit-lint.yml @@ -7,7 +7,9 @@ on: - develop pull_request: - + branches: + - master + - develop jobs: commitlint: diff --git a/.github/workflows/integration-test.yml b/.github/workflows/integration-test.yml index 0f1c5610df..ff12eb4bec 100644 --- a/.github/workflows/integration-test.yml +++ b/.github/workflows/integration-test.yml @@ -7,6 +7,9 @@ on: - develop pull_request: + branches: + - master + - develop jobs: truffle-test: diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 2dd99153cd..339cb2aa65 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -7,7 +7,9 @@ on: - develop pull_request: - + branches: + - master + - develop jobs: golang-lint: diff --git a/.github/workflows/unit-test.yml b/.github/workflows/unit-test.yml index 2aeb4ec385..b1a1d7af80 100644 --- a/.github/workflows/unit-test.yml +++ b/.github/workflows/unit-test.yml @@ -7,7 +7,9 @@ on: - develop pull_request: - + branches: + - master + - develop jobs: unit-test: @@ -48,6 +50,5 @@ jobs: ANDROID_HOME: "" # Skip android test run: | git submodule update --init --depth 1 --recursive - go mod tidy + go mod download make test - diff --git a/cmd/geth/blsaccountcmd.go b/cmd/geth/blsaccountcmd.go index 8a6ce4c159..4a7b735526 100644 --- a/cmd/geth/blsaccountcmd.go +++ b/cmd/geth/blsaccountcmd.go @@ -673,7 +673,7 @@ func blsAccountGenerateProof(ctx *cli.Context) error { utils.Fatalf("BLS wallet not exists.") } - walletPassword := utils.GetPassPhraseWithList("Enter the password for your BLS wallet.", false, 0, GetBLSPassword(ctx)) + walletPassword := utils.GetPassPhraseWithList("Enter the password for your BLS wallet.", false, 0, utils.MakePasswordListFromPath(ctx.String(utils.BLSPasswordFileFlag.Name))) w, err := wallet.OpenWallet(context.Background(), &wallet.Config{ WalletDir: walletDir, WalletPassword: walletPassword, diff --git a/consensus/parlia/abi.go b/consensus/parlia/abi.go index 0b3b879c3a..e3e51a890e 100644 --- a/consensus/parlia/abi.go +++ b/consensus/parlia/abi.go @@ -4481,6 +4481,54 @@ const stakeABI = ` ], "stateMutability": "view" }, + { + "type": "function", + "name": "getValidatorRewardRecord", + "inputs": [ + { + "name": "operatorAddress", + "type": "address", + "internalType": "address" + }, + { + "name": "dayIndex", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getValidatorTotalPooledBNBRecord", + "inputs": [ + { + "name": "operatorAddress", + "type": "address", + "internalType": "address" + }, + { + "name": "dayIndex", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, { "type": "function", "name": "initialize", diff --git a/consensus/parlia/feynmanfork.go b/consensus/parlia/feynmanfork.go index 7ee6a97343..efe0f2c0b6 100644 --- a/consensus/parlia/feynmanfork.go +++ b/consensus/parlia/feynmanfork.go @@ -204,14 +204,14 @@ func getTopValidatorsByVotingPower(validatorItems []ValidatorItem, maxElectedVal hp := &validatorHeap heap.Init(hp) - length := int(maxElectedValidators.Int64()) - if length > len(validatorHeap) { - length = len(validatorHeap) - } - eValidators := make([]common.Address, length) - eVotingPowers := make([]uint64, length) - eVoteAddrs := make([][]byte, length) - for i := 0; i < length; i++ { + topN := int(maxElectedValidators.Int64()) + if topN > len(validatorHeap) { + topN = len(validatorHeap) + } + eValidators := make([]common.Address, topN) + eVotingPowers := make([]uint64, topN) + eVoteAddrs := make([][]byte, topN) + for i := 0; i < topN; i++ { item := heap.Pop(hp).(ValidatorItem) eValidators[i] = item.address // as the decimal in BNB Beacon Chain is 1e8 and in BNB Smart Chain is 1e18, we need to divide it by 1e10 diff --git a/consensus/parlia/fusionfork_test.go b/consensus/parlia/feynmanfork_test.go similarity index 100% rename from consensus/parlia/fusionfork_test.go rename to consensus/parlia/feynmanfork_test.go diff --git a/core/vm/contracts.go b/core/vm/contracts.go index b4c8ce1e3a..99c6e8472a 100644 --- a/core/vm/contracts.go +++ b/core/vm/contracts.go @@ -1453,6 +1453,9 @@ func (c *verifyDoubleSignEvidence) Run(input []byte) ([]byte, error) { // check sig msgHash1 := types.SealHash(header1, evidence.ChainId) msgHash2 := types.SealHash(header2, evidence.ChainId) + if bytes.Equal(msgHash1.Bytes(), msgHash2.Bytes()) { + return nil, ErrExecutionReverted + } pubkey1, err := secp256k1.RecoverPubkey(msgHash1.Bytes(), sig1) if err != nil { return nil, ErrExecutionReverted From 6744d7c15fbfce0a3cdc241ce2a16c8d5eee92d5 Mon Sep 17 00:00:00 2001 From: Roshan <48975233+Pythonberg1997@users.noreply.github.com> Date: Mon, 11 Dec 2023 17:12:42 +0800 Subject: [PATCH 05/28] chore: modify breath block interval for test (#2054) --- consensus/parlia/abi.go | 45 ++++++++++++++++++++++++++++++++++++-- consensus/parlia/parlia.go | 4 ++-- 2 files changed, 45 insertions(+), 4 deletions(-) diff --git a/consensus/parlia/abi.go b/consensus/parlia/abi.go index e3e51a890e..c10107b5a1 100644 --- a/consensus/parlia/abi.go +++ b/consensus/parlia/abi.go @@ -3926,6 +3926,19 @@ const stakeABI = ` "type": "receive", "stateMutability": "payable" }, + { + "type": "function", + "name": "BREATH_BLOCK_INTERVAL", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, { "type": "function", "name": "DEAD_ADDRESS", @@ -4028,6 +4041,24 @@ const stakeABI = ` "outputs": [], "stateMutability": "nonpayable" }, + { + "type": "function", + "name": "claimBatch", + "inputs": [ + { + "name": "operatorAddresses", + "type": "address[]", + "internalType": "address[]" + }, + { + "name": "requestNumbers", + "type": "uint256[]", + "internalType": "uint256[]" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, { "type": "function", "name": "createValidator", @@ -4347,6 +4378,11 @@ const stakeABI = ` "type": "address", "internalType": "address" }, + { + "name": "createdTime", + "type": "uint256", + "internalType": "uint256" + }, { "name": "voteAddress", "type": "bytes", @@ -4491,7 +4527,7 @@ const stakeABI = ` "internalType": "address" }, { - "name": "dayIndex", + "name": "index", "type": "uint256", "internalType": "uint256" } @@ -4515,7 +4551,7 @@ const stakeABI = ` "internalType": "address" }, { - "name": "dayIndex", + "name": "index", "type": "uint256", "internalType": "uint256" } @@ -5198,6 +5234,11 @@ const stakeABI = ` "name": "InvalidMoniker", "inputs": [] }, + { + "type": "error", + "name": "InvalidRequest", + "inputs": [] + }, { "type": "error", "name": "InvalidValue", diff --git a/consensus/parlia/parlia.go b/consensus/parlia/parlia.go index 67c0a50aef..381874d4f3 100644 --- a/consensus/parlia/parlia.go +++ b/consensus/parlia/parlia.go @@ -1178,7 +1178,7 @@ func (p *Parlia) Finalize(chain consensus.ChainHeaderReader, header *types.Heade if p.chainConfig.IsFeynman(header.Number, header.Time) { // TODO: revert this // if time.Unix(int64(parent.Time), 0).Day() < time.Unix(int64(header.Time), 0).Day() { - if time.Unix(int64(header.Time), 0).Minute()%5 > time.Unix(int64(parent.Time), 0).Minute()%5 { + if time.Unix(int64(header.Time), 0).Minute() > time.Unix(int64(parent.Time), 0).Minute() { if err := p.updateValidatorSetV2(state, header, cx, txs, receipts, systemTxs, usedGas, false); err != nil { return err } @@ -1262,7 +1262,7 @@ func (p *Parlia) FinalizeAndAssemble(chain consensus.ChainHeaderReader, header * if p.chainConfig.IsFeynman(header.Number, header.Time) { // TODO: revert this // if time.Unix(int64(parent.Time), 0).Day() < time.Unix(int64(header.Time), 0).Day() { - if time.Unix(int64(header.Time), 0).Minute()%5 > time.Unix(int64(parent.Time), 0).Minute()%5 { + if time.Unix(int64(header.Time), 0).Minute() > time.Unix(int64(parent.Time), 0).Minute() { if err := p.updateValidatorSetV2(state, header, cx, &txs, &receipts, nil, &header.GasUsed, true); err != nil { return nil, nil, err } From ab8793ae9f941ef2c92648569bfd65c76314c468 Mon Sep 17 00:00:00 2001 From: Roshan <48975233+Pythonberg1997@users.noreply.github.com> Date: Tue, 12 Dec 2023 14:21:30 +0800 Subject: [PATCH 06/28] fix: bug in determining breathe block (#2055) --- consensus/parlia/parlia.go | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/consensus/parlia/parlia.go b/consensus/parlia/parlia.go index 381874d4f3..086a659cf8 100644 --- a/consensus/parlia/parlia.go +++ b/consensus/parlia/parlia.go @@ -1177,8 +1177,9 @@ func (p *Parlia) Finalize(chain consensus.ChainHeaderReader, header *types.Heade // update validators every day if p.chainConfig.IsFeynman(header.Number, header.Time) { // TODO: revert this - // if time.Unix(int64(parent.Time), 0).Day() < time.Unix(int64(header.Time), 0).Day() { - if time.Unix(int64(header.Time), 0).Minute() > time.Unix(int64(parent.Time), 0).Minute() { + // day of header > day of parent or day of header is 1 and day of parent is 31/30/29/28 + // if time.Unix(int64(parent.Time), 0).Day() != time.Unix(int64(header.Time), 0).Day() { + if time.Unix(int64(header.Time), 0).Minute() != time.Unix(int64(parent.Time), 0).Minute() { if err := p.updateValidatorSetV2(state, header, cx, txs, receipts, systemTxs, usedGas, false); err != nil { return err } @@ -1261,8 +1262,9 @@ func (p *Parlia) FinalizeAndAssemble(chain consensus.ChainHeaderReader, header * // update validators every day if p.chainConfig.IsFeynman(header.Number, header.Time) { // TODO: revert this - // if time.Unix(int64(parent.Time), 0).Day() < time.Unix(int64(header.Time), 0).Day() { - if time.Unix(int64(header.Time), 0).Minute() > time.Unix(int64(parent.Time), 0).Minute() { + // day of header > day of parent or day of header is 1 and day of parent is 31/30/29/28 + // if time.Unix(int64(parent.Time), 0).Day() != time.Unix(int64(header.Time), 0).Day() { + if time.Unix(int64(header.Time), 0).Minute() != time.Unix(int64(parent.Time), 0).Minute() { if err := p.updateValidatorSetV2(state, header, cx, &txs, &receipts, nil, &header.GasUsed, true); err != nil { return nil, nil, err } From 94b68156c89f67c1133100790e6ff954a5d444b1 Mon Sep 17 00:00:00 2001 From: Roshan <48975233+Pythonberg1997@users.noreply.github.com> Date: Tue, 12 Dec 2023 17:24:43 +0800 Subject: [PATCH 07/28] chore: update logic of determining breathe block and returned data of `verifyDoubleSignEvidence` (#2056) --- consensus/parlia/feynmanfork.go | 14 +++++++++++++- consensus/parlia/parlia.go | 22 ++++++---------------- core/vm/contracts.go | 14 +++++++------- 3 files changed, 26 insertions(+), 24 deletions(-) diff --git a/consensus/parlia/feynmanfork.go b/consensus/parlia/feynmanfork.go index efe0f2c0b6..6521ae50d0 100644 --- a/consensus/parlia/feynmanfork.go +++ b/consensus/parlia/feynmanfork.go @@ -6,7 +6,6 @@ import ( "fmt" "math" "math/big" - "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/common/hexutil" "github.com/ethereum/go-ethereum/core" @@ -18,6 +17,19 @@ import ( "github.com/ethereum/go-ethereum/rpc" ) +// TODO: revert to normal value +// const SecondsPerDay uint64 = 86400 +const SecondsPerDay uint64 = 60 + +// the parmas should be blocks' time which are timestamp +func sameDayInUTC(first, second uint64) bool { + return first/SecondsPerDay == second/SecondsPerDay +} + +func isBreatheBlock(lastBlockTime, blockTime uint64) bool { + return lastBlockTime != 0 && !sameDayInUTC(lastBlockTime, blockTime) +} + // initializeFeynmanContract initialize new contracts of Feynman fork func (p *Parlia) initializeFeynmanContract(state *state.StateDB, header *types.Header, chain core.ChainContext, txs *[]*types.Transaction, receipts *[]*types.Receipt, receivedTxs *[]*types.Transaction, usedGas *uint64, mining bool, diff --git a/consensus/parlia/parlia.go b/consensus/parlia/parlia.go index 086a659cf8..41b1fae0a3 100644 --- a/consensus/parlia/parlia.go +++ b/consensus/parlia/parlia.go @@ -1175,14 +1175,9 @@ func (p *Parlia) Finalize(chain consensus.ChainHeaderReader, header *types.Heade } // update validators every day - if p.chainConfig.IsFeynman(header.Number, header.Time) { - // TODO: revert this - // day of header > day of parent or day of header is 1 and day of parent is 31/30/29/28 - // if time.Unix(int64(parent.Time), 0).Day() != time.Unix(int64(header.Time), 0).Day() { - if time.Unix(int64(header.Time), 0).Minute() != time.Unix(int64(parent.Time), 0).Minute() { - if err := p.updateValidatorSetV2(state, header, cx, txs, receipts, systemTxs, usedGas, false); err != nil { - return err - } + if p.chainConfig.IsFeynman(header.Number, header.Time) && isBreatheBlock(parent.Time, header.Time) { + if err := p.updateValidatorSetV2(state, header, cx, txs, receipts, systemTxs, usedGas, false); err != nil { + return err } } @@ -1260,14 +1255,9 @@ func (p *Parlia) FinalizeAndAssemble(chain consensus.ChainHeaderReader, header * } // update validators every day - if p.chainConfig.IsFeynman(header.Number, header.Time) { - // TODO: revert this - // day of header > day of parent or day of header is 1 and day of parent is 31/30/29/28 - // if time.Unix(int64(parent.Time), 0).Day() != time.Unix(int64(header.Time), 0).Day() { - if time.Unix(int64(header.Time), 0).Minute() != time.Unix(int64(parent.Time), 0).Minute() { - if err := p.updateValidatorSetV2(state, header, cx, &txs, &receipts, nil, &header.GasUsed, true); err != nil { - return nil, nil, err - } + if p.chainConfig.IsFeynman(header.Number, header.Time) && isBreatheBlock(parent.Time, header.Time) { + if err := p.updateValidatorSetV2(state, header, cx, &txs, &receipts, nil, &header.GasUsed, true); err != nil { + return nil, nil, err } } diff --git a/core/vm/contracts.go b/core/vm/contracts.go index 99c6e8472a..cf3f5b9ca4 100644 --- a/core/vm/contracts.go +++ b/core/vm/contracts.go @@ -1408,8 +1408,8 @@ type DoubleSignEvidence struct { // Run input: rlp encoded DoubleSignEvidence // return: -// signer address| evidence time| -// 20 bytes | 32 bytes | +// signer address| evidence height| +// 20 bytes | 32 bytes | func (c *verifyDoubleSignEvidence) Run(input []byte) ([]byte, error) { evidence := &DoubleSignEvidence{} err := rlp.DecodeBytes(input, evidence) @@ -1445,9 +1445,9 @@ func (c *verifyDoubleSignEvidence) Run(input []byte) ([]byte, error) { if bytes.Equal(sig1, sig2) { return nil, ErrExecutionReverted } - evidenceTime := header1.Time - if evidenceTime < header2.Time { - evidenceTime = header2.Time + evidenceHeight := header1.Number + if evidenceHeight.Cmp(header2.Number) == -1 { + evidenceHeight = header2.Number } // check sig @@ -1470,9 +1470,9 @@ func (c *verifyDoubleSignEvidence) Run(input []byte) ([]byte, error) { returnBz := make([]byte, 52) // 20 + 32 signerAddr := crypto.Keccak256(pubkey1[1:])[12:] - evidenceTimeBz := big.NewInt(int64(evidenceTime)).Bytes() + evidenceHeightBz := evidenceHeight.Bytes() copy(returnBz[:20], signerAddr) - copy(returnBz[52-len(evidenceTimeBz):], evidenceTimeBz) + copy(returnBz[52-len(evidenceHeightBz):], evidenceHeightBz) return returnBz, nil } From d4f7313760865ecad6bf9e8714c9f6603e72472e Mon Sep 17 00:00:00 2001 From: Roshan <48975233+Pythonberg1997@users.noreply.github.com> Date: Wed, 13 Dec 2023 15:53:36 +0800 Subject: [PATCH 08/28] chore: remove unused code (#2061) --- core/vm/contracts.go | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/core/vm/contracts.go b/core/vm/contracts.go index cf3f5b9ca4..736341be11 100644 --- a/core/vm/contracts.go +++ b/core/vm/contracts.go @@ -1445,10 +1445,6 @@ func (c *verifyDoubleSignEvidence) Run(input []byte) ([]byte, error) { if bytes.Equal(sig1, sig2) { return nil, ErrExecutionReverted } - evidenceHeight := header1.Number - if evidenceHeight.Cmp(header2.Number) == -1 { - evidenceHeight = header2.Number - } // check sig msgHash1 := types.SealHash(header1, evidence.ChainId) @@ -1470,7 +1466,7 @@ func (c *verifyDoubleSignEvidence) Run(input []byte) ([]byte, error) { returnBz := make([]byte, 52) // 20 + 32 signerAddr := crypto.Keccak256(pubkey1[1:])[12:] - evidenceHeightBz := evidenceHeight.Bytes() + evidenceHeightBz := header1.Number.Bytes() copy(returnBz[:20], signerAddr) copy(returnBz[52-len(evidenceHeightBz):], evidenceHeightBz) From 6685f68995917cb8a48bf7d4fdcd66a54a79d648 Mon Sep 17 00:00:00 2001 From: Roshan <48975233+Pythonberg1997@users.noreply.github.com> Date: Tue, 19 Dec 2023 09:46:15 +0800 Subject: [PATCH 09/28] chore: fix CI issues (#2085) --- consensus/parlia/feynmanfork.go | 1 + core/vm/contracts_test.go | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/consensus/parlia/feynmanfork.go b/consensus/parlia/feynmanfork.go index 6521ae50d0..13d3ebdfd6 100644 --- a/consensus/parlia/feynmanfork.go +++ b/consensus/parlia/feynmanfork.go @@ -6,6 +6,7 @@ import ( "fmt" "math" "math/big" + "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/common/hexutil" "github.com/ethereum/go-ethereum/core" diff --git a/core/vm/contracts_test.go b/core/vm/contracts_test.go index 8e1412db40..74e90889fd 100644 --- a/core/vm/contracts_test.go +++ b/core/vm/contracts_test.go @@ -410,7 +410,7 @@ func BenchmarkPrecompiledBLS12381G2MultiExpWorstCase(b *testing.B) { func TestDoubleSignSlash(t *testing.T) { tc := precompiledTest{ Input: "f906278202cab9030ff9030ca01062d3d5015b9242bc193a9b0769f3d3780ecb55f97f40a752ae26d0b68cd0d8a0fae1a05fcb14bfd9b8a9f2b65007a9b6c2000de0627a73be644dd993d32342c494976ea74026e726554db657fa54763abd0c3a0aa9a0f385cc58ed297ff0d66eb5580b02853d3478ba418b1819ac659ee05df49b9794a0bf88464af369ed6b8cf02db00f0b9556ffa8d49cd491b00952a7f83431446638a00a6d0870e586a76278fbfdcedf76ef6679af18fc1f9137cfad495f434974ea81b901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001820cdf830f4240830f4240846555fa64b90111d983010301846765746888676f312e32302e378664617277696e00007abd731ef8ae07b86091cb8836d58f5444b883422a18825d899035d3e6ea39ad1a50069bf0b86da8b5573dde1cb4a0a34f19ce94e0ef78ff7518c80265b8a3ca56e3c60167523590d4e8dcc324900559465fc0fa403774096614e135de280949b58a45cc96f2ba9e17f848820d41a08429d0d8b33ee72a84f750fefea846cbca54e487129c7961c680bb72309ca888820d42a08c9db14d938b19f9e2261bbeca2679945462be2b58103dfff73665d0d150fb8a804ae755e0fe64b59753f4db6308a1f679747bce186aa2c62b95fa6eeff3fbd08f3b0667e45428a54ade15bad19f49641c499b431b36f65803ea71b379e6b61de501a0232c9ba2d41b40d36ed794c306747bcbc49bf61a0f37409c18bfe2b5bef26a2d880000000000000000b9030ff9030ca01062d3d5015b9242bc193a9b0769f3d3780ecb55f97f40a752ae26d0b68cd0d8a0b2789a5357827ed838335283e15c4dcc42b9bebcbf2919a18613246787e2f96094976ea74026e726554db657fa54763abd0c3a0aa9a071ce4c09ee275206013f0063761bc19c93c13990582f918cc57333634c94ce89a00e095703e5c9b149f253fe89697230029e32484a410b4b1f2c61442d73c3095aa0d317ae19ede7c8a2d3ac9ef98735b049bcb7278d12f48c42b924538b60a25e12b901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001820cdf830f4240830f4240846555fa64b90111d983010301846765746888676f312e32302e378664617277696e00007abd731ef8ae07b86091cb8836d58f5444b883422a18825d899035d3e6ea39ad1a50069bf0b86da8b5573dde1cb4a0a34f19ce94e0ef78ff7518c80265b8a3ca56e3c60167523590d4e8dcc324900559465fc0fa403774096614e135de280949b58a45cc96f2ba9e17f848820d41a08429d0d8b33ee72a84f750fefea846cbca54e487129c7961c680bb72309ca888820d42a08c9db14d938b19f9e2261bbeca2679945462be2b58103dfff73665d0d150fb8a80c0b17bfe88534296ff064cb7156548f6deba2d6310d5044ed6485f087dc6ef232e051c28e1909c2b50a3b4f29345d66681c319bef653e52e5d746480d5a3983b00a0b56228685be711834d0f154292d07826dea42a0fad3e4f56c31470b7fbfbea26880000000000000000", - Expected: "15d34aaf54267db7d7c367839aaf71a00a2c6a65000000000000000000000000000000000000000000000000000000006555fa64", + Expected: "15d34aaf54267db7d7c367839aaf71a00a2c6a650000000000000000000000000000000000000000000000000000000000000cdf", Gas: 1000, Name: "", } From 08f75ca23f197b61539aa03ba8ce0975eb2b12f8 Mon Sep 17 00:00:00 2001 From: Roshan <48975233+Pythonberg1997@users.noreply.github.com> Date: Wed, 20 Dec 2023 17:17:43 +0800 Subject: [PATCH 10/28] chore: update system contracts' byte code (#2093) --- core/systemcontracts/upgrade.go | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/core/systemcontracts/upgrade.go b/core/systemcontracts/upgrade.go index 829d17ff0b..e5aff2b90b 100644 --- a/core/systemcontracts/upgrade.go +++ b/core/systemcontracts/upgrade.go @@ -873,32 +873,32 @@ func init() { { ContractAddr: common.HexToAddress(ValidatorContract), CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/cfc0bd1127186a917ddc38fd38d22903034d3f0b", - Code: "6080604052600436106104da5760003560e01c80638a7beb0111610281578063c6d339451161015a578063e40716a1116100cc578063f92eb86b11610085578063f92eb86b14610cb8578063f9a2bbc714610ccd578063fc3e590814610ce2578063fccc281314610cf7578063fd4ad81f14610d0c578063fd6a687914610d3b576104e1565b8063e40716a114610c1b578063e589b61e14610c30578063ea321e4914610c50578063eb57e20214610c70578063eda5868c14610c90578063f340fa0114610ca5576104e1565b8063d86222d51161011e578063d86222d514610b9d578063daacdb6614610bb2578063dc927faf14610bc7578063df8079e914610bdc578063e086c7b114610bf1578063e1c7392a14610c06576104e1565b8063c6d3394514610b3e578063c81b166214610b53578063c8509d811461090d578063ce910b0c14610b68578063d68fb56a14610b88576104e1565b8063aa82dce1116101f3578063ad3c9da6116101b7578063ad3c9da614610abd578063aef198a914610add578063b7ab4db514610af2578063b8cf4ef114610b14578063bf9f4995146106bd578063c466689d14610b29576104e1565b8063aa82dce114610a49578063aad5606314610a5e578063aaf5eb6814610a73578063ab51bb9614610a88578063ac43175114610a9d576104e1565b80639dc09262116102455780639dc09262146109cb5780639fe0f816146109e0578063a0dc2758146109f5578063a1a11bf514610a0a578063a5422d5c14610a1f578063a78abc1614610a34576104e1565b80638a7beb01146109575780638b5ad0c91461096c5780638d19a410146109815780639369d7de146109a157806396713da9146109b6576104e1565b806351e80672116103b357806370fd5bad116103255780637a84ca2a116102e95780637a84ca2a146108e357806381650b62146108f8578063831d65d11461090d578063853230aa146108b9578063862498821461092d57806388b32f1114610942576104e1565b806370fd5bad1461087a578063718a8aa81461088f57806375d47a0a146108a457806378dfed4a146108b95780637942fd05146108ce576104e1565b80635de1e22c116103775780635de1e22c146107e9578063603d86d3146106a857806360eba4fe146107fe57806362b72cf51461081e5780636969a25c146108335780636e47b48214610865576104e1565b806351e806721461076a57806355614fcc1461077f578063565c56b31461079f5780635667515a146107bf5780635d77156c146107d4576104e1565b80633365af3a1161044c57806343756e5c1161041057806343756e5c146106df57806345cf9daf146106f4578063493279b1146107095780634bf6c8821461072b5780634df6e0c3146107405780635192c82c14610755576104e1565b80633365af3a1461064557806335409f7f146106655780633b071dcc146106855780633de0f0d8146106a85780633dffc387146106bd576104e1565b8063152ad3b81161049e578063152ad3b8146105995780631e4c1524146105bb5780631ff18069146105db578063219f22d5146105f0578063300c356714610605578063321d398a14610625576104e1565b806304c4fec6146104e657806307a56847146104fd5780630bee7a67146105285780630e2374a51461054a5780631182b8751461056c576104e1565b366104e157005b600080fd5b3480156104f257600080fd5b506104fb610d50565b005b34801561050957600080fd5b50610512610dc2565b60405161051f9190618c1b565b60405180910390f35b34801561053457600080fd5b5061053d610dc8565b60405161051f9190618c45565b34801561055657600080fd5b5061055f610dcd565b60405161051f9190617f97565b34801561057857600080fd5b5061058c610587366004617e7d565b610dd3565b60405161051f919061812a565b3480156105a557600080fd5b506105ae6110b6565b60405161051f919061811f565b3480156105c757600080fd5b506104fb6105d6366004617c8b565b6110bf565b3480156105e757600080fd5b5061051261175f565b3480156105fc57600080fd5b5061053d611765565b34801561061157600080fd5b506104fb610620366004617c23565b61176a565b34801561063157600080fd5b506105ae610640366004617e2a565b611ab3565b34801561065157600080fd5b506105ae610660366004617e2a565b611b82565b34801561067157600080fd5b506104fb610680366004617beb565b611c33565b34801561069157600080fd5b5061069a611d8c565b60405161051f929190618035565b3480156106b457600080fd5b50610512612068565b3480156106c957600080fd5b506106d261206e565b60405161051f9190618c56565b3480156106eb57600080fd5b5061055f612073565b34801561070057600080fd5b50610512612079565b34801561071557600080fd5b5061071e61207f565b60405161051f9190618c0c565b34801561073757600080fd5b506106d2612085565b34801561074c57600080fd5b5061069a61208a565b34801561076157600080fd5b50610512612208565b34801561077657600080fd5b5061055f61220e565b34801561078b57600080fd5b506105ae61079a366004617beb565b612214565b3480156107ab57600080fd5b506105126107ba366004617beb565b612249565b3480156107cb57600080fd5b506106d261229a565b3480156107e057600080fd5b5061053d61229f565b3480156107f557600080fd5b506105126122a4565b34801561080a57600080fd5b5061058c610819366004617e2a565b6122aa565b34801561082a57600080fd5b50610512612350565b34801561083f57600080fd5b5061085361084e366004617e2a565b612356565b60405161051f96959493929190617fc4565b34801561087157600080fd5b5061055f6123ba565b34801561088657600080fd5b506106d26123c0565b34801561089b57600080fd5b506106d26123c5565b3480156108b057600080fd5b5061055f6123ca565b3480156108c557600080fd5b506105126123d0565b3480156108da57600080fd5b506106d26123d6565b3480156108ef57600080fd5b506105126123db565b34801561090457600080fd5b5061053d6123e1565b34801561091957600080fd5b506104fb610928366004617e7d565b6123e6565b34801561093957600080fd5b50610512612447565b34801561094e57600080fd5b5061051261244d565b34801561096357600080fd5b506105ae612453565b34801561097857600080fd5b5061051261245c565b34801561098d57600080fd5b5061051261099c366004617beb565b612462565b3480156109ad57600080fd5b506104fb6124a2565b3480156109c257600080fd5b506106d26125b6565b3480156109d757600080fd5b5061055f6125bb565b3480156109ec57600080fd5b506105126125c1565b348015610a0157600080fd5b506105126125c6565b348015610a1657600080fd5b5061055f6125cb565b348015610a2b57600080fd5b5061058c6125d1565b348015610a4057600080fd5b506105ae6125f0565b348015610a5557600080fd5b5061055f6125f9565b348015610a6a57600080fd5b5061055f6125ff565b348015610a7f57600080fd5b50610512612605565b348015610a9457600080fd5b5061053d61229a565b348015610aa957600080fd5b506104fb610ab8366004617dce565b61260e565b348015610ac957600080fd5b50610512610ad8366004617beb565b612eac565b348015610ae957600080fd5b50610512612ebe565b348015610afe57600080fd5b50610b07612ecb565b60405161051f9190618022565b348015610b2057600080fd5b50610512612fb7565b348015610b3557600080fd5b50610512612fbc565b348015610b4a57600080fd5b506105126123c0565b348015610b5f57600080fd5b5061055f612fc2565b348015610b7457600080fd5b5061058c610b83366004617e2a565b612fc8565b348015610b9457600080fd5b50610512612fd5565b348015610ba957600080fd5b50610512613014565b348015610bbe57600080fd5b50610512613020565b348015610bd357600080fd5b5061055f613026565b348015610be857600080fd5b5061055f61302c565b348015610bfd57600080fd5b50610512610dc8565b348015610c1257600080fd5b506104fb613032565b348015610c2757600080fd5b506105126131e1565b348015610c3c57600080fd5b506104fb610c4b366004617beb565b6131e7565b348015610c5c57600080fd5b506105ae610c6b366004617d8f565b61332c565b348015610c7c57600080fd5b506104fb610c8b366004617beb565b6134b2565b348015610c9c57600080fd5b5061053d6135b6565b6104fb610cb3366004617beb565b6135bb565b348015610cc457600080fd5b50610512613923565b348015610cd957600080fd5b5061055f613929565b348015610cee57600080fd5b506106d26125c1565b348015610d0357600080fd5b5061055f61392f565b348015610d1857600080fd5b50610d2c610d27366004617e2a565b613935565b60405161051f93929190618c24565b348015610d4757600080fd5b5061055f6139f7565b6000610d5b33612462565b9050600b8181548110610d6a57fe5b600091825260209091206001601690920201015460ff16610da65760405162461bcd60e51b8152600401610d9d9061888f565b60405180910390fd5b6000610db0612fd5565b9050610dbd3383836139fd565b505050565b60095481565b606481565b61200181565b60005460609060ff16610df85760405162461bcd60e51b8152600401610d9d906182e9565b600b54610eb657610e07617797565b60015460005b81811015610eb257600b80546001810182556000919091528351600080516020618ed38339815191526016909202918201908155602080860151600080516020618f138339815191528401805460ff1916911515919091179055604086015180518794610e8e93600080516020618ef38339815191529091019201906177c6565b506060820151610ea49060038301906013617840565b505050806001019050610e0d565b5050505b610ebe61786d565b6000610eff85858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250613cce92505050565b9150915080610f1b57610f126064613e8a565b925050506110af565b815160009060ff16610f4057610f3983602001518460400151613eeb565b905061107b565b825160ff166001141561107757826020015151600114610f8557600080516020618eb3833981519152604051610f7590618748565b60405180910390a1506067611072565b6000600460008560200151600081518110610f9c57fe5b6020026020010151600001516001600160a01b03166001600160a01b0316815260200190815260200160002054905080600014806110045750600180820381548110610fe457fe5b9060005260206000209060040201600201601c9054906101000a900460ff165b1561106457836020015160008151811061101a57fe5b6020026020010151600001516001600160a01b03167fe209c46bebf57cf265d5d9009a00870e256d9150f3ed5281ab9d9eb3cec6e4be60405160405180910390a260009150611070565b61106d8161504f565b91505b505b61107b565b5060655b63ffffffff81166110a057505060408051600081526020810190915291506110af9050565b6110a981613e8a565b93505050505b9392505050565b60075460ff1681565b3341146110de5760405162461bcd60e51b8152600401610d9d90618a77565b3a156110fc5760405162461bcd60e51b8152600401610d9d906187ce565b825160408051828152602080840282010190915260609082801561113a57816020015b611127617891565b81526020019060019003908161111f5790505b50905060005b828110156111e4576040518060c0016040528087838151811061115f57fe5b60200260200101516001600160a01b0316815260200160006001600160a01b0316815260200160006001600160a01b031681526020018683815181106111a157fe5b60200260200101516001600160401b0316815260200160001515815260200160008152508282815181106111d157fe5b6020908102919091010152600101611140565b5060405163d31f968d60e01b81526120009063d31f968d9061120f9061100090600890600401618006565b60206040518083038186803b15801561122757600080fd5b505afa15801561123b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061125f9190617d6f565b156115585780518061127357505050610dbd565b6015548181111561130e57815b8181101561130c57601580548061129357fe5b60008281526020812060046000199093019283020180546001600160a01b0319908116825560018201805490911690556002810180546001600160e81b031916905560030155905560168054806112e657fe5b60019003818190600052602060002001600061130291906178c6565b9055600101611280565b505b60005b8281101561154e5781811061143657601584828151811061132e57fe5b602090810291909101810151825460018181018555600094855293839020825160049092020180546001600160a01b039283166001600160a01b0319918216178255938301519481018054958316958516959095179094556040820151600285018054606085015160808601511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b199590961692909716919091179290921692909217169290921790915560a0015160039091015585516016908790839081106113fe57fe5b6020908102919091018101518254600181018455600093845292829020815161143094919091019291909101906177c6565b50611546565b83818151811061144257fe5b60200260200101516015828154811061145757fe5b6000918252602091829020835160049092020180546001600160a01b039283166001600160a01b0319918216178255928401516001820180549184169185169190911790556040840151600282018054606087015160808801511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b1995909716929097169190911792909216939093171692909217905560a090910151600390910155855186908290811061151257fe5b60200260200101516016828154811061152757fe5b9060005260206000200190805190602001906115449291906177c6565b505b600101611311565b5050505050610dbd565b6060806115658386615163565b9150915060005b60015481101561164f576001818154811061158357fe5b906000526020600020906004020160030154600014611647576120026001600160a01b031663092193ab600183815481106115ba57fe5b906000526020600020906004020160030154600184815481106115d957fe5b60009182526020909120600491820201546040516001600160e01b031960e086901b168152611614926001600160a01b039092169101617f97565b6000604051808303818588803b15801561162d57600080fd5b505af1158015611641573d6000803e3d6000fd5b50505050505b60010161156c565b5047156116bd577f6ecc855f9440a9282c90913bbc91619fd44f5ec0b462af28d127b116f130aa4d476040516116859190618c1b565b60405180910390a1604051611002904780156108fc02916000818181858888f193505050501580156116bb573d6000803e3d6000fd5b505b600060038190556005558151156116d8576116d8828261539c565b6110016001600160a01b031663fc4333cd6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561171557600080fd5b505af1158015611729573d6000803e3d6000fd5b50506040517fedd8d7296956dd970ab4de3f2fc03be2b0ffc615d20cd4c72c6e44f928630ebf925060009150a150505050505050565b60035481565b606881565b3341146117895760405162461bcd60e51b8152600401610d9d90618a77565b60105443116117aa5760405162461bcd60e51b8152600401610d9d90618445565b3a156117c85760405162461bcd60e51b8152600401610d9d906187ce565b60005460ff166117ea5760405162461bcd60e51b8152600401610d9d906182e9565b60006110023168056bc75e2d631000008111156118215761181a8168056bc75e2d6310000063ffffffff615ba316565b9150611828565b5050611aa9565b6040516309a99b4f60e41b815261100290639a99b4f09061184f9030908690600401617fab565b602060405180830381600087803b15801561186957600080fd5b505af115801561187d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a19190617e42565b9150816118af575050611aa9565b6000805b848110156118dd578585828181106118c757fe5b90506020020135820191508060010190506118b3565b50806118eb57505050611aa9565b6000806000805b89811015611aa1578489898381811061190757fe5b9050602002013588028161191757fe5b0493508a8a8281811061192657fe5b905060200201602081019061193b9190617beb565b6001600160a01b03811660009081526004602052604090205490935091508115611a5757600060018084038154811061197057fe5b9060005260206000209060040201905080600201601c9054906101000a900460ff16156119dd57836001600160a01b03167fb9c75cbbfde137c4281689580799ef5f52144e78858f776a5979b2b212137d85866040516119d09190618c1b565b60405180910390a2611a51565b6003546119f0908663ffffffff615be516565b6003908155810154611a08908663ffffffff615be516565b60038201556040516001600160a01b038516907fcb0aad6cf9cd03bdf6137e359f541c42f38b39f007cae8e89e88aa7d8c6617b290611a48908890618c1b565b60405180910390a25b50611a99565b826001600160a01b03167fb9c75cbbfde137c4281689580799ef5f52144e78858f776a5979b2b212137d8585604051611a909190618c1b565b60405180910390a25b6001016118f2565b505050505050505b5050436010555050565b6001546000908210611ac757506000611b7d565b60006001600160a01b031660018381548110611adf57fe5b60009182526020909120600490910201546001600160a01b03161480611b0f57506008541580611b0f5750600a54155b80611b1e575060085460095410155b80611b2f5750611b2d82611b82565b155b80611b5857506000600b8381548110611b4457fe5b906000526020600020906016020160000154115b80611b6c57506001611b68612ecb565b5111155b15611b7957506000611b7d565b5060015b919050565b6001546000908210611b9657506000611b7d565b600b548210611bd35760018281548110611bac57fe5b9060005260206000209060040201600201601c9054906101000a900460ff16159050611b7d565b60018281548110611be057fe5b9060005260206000209060040201600201601c9054906101000a900460ff16158015611c2d5750600b8281548110611c1457fe5b600091825260209091206001601690920201015460ff16155b92915050565b3361100114611c545760405162461bcd60e51b8152600401610d9d90618b8c565b600b54611d1257611c63617797565b60015460005b81811015611d0e57600b80546001810182556000919091528351600080516020618ed38339815191526016909202918201908155602080860151600080516020618f138339815191528401805460ff1916911515919091179055604086015180518794611cea93600080516020618ef38339815191529091019201906177c6565b506060820151611d009060038301906013617840565b505050806001019050611c69565b5050505b6001600160a01b03811660009081526004602052604090205480611d365750611d89565b6001810390506000600b8281548110611d4b57fe5b600091825260209091206001601690920201015460ff169050611d6e8383615c0a565b8015611d775750805b15610dbd576009805460001901905550505b50565b60015460609081906000805b82811015611ddf5760018181548110611dad57fe5b9060005260206000209060040201600201601c9054906101000a900460ff16611dd7576001909101905b600101611d98565b50606081604051908082528060200260200182016040528015611e0c578160200160208202803683370190505b509050606082604051908082528060200260200182016040528015611e4557816020015b6060815260200190600190039081611e305790505b50600b5460009450909150841415611fc05760005b84811015611fba5760018181548110611e6f57fe5b9060005260206000209060040201600201601c9054906101000a900460ff16611fb25760018181548110611e9f57fe5b600091825260209091206004909102015483516001600160a01b0390911690849086908110611eca57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050600b8181548110611ef757fe5b600091825260209182902060026016909202018101805460408051601f600019610100600186161502019093169490940491820185900485028401850190528083529192909190830182828015611f8f5780601f10611f6457610100808354040283529160200191611f8f565b820191906000526020600020905b815481529060010190602001808311611f7257829003601f168201915b5050505050828581518110611fa057fe5b60209081029190910101526001909301925b600101611e5a565b5061205c565b60005b8481101561205a5760018181548110611fd857fe5b9060005260206000209060040201600201601c9054906101000a900460ff16612052576001818154811061200857fe5b600091825260209091206004909102015483516001600160a01b039091169084908690811061203357fe5b6001600160a01b03909216602092830291909101909101526001909301925b600101611fc3565b505b909450925050505b9091565b61271081565b600181565b61100181565b60085481565b6102ca81565b600881565b600e54600c5460609182918061209e575060155b60606120a8612ecb565b905060606120b582615fbd565b9050828251116120cc579094509250612064915050565b838383510310156120de578282510393505b83156121145760c843046120fa83838388880360008a8a61612b565b6121128383838888038989038a8b8b8b51030161612b565b505b606083604051908082528060200260200182016040528015612140578160200160208202803683370190505b50905060608460405190808252806020026020018201604052801561217957816020015b60608152602001906001900390816121645790505b50905060005b858110156121fa5784818151811061219357fe5b60200260200101518382815181106121a757fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508381815181106121d357fe5b60200260200101518282815181106121e757fe5b602090810291909101015260010161217f565b509096509450505050509091565b60065481565b61200081565b6001600160a01b0381166000908152600460205260408120548061223c576000915050611b7d565b600019016110af81611b82565b6001600160a01b03811660009081526004602052604081205480612271576000915050611b7d565b60018082038154811061228057fe5b906000526020600020906004020160030154915050919050565b600081565b606781565b600f5481565b601281815481106122b757fe5b600091825260209182902001805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152935090918301828280156123485780601f1061231d57610100808354040283529160200191612348565b820191906000526020600020905b81548152906001019060200180831161232b57829003601f168201915b505050505081565b60105481565b6001818154811061236357fe5b600091825260209091206004909102018054600182015460028301546003909301546001600160a01b0392831694509082169291821691600160a01b81046001600160401b031691600160e01b90910460ff169086565b61100581565b600281565b601081565b61100881565b6103e881565b600b81565b600c5481565b606681565b33612000146124075760405162461bcd60e51b8152600401610d9d90618a28565b7f41ce201247b6ceb957dcdb217d0b8acb50b9ea0e12af9af4f5e7f3890210160583838360405161243a93929190618c64565b60405180910390a1505050565b60025481565b60115481565b60145460ff1681565b600a5481565b6001600160a01b038116600090815260046020526040812054806124985760405162461bcd60e51b8152600401610d9d906189b0565b6000190192915050565b600b54612560576124b1617797565b60015460005b8181101561255c57600b80546001810182556000919091528351600080516020618ed38339815191526016909202918201908155602080860151600080516020618f138339815191528401805460ff191691151591909117905560408601518051879461253893600080516020618ef38339815191529091019201906177c6565b50606082015161254e9060038301906013617840565b5050508060010190506124b7565b5050505b60085461256d5760036008555b600a5461257a576002600a555b600061258533612462565b905061259081611ab3565b6125ac5760405162461bcd60e51b8152600401610d9d90618705565b611d893382616282565b600981565b61100781565b600381565b60c881565b61100681565b604051806101e001604052806101ab8152602001618d086101ab913981565b60005460ff1681565b61200281565b61300081565b6402540be40081565b60005460ff166126305760405162461bcd60e51b8152600401610d9d906182e9565b33611007146126515760405162461bcd60e51b8152600401610d9d906187fc565b6126bb84848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080518082019091526013815272065787069726554696d655365636f6e6447617606c1b6020820152915061631a9050565b1561275857602081146126e05760405162461bcd60e51b8152600401610d9d9061896a565b604080516020601f840181900481028201810190925282815260009161271e9185858083850183828082843760009201919091525061637392505050565b9050606481101580156127345750620186a08111155b6127505760405162461bcd60e51b8152600401610d9d906185f5565b600255612e69565b6127b884848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260098152686275726e526174696f60b81b6020820152915061631a9050565b1561284757602081146127dd5760405162461bcd60e51b8152600401610d9d9061816f565b604080516020601f840181900481028201810190925282815260009161281b9185858083850183828082843760009201919091525061637392505050565b905061271081111561283f5760405162461bcd60e51b8152600401610d9d90618487565b600655612e69565b6128b184848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260138152726d61784e756d4f664d61696e7461696e696e6760681b6020820152915061631a9050565b1561294b57602081146128d65760405162461bcd60e51b8152600401610d9d906181a6565b604080516020601f84018190048102820181019092528281526000916129149185858083850183828082843760009201919091525061637392505050565b600c5490915080612923575060155b8082106129425760405162461bcd60e51b8152600401610d9d906184fa565b50600855612e69565b6129b484848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260128152716d61696e7461696e536c6173685363616c6560701b6020820152915061631a9050565b15612a4d57602081146129d95760405162461bcd60e51b8152600401610d9d9061826f565b604080516020601f8401819004810282018101909252828152600091612a179185858083850183828082843760009201919091525061637392505050565b9050600081118015612a295750600a81105b612a455760405162461bcd60e51b8152600401610d9d90618b08565b600a55612e69565b612ac184848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601981527f6d61784e756d4f66576f726b696e6743616e64696461746573000000000000006020820152915061631a9050565b15612b505760208114612ae65760405162461bcd60e51b8152600401610d9d90618223565b604080516020601f8401819004810282018101909252828152600091612b249185858083850183828082843760009201919091525061637392505050565b9050600d54811115612b485760405162461bcd60e51b8152600401610d9d9061866b565b600e55612e69565b612bb984848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260128152716d61784e756d4f6643616e6469646174657360701b6020820152915061631a9050565b15612c3b5760208114612bde5760405162461bcd60e51b8152600401610d9d9061884a565b604080516020601f8401819004810282018101909252828152600091612c1c9185858083850183828082843760009201919091525061637392505050565b600d819055600e54909150811015612c3557600d54600e555b50612e69565b612c9f84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600d81526c6e756d4f66436162696e65747360981b6020820152915061631a9050565b15612d4d5760208114612cc45760405162461bcd60e51b8152600401610d9d906182b4565b604080516020601f8401819004810282018101909252828152600091612d029185858083850183828082843760009201919091525061637392505050565b905060008111612d245760405162461bcd60e51b8152600401610d9d90618357565b6064811115612d455760405162461bcd60e51b8152600401610d9d9061839f565b600c55612e69565b612db584848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601181527073797374656d526577617264526174696f60781b6020820152915061631a9050565b15612e515760208114612dda5760405162461bcd60e51b8152600401610d9d90618ac4565b604080516020601f8401819004810282018101909252828152600091612e189185858083850183828082843760009201919091525061637392505050565b905060018110158015612e2d57506127108111155b612e495760405162461bcd60e51b8152600401610d9d906185a2565b600f55612e69565b60405162461bcd60e51b8152600401610d9d90618b65565b7f6cdb0ac70ab7f2e2d035cca5be60d89906f2dede7648ddbd7402189c1eeed17a84848484604051612e9e949392919061813d565b60405180910390a150505050565b60046020526000908152604090205481565b68056bc75e2d6310000081565b6001546060906000805b82811015612efa57612ee681611b82565b15612ef2578160010191505b600101612ed5565b50606081604051908082528060200260200182016040528015612f27578160200160208202803683370190505b5090506000915060005b83811015612fae57612f4281611b82565b15612fa65760018181548110612f5457fe5b600091825260209091206004909102015482516001600160a01b0390911690839085908110612f7f57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508260010192505b600101612f31565b50925050505b90565b601581565b61027181565b61100281565b601381815481106122b757fe5b6000612fdf612ecb565b519050600080600c5411612ff4576015612ff8565b600c545b905080821115613006578091505b8161301057600191505b5090565b67016345785d8a000081565b60055481565b61100381565b61200481565b60005460ff16156130555760405162461bcd60e51b8152600401610d9d906188fc565b61305d61786d565b6000613083604051806101e001604052806101ab8152602001618d086101ab9139613cce565b91509150806130a45760405162461bcd60e51b8152600401610d9d906189e7565b60005b8260200151518110156131c9576001836020015182815181106130c657fe5b60209081029190910181015182546001818101855560009485528385208351600493840290910180546001600160a01b039283166001600160a01b03199182161782558587015182850180549185169183169190911790556040860151600283018054606089015160808a01511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b199590981692909516919091179290921694909417161790915560a09093015160039093019290925591860151805191850193918590811061319c57fe5b602090810291909101810151516001600160a01b03168252810191909152604001600020556001016130a7565b50506103e8600255506000805460ff19166001179055565b600d5481565b33612002146132085760405162461bcd60e51b8152600401610d9d90618bd5565b60005b60155481101561329057816001600160a01b03166015828154811061322c57fe5b60009182526020909120600490910201546001600160a01b031614156132885760016015828154811061325b57fe5b9060005260206000209060040201600201601c6101000a81548160ff021916908315150217905550613290565b60010161320b565b506001600160a01b0381166000908152600460205260409020548015806132e157506001808203815481106132c157fe5b9060005260206000209060040201600201601c9054906101000a900460ff165b1561331f576040516001600160a01b038316907fe209c46bebf57cf265d5d9009a00870e256d9150f3ed5281ab9d9eb3cec6e4be90600090a2613328565b610dbd8161504f565b5050565b601354600090815b818110156134355761341d85858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060138054909250859150811061338557fe5b600091825260209182902001805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156134135780601f106133e857610100808354040283529160200191613413565b820191906000526020600020905b8154815290600101906020018083116133f657829003601f168201915b5050505050616378565b1561342d57600192505050611c2d565b600101613334565b5060125460005b818110156134a65761348d86868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060128054909250859150811061338557fe5b1561349e5760019350505050611c2d565b60010161343c565b50600095945050505050565b33611001146134d35760405162461bcd60e51b8152600401610d9d90618b8c565b600b54613591576134e2617797565b60015460005b8181101561358d57600b80546001810182556000919091528351600080516020618ed38339815191526016909202918201908155602080860151600080516020618f138339815191528401805460ff191691151591909117905560408601518051879461356993600080516020618ef38339815191529091019201906177c6565b50606082015161357f9060038301906013617840565b5050508060010190506134e8565b5050505b600061359c826163dc565b90506135a781611ab3565b15613328576133288282616282565b606581565b3341146135da5760405162461bcd60e51b8152600401610d9d90618a77565b60005460ff166135fc5760405162461bcd60e51b8152600401610d9d906182e9565b6000341161361c5760405162461bcd60e51b8152600401610d9d9061863c565b3a1561363a5760405162461bcd60e51b8152600401610d9d906187ce565b6001600160a01b03811660009081526004602052604090205460145434919060ff1661367a57610271600f556103aa6006556014805460ff191660011790555b60006136a3612710613697600f548661657f90919063ffffffff16565b9063ffffffff6165b916565b90508015613713576040516110029082156108fc029083906000818181858888f193505050501580156136da573d6000803e3d6000fd5b507f6ecc855f9440a9282c90913bbc91619fd44f5ec0b462af28d127b116f130aa4d8160405161370a9190618c1b565b60405180910390a15b60008311801561372557506000600654115b156137cb5760006137476127106136976006548761657f90919063ffffffff16565b905080156137c95760405161dead9082156108fc029083906000818181858888f1935050505015801561377e573d6000803e3d6000fd5b507f627059660ea01c4733a328effb2294d2f86905bf806da763a89cee254de8bee5816040516137ae9190618c1b565b60405180910390a16137c6848263ffffffff615ba316565b93505b505b6137db838263ffffffff615ba316565b925081156138db5760006001808403815481106137f457fe5b9060005260206000209060040201905080600201601c9054906101000a900460ff161561386157846001600160a01b03167ff177e5d6c5764d79c32883ed824111d9b13f5668cf6ab1cc12dd36791dd955b4856040516138549190618c1b565b60405180910390a26138d5565b600354613874908563ffffffff615be516565b600390815581015461388c908563ffffffff615be516565b60038201556040516001600160a01b038616907f93a090ecc682c002995fad3c85b30c5651d7fd29b0be5da9d784a3302aedc055906138cc908790618c1b565b60405180910390a25b5061391d565b836001600160a01b03167ff177e5d6c5764d79c32883ed824111d9b13f5668cf6ab1cc12dd36791dd955b4846040516139149190618c1b565b60405180910390a25b50505050565b600e5481565b61100081565b61dead81565b600b818154811061394257fe5b6000918252602091829020601691909102018054600180830154600280850180546040805161010096831615969096026000190190911692909204601f810188900488028501880190925281845293965060ff909116949192918301828280156139ed5780601f106139c2576101008083540402835291602001916139ed565b820191906000526020600020905b8154815290600101906020018083116139d057829003601f168201915b5050505050905083565b61100481565b6000600a5460001480613a0e575081155b80613a195750600954155b15613a26575060006110af565b60096000815460019003919050819055506000613a71600a5461369785613697600b8981548110613a5357fe5b6000918252602090912060169091020154439063ffffffff615ba316565b90506000600b8581548110613a8257fe5b906000526020600020906016020160010160006101000a81548160ff0219169083151502179055506000806110016001600160a01b0316638256ace66040518163ffffffff1660e01b8152600401604080518083038186803b158015613ae757600080fd5b505afa158015613afb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b1f9190617e5a565b9150915060009350808310613c7e57613b388787615c0a565b506040516333c1892360e21b81526000906120029063cf06248c90613b61908b90600401617f97565b60206040518083038186803b158015613b7957600080fd5b505afa158015613b8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613bb19190617c07565b6001600160a01b031614613c1d576040516313d13bdb60e31b815261100190639e89ded890613be6908a908790600401617fab565b600060405180830381600087803b158015613c0057600080fd5b505af1158015613c14573d6000803e3d6000fd5b50505050613c75565b6040516305bfb49960e41b815261100190635bfb499090613c42908a90600401617f97565b600060405180830381600087803b158015613c5c57600080fd5b505af1158015613c70573d6000803e3d6000fd5b505050505b60019350613c90565b818310613c9057613c8e876163dc565b505b6040516001600160a01b038816907fb9d38178dc641ff1817967a63c9078cbcd955a9f1fcd75e0e3636de615d44d3b90600090a25050509392505050565b613cd661786d565b6000613ce061786d565b613ce861790a565b613cf9613cf4866165fb565b616620565b90506000805b613d088361666a565b15613e7c5780613d2d57613d23613d1e8461668b565b6166d9565b60ff168452613e74565b8060011415613e6f576060613d49613d448561668b565b616759565b90508051604051908082528060200260200182016040528015613d8657816020015b613d73617891565b815260200190600190039081613d6b5790505b5085602001819052508051604051908082528060200260200182016040528015613dc457816020015b6060815260200190600190039081613daf5790505b50604086015260005b8151811015613e6457613dde617891565b60606000613dfe858581518110613df157fe5b602002602001015161682a565b92509250925080613e1e578860009a509a50505050505050505050613e85565b8289602001518581518110613e2f57fe5b60200260200101819052508189604001518581518110613e4b57fe5b6020026020010181905250505050806001019050613dcd565b506001925050613e74565b613e7c565b600101613cff565b50919350909150505b915091565b604080516001808252818301909252606091829190816020015b6060815260200190600190039081613ea4579050509050613eca8363ffffffff16616944565b81600081518110613ed757fe5b60200260200101819052506110af81616957565b6000606483511115613f2257600080516020618eb3833981519152604051613f12906183fc565b60405180910390a1506066611c2d565b60005b8351811015613fc05760005b81811015613fb757848181518110613f4557fe5b6020026020010151600001516001600160a01b0316858381518110613f6657fe5b6020026020010151600001516001600160a01b03161415613faf57600080516020618eb3833981519152604051613f9c90618557565b60405180910390a1606692505050611c2d565b600101613f31565b50600101613f25565b5060608060606015805480602002602001604051908101604052809291908181526020016000905b828210156140725760008481526020908190206040805160c0810182526004860290920180546001600160a01b039081168452600180830154821685870152600283015491821693850193909352600160a01b81046001600160401b03166060850152600160e01b900460ff16151560808401526003015460a08301529083529092019101613fe8565b50505050905060606016805480602002602001604051908101604052809291908181526020016000905b828210156141475760008481526020908190208301805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156141335780601f1061410857610100808354040283529160200191614133565b820191906000526020600020905b81548152906001019060200180831161411657829003601f168201915b50505050508152602001906001019061409c565b50505050905060005b82518110156141a45782818151811061416557fe5b60200260200101516060015160020283828151811061418057fe5b60209081029190910101516001600160401b03909116606090910152600101614150565b506060806141b4898986866169e1565b915091506141c28282615163565b60015460408051828152602080840282010190915292985090965060009550859450925060609150828015614201578160200160208202803683370190505b50905060005b828110156143925760006001600160a01b03166120026001600160a01b031663cf06248c6001848154811061423857fe5b60009182526020909120600491820201546040516001600160e01b031960e085901b168152614273926001600160a01b039092169101617f97565b60206040518083038186803b15801561428b57600080fd5b505afa15801561429f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142c39190617c07565b6001600160a01b0316146143255760018282815181106142df57fe5b602002602001019060ff16908160ff16815250506001818154811061430057fe5b906000526020600020906004020160030154600014614320578360010193505b61438a565b67016345785d8a00006001828154811061433b57fe5b9060005260206000209060040201600301541061435d5784600101945061438a565b6001818154811061436a57fe5b90600052602060002090600402016003015460001461438a578360010193505b600101614207565b506060846040519080825280602002602001820160405280156143bf578160200160208202803683370190505b5090506060856040519080825280602002602001820160405280156143ee578160200160208202803683370190505b50905060608660405190808252806020026020018201604052801561441d578160200160208202803683370190505b50905060608760405190808252806020026020018201604052801561444c578160200160208202803683370190505b509050600060608860405190808252806020026020018201604052801561447d578160200160208202803683370190505b5090506060896040519080825280602002602001820160405280156144ac578160200160208202803683370190505b50905060009a506000995060006110046001600160a01b031663149d14d96040518163ffffffff1660e01b815260040160206040518083038186803b1580156144f457600080fd5b505afa158015614508573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061452c9190617e42565b905067016345785d8a000081111561457857600080516020618eb3833981519152604051614559906188bb565b60405180910390a160689e505050505050505050505050505050611c2d565b60005b8a81101561490c5789818151811061458f57fe5b602002602001015160ff166001141561468557600181815481106145af57fe5b90600052602060002090600402016003015460001461468057600181815481106145d557fe5b600091825260209091206004909102015484516001600160a01b039091169085908e90811061460057fe5b60200260200101906001600160a01b031690816001600160a01b0316815250506001818154811061462d57fe5b906000526020600020906004020160030154838d8151811061464b57fe5b60200260200101818152505060018a8d8151811061466557fe5b602002602001019060ff16908160ff16815250508b6001019b505b614904565b67016345785d8a00006001828154811061469b57fe5b9060005260206000209060040201600301541061482057600181815481106146bf57fe5b906000526020600020906004020160020160009054906101000a90046001600160a01b0316898e815181106146f057fe5b60200260200101906001600160a01b031690816001600160a01b03168152505060006402540be4006001838154811061472557fe5b9060005260206000209060040201600301548161473e57fe5b066001838154811061474c57fe5b9060005260206000209060040201600301540390506147748382615ba390919063ffffffff16565b898f8151811061478057fe5b6020026020010181815250506001828154811061479957fe5b906000526020600020906004020160010160009054906101000a90046001600160a01b0316878f815181106147ca57fe5b60200260200101906001600160a01b031690816001600160a01b03168152505081888f815181106147f757fe5b6020908102919091010152614812868263ffffffff615be516565b95508d6001019d5050614904565b6001818154811061482d57fe5b906000526020600020906004020160030154600014614904576001818154811061485357fe5b906000526020600020906004020160010160009054906101000a90046001600160a01b0316848d8151811061488457fe5b60200260200101906001600160a01b031690816001600160a01b031681525050600181815481106148b157fe5b906000526020600020906004020160030154838d815181106148cf57fe5b60200260200101818152505060008a8d815181106148e957fe5b602002602001019060ff16908160ff16815250508b6001019b505b60010161457b565b5060008415614b82576002546040516303702b2960e51b815261100491636e056520918891614946918e918e918d914201906004016180a5565b6020604051808303818588803b15801561495f57600080fd5b505af193505050508015614990575060408051601f3d908101601f1916820190925261498d91810190617d6f565b60015b614b07576040516000815260443d10156149ac57506000614a47565b60046000803e60005160e01c6308c379a081146149cd576000915050614a47565b60043d036004833e81513d60248201116001600160401b03821117156149f857600092505050614a47565b80830180516001600160401b03811115614a19576000945050505050614a47565b8060208301013d8601811115614a3757600095505050505050614a47565b601f01601f191660405250925050505b80614a525750614a94565b60019150857fa7cdeed7d0db45e3219a6e5d60838824c16f1d39991fcfe3f963029c844bf28082604051614a86919061812a565b60405180910390a250614b02565b3d808015614abe576040519150601f19603f3d011682016040523d82523d6000602084013e614ac3565b606091505b5060019150857fbfa884552dd8921b6ce90bfe906952ae5b3b29be0cc1a951d4f62697635a3a4582604051614af8919061812a565b60405180910390a2505b614b82565b8015614b49577fa217d08e65f80c73121cd9db834d81652d544bfbf452f6d04922b16c90a37b7086604051614b3c9190618c1b565b60405180910390a1614b80565b857fa7cdeed7d0db45e3219a6e5d60838824c16f1d39991fcfe3f963029c844bf280604051614b77906181ec565b60405180910390a25b505b8015614d385760005b8751811015614d36576000888281518110614ba257fe5b60200260200101519050600060018281548110614bbb57fe5b60009182526020909120600160049092020181015481546001600160a01b03909116916108fc9185908110614bec57fe5b9060005260206000209060040201600301549081150290604051600060405180830381858888f1935050505090508015614ca85760018281548110614c2d57fe5b60009182526020909120600160049092020181015481546001600160a01b03909116917f6c61d60f69a7beb3e1c80db7f39f37b208537cbb19da3174511b477812b2fc7d9185908110614c7c57fe5b906000526020600020906004020160030154604051614c9b9190618c1b565b60405180910390a2614d2c565b60018281548110614cb557fe5b60009182526020909120600160049092020181015481546001600160a01b03909116917f25d0ce7d2f0cec669a8c17efe49d195c13455bb8872b65fa610ac7f53fe4ca7d9185908110614d0457fe5b906000526020600020906004020160030154604051614d239190618c1b565b60405180910390a25b5050600101614b8b565b505b835115614f2e5760005b8451811015614f2c578a8181518110614d5757fe5b602002602001015160ff1660011415614df6576120026001600160a01b031663092193ab858381518110614d8757fe5b6020026020010151878481518110614d9b57fe5b60200260200101516040518363ffffffff1660e01b8152600401614dbf9190617f97565b6000604051808303818588803b158015614dd857600080fd5b505af1158015614dec573d6000803e3d6000fd5b5050505050614f24565b6000858281518110614e0457fe5b60200260200101516001600160a01b03166108fc868481518110614e2457fe5b60200260200101519081150290604051600060405180830381858888f1935050505090508015614eba57858281518110614e5a57fe5b60200260200101516001600160a01b03167f6c61d60f69a7beb3e1c80db7f39f37b208537cbb19da3174511b477812b2fc7d868481518110614e9857fe5b6020026020010151604051614ead9190618c1b565b60405180910390a2614f22565b858281518110614ec657fe5b60200260200101516001600160a01b03167f25d0ce7d2f0cec669a8c17efe49d195c13455bb8872b65fa610ac7f53fe4ca7d868481518110614f0457fe5b6020026020010151604051614f199190618c1b565b60405180910390a25b505b600101614d42565b505b505050505050505050505050506000471115614fab577f6ecc855f9440a9282c90913bbc91619fd44f5ec0b462af28d127b116f130aa4d47604051614f739190618c1b565b60405180910390a1604051611002904780156108fc02916000818181858888f19350505050158015614fa9573d6000803e3d6000fd5b505b60006003819055600555815115614fc657614fc6828261539c565b6110016001600160a01b031663fc4333cd6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561500357600080fd5b505af1158015615017573d6000803e3d6000fd5b50506040517fedd8d7296956dd970ab4de3f2fc03be2b0ffc615d20cd4c72c6e44f928630ebf925060009150a1506000949350505050565b600154600554600091906000198201118015906150c25760018085038154811061507557fe5b600091825260208220600490910201546040516001600160a01b03909116917fe209c46bebf57cf265d5d9009a00870e256d9150f3ed5281ab9d9eb3cec6e4be91a2600092505050611b7d565b6005805460019081019091558054819060001987019081106150e057fe5b9060005260206000209060040201600201601c6101000a81548160ff02191690831515021790555060018085038154811061511757fe5b600091825260208220600490910201546040516001600160a01b03909116917ff226e7d8f547ff903d9d419cf5f54e0d7d07efa9584135a53a057c5f1f27f49a91a25060009392505050565b606080600080808080615174612fd5565b6001549091505b801561528257600181039250600b838154811061519457fe5b600091825260209091206001601690920201015460ff166151b457615279565b600183815481106151c157fe5b60009182526020909120600490910201546001600160a01b031694506151e88584846139fd565b93508315806151fb575060018a51038610155b1561520557615279565b60005b8a5181101561527757856001600160a01b03168b828151811061522757fe5b6020026020010151600001516001600160a01b0316141561526f5760018b828151811061525057fe5b6020908102919091010151901515608090910152600190960195615277565b600101615208565b505b6000190161517b565b50848951036040519080825280602002602001820160405280156152c057816020015b6152ad617891565b8152602001906001900390816152a55790505b509650848951036040519080825280602002602001820160405280156152fa57816020015b60608152602001906001900390816152e55790505b5095506000915060005b895181101561538e5789818151811061531957fe5b6020026020010151608001516153865789818151811061533557fe5b602002602001015188848151811061534957fe5b602002602001018190525088818151811061536057fe5b602002602001015187848151811061537457fe5b60200260200101819052508260010192505b600101615304565b5050505050505b9250929050565b600154825160005b828110156154b95760016153b6617891565b600183815481106153c357fe5b600091825260208083206040805160c08101825260049490940290910180546001600160a01b0390811685526001820154811693850193909352600281015492831691840191909152600160a01b82046001600160401b03166060840152600160e01b90910460ff16151560808301526003015460a082015291505b8481101561548d5787818151811061545357fe5b6020026020010151600001516001600160a01b031682600001516001600160a01b03161415615485576000925061548d565b60010161543f565b5081156154af5780516001600160a01b03166000908152600460205260408120555b50506001016153a4565b508082111561557857805b828110156155765760018054806154d757fe5b60008281526020812060046000199093019283020180546001600160a01b0319908116825560018201805490911690556002810180546001600160e81b0319169055600301559055600b80548061552a57fe5b60008281526020812060166000199093019283020181815560018101805460ff191690559061555c60028301826178c6565b61556a60038301600061792a565b505090556001016154c4565b505b60008183106155875781615589565b825b905060005b818110156159455761563b8682815181106155a557fe5b6020026020010151600183815481106155ba57fe5b60009182526020918290206040805160c08101825260049390930290910180546001600160a01b0390811684526001820154811694840194909452600281015493841691830191909152600160a01b83046001600160401b03166060830152600160e01b90920460ff161515608082015260039091015460a0820152616dad565b6157ef57806001016004600088848151811061565357fe5b6020026020010151600001516001600160a01b03166001600160a01b031681526020019081526020016000208190555085818151811061568f57fe5b6020026020010151600182815481106156a457fe5b6000918252602091829020835160049092020180546001600160a01b039283166001600160a01b0319918216178255928401516001820180549184169185169190911790556040840151600282018054606087015160808801511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b1995909716929097169190911792909216939093171692909217905560a090910151600390910155845185908290811061575f57fe5b6020026020010151600b828154811061577457fe5b906000526020600020906016020160020190805190602001906157989291906177c6565b506000600b82815481106157a857fe5b60009182526020822060169190910201600101805460ff191692151592909217909155600b8054839081106157d957fe5b600091825260209091206016909102015561593d565b6158808582815181106157fe57fe5b6020026020010151600b838154811061581357fe5b600091825260209182902060026016909202018101805460408051601f6000196101006001861615020190931694909404918201859004850284018501905280835291929091908301828280156134135780601f106133e857610100808354040283529160200191613413565b6158cb5784818151811061589057fe5b6020026020010151600b82815481106158a557fe5b906000526020600020906016020160020190805190602001906158c99291906177c6565b505b6000600182815481106158da57fe5b9060005260206000209060040201600301819055508581815181106158fb57fe5b6020026020010151608001516001828154811061591457fe5b9060005260206000209060040201600201601c6101000a81548160ff0219169083151502179055505b60010161558e565b5082821115615b1d57615956617797565b835b83811015615b1a5785818151811061596c57fe5b60200260200101518260400181905250600187828151811061598a57fe5b6020908102919091018101518254600181810185556000948552838520835160049093020180546001600160a01b039384166001600160a01b0319918216178255848601518284018054918616918316919091179055604080860151600284018054606089015160808a01511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b1995909a1692909616919091179290921696909617169190911790935560a090930151600390930192909255600b8054928301815590935284516016909102600080516020618ed3833981519152810191825585830151600080516020618f138339815191528201805491151560ff1990921691909117905592850151805186949293615ac093600080516020618ef3833981519152019201906177c6565b506060820151615ad69060038301906013617840565b5050508060010160046000898481518110615aed57fe5b602090810291909101810151516001600160a01b0316825281019190915260400160002055600101615958565b50505b615b25616e2e565b615b2d617010565b6000600981905560015493505b83811015615b9b576000600b8281548110615b5157fe5b60009182526020822060169190910201600101805460ff191692151592909217909155600b805483908110615b8257fe5b6000918252602090912060169091020155600101615b3a565b505050505050565b60006110af83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506171fe565b6000828201838110156110af5760405162461bcd60e51b8152600401610d9d90618320565b60008060018381548110615c1a57fe5b90600052602060002090600402016003015490506000600180805490500390506001615c44612ecb565b5111615c7957600060018581548110615c5957fe5b906000526020600020906004020160030181905550600092505050611c2d565b846001600160a01b03167f3b6f9ef90462b512a1293ecec018670bf7b7f1876fb727590a8a6d7643130a7083604051615cb29190618c1b565b60405180910390a26001600160a01b038516600090815260046020526040812055835b60015460001901811015615e9f5760018160010181548110615cf357fe5b906000526020600020906004020160018281548110615d0e57fe5b60009182526020909120825460049092020180546001600160a01b03199081166001600160a01b0393841617825560018085015481840180548416918616919091179055600280860180549185018054909416919095161780835584546001600160401b03600160a01b91829004160267ffffffffffffffff60a01b1990911617808355935460ff600160e01b918290041615150260ff60e01b19909416939093179055600392830154920191909155600b805490918301908110615dcf57fe5b9060005260206000209060160201600b8281548110615dea57fe5b600091825260209091208254601690920201908155600180830154818301805460ff909216151560ff1990921691909117905560028084018054615e41938386019390821615610100026000190190911604617939565b50615e54600382810190840160136179ae565b50905050806001016004600060018481548110615e6d57fe5b600091825260208083206004909202909101546001600160a01b03168352820192909252604001902055600101615cd5565b506001805480615eab57fe5b60008281526020812060046000199093019283020180546001600160a01b0319908116825560018201805490911690556002810180546001600160e81b0319169055600301559055600b805480615efe57fe5b60008281526020812060166000199093019283020181815560018101805460ff1916905590615f3060028301826178c6565b615f3e60038301600061792a565b505090556000818381615f4d57fe5b0490508015615fb15760015460005b81811015615fae578260018281548110615f7257fe5b9060005260206000209060040201600301540160018281548110615f9257fe5b6000918252602090912060036004909202010155600101615f5c565b50505b50600195945050505050565b600154815160408051828152602080840282010190915260609291908390828015615ffc57816020015b6060815260200190600190039081615fe75790505b50600b549091508314616013579250611b7d915050565b60005b8281101561612257600b60016004600089858151811061603257fe5b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054038154811061606657fe5b600091825260209182902060026016909202018101805460408051601f6000196101006001861615020190931694909404918201859004850284018501905280835291929091908301828280156160fe5780601f106160d3576101008083540402835291602001916160fe565b820191906000526020600020905b8154815290600101906020018083116160e157829003601f168201915b505050505082828151811061610f57fe5b6020908102919091010152600101616016565b50949350505050565b60005b82811015616278576000828783880160405160200161614e929190617f89565b6040516020818303038152906040528051906020012060001c8161616e57fe5b0690508085018287011461626f576000898388018151811061618c57fe5b60200260200101519050606089848901815181106161a657fe5b602002602001015190508a838801815181106161be57fe5b60200260200101518b858a01815181106161d457fe5b60200260200101906001600160a01b031690816001600160a01b031681525050818b8489018151811061620357fe5b60200260200101906001600160a01b031690816001600160a01b031681525050898388018151811061623157fe5b60200260200101518a858a018151811061624757fe5b6020026020010181905250808a8489018151811061626157fe5b602002602001018190525050505b5060010161612e565b5050505050505050565b600980546001908101909155600b80548390811061629c57fe5b906000526020600020906016020160010160006101000a81548160ff02191690831515021790555043600b82815481106162d257fe5b600091825260208220601690910201919091556040516001600160a01b038416917ff62981a567ec3cec866c6fa93c55bcdf841d6292d18b8d522ececa769375d82d91a25050565b60008160405160200161632d9190617f6d565b60405160208183030381529060405280519060200120836040516020016163549190617f6d565b6040516020818303038152906040528051906020012014905092915050565b015190565b81518151600091600191811480831461639457600092506163d2565b600160208701838101602088015b6002848385100114156163cd5780518351146163c15760009650600093505b602092830192016163a2565b505050505b5090949350505050565b6001600160a01b0381166000908152600460205260408120548061640557506000199050611b7d565b60018103905060006001828154811061641a57fe5b906000526020600020906004020160030154905060006001838154811061643d57fe5b6000918252602090912060036004909202010155600154604051600019909101906001600160a01b038616907f8cd4e147d8af98a9e3b6724021b8bf6aed2e5dac71c38f2dce8161b82585b25d90616496908590618c1b565b60405180910390a2806164ae57829350505050611b7d565b60008183816164b957fe5b04905080156165755760005b848110156165175781600182815481106164db57fe5b90600052602060002090600402016003015401600182815481106164fb57fe5b60009182526020909120600360049092020101556001016164c5565b50600180549085015b8181101561657257826001828154811061653657fe5b906000526020600020906004020160030154016001828154811061655657fe5b6000918252602090912060036004909202010155600101616520565b50505b5091949350505050565b60008261658e57506000611c2d565b8282028284828161659b57fe5b04146110af5760405162461bcd60e51b8152600401610d9d9061878d565b60006110af83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061722a565b6166036179d8565b506040805180820190915281518152602082810190820152919050565b61662861790a565b61663182617261565b61663a57600080fd5b6000616649836020015161729b565b60208085015160408051808201909152868152920190820152915050919050565b60006166746179d8565b505080518051602091820151919092015191011190565b6166936179d8565b61669c8261666a565b6166a557600080fd5b602082015160006166b5826172fe565b80830160209586015260408051808201909152908152938401919091525090919050565b8051600090158015906166ee57508151602110155b6166f757600080fd5b6000616706836020015161729b565b9050808360000151101561672c5760405162461bcd60e51b8152600401610d9d90618933565b82516020808501518301805192849003929183101561612257506020919091036101000a90049392505050565b606061676482617261565b61676d57600080fd5b6000616778836173df565b90506060816040519080825280602002602001820160405280156167b657816020015b6167a36179d8565b81526020019060019003908161679b5790505b50905060006167c8856020015161729b565b60208601510190506000805b8481101561681f576167e5836172fe565b915060405180604001604052808381526020018481525084828151811061680857fe5b6020908102919091010152918101916001016167d4565b509195945050505050565b616832617891565b6060600061683e617891565b606061684861790a565b61685187616620565b90506000805b6168608361666a565b15616935578061688b5761687b6168768461668b565b61743b565b6001600160a01b0316855261692d565b80600114156168b3576168a06168768461668b565b6001600160a01b0316602086015261692d565b80600214156168db576168c86168768461668b565b6001600160a01b0316604086015261692d565b8060031415616907576168f0613d1e8461668b565b6001600160401b031660608601526001915061692d565b80600414156169285761692161691c8461668b565b617455565b935061692d565b616935565b600101616857565b50929791965091945092505050565b6060611c2d616952836174c5565b6175ab565b60608151600014156169785750604080516000815260208101909152611b7d565b60608260008151811061698757fe5b602002602001015190506000600190505b83518110156169c8576169be828583815181106169b157fe5b60200260200101516175fd565b9150600101616998565b506110af6169db825160c060ff1661767a565b826175fd565b60608060006120026001600160a01b031663c473318f6040518163ffffffff1660e01b815260040160206040518083038186803b158015616a2157600080fd5b505afa158015616a35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190616a599190617e42565b90508085518851011015616a6e575083518651015b606081604051908082528060200260200182016040528015616aaa57816020015b616a97617891565b815260200190600190039081616a8f5790505b509050606082604051908082528060200260200182016040528015616ae357816020015b6060815260200190600190039081616ace5790505b50905060008060005b8b51831080616afb5750895182105b8015616b0657508581105b15616d9b578b51831415616b7657898281518110616b2057fe5b6020026020010151858281518110616b3457fe5b6020026020010181905250888281518110616b4b57fe5b6020026020010151848281518110616b5f57fe5b602090810291909101015260019182019101616aec565b8951821415616be1578b8381518110616b8b57fe5b6020026020010151858281518110616b9f57fe5b60200260200101819052508a8381518110616bb657fe5b6020026020010151848281518110616bca57fe5b602090810291909101015260019283019201616aec565b898281518110616bed57fe5b6020026020010151606001516001600160401b03168c8481518110616c0e57fe5b6020026020010151606001516001600160401b03161115616c8a578b8381518110616c3557fe5b6020026020010151858281518110616c4957fe5b60200260200101819052508a8381518110616c6057fe5b6020026020010151848281518110616c7457fe5b6020026020010181905250826001019250616d93565b898281518110616c9657fe5b6020026020010151606001516001600160401b03168c8481518110616cb757fe5b6020026020010151606001516001600160401b03161015616d3357898281518110616cde57fe5b6020026020010151858281518110616cf257fe5b6020026020010181905250888281518110616d0957fe5b6020026020010151848281518110616d1d57fe5b6020026020010181905250816001019150616d93565b898281518110616d3f57fe5b6020026020010151600001516001600160a01b03168c8481518110616d6057fe5b6020026020010151600001516001600160a01b03161015616d87578b8381518110616c3557fe5b898281518110616b2057fe5b600101616aec565b50929a91995090975050505050505050565b805182516000916001600160a01b039182169116148015616de7575081602001516001600160a01b031683602001516001600160a01b0316145b8015616e0c575081604001516001600160a01b031683604001516001600160a01b0316145b80156110af5750506060908101519101516001600160401b0390811691161490565b60125460135480821115616e7957805b82811015616e77576012805480616e5157fe5b600190038181906000526020600020016000616e6d91906178c6565b9055600101616e3e565b505b6000818310616e885781616e8a565b825b905060005b81811015616fa257616f4760128281548110616ea757fe5b600091825260209182902001805460408051601f6002600019610100600187161502019094169390930492830185900485028101850190915281815292830182828015616f355780601f10616f0a57610100808354040283529160200191616f35565b820191906000526020600020905b815481529060010190602001808311616f1857829003601f168201915b50505050506013838154811061338557fe5b616f9a5760138181548110616f5857fe5b9060005260206000200160128281548110616f6f57fe5b906000526020600020019080546001816001161561010002031660029004616f98929190617939565b505b600101616e8f565b5082821115610dbd57825b8281101561391d57601260138281548110616fc457fe5b6000918252602080832084546001818101875595855291909320929091018054617007949390920192909160026101009282161592909202600019011604617939565b50600101616fad565b601354600b548082111561705b57805b8281101561705957601380548061703357fe5b60019003818190600052602060002001600061704f91906178c6565b9055600101617020565b505b600081831061706a578161706c565b825b905060005b8181101561718b576171296013828154811061708957fe5b600091825260209182902001805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156171175780601f106170ec57610100808354040283529160200191617117565b820191906000526020600020905b8154815290600101906020018083116170fa57829003601f168201915b5050505050600b838154811061581357fe5b61718357600b818154811061713a57fe5b90600052602060002090601602016002016013828154811061715857fe5b906000526020600020019080546001816001161561010002031660029004617181929190617939565b505b600101617071565b5082821115610dbd57825b8281101561391d576013600b82815481106171ad57fe5b6000918252602080832084546001808201875595855291909320601692909202909201600290810180546171f595939094019390926000199082161561010002011604617939565b50600101617196565b600081848411156172225760405162461bcd60e51b8152600401610d9d919061812a565b505050900390565b6000818361724b5760405162461bcd60e51b8152600401610d9d919061812a565b50600083858161725757fe5b0495945050505050565b805160009061727257506000611b7d565b6020820151805160001a9060c082101561729157600092505050611b7d565b5060019392505050565b8051600090811a60808110156172b5576000915050611b7d565b60b88110806172d0575060c081108015906172d0575060f881105b156172df576001915050611b7d565b60c08110156172f35760b519019050611b7d565b60f519019050611b7d565b80516000908190811a608081101561731957600191506173d8565b60b881101561732e57607e19810191506173d8565b60c081101561737f57600060b78203600186019550806020036101000a8651049150600181018201935050808310156173795760405162461bcd60e51b8152600401610d9d906186da565b506173d8565b60f88110156173945760be19810191506173d8565b600060f78203600186019550806020036101000a8651049150600181018201935050808310156173d65760405162461bcd60e51b8152600401610d9d906186da565b505b5092915050565b80516000906173f057506000611b7d565b60008090506000617404846020015161729b565b602085015185519181019250015b8082101561743257617423826172fe565b82019150826001019250617412565b50909392505050565b805160009060151461744c57600080fd5b611c2d826166d9565b805160609061746357600080fd5b6000617472836020015161729b565b83516040805191839003808352601f19601f82011683016020019091529192506060908280156174a9576020820181803683370190505b509050600081602001905061612284876020015101828561774c565b604080516020808252818301909252606091829190602082018180368337505050602081018490529050600067ffffffffffffffff1984166175095750601861752d565b6fffffffffffffffffffffffffffffffff1984166175295750601061752d565b5060005b60208110156175635781818151811061754257fe5b01602001516001600160f81b0319161561755b57617563565b60010161752d565b60008160200390506060816040519080825280601f01601f191660200182016040528015617598576020820181803683370190505b5080830196909652508452509192915050565b6060815160011480156175dd5750607f60f81b826000815181106175cb57fe5b01602001516001600160f81b03191611155b156175e9575080611b7d565b611c2d6175fb8351608060ff1661767a565b835b6060806040519050835180825260208201818101602087015b8183101561762e578051835260209283019201617616565b50855184518101855292509050808201602086015b8183101561765b578051835260209283019201617643565b508651929092011591909101601f01601f191660405250905092915050565b60606801000000000000000083106176a45760405162461bcd60e51b8152600401610d9d906184d2565b604080516001808252818301909252606091602082018180368337019050509050603784116176fe5782840160f81b816000815181106176e057fe5b60200101906001600160f81b031916908160001a9053509050611c2d565b6060617709856174c5565b90508381510160370160f81b8260008151811061772257fe5b60200101906001600160f81b031916908160001a90535061774382826175fd565b95945050505050565b8061775657610dbd565b5b60208110617776578251825260209283019290910190601f1901617757565b915181516020939093036101000a6000190180199091169216919091179052565b604051806080016040528060008152602001600015158152602001606081526020016177c16179f2565b905290565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061780757805160ff1916838001178555617834565b82800160010185558215617834579182015b82811115617834578251825591602001919060010190617819565b50613010929150617a11565b82601381019282156178345791602002820182811115617834578251825591602001919060010190617819565b6040518060600160405280600060ff16815260200160608152602001606081525090565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a081019190915290565b50805460018160011615610100020316600290046000825580601f106178ec5750611d89565b601f016020900490600052602060002090810190611d899190617a11565b604051806040016040528061791d6179d8565b8152602001600081525090565b50611d89906013810190617a11565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106179725780548555617834565b8280016001018555821561783457600052602060002091601f016020900482015b82811115617834578254825591600101919060010190617993565b82601381019282156178345791820182811115617834578254825591600101919060010190617993565b604051806040016040528060008152602001600081525090565b6040518061026001604052806013906020820280368337509192915050565b612fb491905b808211156130105760008155600101617a17565b8035611c2d81618cf2565b60008083601f840112617a47578182fd5b5081356001600160401b03811115617a5d578182fd5b602083019150836020808302850101111561539557600080fd5b6000601f8381840112617a88578182fd5b8235617a9b617a9682618ca7565b618c81565b818152925060208084019085810160005b84811015617b2d578135880189603f820112617ac757600080fd5b838101356001600160401b03811115617adf57600080fd5b617af0818901601f19168601618c81565b81815260408c81848601011115617b0657600080fd5b82818501888401375060009181018601919091528552509282019290820190600101617aac565b50505050505092915050565b600082601f830112617b49578081fd5b8135617b57617a9682618ca7565b818152915060208083019084810181840286018201871015617b7857600080fd5b6000805b85811015617b2d5782356001600160401b0381168114617b9a578283fd5b85529383019391830191600101617b7c565b60008083601f840112617bbd578182fd5b5081356001600160401b03811115617bd3578182fd5b60208301915083602082850101111561539557600080fd5b600060208284031215617bfc578081fd5b81356110af81618cf2565b600060208284031215617c18578081fd5b81516110af81618cf2565b60008060008060408587031215617c38578283fd5b84356001600160401b0380821115617c4e578485fd5b617c5a88838901617a36565b90965094506020870135915080821115617c72578384fd5b50617c7f87828801617a36565b95989497509550505050565b600080600060608486031215617c9f578283fd5b83356001600160401b0380821115617cb5578485fd5b81860187601f820112617cc6578586fd5b80359250617cd6617a9684618ca7565b80848252602080830192508084018b828389028701011115617cf657898afd5b8994505b86851015617d2057617d0c8c82617a2b565b845260019490940193928101928101617cfa565b509097508801359350505080821115617d37578384fd5b617d4387838801617b39565b93506040860135915080821115617d58578283fd5b50617d6586828701617a77565b9150509250925092565b600060208284031215617d80578081fd5b815180151581146110af578182fd5b60008060208385031215617da1578182fd5b82356001600160401b03811115617db6578283fd5b617dc285828601617bac565b90969095509350505050565b60008060008060408587031215617de3578384fd5b84356001600160401b0380821115617df9578586fd5b617e0588838901617bac565b90965094506020870135915080821115617e1d578384fd5b50617c7f87828801617bac565b600060208284031215617e3b578081fd5b5035919050565b600060208284031215617e53578081fd5b5051919050565b60008060408385031215617e6c578182fd5b505080516020909101519092909150565b600080600060408486031215617e91578081fd5b833560ff81168114617ea1578182fd5b925060208401356001600160401b03811115617ebb578182fd5b617ec786828701617bac565b9497909650939450505050565b6000815180845260208085019450808401835b83811015617f0c5781516001600160a01b031687529582019590820190600101617ee7565b509495945050505050565b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b60008151808452617f59816020860160208601618cc6565b601f01601f19169290920160200192915050565b60008251617f7f818460208701618cc6565b9190910192915050565b918252602082015260400190565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b03968716815294861660208601529290941660408401526001600160401b03166060830152911515608082015260a081019190915260c00190565b6001600160a01b0392909216825260ff16602082015260400190565b6000602082526110af6020830184617ed4565b6000604082526180486040830185617ed4565b602083820381850152818551808452828401915082838202850101838801865b8381101561809657601f19878403018552618084838351617f41565b94860194925090850190600101618068565b50909998505050505050505050565b6000608082526180b86080830187617ed4565b828103602084810191909152865180835287820192820190845b818110156180ee578451835293830193918301916001016180d2565b505084810360408601526181028188617ed4565b93505050506001600160401b038316606083015295945050505050565b901515815260200190565b6000602082526110af6020830184617f41565b600060408252618151604083018688617f17565b8281036020840152618164818587617f17565b979650505050505050565b6020808252601c908201527f6c656e677468206f66206275726e526174696f206d69736d6174636800000000604082015260600190565b60208082526026908201527f6c656e677468206f66206d61784e756d4f664d61696e7461696e696e67206d696040820152650e6dac2e8c6d60d31b606082015260800190565b6020808252601b908201527f6261746368207472616e736665722072657475726e2066616c73650000000000604082015260600190565b6020808252602c908201527f6c656e677468206f66206d61784e756d4f66576f726b696e6743616e6469646160408201526b0e8cae640dad2e6dac2e8c6d60a31b606082015260800190565b60208082526025908201527f6c656e677468206f66206d61696e7461696e536c6173685363616c65206d69736040820152640dac2e8c6d60db1b606082015260800190565b6020808252818101527f6c656e677468206f66206e756d4f66436162696e657473206d69736d61746368604082015260600190565b60208082526019908201527f74686520636f6e7472616374206e6f7420696e69742079657400000000000000604082015260600190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b60208082526028908201527f746865206e756d4f66436162696e657473206d75737420626520677265617465604082015267072207468616e20360c41b606082015260800190565b60208082526039908201527f746865206e756d4f66436162696e657473206d757374206265206c657373207460408201527f68616e204d41585f4e554d5f4f465f56414c494441544f525300000000000000606082015260800190565b60208082526029908201527f746865206e756d626572206f662076616c696461746f727320657863656564206040820152681d1a19481b1a5b5a5d60ba1b606082015260800190565b60208082526022908201527f63616e206e6f7420646f207468697320747769636520696e206f6e6520626c6f604082015261636b60f01b606082015260800190565b6020808252602b908201527f746865206275726e526174696f206d757374206265206e6f206772656174657260408201526a0207468616e2031303030360ac1b606082015260800190565b6020808252600e908201526d696e70757420746f6f206c6f6e6760901b604082015260600190565b60208082526037908201527f746865206d61784e756d4f664d61696e7461696e696e67206d7573742062652060408201527f6c657373207468616e206e756d4f66436162696e657473000000000000000000606082015260800190565b6020808252602b908201527f6475706c696361746520636f6e73656e7375732061646472657373206f66207660408201526a185b1a59185d1bdc94d95d60aa1b606082015260800190565b60208082526033908201527f7468652073797374656d526577617264526174696f206d757374206265206e6f60408201527202067726561746572207468616e20313030303606c1b606082015260800190565b60208082526027908201527f7468652065787069726554696d655365636f6e64476170206973206f7574206f604082015266662072616e676560c81b606082015260800190565b6020808252601590820152746465706f7369742076616c7565206973207a65726f60581b604082015260600190565b60208082526049908201527f746865206d61784e756d4f66576f726b696e6743616e64696461746573206d7560408201527f7374206265206e6f742067726561746572207468616e206d61784e756d4f6643606082015268616e6469646174657360b81b608082015260a00190565b6020808252601190820152706164646974696f6e206f766572666c6f7760781b604082015260600190565b60208082526023908201527f63616e206e6f7420656e7465722054656d706f72617279204d61696e74656e616040820152626e636560e81b606082015260800190565b60208082526025908201527f6c656e677468206f66206a61696c2076616c696461746f7273206d757374206260408201526465206f6e6560d81b606082015260800190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252601490820152736761737072696365206973206e6f74207a65726f60601b604082015260600190565b6020808252602e908201527f746865206d6573736167652073656e646572206d75737420626520676f76657260408201526d1b985b98d94818dbdb9d1c9858dd60921b606082015260800190565b60208082526025908201527f6c656e677468206f66206d61784e756d4f6643616e64696461746573206d69736040820152640dac2e8c6d60db1b606082015260800190565b6020808252601290820152716e6f7420696e206d61696e74656e616e636560701b604082015260600190565b60208082526021908201527f666565206973206c6172676572207468616e2044555354595f494e434f4d494e6040820152604760f81b606082015260800190565b60208082526019908201527f74686520636f6e747261637420616c726561647920696e697400000000000000604082015260600190565b6020808252601a908201527f6c656e677468206973206c657373207468616e206f6666736574000000000000604082015260600190565b60208082526026908201527f6c656e677468206f662065787069726554696d655365636f6e64476170206d696040820152650e6dac2e8c6d60d31b606082015260800190565b60208082526017908201527f6f6e6c792063757272656e742076616c696461746f7273000000000000000000604082015260600190565b60208082526021908201527f6661696c656420746f20706172736520696e69742076616c696461746f7253656040820152601d60fa1b606082015260800190565b6020808252602f908201527f746865206d6573736167652073656e646572206d7573742062652063726f737360408201526e0818da185a5b8818dbdb9d1c9858dd608a1b606082015260800190565b6020808252602d908201527f746865206d6573736167652073656e646572206d75737420626520746865206260408201526c3637b1b590383937b23ab1b2b960991b606082015260800190565b60208082526024908201527f6c656e677468206f662073797374656d526577617264526174696f206d69736d6040820152630c2e8c6d60e31b606082015260800190565b6020808252603e908201527f746865206d61696e7461696e536c6173685363616c65206d757374206265206760408201527f726561746572207468616e203020616e64206c657373207468616e2031300000606082015260800190565b6020808252600d908201526c756e6b6e6f776e20706172616d60981b604082015260600190565b60208082526029908201527f746865206d6573736167652073656e646572206d75737420626520736c6173686040820152680818dbdb9d1c9858dd60ba1b606082015260800190565b6020808252601f908201527f746865206d73672073656e646572206d757374206265207374616b6548756200604082015260600190565b61ffff91909116815260200190565b90815260200190565b60008482528315156020830152606060408301526177436060830184617f41565b63ffffffff91909116815260200190565b60ff91909116815260200190565b600060ff8516825260406020830152617743604083018486617f17565b6040518181016001600160401b0381118282101715618c9f57600080fd5b604052919050565b60006001600160401b03821115618cbc578081fd5b5060209081020190565b60005b83811015618ce1578181015183820152602001618cc9565b8381111561391d5750506000910152565b6001600160a01b0381168114611d8957600080fdfef901a880f901a4f844941284214b9b9c85549ab3d2b972df0deef66ac2c9946ddf42a51534fc98d0c0a3b42c963cace8441ddf946ddf42a51534fc98d0c0a3b42c963cace8441ddf8410000000f84494a2959d3f95eae5dc7d70144ce1b73b403b7eb6e0948081ef03f1d9e0bb4a5bf38f16285c879299f07f948081ef03f1d9e0bb4a5bf38f16285c879299f07f8410000000f8449435552c16704d214347f29fa77f77da6d75d7c75294dc4973e838e3949c77aced16ac2315dc2d7ab11194dc4973e838e3949c77aced16ac2315dc2d7ab1118410000000f84494980a75ecd1309ea12fa2ed87a8744fbfc9b863d594cc6ac05c95a99c1f7b5f88de0e3486c82293b27094cc6ac05c95a99c1f7b5f88de0e3486c82293b2708410000000f84494f474cf03cceff28abc65c9cbae594f725c80e12d94e61a183325a18a173319dd8e19c8d069459e217594e61a183325a18a173319dd8e19c8d069459e21758410000000f84494b71b214cb885500844365e95cd9942c7276e7fd894d22ca3ba2141d23adab65ce4940eb7665ea2b6a794d22ca3ba2141d23adab65ce4940eb7665ea2b6a7841000000070e72399380dcfb0338abc03dc8d47f9f470ada8e769c9a78d644ea97385ecb20175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db90175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01dbb0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01dbaa164736f6c6343000604000a", + Code: "6080604052600436106104f05760003560e01c806388b32f111161028c578063c6d339451161015a578063e40716a1116100cc578063f92eb86b11610085578063f92eb86b14610d0d578063f9a2bbc714610d22578063fc3e590814610d37578063fccc281314610d4c578063fd4ad81f14610d61578063fd6a687914610d90576104f7565b8063e40716a114610c70578063e589b61e14610c85578063ea321e4914610ca5578063eb57e20214610cc5578063eda5868c14610ce5578063f340fa0114610cfa576104f7565b8063d86222d51161011e578063d86222d514610bf2578063daacdb6614610c07578063dc927faf14610c1c578063df8079e914610c31578063e086c7b114610c46578063e1c7392a14610c5b576104f7565b8063c6d3394514610b93578063c81b166214610ba8578063c8509d8114610962578063ce910b0c14610bbd578063d68fb56a14610bdd576104f7565b8063a78abc16116101fe578063ad3c9da6116101b7578063ad3c9da614610b12578063aef198a914610b32578063b7ab4db514610b47578063b8cf4ef114610b69578063bf9f4995146106d3578063c466689d14610b7e576104f7565b8063a78abc1614610a89578063aa82dce114610a9e578063aad5606314610ab3578063aaf5eb6814610ac8578063ab51bb9614610add578063ac43175114610af2576104f7565b806396713da91161025057806396713da914610a0b5780639dc0926214610a205780639fe0f81614610a35578063a0dc275814610a4a578063a1a11bf514610a5f578063a5422d5c14610a74576104f7565b806388b32f11146109975780638a7beb01146109ac5780638b5ad0c9146109c15780638d19a410146109d65780639369d7de146109f6576104f7565b806351b4dce3116103c957806370fd5bad1161033b5780637e434d54116102f45780637e434d541461092357806381650b6214610938578063820dcaa81461094d578063831d65d114610962578063853230aa146108e45780638624988214610982576104f7565b806370fd5bad146108a5578063718a8aa8146108ba57806375d47a0a146108cf57806378dfed4a146108e45780637942fd05146108f95780637a84ca2a1461090e576104f7565b80635d77156c1161038d5780635d77156c146107ff5780635de1e22c1461081457806360eba4fe1461082957806362b72cf5146108495780636969a25c1461085e5780636e47b48214610890576104f7565b806351b4dce31461078057806351e806721461079557806355614fcc146107aa578063565c56b3146107ca5780635667515a146107ea576104f7565b8063321d398a1161046257806343756e5c1161042657806343756e5c146106f557806345cf9daf1461070a578063493279b11461071f5780634bf6c882146107415780634df6e0c3146107565780635192c82c1461076b576104f7565b8063321d398a146106505780633365af3a1461067057806335409f7f146106905780633b071dcc146106b05780633dffc387146106d3576104f7565b8063152ad3b8116104b4578063152ad3b8146105af5780631e4c1524146105d15780631ff18069146105f1578063219f22d514610606578063280870281461061b578063300c356714610630576104f7565b806304c4fec6146104fc57806307a56847146105135780630bee7a671461053e5780630e2374a5146105605780631182b87514610582576104f7565b366104f757005b600080fd5b34801561050857600080fd5b50610511610da5565b005b34801561051f57600080fd5b50610528610e17565b6040516105359190618dfa565b60405180910390f35b34801561054a57600080fd5b50610553610e1d565b6040516105359190618e24565b34801561056c57600080fd5b50610575610e22565b6040516105359190618144565b34801561058e57600080fd5b506105a261059d36600461802a565b610e28565b60405161053591906182d7565b3480156105bb57600080fd5b506105c461110b565b60405161053591906182cc565b3480156105dd57600080fd5b506105116105ec366004617e38565b611114565b3480156105fd57600080fd5b506105286117cb565b34801561061257600080fd5b506105536117d1565b34801561062757600080fd5b506105756117d6565b34801561063c57600080fd5b5061051161064b366004617dd0565b6117dc565b34801561065c57600080fd5b506105c461066b366004617fd7565b611b23565b34801561067c57600080fd5b506105c461068b366004617fd7565b611bf2565b34801561069c57600080fd5b506105116106ab366004617d98565b611ca3565b3480156106bc57600080fd5b506106c5611dfc565b6040516105359291906181e2565b3480156106df57600080fd5b506106e86120d8565b6040516105359190618e35565b34801561070157600080fd5b506105756120dd565b34801561071657600080fd5b506105286120e3565b34801561072b57600080fd5b506107346120e9565b6040516105359190618deb565b34801561074d57600080fd5b506106e86120ef565b34801561076257600080fd5b506106c56120f4565b34801561077757600080fd5b50610528612272565b34801561078c57600080fd5b50610575612278565b3480156107a157600080fd5b5061057561227e565b3480156107b657600080fd5b506105c46107c5366004617d98565b612284565b3480156107d657600080fd5b506105286107e5366004617d98565b6122b9565b3480156107f657600080fd5b506106e861230a565b34801561080b57600080fd5b5061055361230f565b34801561082057600080fd5b50610528612314565b34801561083557600080fd5b506105a2610844366004617fd7565b61231a565b34801561085557600080fd5b506105286123c0565b34801561086a57600080fd5b5061087e610879366004617fd7565b6123c6565b60405161053596959493929190618171565b34801561089c57600080fd5b5061057561242a565b3480156108b157600080fd5b506106e8612430565b3480156108c657600080fd5b506106e8612435565b3480156108db57600080fd5b5061057561243a565b3480156108f057600080fd5b50610528612440565b34801561090557600080fd5b506106e8612446565b34801561091a57600080fd5b5061052861244b565b34801561092f57600080fd5b50610575612451565b34801561094457600080fd5b50610553612457565b34801561095957600080fd5b5061052861245c565b34801561096e57600080fd5b5061051161097d36600461802a565b612462565b34801561098e57600080fd5b506105286124c3565b3480156109a357600080fd5b506105286124c9565b3480156109b857600080fd5b506105c46124cf565b3480156109cd57600080fd5b506105286124d8565b3480156109e257600080fd5b506105286109f1366004617d98565b6124de565b348015610a0257600080fd5b5061051161251e565b348015610a1757600080fd5b506106e8612632565b348015610a2c57600080fd5b50610575612637565b348015610a4157600080fd5b5061052861263d565b348015610a5657600080fd5b50610528612642565b348015610a6b57600080fd5b50610575612647565b348015610a8057600080fd5b506105a261264d565b348015610a9557600080fd5b506105c4612669565b348015610aaa57600080fd5b50610575612672565b348015610abf57600080fd5b50610575612678565b348015610ad457600080fd5b5061052861267e565b348015610ae957600080fd5b5061055361230a565b348015610afe57600080fd5b50610511610b0d366004617f7b565b612687565b348015610b1e57600080fd5b50610528610b2d366004617d98565b612f20565b348015610b3e57600080fd5b50610528612f32565b348015610b5357600080fd5b50610b5c612f3f565b60405161053591906181cf565b348015610b7557600080fd5b5061052861302b565b348015610b8a57600080fd5b50610528613030565b348015610b9f57600080fd5b50610528612430565b348015610bb457600080fd5b50610575613036565b348015610bc957600080fd5b506105a2610bd8366004617fd7565b61303c565b348015610be957600080fd5b50610528613049565b348015610bfe57600080fd5b50610528613088565b348015610c1357600080fd5b50610528613094565b348015610c2857600080fd5b5061057561309a565b348015610c3d57600080fd5b506105756130a0565b348015610c5257600080fd5b50610528610e1d565b348015610c6757600080fd5b506105116130a6565b348015610c7c57600080fd5b50610528613337565b348015610c9157600080fd5b50610511610ca0366004617d98565b61333d565b348015610cb157600080fd5b506105c4610cc0366004617f3c565b613482565b348015610cd157600080fd5b50610511610ce0366004617d98565b613608565b348015610cf157600080fd5b5061055361370c565b610511610d08366004617d98565b613711565b348015610d1957600080fd5b50610528613a90565b348015610d2e57600080fd5b50610575613a96565b348015610d4357600080fd5b506106e861263d565b348015610d5857600080fd5b50610575613a9c565b348015610d6d57600080fd5b50610d81610d7c366004617fd7565b613aa2565b60405161053593929190618e03565b348015610d9c57600080fd5b50610575613b64565b6000610db0336124de565b9050600b8181548110610dbf57fe5b600091825260209091206001601690920201015460ff16610dfb5760405162461bcd60e51b8152600401610df290618a06565b60405180910390fd5b6000610e05613049565b9050610e12338383613b6a565b505050565b60095481565b606481565b61200181565b60005460609060ff16610e4d5760405162461bcd60e51b8152600401610df2906184fe565b600b54610f0b57610e5c617944565b60015460005b81811015610f0757600b80546001810182556000919091528351600080516020618f078339815191526016909202918201908155602080860151600080516020618f478339815191528401805460ff1916911515919091179055604086015180518794610ee393600080516020618f27833981519152909101920190617973565b506060820151610ef990600383019060136179ed565b505050806001019050610e62565b5050505b610f13617a1a565b6000610f5485858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250613e3b92505050565b9150915080610f7057610f676064613ff7565b92505050611104565b815160009060ff16610f9557610f8e83602001518460400151614058565b90506110d0565b825160ff16600114156110cc57826020015151600114610fda57600080516020618ee7833981519152604051610fca906188bf565b60405180910390a15060676110c7565b6000600460008560200151600081518110610ff157fe5b6020026020010151600001516001600160a01b03166001600160a01b031681526020019081526020016000205490508060001480611059575060018082038154811061103957fe5b9060005260206000209060040201600201601c9054906101000a900460ff165b156110b957836020015160008151811061106f57fe5b6020026020010151600001516001600160a01b03167fe209c46bebf57cf265d5d9009a00870e256d9150f3ed5281ab9d9eb3cec6e4be60405160405180910390a2600091506110c5565b6110c28161521a565b91505b505b6110d0565b5060655b63ffffffff81166110f557505060408051600081526020810190915291506111049050565b6110fe81613ff7565b93505050505b9392505050565b60075460ff1681565b3341146111335760405162461bcd60e51b8152600401610df290618c56565b3a156111515760405162461bcd60e51b8152600401610df290618945565b825160408051828152602080840282010190915260609082801561118f57816020015b61117c617a3e565b8152602001906001900390816111745790505b50905060005b82811015611239576040518060c001604052808783815181106111b457fe5b60200260200101516001600160a01b0316815260200160006001600160a01b0316815260200160006001600160a01b031681526020018683815181106111f657fe5b60200260200101516001600160401b03168152602001600015158152602001600081525082828151811061122657fe5b6020908102919091010152600101611195565b5060405163d31f968d60e01b81526120009063d31f968d9061126490611000906008906004016181b3565b60206040518083038186803b15801561127c57600080fd5b505afa158015611290573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112b49190617f1c565b156115a05780516015548181111561135657815b818110156113545760158054806112db57fe5b60008281526020812060046000199093019283020180546001600160a01b0319908116825560018201805490911690556002810180546001600160e81b0319169055600301559055601680548061132e57fe5b60019003818190600052602060002001600061134a9190617a73565b90556001016112c8565b505b60005b828110156115965781811061147e57601584828151811061137657fe5b602090810291909101810151825460018181018555600094855293839020825160049092020180546001600160a01b039283166001600160a01b0319918216178255938301519481018054958316958516959095179094556040820151600285018054606085015160808601511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b199590961692909716919091179290921692909217169290921790915560a00151600390910155855160169087908390811061144657fe5b602090810291909101810151825460018101845560009384529282902081516114789491909101929190910190617973565b5061158e565b83818151811061148a57fe5b60200260200101516015828154811061149f57fe5b6000918252602091829020835160049092020180546001600160a01b039283166001600160a01b0319918216178255928401516001820180549184169185169190911790556040840151600282018054606087015160808801511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b1995909716929097169190911792909216939093171692909217905560a090910151600390910155855186908290811061155a57fe5b60200260200101516016828154811061156f57fe5b90600052602060002001908051906020019061158c929190617973565b505b600101611359565b5050505050610e12565b6060806115ad838661532e565b9150915060005b6001548110156116bb57600181815481106115cb57fe5b9060005260206000209060040201600301546000146116b3576120026001600160a01b031663092193ab6001838154811061160257fe5b9060005260206000209060040201600301546001848154811061162157fe5b60009182526020909120600491820201546040516001600160e01b031960e086901b16815261165c926001600160a01b039092169101618144565b6000604051808303818588803b15801561167557600080fd5b505af1158015611689573d6000803e3d6000fd5b505050505060006001828154811061169d57fe5b9060005260206000209060040201600301819055505b6001016115b4565b504715611729577f6ecc855f9440a9282c90913bbc91619fd44f5ec0b462af28d127b116f130aa4d476040516116f19190618dfa565b60405180910390a1604051611002904780156108fc02916000818181858888f19350505050158015611727573d6000803e3d6000fd5b505b60006003819055600555815115611744576117448282615567565b6110016001600160a01b031663fc4333cd6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561178157600080fd5b505af1158015611795573d6000803e3d6000fd5b50506040517fedd8d7296956dd970ab4de3f2fc03be2b0ffc615d20cd4c72c6e44f928630ebf925060009150a150505050505050565b60035481565b606881565b61200581565b3341146117fb5760405162461bcd60e51b8152600401610df290618c56565b601054431161181c5760405162461bcd60e51b8152600401610df29061865a565b3a1561183a5760405162461bcd60e51b8152600401610df290618945565b60005460ff1661185c5760405162461bcd60e51b8152600401610df2906184fe565b60006110023168056bc75e2d631000008111156118935761188c8168056bc75e2d6310000063ffffffff615d4a16565b915061189a565b5050611b19565b6040516213929d60e11b8152611002906227253a906118bf9030908690600401618158565b602060405180830381600087803b1580156118d957600080fd5b505af11580156118ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119119190617fef565b91508161191f575050611b19565b6000805b8481101561194d5785858281811061193757fe5b9050602002013582019150806001019050611923565b508061195b57505050611b19565b6000806000805b89811015611b11578489898381811061197757fe5b9050602002013588028161198757fe5b0493508a8a8281811061199657fe5b90506020020160208101906119ab9190617d98565b6001600160a01b03811660009081526004602052604090205490935091508115611ac75760006001808403815481106119e057fe5b9060005260206000209060040201905080600201601c9054906101000a900460ff1615611a4d57836001600160a01b03167fb9c75cbbfde137c4281689580799ef5f52144e78858f776a5979b2b212137d8586604051611a409190618dfa565b60405180910390a2611ac1565b600354611a60908663ffffffff615d8c16565b6003908155810154611a78908663ffffffff615d8c16565b60038201556040516001600160a01b038516907fcb0aad6cf9cd03bdf6137e359f541c42f38b39f007cae8e89e88aa7d8c6617b290611ab8908890618dfa565b60405180910390a25b50611b09565b826001600160a01b03167fb9c75cbbfde137c4281689580799ef5f52144e78858f776a5979b2b212137d8585604051611b009190618dfa565b60405180910390a25b600101611962565b505050505050505b5050436010555050565b6001546000908210611b3757506000611bed565b60006001600160a01b031660018381548110611b4f57fe5b60009182526020909120600490910201546001600160a01b03161480611b7f57506008541580611b7f5750600a54155b80611b8e575060085460095410155b80611b9f5750611b9d82611bf2565b155b80611bc857506000600b8381548110611bb457fe5b906000526020600020906016020160000154115b80611bdc57506001611bd8612f3f565b5111155b15611be957506000611bed565b5060015b919050565b6001546000908210611c0657506000611bed565b600b548210611c435760018281548110611c1c57fe5b9060005260206000209060040201600201601c9054906101000a900460ff16159050611bed565b60018281548110611c5057fe5b9060005260206000209060040201600201601c9054906101000a900460ff16158015611c9d5750600b8281548110611c8457fe5b600091825260209091206001601690920201015460ff16155b92915050565b3361100114611cc45760405162461bcd60e51b8152600401610df290618d6b565b600b54611d8257611cd3617944565b60015460005b81811015611d7e57600b80546001810182556000919091528351600080516020618f078339815191526016909202918201908155602080860151600080516020618f478339815191528401805460ff1916911515919091179055604086015180518794611d5a93600080516020618f27833981519152909101920190617973565b506060820151611d7090600383019060136179ed565b505050806001019050611cd9565b5050505b6001600160a01b03811660009081526004602052604090205480611da65750611df9565b6001810390506000600b8281548110611dbb57fe5b600091825260209091206001601690920201015460ff169050611dde8383615db1565b8015611de75750805b15610e12576009805460001901905550505b50565b60015460609081906000805b82811015611e4f5760018181548110611e1d57fe5b9060005260206000209060040201600201601c9054906101000a900460ff16611e47576001909101905b600101611e08565b50606081604051908082528060200260200182016040528015611e7c578160200160208202803683370190505b509050606082604051908082528060200260200182016040528015611eb557816020015b6060815260200190600190039081611ea05790505b50600b54600094509091508414156120305760005b8481101561202a5760018181548110611edf57fe5b9060005260206000209060040201600201601c9054906101000a900460ff166120225760018181548110611f0f57fe5b600091825260209091206004909102015483516001600160a01b0390911690849086908110611f3a57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050600b8181548110611f6757fe5b600091825260209182902060026016909202018101805460408051601f600019610100600186161502019093169490940491820185900485028401850190528083529192909190830182828015611fff5780601f10611fd457610100808354040283529160200191611fff565b820191906000526020600020905b815481529060010190602001808311611fe257829003601f168201915b505050505082858151811061201057fe5b60209081029190910101526001909301925b600101611eca565b506120cc565b60005b848110156120ca576001818154811061204857fe5b9060005260206000209060040201600201601c9054906101000a900460ff166120c2576001818154811061207857fe5b600091825260209091206004909102015483516001600160a01b03909116908490869081106120a357fe5b6001600160a01b03909216602092830291909101909101526001909301925b600101612033565b505b909450925050505b9091565b600181565b61100181565b60085481565b6102ca81565b600881565b600e54600c54606091829180612108575060155b6060612112612f3f565b9050606061211f82616164565b9050828251116121365790945092506120d4915050565b83838351031015612148578282510393505b831561217e5760c8430461216483838388880360008a8a6162d2565b61217c8383838888038989038a8b8b8b5103016162d2565b505b6060836040519080825280602002602001820160405280156121aa578160200160208202803683370190505b5090506060846040519080825280602002602001820160405280156121e357816020015b60608152602001906001900390816121ce5790505b50905060005b85811015612264578481815181106121fd57fe5b602002602001015183828151811061221157fe5b60200260200101906001600160a01b031690816001600160a01b03168152505083818151811061223d57fe5b602002602001015182828151811061225157fe5b60209081029190910101526001016121e9565b509096509450505050509091565b60065481565b61200681565b61200081565b6001600160a01b038116600090815260046020526040812054806122ac576000915050611bed565b6000190161110481611bf2565b6001600160a01b038116600090815260046020526040812054806122e1576000915050611bed565b6001808203815481106122f057fe5b906000526020600020906004020160030154915050919050565b600081565b606781565b600f5481565b6012818154811061232757fe5b600091825260209182902001805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152935090918301828280156123b85780601f1061238d576101008083540402835291602001916123b8565b820191906000526020600020905b81548152906001019060200180831161239b57829003601f168201915b505050505081565b60105481565b600181815481106123d357fe5b600091825260209091206004909102018054600182015460028301546003909301546001600160a01b0392831694509082169291821691600160a01b81046001600160401b031691600160e01b90910460ff169086565b61100581565b600281565b601081565b61100881565b6103e881565b600b81565b600c5481565b61200381565b606681565b61271081565b33612000146124835760405162461bcd60e51b8152600401610df290618c07565b7f41ce201247b6ceb957dcdb217d0b8acb50b9ea0e12af9af4f5e7f389021016058383836040516124b693929190618e43565b60405180910390a1505050565b60025481565b60115481565b60145460ff1681565b600a5481565b6001600160a01b038116600090815260046020526040812054806125145760405162461bcd60e51b8152600401610df290618b8f565b6000190192915050565b600b546125dc5761252d617944565b60015460005b818110156125d857600b80546001810182556000919091528351600080516020618f078339815191526016909202918201908155602080860151600080516020618f478339815191528401805460ff19169115159190911790556040860151805187946125b493600080516020618f27833981519152909101920190617973565b5060608201516125ca90600383019060136179ed565b505050806001019050612533565b5050505b6008546125e95760036008555b600a546125f6576002600a555b6000612601336124de565b905061260c81611b23565b6126285760405162461bcd60e51b8152600401610df29061887c565b611df93382616429565b600981565b61100781565b600381565b60c881565b61100681565b6040518060a0016040528060788152602001618f676078913981565b60005460ff1681565b61200281565b61300081565b6402540be40081565b60005460ff166126a95760405162461bcd60e51b8152600401610df2906184fe565b33611007146126ca5760405162461bcd60e51b8152600401610df290618973565b61273484848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080518082019091526013815272065787069726554696d655365636f6e6447617606c1b602082015291506164c19050565b156127d157602081146127595760405162461bcd60e51b8152600401610df290618b49565b604080516020601f84018190048102820181019092528281526000916127979185858083850183828082843760009201919091525061651a92505050565b9050606481101580156127ad5750620186a08111155b6127c95760405162461bcd60e51b8152600401610df29061876c565b600255612edd565b61283184848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260098152686275726e526174696f60b81b602082015291506164c19050565b156128c457602081146128565760405162461bcd60e51b8152600401610df29061831c565b604080516020601f84018190048102820181019092528281526000916128949185858083850183828082843760009201919091525061651a92505050565b9050612710600f54820111156128bc5760405162461bcd60e51b8152600401610df290618353565b600655612edd565b61292e84848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260138152726d61784e756d4f664d61696e7461696e696e6760681b602082015291506164c19050565b156129c857602081146129535760405162461bcd60e51b8152600401610df2906183bb565b604080516020601f84018190048102820181019092528281526000916129919185858083850183828082843760009201919091525061651a92505050565b600c54909150806129a0575060155b8082106129bf5760405162461bcd60e51b8152600401610df2906186c4565b50600855612edd565b612a3184848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260128152716d61696e7461696e536c6173685363616c6560701b602082015291506164c19050565b15612aca5760208114612a565760405162461bcd60e51b8152600401610df290618484565b604080516020601f8401819004810282018101909252828152600091612a949185858083850183828082843760009201919091525061651a92505050565b9050600081118015612aa65750600a81105b612ac25760405162461bcd60e51b8152600401610df290618ce7565b600a55612edd565b612b3e84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601981527f6d61784e756d4f66576f726b696e6743616e6469646174657300000000000000602082015291506164c19050565b15612bcd5760208114612b635760405162461bcd60e51b8152600401610df290618438565b604080516020601f8401819004810282018101909252828152600091612ba19185858083850183828082843760009201919091525061651a92505050565b9050600d54811115612bc55760405162461bcd60e51b8152600401610df2906187e2565b600e55612edd565b612c3684848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260128152716d61784e756d4f6643616e6469646174657360701b602082015291506164c19050565b15612cb85760208114612c5b5760405162461bcd60e51b8152600401610df2906189c1565b604080516020601f8401819004810282018101909252828152600091612c999185858083850183828082843760009201919091525061651a92505050565b600d819055600e54909150811015612cb257600d54600e555b50612edd565b612d1c84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600d81526c6e756d4f66436162696e65747360981b602082015291506164c19050565b15612dca5760208114612d415760405162461bcd60e51b8152600401610df2906184c9565b604080516020601f8401819004810282018101909252828152600091612d7f9185858083850183828082843760009201919091525061651a92505050565b905060008111612da15760405162461bcd60e51b8152600401610df29061856c565b6064811115612dc25760405162461bcd60e51b8152600401610df2906185b4565b600c55612edd565b612e3284848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601181527073797374656d526577617264526174696f60781b602082015291506164c19050565b15612ec55760208114612e575760405162461bcd60e51b8152600401610df290618ca3565b604080516020601f8401819004810282018101909252828152600091612e959185858083850183828082843760009201919091525061651a92505050565b905061271060065482011115612ebd5760405162461bcd60e51b8152600401610df290618aaa565b600f55612edd565b60405162461bcd60e51b8152600401610df290618d44565b7f6cdb0ac70ab7f2e2d035cca5be60d89906f2dede7648ddbd7402189c1eeed17a84848484604051612f1294939291906182ea565b60405180910390a150505050565b60046020526000908152604090205481565b68056bc75e2d6310000081565b6001546060906000805b82811015612f6e57612f5a81611bf2565b15612f66578160010191505b600101612f49565b50606081604051908082528060200260200182016040528015612f9b578160200160208202803683370190505b5090506000915060005b8381101561302257612fb681611bf2565b1561301a5760018181548110612fc857fe5b600091825260209091206004909102015482516001600160a01b0390911690839085908110612ff357fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508260010192505b600101612fa5565b50925050505b90565b601581565b61027181565b61100281565b6013818154811061232757fe5b6000613053612f3f565b519050600080600c541161306857601561306c565b600c545b90508082111561307a578091505b8161308457600191505b5090565b67016345785d8a000081565b60055481565b61100381565b61200481565b60005460ff16156130c95760405162461bcd60e51b8152600401610df290618a73565b6130d1617a1a565b60006130f46040518060a0016040528060788152602001618f6760789139613e3b565b91509150806131155760405162461bcd60e51b8152600401610df290618bc6565b61311d617944565b60005b83602001515181101561331e57600b80546001810182556000919091528251600080516020618f078339815191526016909202918201908155602080850151600080516020618f478339815191528401805460ff19169115159190911790556040850151805186946131a693600080516020618f27833981519152909101920190617973565b5060608201516131bc90600383019060136179ed565b505050836040015181815181106131cf57fe5b6020026020010151600b82815481106131e457fe5b90600052602060002090601602016002019080519060200190613208929190617973565b5060018460200151828151811061321b57fe5b60209081029190910181015182546001818101855560009485528385208351600493840290910180546001600160a01b039283166001600160a01b03199182161782558587015182850180549185169183169190911790556040860151600283018054606089015160808a01511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b199590981692909516919091179290921694909417161790915560a0909301516003909301929092559187015180519185019391859081106132f157fe5b602090810291909101810151516001600160a01b0316825281019190915260400160002055600101613120565b50506103e860025550506000805460ff19166001179055565b600d5481565b336120021461335e5760405162461bcd60e51b8152600401610df290618db4565b60005b6015548110156133e657816001600160a01b03166015828154811061338257fe5b60009182526020909120600490910201546001600160a01b031614156133de576001601582815481106133b157fe5b9060005260206000209060040201600201601c6101000a81548160ff0219169083151502179055506133e6565b600101613361565b506001600160a01b038116600090815260046020526040902054801580613437575060018082038154811061341757fe5b9060005260206000209060040201600201601c9054906101000a900460ff165b15613475576040516001600160a01b038316907fe209c46bebf57cf265d5d9009a00870e256d9150f3ed5281ab9d9eb3cec6e4be90600090a261347e565b610e128161521a565b5050565b601354600090815b8181101561358b5761357385858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506013805490925085915081106134db57fe5b600091825260209182902001805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156135695780601f1061353e57610100808354040283529160200191613569565b820191906000526020600020905b81548152906001019060200180831161354c57829003601f168201915b505050505061651f565b1561358357600192505050611c9d565b60010161348a565b5060125460005b818110156135fc576135e386868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506012805490925085915081106134db57fe5b156135f45760019350505050611c9d565b600101613592565b50600095945050505050565b33611001146136295760405162461bcd60e51b8152600401610df290618d6b565b600b546136e757613638617944565b60015460005b818110156136e357600b80546001810182556000919091528351600080516020618f078339815191526016909202918201908155602080860151600080516020618f478339815191528401805460ff19169115159190911790556040860151805187946136bf93600080516020618f27833981519152909101920190617973565b5060608201516136d590600383019060136179ed565b50505080600101905061363e565b5050505b60006136f282616583565b90506136fd81611b23565b1561347e5761347e8282616429565b606581565b3341146137305760405162461bcd60e51b8152600401610df290618c56565b60005460ff166137525760405162461bcd60e51b8152600401610df2906184fe565b600034116137725760405162461bcd60e51b8152600401610df2906187b3565b3a156137905760405162461bcd60e51b8152600401610df290618945565b6001600160a01b03811660009081526004602052604090205460145434919060ff166137d057610271600f556103e86006556014805460ff191660011790555b6000821180156137e257506000600f54115b15613894576000613810612710613804600f543461672690919063ffffffff16565b9063ffffffff61676016565b90508015613892576040516110029082156108fc029083906000818181858888f19350505050158015613847573d6000803e3d6000fd5b507f6ecc855f9440a9282c90913bbc91619fd44f5ec0b462af28d127b116f130aa4d816040516138779190618dfa565b60405180910390a161388f838263ffffffff615d4a16565b92505b505b6000821180156138a657506000600654115b1561394c5760006138c86127106138046006543461672690919063ffffffff16565b9050801561394a5760405161dead9082156108fc029083906000818181858888f193505050501580156138ff573d6000803e3d6000fd5b507f627059660ea01c4733a328effb2294d2f86905bf806da763a89cee254de8bee58160405161392f9190618dfa565b60405180910390a1613947838263ffffffff615d4a16565b92505b505b8015613a4a57600060018083038154811061396357fe5b9060005260206000209060040201905080600201601c9054906101000a900460ff16156139d057836001600160a01b03167ff177e5d6c5764d79c32883ed824111d9b13f5668cf6ab1cc12dd36791dd955b4846040516139c39190618dfa565b60405180910390a2613a44565b6003546139e3908463ffffffff615d8c16565b60039081558101546139fb908463ffffffff615d8c16565b60038201556040516001600160a01b038516907f93a090ecc682c002995fad3c85b30c5651d7fd29b0be5da9d784a3302aedc05590613a3b908690618dfa565b60405180910390a25b50610e12565b826001600160a01b03167ff177e5d6c5764d79c32883ed824111d9b13f5668cf6ab1cc12dd36791dd955b483604051613a839190618dfa565b60405180910390a2505050565b600e5481565b61100081565b61dead81565b600b8181548110613aaf57fe5b6000918252602091829020601691909102018054600180830154600280850180546040805161010096831615969096026000190190911692909204601f810188900488028501880190925281845293965060ff90911694919291830182828015613b5a5780601f10613b2f57610100808354040283529160200191613b5a565b820191906000526020600020905b815481529060010190602001808311613b3d57829003601f168201915b5050505050905083565b61100481565b6000600a5460001480613b7b575081155b80613b865750600954155b15613b9357506000611104565b60096000815460019003919050819055506000613bde600a5461380485613804600b8981548110613bc057fe5b6000918252602090912060169091020154439063ffffffff615d4a16565b90506000600b8581548110613bef57fe5b906000526020600020906016020160010160006101000a81548160ff0219169083151502179055506000806110016001600160a01b0316638256ace66040518163ffffffff1660e01b8152600401604080518083038186803b158015613c5457600080fd5b505afa158015613c68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c8c9190618007565b9150915060009350808310613deb57613ca58787615db1565b5060405163436aa28360e11b8152600090612002906386d5450690613cce908b90600401618144565b60206040518083038186803b158015613ce657600080fd5b505afa158015613cfa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d1e9190617db4565b6001600160a01b031614613d8a576040516313d13bdb60e31b815261100190639e89ded890613d53908a908790600401618158565b600060405180830381600087803b158015613d6d57600080fd5b505af1158015613d81573d6000803e3d6000fd5b50505050613de2565b6040516305bfb49960e41b815261100190635bfb499090613daf908a90600401618144565b600060405180830381600087803b158015613dc957600080fd5b505af1158015613ddd573d6000803e3d6000fd5b505050505b60019350613dfd565b818310613dfd57613dfb87616583565b505b6040516001600160a01b038816907fb9d38178dc641ff1817967a63c9078cbcd955a9f1fcd75e0e3636de615d44d3b90600090a25050509392505050565b613e43617a1a565b6000613e4d617a1a565b613e55617ab7565b613e66613e61866167a2565b6167c7565b90506000805b613e7583616811565b15613fe95780613e9a57613e90613e8b84616832565b616880565b60ff168452613fe1565b8060011415613fdc576060613eb6613eb185616832565b616900565b90508051604051908082528060200260200182016040528015613ef357816020015b613ee0617a3e565b815260200190600190039081613ed85790505b5085602001819052508051604051908082528060200260200182016040528015613f3157816020015b6060815260200190600190039081613f1c5790505b50604086015260005b8151811015613fd157613f4b617a3e565b60606000613f6b858581518110613f5e57fe5b60200260200101516169d1565b92509250925080613f8b578860009a509a50505050505050505050613ff2565b8289602001518581518110613f9c57fe5b60200260200101819052508189604001518581518110613fb857fe5b6020026020010181905250505050806001019050613f3a565b506001925050613fe1565b613fe9565b600101613e6c565b50919350909150505b915091565b604080516001808252818301909252606091829190816020015b60608152602001906001900390816140115790505090506140378363ffffffff16616aeb565b8160008151811061404457fe5b602002602001018190525061110481616afe565b600060648351111561408f57600080516020618ee783398151915260405161407f90618611565b60405180910390a1506066611c9d565b60005b835181101561412d5760005b81811015614124578481815181106140b257fe5b6020026020010151600001516001600160a01b03168583815181106140d357fe5b6020026020010151600001516001600160a01b0316141561411c57600080516020618ee783398151915260405161410990618721565b60405180910390a1606692505050611c9d565b60010161409e565b50600101614092565b5060608060606015805480602002602001604051908101604052809291908181526020016000905b828210156141df5760008481526020908190206040805160c0810182526004860290920180546001600160a01b039081168452600180830154821685870152600283015491821693850193909352600160a01b81046001600160401b03166060850152600160e01b900460ff16151560808401526003015460a08301529083529092019101614155565b50505050905060606016805480602002602001604051908101604052809291908181526020016000905b828210156142b45760008481526020908190208301805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156142a05780601f10614275576101008083540402835291602001916142a0565b820191906000526020600020905b81548152906001019060200180831161428357829003601f168201915b505050505081526020019060010190614209565b50505050905060005b8251811015614311578281815181106142d257fe5b6020026020010151606001516002028382815181106142ed57fe5b60209081029190910101516001600160401b039091166060909101526001016142bd565b5060608061432189898686616b88565b9150915061432f828261532e565b6001546040805182815260208084028201019091529298509096506000955085945092506060915082801561436e578160200160208202803683370190505b50905060005b828110156144ff5760006001600160a01b03166120026001600160a01b03166386d54506600184815481106143a557fe5b60009182526020909120600491820201546040516001600160e01b031960e085901b1681526143e0926001600160a01b039092169101618144565b60206040518083038186803b1580156143f857600080fd5b505afa15801561440c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144309190617db4565b6001600160a01b03161461449257600182828151811061444c57fe5b602002602001019060ff16908160ff16815250506001818154811061446d57fe5b90600052602060002090600402016003015460001461448d578360010193505b6144f7565b67016345785d8a0000600182815481106144a857fe5b906000526020600020906004020160030154106144ca578460010194506144f7565b600181815481106144d757fe5b9060005260206000209060040201600301546000146144f7578360010193505b600101614374565b5060608460405190808252806020026020018201604052801561452c578160200160208202803683370190505b50905060608560405190808252806020026020018201604052801561455b578160200160208202803683370190505b50905060608660405190808252806020026020018201604052801561458a578160200160208202803683370190505b5090506060876040519080825280602002602001820160405280156145b9578160200160208202803683370190505b50905060006060886040519080825280602002602001820160405280156145ea578160200160208202803683370190505b509050606089604051908082528060200260200182016040528015614619578160200160208202803683370190505b50905060009a506000995060006110046001600160a01b031663149d14d96040518163ffffffff1660e01b815260040160206040518083038186803b15801561466157600080fd5b505afa158015614675573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906146999190617fef565b905067016345785d8a00008111156146e557600080516020618ee78339815191526040516146c690618a32565b60405180910390a160689e505050505050505050505050505050611c9d565b60005b8a811015614a79578981815181106146fc57fe5b602002602001015160ff16600114156147f2576001818154811061471c57fe5b9060005260206000209060040201600301546000146147ed576001818154811061474257fe5b600091825260209091206004909102015484516001600160a01b039091169085908e90811061476d57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250506001818154811061479a57fe5b906000526020600020906004020160030154838d815181106147b857fe5b60200260200101818152505060018a8d815181106147d257fe5b602002602001019060ff16908160ff16815250508b6001019b505b614a71565b67016345785d8a00006001828154811061480857fe5b9060005260206000209060040201600301541061498d576001818154811061482c57fe5b906000526020600020906004020160020160009054906101000a90046001600160a01b0316898e8151811061485d57fe5b60200260200101906001600160a01b031690816001600160a01b03168152505060006402540be4006001838154811061489257fe5b906000526020600020906004020160030154816148ab57fe5b06600183815481106148b957fe5b9060005260206000209060040201600301540390506148e18382615d4a90919063ffffffff16565b898f815181106148ed57fe5b6020026020010181815250506001828154811061490657fe5b906000526020600020906004020160010160009054906101000a90046001600160a01b0316878f8151811061493757fe5b60200260200101906001600160a01b031690816001600160a01b03168152505081888f8151811061496457fe5b602090810291909101015261497f868263ffffffff615d8c16565b95508d6001019d5050614a71565b6001818154811061499a57fe5b906000526020600020906004020160030154600014614a7157600181815481106149c057fe5b906000526020600020906004020160010160009054906101000a90046001600160a01b0316848d815181106149f157fe5b60200260200101906001600160a01b031690816001600160a01b03168152505060018181548110614a1e57fe5b906000526020600020906004020160030154838d81518110614a3c57fe5b60200260200101818152505060008a8d81518110614a5657fe5b602002602001019060ff16908160ff16815250508b6001019b505b6001016146e8565b5060008415614cef576002546040516303702b2960e51b815261100491636e056520918891614ab3918e918e918d91420190600401618252565b6020604051808303818588803b158015614acc57600080fd5b505af193505050508015614afd575060408051601f3d908101601f19168201909252614afa91810190617f1c565b60015b614c74576040516000815260443d1015614b1957506000614bb4565b60046000803e60005160e01c6308c379a08114614b3a576000915050614bb4565b60043d036004833e81513d60248201116001600160401b0382111715614b6557600092505050614bb4565b80830180516001600160401b03811115614b86576000945050505050614bb4565b8060208301013d8601811115614ba457600095505050505050614bb4565b601f01601f191660405250925050505b80614bbf5750614c01565b60019150857fa7cdeed7d0db45e3219a6e5d60838824c16f1d39991fcfe3f963029c844bf28082604051614bf391906182d7565b60405180910390a250614c6f565b3d808015614c2b576040519150601f19603f3d011682016040523d82523d6000602084013e614c30565b606091505b5060019150857fbfa884552dd8921b6ce90bfe906952ae5b3b29be0cc1a951d4f62697635a3a4582604051614c6591906182d7565b60405180910390a2505b614cef565b8015614cb6577fa217d08e65f80c73121cd9db834d81652d544bfbf452f6d04922b16c90a37b7086604051614ca99190618dfa565b60405180910390a1614ced565b857fa7cdeed7d0db45e3219a6e5d60838824c16f1d39991fcfe3f963029c844bf280604051614ce490618401565b60405180910390a25b505b8015614ea55760005b8751811015614ea3576000888281518110614d0f57fe5b60200260200101519050600060018281548110614d2857fe5b60009182526020909120600160049092020181015481546001600160a01b03909116916108fc9185908110614d5957fe5b9060005260206000209060040201600301549081150290604051600060405180830381858888f1935050505090508015614e155760018281548110614d9a57fe5b60009182526020909120600160049092020181015481546001600160a01b03909116917f6c61d60f69a7beb3e1c80db7f39f37b208537cbb19da3174511b477812b2fc7d9185908110614de957fe5b906000526020600020906004020160030154604051614e089190618dfa565b60405180910390a2614e99565b60018281548110614e2257fe5b60009182526020909120600160049092020181015481546001600160a01b03909116917f25d0ce7d2f0cec669a8c17efe49d195c13455bb8872b65fa610ac7f53fe4ca7d9185908110614e7157fe5b906000526020600020906004020160030154604051614e909190618dfa565b60405180910390a25b5050600101614cf8565b505b83511561509b5760005b8451811015615099578a8181518110614ec457fe5b602002602001015160ff1660011415614f63576120026001600160a01b031663092193ab858381518110614ef457fe5b6020026020010151878481518110614f0857fe5b60200260200101516040518363ffffffff1660e01b8152600401614f2c9190618144565b6000604051808303818588803b158015614f4557600080fd5b505af1158015614f59573d6000803e3d6000fd5b5050505050615091565b6000858281518110614f7157fe5b60200260200101516001600160a01b03166108fc868481518110614f9157fe5b60200260200101519081150290604051600060405180830381858888f193505050509050801561502757858281518110614fc757fe5b60200260200101516001600160a01b03167f6c61d60f69a7beb3e1c80db7f39f37b208537cbb19da3174511b477812b2fc7d86848151811061500557fe5b602002602001015160405161501a9190618dfa565b60405180910390a261508f565b85828151811061503357fe5b60200260200101516001600160a01b03167f25d0ce7d2f0cec669a8c17efe49d195c13455bb8872b65fa610ac7f53fe4ca7d86848151811061507157fe5b60200260200101516040516150869190618dfa565b60405180910390a25b505b600101614eaf565b505b5050505050505050505050505060005b60015481101561510857600181815481106150c257fe5b906000526020600020906004020160030154600014615100576000600182815481106150ea57fe5b9060005260206000209060040201600301819055505b6001016150ab565b504715615176577f6ecc855f9440a9282c90913bbc91619fd44f5ec0b462af28d127b116f130aa4d4760405161513e9190618dfa565b60405180910390a1604051611002904780156108fc02916000818181858888f19350505050158015615174573d6000803e3d6000fd5b505b60006003819055600555815115615191576151918282615567565b6110016001600160a01b031663fc4333cd6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156151ce57600080fd5b505af11580156151e2573d6000803e3d6000fd5b50506040517fedd8d7296956dd970ab4de3f2fc03be2b0ffc615d20cd4c72c6e44f928630ebf925060009150a1506000949350505050565b6001546005546000919060001982011180159061528d5760018085038154811061524057fe5b600091825260208220600490910201546040516001600160a01b03909116917fe209c46bebf57cf265d5d9009a00870e256d9150f3ed5281ab9d9eb3cec6e4be91a2600092505050611bed565b6005805460019081019091558054819060001987019081106152ab57fe5b9060005260206000209060040201600201601c6101000a81548160ff0219169083151502179055506001808503815481106152e257fe5b600091825260208220600490910201546040516001600160a01b03909116917ff226e7d8f547ff903d9d419cf5f54e0d7d07efa9584135a53a057c5f1f27f49a91a25060009392505050565b60608060008080808061533f613049565b6001549091505b801561544d57600181039250600b838154811061535f57fe5b600091825260209091206001601690920201015460ff1661537f57615444565b6001838154811061538c57fe5b60009182526020909120600490910201546001600160a01b031694506153b3858484613b6a565b93508315806153c6575060018a51038610155b156153d057615444565b60005b8a5181101561544257856001600160a01b03168b82815181106153f257fe5b6020026020010151600001516001600160a01b0316141561543a5760018b828151811061541b57fe5b6020908102919091010151901515608090910152600190960195615442565b6001016153d3565b505b60001901615346565b508489510360405190808252806020026020018201604052801561548b57816020015b615478617a3e565b8152602001906001900390816154705790505b509650848951036040519080825280602002602001820160405280156154c557816020015b60608152602001906001900390816154b05790505b5095506000915060005b8951811015615559578981815181106154e457fe5b6020026020010151608001516155515789818151811061550057fe5b602002602001015188848151811061551457fe5b602002602001018190525088818151811061552b57fe5b602002602001015187848151811061553f57fe5b60200260200101819052508260010192505b6001016154cf565b5050505050505b9250929050565b600154825160005b82811015615684576001615581617a3e565b6001838154811061558e57fe5b600091825260208083206040805160c08101825260049490940290910180546001600160a01b0390811685526001820154811693850193909352600281015492831691840191909152600160a01b82046001600160401b03166060840152600160e01b90910460ff16151560808301526003015460a082015291505b848110156156585787818151811061561e57fe5b6020026020010151600001516001600160a01b031682600001516001600160a01b031614156156505760009250615658565b60010161560a565b50811561567a5780516001600160a01b03166000908152600460205260408120555b505060010161556f565b508082111561574357805b828110156157415760018054806156a257fe5b60008281526020812060046000199093019283020180546001600160a01b0319908116825560018201805490911690556002810180546001600160e81b0319169055600301559055600b8054806156f557fe5b60008281526020812060166000199093019283020181815560018101805460ff19169055906157276002830182617a73565b615735600383016000617ad7565b5050905560010161568f565b505b60008183106157525781615754565b825b905060005b81811015615aec5761580686828151811061577057fe5b60200260200101516001838154811061578557fe5b60009182526020918290206040805160c08101825260049390930290910180546001600160a01b0390811684526001820154811694840194909452600281015493841691830191909152600160a01b83046001600160401b03166060830152600160e01b90920460ff161515608082015260039091015460a0820152616f54565b6159ba57806001016004600088848151811061581e57fe5b6020026020010151600001516001600160a01b03166001600160a01b031681526020019081526020016000208190555085818151811061585a57fe5b60200260200101516001828154811061586f57fe5b6000918252602091829020835160049092020180546001600160a01b039283166001600160a01b0319918216178255928401516001820180549184169185169190911790556040840151600282018054606087015160808801511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b1995909716929097169190911792909216939093171692909217905560a090910151600390910155845185908290811061592a57fe5b6020026020010151600b828154811061593f57fe5b90600052602060002090601602016002019080519060200190615963929190617973565b506000600b828154811061597357fe5b60009182526020822060169190910201600101805460ff191692151592909217909155600b8054839081106159a457fe5b6000918252602090912060169091020155615ae4565b615a4b8582815181106159c957fe5b6020026020010151600b83815481106159de57fe5b600091825260209182902060026016909202018101805460408051601f6000196101006001861615020190931694909404918201859004850284018501905280835291929091908301828280156135695780601f1061353e57610100808354040283529160200191613569565b615a9657848181518110615a5b57fe5b6020026020010151600b8281548110615a7057fe5b90600052602060002090601602016002019080519060200190615a94929190617973565b505b858181518110615aa257fe5b60200260200101516080015160018281548110615abb57fe5b9060005260206000209060040201600201601c6101000a81548160ff0219169083151502179055505b600101615759565b5082821115615cc457615afd617944565b835b83811015615cc157858181518110615b1357fe5b602002602001015182604001819052506001878281518110615b3157fe5b6020908102919091018101518254600181810185556000948552838520835160049093020180546001600160a01b039384166001600160a01b0319918216178255848601518284018054918616918316919091179055604080860151600284018054606089015160808a01511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b1995909a1692909616919091179290921696909617169190911790935560a090930151600390930192909255600b8054928301815590935284516016909102600080516020618f07833981519152810191825585830151600080516020618f478339815191528201805491151560ff1990921691909117905592850151805186949293615c6793600080516020618f2783398151915201920190617973565b506060820151615c7d90600383019060136179ed565b5050508060010160046000898481518110615c9457fe5b602090810291909101810151516001600160a01b0316825281019190915260400160002055600101615aff565b50505b615ccc616fd5565b615cd46171bd565b6000600981905560015493505b83811015615d42576000600b8281548110615cf857fe5b60009182526020822060169190910201600101805460ff191692151592909217909155600b805483908110615d2957fe5b6000918252602090912060169091020155600101615ce1565b505050505050565b600061110483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506173ab565b6000828201838110156111045760405162461bcd60e51b8152600401610df290618535565b60008060018381548110615dc157fe5b90600052602060002090600402016003015490506000600180805490500390506001615deb612f3f565b5111615e2057600060018581548110615e0057fe5b906000526020600020906004020160030181905550600092505050611c9d565b846001600160a01b03167f3b6f9ef90462b512a1293ecec018670bf7b7f1876fb727590a8a6d7643130a7083604051615e599190618dfa565b60405180910390a26001600160a01b038516600090815260046020526040812055835b600154600019018110156160465760018160010181548110615e9a57fe5b906000526020600020906004020160018281548110615eb557fe5b60009182526020909120825460049092020180546001600160a01b03199081166001600160a01b0393841617825560018085015481840180548416918616919091179055600280860180549185018054909416919095161780835584546001600160401b03600160a01b91829004160267ffffffffffffffff60a01b1990911617808355935460ff600160e01b918290041615150260ff60e01b19909416939093179055600392830154920191909155600b805490918301908110615f7657fe5b9060005260206000209060160201600b8281548110615f9157fe5b600091825260209091208254601690920201908155600180830154818301805460ff909216151560ff1990921691909117905560028084018054615fe8938386019390821615610100026000190190911604617ae6565b50615ffb60038281019084016013617b5b565b5090505080600101600460006001848154811061601457fe5b600091825260208083206004909202909101546001600160a01b03168352820192909252604001902055600101615e7c565b50600180548061605257fe5b60008281526020812060046000199093019283020180546001600160a01b0319908116825560018201805490911690556002810180546001600160e81b0319169055600301559055600b8054806160a557fe5b60008281526020812060166000199093019283020181815560018101805460ff19169055906160d76002830182617a73565b6160e5600383016000617ad7565b5050905560008183816160f457fe5b04905080156161585760015460005b8181101561615557826001828154811061611957fe5b906000526020600020906004020160030154016001828154811061613957fe5b6000918252602090912060036004909202010155600101616103565b50505b50600195945050505050565b6001548151604080518281526020808402820101909152606092919083908280156161a357816020015b606081526020019060019003908161618e5790505b50600b5490915083146161ba579250611bed915050565b60005b828110156162c957600b6001600460008985815181106161d957fe5b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054038154811061620d57fe5b600091825260209182902060026016909202018101805460408051601f6000196101006001861615020190931694909404918201859004850284018501905280835291929091908301828280156162a55780601f1061627a576101008083540402835291602001916162a5565b820191906000526020600020905b81548152906001019060200180831161628857829003601f168201915b50505050508282815181106162b657fe5b60209081029190910101526001016161bd565b50949350505050565b60005b8281101561641f57600082878388016040516020016162f5929190618136565b6040516020818303038152906040528051906020012060001c8161631557fe5b06905080850182870114616416576000898388018151811061633357fe5b602002602001015190506060898489018151811061634d57fe5b602002602001015190508a8388018151811061636557fe5b60200260200101518b858a018151811061637b57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050818b848901815181106163aa57fe5b60200260200101906001600160a01b031690816001600160a01b03168152505089838801815181106163d857fe5b60200260200101518a858a01815181106163ee57fe5b6020026020010181905250808a8489018151811061640857fe5b602002602001018190525050505b506001016162d5565b5050505050505050565b600980546001908101909155600b80548390811061644357fe5b906000526020600020906016020160010160006101000a81548160ff02191690831515021790555043600b828154811061647957fe5b600091825260208220601690910201919091556040516001600160a01b038416917ff62981a567ec3cec866c6fa93c55bcdf841d6292d18b8d522ececa769375d82d91a25050565b6000816040516020016164d4919061811a565b60405160208183030381529060405280519060200120836040516020016164fb919061811a565b6040516020818303038152906040528051906020012014905092915050565b015190565b81518151600091600191811480831461653b5760009250616579565b600160208701838101602088015b6002848385100114156165745780518351146165685760009650600093505b60209283019201616549565b505050505b5090949350505050565b6001600160a01b038116600090815260046020526040812054806165ac57506000199050611bed565b6001810390506000600182815481106165c157fe5b90600052602060002090600402016003015490506000600183815481106165e457fe5b6000918252602090912060036004909202010155600154604051600019909101906001600160a01b038616907f8cd4e147d8af98a9e3b6724021b8bf6aed2e5dac71c38f2dce8161b82585b25d9061663d908590618dfa565b60405180910390a28061665557829350505050611bed565b600081838161666057fe5b049050801561671c5760005b848110156166be57816001828154811061668257fe5b90600052602060002090600402016003015401600182815481106166a257fe5b600091825260209091206003600490920201015560010161666c565b50600180549085015b818110156167195782600182815481106166dd57fe5b90600052602060002090600402016003015401600182815481106166fd57fe5b60009182526020909120600360049092020101556001016166c7565b50505b5091949350505050565b60008261673557506000611c9d565b8282028284828161674257fe5b04146111045760405162461bcd60e51b8152600401610df290618904565b600061110483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506173d7565b6167aa617b85565b506040805180820190915281518152602082810190820152919050565b6167cf617ab7565b6167d88261740e565b6167e157600080fd5b60006167f08360200151617448565b60208085015160408051808201909152868152920190820152915050919050565b600061681b617b85565b505080518051602091820151919092015191011190565b61683a617b85565b61684382616811565b61684c57600080fd5b6020820151600061685c826174ab565b80830160209586015260408051808201909152908152938401919091525090919050565b80516000901580159061689557508151602110155b61689e57600080fd5b60006168ad8360200151617448565b905080836000015110156168d35760405162461bcd60e51b8152600401610df290618b12565b8251602080850151830180519284900392918310156162c957506020919091036101000a90049392505050565b606061690b8261740e565b61691457600080fd5b600061691f8361758c565b905060608160405190808252806020026020018201604052801561695d57816020015b61694a617b85565b8152602001906001900390816169425790505b509050600061696f8560200151617448565b60208601510190506000805b848110156169c65761698c836174ab565b91506040518060400160405280838152602001848152508482815181106169af57fe5b60209081029190910101529181019160010161697b565b509195945050505050565b6169d9617a3e565b606060006169e5617a3e565b60606169ef617ab7565b6169f8876167c7565b90506000805b616a0783616811565b15616adc5780616a3257616a22616a1d84616832565b6175e8565b6001600160a01b03168552616ad4565b8060011415616a5a57616a47616a1d84616832565b6001600160a01b03166020860152616ad4565b8060021415616a8257616a6f616a1d84616832565b6001600160a01b03166040860152616ad4565b8060031415616aae57616a97613e8b84616832565b6001600160401b0316606086015260019150616ad4565b8060041415616acf57616ac8616ac384616832565b617602565b9350616ad4565b616adc565b6001016169fe565b50929791965091945092505050565b6060611c9d616af983617672565b617758565b6060815160001415616b1f5750604080516000815260208101909152611bed565b606082600081518110616b2e57fe5b602002602001015190506000600190505b8351811015616b6f57616b6582858381518110616b5857fe5b60200260200101516177aa565b9150600101616b3f565b50611104616b82825160c060ff16617827565b826177aa565b60608060006120026001600160a01b031663c473318f6040518163ffffffff1660e01b815260040160206040518083038186803b158015616bc857600080fd5b505afa158015616bdc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190616c009190617fef565b90508085518851011015616c15575083518651015b606081604051908082528060200260200182016040528015616c5157816020015b616c3e617a3e565b815260200190600190039081616c365790505b509050606082604051908082528060200260200182016040528015616c8a57816020015b6060815260200190600190039081616c755790505b50905060008060005b8b51831080616ca25750895182105b8015616cad57508581105b15616f42578b51831415616d1d57898281518110616cc757fe5b6020026020010151858281518110616cdb57fe5b6020026020010181905250888281518110616cf257fe5b6020026020010151848281518110616d0657fe5b602090810291909101015260019182019101616c93565b8951821415616d88578b8381518110616d3257fe5b6020026020010151858281518110616d4657fe5b60200260200101819052508a8381518110616d5d57fe5b6020026020010151848281518110616d7157fe5b602090810291909101015260019283019201616c93565b898281518110616d9457fe5b6020026020010151606001516001600160401b03168c8481518110616db557fe5b6020026020010151606001516001600160401b03161115616e31578b8381518110616ddc57fe5b6020026020010151858281518110616df057fe5b60200260200101819052508a8381518110616e0757fe5b6020026020010151848281518110616e1b57fe5b6020026020010181905250826001019250616f3a565b898281518110616e3d57fe5b6020026020010151606001516001600160401b03168c8481518110616e5e57fe5b6020026020010151606001516001600160401b03161015616eda57898281518110616e8557fe5b6020026020010151858281518110616e9957fe5b6020026020010181905250888281518110616eb057fe5b6020026020010151848281518110616ec457fe5b6020026020010181905250816001019150616f3a565b898281518110616ee657fe5b6020026020010151600001516001600160a01b03168c8481518110616f0757fe5b6020026020010151600001516001600160a01b03161015616f2e578b8381518110616ddc57fe5b898281518110616cc757fe5b600101616c93565b50929a91995090975050505050505050565b805182516000916001600160a01b039182169116148015616f8e575081602001516001600160a01b031683602001516001600160a01b0316145b8015616fb3575081604001516001600160a01b031683604001516001600160a01b0316145b80156111045750506060908101519101516001600160401b0390811691161490565b6012546013548082111561702057805b8281101561701e576012805480616ff857fe5b6001900381819060005260206000200160006170149190617a73565b9055600101616fe5565b505b600081831061702f5781617031565b825b905060005b81811015617149576170ee6012828154811061704e57fe5b600091825260209182902001805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156170dc5780601f106170b1576101008083540402835291602001916170dc565b820191906000526020600020905b8154815290600101906020018083116170bf57829003601f168201915b5050505050601383815481106134db57fe5b61714157601381815481106170ff57fe5b906000526020600020016012828154811061711657fe5b90600052602060002001908054600181600116156101000203166002900461713f929190617ae6565b505b600101617036565b5082821115610e1257825b828110156171b75760126013828154811061716b57fe5b60009182526020808320845460018181018755958552919093209290910180546171ae949390920192909160026101009282161592909202600019011604617ae6565b50600101617154565b50505050565b601354600b548082111561720857805b828110156172065760138054806171e057fe5b6001900381819060005260206000200160006171fc9190617a73565b90556001016171cd565b505b60008183106172175781617219565b825b905060005b81811015617338576172d66013828154811061723657fe5b600091825260209182902001805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156172c45780601f10617299576101008083540402835291602001916172c4565b820191906000526020600020905b8154815290600101906020018083116172a757829003601f168201915b5050505050600b83815481106159de57fe5b61733057600b81815481106172e757fe5b90600052602060002090601602016002016013828154811061730557fe5b90600052602060002001908054600181600116156101000203166002900461732e929190617ae6565b505b60010161721e565b5082821115610e1257825b828110156171b7576013600b828154811061735a57fe5b6000918252602080832084546001808201875595855291909320601692909202909201600290810180546173a295939094019390926000199082161561010002011604617ae6565b50600101617343565b600081848411156173cf5760405162461bcd60e51b8152600401610df291906182d7565b505050900390565b600081836173f85760405162461bcd60e51b8152600401610df291906182d7565b50600083858161740457fe5b0495945050505050565b805160009061741f57506000611bed565b6020820151805160001a9060c082101561743e57600092505050611bed565b5060019392505050565b8051600090811a6080811015617462576000915050611bed565b60b881108061747d575060c0811080159061747d575060f881105b1561748c576001915050611bed565b60c08110156174a05760b519019050611bed565b60f519019050611bed565b80516000908190811a60808110156174c65760019150617585565b60b88110156174db57607e1981019150617585565b60c081101561752c57600060b78203600186019550806020036101000a8651049150600181018201935050808310156175265760405162461bcd60e51b8152600401610df290618851565b50617585565b60f88110156175415760be1981019150617585565b600060f78203600186019550806020036101000a8651049150600181018201935050808310156175835760405162461bcd60e51b8152600401610df290618851565b505b5092915050565b805160009061759d57506000611bed565b600080905060006175b18460200151617448565b602085015185519181019250015b808210156175df576175d0826174ab565b820191508260010192506175bf565b50909392505050565b80516000906015146175f957600080fd5b611c9d82616880565b805160609061761057600080fd5b600061761f8360200151617448565b83516040805191839003808352601f19601f8201168301602001909152919250606090828015617656576020820181803683370190505b50905060008160200190506162c98487602001510182856178f9565b604080516020808252818301909252606091829190602082018180368337505050602081018490529050600067ffffffffffffffff1984166176b6575060186176da565b6fffffffffffffffffffffffffffffffff1984166176d6575060106176da565b5060005b6020811015617710578181815181106176ef57fe5b01602001516001600160f81b0319161561770857617710565b6001016176da565b60008160200390506060816040519080825280601f01601f191660200182016040528015617745576020820181803683370190505b5080830196909652508452509192915050565b60608151600114801561778a5750607f60f81b8260008151811061777857fe5b01602001516001600160f81b03191611155b15617796575080611bed565b611c9d6177a88351608060ff16617827565b835b6060806040519050835180825260208201818101602087015b818310156177db5780518352602092830192016177c3565b50855184518101855292509050808201602086015b818310156178085780518352602092830192016177f0565b508651929092011591909101601f01601f191660405250905092915050565b60606801000000000000000083106178515760405162461bcd60e51b8152600401610df29061869c565b604080516001808252818301909252606091602082018180368337019050509050603784116178ab5782840160f81b8160008151811061788d57fe5b60200101906001600160f81b031916908160001a9053509050611c9d565b60606178b685617672565b90508381510160370160f81b826000815181106178cf57fe5b60200101906001600160f81b031916908160001a9053506178f082826177aa565b95945050505050565b8061790357610e12565b5b60208110617923578251825260209283019290910190601f1901617904565b915181516020939093036101000a6000190180199091169216919091179052565b6040518060800160405280600081526020016000151581526020016060815260200161796e617b9f565b905290565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106179b457805160ff19168380011785556179e1565b828001600101855582156179e1579182015b828111156179e15782518255916020019190600101906179c6565b50613084929150617bbe565b82601381019282156179e157916020028201828111156179e15782518255916020019190600101906179c6565b6040518060600160405280600060ff16815260200160608152602001606081525090565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a081019190915290565b50805460018160011615610100020316600290046000825580601f10617a995750611df9565b601f016020900490600052602060002090810190611df99190617bbe565b6040518060400160405280617aca617b85565b8152602001600081525090565b50611df9906013810190617bbe565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10617b1f57805485556179e1565b828001600101855582156179e157600052602060002091601f016020900482015b828111156179e1578254825591600101919060010190617b40565b82601381019282156179e157918201828111156179e1578254825591600101919060010190617b40565b604051806040016040528060008152602001600081525090565b6040518061026001604052806013906020820280368337509192915050565b61302891905b808211156130845760008155600101617bc4565b8035611c9d81618ed1565b60008083601f840112617bf4578182fd5b5081356001600160401b03811115617c0a578182fd5b602083019150836020808302850101111561556057600080fd5b6000601f8381840112617c35578182fd5b8235617c48617c4382618e86565b618e60565b818152925060208084019085810160005b84811015617cda578135880189603f820112617c7457600080fd5b838101356001600160401b03811115617c8c57600080fd5b617c9d818901601f19168601618e60565b81815260408c81848601011115617cb357600080fd5b82818501888401375060009181018601919091528552509282019290820190600101617c59565b50505050505092915050565b600082601f830112617cf6578081fd5b8135617d04617c4382618e86565b818152915060208083019084810181840286018201871015617d2557600080fd5b6000805b85811015617cda5782356001600160401b0381168114617d47578283fd5b85529383019391830191600101617d29565b60008083601f840112617d6a578182fd5b5081356001600160401b03811115617d80578182fd5b60208301915083602082850101111561556057600080fd5b600060208284031215617da9578081fd5b813561110481618ed1565b600060208284031215617dc5578081fd5b815161110481618ed1565b60008060008060408587031215617de5578283fd5b84356001600160401b0380821115617dfb578485fd5b617e0788838901617be3565b90965094506020870135915080821115617e1f578384fd5b50617e2c87828801617be3565b95989497509550505050565b600080600060608486031215617e4c578283fd5b83356001600160401b0380821115617e62578485fd5b81860187601f820112617e73578586fd5b80359250617e83617c4384618e86565b80848252602080830192508084018b828389028701011115617ea357898afd5b8994505b86851015617ecd57617eb98c82617bd8565b845260019490940193928101928101617ea7565b509097508801359350505080821115617ee4578384fd5b617ef087838801617ce6565b93506040860135915080821115617f05578283fd5b50617f1286828701617c24565b9150509250925092565b600060208284031215617f2d578081fd5b81518015158114611104578182fd5b60008060208385031215617f4e578182fd5b82356001600160401b03811115617f63578283fd5b617f6f85828601617d59565b90969095509350505050565b60008060008060408587031215617f90578384fd5b84356001600160401b0380821115617fa6578586fd5b617fb288838901617d59565b90965094506020870135915080821115617fca578384fd5b50617e2c87828801617d59565b600060208284031215617fe8578081fd5b5035919050565b600060208284031215618000578081fd5b5051919050565b60008060408385031215618019578182fd5b505080516020909101519092909150565b60008060006040848603121561803e578081fd5b833560ff8116811461804e578182fd5b925060208401356001600160401b03811115618068578182fd5b61807486828701617d59565b9497909650939450505050565b6000815180845260208085019450808401835b838110156180b95781516001600160a01b031687529582019590820190600101618094565b509495945050505050565b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b60008151808452618106816020860160208601618ea5565b601f01601f19169290920160200192915050565b6000825161812c818460208701618ea5565b9190910192915050565b918252602082015260400190565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b03968716815294861660208601529290941660408401526001600160401b03166060830152911515608082015260a081019190915260c00190565b6001600160a01b0392909216825260ff16602082015260400190565b6000602082526111046020830184618081565b6000604082526181f56040830185618081565b602083820381850152818551808452828401915082838202850101838801865b8381101561824357601f198784030185526182318383516180ee565b94860194925090850190600101618215565b50909998505050505050505050565b6000608082526182656080830187618081565b828103602084810191909152865180835287820192820190845b8181101561829b5784518352938301939183019160010161827f565b505084810360408601526182af8188618081565b93505050506001600160401b038316606083015295945050505050565b901515815260200190565b60006020825261110460208301846180ee565b6000604082526182fe6040830186886180c4565b82810360208401526183118185876180c4565b979650505050505050565b6020808252601c908201527f6c656e677468206f66206275726e526174696f206d69736d6174636800000000604082015260600190565b60208082526042908201527f746865206275726e526174696f20706c75732073797374656d5265776172645260408201527f6174696f206d757374206265206e6f2067726561746572207468616e20313030606082015261030360f41b608082015260a00190565b60208082526026908201527f6c656e677468206f66206d61784e756d4f664d61696e7461696e696e67206d696040820152650e6dac2e8c6d60d31b606082015260800190565b6020808252601b908201527f6261746368207472616e736665722072657475726e2066616c73650000000000604082015260600190565b6020808252602c908201527f6c656e677468206f66206d61784e756d4f66576f726b696e6743616e6469646160408201526b0e8cae640dad2e6dac2e8c6d60a31b606082015260800190565b60208082526025908201527f6c656e677468206f66206d61696e7461696e536c6173685363616c65206d69736040820152640dac2e8c6d60db1b606082015260800190565b6020808252818101527f6c656e677468206f66206e756d4f66436162696e657473206d69736d61746368604082015260600190565b60208082526019908201527f74686520636f6e7472616374206e6f7420696e69742079657400000000000000604082015260600190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b60208082526028908201527f746865206e756d4f66436162696e657473206d75737420626520677265617465604082015267072207468616e20360c41b606082015260800190565b60208082526039908201527f746865206e756d4f66436162696e657473206d757374206265206c657373207460408201527f68616e204d41585f4e554d5f4f465f56414c494441544f525300000000000000606082015260800190565b60208082526029908201527f746865206e756d626572206f662076616c696461746f727320657863656564206040820152681d1a19481b1a5b5a5d60ba1b606082015260800190565b60208082526022908201527f63616e206e6f7420646f207468697320747769636520696e206f6e6520626c6f604082015261636b60f01b606082015260800190565b6020808252600e908201526d696e70757420746f6f206c6f6e6760901b604082015260600190565b60208082526037908201527f746865206d61784e756d4f664d61696e7461696e696e67206d7573742062652060408201527f6c657373207468616e206e756d4f66436162696e657473000000000000000000606082015260800190565b6020808252602b908201527f6475706c696361746520636f6e73656e7375732061646472657373206f66207660408201526a185b1a59185d1bdc94d95d60aa1b606082015260800190565b60208082526027908201527f7468652065787069726554696d655365636f6e64476170206973206f7574206f604082015266662072616e676560c81b606082015260800190565b6020808252601590820152746465706f7369742076616c7565206973207a65726f60581b604082015260600190565b60208082526049908201527f746865206d61784e756d4f66576f726b696e6743616e64696461746573206d7560408201527f7374206265206e6f742067726561746572207468616e206d61784e756d4f6643606082015268616e6469646174657360b81b608082015260a00190565b6020808252601190820152706164646974696f6e206f766572666c6f7760781b604082015260600190565b60208082526023908201527f63616e206e6f7420656e7465722054656d706f72617279204d61696e74656e616040820152626e636560e81b606082015260800190565b60208082526025908201527f6c656e677468206f66206a61696c2076616c696461746f7273206d757374206260408201526465206f6e6560d81b606082015260800190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252601490820152736761737072696365206973206e6f74207a65726f60601b604082015260600190565b6020808252602e908201527f746865206d6573736167652073656e646572206d75737420626520676f76657260408201526d1b985b98d94818dbdb9d1c9858dd60921b606082015260800190565b60208082526025908201527f6c656e677468206f66206d61784e756d4f6643616e64696461746573206d69736040820152640dac2e8c6d60db1b606082015260800190565b6020808252601290820152716e6f7420696e206d61696e74656e616e636560701b604082015260600190565b60208082526021908201527f666565206973206c6172676572207468616e2044555354595f494e434f4d494e6040820152604760f81b606082015260800190565b60208082526019908201527f74686520636f6e747261637420616c726561647920696e697400000000000000604082015260600190565b60208082526042908201527f7468652073797374656d526577617264526174696f20706c7573206275726e5260408201527f6174696f206d757374206265206e6f2067726561746572207468616e20313030606082015261030360f41b608082015260a00190565b6020808252601a908201527f6c656e677468206973206c657373207468616e206f6666736574000000000000604082015260600190565b60208082526026908201527f6c656e677468206f662065787069726554696d655365636f6e64476170206d696040820152650e6dac2e8c6d60d31b606082015260800190565b60208082526017908201527f6f6e6c792063757272656e742076616c696461746f7273000000000000000000604082015260600190565b60208082526021908201527f6661696c656420746f20706172736520696e69742076616c696461746f7253656040820152601d60fa1b606082015260800190565b6020808252602f908201527f746865206d6573736167652073656e646572206d7573742062652063726f737360408201526e0818da185a5b8818dbdb9d1c9858dd608a1b606082015260800190565b6020808252602d908201527f746865206d6573736167652073656e646572206d75737420626520746865206260408201526c3637b1b590383937b23ab1b2b960991b606082015260800190565b60208082526024908201527f6c656e677468206f662073797374656d526577617264526174696f206d69736d6040820152630c2e8c6d60e31b606082015260800190565b6020808252603e908201527f746865206d61696e7461696e536c6173685363616c65206d757374206265206760408201527f726561746572207468616e203020616e64206c657373207468616e2031300000606082015260800190565b6020808252600d908201526c756e6b6e6f776e20706172616d60981b604082015260600190565b60208082526029908201527f746865206d6573736167652073656e646572206d75737420626520736c6173686040820152680818dbdb9d1c9858dd60ba1b606082015260800190565b6020808252601f908201527f746865206d73672073656e646572206d757374206265207374616b6548756200604082015260600190565b61ffff91909116815260200190565b90815260200190565b60008482528315156020830152606060408301526178f060608301846180ee565b63ffffffff91909116815260200190565b60ff91909116815260200190565b600060ff85168252604060208301526178f06040830184866180c4565b6040518181016001600160401b0381118282101715618e7e57600080fd5b604052919050565b60006001600160401b03821115618e9b578081fd5b5060209081020190565b60005b83811015618ec0578181015183820152602001618ea8565b838111156171b75750506000910152565b6001600160a01b0381168114611df957600080fdfe70e72399380dcfb0338abc03dc8d47f9f470ada8e769c9a78d644ea97385ecb20175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db90175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01dbb0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01dbaf87680f873f871949fb29aac15b9a4b7f17c3385939b007540f4d791949fb29aac15b9a4b7f17c3385939b007540f4d791949fb29aac15b9a4b7f17c3385939b007540f4d79164b085e6972fc98cd3c81d64d40e325acfed44365b97a7567a27939c14dbc7512ddcf54cb1284eb637cfa308ae4e00cb5588a164736f6c6343000604000a", }, { ContractAddr: common.HexToAddress(SlashContract), CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/cfc0bd1127186a917ddc38fd38d22903034d3f0b", - Code: "608060405234801561001057600080fd5b50600436106102f15760003560e01c8063831d65d11161019d578063c81b1662116100e9578063df8079e9116100a2578063f9a2bbc71161007c578063f9a2bbc714610575578063fc3e59081461057d578063fc4333cd14610585578063fd6a68791461058d576102f1565b8063df8079e91461055d578063e1c7392a14610565578063eb57bff71461056d576102f1565b8063c81b16621461050c578063c8509d8114610514578063c96be4cb14610527578063cc844b731461053a578063d2a42e4b1461054d578063dc927faf14610555576102f1565b8063aa82dce111610156578063ac0af62911610130578063ac0af629146104e1578063ac431751146104e9578063ae61dc3b146104fc578063c80d4b8f14610504576102f1565b8063aa82dce1146104c9578063aad56063146104d1578063ab51bb96146104d9576102f1565b8063831d65d11461048357806396713da9146104965780639dc092621461049e5780639e89ded8146104a6578063a1a11bf5146104b9578063a78abc16146104c1576102f1565b8063493279b11161025c5780636e47b4821161021557806375d47a0a116101ef57806375d47a0a146104635780637912a65d1461046b5780637942fd05146104735780638256ace61461047b576102f1565b80636e47b4821461044b57806370fd5bad14610453578063718a8aa81461045b576102f1565b8063493279b1146104035780634bf6c8821461041857806351e8067214610420578063567a372d146104285780635bfb49901461043057806362b72cf514610443576102f1565b806335aa2e44116102ae57806335aa2e441461039557806337c8dab9146103a8578063389f4f71146103c95780633a63f4b1146103de5780633dffc387146103e657806343756e5c146103fb576102f1565b80630bee7a67146102f65780630e2374a5146103145780631182b8751461032957806322d1e80b1461034957806323bac5a21461035e5780632796211814610380575b600080fd5b6102fe610595565b60405161030b9190613ddc565b60405180910390f35b61031c61059a565b60405161030b91906135af565b61033c6103373660046134e5565b6105a0565b60405161030b91906135e7565b610351610606565b60405161030b91906135dc565b61037161036c3660046131fc565b61060f565b60405161030b93929190613dc4565b61039361038e366004613342565b610632565b005b61031c6103a33660046134b5565b610a4d565b6103bb6103b63660046131fc565b610a74565b60405161030b929190613db6565b6103d1610acb565b60405161030b9190613d8c565b6103d1610ad1565b6103ee610ad7565b60405161030b9190613ded565b61031c610adc565b61040b610ae2565b60405161030b9190613d7d565b6103ee610ae8565b61031c610aed565b6103d1610af3565b61039361043e3660046131fc565b610af9565b6103d1610ba4565b61031c610baa565b6103ee610bb0565b6103ee610bb5565b61031c610bba565b6103d1610bc0565b6103ee610bc5565b6103bb610bca565b6103936104913660046134e5565b610bd4565b6103ee610ce7565b61031c610cec565b6103936104b4366004613234565b610cf2565b61031c610d21565b610351610d27565b61031c610d30565b61031c610d36565b6102fe610d3c565b6103d1610d41565b6103936104f7366004613399565b610d46565b6103d16112f6565b6103d16112fd565b61031c611302565b6103936105223660046134e5565b611308565b6103936105353660046131fc565b611379565b610393610548366004613402565b6117fa565b6103d1611e45565b61031c611e4a565b61031c611e50565b610393611e56565b6103d1611e93565b61031c611e99565b6103ee611e9f565b610393611ea4565b61031c6122ed565b606481565b61200181565b606033612000146105cc5760405162461bcd60e51b81526004016105c390613bd5565b60405180910390fd5b60005460ff166105ee5760405162461bcd60e51b81526004016105c390613705565b60405162461bcd60e51b81526004016105c390613cc6565b60075460ff1681565b600260208190526000918252604090912080546001820154919092015460ff1683565b60005460ff166106545760405162461bcd60e51b81526004016105c390613705565b8151158015906106645750805115155b6106805760405162461bcd60e51b81526004016105c390613b33565b60408051600380825260808201909252606091816020015b60608152602001906001900390816106985790505090506106ba6102ca6122f3565b816000815181106106c757fe5b60200260200101819052506106db8361230e565b816001815181106106e857fe5b60200260200101819052506106fc8261230e565b8160028151811061070957fe5b6020026020010181905250606061071f82612364565b60408051603480825260608281019093529293509091602082018180368337019050509050815160346020830182602086016068600019fa61076057600080fd5b50601481015160348201516040516333c1892360e21b81526000906120029063cf06248c906107939086906004016135af565b60206040518083038186803b1580156107ab57600080fd5b505afa1580156107bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107e39190613218565b6001600160a01b0316141561080a5760405162461bcd60e51b81526004016105c3906136d5565b4281621baf8001101561082f5760405162461bcd60e51b81526004016105c390613676565b60606110006001600160a01b0316633b071dcc6040518163ffffffff1660e01b815260040160006040518083038186803b15801561086c57600080fd5b505afa158015610880573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526108a8919081019061325f565b50905060005b81518110156109eb578181815181106108c357fe5b60200260200101516001600160a01b0316846001600160a01b031614156109e3576006546040516309a99b4f60e41b815260646110028031909302049190639a99b4f09061091790339085906004016135c3565b602060405180830381600087803b15801561093157600080fd5b505af1158015610945573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061096991906134cd565b506110006001600160a01b03166335409f7f84848151811061098757fe5b60200260200101516040518263ffffffff1660e01b81526004016109ab91906135af565b600060405180830381600087803b1580156109c557600080fd5b505af11580156109d9573d6000803e3d6000fd5b50505050506109eb565b6001016108ae565b50604051631871f7d960e31b81526120029063c38fbec890610a119086906004016135af565b600060405180830381600087803b158015610a2b57600080fd5b505af1158015610a3f573d6000803e3d6000fd5b505050505050505050505050565b60018181548110610a5a57fe5b6000918252602090912001546001600160a01b0316905081565b600080610a7f612fe3565b5050506001600160a01b0316600090815260026020818152604092839020835160608101855281548082526001830154938201849052919093015460ff16151592909301919091529091565b60055481565b60065481565b600181565b61100181565b6102ca81565b600881565b61200081565b60045481565b3361100014610b1a5760405162461bcd60e51b81526004016105c390613994565b60005460ff16610b3c5760405162461bcd60e51b81526004016105c390613705565b61200063f7a251d7600b610b4f846123f5565b60006040518463ffffffff1660e01b8152600401610b6f93929190613dfb565b600060405180830381600087803b158015610b8957600080fd5b505af1158015610b9d573d6000803e3d6000fd5b5050505050565b60035481565b61100581565b600281565b601081565b61100881565b600581565b600b81565b6004546005549091565b3361200014610bf55760405162461bcd60e51b81526004016105c390613bd5565b60005460ff16610c175760405162461bcd60e51b81526004016105c390613705565b610c1f613006565b6000610c6084848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506124bf92505050565b915091508015610ca75781516040517f7f0956d47419b9525356e7111652b653b530ec6f5096dccc04589bc38e62996791610c9a91613ddc565b60405180910390a1610b9d565b81516040517f7d45f62d17443dd4547bca8a8112c60e2385669318dc300ec61a5d2492f262e791610cd791613ddc565b60405180910390a150505b505050565b600981565b61100781565b3361100014610d135760405162461bcd60e51b81526004016105c390613994565b610d1d828261253f565b5050565b61100681565b60005460ff1681565b61200281565b61300081565b600081565b600481565b60005460ff16610d685760405162461bcd60e51b81526004016105c390613705565b3361100714610d895760405162461bcd60e51b81526004016105c390613a6c565b610df484848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260148152731b5a5cd9195b59585b9bdc951a1c995cda1bdb1960621b602082015291506127169050565b15610e8f5760208114610e195760405162461bcd60e51b81526004016105c390613920565b604080516020601f8401819004810282018101909252828152600091610e579185858083850183828082843760009201919091525061277092505050565b905060018110158015610e6b575060055481105b610e875760405162461bcd60e51b81526004016105c390613b90565b6004556112b3565b610ef584848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600f81526e19995b1bdb9e551a1c995cda1bdb19608a1b602082015291506127169050565b15610f915760208114610f1a5760405162461bcd60e51b81526004016105c390613aba565b604080516020601f8401819004810282018101909252828152600091610f589185858083850183828082843760009201919091525061277092505050565b90506103e88111158015610f6d575060045481115b610f895760405162461bcd60e51b81526004016105c3906137be565b6005556112b3565b61100584848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601881527f66696e616c697479536c617368526577617264526174696f0000000000000000602082015291506127169050565b1561109f576020811461102a5760405162461bcd60e51b81526004016105c390613cfd565b604080516020601f84018190048102820181019092528281526000916110689185858083850183828082843760009201919091525061277092505050565b9050600a811015801561107b5750606481105b6110975760405162461bcd60e51b81526004016105c3906138d4565b6006556112b3565b61111384848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601881527f656e61626c654d616c6963696f7573566f7465536c6173680000000000000000602082015291506127169050565b1561118a57602081146111385760405162461bcd60e51b81526004016105c3906137f3565b604080516020601f8401819004810282018101909252828152611174919084848083850183828082843760009201919091525061277592505050565b6007805460ff19169115159190911790556112b3565b6111fe84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601781527f6d616c6963696f7573566f7465536c61736853636f7065000000000000000000602082015291506127169050565b1561129b57602081146112235760405162461bcd60e51b81526004016105c39061362c565b604080516020601f84018190048102820181019092528281526000916112619185858083850183828082843760009201919091525061277092505050565b905061708081101580156112775750620d2f0081105b6112935760405162461bcd60e51b81526004016105c39061373c565b6008556112b3565b60405162461bcd60e51b81526004016105c390613c71565b7f6cdb0ac70ab7f2e2d035cca5be60d89906f2dede7648ddbd7402189c1eeed17a848484846040516112e894939291906135fa565b60405180910390a150505050565b6201518081565b600a81565b61100281565b33612000146113295760405162461bcd60e51b81526004016105c390613bd5565b60005460ff1661134b5760405162461bcd60e51b81526004016105c390613705565b6040517f07db600eebe2ac176be8dcebad61858c245a4961bb32ca2aa3d159b09aa0810e90600090a1505050565b3341146113985760405162461bcd60e51b81526004016105c390613c24565b60005460ff166113ba5760405162461bcd60e51b81526004016105c390613705565b60035443116113db5760405162461bcd60e51b81526004016105c390613d48565b3a156113f95760405162461bcd60e51b81526004016105c390613a0f565b60405163155853f360e21b8152611000906355614fcc9061141e9084906004016135af565b60206040518083038186803b15801561143657600080fd5b505afa15801561144a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061146e9190613322565b611477576117f3565b61147f612fe3565b506001600160a01b0381166000908152600260208181526040928390208351606081018552815481526001820154928101929092529091015460ff1615801592820192909252906114da576020810180516001019052611533565b60016040820181905260208201819052805480820182556000919091527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180546001600160a01b0319166001600160a01b0384161790555b43815260055460208201518161154557fe5b0661172157600060208201526040516335409f7f60e01b8152611000906335409f7f906115769085906004016135af565b600060405180830381600087803b15801561159057600080fd5b505af11580156115a4573d6000803e3d6000fd5b50506040516333c1892360e21b815260009250612002915063cf06248c906115d09086906004016135af565b60206040518083038186803b1580156115e857600080fd5b505afa1580156115fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116209190613218565b6001600160a01b0316146116415761163c82826020015161253f565b61171c565b61200063f7a251d7600b611654856123f5565b60006040518463ffffffff1660e01b815260040161167493929190613dfb565b600060405180830381600087803b15801561168e57600080fd5b505af192505050801561169f575060015b61171c573d8080156116cd576040519150601f19603f3d011682016040523d82523d6000602084013e6116d2565b606091505b50826001600160a01b03167fd7bc86ff5d08c8ab043edec743302aba2520e6635172a428bc956721db9e2d1c836020015183604051611712929190613d95565b60405180910390a2505b61178d565b60045481602001518161173057fe5b0661178d576040516375abf10160e11b81526110009063eb57e2029061175a9085906004016135af565b600060405180830381600087803b15801561177457600080fd5b505af1158015611788573d6000803e3d6000fd5b505050505b6001600160a01b0382166000818152600260208181526040808420865181559186015160018301558581015191909201805460ff1916911515919091179055517fddb6012116e51abf5436d956a4f0ebd927e92c576ff96d7918290c8782291e3e9190a2505b5043600355565b60005460ff1661181c5760405162461bcd60e51b81526004016105c390613705565b60075460ff1661183e5760405162461bcd60e51b81526004016105c3906136a0565b60065461184b5760146006555b60085461185a57620151806008555b60085481516040015143910111801561187e57504360085482602001516040015101115b61189a5760405162461bcd60e51b81526004016105c390613c98565b8060200151602001518160000151602001511480156118c85750806020015160600151816000015160600151145b156118e55760405162461bcd60e51b81526004016105c390613967565b8051604081015190511080156119045750602081015160408101519051105b6119205760405162461bcd60e51b81526004016105c39061389d565b6020810151518151511080156119455750806000015160400151816020015160400151105b8061197057508051516020820151511080156119705750806020015160400151816000015160400151105b8061198a5750806020015160400151816000015160400151145b6119a65760405162461bcd60e51b81526004016105c390613787565b604080820151905163ea321e4960e01b81526110009163ea321e49916119cf91906004016135e7565b60206040518083038186803b1580156119e757600080fd5b505afa1580156119fb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a1f9190613322565b611a3b5760405162461bcd60e51b81526004016105c390613a3d565b611a4d8160000151826040015161279d565b8015611a665750611a668160200151826040015161279d565b611a825760405162461bcd60e51b81526004016105c39061383e565b6060806110006001600160a01b0316633b071dcc6040518163ffffffff1660e01b815260040160006040518083038186803b158015611ac057600080fd5b505afa158015611ad4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611afc919081019061325f565b9150915060005b8151811015611c3957611b2d828281518110611b1b57fe5b60200260200101518560400151612975565b15611c31576006546040516309a99b4f60e41b815260646110028031909302049190639a99b4f090611b6590339085906004016135c3565b602060405180830381600087803b158015611b7f57600080fd5b505af1158015611b93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bb791906134cd565b506110006001600160a01b03166335409f7f858481518110611bd557fe5b60200260200101516040518263ffffffff1660e01b8152600401611bf991906135af565b600060405180830381600087803b158015611c1357600080fd5b505af1158015611c27573d6000803e3d6000fd5b5050505050611c39565b600101611b03565b506040808401519051630f5b9efd60e31b815260009161200291637adcf7e891611c65916004016135e7565b60206040518083038186803b158015611c7d57600080fd5b505afa158015611c91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cb59190613218565b6001600160a01b031614611d23576040808401519051630e9fbf5160e01b815261200291630e9fbf5191611cec91906004016135e7565b600060405180830381600087803b158015611d0657600080fd5b505af1158015611d1a573d6000803e3d6000fd5b50505050610ce2565b6000611d34846040015160006129d9565b90506120006001600160a01b031663f7a251d7600b611d5687604001516129f5565b60006040518463ffffffff1660e01b8152600401611d7693929190613dfb565b600060405180830381600087803b158015611d9057600080fd5b505af1925050508015611da1575060015b611e13573d808015611dcf576040519150601f19603f3d011682016040523d82523d6000602084013e611dd4565b606091505b50817fd58d1183100bd0932c0588f31c4205d6bc6168909765a96c41adbed3115f362882604051611e0591906135e7565b60405180910390a250611e3f565b60405181907f7b78aadacff901d8b63d0dba4f86283d4db8aef27f9ed70413dd860f1c9532b690600090a25b50505050565b601481565b61100381565b61200481565b60005460ff1615611e795760405162461bcd60e51b81526004016105c390613afc565b60056004819055600a90556000805460ff19166001179055565b60085481565b61100081565b600381565b3361100014611ec55760405162461bcd60e51b81526004016105c390613994565b60005460ff16611ee75760405162461bcd60e51b81526004016105c390613705565b600154611ef3576122eb565b600154600090600019015b8082116122bf576000805b8284101561202257611f19612fe3565b6002600060018781548110611f2a57fe5b60009182526020808320909101546001600160a01b0316835282810193909352604091820190208151606081018352815481526001820154938101939093526002015460ff16151590820152600554909150600490048160200151111561200c57600460055481611f9757fe5b04816020015103816020018181525050806002600060018881548110611fb957fe5b6000918252602080832091909101546001600160a01b0316835282810193909352604091820190208351815591830151600183015591909101516002909101805460ff1916911515919091179055612016565b6001925050612022565b50836001019350611f09565b8284116121b957612031612fe3565b600260006001868154811061204257fe5b60009182526020808320909101546001600160a01b0316835282810193909352604091820190208151606081018352815481526001820154938101939093526002015460ff16151590820152600554909150600490048160200151111561212a576004600554816120af57fe5b048160200151038160200181815250508060026000600187815481106120d157fe5b6000918252602080832091909101546001600160a01b03168352828101939093526040918201902083518155918301516001808401919091559201516002909101805460ff191691151591909117905591506121b99050565b600260006001868154811061213b57fe5b60009182526020808320909101546001600160a01b031683528201929092526040018120818155600181810192909255600201805460ff1916905580548061217f57fe5b600082815260209020810160001990810180546001600160a01b0319169055019055836121ac57506121b9565b5060001990920191612022565b8180156121c35750805b156122a25760026000600186815481106121d957fe5b60009182526020808320909101546001600160a01b031683528201929092526040018120818155600181810192909255600201805460ff1916905580548490811061222057fe5b600091825260209091200154600180546001600160a01b03909216918690811061224657fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600180548061227f57fe5b600082815260209020810160001990810180546001600160a01b03191690550190555b826122ae5750506122bf565b505060019091019060001901611efe565b6040517fcfdb3b6ccaeccbdc68be3c59c840e3b3c90f0a7c491f5fff1cf56cfda200dd9c90600090a150505b565b61100481565b606061230661230183612a30565b61230e565b90505b919050565b6060815160011480156123405750607f60f81b8260008151811061232e57fe5b01602001516001600160f81b03191611155b1561234c575080612309565b61230661235e8351608060ff16612b16565b83612be8565b60608151600014156123855750604080516000815260208101909152612309565b60608260008151811061239457fe5b602002602001015190506000600190505b83518110156123d5576123cb828583815181106123be57fe5b6020026020010151612be8565b91506001016123a5565b506123ee6123e8825160c060ff16612b16565b82612be8565b9392505050565b60408051600480825260a08201909252606091829190816020015b6060815260200190600190039081612410579050509050612439836001600160a01b0316612c65565b8160008151811061244657fe5b602002602001018190525061245a436122f3565b8160018151811061246757fe5b602090810291909101015261247d6102ca6122f3565b8160028151811061248a57fe5b602002602001018190525061249e426122f3565b816003815181106124ab57fe5b60200260200101819052506123ee81612364565b6124c7613006565b60006124d1613006565b6124d9613018565b6124ea6124e586612c88565b612cad565b90506000805b6124f983612cf7565b1561253257806125255761251461250f84612d18565b612d66565b63ffffffff1684526001915061252a565b612532565b6001016124f0565b5091935090915050915091565b6040516375cc7d8960e01b8152612002906375cc7d89906125649085906004016135af565b600060405180830381600087803b15801561257e57600080fd5b505af192505050801561258f575060015b610d1d576040516000815260443d10156125ab57506000612648565b60046000803e60005160e01c6308c379a081146125cc576000915050612648565b60043d036004833e81513d602482011167ffffffffffffffff821117156125f857600092505050612648565b808301805167ffffffffffffffff81111561261a576000945050505050612648565b8060208301013d860181111561263857600095505050505050612648565b601f01601f191660405250925050505b80612653575061269c565b826001600160a01b03167fd7bc86ff5d08c8ab043edec743302aba2520e6635172a428bc956721db9e2d1c838360405161268e929190613d95565b60405180910390a250612711565b3d8080156126c6576040519150601f19603f3d011682016040523d82523d6000602084013e6126cb565b606091505b50826001600160a01b03167fd7bc86ff5d08c8ab043edec743302aba2520e6635172a428bc956721db9e2d1c8383604051612707929190613d95565b60405180910390a2505b610d1d565b6000816040516020016127299190613593565b60405160208183030381529060405280519060200120836040516020016127509190613593565b604051602081830303815290604052805190602001201490505b92915050565b015190565b8082015160009060ff81161561278f576001915081612795565b60009150815b505092915050565b60408051600480825260a0820190925260009160609190816020015b60608152602001906001900390816127b95750506040805160208082528183019092529192506060919080820181803683370190505090506127fe85600001516122f3565b8260008151811061280b57fe5b60200260200101819052506128266020866020015183612de8565b61282f8161230e565b8260018151811061283c57fe5b602002602001018190525061285485604001516122f3565b8260028151811061286157fe5b602002602001018190525061287c6020866060015183612de8565b6128858161230e565b8260038151811061289257fe5b60200260200101819052506128b860206128ab84612364565b8051906020012083612de8565b6040805160b080825260e082019092526060916020820181803683370190505090506128e8818360006020612df8565b6128fa81876080015160206060612df8565b612908818660806030612df8565b604080516001808252818301909252606091602082018180368337019050509050815160016020830182602086016066600019fa61294557600080fd5b506001612953826000612e4b565b60ff161461296857600094505050505061276a565b5060019695505050505050565b81518151600091600191811480831461299157600092506129cf565b600160208701838101602088015b6002848385100114156129ca5780518351146129be5760009650600093505b6020928301920161299f565b505050505b5090949350505050565b600081602001835110156129ec57600080fd5b50016020015190565b60408051600480825260a08201909252606091829190816020015b6060815260200190600190039081612a105790505090506124398361230e565b604080516020808252818301909252606091829190602082018180368337505050602081018490529050600067ffffffffffffffff198416612a7457506018612a98565b6fffffffffffffffffffffffffffffffff198416612a9457506010612a98565b5060005b6020811015612ace57818181518110612aad57fe5b01602001516001600160f81b03191615612ac657612ace565b600101612a98565b60008160200390506060816040519080825280601f01601f191660200182016040528015612b03576020820181803683370190505b5080830196909652508452509192915050565b6060680100000000000000008310612b405760405162461bcd60e51b81526004016105c390613875565b60408051600180825281830190925260609160208201818036833701905050905060378411612b9a5782840160f81b81600081518110612b7c57fe5b60200101906001600160f81b031916908160001a905350905061276a565b6060612ba585612a30565b90508381510160370160f81b82600081518110612bbe57fe5b60200101906001600160f81b031916908160001a905350612bdf8282612be8565b95945050505050565b6060806040519050835180825260208201818101602087015b81831015612c19578051835260209283019201612c01565b50855184518101855292509050808201602086015b81831015612c46578051835260209283019201612c2e565b508651929092011591909101601f01601f191660405250905092915050565b60408051600560a21b83186014820152603481019091526060906123ee8161230e565b612c90613038565b506040805180820190915281518152602082810190820152919050565b612cb5613018565b612cbe82612e67565b612cc757600080fd5b6000612cd68360200151612ea1565b60208085015160408051808201909152868152920190820152915050919050565b6000612d01613038565b505080518051602091820151919092015191011190565b612d20613038565b612d2982612cf7565b612d3257600080fd5b60208201516000612d4282612f04565b80830160209586015260408051808201909152908152938401919091525090919050565b805160009015801590612d7b57508151602110155b612d8457600080fd5b6000612d938360200151612ea1565b90508083600001511015612db95760405162461bcd60e51b81526004016105c390613b59565b825160208085015183018051928490039291831015612ddf57826020036101000a820491505b50949350505050565b9091018181526020918201910152565b60005b81811015610b9d57838181518110612e0f57fe5b602001015160f81c60f81b858480600101955081518110612e2c57fe5b60200101906001600160f81b031916908160001a905350600101612dfb565b60008160010183511015612e5e57600080fd5b50016001015190565b8051600090612e7857506000612309565b6020820151805160001a9060c0821015612e9757600092505050612309565b5060019392505050565b8051600090811a6080811015612ebb576000915050612309565b60b8811080612ed6575060c08110801590612ed6575060f881105b15612ee5576001915050612309565b60c0811015612ef95760b519019050612309565b60f519019050612309565b80516000908190811a6080811015612f1f5760019150612fdc565b60b8811015612f3457607e1981019150612fdc565b60c0811015612f8557600060b78203600186019550806020036101000a865104915060018101820193505080831015612f7f5760405162461bcd60e51b81526004016105c3906139e4565b50612fdc565b60f8811015612f9a5760be1981019150612fdc565b600060f78203600186019550806020036101000a8651049150600181018201935050808310156127955760405162461bcd60e51b81526004016105c3906139e4565b5092915050565b604051806060016040528060008152602001600081526020016000151581525090565b60408051602081019091526000815290565b604051806040016040528061302b613038565b8152602001600081525090565b604051806040016040528060008152602001600081525090565b600082601f830112613062578081fd5b815161307561307082613e4e565b613e27565b818152915060208083019084810160005b848110156130eb578151870188603f8201126130a157600080fd5b838101516130b161307082613e6e565b81815260408b818486010111156130c757600080fd5b6130d683888401838701613e92565b50865250509282019290820190600101613086565b505050505092915050565b60008083601f840112613107578182fd5b50813567ffffffffffffffff81111561311e578182fd5b60208301915083602082850101111561313657600080fd5b9250929050565b600082601f83011261314d578081fd5b813561315b61307082613e6e565b915080825283602082850101111561317257600080fd5b8060208401602084013760009082016020015292915050565b600060a0828403121561319c578081fd5b6131a660a0613e27565b905081358152602082013560208201526040820135604082015260608201356060820152608082013567ffffffffffffffff8111156131e457600080fd5b6131f08482850161313d565b60808301525092915050565b60006020828403121561320d578081fd5b81356123ee81613ebe565b600060208284031215613229578081fd5b81516123ee81613ebe565b60008060408385031215613246578081fd5b823561325181613ebe565b946020939093013593505050565b60008060408385031215613271578182fd5b825167ffffffffffffffff80821115613288578384fd5b81850186601f820112613299578485fd5b805192506132a961307084613e4e565b80848252602080830192508084018a8283890287010111156132c9578889fd5b8894505b868510156132f45780516132e081613ebe565b8452600194909401939281019281016132cd565b50880151909650935050508082111561330b578283fd5b5061331885828601613052565b9150509250929050565b600060208284031215613333578081fd5b815180151581146123ee578182fd5b60008060408385031215613354578182fd5b823567ffffffffffffffff8082111561336b578384fd5b6133778683870161313d565b9350602085013591508082111561338c578283fd5b506133188582860161313d565b600080600080604085870312156133ae578182fd5b843567ffffffffffffffff808211156133c5578384fd5b6133d1888389016130f6565b909650945060208701359150808211156133e9578384fd5b506133f6878288016130f6565b95989497509550505050565b600060208284031215613413578081fd5b813567ffffffffffffffff8082111561342a578283fd5b8184016060818703121561343c578384fd5b6134466060613e27565b9250803582811115613456578485fd5b6134628782840161318b565b845250602081013582811115613476578485fd5b6134828782840161318b565b602085015250604081013582811115613499578485fd5b6134a58782840161313d565b6040850152509195945050505050565b6000602082840312156134c6578081fd5b5035919050565b6000602082840312156134de578081fd5b5051919050565b6000806000604084860312156134f9578081fd5b833560ff81168114613509578182fd5b9250602084013567ffffffffffffffff811115613524578182fd5b613530868287016130f6565b9497909650939450505050565b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b6000815180845261357f816020860160208601613e92565b601f01601f19169290920160200192915050565b600082516135a5818460208701613e92565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b901515815260200190565b6000602082526123ee6020830184613567565b60006040825261360e60408301868861353d565b828103602084015261362181858761353d565b979650505050505050565b6020808252602a908201527f6c656e677468206f66206d616c6963696f7573566f7465536c61736853636f706040820152690ca40dad2e6dac2e8c6d60b31b606082015260800190565b60208082526010908201526f195d9a59195b98d9481d1bdbc81bdb1960821b604082015260600190565b6020808252818101527f6d616c6963696f757320766f746520736c617368206e6f7420656e61626c6564604082015260600190565b6020808252601690820152751d985b1a59185d1bdc881b9bdd081b5a59dc985d195960521b604082015260600190565b60208082526019908201527f74686520636f6e7472616374206e6f7420696e69742079657400000000000000604082015260600190565b6020808252602b908201527f746865206d616c6963696f757320766f746520736c6173682073636f7065206f60408201526a7574206f662072616e676560a81b606082015260800190565b6020808252601a908201527f6e6f2076696f6c6174696f6e206f6620766f74652072756c6573000000000000604082015260600190565b6020808252818101527f7468652066656c6f6e795468726573686f6c64206f7574206f662072616e6765604082015260600190565b6020808252602b908201527f6c656e677468206f6620656e61626c654d616c6963696f7573566f7465536c6160408201526a0e6d040dad2e6dac2e8c6d60ab1b606082015260800190565b60208082526017908201527f766572696679207369676e6174757265206661696c6564000000000000000000604082015260600190565b6020808252600e908201526d696e70757420746f6f206c6f6e6760901b604082015260600190565b60208082526019908201527f7372634e756d20626967676572207468616e207461724e756d00000000000000604082015260600190565b6020808252602c908201527f7468652066696e616c69747920736c6173682072657761726420726174696f2060408201526b6f7574206f662072616e676560a01b606082015260800190565b60208082526027908201527f6c656e677468206f66206d697364656d65616e6f725468726573686f6c64206d6040820152660d2e6dac2e8c6d60cb1b606082015260800190565b60208082526013908201527274776f206964656e746963616c20766f74657360681b604082015260600190565b60208082526030908201527f746865206d6573736167652073656e646572206d7573742062652076616c696460408201526f185d1bdc94d95d0818dbdb9d1c9858dd60821b606082015260800190565b6020808252601190820152706164646974696f6e206f766572666c6f7760781b604082015260600190565b6020808252601490820152736761737072696365206973206e6f74207a65726f60601b604082015260600190565b6020808252601590820152741d9bdd195059191c881a5cc81b9bdd08199bdd5b99605a1b604082015260600190565b6020808252602e908201527f746865206d6573736167652073656e646572206d75737420626520676f76657260408201526d1b985b98d94818dbdb9d1c9858dd60921b606082015260800190565b60208082526022908201527f6c656e677468206f662066656c6f6e795468726573686f6c64206d69736d61746040820152610c6d60f31b606082015260800190565b60208082526019908201527f74686520636f6e747261637420616c726561647920696e697400000000000000604082015260600190565b6020808252600c908201526b32b6b83a3c903432b0b232b960a11b604082015260600190565b6020808252601a908201527f6c656e677468206973206c657373207468616e206f6666736574000000000000604082015260600190565b60208082526025908201527f746865206d697364656d65616e6f725468726573686f6c64206f7574206f662060408201526472616e676560d81b606082015260800190565b6020808252602f908201527f746865206d6573736167652073656e646572206d7573742062652063726f737360408201526e0818da185a5b8818dbdb9d1c9858dd608a1b606082015260800190565b6020808252602d908201527f746865206d6573736167652073656e646572206d75737420626520746865206260408201526c3637b1b590383937b23ab1b2b960991b606082015260800190565b6020808252600d908201526c756e6b6e6f776e20706172616d60981b604082015260600190565b6020808252601490820152731d185c99d95d08189b1bd8dac81d1bdbc81bdb1960621b604082015260600190565b6020808252601e908201527f7265636569766520756e65787065637465642073796e207061636b6167650000604082015260600190565b6020808252602b908201527f6c656e677468206f662066696e616c697479536c61736852657761726452617460408201526a0d2de40dad2e6dac2e8c6d60ab1b606082015260800190565b6020808252818101527f63616e206e6f7420736c61736820747769636520696e206f6e6520626c6f636b604082015260600190565b61ffff91909116815260200190565b90815260200190565b600083825260406020830152613dae6040830184613567565b949350505050565b918252602082015260400190565b92835260208301919091521515604082015260600190565b63ffffffff91909116815260200190565b60ff91909116815260200190565b600060ff8516825260606020830152613e176060830185613567565b9050826040830152949350505050565b60405181810167ffffffffffffffff81118282101715613e4657600080fd5b604052919050565b600067ffffffffffffffff821115613e64578081fd5b5060209081020190565b600067ffffffffffffffff821115613e84578081fd5b50601f01601f191660200190565b60005b83811015613ead578181015183820152602001613e95565b83811115611e3f5750506000910152565b6001600160a01b0381168114613ed357600080fd5b5056fea164736f6c6343000604000a", + Code: "608060405234801561001057600080fd5b50600436106103425760003560e01c80637e434d54116101b8578063ac43175111610104578063dcc6f156116100a2578063f9a2bbc71161007c578063f9a2bbc7146105de578063fc3e5908146105e6578063fc4333cd146105ee578063fd6a6879146105f657610342565b8063dcc6f156146105c6578063df8079e9146105ce578063e1c7392a146105d657610342565b8063c8509d81116100de578063c8509d8114610585578063c96be4cb14610598578063cc844b73146105ab578063dc927faf146105be57610342565b8063ac43175114610562578063c80d4b8f14610575578063c81b16621461057d57610342565b80639f804f5f11610171578063aa82dce11161014b578063aa82dce114610542578063aad560631461054a578063ab51bb9614610552578063ac0af6291461055a57610342565b80639f804f5f1461052a578063a1a11bf514610532578063a78abc161461053a57610342565b80637e434d54146104e45780638256ace6146104ec578063831d65d1146104f457806396713da9146105075780639dc092621461050f5780639e89ded81461051757610342565b8063493279b11161029257806362b72cf511610230578063718a8aa81161020a578063718a8aa8146104c457806375d47a0a146104cc5780637912a65d146104d45780637942fd05146104dc57610342565b806362b72cf5146104ac5780636e47b482146104b457806370fd5bad146104bc57610342565b806351b4dce31161026c57806351b4dce31461048157806351e8067214610489578063567a372d146104915780635bfb49901461049957610342565b8063493279b11461045c5780634bf6c8821461047157806350055f901461047957610342565b806328087028116102ff57806337c8dab9116102d957806337c8dab914610416578063389f4f71146104375780633dffc3871461043f57806343756e5c1461045457610342565b806328087028146103e65780633306ccca146103ee57806335aa2e441461040357610342565b80630bee7a67146103475780630e2374a5146103655780631182b8751461037a57806322d1e80b1461039a57806323bac5a2146103af57806327962118146103d1575b600080fd5b61034f6105fe565b60405161035c9190613e4e565b60405180910390f35b61036d610603565b60405161035c919061362c565b61038d610388366004613562565b610609565b60405161035c9190613664565b6103a261066f565b60405161035c9190613659565b6103c26103bd366004613279565b610678565b60405161035c93929190613e36565b6103e46103df3660046133bf565b61069b565b005b61036d610ac2565b6103f6610ac8565b60405161035c9190613dfe565b61036d610411366004613532565b610acd565b610429610424366004613279565b610af4565b60405161035c929190613e28565b6103f6610b4b565b610447610b51565b60405161035c9190613e5f565b61036d610b56565b610464610b5c565b60405161035c9190613def565b610447610b62565b6103f6610b67565b61036d610b6d565b61036d610b73565b6103f6610b79565b6103e46104a7366004613279565b610b7f565b6103f6610c2a565b61036d610c30565b610447610c36565b610447610c3b565b61036d610c40565b6103f6610c46565b610447610c4b565b61036d610c50565b610429610c56565b6103e4610502366004613562565b610c60565b610447610d73565b61036d610d78565b6103e46105253660046132b1565b610d7e565b6103f6610dad565b61036d610db3565b6103a2610db9565b61036d610dc2565b61036d610dc8565b61034f610dce565b6103f6610dd3565b6103e4610570366004613416565b610dd8565b6103f6611374565b61036d611379565b6103e4610593366004613562565b61137f565b6103e46105a6366004613279565b6113f0565b6103e46105b936600461347f565b611871565b61036d611eb8565b6103f6611ebe565b61036d611ec3565b6103e4611ec9565b61036d611f16565b610447611f1c565b6103e4611f21565b61036d61236a565b606481565b61200181565b606033612000146106355760405162461bcd60e51b815260040161062c90613c92565b60405180910390fd5b60005460ff166106575760405162461bcd60e51b815260040161062c90613738565b60405162461bcd60e51b815260040161062c90613d83565b60075460ff1681565b600260208190526000918252604090912080546001820154919092015460ff1683565b60005460ff166106bd5760405162461bcd60e51b815260040161062c90613738565b6006546106ca5760146006555b8151158015906106da5750805115155b6106f65760405162461bcd60e51b815260040161062c90613bf0565b60408051600380825260808201909252606091816020015b606081526020019060019003908161070e5790505090506107306102ca612370565b8160008151811061073d57fe5b60200260200101819052506107518361238b565b8160018151811061075e57fe5b60200260200101819052506107728261238b565b8160028151811061077f57fe5b60200260200101819052506060610795826123e1565b60408051603480825260608281019093529293509091602082018180368337019050509050815160346020830182602086016068600019fa6107d657600080fd5b506014810151603482015160405163436aa28360e11b8152600090612002906386d545069061080990869060040161362c565b60206040518083038186803b15801561082157600080fd5b505afa158015610835573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108599190613295565b6001600160a01b031614156108805760405162461bcd60e51b815260040161062c90613708565b43600854820110156108a45760405162461bcd60e51b815260040161062c906136a9565b60606110006001600160a01b0316633b071dcc6040518163ffffffff1660e01b815260040160006040518083038186803b1580156108e157600080fd5b505afa1580156108f5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261091d91908101906132dc565b50905060005b8151811015610a605781818151811061093857fe5b60200260200101516001600160a01b0316846001600160a01b03161415610a58576006546040516309a99b4f60e41b815260646110028031909302049190639a99b4f09061098c9033908590600401613640565b602060405180830381600087803b1580156109a657600080fd5b505af11580156109ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109de919061354a565b506110006001600160a01b03166335409f7f8484815181106109fc57fe5b60200260200101516040518263ffffffff1660e01b8152600401610a20919061362c565b600060405180830381600087803b158015610a3a57600080fd5b505af1158015610a4e573d6000803e3d6000fd5b5050505050610a60565b600101610923565b50604051631871f7d960e31b81526120029063c38fbec890610a8690869060040161362c565b600060405180830381600087803b158015610aa057600080fd5b505af1158015610ab4573d6000803e3d6000fd5b505050505050505050505050565b61200581565b603c81565b60018181548110610ada57fe5b6000918252602090912001546001600160a01b0316905081565b600080610aff613060565b5050506001600160a01b0316600090815260026020818152604092839020835160608101855281548082526001830154938201849052919093015460ff16151592909301919091529091565b60055481565b600181565b61100181565b6102ca81565b600881565b60065481565b61200681565b61200081565b60045481565b3361100014610ba05760405162461bcd60e51b815260040161062c9061397b565b60005460ff16610bc25760405162461bcd60e51b815260040161062c90613738565b61200063f7a251d7600b610bd584612472565b60006040518463ffffffff1660e01b8152600401610bf593929190613e6d565b600060405180830381600087803b158015610c0f57600080fd5b505af1158015610c23573d6000803e3d6000fd5b5050505050565b60035481565b61100581565b600281565b601081565b61100881565b600581565b600b81565b61200381565b6004546005549091565b3361200014610c815760405162461bcd60e51b815260040161062c90613c92565b60005460ff16610ca35760405162461bcd60e51b815260040161062c90613738565b610cab613083565b6000610cec84848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061253c92505050565b915091508015610d335781516040517f7f0956d47419b9525356e7111652b653b530ec6f5096dccc04589bc38e62996791610d2691613e4e565b60405180910390a1610c23565b81516040517f7d45f62d17443dd4547bca8a8112c60e2385669318dc300ec61a5d2492f262e791610d6391613e4e565b60405180910390a150505b505050565b600981565b61100781565b3361100014610d9f5760405162461bcd60e51b815260040161062c9061397b565b610da982826125bc565b5050565b60085481565b61100681565b60005460ff1681565b61200281565b61300081565b600081565b600481565b60005460ff16610dfa5760405162461bcd60e51b815260040161062c90613738565b3361100714610e1b5760405162461bcd60e51b815260040161062c90613adf565b610e8684848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260148152731b5a5cd9195b59585b9bdc951a1c995cda1bdb1960621b602082015291506127939050565b15610f215760208114610eab5760405162461bcd60e51b815260040161062c90613907565b604080516020601f8401819004810282018101909252828152600091610ee9918585808385018382808284376000920191909152506127ed92505050565b905060018110158015610efd575060055481105b610f195760405162461bcd60e51b815260040161062c90613c4d565b600455611331565b610f8784848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600f81526e19995b1bdb9e551a1c995cda1bdb19608a1b602082015291506127939050565b156110235760208114610fac5760405162461bcd60e51b815260040161062c90613b2d565b604080516020601f8401819004810282018101909252828152600091610fea918585808385018382808284376000920191909152506127ed92505050565b90506103e88111158015610fff575060045481115b61101b5760405162461bcd60e51b815260040161062c906137f1565b600555611331565b61109084848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601681527566656c6f6e79536c617368526577617264526174696f60501b602082015291506127939050565b1561112a57602081146110b55760405162461bcd60e51b815260040161062c90613a67565b604080516020601f84018190048102820181019092528281526000916110f3918585808385018382808284376000920191909152506127ed92505050565b9050600a81101580156111065750606481105b6111225760405162461bcd60e51b815260040161062c90613b6f565b600655611331565b61119e84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601881527f656e61626c654d616c6963696f7573566f7465536c6173680000000000000000602082015291506127939050565b1561121557602081146111c35760405162461bcd60e51b815260040161062c90613826565b604080516020601f84018190048102820181019092528281526111ff91908484808385018382808284376000920191909152506127f292505050565b6007805460ff1916911515919091179055611331565b61127c84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601081526f66656c6f6e79536c61736853636f706560801b602082015291506127939050565b1561131957602081146112a15760405162461bcd60e51b815260040161062c906139f6565b604080516020601f84018190048102820181019092528281526000916112df918585808385018382808284376000920191909152506127ed92505050565b905061708081101580156112f55750620d2f0081105b6113115760405162461bcd60e51b815260040161062c9061376f565b600855611331565b60405162461bcd60e51b815260040161062c90613d2e565b7f6cdb0ac70ab7f2e2d035cca5be60d89906f2dede7648ddbd7402189c1eeed17a848484846040516113669493929190613677565b60405180910390a150505050565b600a81565b61100281565b33612000146113a05760405162461bcd60e51b815260040161062c90613c92565b60005460ff166113c25760405162461bcd60e51b815260040161062c90613738565b6040517f07db600eebe2ac176be8dcebad61858c245a4961bb32ca2aa3d159b09aa0810e90600090a1505050565b33411461140f5760405162461bcd60e51b815260040161062c90613ce1565b60005460ff166114315760405162461bcd60e51b815260040161062c90613738565b60035443116114525760405162461bcd60e51b815260040161062c90613dba565b3a156114705760405162461bcd60e51b815260040161062c90613a39565b60405163155853f360e21b8152611000906355614fcc9061149590849060040161362c565b60206040518083038186803b1580156114ad57600080fd5b505afa1580156114c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114e5919061339f565b6114ee5761186a565b6114f6613060565b506001600160a01b0381166000908152600260208181526040928390208351606081018552815481526001820154928101929092529091015460ff1615801592820192909252906115515760208101805160010190526115aa565b60016040820181905260208201819052805480820182556000919091527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180546001600160a01b0319166001600160a01b0384161790555b4381526005546020820151816115bc57fe5b0661179857600060208201526040516335409f7f60e01b8152611000906335409f7f906115ed90859060040161362c565b600060405180830381600087803b15801561160757600080fd5b505af115801561161b573d6000803e3d6000fd5b505060405163436aa28360e11b81526000925061200291506386d545069061164790869060040161362c565b60206040518083038186803b15801561165f57600080fd5b505afa158015611673573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116979190613295565b6001600160a01b0316146116b8576116b38282602001516125bc565b611793565b61200063f7a251d7600b6116cb85612472565b60006040518463ffffffff1660e01b81526004016116eb93929190613e6d565b600060405180830381600087803b15801561170557600080fd5b505af1925050508015611716575060015b611793573d808015611744576040519150601f19603f3d011682016040523d82523d6000602084013e611749565b606091505b50826001600160a01b03167fd7bc86ff5d08c8ab043edec743302aba2520e6635172a428bc956721db9e2d1c836020015183604051611789929190613e07565b60405180910390a2505b611804565b6004548160200151816117a757fe5b06611804576040516375abf10160e11b81526110009063eb57e202906117d190859060040161362c565b600060405180830381600087803b1580156117eb57600080fd5b505af11580156117ff573d6000803e3d6000fd5b505050505b6001600160a01b0382166000818152600260208181526040808420865181559186015160018301558581015191909201805460ff1916911515919091179055517fddb6012116e51abf5436d956a4f0ebd927e92c576ff96d7918290c8782291e3e9190a2505b5043600355565b60005460ff166118935760405162461bcd60e51b815260040161062c90613738565b60075460ff166118b55760405162461bcd60e51b815260040161062c906136d3565b6006546118c25760146006555b6008546118cf57603c6008555b6008548151604001514391011180156118f357504360085482602001516040015101115b61190f5760405162461bcd60e51b815260040161062c90613d55565b80602001516020015181600001516020015114801561193d5750806020015160600151816000015160600151145b1561195a5760405162461bcd60e51b815260040161062c9061394e565b8051604081015190511080156119795750602081015160408101519051105b6119955760405162461bcd60e51b815260040161062c906138d0565b6020810151518151511080156119ba5750806000015160400151816020015160400151105b806119e557508051516020820151511080156119e55750806020015160400151816000015160400151105b806119ff5750806020015160400151816000015160400151145b611a1b5760405162461bcd60e51b815260040161062c906137ba565b604080820151905163ea321e4960e01b81526110009163ea321e4991611a449190600401613664565b60206040518083038186803b158015611a5c57600080fd5b505afa158015611a70573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a94919061339f565b611ab05760405162461bcd60e51b815260040161062c90613ab0565b611ac28160000151826040015161281a565b8015611adb5750611adb8160200151826040015161281a565b611af75760405162461bcd60e51b815260040161062c90613871565b6060806110006001600160a01b0316633b071dcc6040518163ffffffff1660e01b815260040160006040518083038186803b158015611b3557600080fd5b505afa158015611b49573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611b7191908101906132dc565b9150915060005b8151811015611cac57611ba2828281518110611b9057fe5b602002602001015185604001516129f2565b15611ca4576006546040516213929d60e11b8152606461100280319093020491906227253a90611bd89033908590600401613640565b602060405180830381600087803b158015611bf257600080fd5b505af1158015611c06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c2a919061354a565b506110006001600160a01b03166335409f7f858481518110611c4857fe5b60200260200101516040518263ffffffff1660e01b8152600401611c6c919061362c565b600060405180830381600087803b158015611c8657600080fd5b505af1158015611c9a573d6000803e3d6000fd5b5050505050611cac565b600101611b78565b5060408084015190516317b4f35360e01b8152600091612002916317b4f35391611cd891600401613664565b60206040518083038186803b158015611cf057600080fd5b505afa158015611d04573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d289190613295565b6001600160a01b031614611d96576040808401519051630e9fbf5160e01b815261200291630e9fbf5191611d5f9190600401613664565b600060405180830381600087803b158015611d7957600080fd5b505af1158015611d8d573d6000803e3d6000fd5b50505050610d6e565b6000611da784604001516000612a56565b90506120006001600160a01b031663f7a251d7600b611dc98760400151612a72565b60006040518463ffffffff1660e01b8152600401611de993929190613e6d565b600060405180830381600087803b158015611e0357600080fd5b505af1925050508015611e14575060015b611e86573d808015611e42576040519150601f19603f3d011682016040523d82523d6000602084013e611e47565b606091505b50817fd58d1183100bd0932c0588f31c4205d6bc6168909765a96c41adbed3115f362882604051611e789190613664565b60405180910390a250611eb2565b60405181907f7b78aadacff901d8b63d0dba4f86283d4db8aef27f9ed70413dd860f1c9532b690600090a25b50505050565b61100381565b601481565b61200481565b60005460ff1615611eec5760405162461bcd60e51b815260040161062c90613bb9565b60056004819055600a905560078054600160ff199182168117909255600080549091169091179055565b61100081565b600381565b3361100014611f425760405162461bcd60e51b815260040161062c9061397b565b60005460ff16611f645760405162461bcd60e51b815260040161062c90613738565b600154611f7057612368565b600154600090600019015b80821161233c576000805b8284101561209f57611f96613060565b6002600060018781548110611fa757fe5b60009182526020808320909101546001600160a01b0316835282810193909352604091820190208151606081018352815481526001820154938101939093526002015460ff1615159082015260055490915060049004816020015111156120895760046005548161201457fe5b0481602001510381602001818152505080600260006001888154811061203657fe5b6000918252602080832091909101546001600160a01b0316835282810193909352604091820190208351815591830151600183015591909101516002909101805460ff1916911515919091179055612093565b600192505061209f565b50836001019350611f86565b828411612236576120ae613060565b60026000600186815481106120bf57fe5b60009182526020808320909101546001600160a01b0316835282810193909352604091820190208151606081018352815481526001820154938101939093526002015460ff1615159082015260055490915060049004816020015111156121a75760046005548161212c57fe5b0481602001510381602001818152505080600260006001878154811061214e57fe5b6000918252602080832091909101546001600160a01b03168352828101939093526040918201902083518155918301516001808401919091559201516002909101805460ff191691151591909117905591506122369050565b60026000600186815481106121b857fe5b60009182526020808320909101546001600160a01b031683528201929092526040018120818155600181810192909255600201805460ff191690558054806121fc57fe5b600082815260209020810160001990810180546001600160a01b0319169055019055836122295750612236565b506000199092019161209f565b8180156122405750805b1561231f57600260006001868154811061225657fe5b60009182526020808320909101546001600160a01b031683528201929092526040018120818155600181810192909255600201805460ff1916905580548490811061229d57fe5b600091825260209091200154600180546001600160a01b0390921691869081106122c357fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060018054806122fc57fe5b600082815260209020810160001990810180546001600160a01b03191690550190555b8261232b57505061233c565b505060019091019060001901611f7b565b6040517fcfdb3b6ccaeccbdc68be3c59c840e3b3c90f0a7c491f5fff1cf56cfda200dd9c90600090a150505b565b61100481565b606061238361237e83612aad565b61238b565b90505b919050565b6060815160011480156123bd5750607f60f81b826000815181106123ab57fe5b01602001516001600160f81b03191611155b156123c9575080612386565b6123836123db8351608060ff16612b93565b83612c65565b60608151600014156124025750604080516000815260208101909152612386565b60608260008151811061241157fe5b602002602001015190506000600190505b8351811015612452576124488285838151811061243b57fe5b6020026020010151612c65565b9150600101612422565b5061246b612465825160c060ff16612b93565b82612c65565b9392505050565b60408051600480825260a08201909252606091829190816020015b606081526020019060019003908161248d5790505090506124b6836001600160a01b0316612ce2565b816000815181106124c357fe5b60200260200101819052506124d743612370565b816001815181106124e457fe5b60209081029190910101526124fa6102ca612370565b8160028151811061250757fe5b602002602001018190525061251b42612370565b8160038151811061252857fe5b602002602001018190525061246b816123e1565b612544613083565b600061254e613083565b612556613095565b61256761256286612d05565b612d2a565b90506000805b61257683612d74565b156125af57806125a25761259161258c84612d95565b612de3565b63ffffffff168452600191506125a7565b6125af565b60010161256d565b5091935090915050915091565b6040516375cc7d8960e01b8152612002906375cc7d89906125e190859060040161362c565b600060405180830381600087803b1580156125fb57600080fd5b505af192505050801561260c575060015b610da9576040516000815260443d1015612628575060006126c5565b60046000803e60005160e01c6308c379a081146126495760009150506126c5565b60043d036004833e81513d602482011167ffffffffffffffff82111715612675576000925050506126c5565b808301805167ffffffffffffffff8111156126975760009450505050506126c5565b8060208301013d86018111156126b5576000955050505050506126c5565b601f01601f191660405250925050505b806126d05750612719565b826001600160a01b03167fd7bc86ff5d08c8ab043edec743302aba2520e6635172a428bc956721db9e2d1c838360405161270b929190613e07565b60405180910390a25061278e565b3d808015612743576040519150601f19603f3d011682016040523d82523d6000602084013e612748565b606091505b50826001600160a01b03167fd7bc86ff5d08c8ab043edec743302aba2520e6635172a428bc956721db9e2d1c8383604051612784929190613e07565b60405180910390a2505b610da9565b6000816040516020016127a69190613610565b60405160208183030381529060405280519060200120836040516020016127cd9190613610565b604051602081830303815290604052805190602001201490505b92915050565b015190565b8082015160009060ff81161561280c576001915081612812565b60009150815b505092915050565b60408051600480825260a0820190925260009160609190816020015b606081526020019060019003908161283657505060408051602080825281830190925291925060609190808201818036833701905050905061287b8560000151612370565b8260008151811061288857fe5b60200260200101819052506128a36020866020015183612e65565b6128ac8161238b565b826001815181106128b957fe5b60200260200101819052506128d18560400151612370565b826002815181106128de57fe5b60200260200101819052506128f96020866060015183612e65565b6129028161238b565b8260038151811061290f57fe5b60200260200101819052506129356020612928846123e1565b8051906020012083612e65565b6040805160b080825260e08201909252606091602082018180368337019050509050612965818360006020612e75565b61297781876080015160206060612e75565b612985818660806030612e75565b604080516001808252818301909252606091602082018180368337019050509050815160016020830182602086016066600019fa6129c257600080fd5b5060016129d0826000612ec8565b60ff16146129e55760009450505050506127e7565b5060019695505050505050565b815181516000916001918114808314612a0e5760009250612a4c565b600160208701838101602088015b600284838510011415612a47578051835114612a3b5760009650600093505b60209283019201612a1c565b505050505b5090949350505050565b60008160200183511015612a6957600080fd5b50016020015190565b60408051600480825260a08201909252606091829190816020015b6060815260200190600190039081612a8d5790505090506124b68361238b565b604080516020808252818301909252606091829190602082018180368337505050602081018490529050600067ffffffffffffffff198416612af157506018612b15565b6fffffffffffffffffffffffffffffffff198416612b1157506010612b15565b5060005b6020811015612b4b57818181518110612b2a57fe5b01602001516001600160f81b03191615612b4357612b4b565b600101612b15565b60008160200390506060816040519080825280601f01601f191660200182016040528015612b80576020820181803683370190505b5080830196909652508452509192915050565b6060680100000000000000008310612bbd5760405162461bcd60e51b815260040161062c906138a8565b60408051600180825281830190925260609160208201818036833701905050905060378411612c175782840160f81b81600081518110612bf957fe5b60200101906001600160f81b031916908160001a90535090506127e7565b6060612c2285612aad565b90508381510160370160f81b82600081518110612c3b57fe5b60200101906001600160f81b031916908160001a905350612c5c8282612c65565b95945050505050565b6060806040519050835180825260208201818101602087015b81831015612c96578051835260209283019201612c7e565b50855184518101855292509050808201602086015b81831015612cc3578051835260209283019201612cab565b508651929092011591909101601f01601f191660405250905092915050565b60408051600560a21b831860148201526034810190915260609061246b8161238b565b612d0d6130b5565b506040805180820190915281518152602082810190820152919050565b612d32613095565b612d3b82612ee4565b612d4457600080fd5b6000612d538360200151612f1e565b60208085015160408051808201909152868152920190820152915050919050565b6000612d7e6130b5565b505080518051602091820151919092015191011190565b612d9d6130b5565b612da682612d74565b612daf57600080fd5b60208201516000612dbf82612f81565b80830160209586015260408051808201909152908152938401919091525090919050565b805160009015801590612df857508151602110155b612e0157600080fd5b6000612e108360200151612f1e565b90508083600001511015612e365760405162461bcd60e51b815260040161062c90613c16565b825160208085015183018051928490039291831015612e5c57826020036101000a820491505b50949350505050565b9091018181526020918201910152565b60005b81811015610c2357838181518110612e8c57fe5b602001015160f81c60f81b858480600101955081518110612ea957fe5b60200101906001600160f81b031916908160001a905350600101612e78565b60008160010183511015612edb57600080fd5b50016001015190565b8051600090612ef557506000612386565b6020820151805160001a9060c0821015612f1457600092505050612386565b5060019392505050565b8051600090811a6080811015612f38576000915050612386565b60b8811080612f53575060c08110801590612f53575060f881105b15612f62576001915050612386565b60c0811015612f765760b519019050612386565b60f519019050612386565b80516000908190811a6080811015612f9c5760019150613059565b60b8811015612fb157607e1981019150613059565b60c081101561300257600060b78203600186019550806020036101000a865104915060018101820193505080831015612ffc5760405162461bcd60e51b815260040161062c906139cb565b50613059565b60f88110156130175760be1981019150613059565b600060f78203600186019550806020036101000a8651049150600181018201935050808310156128125760405162461bcd60e51b815260040161062c906139cb565b5092915050565b604051806060016040528060008152602001600081526020016000151581525090565b60408051602081019091526000815290565b60405180604001604052806130a86130b5565b8152602001600081525090565b604051806040016040528060008152602001600081525090565b600082601f8301126130df578081fd5b81516130f26130ed82613ec0565b613e99565b818152915060208083019084810160005b84811015613168578151870188603f82011261311e57600080fd5b8381015161312e6130ed82613ee0565b81815260408b8184860101111561314457600080fd5b61315383888401838701613f04565b50865250509282019290820190600101613103565b505050505092915050565b60008083601f840112613184578182fd5b50813567ffffffffffffffff81111561319b578182fd5b6020830191508360208285010111156131b357600080fd5b9250929050565b600082601f8301126131ca578081fd5b81356131d86130ed82613ee0565b91508082528360208285010111156131ef57600080fd5b8060208401602084013760009082016020015292915050565b600060a08284031215613219578081fd5b61322360a0613e99565b905081358152602082013560208201526040820135604082015260608201356060820152608082013567ffffffffffffffff81111561326157600080fd5b61326d848285016131ba565b60808301525092915050565b60006020828403121561328a578081fd5b813561246b81613f30565b6000602082840312156132a6578081fd5b815161246b81613f30565b600080604083850312156132c3578081fd5b82356132ce81613f30565b946020939093013593505050565b600080604083850312156132ee578182fd5b825167ffffffffffffffff80821115613305578384fd5b81850186601f820112613316578485fd5b805192506133266130ed84613ec0565b80848252602080830192508084018a828389028701011115613346578889fd5b8894505b8685101561337157805161335d81613f30565b84526001949094019392810192810161334a565b508801519096509350505080821115613388578283fd5b50613395858286016130cf565b9150509250929050565b6000602082840312156133b0578081fd5b8151801515811461246b578182fd5b600080604083850312156133d1578182fd5b823567ffffffffffffffff808211156133e8578384fd5b6133f4868387016131ba565b93506020850135915080821115613409578283fd5b50613395858286016131ba565b6000806000806040858703121561342b578182fd5b843567ffffffffffffffff80821115613442578384fd5b61344e88838901613173565b90965094506020870135915080821115613466578384fd5b5061347387828801613173565b95989497509550505050565b600060208284031215613490578081fd5b813567ffffffffffffffff808211156134a7578283fd5b818401606081870312156134b9578384fd5b6134c36060613e99565b92508035828111156134d3578485fd5b6134df87828401613208565b8452506020810135828111156134f3578485fd5b6134ff87828401613208565b602085015250604081013582811115613516578485fd5b613522878284016131ba565b6040850152509195945050505050565b600060208284031215613543578081fd5b5035919050565b60006020828403121561355b578081fd5b5051919050565b600080600060408486031215613576578081fd5b833560ff81168114613586578182fd5b9250602084013567ffffffffffffffff8111156135a1578182fd5b6135ad86828701613173565b9497909650939450505050565b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b600081518084526135fc816020860160208601613f04565b601f01601f19169290920160200192915050565b60008251613622818460208701613f04565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b901515815260200190565b60006020825261246b60208301846135e4565b60006040825261368b6040830186886135ba565b828103602084015261369e8185876135ba565b979650505050505050565b60208082526010908201526f195d9a59195b98d9481d1bdbc81bdb1960821b604082015260600190565b6020808252818101527f6d616c6963696f757320766f746520736c617368206e6f7420656e61626c6564604082015260600190565b6020808252601690820152751d985b1a59185d1bdc881b9bdd081b5a59dc985d195960521b604082015260600190565b60208082526019908201527f74686520636f6e7472616374206e6f7420696e69742079657400000000000000604082015260600190565b6020808252602b908201527f746865206d616c6963696f757320766f746520736c6173682073636f7065206f60408201526a7574206f662072616e676560a81b606082015260800190565b6020808252601a908201527f6e6f2076696f6c6174696f6e206f6620766f74652072756c6573000000000000604082015260600190565b6020808252818101527f7468652066656c6f6e795468726573686f6c64206f7574206f662072616e6765604082015260600190565b6020808252602b908201527f6c656e677468206f6620656e61626c654d616c6963696f7573566f7465536c6160408201526a0e6d040dad2e6dac2e8c6d60ab1b606082015260800190565b60208082526017908201527f766572696679207369676e6174757265206661696c6564000000000000000000604082015260600190565b6020808252600e908201526d696e70757420746f6f206c6f6e6760901b604082015260600190565b60208082526019908201527f7372634e756d20626967676572207468616e207461724e756d00000000000000604082015260600190565b60208082526027908201527f6c656e677468206f66206d697364656d65616e6f725468726573686f6c64206d6040820152660d2e6dac2e8c6d60cb1b606082015260800190565b60208082526013908201527274776f206964656e746963616c20766f74657360681b604082015260600190565b60208082526030908201527f746865206d6573736167652073656e646572206d7573742062652076616c696460408201526f185d1bdc94d95d0818dbdb9d1c9858dd60821b606082015260800190565b6020808252601190820152706164646974696f6e206f766572666c6f7760781b604082015260600190565b60208082526023908201527f6c656e677468206f662066656c6f6e79536c61736853636f7065206d69736d616040820152620e8c6d60eb1b606082015260800190565b6020808252601490820152736761737072696365206973206e6f74207a65726f60601b604082015260600190565b60208082526029908201527f6c656e677468206f662066656c6f6e79536c617368526577617264526174696f604082015268040dad2e6dac2e8c6d60bb1b606082015260800190565b6020808252601590820152741d9bdd195059191c881a5cc81b9bdd08199bdd5b99605a1b604082015260600190565b6020808252602e908201527f746865206d6573736167652073656e646572206d75737420626520676f76657260408201526d1b985b98d94818dbdb9d1c9858dd60921b606082015260800190565b60208082526022908201527f6c656e677468206f662066656c6f6e795468726573686f6c64206d69736d61746040820152610c6d60f31b606082015260800190565b6020808252602a908201527f7468652066656c6f6e7920736c6173682072657761726420726174696f206f7560408201526974206f662072616e676560b01b606082015260800190565b60208082526019908201527f74686520636f6e747261637420616c726561647920696e697400000000000000604082015260600190565b6020808252600c908201526b32b6b83a3c903432b0b232b960a11b604082015260600190565b6020808252601a908201527f6c656e677468206973206c657373207468616e206f6666736574000000000000604082015260600190565b60208082526025908201527f746865206d697364656d65616e6f725468726573686f6c64206f7574206f662060408201526472616e676560d81b606082015260800190565b6020808252602f908201527f746865206d6573736167652073656e646572206d7573742062652063726f737360408201526e0818da185a5b8818dbdb9d1c9858dd608a1b606082015260800190565b6020808252602d908201527f746865206d6573736167652073656e646572206d75737420626520746865206260408201526c3637b1b590383937b23ab1b2b960991b606082015260800190565b6020808252600d908201526c756e6b6e6f776e20706172616d60981b604082015260600190565b6020808252601490820152731d185c99d95d08189b1bd8dac81d1bdbc81bdb1960621b604082015260600190565b6020808252601e908201527f7265636569766520756e65787065637465642073796e207061636b6167650000604082015260600190565b6020808252818101527f63616e206e6f7420736c61736820747769636520696e206f6e6520626c6f636b604082015260600190565b61ffff91909116815260200190565b90815260200190565b600083825260406020830152613e2060408301846135e4565b949350505050565b918252602082015260400190565b92835260208301919091521515604082015260600190565b63ffffffff91909116815260200190565b60ff91909116815260200190565b600060ff8516825260606020830152613e8960608301856135e4565b9050826040830152949350505050565b60405181810167ffffffffffffffff81118282101715613eb857600080fd5b604052919050565b600067ffffffffffffffff821115613ed6578081fd5b5060209081020190565b600067ffffffffffffffff821115613ef6578081fd5b50601f01601f191660200190565b60005b83811015613f1f578181015183820152602001613f07565b83811115611eb25750506000910152565b6001600160a01b0381168114613f4557600080fd5b5056fea164736f6c6343000604000a", }, { ContractAddr: common.HexToAddress(StakingContract), CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/cfc0bd1127186a917ddc38fd38d22903034d3f0b", - Code: "6080604052600436106103a65760003560e01c8063718a8aa8116101e7578063b88a802f1161010d578063dc927faf116100a0578063f9a2bbc71161006f578063f9a2bbc714610ca0578063fa03f79714610cb5578063fc3e590814610692578063fd6a687914610cca576103ad565b8063dc927faf14610c1c578063df8079e914610c31578063edc1a5b014610c46578063f45fd80b14610c5b576103ad565b8063c81b1662116100dc578063c81b166214610b47578063c8509d8114610b5c578063d61b9b9314610be1578063d7ecfcb61461083a576103ad565b8063b88a802f14610acd578063baaafd3b14610ae2578063bf8546ca14610af7578063c2117d8214610b32576103ad565b80639dc0926211610185578063aad5606311610154578063aad56063146109c3578063ab51bb96146109d8578063ac431751146109ed578063b14315df14610ab8576103ad565b80639dc092621461095b578063a1a11bf514610970578063a78abc1614610985578063aa82dce1146109ae576103ad565b80637942fd05116101c15780637942fd05146108ac578063831d65d1146108c157806392b888a41461063e57806396713da914610946576103ad565b8063718a8aa81461084f57806375aca5931461086457806375d47a0a14610897576103ad565b8063413d9c3a116102cc5780635d17c8bd1161026a5780636bd8f804116102395780636bd8f804146107bc5780636e47b482146107f25780636fb7f7eb1461080757806370fd5bad1461083a576103ad565b80635d17c8bd146107685780635d499b1b1461077d57806362b171d21461079257806369b635b6146107a7576103ad565b80634bf6c882116102a65780634bf6c882146106fd5780634d99dd161461071257806351e806721461073e578063552aaf9314610753576103ad565b8063413d9c3a146106a757806343756e5c146106bc578063493279b1146106d1576103ad565b806311fe9ec611610344578063333ad3e711610313578063333ad3e71461066857806334c433541461067d5780633dffc3871461063e5780633fdfa7e414610692576103ad565b806311fe9ec6146105e0578063151817e31461061357806317c9efb01461063e5780632fdeb11114610653576103ad565b80630bee7a67116103805780630bee7a67146104725780630c795715146104a05780630e2374a5146104b55780631182b875146104e6576103ad565b8063026e402b146103b257806302985992146103e0578063047636d114610407576103ad565b366103ad57005b600080fd5b6103de600480360360408110156103c857600080fd5b506001600160a01b038135169060200135610cdf565b005b3480156103ec57600080fd5b506103f5610d1c565b60408051918252519081900360200190f35b34801561041357600080fd5b5061043a6004803603602081101561042a57600080fd5b50356001600160a01b0316610d22565b6040518082606080838360005b8381101561045f578181015183820152602001610447565b5050505090500191505060405180910390f35b34801561047e57600080fd5b50610487610d76565b6040805163ffffffff9092168252519081900360200190f35b3480156104ac57600080fd5b506103f5610d7b565b3480156104c157600080fd5b506104ca610d81565b604080516001600160a01b039092168252519081900360200190f35b3480156104f257600080fd5b5061056b6004803603604081101561050957600080fd5b60ff8235169190810190604081016020820135600160201b81111561052d57600080fd5b82018360208201111561053f57600080fd5b803590602001918460018302840111600160201b8311171561056057600080fd5b509092509050610d87565b6040805160208082528351818301528351919283929083019185019080838360005b838110156105a557818101518382015260200161058d565b50505050905090810190601f1680156105d25780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156105ec57600080fd5b506103f56004803603602081101561060357600080fd5b50356001600160a01b0316610f43565b34801561061f57600080fd5b50610628610f5e565b6040805160ff9092168252519081900360200190f35b34801561064a57600080fd5b50610628610f63565b34801561065f57600080fd5b506103f5610f68565b34801561067457600080fd5b50610487610f6e565b34801561068957600080fd5b506103f5610f73565b34801561069e57600080fd5b50610628610f7e565b3480156106b357600080fd5b506103f5610f83565b3480156106c857600080fd5b506104ca610f8a565b3480156106dd57600080fd5b506106e6610f90565b6040805161ffff9092168252519081900360200190f35b34801561070957600080fd5b50610628610f96565b6103de6004803603604081101561072857600080fd5b506001600160a01b038135169060200135610f9b565b34801561074a57600080fd5b506104ca6115c8565b34801561075f57600080fd5b506106286115ce565b34801561077457600080fd5b506103f56115d3565b34801561078957600080fd5b506103f56115d9565b34801561079e57600080fd5b506103f56115e2565b3480156107b357600080fd5b506103f5611782565b6103de600480360360608110156107d257600080fd5b506001600160a01b03813581169160208101359091169060400135610cdf565b3480156107fe57600080fd5b506104ca611788565b34801561081357600080fd5b506103f56004803603602081101561082a57600080fd5b50356001600160a01b031661178e565b34801561084657600080fd5b506106286117a9565b34801561085b57600080fd5b506106286117ae565b34801561087057600080fd5b506103f56004803603602081101561088757600080fd5b50356001600160a01b03166117b3565b3480156108a357600080fd5b506104ca6117ce565b3480156108b857600080fd5b506106286117d4565b3480156108cd57600080fd5b506103de600480360360408110156108e457600080fd5b60ff8235169190810190604081016020820135600160201b81111561090857600080fd5b82018360208201111561091a57600080fd5b803590602001918460018302840111600160201b8311171561093b57600080fd5b5090925090506117d9565b34801561095257600080fd5b50610628611aa1565b34801561096757600080fd5b506104ca611aa6565b34801561097c57600080fd5b506104ca611aac565b34801561099157600080fd5b5061099a611ab2565b604080519115158252519081900360200190f35b3480156109ba57600080fd5b506104ca611abb565b3480156109cf57600080fd5b506104ca611ac1565b3480156109e457600080fd5b506104876115ce565b3480156109f957600080fd5b506103de60048036036040811015610a1057600080fd5b810190602081018135600160201b811115610a2a57600080fd5b820183602082011115610a3c57600080fd5b803590602001918460018302840111600160201b83111715610a5d57600080fd5b919390929091602081019035600160201b811115610a7a57600080fd5b820183602082011115610a8c57600080fd5b803590602001918460018302840111600160201b83111715610aad57600080fd5b509092509050611ac7565b348015610ac457600080fd5b50610628612259565b348015610ad957600080fd5b506103f561225e565b348015610aee57600080fd5b506103f56123fb565b348015610b0357600080fd5b506103f560048036036040811015610b1a57600080fd5b506001600160a01b0381358116916020013516612406565b348015610b3e57600080fd5b506103f5612433565b348015610b5357600080fd5b506104ca612439565b348015610b6857600080fd5b506103de60048036036040811015610b7f57600080fd5b60ff8235169190810190604081016020820135600160201b811115610ba357600080fd5b820183602082011115610bb557600080fd5b803590602001918460018302840111600160201b83111715610bd657600080fd5b50909250905061243f565b348015610bed57600080fd5b506103f560048036036040811015610c0457600080fd5b506001600160a01b0381358116916020013516612662565b348015610c2857600080fd5b506104ca61268d565b348015610c3d57600080fd5b506104ca612693565b348015610c5257600080fd5b506103f5612699565b348015610c6757600080fd5b506103f560048036036060811015610c7e57600080fd5b506001600160a01b0381358116916020810135821691604090910135166126a6565b348015610cac57600080fd5b506104ca6126db565b348015610cc157600080fd5b506103f56126e1565b348015610cd657600080fd5b506104ca6126e7565b6040805162461bcd60e51b815260206004820152600d60248201526c1b9bdd081cdd5c1c1bdc9d1959609a1b604482015290519081900360640190fd5b60035481565b610d2a614622565b610d32614622565b6001600160a01b0383166000818152600b60209081526040808320548552838352600c82528083205485830152928252600d9052819020549082015290505b919050565b606481565b6108fc81565b61200181565b60603361200014610dc95760405162461bcd60e51b815260040180806020018281038252602f815260200180614805602f913960400191505060405180910390fd5b60005460ff16610e0c576638d7ea4c6800006001908155662386f26fc1000060025568056bc75e2d631000006003556108fc6011556000805460ff191690911790555b610e14614640565b610e5b610e5685858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506126ed92505050565b612712565b90506000610e70610e6b8361275c565b6127aa565b90506000606060ff831660041415610e9557610e8b84612861565b9092509050610eec565b60ff831660051415610eaa57610e8b84612a41565b6040805162461bcd60e51b8152602060048201526012602482015271756e6b6e6f776e206576656e74207479706560701b604482015290519081900360640190fd5b63ffffffff821615610f38576040805163ffffffff84168152905160ff8516917f391d6e5ea6ab6c49b9a0abb1782cae5def8d711f973b00c729658c0b2a80b31b919081900360200190a25b979650505050505050565b6001600160a01b031660009081526006602052604090205490565b600581565b600181565b60015481565b606581565b662386f26fc1000081565b600381565b620a8c0081565b61100181565b6102ca81565b600881565b60105460ff1660021415610fe7576040805162461bcd60e51b815260206004820152600e60248201526d4e6f2072652d656e7472616e637960901b604482015290519081900360640190fd5b6010805460ff19166002179055806402540be400340615801561100f57506402540be4008106155b611060576040805162461bcd60e51b815260206004820152601c60248201527f707265636973696f6e206c6f737320696e20636f6e76657273696f6e00000000604482015290519081900360640190fd5b60005460ff166110a3576638d7ea4c6800006001908155662386f26fc1000060025568056bc75e2d631000006003556108fc6011556000805460ff191690911790555b6001543410156110f1576040805162461bcd60e51b81526020600482015260146024820152736e6f7420656e6f7567682072656c61792066656560601b604482015290519081900360640190fd5b6003548210156111ac573360009081526005602090815260408083206001600160a01b03871684529091529020548214611163576040805162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a5908185b5bdd5b9d60921b604482015290519081900360640190fd5b60025482116111ac576040805162461bcd60e51b815260206004820152601060248201526f6e6f7420656e6f7567682066756e647360801b604482015290519081900360640190fd5b3360009081526007602090815260408083206001600160a01b0387168452909152902054421015611224576040805162461bcd60e51b815260206004820152601a60248201527f70656e64696e6720756e64656c65676174696f6e206578697374000000000000604482015290519081900360640190fd5b604080518082018252601081526f6e6f7420656e6f7567682066756e647360801b602080830191909152336000908152600582528381206001600160a01b03881682529091529182205461127f91859063ffffffff612c5d16565b905080156112c75760025481116112c75760405162461bcd60e51b81526004018080602001828103825260258152602001806147e06025913960400191505060405180910390fd5b60006112de846402540be40063ffffffff612cf416565b60025490915034906000906112fa90839063ffffffff612d3d16565b6040805160038082526080820190925291925060609190816020015b606081526020019060019003908161131657905050905061133633612d7f565b8160008151811061134357fe5b6020026020010181905250611360886001600160a01b0316612d7f565b8160018151811061136d57fe5b602002602001018190525061138184612da2565b8160028151811061138e57fe5b602002602001018190525060606113ae60026113a984612db5565b612e3f565b8051602080830191909120600f80546000908152600a845260408082209390935581546001908101909255338152600c90935291208054909101905590506113ff42620a8c0063ffffffff612ec516565b3360009081526007602090815260408083206001600160a01b038e16845290915290205561200063f7a251d7601083611443876402540be40063ffffffff612cf416565b6040518463ffffffff1660e01b8152600401808460ff1660ff16815260200180602001838152602001828103825284818151815260200191508051906020019080838360005b838110156114a1578181015183820152602001611489565b50505050905090810190601f1680156114ce5780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b1580156114ef57600080fd5b505af1158015611503573d6000803e3d6000fd5b5050604051611004925085156108fc02915085906000818181858888f19350505050158015611536573d6000803e3d6000fd5b506002546040516110029180156108fc02916000818181858888f19350505050158015611567573d6000803e3d6000fd5b50604080518981526020810185905281516001600160a01b038c169233927fdf0b6ac27f3f3bb31cee3dab0f4fe40cc19c6a3f8daaec52e06b261e58a12519929081900390910190a350506010805460ff1916600117905550505050505050565b61200081565b600081565b60025481565b6402540be40081565b60105460009060ff1660021415611631576040805162461bcd60e51b815260206004820152600e60248201526d4e6f2072652d656e7472616e637960901b604482015290519081900360640190fd5b506010805460ff191660021790553360009081526008602052604090205480611698576040805162461bcd60e51b81526020600482015260146024820152736e6f20756e64656c6567617465642066756e647360601b604482015290519081900360640190fd5b336000818152600860205260408082208290556011549051919291849084818181858888f193505050503d80600081146116ee576040519150601f19603f3d011682016040523d82523d6000602084013e6116f3565b606091505b505090508061173b576040805162461bcd60e51b815260206004820152600f60248201526e1d1c985b9cd9995c8819985a5b1959608a1b604482015290519081900360640190fd5b60408051838152905133917fc712d133b8d448221aaed2198ed1f0db6dfc860fb01bc3a630916fe6cbef946f919081900360200190a2506010805460ff1916600117905590565b60035490565b61100581565b6001600160a01b031660009081526004602052604090205490565b600281565b601081565b6001600160a01b031660009081526008602052604090205490565b61100881565b600b81565b33612000146118195760405162461bcd60e51b815260040180806020018281038252602f815260200180614805602f913960400191505060405180910390fd5b60005460ff1661185c576638d7ea4c6800006001908155662386f26fc1000060025568056bc75e2d631000006003556108fc6011556000805460ff191690911790555b611864614640565b6118a6610e5684848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506126ed92505050565b905060008060606000805b6118ba86612f1f565b1561192557806118d7576118d0610e6b8761275c565b945061191d565b80600114156118f3576118ec610e6b8761275c565b935061191d565b80600214156119185761190d6119088761275c565b612f40565b92506001915061191d565b611925565b6001016118b1565b8161196b576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b61197483612fb0565b6119b7576040805162461bcd60e51b815260206004820152600f60248201526e0eee4dedcce40e0c2c6d640d0c2e6d608b1b604482015290519081900360640190fd5b6119c3610e56846126ed565b955060006119d3610e6b8861275c565b90506119dd614640565b6119e688612f1f565b15611a0957611a02610e566119fd6119088b61275c565b6126ed565b9050611a4a565b6040805162461bcd60e51b8152602060048201526011602482015270656d7074792061636b207061636b61676560781b604482015290519081900360640190fd5b60ff821660011415611a6657611a61818888613004565b611a94565b60ff821660021415611a7d57611a618188886133bb565b60ff821660031415610eaa57611a61818888613688565b5050505050505050505050565b600981565b61100781565b61100681565b60005460ff1681565b61200281565b61300081565b60005460ff16611b1e576040805162461bcd60e51b815260206004820152601960248201527f74686520636f6e7472616374206e6f7420696e69742079657400000000000000604482015290519081900360640190fd5b3361100714611b5e5760405162461bcd60e51b815260040180806020018281038252602e815260200180614756602e913960400191505060405180910390fd5b611bbf84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600a81526972656c6179657246656560b01b602082015291506139ed9050565b15611d255760208114611c19576040805162461bcd60e51b815260206004820152601d60248201527f6c656e677468206f662072656c61796572466565206d69736d61746368000000604482015290519081900360640190fd5b604080516020601f8401819004810282018101909252828152600091611c5791858580838501838280828437600092019190915250613ad492505050565b90506003548110611c995760405162461bcd60e51b815260040180806020018281038252602e815260200180614784602e913960400191505060405180910390fd5b6002548111611cd95760405162461bcd60e51b815260040180806020018281038252602e8152602001806147b2602e913960400191505060405180910390fd5b6402540be400810615611d1d5760405162461bcd60e51b815260040180806020018281038252602c81526020018061472a602c913960400191505060405180910390fd5b6001556121c7565b611d8984848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600d81526c62534352656c6179657246656560981b602082015291506139ed9050565b15611eeb5760208114611de3576040805162461bcd60e51b815260206004820181905260248201527f6c656e677468206f662062534352656c61796572466565206d69736d61746368604482015290519081900360640190fd5b604080516020601f8401819004810282018101909252828152600091611e2191858580838501838280828437600092019190915250613ad492505050565b905080611e5f5760405162461bcd60e51b81526004018080602001828103825260228152602001806148346022913960400191505060405180910390fd5b6001548110611e9f5760405162461bcd60e51b815260040180806020018281038252602e8152602001806146aa602e913960400191505060405180910390fd5b6402540be400810615611ee35760405162461bcd60e51b815260040180806020018281038252602f81526020018061467b602f913960400191505060405180910390fd5b6002556121c7565b611f4f84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600d81526c36b4b72232b632b3b0ba34b7b760991b602082015291506139ed9050565b156120315760208114611fa9576040805162461bcd60e51b815260206004820181905260248201527f6c656e677468206f66206d696e44656c65676174696f6e206d69736d61746368604482015290519081900360640190fd5b604080516020601f8401819004810282018101909252828152600091611fe791858580838501838280828437600092019190915250613ad492505050565b905060015481116120295760405162461bcd60e51b81526004018080602001828103825260318152602001806146d86031913960400191505060405180910390fd5b6003556121c7565b61209384848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600b81526a7472616e7366657247617360a81b602082015291506139ed9050565b1561218a57602081146120ed576040805162461bcd60e51b815260206004820152601e60248201527f6c656e677468206f66207472616e73666572476173206d69736d617463680000604482015290519081900360640190fd5b604080516020601f840181900481028201810190925282815260009161212b91858580838501838280828437600092019190915250613ad492505050565b905060008111612182576040805162461bcd60e51b815260206004820152601e60248201527f746865207472616e736665724761732063616e6e6f74206265207a65726f0000604482015290519081900360640190fd5b6011556121c7565b6040805162461bcd60e51b815260206004820152600d60248201526c756e6b6e6f776e20706172616d60981b604482015290519081900360640190fd5b7f6cdb0ac70ab7f2e2d035cca5be60d89906f2dede7648ddbd7402189c1eeed17a848484846040518080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600083820152604051601f909101601f19169092018290039850909650505050505050a150505050565b600481565b60105460009060ff16600214156122ad576040805162461bcd60e51b815260206004820152600e60248201526d4e6f2072652d656e7472616e637960901b604482015290519081900360640190fd5b506010805460ff191660021790553360009081526006602052604090205480612311576040805162461bcd60e51b81526020600482015260116024820152701b9bc81c195b991a5b99c81c995dd85c99607a1b604482015290519081900360640190fd5b336000818152600660205260408082208290556011549051919291849084818181858888f193505050503d8060008114612367576040519150601f19603f3d011682016040523d82523d6000602084013e61236c565b606091505b50509050806123b4576040805162461bcd60e51b815260206004820152600f60248201526e1d1c985b9cd9995c8819985a5b1959608a1b604482015290519081900360640190fd5b60408051838152905133917f83b78188b13346b2ffb484da70d42ee27de7fbf9f2bd8045269e10ed643ccd76919081900360200190a2506010805460ff1916600117905590565b6638d7ea4c68000081565b6001600160a01b038083166000908152600760209081526040808320938516835292905220545b92915050565b60015490565b61100281565b336120001461247f5760405162461bcd60e51b815260040180806020018281038252602f815260200180614805602f913960400191505060405180910390fd5b60005460ff166124c2576638d7ea4c6800006001908155662386f26fc1000060025568056bc75e2d631000006003556108fc6011556000805460ff191690911790555b61250182828080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612fb092505050565b612544576040805162461bcd60e51b815260206004820152600f60248201526e0eee4dedcce40e0c2c6d640d0c2e6d608b1b604482015290519081900360640190fd5b61254c614640565b61258e610e5684848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506126ed92505050565b9050600061259e610e6b8361275c565b90506125a8614640565b6125b183612f1f565b156125cf576125c8610e566119fd6119088661275c565b9050612615565b6040805162461bcd60e51b8152602060048201526016602482015275656d707479206661696c2061636b207061636b61676560501b604482015290519081900360640190fd5b60ff82166001141561262f5761262a81613ad9565b612659565b60ff8216600214156126445761262a81613cf3565b60ff821660031415610eaa5761262a81613e1d565b5050505b505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b61100381565b61200481565b68056bc75e2d6310000081565b6001600160a01b0392831660009081526009602090815260408083209486168352938152838220929094168152925290205490565b61100081565b60115481565b61100481565b6126f5614660565b506040805180820190915281518152602082810190820152919050565b61271a614640565b61272382613f82565b61272c57600080fd5b600061273b8360200151613fbc565b60208085015160408051808201909152868152920190820152915050919050565b612764614660565b61276d82612f1f565b61277657600080fd5b602082015160006127868261401f565b80830160209586015260408051808201909152908152938401919091525090919050565b8051600090158015906127bf57508151602110155b6127c857600080fd5b60006127d78360200151613fbc565b90508083600001511015612832576040805162461bcd60e51b815260206004820152601a60248201527f6c656e677468206973206c657373207468616e206f6666736574000000000000604482015290519081900360640190fd5b82516020808501518301805192849003929183101561285857826020036101000a820491505b50949350505050565b600060606000806000805b61287587612f1f565b156128c757826128975761289061288b8861275c565b614152565b91506128bc565b82600114156128b7576128ac610e6b8861275c565b9050600193506128bc565b6128c7565b82600101925061286c565b8361290d576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b60006110046001600160a01b031663727be1f8836040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b15801561295757600080fd5b505af115801561296b573d6000803e3d6000fd5b505050506040513d602081101561298157600080fd5b50519050806129a65761299860048484606561416c565b965096505050505050612a3c565b6001600160a01b0383166000908152600660205260409020546129cf908363ffffffff612ec516565b6001600160a01b038416600081815260066020908152604091829020939093558051858152905191927f7cc266c7b444f808013fa187f7b904d470a051a6564e78f482aa496581ba4bf892918290030190a260408051600080825260208201909252909750955050505050505b915091565b6000606060008060008060005b612a5788612f1f565b15612ac05783612a7457612a6d61288b8961275c565b9250612ab5565b8360011415612a9057612a8961288b8961275c565b9150612ab5565b8360021415612ab057612aa5610e6b8961275c565b905060019450612ab5565b612ac0565b836001019350612a4e565b84612b06576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b60006110046001600160a01b031663727be1f8836040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b158015612b5057600080fd5b505af1158015612b64573d6000803e3d6000fd5b505050506040513d6020811015612b7a57600080fd5b5051905080612ba057612b9160058584606561416c565b97509750505050505050612a3c565b6001600160a01b038085166000818152600760209081526040808320948816835293815283822082905591815260089091522054612be4908363ffffffff612ec516565b6001600160a01b0380861660008181526008602090815260409182902094909455805186815290519287169391927f35a799836f74fac7eccf5c73902823b970543d2274d3b93d8da3d37a255772a2929181900390910190a3604080516000808252602082019092529098509650505050505050915091565b60008184841115612cec5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612cb1578181015183820152602001612c99565b50505050905090810190601f168015612cde5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000612d3683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614268565b9392505050565b6000612d3683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612c5d565b60408051600560a21b8318601482015260348101909152606090612d36816142cd565b606061242d612db083614323565b6142cd565b6060815160001415612dd65750604080516000815260208101909152610d71565b606082600081518110612de557fe5b602002602001015190506000600190505b8351811015612e2657612e1c82858381518110612e0f57fe5b6020026020010151614409565b9150600101612df6565b50612d36612e39825160c060ff16614486565b82614409565b6040805160028082526060828101909352829190816020015b6060815260200190600190039081612e58579050509050612e7b8460ff16612da2565b81600081518110612e8857fe5b6020026020010181905250612e9c836142cd565b81600181518110612ea957fe5b6020026020010181905250612ebd81612db5565b949350505050565b600082820183811015612d36576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000612f29614660565b505080518051602091820151919092015191011190565b8051606090612f4e57600080fd5b6000612f5d8360200151613fbc565b83516040805191839003808352601f19601f8201168301602001909152919250606090828015612f94576020820181803683370190505b509050600081602001905061285884876020015101828561457e565b8051602080830191909120600e546000908152600a9092526040822054808214612fdf57600092505050610d71565b5050600e80546000908152600a60205260408120558054600190810190915592915050565b60008060008060005b61301688612f1f565b1561307f57836130335761302c61288b8961275c565b9250613074565b836001141561304f5761304861288b8961275c565b9150613074565b836002141561306f57613064610e6b8961275c565b905060019450613074565b61307f565b83600101935061300d565b846130c5576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b60006130dc826402540be40063ffffffff6145c916565b6001600160a01b0385166000908152600b602052604090208054600019019055905060ff8816600114156132225760ff87161561314f576040805162461bcd60e51b815260206004820152600c60248201526b77726f6e672073746174757360a01b604482015290519081900360640190fd5b6001600160a01b038416600090815260046020526040902054613178908263ffffffff612ec516565b6001600160a01b038086166000908152600460209081526040808320949094556005815283822092871682529190915220546131ba908263ffffffff612ec516565b6001600160a01b038086166000818152600560209081526040808320948916808452948252918290209490945580518581529051929391927f9a57c81564ab02642f34fd87e41baa9b074c18342cec3b7268b62bf752018fd1929181900390910190a36133b0565b60ff8816613374576001600160a01b038416600090815260086020526040902054613253908263ffffffff612ec516565b6001600160a01b0385166000908152600860209081526040808320939093558251630e4f7c3f60e31b81526004810185905292516110049363727be1f89360248083019493928390030190829087803b1580156132af57600080fd5b505af11580156132c3573d6000803e3d6000fd5b505050506040513d60208110156132d957600080fd5b5051613322576040805162461bcd60e51b81526020600482015260136024820152721dda5d1a191c985dc8189b988819985a5b1959606a1b604482015290519081900360640190fd5b6040805182815260ff8916602082015281516001600160a01b0380871693908816927fcbd481ae600289fad8c0484d07ce0ffe4f010d7c844ecfdeaf2a13fead52886e929081900390910190a36133b0565b6040805162461bcd60e51b815260206004820152600c60248201526b77726f6e672073746174757360a01b604482015290519081900360640190fd5b505050505050505050565b60008060008060005b6133cd88612f1f565b1561343657836133ea576133e361288b8961275c565b925061342b565b8360011415613406576133ff61288b8961275c565b915061342b565b83600214156134265761341b610e6b8961275c565b90506001945061342b565b613436565b8360010193506133c4565b8461347c576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b6000613493826402540be40063ffffffff6145c916565b6001600160a01b0385166000908152600c602052604090208054600019019055905060ff8816600114156136125760ff871615613506576040805162461bcd60e51b815260206004820152600c60248201526b77726f6e672073746174757360a01b604482015290519081900360640190fd5b6001600160a01b03841660009081526004602052604090205461352f908263ffffffff612d3d16565b6001600160a01b03808616600090815260046020908152604080832094909455600581528382209287168252919091522054613571908263ffffffff612d3d16565b6001600160a01b038086166000908152600560209081526040808320938816835292905220556135aa42620a8c0063ffffffff612ec516565b6001600160a01b038086166000818152600760209081526040808320948916808452948252918290209490945580518581529051929391927fd6f878a5bcbbe79a64e6418bb0d56aaa20b9a60587d45749819df88dfc7c3c44929181900390910190a36133b0565b60ff8816613374576001600160a01b03808516600081815260076020908152604080832094881680845294825280832092909255815185815260ff8c169181019190915281517f4417d10c1e33efa83a770b8d4f47176e78c08c1298d534901ad3b16bb585fa2e929181900390910190a36133b0565b6000806000806000805b61369b89612f1f565b1561372057846136b8576136b161288b8a61275c565b9350613715565b84600114156136d4576136cd61288b8a61275c565b9250613715565b84600214156136f0576136e961288b8a61275c565b9150613715565b846003141561371057613705610e6b8a61275c565b905060019550613715565b613720565b846001019450613692565b85613766576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b600061377d826402540be40063ffffffff6145c916565b6001600160a01b0386166000908152600d602052604090208054600019019055905060ff8916600114156139505760ff8816156137f0576040805162461bcd60e51b815260206004820152600c60248201526b77726f6e672073746174757360a01b604482015290519081900360640190fd5b6001600160a01b03808616600090815260056020908152604080832093881683529290522054613826908263ffffffff612d3d16565b6001600160a01b038681166000908152600560209081526040808320898516845290915280822093909355908516815220546138629082612ec5565b6001600160a01b0380871660009081526005602090815260408083209388168352929052205561389b42620a8c0063ffffffff612ec516565b6001600160a01b03808716600090815260096020908152604080832089851684528252808320938816835292905220556138de42620a8c0063ffffffff612ec516565b6001600160a01b038087166000818152600960209081526040808320898616808552908352818420958b1680855295835292819020959095558451868152945191947f78bffae3f8c6691ac7fc1a3bff800cb2d612f5ad9ae5b0444cfe2eb15c189e18929081900390910190a46139e1565b60ff8916613374576001600160a01b038581166000818152600960209081526040808320898616808552818452828520968a16808652968452828520859055908352818420818552835281842093909355805186815260ff8e169281019290925280519293927fb93bee5c59f85ede6b074a99f4ffcd3e3fc0d5c3d8156de331de89a49e0ce77c9281900390910190a45b50505050505050505050565b6000816040516020018082805190602001908083835b60208310613a225780518252601f199092019160209182019101613a03565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405280519060200120836040516020018082805190602001908083835b60208310613a905780518252601f199092019160209182019101613a71565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040528051906020012014905092915050565b015190565b60008060008060005b613aeb86612f1f565b15613b545783613b0857613b0161288b8761275c565b9250613b49565b8360011415613b2457613b1d61288b8761275c565b9150613b49565b8360021415613b4457613b39610e6b8761275c565b905060019450613b49565b613b54565b836001019350613ae2565b84613b9a576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b6000613bb1826402540be40063ffffffff6145c916565b6001600160a01b0385166000908152600b6020908152604080832080546000190190556008909152902054909150613bef908263ffffffff612ec516565b6001600160a01b0385166000908152600860209081526040808320939093558251630e4f7c3f60e31b81526004810185905292516110049363727be1f89360248083019493928390030190829087803b158015613c4b57600080fd5b505af1158015613c5f573d6000803e3d6000fd5b505050506040513d6020811015613c7557600080fd5b5051613cbe576040805162461bcd60e51b81526020600482015260136024820152721dda5d1a191c985dc8189b988819985a5b1959606a1b604482015290519081900360640190fd5b6040516001907ff83de021914a4585482db5ca47d520a5657165b443fa2c7ef8ed4635f054da9b90600090a250505050505050565b60008060008060005b613d0586612f1f565b15613d6e5783613d2257613d1b61288b8761275c565b9250613d63565b8360011415613d3e57613d3761288b8761275c565b9150613d63565b8360021415613d5e57613d53610e6b8761275c565b905060019450613d63565b613d6e565b836001019350613cfc565b84613db4576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b6001600160a01b038084166000908152600c60209081526040808320805460001901905560078252808320938616835292905281812081905590516002917ff83de021914a4585482db5ca47d520a5657165b443fa2c7ef8ed4635f054da9b91a2505050505050565b6000806000806000805b613e3087612f1f565b15613eb55784613e4d57613e4661288b8861275c565b9350613eaa565b8460011415613e6957613e6261288b8861275c565b9250613eaa565b8460021415613e8557613e7e61288b8861275c565b9150613eaa565b8460031415613ea557613e9a610e6b8861275c565b905060019550613eaa565b613eb5565b846001019450613e27565b85613efb576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b6001600160a01b038481166000908152600d602090815260408083208054600019019055600982528083208785168085528184528285209588168552948352818420849055825280832093835292905281812081905590516003917ff83de021914a4585482db5ca47d520a5657165b443fa2c7ef8ed4635f054da9b91a250505050505050565b8051600090613f9357506000610d71565b6020820151805160001a9060c0821015613fb257600092505050610d71565b5060019392505050565b8051600090811a6080811015613fd6576000915050610d71565b60b8811080613ff1575060c08110801590613ff1575060f881105b15614000576001915050610d71565b60c08110156140145760b519019050610d71565b60f519019050610d71565b80516000908190811a608081101561403a576001915061414b565b60b881101561404f57607e198101915061414b565b60c08110156140c957600060b78203600186019550806020036101000a8651049150600181018201935050808310156140c3576040805162461bcd60e51b81526020600482015260116024820152706164646974696f6e206f766572666c6f7760781b604482015290519081900360640190fd5b5061414b565b60f88110156140de5760be198101915061414b565b600060f78203600186019550806020036101000a865104915060018101820193505080831015614149576040805162461bcd60e51b81526020600482015260116024820152706164646974696f6e206f766572666c6f7760781b604482015290519081900360640190fd5b505b5092915050565b805160009060151461416357600080fd5b61242d826127aa565b60006060614185846402540be40063ffffffff612cf416565b60408051600480825260a0820190925291955060609190816020015b60608152602001906001900390816141a15790505090506141c48760ff16612da2565b816000815181106141d157fe5b60200260200101819052506141ee866001600160a01b0316612d7f565b816001815181106141fb57fe5b602002602001018190525061420f85612da2565b8160028151811061421c57fe5b60200260200101819052506142368463ffffffff16612da2565b8160038151811061424357fe5b6020026020010181905250606061425982612db5565b94989497509395505050505050565b600081836142b75760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315612cb1578181015183820152602001612c99565b5060008385816142c357fe5b0495945050505050565b6060815160011480156142ff5750607f60f81b826000815181106142ed57fe5b01602001516001600160f81b03191611155b1561430b575080610d71565b61242d61431d8351608060ff16614486565b83614409565b604080516020808252818301909252606091829190602082018180368337505050602081018490529050600067ffffffffffffffff1984166143675750601861438b565b6fffffffffffffffffffffffffffffffff1984166143875750601061438b565b5060005b60208110156143c1578181815181106143a057fe5b01602001516001600160f81b031916156143b9576143c1565b60010161438b565b60008160200390506060816040519080825280601f01601f1916602001820160405280156143f6576020820181803683370190505b5080830196909652508452509192915050565b6060806040519050835180825260208201818101602087015b8183101561443a578051835260209283019201614422565b50855184518101855292509050808201602086015b8183101561446757805183526020928301920161444f565b508651929092011591909101601f01601f191660405250905092915050565b60606801000000000000000083106144d6576040805162461bcd60e51b815260206004820152600e60248201526d696e70757420746f6f206c6f6e6760901b604482015290519081900360640190fd5b604080516001808252818301909252606091602082018180368337019050509050603784116145305782840160f81b8160008151811061451257fe5b60200101906001600160f81b031916908160001a905350905061242d565b606061453b85614323565b90508381510160370160f81b8260008151811061455457fe5b60200101906001600160f81b031916908160001a9053506145758282614409565b95945050505050565b806145885761265d565b5b602081106145a8578251825260209283019290910190601f1901614589565b915181516020939093036101000a6000190180199091169216919091179052565b6000826145d85750600061242d565b828202828482816145e557fe5b0414612d365760405162461bcd60e51b81526004018080602001828103825260218152602001806147096021913960400191505060405180910390fd5b60405180606001604052806003906020820280368337509192915050565b6040518060400160405280614653614660565b8152602001600081525090565b60405180604001604052806000815260200160008152509056fe7468652042534352656c61796572466565206d6f642074656e20646563696d616c73206d757374206265207a65726f7468652042534352656c61796572466565206d757374206265206c657373207468616e2072656c61796572466565746865206d696e44656c65676174696f6e206d7573742062652067726561746572207468616e2072656c61796572466565536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f777468652072656c61796572466565206d6f642074656e20646563696d616c73206d757374206265207a65726f746865206d6573736167652073656e646572206d75737420626520676f7665726e616e636520636f6e74726163747468652072656c61796572466565206d757374206265206c657373207468616e206d696e44656c65676174696f6e7468652072656c61796572466565206d757374206265206d6f7265207468616e2042534352656c61796572466565696e73756666696369656e742062616c616e636520616674657220756e64656c6567617465746865206d6573736167652073656e646572206d7573742062652063726f737320636861696e20636f6e74726163747468652042534352656c61796572466565206d757374206e6f74206265207a65726fa164736f6c6343000604000a", + Code: "6080604052600436106103c75760003560e01c8063718a8aa8116101f2578063b88a802f1161010d578063dc927faf116100a0578063f9a2bbc71161006f578063f9a2bbc714610d00578063fa03f79714610d15578063fc3e5908146106c8578063fd6a687914610d2a576103ce565b8063dc927faf14610c7c578063df8079e914610c91578063edc1a5b014610ca6578063f45fd80b14610cbb576103ce565b8063c81b1662116100dc578063c81b166214610ba7578063c8509d8114610bbc578063d61b9b9314610c41578063d7ecfcb614610885576103ce565b8063b88a802f14610b2d578063baaafd3b14610b42578063bf8546ca14610b57578063c2117d8214610b92576103ce565b80639dc0926211610185578063aad5606311610154578063aad5606314610a23578063ab51bb9614610a38578063ac43175114610a4d578063b14315df14610b18576103ce565b80639dc09262146109bb578063a1a11bf5146109d0578063a78abc16146109e5578063aa82dce114610a0e576103ce565b80637e434d54116101c15780637e434d541461090c578063831d65d11461092157806392b888a41461065f57806396713da9146109a6576103ce565b8063718a8aa81461089a57806375aca593146108af57806375d47a0a146108e25780637942fd05146108f7576103ce565b8063413d9c3a116102e25780635d17c8bd116102755780636bd8f804116102445780636bd8f804146108075780636e47b4821461083d5780636fb7f7eb1461085257806370fd5bad14610885576103ce565b80635d17c8bd146107b35780635d499b1b146107c857806362b171d2146107dd57806369b635b6146107f2576103ce565b80634d99dd16116102b15780634d99dd161461074857806351b4dce31461077457806351e8067214610789578063552aaf931461079e576103ce565b8063413d9c3a146106dd57806343756e5c146106f2578063493279b1146107075780634bf6c88214610733576103ce565b8063151817e31161035a578063333ad3e711610329578063333ad3e71461069e57806334c43354146106b35780633dffc3871461065f5780633fdfa7e4146106c8576103ce565b8063151817e31461063457806317c9efb01461065f57806328087028146106745780632fdeb11114610689576103ce565b80630c795715116103965780630c795715146104c15780630e2374a5146104d65780631182b8751461050757806311fe9ec614610601576103ce565b8063026e402b146103d35780630298599214610401578063047636d1146104285780630bee7a6714610493576103ce565b366103ce57005b600080fd5b6103ff600480360360408110156103e957600080fd5b506001600160a01b038135169060200135610d3f565b005b34801561040d57600080fd5b50610416610d7c565b60408051918252519081900360200190f35b34801561043457600080fd5b5061045b6004803603602081101561044b57600080fd5b50356001600160a01b0316610d82565b6040518082606080838360005b83811015610480578181015183820152602001610468565b5050505090500191505060405180910390f35b34801561049f57600080fd5b506104a8610dd6565b6040805163ffffffff9092168252519081900360200190f35b3480156104cd57600080fd5b50610416610ddb565b3480156104e257600080fd5b506104eb610de1565b604080516001600160a01b039092168252519081900360200190f35b34801561051357600080fd5b5061058c6004803603604081101561052a57600080fd5b60ff8235169190810190604081016020820135600160201b81111561054e57600080fd5b82018360208201111561056057600080fd5b803590602001918460018302840111600160201b8311171561058157600080fd5b509092509050610de7565b6040805160208082528351818301528351919283929083019185019080838360005b838110156105c65781810151838201526020016105ae565b50505050905090810190601f1680156105f35780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561060d57600080fd5b506104166004803603602081101561062457600080fd5b50356001600160a01b0316610fa3565b34801561064057600080fd5b50610649610fbe565b6040805160ff9092168252519081900360200190f35b34801561066b57600080fd5b50610649610fc3565b34801561068057600080fd5b506104eb610fc8565b34801561069557600080fd5b50610416610fce565b3480156106aa57600080fd5b506104a8610fd4565b3480156106bf57600080fd5b50610416610fd9565b3480156106d457600080fd5b50610649610fe4565b3480156106e957600080fd5b50610416610fe9565b3480156106fe57600080fd5b506104eb610ff0565b34801561071357600080fd5b5061071c610ff6565b6040805161ffff9092168252519081900360200190f35b34801561073f57600080fd5b50610649610ffc565b6103ff6004803603604081101561075e57600080fd5b506001600160a01b038135169060200135611001565b34801561078057600080fd5b506104eb61162e565b34801561079557600080fd5b506104eb611634565b3480156107aa57600080fd5b5061064961163a565b3480156107bf57600080fd5b5061041661163f565b3480156107d457600080fd5b50610416611645565b3480156107e957600080fd5b5061041661164e565b3480156107fe57600080fd5b506104166117ee565b6103ff6004803603606081101561081d57600080fd5b506001600160a01b03813581169160208101359091169060400135610d3f565b34801561084957600080fd5b506104eb6117f4565b34801561085e57600080fd5b506104166004803603602081101561087557600080fd5b50356001600160a01b03166117fa565b34801561089157600080fd5b50610649611815565b3480156108a657600080fd5b5061064961181a565b3480156108bb57600080fd5b50610416600480360360208110156108d257600080fd5b50356001600160a01b031661181f565b3480156108ee57600080fd5b506104eb61183a565b34801561090357600080fd5b50610649611840565b34801561091857600080fd5b506104eb611845565b34801561092d57600080fd5b506103ff6004803603604081101561094457600080fd5b60ff8235169190810190604081016020820135600160201b81111561096857600080fd5b82018360208201111561097a57600080fd5b803590602001918460018302840111600160201b8311171561099b57600080fd5b50909250905061184b565b3480156109b257600080fd5b50610649611b13565b3480156109c757600080fd5b506104eb611b18565b3480156109dc57600080fd5b506104eb611b1e565b3480156109f157600080fd5b506109fa611b24565b604080519115158252519081900360200190f35b348015610a1a57600080fd5b506104eb611b2d565b348015610a2f57600080fd5b506104eb611b33565b348015610a4457600080fd5b506104a861163a565b348015610a5957600080fd5b506103ff60048036036040811015610a7057600080fd5b810190602081018135600160201b811115610a8a57600080fd5b820183602082011115610a9c57600080fd5b803590602001918460018302840111600160201b83111715610abd57600080fd5b919390929091602081019035600160201b811115610ada57600080fd5b820183602082011115610aec57600080fd5b803590602001918460018302840111600160201b83111715610b0d57600080fd5b509092509050611b39565b348015610b2457600080fd5b506106496122cb565b348015610b3957600080fd5b506104166122d0565b348015610b4e57600080fd5b5061041661246d565b348015610b6357600080fd5b5061041660048036036040811015610b7a57600080fd5b506001600160a01b0381358116916020013516612478565b348015610b9e57600080fd5b506104166124a5565b348015610bb357600080fd5b506104eb6124ab565b348015610bc857600080fd5b506103ff60048036036040811015610bdf57600080fd5b60ff8235169190810190604081016020820135600160201b811115610c0357600080fd5b820183602082011115610c1557600080fd5b803590602001918460018302840111600160201b83111715610c3657600080fd5b5090925090506124b1565b348015610c4d57600080fd5b5061041660048036036040811015610c6457600080fd5b506001600160a01b03813581169160200135166126d4565b348015610c8857600080fd5b506104eb6126ff565b348015610c9d57600080fd5b506104eb612705565b348015610cb257600080fd5b5061041661270b565b348015610cc757600080fd5b5061041660048036036060811015610cde57600080fd5b506001600160a01b038135811691602081013582169160409091013516612718565b348015610d0c57600080fd5b506104eb61274d565b348015610d2157600080fd5b50610416612753565b348015610d3657600080fd5b506104eb612759565b6040805162461bcd60e51b815260206004820152600d60248201526c1b9bdd081cdd5c1c1bdc9d1959609a1b604482015290519081900360640190fd5b60035481565b610d8a614694565b610d92614694565b6001600160a01b0383166000818152600b60209081526040808320548552838352600c82528083205485830152928252600d9052819020549082015290505b919050565b606481565b6108fc81565b61200181565b60603361200014610e295760405162461bcd60e51b815260040180806020018281038252602f815260200180614877602f913960400191505060405180910390fd5b60005460ff16610e6c576638d7ea4c6800006001908155662386f26fc1000060025568056bc75e2d631000006003556108fc6011556000805460ff191690911790555b610e746146b2565b610ebb610eb685858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061275f92505050565b612784565b90506000610ed0610ecb836127ce565b61281c565b90506000606060ff831660041415610ef557610eeb846128d3565b9092509050610f4c565b60ff831660051415610f0a57610eeb84612ab3565b6040805162461bcd60e51b8152602060048201526012602482015271756e6b6e6f776e206576656e74207479706560701b604482015290519081900360640190fd5b63ffffffff821615610f98576040805163ffffffff84168152905160ff8516917f391d6e5ea6ab6c49b9a0abb1782cae5def8d711f973b00c729658c0b2a80b31b919081900360200190a25b979650505050505050565b6001600160a01b031660009081526006602052604090205490565b600581565b600181565b61200581565b60015481565b606581565b662386f26fc1000081565b600381565b620a8c0081565b61100181565b6102ca81565b600881565b60105460ff166002141561104d576040805162461bcd60e51b815260206004820152600e60248201526d4e6f2072652d656e7472616e637960901b604482015290519081900360640190fd5b6010805460ff19166002179055806402540be400340615801561107557506402540be4008106155b6110c6576040805162461bcd60e51b815260206004820152601c60248201527f707265636973696f6e206c6f737320696e20636f6e76657273696f6e00000000604482015290519081900360640190fd5b60005460ff16611109576638d7ea4c6800006001908155662386f26fc1000060025568056bc75e2d631000006003556108fc6011556000805460ff191690911790555b600154341015611157576040805162461bcd60e51b81526020600482015260146024820152736e6f7420656e6f7567682072656c61792066656560601b604482015290519081900360640190fd5b600354821015611212573360009081526005602090815260408083206001600160a01b038716845290915290205482146111c9576040805162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a5908185b5bdd5b9d60921b604482015290519081900360640190fd5b6002548211611212576040805162461bcd60e51b815260206004820152601060248201526f6e6f7420656e6f7567682066756e647360801b604482015290519081900360640190fd5b3360009081526007602090815260408083206001600160a01b038716845290915290205442101561128a576040805162461bcd60e51b815260206004820152601a60248201527f70656e64696e6720756e64656c65676174696f6e206578697374000000000000604482015290519081900360640190fd5b604080518082018252601081526f6e6f7420656e6f7567682066756e647360801b602080830191909152336000908152600582528381206001600160a01b0388168252909152918220546112e591859063ffffffff612ccf16565b9050801561132d57600254811161132d5760405162461bcd60e51b81526004018080602001828103825260258152602001806148526025913960400191505060405180910390fd5b6000611344846402540be40063ffffffff612d6616565b600254909150349060009061136090839063ffffffff612daf16565b6040805160038082526080820190925291925060609190816020015b606081526020019060019003908161137c57905050905061139c33612df1565b816000815181106113a957fe5b60200260200101819052506113c6886001600160a01b0316612df1565b816001815181106113d357fe5b60200260200101819052506113e784612e14565b816002815181106113f457fe5b60200260200101819052506060611414600261140f84612e27565b612eb1565b8051602080830191909120600f80546000908152600a845260408082209390935581546001908101909255338152600c909352912080549091019055905061146542620a8c0063ffffffff612f3716565b3360009081526007602090815260408083206001600160a01b038e16845290915290205561200063f7a251d76010836114a9876402540be40063ffffffff612d6616565b6040518463ffffffff1660e01b8152600401808460ff1660ff16815260200180602001838152602001828103825284818151815260200191508051906020019080838360005b838110156115075781810151838201526020016114ef565b50505050905090810190601f1680156115345780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b15801561155557600080fd5b505af1158015611569573d6000803e3d6000fd5b5050604051611004925085156108fc02915085906000818181858888f1935050505015801561159c573d6000803e3d6000fd5b506002546040516110029180156108fc02916000818181858888f193505050501580156115cd573d6000803e3d6000fd5b50604080518981526020810185905281516001600160a01b038c169233927fdf0b6ac27f3f3bb31cee3dab0f4fe40cc19c6a3f8daaec52e06b261e58a12519929081900390910190a350506010805460ff1916600117905550505050505050565b61200681565b61200081565b600081565b60025481565b6402540be40081565b60105460009060ff166002141561169d576040805162461bcd60e51b815260206004820152600e60248201526d4e6f2072652d656e7472616e637960901b604482015290519081900360640190fd5b506010805460ff191660021790553360009081526008602052604090205480611704576040805162461bcd60e51b81526020600482015260146024820152736e6f20756e64656c6567617465642066756e647360601b604482015290519081900360640190fd5b336000818152600860205260408082208290556011549051919291849084818181858888f193505050503d806000811461175a576040519150601f19603f3d011682016040523d82523d6000602084013e61175f565b606091505b50509050806117a7576040805162461bcd60e51b815260206004820152600f60248201526e1d1c985b9cd9995c8819985a5b1959608a1b604482015290519081900360640190fd5b60408051838152905133917fc712d133b8d448221aaed2198ed1f0db6dfc860fb01bc3a630916fe6cbef946f919081900360200190a2506010805460ff1916600117905590565b60035490565b61100581565b6001600160a01b031660009081526004602052604090205490565b600281565b601081565b6001600160a01b031660009081526008602052604090205490565b61100881565b600b81565b61200381565b336120001461188b5760405162461bcd60e51b815260040180806020018281038252602f815260200180614877602f913960400191505060405180910390fd5b60005460ff166118ce576638d7ea4c6800006001908155662386f26fc1000060025568056bc75e2d631000006003556108fc6011556000805460ff191690911790555b6118d66146b2565b611918610eb684848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061275f92505050565b905060008060606000805b61192c86612f91565b15611997578061194957611942610ecb876127ce565b945061198f565b80600114156119655761195e610ecb876127ce565b935061198f565b806002141561198a5761197f61197a876127ce565b612fb2565b92506001915061198f565b611997565b600101611923565b816119dd576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b6119e683613022565b611a29576040805162461bcd60e51b815260206004820152600f60248201526e0eee4dedcce40e0c2c6d640d0c2e6d608b1b604482015290519081900360640190fd5b611a35610eb68461275f565b95506000611a45610ecb886127ce565b9050611a4f6146b2565b611a5888612f91565b15611a7b57611a74610eb6611a6f61197a8b6127ce565b61275f565b9050611abc565b6040805162461bcd60e51b8152602060048201526011602482015270656d7074792061636b207061636b61676560781b604482015290519081900360640190fd5b60ff821660011415611ad857611ad3818888613076565b611b06565b60ff821660021415611aef57611ad381888861342d565b60ff821660031415610f0a57611ad38188886136fa565b5050505050505050505050565b600981565b61100781565b61100681565b60005460ff1681565b61200281565b61300081565b60005460ff16611b90576040805162461bcd60e51b815260206004820152601960248201527f74686520636f6e7472616374206e6f7420696e69742079657400000000000000604482015290519081900360640190fd5b3361100714611bd05760405162461bcd60e51b815260040180806020018281038252602e8152602001806147c8602e913960400191505060405180910390fd5b611c3184848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600a81526972656c6179657246656560b01b60208201529150613a5f9050565b15611d975760208114611c8b576040805162461bcd60e51b815260206004820152601d60248201527f6c656e677468206f662072656c61796572466565206d69736d61746368000000604482015290519081900360640190fd5b604080516020601f8401819004810282018101909252828152600091611cc991858580838501838280828437600092019190915250613b4692505050565b90506003548110611d0b5760405162461bcd60e51b815260040180806020018281038252602e8152602001806147f6602e913960400191505060405180910390fd5b6002548111611d4b5760405162461bcd60e51b815260040180806020018281038252602e815260200180614824602e913960400191505060405180910390fd5b6402540be400810615611d8f5760405162461bcd60e51b815260040180806020018281038252602c81526020018061479c602c913960400191505060405180910390fd5b600155612239565b611dfb84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600d81526c62534352656c6179657246656560981b60208201529150613a5f9050565b15611f5d5760208114611e55576040805162461bcd60e51b815260206004820181905260248201527f6c656e677468206f662062534352656c61796572466565206d69736d61746368604482015290519081900360640190fd5b604080516020601f8401819004810282018101909252828152600091611e9391858580838501838280828437600092019190915250613b4692505050565b905080611ed15760405162461bcd60e51b81526004018080602001828103825260228152602001806148a66022913960400191505060405180910390fd5b6001548110611f115760405162461bcd60e51b815260040180806020018281038252602e81526020018061471c602e913960400191505060405180910390fd5b6402540be400810615611f555760405162461bcd60e51b815260040180806020018281038252602f8152602001806146ed602f913960400191505060405180910390fd5b600255612239565b611fc184848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600d81526c36b4b72232b632b3b0ba34b7b760991b60208201529150613a5f9050565b156120a3576020811461201b576040805162461bcd60e51b815260206004820181905260248201527f6c656e677468206f66206d696e44656c65676174696f6e206d69736d61746368604482015290519081900360640190fd5b604080516020601f840181900481028201810190925282815260009161205991858580838501838280828437600092019190915250613b4692505050565b9050600154811161209b5760405162461bcd60e51b815260040180806020018281038252603181526020018061474a6031913960400191505060405180910390fd5b600355612239565b61210584848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600b81526a7472616e7366657247617360a81b60208201529150613a5f9050565b156121fc576020811461215f576040805162461bcd60e51b815260206004820152601e60248201527f6c656e677468206f66207472616e73666572476173206d69736d617463680000604482015290519081900360640190fd5b604080516020601f840181900481028201810190925282815260009161219d91858580838501838280828437600092019190915250613b4692505050565b9050600081116121f4576040805162461bcd60e51b815260206004820152601e60248201527f746865207472616e736665724761732063616e6e6f74206265207a65726f0000604482015290519081900360640190fd5b601155612239565b6040805162461bcd60e51b815260206004820152600d60248201526c756e6b6e6f776e20706172616d60981b604482015290519081900360640190fd5b7f6cdb0ac70ab7f2e2d035cca5be60d89906f2dede7648ddbd7402189c1eeed17a848484846040518080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600083820152604051601f909101601f19169092018290039850909650505050505050a150505050565b600481565b60105460009060ff166002141561231f576040805162461bcd60e51b815260206004820152600e60248201526d4e6f2072652d656e7472616e637960901b604482015290519081900360640190fd5b506010805460ff191660021790553360009081526006602052604090205480612383576040805162461bcd60e51b81526020600482015260116024820152701b9bc81c195b991a5b99c81c995dd85c99607a1b604482015290519081900360640190fd5b336000818152600660205260408082208290556011549051919291849084818181858888f193505050503d80600081146123d9576040519150601f19603f3d011682016040523d82523d6000602084013e6123de565b606091505b5050905080612426576040805162461bcd60e51b815260206004820152600f60248201526e1d1c985b9cd9995c8819985a5b1959608a1b604482015290519081900360640190fd5b60408051838152905133917f83b78188b13346b2ffb484da70d42ee27de7fbf9f2bd8045269e10ed643ccd76919081900360200190a2506010805460ff1916600117905590565b6638d7ea4c68000081565b6001600160a01b038083166000908152600760209081526040808320938516835292905220545b92915050565b60015490565b61100281565b33612000146124f15760405162461bcd60e51b815260040180806020018281038252602f815260200180614877602f913960400191505060405180910390fd5b60005460ff16612534576638d7ea4c6800006001908155662386f26fc1000060025568056bc75e2d631000006003556108fc6011556000805460ff191690911790555b61257382828080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061302292505050565b6125b6576040805162461bcd60e51b815260206004820152600f60248201526e0eee4dedcce40e0c2c6d640d0c2e6d608b1b604482015290519081900360640190fd5b6125be6146b2565b612600610eb684848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061275f92505050565b90506000612610610ecb836127ce565b905061261a6146b2565b61262383612f91565b156126415761263a610eb6611a6f61197a866127ce565b9050612687565b6040805162461bcd60e51b8152602060048201526016602482015275656d707479206661696c2061636b207061636b61676560501b604482015290519081900360640190fd5b60ff8216600114156126a15761269c81613b4b565b6126cb565b60ff8216600214156126b65761269c81613d65565b60ff821660031415610f0a5761269c81613e8f565b5050505b505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b61100381565b61200481565b68056bc75e2d6310000081565b6001600160a01b0392831660009081526009602090815260408083209486168352938152838220929094168152925290205490565b61100081565b60115481565b61100481565b6127676146d2565b506040805180820190915281518152602082810190820152919050565b61278c6146b2565b61279582613ff4565b61279e57600080fd5b60006127ad836020015161402e565b60208085015160408051808201909152868152920190820152915050919050565b6127d66146d2565b6127df82612f91565b6127e857600080fd5b602082015160006127f882614091565b80830160209586015260408051808201909152908152938401919091525090919050565b80516000901580159061283157508151602110155b61283a57600080fd5b6000612849836020015161402e565b905080836000015110156128a4576040805162461bcd60e51b815260206004820152601a60248201527f6c656e677468206973206c657373207468616e206f6666736574000000000000604482015290519081900360640190fd5b8251602080850151830180519284900392918310156128ca57826020036101000a820491505b50949350505050565b600060606000806000805b6128e787612f91565b156129395782612909576129026128fd886127ce565b6141c4565b915061292e565b82600114156129295761291e610ecb886127ce565b90506001935061292e565b612939565b8260010192506128de565b8361297f576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b60006110046001600160a01b031663727be1f8836040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b1580156129c957600080fd5b505af11580156129dd573d6000803e3d6000fd5b505050506040513d60208110156129f357600080fd5b5051905080612a1857612a0a6004848460656141de565b965096505050505050612aae565b6001600160a01b038316600090815260066020526040902054612a41908363ffffffff612f3716565b6001600160a01b038416600081815260066020908152604091829020939093558051858152905191927f7cc266c7b444f808013fa187f7b904d470a051a6564e78f482aa496581ba4bf892918290030190a260408051600080825260208201909252909750955050505050505b915091565b6000606060008060008060005b612ac988612f91565b15612b325783612ae657612adf6128fd896127ce565b9250612b27565b8360011415612b0257612afb6128fd896127ce565b9150612b27565b8360021415612b2257612b17610ecb896127ce565b905060019450612b27565b612b32565b836001019350612ac0565b84612b78576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b60006110046001600160a01b031663727be1f8836040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b158015612bc257600080fd5b505af1158015612bd6573d6000803e3d6000fd5b505050506040513d6020811015612bec57600080fd5b5051905080612c1257612c036005858460656141de565b97509750505050505050612aae565b6001600160a01b038085166000818152600760209081526040808320948816835293815283822082905591815260089091522054612c56908363ffffffff612f3716565b6001600160a01b0380861660008181526008602090815260409182902094909455805186815290519287169391927f35a799836f74fac7eccf5c73902823b970543d2274d3b93d8da3d37a255772a2929181900390910190a3604080516000808252602082019092529098509650505050505050915091565b60008184841115612d5e5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612d23578181015183820152602001612d0b565b50505050905090810190601f168015612d505780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000612da883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506142da565b9392505050565b6000612da883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612ccf565b60408051600560a21b8318601482015260348101909152606090612da88161433f565b606061249f612e2283614395565b61433f565b6060815160001415612e485750604080516000815260208101909152610dd1565b606082600081518110612e5757fe5b602002602001015190506000600190505b8351811015612e9857612e8e82858381518110612e8157fe5b602002602001015161447b565b9150600101612e68565b50612da8612eab825160c060ff166144f8565b8261447b565b6040805160028082526060828101909352829190816020015b6060815260200190600190039081612eca579050509050612eed8460ff16612e14565b81600081518110612efa57fe5b6020026020010181905250612f0e8361433f565b81600181518110612f1b57fe5b6020026020010181905250612f2f81612e27565b949350505050565b600082820183811015612da8576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000612f9b6146d2565b505080518051602091820151919092015191011190565b8051606090612fc057600080fd5b6000612fcf836020015161402e565b83516040805191839003808352601f19601f8201168301602001909152919250606090828015613006576020820181803683370190505b50905060008160200190506128ca8487602001510182856145f0565b8051602080830191909120600e546000908152600a909252604082205480821461305157600092505050610dd1565b5050600e80546000908152600a60205260408120558054600190810190915592915050565b60008060008060005b61308888612f91565b156130f157836130a55761309e6128fd896127ce565b92506130e6565b83600114156130c1576130ba6128fd896127ce565b91506130e6565b83600214156130e1576130d6610ecb896127ce565b9050600194506130e6565b6130f1565b83600101935061307f565b84613137576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b600061314e826402540be40063ffffffff61463b16565b6001600160a01b0385166000908152600b602052604090208054600019019055905060ff8816600114156132945760ff8716156131c1576040805162461bcd60e51b815260206004820152600c60248201526b77726f6e672073746174757360a01b604482015290519081900360640190fd5b6001600160a01b0384166000908152600460205260409020546131ea908263ffffffff612f3716565b6001600160a01b0380861660009081526004602090815260408083209490945560058152838220928716825291909152205461322c908263ffffffff612f3716565b6001600160a01b038086166000818152600560209081526040808320948916808452948252918290209490945580518581529051929391927f9a57c81564ab02642f34fd87e41baa9b074c18342cec3b7268b62bf752018fd1929181900390910190a3613422565b60ff88166133e6576001600160a01b0384166000908152600860205260409020546132c5908263ffffffff612f3716565b6001600160a01b0385166000908152600860209081526040808320939093558251630e4f7c3f60e31b81526004810185905292516110049363727be1f89360248083019493928390030190829087803b15801561332157600080fd5b505af1158015613335573d6000803e3d6000fd5b505050506040513d602081101561334b57600080fd5b5051613394576040805162461bcd60e51b81526020600482015260136024820152721dda5d1a191c985dc8189b988819985a5b1959606a1b604482015290519081900360640190fd5b6040805182815260ff8916602082015281516001600160a01b0380871693908816927fcbd481ae600289fad8c0484d07ce0ffe4f010d7c844ecfdeaf2a13fead52886e929081900390910190a3613422565b6040805162461bcd60e51b815260206004820152600c60248201526b77726f6e672073746174757360a01b604482015290519081900360640190fd5b505050505050505050565b60008060008060005b61343f88612f91565b156134a8578361345c576134556128fd896127ce565b925061349d565b8360011415613478576134716128fd896127ce565b915061349d565b83600214156134985761348d610ecb896127ce565b90506001945061349d565b6134a8565b836001019350613436565b846134ee576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b6000613505826402540be40063ffffffff61463b16565b6001600160a01b0385166000908152600c602052604090208054600019019055905060ff8816600114156136845760ff871615613578576040805162461bcd60e51b815260206004820152600c60248201526b77726f6e672073746174757360a01b604482015290519081900360640190fd5b6001600160a01b0384166000908152600460205260409020546135a1908263ffffffff612daf16565b6001600160a01b038086166000908152600460209081526040808320949094556005815283822092871682529190915220546135e3908263ffffffff612daf16565b6001600160a01b0380861660009081526005602090815260408083209388168352929052205561361c42620a8c0063ffffffff612f3716565b6001600160a01b038086166000818152600760209081526040808320948916808452948252918290209490945580518581529051929391927fd6f878a5bcbbe79a64e6418bb0d56aaa20b9a60587d45749819df88dfc7c3c44929181900390910190a3613422565b60ff88166133e6576001600160a01b03808516600081815260076020908152604080832094881680845294825280832092909255815185815260ff8c169181019190915281517f4417d10c1e33efa83a770b8d4f47176e78c08c1298d534901ad3b16bb585fa2e929181900390910190a3613422565b6000806000806000805b61370d89612f91565b15613792578461372a576137236128fd8a6127ce565b9350613787565b84600114156137465761373f6128fd8a6127ce565b9250613787565b84600214156137625761375b6128fd8a6127ce565b9150613787565b846003141561378257613777610ecb8a6127ce565b905060019550613787565b613792565b846001019450613704565b856137d8576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b60006137ef826402540be40063ffffffff61463b16565b6001600160a01b0386166000908152600d602052604090208054600019019055905060ff8916600114156139c25760ff881615613862576040805162461bcd60e51b815260206004820152600c60248201526b77726f6e672073746174757360a01b604482015290519081900360640190fd5b6001600160a01b03808616600090815260056020908152604080832093881683529290522054613898908263ffffffff612daf16565b6001600160a01b038681166000908152600560209081526040808320898516845290915280822093909355908516815220546138d49082612f37565b6001600160a01b0380871660009081526005602090815260408083209388168352929052205561390d42620a8c0063ffffffff612f3716565b6001600160a01b038087166000908152600960209081526040808320898516845282528083209388168352929052205561395042620a8c0063ffffffff612f3716565b6001600160a01b038087166000818152600960209081526040808320898616808552908352818420958b1680855295835292819020959095558451868152945191947f78bffae3f8c6691ac7fc1a3bff800cb2d612f5ad9ae5b0444cfe2eb15c189e18929081900390910190a4613a53565b60ff89166133e6576001600160a01b038581166000818152600960209081526040808320898616808552818452828520968a16808652968452828520859055908352818420818552835281842093909355805186815260ff8e169281019290925280519293927fb93bee5c59f85ede6b074a99f4ffcd3e3fc0d5c3d8156de331de89a49e0ce77c9281900390910190a45b50505050505050505050565b6000816040516020018082805190602001908083835b60208310613a945780518252601f199092019160209182019101613a75565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405280519060200120836040516020018082805190602001908083835b60208310613b025780518252601f199092019160209182019101613ae3565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040528051906020012014905092915050565b015190565b60008060008060005b613b5d86612f91565b15613bc65783613b7a57613b736128fd876127ce565b9250613bbb565b8360011415613b9657613b8f6128fd876127ce565b9150613bbb565b8360021415613bb657613bab610ecb876127ce565b905060019450613bbb565b613bc6565b836001019350613b54565b84613c0c576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b6000613c23826402540be40063ffffffff61463b16565b6001600160a01b0385166000908152600b6020908152604080832080546000190190556008909152902054909150613c61908263ffffffff612f3716565b6001600160a01b0385166000908152600860209081526040808320939093558251630e4f7c3f60e31b81526004810185905292516110049363727be1f89360248083019493928390030190829087803b158015613cbd57600080fd5b505af1158015613cd1573d6000803e3d6000fd5b505050506040513d6020811015613ce757600080fd5b5051613d30576040805162461bcd60e51b81526020600482015260136024820152721dda5d1a191c985dc8189b988819985a5b1959606a1b604482015290519081900360640190fd5b6040516001907ff83de021914a4585482db5ca47d520a5657165b443fa2c7ef8ed4635f054da9b90600090a250505050505050565b60008060008060005b613d7786612f91565b15613de05783613d9457613d8d6128fd876127ce565b9250613dd5565b8360011415613db057613da96128fd876127ce565b9150613dd5565b8360021415613dd057613dc5610ecb876127ce565b905060019450613dd5565b613de0565b836001019350613d6e565b84613e26576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b6001600160a01b038084166000908152600c60209081526040808320805460001901905560078252808320938616835292905281812081905590516002917ff83de021914a4585482db5ca47d520a5657165b443fa2c7ef8ed4635f054da9b91a2505050505050565b6000806000806000805b613ea287612f91565b15613f275784613ebf57613eb86128fd886127ce565b9350613f1c565b8460011415613edb57613ed46128fd886127ce565b9250613f1c565b8460021415613ef757613ef06128fd886127ce565b9150613f1c565b8460031415613f1757613f0c610ecb886127ce565b905060019550613f1c565b613f27565b846001019450613e99565b85613f6d576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b6001600160a01b038481166000908152600d602090815260408083208054600019019055600982528083208785168085528184528285209588168552948352818420849055825280832093835292905281812081905590516003917ff83de021914a4585482db5ca47d520a5657165b443fa2c7ef8ed4635f054da9b91a250505050505050565b805160009061400557506000610dd1565b6020820151805160001a9060c082101561402457600092505050610dd1565b5060019392505050565b8051600090811a6080811015614048576000915050610dd1565b60b8811080614063575060c08110801590614063575060f881105b15614072576001915050610dd1565b60c08110156140865760b519019050610dd1565b60f519019050610dd1565b80516000908190811a60808110156140ac57600191506141bd565b60b88110156140c157607e19810191506141bd565b60c081101561413b57600060b78203600186019550806020036101000a865104915060018101820193505080831015614135576040805162461bcd60e51b81526020600482015260116024820152706164646974696f6e206f766572666c6f7760781b604482015290519081900360640190fd5b506141bd565b60f88110156141505760be19810191506141bd565b600060f78203600186019550806020036101000a8651049150600181018201935050808310156141bb576040805162461bcd60e51b81526020600482015260116024820152706164646974696f6e206f766572666c6f7760781b604482015290519081900360640190fd5b505b5092915050565b80516000906015146141d557600080fd5b61249f8261281c565b600060606141f7846402540be40063ffffffff612d6616565b60408051600480825260a0820190925291955060609190816020015b60608152602001906001900390816142135790505090506142368760ff16612e14565b8160008151811061424357fe5b6020026020010181905250614260866001600160a01b0316612df1565b8160018151811061426d57fe5b602002602001018190525061428185612e14565b8160028151811061428e57fe5b60200260200101819052506142a88463ffffffff16612e14565b816003815181106142b557fe5b602002602001018190525060606142cb82612e27565b94989497509395505050505050565b600081836143295760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315612d23578181015183820152602001612d0b565b50600083858161433557fe5b0495945050505050565b6060815160011480156143715750607f60f81b8260008151811061435f57fe5b01602001516001600160f81b03191611155b1561437d575080610dd1565b61249f61438f8351608060ff166144f8565b8361447b565b604080516020808252818301909252606091829190602082018180368337505050602081018490529050600067ffffffffffffffff1984166143d9575060186143fd565b6fffffffffffffffffffffffffffffffff1984166143f9575060106143fd565b5060005b60208110156144335781818151811061441257fe5b01602001516001600160f81b0319161561442b57614433565b6001016143fd565b60008160200390506060816040519080825280601f01601f191660200182016040528015614468576020820181803683370190505b5080830196909652508452509192915050565b6060806040519050835180825260208201818101602087015b818310156144ac578051835260209283019201614494565b50855184518101855292509050808201602086015b818310156144d95780518352602092830192016144c1565b508651929092011591909101601f01601f191660405250905092915050565b6060680100000000000000008310614548576040805162461bcd60e51b815260206004820152600e60248201526d696e70757420746f6f206c6f6e6760901b604482015290519081900360640190fd5b604080516001808252818301909252606091602082018180368337019050509050603784116145a25782840160f81b8160008151811061458457fe5b60200101906001600160f81b031916908160001a905350905061249f565b60606145ad85614395565b90508381510160370160f81b826000815181106145c657fe5b60200101906001600160f81b031916908160001a9053506145e7828261447b565b95945050505050565b806145fa576126cf565b5b6020811061461a578251825260209283019290910190601f19016145fb565b915181516020939093036101000a6000190180199091169216919091179052565b60008261464a5750600061249f565b8282028284828161465757fe5b0414612da85760405162461bcd60e51b815260040180806020018281038252602181526020018061477b6021913960400191505060405180910390fd5b60405180606001604052806003906020820280368337509192915050565b60405180604001604052806146c56146d2565b8152602001600081525090565b60405180604001604052806000815260200160008152509056fe7468652042534352656c61796572466565206d6f642074656e20646563696d616c73206d757374206265207a65726f7468652042534352656c61796572466565206d757374206265206c657373207468616e2072656c61796572466565746865206d696e44656c65676174696f6e206d7573742062652067726561746572207468616e2072656c61796572466565536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f777468652072656c61796572466565206d6f642074656e20646563696d616c73206d757374206265207a65726f746865206d6573736167652073656e646572206d75737420626520676f7665726e616e636520636f6e74726163747468652072656c61796572466565206d757374206265206c657373207468616e206d696e44656c65676174696f6e7468652072656c61796572466565206d757374206265206d6f7265207468616e2042534352656c61796572466565696e73756666696369656e742062616c616e636520616674657220756e64656c6567617465746865206d6573736167652073656e646572206d7573742062652063726f737320636861696e20636f6e74726163747468652042534352656c61796572466565206d757374206e6f74206265207a65726fa164736f6c6343000604000a", }, { ContractAddr: common.HexToAddress(StakeHubContract), CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/cfc0bd1127186a917ddc38fd38d22903034d3f0b", - Code: "6080604052600436106200029f5760003560e01c8063982ef0a7116200015f578063cf06248c11620000c5578063de88700b1162000084578063de88700b146200083d578063e8f67c3b146200085f578063e992aaf51462000877578063f1f74d84146200088f578063fb50b31f14620008a7578063fc0c5ff114620008cc57600080fd5b8063cf06248c1462000793578063d115a20614620007d0578063d6ca429d14620007e8578063d8ca511f146200080d578063daacdb66146200082557600080fd5b8063b187bd26116200011e578063b187bd2614620006c1578063baa7199e14620006e1578063bdceadf31462000706578063c38fbec8146200071e578063c473318f1462000743578063cbb04d9d146200075b57600080fd5b8063982ef0a7146200060e578063a43569b31462000625578063aad3ec961462000659578063ac431751146200067e578063ae0f336d14620006a357600080fd5b80634e6fd6c411620002055780636ec01b2711620001c45780636ec01b27146200052457806375cc7d89146200057c57806376e7d6d614620005a15780637adcf7e814620005b95780638129fc1c14620005de5780638456cb5914620005f657600080fd5b80634e6fd6c4146200045b57806359491871146200048c5780635e7cc1c914620004b157806363a036b514620004d657806364028fbd146200050d57600080fd5b8063417c73a7116200025e578063417c73a7146200035d578063449ecfe6146200038257806345211bfd14620003a75780634838d16514620003cc5780634a49ac4c14620004115780634d99dd16146200043657600080fd5b8063046f7da214620002c65780630661806e14620002de578063092193ab14620003095780630e9fbf51146200032057806338409988146200034557600080fd5b36620002c1576000546301000000900460ff16600114620002bf57600080fd5b005b600080fd5b348015620002d357600080fd5b50620002bf620008e4565b348015620002eb57600080fd5b50620002f660025481565b6040519081526020015b60405180910390f35b620002bf6200031a36600462006971565b62000945565b3480156200032d57600080fd5b50620002bf6200033f366004620069d5565b62000ec1565b3480156200035257600080fd5b50620002f660035481565b3480156200036a57600080fd5b50620002bf6200037c36600462006971565b6200113f565b3480156200038f57600080fd5b50620002bf620003a136600462006971565b6200118f565b348015620003b457600080fd5b50620002bf620003c636600462006971565b62001342565b348015620003d957600080fd5b5062000400620003eb36600462006971565b60176020526000908152604090205460ff1681565b604051901515815260200162000300565b3480156200041e57600080fd5b50620002bf6200043036600462006971565b62001505565b3480156200044357600080fd5b50620002bf6200045536600462006a1a565b62001552565b3480156200046857600080fd5b506200047361dead81565b6040516001600160a01b03909116815260200162000300565b3480156200049957600080fd5b50620002bf620004ab36600462006a5f565b62001b70565b348015620004be57600080fd5b50620002bf620004d036600462006acd565b62002942565b348015620004e357600080fd5b50620004fb620004f536600462006aed565b62002b49565b60405162000300949392919062006baa565b620002bf6200051e36600462006c79565b620031d1565b3480156200053157600080fd5b50620005496200054336600462006971565b620036a1565b6040805182516001600160401b039081168252602080850151821690830152928201519092169082015260600162000300565b3480156200058957600080fd5b50620002bf6200059b36600462006971565b6200374b565b348015620005ae57600080fd5b50620002f660095481565b348015620005c657600080fd5b5062000473620005d8366004620069d5565b6200391e565b348015620005eb57600080fd5b50620002bf62003956565b3480156200060357600080fd5b50620002bf62003c6c565b620002bf6200061f36600462006d4b565b62003cd2565b3480156200063257600080fd5b506200064a6200064436600462006971565b62004377565b60405162000300919062006d85565b3480156200066657600080fd5b50620002bf6200067836600462006a1a565b62004664565b3480156200068b57600080fd5b50620002bf6200069d36600462006e0b565b620047cd565b348015620006b057600080fd5b50620002f6670de0b6b3a764000081565b348015620006ce57600080fd5b5060005462010000900460ff1662000400565b348015620006ee57600080fd5b50620002bf6200070036600462006e7d565b6200562b565b3480156200071357600080fd5b50620002f660085481565b3480156200072b57600080fd5b50620002bf6200073d36600462006971565b620057f8565b3480156200075057600080fd5b50620002f660045481565b3480156200076857600080fd5b50620007806200077a36600462006971565b62005a16565b6040516200030095949392919062006f09565b348015620007a057600080fd5b5062000473620007b236600462006971565b6001600160a01b039081166000908152600f60205260409020541690565b348015620007dd57600080fd5b50620002f661271081565b348015620007f557600080fd5b50620002bf6200080736600462006f4b565b62005e75565b3480156200081a57600080fd5b50620002f660075481565b3480156200083257600080fd5b50620002f660135481565b3480156200084a57600080fd5b5060165462000473906001600160a01b031681565b3480156200086c57600080fd5b50620002f660015481565b3480156200088457600080fd5b50620002f660065481565b3480156200089c57600080fd5b50620002f6600a5481565b348015620008b457600080fd5b50620002bf620008c636600462006e0b565b62005fc4565b348015620008d957600080fd5b50620002f660055481565b6016546001600160a01b03163314620009105760405163f2771a9960e01b815260040160405180910390fd5b6000805462ff0000191681556040517f62451d457bc659158be6e6247f56ec1df424a5c7597f71c20c2bc44e0965c8f99190a1565b33611000146200097157604051630f22c43960e41b815261100060048201526024015b60405180910390fd5b6001600160a01b038082166000908152600f60209081526040808320548416808452600d83528184208251610140810184528154871681526001820154871694810194909452600281015490951691830191909152600384018054919491606084019190620009e09062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462000a0e9062006f83565b801562000a5f5780601f1062000a335761010080835404028352916020019162000a5f565b820191906000526020600020905b81548152906001019060200180831162000a4157829003601f168201915b505050505081526020016004820160405180608001604052908160008201805462000a8a9062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462000ab89062006f83565b801562000b095780601f1062000add5761010080835404028352916020019162000b09565b820191906000526020600020905b81548152906001019060200180831162000aeb57829003601f168201915b5050505050815260200160018201805462000b249062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462000b529062006f83565b801562000ba35780601f1062000b775761010080835404028352916020019162000ba3565b820191906000526020600020905b81548152906001019060200180831162000b8557829003601f168201915b5050505050815260200160028201805462000bbe9062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462000bec9062006f83565b801562000c3d5780601f1062000c115761010080835404028352916020019162000c3d565b820191906000526020600020905b81548152906001019060200180831162000c1f57829003601f168201915b5050505050815260200160038201805462000c589062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462000c869062006f83565b801562000cd75780601f1062000cab5761010080835404028352916020019162000cd7565b820191906000526020600020905b81548152906001019060200180831162000cb957829003601f168201915b505050919092525050508152604080516060808201835260088501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600984015460ff16151582840152600a84015490830152600b8301546080830152805161028081019182905260a09092019190600c84019060149082845b81548152602001906001019080831162000d63575050509190925250505060408101519091506001600160a01b0316158062000da057508060c001515b1562000e1157816001600160a01b03167ffc8bff675087dd2da069cc3fb517b9ed001e19750c0865241a5542dba1ba170d60405162000e049060208082526011908201527024a72b20a624a22fab20a624a220aa27a960791b604082015260600190565b60405180910390a2505050565b60408181015160a0830151519151632f303ebb60e11b81526001600160401b0390921660048301526001600160a01b031690635e607d769034906024016000604051808303818588803b15801562000e6857600080fd5b505af115801562000e7d573d6000803e3d6000fd5b5050505050816001600160a01b03167fe34918ff1c7084970068b53fd71ad6d8b04e9f15d3886cbf006443e6cdc52ea63460405162000e0491815260200190565b50565b336110011462000ee957604051630f22c43960e41b8152611001600482015260240162000968565b6000600e838360405162000eff92919062006fb9565b908152604051908190036020019020546001600160a01b0316905062000f27600b82620061e6565b62000f455760405163fdf4600b60e01b815260040160405180910390fd5b6001600160a01b0381166000908152600d602052604081209062000f6d620151804262006fdf565b6014546000828152601560205260409020549192501162000fa15760405163413361db60e01b815260040160405180910390fd5b600081815260156020526040812080546001929062000fc290849062007002565b90915550600090508062000fd88560026200620b565b915091508162000ffb57604051631b919bb160e11b815260040160405180910390fd5b600284015460085460405163045bc4d160e41b815260048101919091526000916001600160a01b0316906345bc4d10906024016020604051808303816000875af11580156200104e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001074919062007018565b905062001082858362006295565b856001600160a01b03167f6e9a2ee7aee95665e3a774a212eb11441b217e3e4656ab9563793094689aabb283836002604051620010c29392919062007032565b60405180910390a26002850154604051633041949b60e01b81526001600160a01b039182166004820152908716602482015261200590633041949b90604401600060405180830381600087803b1580156200111c57600080fd5b505af115801562001131573d6000803e3d6000fd5b505050505050505050505050565b6016546001600160a01b031633146200116b5760405163f2771a9960e01b815260040160405180910390fd5b6001600160a01b03166000908152601760205260409020805460ff19166001179055565b60005462010000900460ff1615620011ba5760405163d7485e8f60e01b815260040160405180910390fd5b80620011c8600b82620061e6565b620011e65760405163fdf4600b60e01b815260040160405180910390fd5b6001600160a01b0382166000908152600d60205260409020600981015460ff166200122457604051634b6b857d60e01b815260040160405180910390fd5b6002805490820154604051630913db4760e01b81526001600160a01b03868116600483015290911690630913db4790602401602060405180830381865afa15801562001274573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200129a919062007018565b1015620012ba576040516317b204bf60e11b815260040160405180910390fd5b4281600a01541115620012e05760405163170cb76760e21b815260040160405180910390fd5b60098101805460ff191690556013805460019190600090620013049084906200706d565b90915550506040516001600160a01b038416907f9390b453426557da5ebdc31f19a37753ca04addf656d32f35232211bb2af3f1990600090a2505050565b60005462010000900460ff16156200136d5760405163d7485e8f60e01b815260040160405180910390fd5b3360009081526017602052604090205460ff16156200139f5760405163b1d02c3d60e01b815260040160405180910390fd5b33620013ad600b82620061e6565b620013cb5760405163fdf4600b60e01b815260040160405180910390fd5b6001600160a01b038216620013f357604051636520611b60e11b815260040160405180910390fd5b6001600160a01b038281166000908152600f6020526040902054161515806200143457506001600160a01b03821660009081526011602052604090205460ff165b156200145357604051631e6f587560e11b815260040160405180910390fd5b336000818152600d60205260409020600b810154429062001478906201518062007002565b11156200149857604051631f92cdbd60e11b815260040160405180910390fd5b80546001600160a01b038086166001600160a01b03199283168117845542600b8501556000818152600f60205260408082208054948816949095168417909455925190927f6e4e747ca35203f16401c69805c7dd52fff67ef60b0ebc5c7fe16890530f223591a350505050565b6016546001600160a01b03163314620015315760405163f2771a9960e01b815260040160405180910390fd5b6001600160a01b03166000908152601760205260409020805460ff19169055565b60005462010000900460ff16156200157d5760405163d7485e8f60e01b815260040160405180910390fd5b3360009081526017602052604090205460ff1615620015af5760405163b1d02c3d60e01b815260040160405180910390fd5b81620015bd600b82620061e6565b620015db5760405163fdf4600b60e01b815260040160405180910390fd5b81600003620015fd57604051639811e0c760e01b815260040160405180910390fd5b6001600160a01b038084166000908152600d60209081526040808320815161014081018352815486168152600182015486169381019390935260028101549094169082015260038301805433949160608401916200165b9062006f83565b80601f0160208091040260200160405190810160405280929190818152602001828054620016899062006f83565b8015620016da5780601f10620016ae57610100808354040283529160200191620016da565b820191906000526020600020905b815481529060010190602001808311620016bc57829003601f168201915b5050505050815260200160048201604051806080016040529081600082018054620017059062006f83565b80601f0160208091040260200160405190810160405280929190818152602001828054620017339062006f83565b8015620017845780601f10620017585761010080835404028352916020019162001784565b820191906000526020600020905b8154815290600101906020018083116200176657829003601f168201915b505050505081526020016001820180546200179f9062006f83565b80601f0160208091040260200160405190810160405280929190818152602001828054620017cd9062006f83565b80156200181e5780601f10620017f2576101008083540402835291602001916200181e565b820191906000526020600020905b8154815290600101906020018083116200180057829003601f168201915b50505050508152602001600282018054620018399062006f83565b80601f0160208091040260200160405190810160405280929190818152602001828054620018679062006f83565b8015620018b85780601f106200188c57610100808354040283529160200191620018b8565b820191906000526020600020905b8154815290600101906020018083116200189a57829003601f168201915b50505050508152602001600382018054620018d39062006f83565b80601f0160208091040260200160405190810160405280929190818152602001828054620019019062006f83565b8015620019525780601f10620019265761010080835404028352916020019162001952565b820191906000526020600020905b8154815290600101906020018083116200193457829003601f168201915b505050919092525050508152604080516060808201835260088501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600984015460ff16151582840152600a84015490830152600b8301546080830152805161028081019182905260a09092019190600c84019060149082845b815481526020019060010190808311620019de575050509190925250505060408082015190516326ccee8b60e11b81526001600160a01b0385811660048301526024820188905292935060009290911690634d99dd16906044016020604051808303816000875af115801562001a58573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001a7e919062007018565b9050826001600160a01b0316866001600160a01b03167f3aace7340547de7b9156593a7652dc07ee900cea3fd8f82cb6c9d38b40829802878460405162001acf929190918252602082015260400190565b60405180910390a3856001600160a01b0316836001600160a01b03160362001afc5762001afc866200638a565b6040828101519051633041949b60e01b81526001600160a01b039182166004820152908416602482015261200590633041949b906044015b600060405180830381600087803b15801562001b4f57600080fd5b505af115801562001b64573d6000803e3d6000fd5b50505050505050505050565b60005462010000900460ff161562001b9b5760405163d7485e8f60e01b815260040160405180910390fd5b3360009081526017602052604090205460ff161562001bcd5760405163b1d02c3d60e01b815260040160405180910390fd5b8362001bdb600b82620061e6565b62001bf95760405163fdf4600b60e01b815260040160405180910390fd5b8362001c07600b82620061e6565b62001c255760405163fdf4600b60e01b815260040160405180910390fd5b8360000362001c4757604051639811e0c760e01b815260040160405180910390fd5b846001600160a01b0316866001600160a01b03160362001c7a5760405163f0e3e62960e01b815260040160405180910390fd5b6001600160a01b038087166000908152600d602090815260408083208151610140810183528154861681526001820154861693810193909352600281015490941690820152600383018054339491606084019162001cd89062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462001d069062006f83565b801562001d575780601f1062001d2b5761010080835404028352916020019162001d57565b820191906000526020600020905b81548152906001019060200180831162001d3957829003601f168201915b505050505081526020016004820160405180608001604052908160008201805462001d829062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462001db09062006f83565b801562001e015780601f1062001dd55761010080835404028352916020019162001e01565b820191906000526020600020905b81548152906001019060200180831162001de357829003601f168201915b5050505050815260200160018201805462001e1c9062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462001e4a9062006f83565b801562001e9b5780601f1062001e6f5761010080835404028352916020019162001e9b565b820191906000526020600020905b81548152906001019060200180831162001e7d57829003601f168201915b5050505050815260200160028201805462001eb69062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462001ee49062006f83565b801562001f355780601f1062001f095761010080835404028352916020019162001f35565b820191906000526020600020905b81548152906001019060200180831162001f1757829003601f168201915b5050505050815260200160038201805462001f509062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462001f7e9062006f83565b801562001fcf5780601f1062001fa35761010080835404028352916020019162001fcf565b820191906000526020600020905b81548152906001019060200180831162001fb157829003601f168201915b505050919092525050508152604080516060808201835260088501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600984015460ff16151582840152600a84015490830152600b8301546080830152805161028081019182905260a09092019190600c84019060149082845b8154815260200190600101908083116200205b57505050919092525050506001600160a01b038089166000908152600d60209081526040808320815161014081018352815486168152600182015486169381019390935260028101549094169082015260038301805494955091939092916060840191620020dc9062006f83565b80601f01602080910402602001604051908101604052809291908181526020018280546200210a9062006f83565b80156200215b5780601f106200212f576101008083540402835291602001916200215b565b820191906000526020600020905b8154815290600101906020018083116200213d57829003601f168201915b5050505050815260200160048201604051806080016040529081600082018054620021869062006f83565b80601f0160208091040260200160405190810160405280929190818152602001828054620021b49062006f83565b8015620022055780601f10620021d95761010080835404028352916020019162002205565b820191906000526020600020905b815481529060010190602001808311620021e757829003601f168201915b50505050508152602001600182018054620022209062006f83565b80601f01602080910402602001604051908101604052809291908181526020018280546200224e9062006f83565b80156200229f5780601f1062002273576101008083540402835291602001916200229f565b820191906000526020600020905b8154815290600101906020018083116200228157829003601f168201915b50505050508152602001600282018054620022ba9062006f83565b80601f0160208091040260200160405190810160405280929190818152602001828054620022e89062006f83565b8015620023395780601f106200230d5761010080835404028352916020019162002339565b820191906000526020600020905b8154815290600101906020018083116200231b57829003601f168201915b50505050508152602001600382018054620023549062006f83565b80601f0160208091040260200160405190810160405280929190818152602001828054620023829062006f83565b8015620023d35780601f10620023a757610100808354040283529160200191620023d3565b820191906000526020600020905b815481529060010190602001808311620023b557829003601f168201915b505050919092525050508152604080516060808201835260088501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600984015460ff16151582840152600a84015490830152600b8301546080830152805161028081019182905260a09092019190600c84019060149082845b8154815260200190600101908083116200245f5750505050508152505090508060c001518015620024a25750876001600160a01b0316836001600160a01b031614155b15620024c157604051636468920360e01b815260040160405180910390fd5b6000805463ff0000001916630100000017815560408381015190516352e82ce560e11b81526001600160a01b038681166004830152602482018b90529091169063a5d059ca906044016020604051808303816000875af11580156200252a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002550919062007018565b9050600354811015620025765760405163dc6f0bdd60e01b815260040160405180910390fd5b896001600160a01b0316846001600160a01b03161480156200260b57506002546040808501519051630913db4760e01b81526001600160a01b038d8116600483015290911690630913db4790602401602060405180830381865afa158015620025e3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002609919062007018565b105b156200262a576040516317b204bf60e11b815260040160405180910390fd5b6000612710600654836200263f919062007083565b6200264b919062006fdf565b9050600083604001516001600160a01b03168260405160006040518083038185875af1925050503d8060008114620026a0576040519150601f19603f3d011682016040523d82523d6000602084013e620026a5565b606091505b5050905080620026c8576040516312171d8360e31b815260040160405180910390fd5b620026d482846200706d565b60408086015190516317066a5760e21b81526001600160a01b03898116600483015292955060009290911690635c19a95c90869060240160206040518083038185885af11580156200272a573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019062002751919062007018565b905060008060036101000a81548160ff021916908360ff160217905550866001600160a01b03168c6001600160a01b03168e6001600160a01b03167ffdac6e81913996d95abcc289e90f2d8bd235487ce6fe6f821e7d21002a1915b48e8589604051620027d1939291909283526020830191909152604082015260600190565b60405180910390a4604080516002808252606082018352600092602083019080368337019050509050866040015181600081518110620028155762002815620070b3565b60200260200101906001600160a01b031690816001600160a01b031681525050856040015181600181518110620028505762002850620070b3565b6001600160a01b0390921660209283029190910190910152604051634484077560e01b815261200590634484077590620028919084908c90600401620070c9565b600060405180830381600087803b158015620028ac57600080fd5b505af1158015620028c1573d6000803e3d6000fd5b505050508a1562002932576040516372f6ad8f60e11b81526001600160a01b0389811660048301528e1660248201526120059063e5ed5b1e90604401600060405180830381600087803b1580156200291857600080fd5b505af11580156200292d573d6000803e3d6000fd5b505050505b5050505050505050505050505050565b60005462010000900460ff16156200296d5760405163d7485e8f60e01b815260040160405180910390fd5b3360009081526017602052604090205460ff16156200299f5760405163b1d02c3d60e01b815260040160405180910390fd5b33620029ad600b82620061e6565b620029cb5760405163fdf4600b60e01b815260040160405180910390fd5b336000818152600d60205260409020600b8101544290620029f0906201518062007002565b111562002a1057604051631f92cdbd60e11b815260040160405180910390fd5b60088101546001600160401b03600160401b9091048116908516111562002a4a5760405163dc81db8560e01b815260040160405180910390fd5b60088101546000906001600160401b03908116908616101562002a8857600882015462002a829086906001600160401b0316620070f5565b62002aa2565b600882015462002aa2906001600160401b031686620070f5565b60088301546001600160401b039182169250600160801b90041681111562002add5760405163dc81db8560e01b815260040160405180910390fd5b60088201805467ffffffffffffffff19166001600160401b03871690811790915542600b8401556040519081526001600160a01b038416907f78cdd96edf59e09cfd4d26ef6ef6c92d166effe6a40970c54821206d541932cb9060200160405180910390a25050505050565b6060806060600062002b5c600b620064a3565b905080861015620031c857841562002b75578462002b77565b805b945060008562002b8888846200706d565b1162002ba05762002b9a87836200706d565b62002ba2565b855b9050806001600160401b0381111562002bbf5762002bbf6200709d565b60405190808252806020026020018201604052801562002be9578160200160208202803683370190505b509450806001600160401b0381111562002c075762002c076200709d565b60405190808252806020026020018201604052801562002c31578160200160208202803683370190505b509350806001600160401b0381111562002c4f5762002c4f6200709d565b60405190808252806020026020018201604052801562002c8457816020015b606081526020019060019003908162002c6e5790505b50925060005b81811015620031c557600062002cae62002ca5838b62007002565b600b90620064ae565b6001600160a01b038082166000908152600d6020908152604080832081516101408101835281548616815260018201548616938101939093526002810154909416908201526003830180549495509193909291606084019162002d119062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462002d3f9062006f83565b801562002d905780601f1062002d645761010080835404028352916020019162002d90565b820191906000526020600020905b81548152906001019060200180831162002d7257829003601f168201915b505050505081526020016004820160405180608001604052908160008201805462002dbb9062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462002de99062006f83565b801562002e3a5780601f1062002e0e5761010080835404028352916020019162002e3a565b820191906000526020600020905b81548152906001019060200180831162002e1c57829003601f168201915b5050505050815260200160018201805462002e559062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462002e839062006f83565b801562002ed45780601f1062002ea85761010080835404028352916020019162002ed4565b820191906000526020600020905b81548152906001019060200180831162002eb657829003601f168201915b5050505050815260200160028201805462002eef9062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462002f1d9062006f83565b801562002f6e5780601f1062002f425761010080835404028352916020019162002f6e565b820191906000526020600020905b81548152906001019060200180831162002f5057829003601f168201915b5050505050815260200160038201805462002f899062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462002fb79062006f83565b8015620030085780601f1062002fdc5761010080835404028352916020019162003008565b820191906000526020600020905b81548152906001019060200180831162002fea57829003601f168201915b505050919092525050508152604080516060808201835260088501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600984015460ff16151582840152600a84015490830152600b8301546080830152805161028081019182905260a09092019190600c84019060149082845b815481526020019060010190808311620030945750505050508152505090508060000151888481518110620030cd57620030cd620070b3565b60200260200101906001600160a01b031690816001600160a01b0316815250508060c00151620031665780604001516001600160a01b03166315d1f8986040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200313a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003160919062007018565b62003169565b60005b8784815181106200317e576200317e620070b3565b6020026020010181815250508060600151868481518110620031a457620031a4620070b3565b6020026020010181905250505080620031bd906200711f565b905062002c8a565b50505b92959194509250565b60005462010000900460ff1615620031fc5760405163d7485e8f60e01b815260040160405180910390fd5b3360009081526017602052604090205460ff16156200322e5760405163b1d02c3d60e01b815260040160405180910390fd5b336200323c600b82620061e6565b156200325b57604051635f28f62b60e01b815260040160405180910390fd5b6001600160a01b038881166000908152600f6020526040902054161515806200329c57506001600160a01b03881660009081526011602052604090205460ff165b15620032bb57604051631e6f587560e11b815260040160405180910390fd5b60006001600160a01b0316600e8888604051620032da92919062006fb9565b908152604051908190036020019020546001600160a01b0316141580620033245750601287876040516200331092919062006fb9565b9081526040519081900360200190205460ff165b1562003343576040516311fdb94760e01b815260040160405180910390fd5b60025434906200335d90670de0b6b3a76400009062007002565b8110156200337e576040516317b204bf60e11b815260040160405180910390fd5b6001600160a01b038916620033a657604051636520611b60e11b815260040160405180910390fd5b611388620033bb604086016020870162006acd565b6001600160401b03161180620034015750620033de604085016020860162006acd565b6001600160401b0316620033f6602086018662006acd565b6001600160401b0316115b806200344057506200341a604085016020860162006acd565b6001600160401b031662003435606086016040870162006acd565b6001600160401b0316115b156200345f5760405163dc81db8560e01b815260040160405180910390fd5b620034aa6200346f84806200713b565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250620064bc92505050565b620034c857604051635dba5ad760e01b815260040160405180910390fd5b620034d6888888886200665e565b620034f457604051631647e3cb60e11b815260040160405180910390fd5b600062003542836200350786806200713b565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506200678b92505050565b905062003551600b8462006855565b506001600160a01b038381166000818152600d6020526040902080546001600160a01b03199081168e8516178255600182018054821690931790925560028101805490921692841692909217905560038101620035b08a8c83620071ce565b508460048201620035c282826200729b565b5086905060088201620035d68282620073d8565b505042600b8201556001600160a01b038b81166000908152600f60205260409081902080546001600160a01b03191692871692909217909155518490600e9062003624908d908d9062006fb9565b90815260405190819003602001812080546001600160a01b039384166001600160a01b03199091161790558382169186811691908e16907faecd9fb95e79c75a3a1de93362c6be5fe6ab65770d8614be583884161cd8228d906200368c908f908f90620074a8565b60405180910390a45050505050505050505050565b604080516060810182526000808252602082018190529181019190915281620036cc600b82620061e6565b620036ea5760405163fdf4600b60e01b815260040160405180910390fd5b6001600160a01b0383166000908152600d602090815260409182902082516060810184526008909101546001600160401b038082168352600160401b8204811693830193909352600160801b90049091169181019190915291505b50919050565b33611001146200377357604051630f22c43960e41b8152611001600482015260240162000968565b6001600160a01b038082166000908152600f6020526040902054166200379b600b82620061e6565b620037b95760405163fdf4600b60e01b815260040160405180910390fd5b6001600160a01b038181166000908152600d60205260408082206002810154600754925163045bc4d160e41b81526004810193909352909316906345bc4d10906024016020604051808303816000875af11580156200381c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003842919062007018565b905060006009544262003856919062007002565b905062003864838262006295565b836001600160a01b03167f6e9a2ee7aee95665e3a774a212eb11441b217e3e4656ab9563793094689aabb282846001604051620038a49392919062007032565b60405180910390a26002830154604051633041949b60e01b81526001600160a01b039182166004820152908516602482015261200590633041949b90604401600060405180830381600087803b158015620038fe57600080fd5b505af115801562003913573d6000803e3d6000fd5b505050505050505050565b6000600e83836040516200393492919062006fb9565b908152604051908190036020019020546001600160a01b031690505b92915050565b600054610100900460ff1615808015620039775750600054600160ff909116105b80620039935750303b15801562003993575060005460ff166001145b620039f85760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840162000968565b6000805460ff19166001179055801562003a1c576000805461ff0019166101001790555b33411462003a3d5760405163022d8c9560e31b815260040160405180910390fd5b3a1562003a5d576040516383f1b1d360e01b815260040160405180910390fd5b611388600155686c6b935b8bbd4000006002908155670de0b6b3a7640000600355601d60045562093a806005556006819055678ac7230489e80000600755680ad78ebc5ac62000006008556202a30060095562278d00600a5560145560408051606081810183528282529182919062008671602083013980602001905181019062003ae9919062007517565b9150604051806060016040528060408152602001620086716040913980602001905181019062003b1a9190620075c1565b905060005b825181101562003b895760016011600085848151811062003b445762003b44620070b3565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905562003b81816200711f565b905062003b1f565b5060005b815181101562003bfa576001601283838151811062003bb05762003bb0620070b3565b602002602001015160405162003bc79190620076d7565b908152604051908190036020019020805491151560ff1990921691909117905562003bf2816200711f565b905062003b8d565b5050601680546001600160a01b03191673df87f0e2b8519ea2dd4abd8b639cdd628497ed2517905550801562000ebe576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b6016546001600160a01b0316331462003c985760405163f2771a9960e01b815260040160405180910390fd5b6000805462ff00001916620100001781556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e7529190a1565b60005462010000900460ff161562003cfd5760405163d7485e8f60e01b815260040160405180910390fd5b3360009081526017602052604090205460ff161562003d2f5760405163b1d02c3d60e01b815260040160405180910390fd5b8162003d3d600b82620061e6565b62003d5b5760405163fdf4600b60e01b815260040160405180910390fd5b600354349081101562003d815760405163dc6f0bdd60e01b815260040160405180910390fd5b6001600160a01b038085166000908152600d602090815260408083208151610140810183528154861681526001820154861693810193909352600281015490941690820152600383018054339491606084019162003ddf9062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462003e0d9062006f83565b801562003e5e5780601f1062003e325761010080835404028352916020019162003e5e565b820191906000526020600020905b81548152906001019060200180831162003e4057829003601f168201915b505050505081526020016004820160405180608001604052908160008201805462003e899062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462003eb79062006f83565b801562003f085780601f1062003edc5761010080835404028352916020019162003f08565b820191906000526020600020905b81548152906001019060200180831162003eea57829003601f168201915b5050505050815260200160018201805462003f239062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462003f519062006f83565b801562003fa25780601f1062003f765761010080835404028352916020019162003fa2565b820191906000526020600020905b81548152906001019060200180831162003f8457829003601f168201915b5050505050815260200160028201805462003fbd9062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462003feb9062006f83565b80156200403c5780601f1062004010576101008083540402835291602001916200403c565b820191906000526020600020905b8154815290600101906020018083116200401e57829003601f168201915b50505050508152602001600382018054620040579062006f83565b80601f0160208091040260200160405190810160405280929190818152602001828054620040859062006f83565b8015620040d65780601f10620040aa57610100808354040283529160200191620040d6565b820191906000526020600020905b815481529060010190602001808311620040b857829003601f168201915b505050919092525050508152604080516060808201835260088501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600984015460ff16151582840152600a84015490830152600b8301546080830152805161028081019182905260a09092019190600c84019060149082845b815481526020019060010190808311620041625750505050508152505090508060c001518015620041a55750856001600160a01b0316826001600160a01b031614155b15620041c457604051636468920360e01b815260040160405180910390fd5b60408082015190516317066a5760e21b81526001600160a01b0384811660048301526000921690635c19a95c90869060240160206040518083038185885af115801562004215573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906200423c919062007018565b9050826001600160a01b0316876001600160a01b03167f24d7bda8602b916d64417f0dbfe2e2e88ec9b1157bd9f596dfdb91ba26624e0483876040516200428d929190918252602082015260400190565b60405180910390a36040828101519051633041949b60e01b81526001600160a01b039182166004820152908416602482015261200590633041949b90604401600060405180830381600087803b158015620042e757600080fd5b505af1158015620042fc573d6000803e3d6000fd5b5050505085156200436e576040516372f6ad8f60e11b81526001600160a01b038085166004830152881660248201526120059063e5ed5b1e906044015b600060405180830381600087803b1580156200435457600080fd5b505af115801562004369573d6000803e3d6000fd5b505050505b50505050505050565b620043a36040518060800160405280606081526020016060815260200160608152602001606081525090565b81620043b1600b82620061e6565b620043cf5760405163fdf4600b60e01b815260040160405180910390fd5b6001600160a01b0383166000908152600d602052604090819020815160808101909252600401805482908290620044069062006f83565b80601f0160208091040260200160405190810160405280929190818152602001828054620044349062006f83565b8015620044855780601f10620044595761010080835404028352916020019162004485565b820191906000526020600020905b8154815290600101906020018083116200446757829003601f168201915b50505050508152602001600182018054620044a09062006f83565b80601f0160208091040260200160405190810160405280929190818152602001828054620044ce9062006f83565b80156200451f5780601f10620044f3576101008083540402835291602001916200451f565b820191906000526020600020905b8154815290600101906020018083116200450157829003601f168201915b505050505081526020016002820180546200453a9062006f83565b80601f0160208091040260200160405190810160405280929190818152602001828054620045689062006f83565b8015620045b95780601f106200458d57610100808354040283529160200191620045b9565b820191906000526020600020905b8154815290600101906020018083116200459b57829003601f168201915b50505050508152602001600382018054620045d49062006f83565b80601f0160208091040260200160405190810160405280929190818152602001828054620046029062006f83565b8015620046535780601f10620046275761010080835404028352916020019162004653565b820191906000526020600020905b8154815290600101906020018083116200463557829003601f168201915b505050505081525050915050919050565b60005462010000900460ff16156200468f5760405163d7485e8f60e01b815260040160405180910390fd5b3360009081526017602052604090205460ff1615620046c15760405163b1d02c3d60e01b815260040160405180910390fd5b81620046cf600b82620061e6565b620046ed5760405163fdf4600b60e01b815260040160405180910390fd5b6001600160a01b038381166000908152600d6020526040808220600201549051635569f64b60e11b8152336004820152602481018690529192169063aad3ec96906044016020604051808303816000875af115801562004751573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004777919062007018565b9050336001600160a01b0316846001600160a01b03167ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd399268383604051620047bf91815260200190565b60405180910390a350505050565b3361100714620047f557604051630f22c43960e41b8152611007600482015260240162000968565b620048626040518060400160405280601081526020016f1d1c985b9cd9995c91d85cd31a5b5a5d60821b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200686c9050565b15620049105760208114620048945783838383604051630a5a604160e01b8152600401620009689493929190620076f5565b604080516020601f8401819004810282018101909252828152600091620048d7918585808385018382808284376000920191909152509293925050620068c99050565b90506108fc811015620049075784848484604051630a5a604160e01b8152600401620009689493929190620076f5565b600155620055e6565b620049816040518060400160405280601481526020017336b4b729b2b6332232b632b3b0ba34b7b721272160611b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200686c9050565b1562004a365760208114620049b35783838383604051630a5a604160e01b8152600401620009689493929190620076f5565b604080516020601f8401819004810282018101909252828152600091620049f6918585808385018382808284376000920191909152509293925050620068c99050565b9050683635c9adc5dea0000081101562004a2d5784848484604051630a5a604160e01b8152600401620009689493929190620076f5565b600255620055e6565b62004aa9604051806040016040528060168152602001756d696e44656c65676174696f6e424e424368616e676560501b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200686c9050565b1562004b5d576020811462004adb5783838383604051630a5a604160e01b8152600401620009689493929190620076f5565b604080516020601f840181900481028201810190925282815260009162004b1e918585808385018382808284376000920191909152509293925050620068c99050565b905067016345785d8a000081101562004b545784848484604051630a5a604160e01b8152600401620009689493929190620076f5565b600355620055e6565b62004bce604051806040016040528060148152602001736d6178456c656374656456616c696461746f727360601b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200686c9050565b1562004c88576020811462004c005783838383604051630a5a604160e01b8152600401620009689493929190620076f5565b604080516020601f840181900481028201810190925282815260009162004c43918585808385018382808284376000920191909152509293925050620068c99050565b9050600181108062004c5657506101f481115b1562004c7f5784848484604051630a5a604160e01b8152600401620009689493929190620076f5565b600455620055e6565b62004cf16040518060400160405280600c81526020016b1d5b989bdb9914195c9a5bd960a21b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200686c9050565b1562004da0576020811462004d235783838383604051630a5a604160e01b8152600401620009689493929190620076f5565b604080516020601f840181900481028201810190925282815260009162004d66918585808385018382808284376000920191909152509293925050620068c99050565b90506203f48081101562004d975784848484604051630a5a604160e01b8152600401620009689493929190620076f5565b600555620055e6565b62004e0e60405180604001604052806011815260200170726564656c65676174654665655261746560781b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200686c9050565b1562004ebb576020811462004e405783838383604051630a5a604160e01b8152600401620009689493929190620076f5565b604080516020601f840181900481028201810190925282815260009162004e83918585808385018382808284376000920191909152509293925050620068c99050565b9050606481111562004eb25784848484604051630a5a604160e01b8152600401620009689493929190620076f5565b600655620055e6565b62004f2b60405180604001604052806013815260200172191bdddb9d1a5b5954db185cda105b5bdd5b9d606a1b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200686c9050565b1562004fec576020811462004f5d5783838383604051630a5a604160e01b8152600401620009689493929190620076f5565b604080516020601f840181900481028201810190925282815260009162004fa0918585808385018382808284376000920191909152509293925050620068c99050565b9050674563918244f4000081108062004fba575060085481115b1562004fe35784848484604051630a5a604160e01b8152600401620009689493929190620076f5565b600755620055e6565b6200505a6040518060400160405280601181526020017019995b1bdb9e54db185cda105b5bdd5b9d607a1b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200686c9050565b156200511d57602081146200508c5783838383604051630a5a604160e01b8152600401620009689493929190620076f5565b604080516020601f8401819004810282018101909252828152600091620050cf918585808385018382808284376000920191909152509293925050620068c99050565b905068056bc75e2d63100000811080620050eb57506007548111155b15620051145784848484604051630a5a604160e01b8152600401620009689493929190620076f5565b600855620055e6565b6200518a6040518060400160405280601081526020016f646f776e74696d654a61696c54696d6560801b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200686c9050565b15620052475760208114620051bc5783838383604051630a5a604160e01b8152600401620009689493929190620076f5565b604080516020601f8401819004810282018101909252828152600091620051ff918585808385018382808284376000920191909152509293925050620068c99050565b90506202a300811080620052155750600a548110155b156200523e5784848484604051630a5a604160e01b8152600401620009689493929190620076f5565b600955620055e6565b620052b26040518060400160405280600e81526020016d66656c6f6e794a61696c54696d6560901b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200686c9050565b156200536f5760208114620052e45783838383604051630a5a604160e01b8152600401620009689493929190620076f5565b604080516020601f840181900481028201810190925282815260009162005327918585808385018382808284376000920191909152509293925050620068c99050565b9050620d2f008110806200533d57506009548111155b15620053665784848484604051630a5a604160e01b8152600401620009689493929190620076f5565b600a55620055e6565b620053d86040518060400160405280600c81526020016b66656c6f6e7950657244617960a01b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200686c9050565b156200548457602081146200540a5783838383604051630a5a604160e01b8152600401620009689493929190620076f5565b604080516020601f84018190048102820181019092528281526000916200544d918585808385018382808284376000920191909152509293925050620068c99050565b9050806000036200547b5784848484604051630a5a604160e01b8152600401620009689493929190620076f5565b601455620055e6565b620054ef6040518060400160405280600e81526020016d30b9b9b2ba283937ba32b1ba37b960911b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200686c9050565b15620055c35760148114620055215783838383604051630a5a604160e01b8152600401620009689493929190620076f5565b600062005569601484848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050620068c99050565b90506001600160a01b0381166200559d5784848484604051630a5a604160e01b8152600401620009689493929190620076f5565b601680546001600160a01b0319166001600160a01b0392909216919091179055620055e6565b838383836040516325ee20d560e21b8152600401620009689493929190620076f5565b7ff1ce9b2cbf50eeb05769a29e2543fd350cab46894a7dd9978a12d534bb20e633848484846040516200561d9493929190620076f5565b60405180910390a150505050565b60005462010000900460ff1615620056565760405163d7485e8f60e01b815260040160405180910390fd5b3360009081526017602052604090205460ff1615620056885760405163b1d02c3d60e01b815260040160405180910390fd5b816000816001600160401b03811115620056a657620056a66200709d565b604051908082528060200260200182016040528015620056d0578160200160208202803683370190505b5090506000805b83811015620057ce5762005719878783818110620056f957620056f9620070b3565b905060200201602081019062005710919062006971565b600b90620061e6565b620057375760405163fdf4600b60e01b815260040160405180910390fd5b600d6000888884818110620057505762005750620070b3565b905060200201602081019062005767919062006971565b6001600160a01b0390811682526020820192909252604001600020600201548451911692508290849083908110620057a357620057a3620070b3565b6001600160a01b0390921660209283029190910190910152620057c6816200711f565b9050620056d7565b50604051634484077560e01b81526120059063448407759062001b349085908890600401620070c9565b33611001146200582057604051630f22c43960e41b8152611001600482015260240162000968565b6001600160a01b038082166000908152600f60205260409020541662005848600b82620061e6565b620058665760405163fdf4600b60e01b815260040160405180910390fd5b6001600160a01b0381166000908152600d60209081526040808320601454428086526015909452919093205410620058b15760405163413361db60e01b815260040160405180910390fd5b6000818152601560205260408120805460019290620058d290849062007002565b909155506000905080620058e785826200620b565b91509150816200590a57604051631b919bb160e11b815260040160405180910390fd5b600284015460085460405163045bc4d160e41b815260048101919091526000916001600160a01b0316906345bc4d10906024016020604051808303816000875af11580156200595d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005983919062007018565b905062005991858362006295565b856001600160a01b03167f6e9a2ee7aee95665e3a774a212eb11441b217e3e4656ab9563793094689aabb283836000604051620059d19392919062007032565b60405180910390a26002850154604051633041949b60e01b81526001600160a01b039182166004820152908716602482015261200590633041949b9060440162004339565b600080606081808562005a2b600b82620061e6565b62005a495760405163fdf4600b60e01b815260040160405180910390fd5b6001600160a01b038088166000908152600d6020908152604080832081516101408101835281548616815260018201548616938101939093526002810154909416908201526003830180549293919260608401919062005aa99062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462005ad79062006f83565b801562005b285780601f1062005afc5761010080835404028352916020019162005b28565b820191906000526020600020905b81548152906001019060200180831162005b0a57829003601f168201915b505050505081526020016004820160405180608001604052908160008201805462005b539062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462005b819062006f83565b801562005bd25780601f1062005ba65761010080835404028352916020019162005bd2565b820191906000526020600020905b81548152906001019060200180831162005bb457829003601f168201915b5050505050815260200160018201805462005bed9062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462005c1b9062006f83565b801562005c6c5780601f1062005c405761010080835404028352916020019162005c6c565b820191906000526020600020905b81548152906001019060200180831162005c4e57829003601f168201915b5050505050815260200160028201805462005c879062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462005cb59062006f83565b801562005d065780601f1062005cda5761010080835404028352916020019162005d06565b820191906000526020600020905b81548152906001019060200180831162005ce857829003601f168201915b5050505050815260200160038201805462005d219062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462005d4f9062006f83565b801562005da05780601f1062005d745761010080835404028352916020019162005da0565b820191906000526020600020905b81548152906001019060200180831162005d8257829003601f168201915b505050919092525050508152604080516060808201835260088501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600984015460ff16151582840152600a84015490830152600b8301546080830152805161028081019182905260a09092019190600c84019060149082845b81548152602001906001019080831162005e2c5750505091909252505081516040830151606084015160c085015160e090950151929d919c509a50929850965090945050505050565b60005462010000900460ff161562005ea05760405163d7485e8f60e01b815260040160405180910390fd5b3360009081526017602052604090205460ff161562005ed25760405163b1d02c3d60e01b815260040160405180910390fd5b3362005ee0600b82620061e6565b62005efe5760405163fdf4600b60e01b815260040160405180910390fd5b62005f0e6200346f83806200713b565b62005f2c57604051635dba5ad760e01b815260040160405180910390fd5b336000818152600d60205260409020600b810154429062005f51906201518062007002565b111562005f7157604051631f92cdbd60e11b815260040160405180910390fd5b836004820162005f8282826200729b565b505042600b8201556040516001600160a01b038316907f85d6366b336ade7f106987ec7a8eac1e8799e508aeab045a39d2f63e0dc969d990600090a250505050565b60005462010000900460ff161562005fef5760405163d7485e8f60e01b815260040160405180910390fd5b3360009081526017602052604090205460ff1615620060215760405163b1d02c3d60e01b815260040160405180910390fd5b336200602f600b82620061e6565b6200604d5760405163fdf4600b60e01b815260040160405180910390fd5b6200605b858585856200665e565b6200607957604051631647e3cb60e11b815260040160405180910390fd5b60006001600160a01b0316600e86866040516200609892919062006fb9565b908152604051908190036020019020546001600160a01b0316141580620060e2575060128585604051620060ce92919062006fb9565b9081526040519081900360200190205460ff165b1562006101576040516311fdb94760e01b815260040160405180910390fd5b336000818152600d60205260409020600b810154429062006126906201518062007002565b11156200614657604051631f92cdbd60e11b815260040160405180910390fd5b6003810162006157878983620071ce565b5042600b8201556040518290600e9062006175908a908a9062006fb9565b90815260405190819003602001812080546001600160a01b039384166001600160a01b0319909116179055908316907f783156582145bd0ff7924fae6953ba054cf1233eb60739a200ddb10de068ff0d90620061d5908a908a90620074a8565b60405180910390a250505050505050565b6001600160a01b038116600090815260018301602052604081205415155b9392505050565b600080600084846040516020016200622592919062007720565b60408051601f198184030181529181528151602092830120600081815260109093529120549091504281111562006265576000809350935050506200628e565b600a5462006274904262007002565b600092835260106020526040909220829055506001925090505b9250929050565b60006001620062a5600b620064a3565b620062b191906200706d565b6013541080159150620062fd5760018301546040516001600160a01b03909116907f2afdc18061ac21cff7d9f11527ab9c8dec6fabd4edf6f894ed634bebd6a20d4590600090a2505050565b82600a01548211156200631257600a83018290555b600983015460ff16620063855760098301805460ff19166001908117909155601380546000906200634590849062007002565b909155505060018301546040516001600160a01b03909116907f4905ac32602da3fb8b4b7b00c285e5fc4c6c2308cc908b4a1e4e9625a29c90a390600090a25b505050565b6001600160a01b0381166000908152600d60205260409020600981015460ff1615620063b4575050565b6002805490820154604051630913db4760e01b81526001600160a01b03858116600483015290911690630913db4790602401602060405180830381865afa15801562006404573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200642a919062007018565b10156200649f576200643e81600062006295565b80546040516372c4db0f60e11b81526001600160a01b0390911660048201526110009063e589b61e90602401600060405180830381600087803b1580156200648557600080fd5b505af11580156200649a573d6000803e3d6000fd5b505050505b5050565b600062003950825490565b6000620062048383620068ce565b600080829050600381511080620064d4575060098151115b15620064e35750600092915050565b604181600081518110620064fb57620064fb620070b3565b016020015160f81c10806200652d5750605a81600081518110620065235762006523620070b3565b016020015160f81c115b156200653c5750600092915050565b60015b815181101562006654576030828281518110620065605762006560620070b3565b016020015160f81c10806200659157506039828281518110620065875762006587620070b3565b016020015160f81c115b8015620065e157506041828281518110620065b057620065b0620070b3565b016020015160f81c1080620065e15750605a828281518110620065d757620065d7620070b3565b016020015160f81c115b80156200663157506061828281518110620066005762006600620070b3565b016020015160f81c1080620066315750607a828281518110620066275762006627620070b3565b016020015160f81c115b1562006641575060009392505050565b6200664c816200711f565b90506200653f565b5060019392505050565b600060308414158062006672575060608214155b15620066815750600062006783565b60008585466040516020016200669a939291906200776a565b60408051808303601f1901815282825280516020918201208184528383019092529092506000919060208201818036833701905050905081602082015260008186868a8a604051602001620066f49594939291906200777c565b60408051808303601f190181526001808452838301909252925060009190602082018180368337019050509050815160016020830182602086016066600019fa6200673e57600080fd5b50600081600081518110620067575762006757620070b3565b016020015160f81c905060018114620067795760009550505050505062006783565b6001955050505050505b949350505050565b60008061200361dead604051620067a2906200694d565b6001600160a01b03928316815291166020820152606060408201819052600090820152608001604051809103906000f080158015620067e5573d6000803e3d6000fd5b509050806001600160a01b031663f399e22e3486866040518463ffffffff1660e01b815260040162006819929190620077b4565b6000604051808303818588803b1580156200683357600080fd5b505af115801562006848573d6000803e3d6000fd5b5093979650505050505050565b600062006204836001600160a01b038416620068fb565b600081604051602001620068819190620076d7565b6040516020818303038152906040528051906020012083604051602001620068aa9190620076d7565b6040516020818303038152906040528051906020012014905092915050565b015190565b6000826000018281548110620068e857620068e8620070b3565b9060005260206000200154905092915050565b6000818152600183016020526040812054620069445750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915562003950565b50600062003950565b610e9680620077db83390190565b6001600160a01b038116811462000ebe57600080fd5b6000602082840312156200698457600080fd5b813562006204816200695b565b60008083601f840112620069a457600080fd5b5081356001600160401b03811115620069bc57600080fd5b6020830191508360208285010111156200628e57600080fd5b60008060208385031215620069e957600080fd5b82356001600160401b0381111562006a0057600080fd5b62006a0e8582860162006991565b90969095509350505050565b6000806040838503121562006a2e57600080fd5b823562006a3b816200695b565b946020939093013593505050565b8035801515811462006a5a57600080fd5b919050565b6000806000806080858703121562006a7657600080fd5b843562006a83816200695b565b9350602085013562006a95816200695b565b92506040850135915062006aac6060860162006a49565b905092959194509250565b6001600160401b038116811462000ebe57600080fd5b60006020828403121562006ae057600080fd5b8135620062048162006ab7565b6000806040838503121562006b0157600080fd5b50508035926020909101359150565b600081518084526020808501945080840160005b8381101562006b4b5781516001600160a01b03168752958201959082019060010162006b24565b509495945050505050565b60005b8381101562006b7357818101518382015260200162006b59565b50506000910152565b6000815180845262006b9681602086016020860162006b56565b601f01601f19169290920160200192915050565b60808152600062006bbf608083018762006b10565b82810360208481019190915286518083528782019282019060005b8181101562006bf85784518352938301939183019160010162006bda565b5050848103604086015286518082528282019350600581901b8201830183890160005b8381101562006c4d57601f1985840301875262006c3a83835162006b7c565b9686019692509085019060010162006c1b565b5050809550505050505082606083015295945050505050565b6000608082840312156200374557600080fd5b600080600080600080600087890360e081121562006c9657600080fd5b883562006ca3816200695b565b975060208901356001600160401b038082111562006cc057600080fd5b62006cce8c838d0162006991565b909950975060408b013591508082111562006ce857600080fd5b62006cf68c838d0162006991565b90975095508591506060605f198401121562006d1157600080fd5b60608b01945060c08b013592508083111562006d2c57600080fd5b505062006d3c8a828b0162006c66565b91505092959891949750929550565b6000806040838503121562006d5f57600080fd5b823562006d6c816200695b565b915062006d7c6020840162006a49565b90509250929050565b60208152600082516080602084015262006da360a084018262006b7c565b90506020840151601f198085840301604086015262006dc3838362006b7c565b9250604086015191508085840301606086015262006de2838362006b7c565b925060608601519150808584030160808601525062006e02828262006b7c565b95945050505050565b6000806000806040858703121562006e2257600080fd5b84356001600160401b038082111562006e3a57600080fd5b62006e488883890162006991565b9096509450602087013591508082111562006e6257600080fd5b5062006e718782880162006991565b95989497509550505050565b60008060006040848603121562006e9357600080fd5b83356001600160401b038082111562006eab57600080fd5b818601915086601f83011262006ec057600080fd5b81358181111562006ed057600080fd5b8760208260051b850101111562006ee657600080fd5b6020928301955093505084013562006efe816200695b565b809150509250925092565b6001600160a01b0386811682528516602082015260a06040820181905260009062006f379083018662006b7c565b931515606083015250608001529392505050565b60006020828403121562006f5e57600080fd5b81356001600160401b0381111562006f7557600080fd5b620067838482850162006c66565b600181811c9082168062006f9857607f821691505b6020821081036200374557634e487b7160e01b600052602260045260246000fd5b8183823760009101908152919050565b634e487b7160e01b600052601160045260246000fd5b60008262006ffd57634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111562003950576200395062006fc9565b6000602082840312156200702b57600080fd5b5051919050565b8381526020810183905260608101600383106200705f57634e487b7160e01b600052602160045260246000fd5b826040830152949350505050565b8181038181111562003950576200395062006fc9565b808202811582820484141762003950576200395062006fc9565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b604081526000620070de604083018562006b10565b905060018060a01b03831660208301529392505050565b6001600160401b0382811682821603908082111562007118576200711862006fc9565b5092915050565b60006001820162007134576200713462006fc9565b5060010190565b6000808335601e198436030181126200715357600080fd5b8301803591506001600160401b038211156200716e57600080fd5b6020019150368190038213156200628e57600080fd5b601f8211156200638557600081815260208120601f850160051c81016020861015620071ad5750805b601f850160051c820191505b818110156200649a57828155600101620071b9565b6001600160401b03831115620071e857620071e86200709d565b6200720083620071f9835462006f83565b8362007184565b6000601f8411600181146200723757600085156200721e5750838201355b600019600387901b1c1916600186901b17835562007294565b600083815260209020601f19861690835b828110156200726a578685013582556020948501946001909201910162007248565b5086821015620072885760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b620072a782836200713b565b6001600160401b03811115620072c157620072c16200709d565b620072d981620072d2855462006f83565b8562007184565b6000601f821160018114620073105760008315620072f75750838201355b600019600385901b1c1916600184901b1785556200736d565b600085815260209020601f19841690835b8281101562007343578685013582556020948501946001909201910162007321565b5084821015620073615760001960f88660031b161c19848701351681555b505060018360011b0185555b505050506200738060208301836200713b565b62007390818360018601620071ce565b5050620073a160408301836200713b565b620073b1818360028601620071ce565b5050620073c260608301836200713b565b620073d2818360038601620071ce565b50505050565b8135620073e58162006ab7565b6001600160401b03811690508154816001600160401b031982161783556020840135620074128162006ab7565b6fffffffffffffffff0000000000000000604091821b166fffffffffffffffffffffffffffffffff19831684178117855590850135620074528162006ab7565b6001600160c01b0319929092169092179190911760809190911b67ffffffffffffffff60801b1617905550565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b602081526000620067836020830184866200747f565b604051601f8201601f191681016001600160401b0381118282101715620074e957620074e96200709d565b604052919050565b60006001600160401b038211156200750d576200750d6200709d565b5060051b60200190565b600060208083850312156200752b57600080fd5b82516001600160401b038111156200754257600080fd5b8301601f810185136200755457600080fd5b80516200756b6200756582620074f1565b620074be565b81815260059190911b820183019083810190878311156200758b57600080fd5b928401925b82841015620075b6578351620075a6816200695b565b8252928401929084019062007590565b979650505050505050565b60006020808385031215620075d557600080fd5b82516001600160401b0380821115620075ed57600080fd5b8185019150601f86818401126200760357600080fd5b8251620076146200756582620074f1565b81815260059190911b840185019085810190898311156200763457600080fd5b8686015b83811015620076c957805186811115620076525760008081fd5b8701603f81018c13620076655760008081fd5b888101516040888211156200767e576200767e6200709d565b62007691828901601f19168c01620074be565b8281528e82848601011115620076a75760008081fd5b620076b8838d830184870162006b56565b865250505091870191870162007638565b509998505050505050505050565b60008251620076eb81846020870162006b56565b9190910192915050565b6040815260006200770b6040830186886200747f565b8281036020840152620075b68185876200747f565b6bffffffffffffffffffffffff198360601b1681526000600383106200775657634e487b7160e01b600052602160045260246000fd5b5060f89190911b6014820152601501919050565b82848237909101908152602001919050565b6000865162007790818460208b0162006b56565b82018587823760009086019081528385823760009301928352509095945050505050565b6001600160a01b0383168152604060208201819052600090620067839083018462006b7c56fe608060405260405162000e9638038062000e96833981016040819052620000269162000497565b828162000036828260006200004d565b50620000449050826200008a565b505050620005ca565b6200005883620000e5565b600082511180620000665750805b1562000085576200008383836200012760201b620001691760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f620000b562000156565b604080516001600160a01b03928316815291841660208301520160405180910390a1620000e2816200018f565b50565b620000f08162000244565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606200014f838360405180606001604052806027815260200162000e6f60279139620002f8565b9392505050565b60006200018060008051602062000e4f83398151915260001b6200037760201b620001951760201c565b546001600160a01b0316919050565b6001600160a01b038116620001fa5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b806200022360008051602062000e4f83398151915260001b6200037760201b620001951760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6200025a816200037a60201b620001981760201c565b620002be5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401620001f1565b80620002237f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b6200037760201b620001951760201c565b6060600080856001600160a01b03168560405162000317919062000577565b600060405180830381855af49150503d806000811462000354576040519150601f19603f3d011682016040523d82523d6000602084013e62000359565b606091505b5090925090506200036d8683838762000389565b9695505050505050565b90565b6001600160a01b03163b151590565b60608315620003fd578251600003620003f5576001600160a01b0385163b620003f55760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401620001f1565b508162000409565b62000409838362000411565b949350505050565b815115620004225781518083602001fd5b8060405162461bcd60e51b8152600401620001f1919062000595565b80516001600160a01b03811681146200045657600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200048e57818101518382015260200162000474565b50506000910152565b600080600060608486031215620004ad57600080fd5b620004b8846200043e565b9250620004c8602085016200043e565b60408501519092506001600160401b0380821115620004e657600080fd5b818601915086601f830112620004fb57600080fd5b8151818111156200051057620005106200045b565b604051601f8201601f19908116603f011681019083821181831017156200053b576200053b6200045b565b816040528281528960208487010111156200055557600080fd5b6200056883602083016020880162000471565b80955050505050509250925092565b600082516200058b81846020870162000471565b9190910192915050565b6020815260008251806020840152620005b681604085016020870162000471565b601f01601f19169190910160400192915050565b61087580620005da6000396000f3fe60806040523661001357610011610017565b005b6100115b61001f6101a7565b6001600160a01b0316330361015f5760606001600160e01b0319600035166364d3180d60e11b810161005a576100536101da565b9150610157565b63587086bd60e11b6001600160e01b031982160161007a57610053610231565b63070d7c6960e41b6001600160e01b031982160161009a57610053610277565b621eb96f60e61b6001600160e01b03198216016100b9576100536102a8565b63a39f25e560e01b6001600160e01b03198216016100d9576100536102e8565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101676102fc565b565b606061018e83836040518060600160405280602781526020016108426027913961030c565b9392505050565b90565b6001600160a01b03163b151590565b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101e4610384565b60006101f33660048184610695565b81019061020091906106db565b905061021d8160405180602001604052806000815250600061038f565b505060408051602081019091526000815290565b60606000806102433660048184610695565b810190610250919061070c565b915091506102608282600161038f565b604051806020016040528060008152509250505090565b6060610281610384565b60006102903660048184610695565b81019061029d91906106db565b905061021d816103bb565b60606102b2610384565b60006102bc6101a7565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102f2610384565b60006102bc610412565b610167610307610412565b610421565b6060600080856001600160a01b03168560405161032991906107f2565b600060405180830381855af49150503d8060008114610364576040519150601f19603f3d011682016040523d82523d6000602084013e610369565b606091505b509150915061037a86838387610445565b9695505050505050565b341561016757600080fd5b610398836104c6565b6000825111806103a55750805b156103b6576103b48383610169565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103e46101a7565b604080516001600160a01b03928316815291841660208301520160405180910390a161040f81610506565b50565b600061041c6105af565b905090565b3660008037600080366000845af43d6000803e808015610440573d6000f35b3d6000fd5b606083156104b45782516000036104ad576001600160a01b0385163b6104ad5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014e565b50816104be565b6104be83836105d7565b949350505050565b6104cf81610601565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b03811661056b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014e565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101cb565b8151156105e75781518083602001fd5b8060405162461bcd60e51b815260040161014e919061080e565b6001600160a01b0381163b61066e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014e565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61058e565b600080858511156106a557600080fd5b838611156106b257600080fd5b5050820193919092039150565b80356001600160a01b03811681146106d657600080fd5b919050565b6000602082840312156106ed57600080fd5b61018e826106bf565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561071f57600080fd5b610728836106bf565b9150602083013567ffffffffffffffff8082111561074557600080fd5b818501915085601f83011261075957600080fd5b81358181111561076b5761076b6106f6565b604051601f8201601f19908116603f01168101908382118183101715610793576107936106f6565b816040528281528860208487010111156107ac57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60005b838110156107e95781810151838201526020016107d1565b50506000910152565b600082516108048184602087016107ce565b9190910192915050565b602081526000825180602084015261082d8160408501602087016107ce565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000ab53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c656400000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000a164736f6c6343000811000a", + Code: "608060405260043610620003265760003560e01c80638a4d3fa811620001b1578063d6ca429d11620000ee578063e992aaf511620000a1578063f80a34021162000078578063f80a34021462000a1a578063fb50b31f1462000a3f578063fc0c5ff11462000a64578063ff69ab611462000a7c57600080fd5b8063e992aaf514620009ae578063efdbf0e114620009c6578063f1f74d841462000a0257600080fd5b8063d6ca429d14620008fa578063d7c2dfc8146200091f578063d8ca511f1462000944578063daacdb66146200095c578063de88700b1462000974578063e8f67c3b146200099657600080fd5b8063b187bd261162000164578063c38fbec8116200013b578063c38fbec8146200086c578063c473318f1462000891578063cbb04d9d14620008a9578063d115a20614620008e257600080fd5b8063b187bd26146200080f578063baa7199e146200082f578063bdceadf3146200085457600080fd5b80638a4d3fa814620007375780638cd22b221462000755578063982ef0a7146200077a578063a43569b31462000791578063aad3ec9614620007c5578063ac43175114620007ea57600080fd5b80634d99dd161162000280578063663706d3116200023357806376e7d6d6116200020a57806376e7d6d614620006b55780638129fc1c14620006cd5780638456cb5914620006e557806386d5450614620006fd57600080fd5b8063663706d314620006075780636ec01b27146200063857806375cc7d89146200069057600080fd5b80634d99dd1614620005325780634e6fd6c4146200055757806359491871146200056f5780635e7cc1c9146200059457806363a036b514620005b957806364028fbd14620005f057600080fd5b80633840998811620002d9578063384099881462000441578063417c73a71462000459578063449ecfe6146200047e57806345211bfd14620004a35780634838d16514620004c85780634a49ac4c146200050d57600080fd5b8063046f7da2146200034d5780630661806e1462000365578063092193ab14620003905780630e9fbf5114620003a757806317b4f35314620003cc5780631fa8882b146200042a57600080fd5b3662000348576000546301000000900460ff166001146200034657600080fd5b005b600080fd5b3480156200035a57600080fd5b506200034662000a94565b3480156200037257600080fd5b506200037d60025481565b6040519081526020015b60405180910390f35b62000346620003a136600462007042565b62000af5565b348015620003b457600080fd5b5062000346620003c6366004620070ad565b6200107b565b348015620003d957600080fd5b5062000411620003eb366004620071d3565b80516020818301810180516011825292820191909301209152546001600160a01b031681565b6040516001600160a01b03909116815260200162000387565b3480156200043757600080fd5b506200037d603c81565b3480156200044e57600080fd5b506200037d60035481565b3480156200046657600080fd5b50620003466200047836600462007042565b62001378565b3480156200048b57600080fd5b50620003466200049d36600462007042565b620013c8565b348015620004b057600080fd5b5062000346620004c236600462007042565b6200157b565b348015620004d557600080fd5b50620004fc620004e736600462007042565b601a6020526000908152604090205460ff1681565b604051901515815260200162000387565b3480156200051a57600080fd5b50620003466200052c36600462007042565b62001756565b3480156200053f57600080fd5b50620003466200055136600462007220565b620017a3565b3480156200056457600080fd5b506200041161dead81565b3480156200057c57600080fd5b50620003466200058e36600462007265565b62001dc0565b348015620005a157600080fd5b5062000346620005b3366004620072d3565b62002ba7565b348015620005c657600080fd5b50620005de620005d8366004620072f3565b62002dad565b604051620003879493929190620073b0565b62000346620006013660046200746c565b6200343f565b3480156200061457600080fd5b506200037d6200062636600462007042565b60106020526000908152604090205481565b3480156200064557600080fd5b506200065d6200065736600462007042565b62003a14565b6040805182516001600160401b039081168252602080850151821690830152928201519092169082015260600162000387565b3480156200069d57600080fd5b5062000346620006af36600462007042565b62003abe565b348015620006c257600080fd5b506200037d60095481565b348015620006da57600080fd5b506200034662003c90565b348015620006f257600080fd5b506200034662003fa6565b3480156200070a57600080fd5b50620004116200071c36600462007042565b600f602052600090815260409020546001600160a01b031681565b3480156200074457600080fd5b506200037d670de0b6b3a764000081565b3480156200076257600080fd5b506200037d6200077436600462007220565b6200400c565b620003466200078b36600462007544565b620040c5565b3480156200079e57600080fd5b50620007b6620007b036600462007042565b62004761565b6040516200038791906200757e565b348015620007d257600080fd5b5062000346620007e436600462007220565b62004a4e565b348015620007f757600080fd5b50620003466200080936600462007604565b62004abb565b3480156200081c57600080fd5b5060005462010000900460ff16620004fc565b3480156200083c57600080fd5b50620003466200084e366004620076bd565b6200592a565b3480156200086157600080fd5b506200037d60085481565b3480156200087957600080fd5b50620003466200088b36600462007042565b62005af7565b3480156200089e57600080fd5b506200037d60045481565b348015620008b657600080fd5b50620008ce620008c836600462007042565b62005d8a565b604051620003879695949392919062007719565b348015620008ef57600080fd5b506200037d61271081565b3480156200090757600080fd5b50620003466200091936600462007786565b620061fd565b3480156200092c57600080fd5b50620003466200093e3660046200786f565b620063ff565b3480156200095157600080fd5b506200037d60075481565b3480156200096957600080fd5b506200037d60155481565b3480156200098157600080fd5b5060195462000411906001600160a01b031681565b348015620009a357600080fd5b506200037d60015481565b348015620009bb57600080fd5b506200037d60065481565b348015620009d357600080fd5b506200037d620009e5366004620071d3565b805160208183018101805160128252928201919093012091525481565b34801562000a0f57600080fd5b506200037d600a5481565b34801562000a2757600080fd5b506200037d62000a3936600462007220565b620064f5565b34801562000a4c57600080fd5b506200034662000a5e36600462007604565b62006566565b34801562000a7157600080fd5b506200037d60055481565b34801562000a8957600080fd5b506200037d60165481565b6019546001600160a01b0316331462000ac05760405163f2771a9960e01b815260040160405180910390fd5b6000805462ff0000191681556040517f62451d457bc659158be6e6247f56ec1df424a5c7597f71c20c2bc44e0965c8f99190a1565b336110001462000b2157604051630f22c43960e41b815261100060048201526024015b60405180910390fd5b6001600160a01b038082166000908152600f60209081526040808320548416808452600d835281842082516101608101845281548716815260018201548716948101949094526002810154909516918301919091526003840154606083015260048401805491949160808401919062000b9a90620078d5565b80601f016020809104026020016040519081016040528092919081815260200182805462000bc890620078d5565b801562000c195780601f1062000bed5761010080835404028352916020019162000c19565b820191906000526020600020905b81548152906001019060200180831162000bfb57829003601f168201915b505050505081526020016005820160405180608001604052908160008201805462000c4490620078d5565b80601f016020809104026020016040519081016040528092919081815260200182805462000c7290620078d5565b801562000cc35780601f1062000c975761010080835404028352916020019162000cc3565b820191906000526020600020905b81548152906001019060200180831162000ca557829003601f168201915b5050505050815260200160018201805462000cde90620078d5565b80601f016020809104026020016040519081016040528092919081815260200182805462000d0c90620078d5565b801562000d5d5780601f1062000d315761010080835404028352916020019162000d5d565b820191906000526020600020905b81548152906001019060200180831162000d3f57829003601f168201915b5050505050815260200160028201805462000d7890620078d5565b80601f016020809104026020016040519081016040528092919081815260200182805462000da690620078d5565b801562000df75780601f1062000dcb5761010080835404028352916020019162000df7565b820191906000526020600020905b81548152906001019060200180831162000dd957829003601f168201915b5050505050815260200160038201805462000e1290620078d5565b80601f016020809104026020016040519081016040528092919081815260200182805462000e4090620078d5565b801562000e915780601f1062000e655761010080835404028352916020019162000e91565b820191906000526020600020905b81548152906001019060200180831162000e7357829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152805161028081019182905260a09092019190600d84019060149082845b81548152602001906001019080831162000f1d575050509190925250505060408101519091506001600160a01b0316158062000f5a57508060e001515b1562000fcb57816001600160a01b03167ffc8bff675087dd2da069cc3fb517b9ed001e19750c0865241a5542dba1ba170d60405162000fbe9060208082526011908201527024a72b20a624a22fab20a624a220aa27a960791b604082015260600190565b60405180910390a2505050565b60408181015160c0830151519151632f303ebb60e11b81526001600160401b0390921660048301526001600160a01b031690635e607d769034906024016000604051808303818588803b1580156200102257600080fd5b505af115801562001037573d6000803e3d6000fd5b5050505050816001600160a01b03167fe34918ff1c7084970068b53fd71ad6d8b04e9f15d3886cbf006443e6cdc52ea63460405162000fbe91815260200190565b50565b3361100114620010a357604051630f22c43960e41b8152611001600482015260240162000b18565b600060118383604051620010b99291906200790b565b908152604051908190036020019020546001600160a01b03169050620010e1600b82620067ad565b620010ff5760405163fdf4600b60e01b815260040160405180910390fd5b6001600160a01b0381166000908152600d602052604081209062001125603c4262007931565b60165460008281526017602052604090205491925011620011595760405163bd52fcdb60e01b815260040160405180910390fd5b60008181526017602052604081208054600192906200117a90849062007954565b90915550506040516012906200119490879087906200790b565b908152602001604051809103902054600014158015620011e3575042603c60128787604051620011c69291906200790b565b908152602001604051809103902054620011e1919062007954565b105b156200120257604051631898eb6b60e01b815260040160405180910390fd5b60008062001212856002620067d0565b91509150816200123557604051631b919bb160e11b815260040160405180910390fd5b600284015460085460405163045bc4d160e41b815260048101919091526000916001600160a01b0316906345bc4d10906024016020604051808303816000875af115801562001288573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620012ae91906200796a565b9050620012bc85836200685a565b856001600160a01b03167f6e9a2ee7aee95665e3a774a212eb11441b217e3e4656ab9563793094689aabb283836002604051620012fc9392919062007984565b60405180910390a26002850154604051633041949b60e01b815261200591633041949b916200133a916001600160a01b0316908a90600401620079bf565b600060405180830381600087803b1580156200135557600080fd5b505af11580156200136a573d6000803e3d6000fd5b505050505050505050505050565b6019546001600160a01b03163314620013a45760405163f2771a9960e01b815260040160405180910390fd5b6001600160a01b03166000908152601a60205260409020805460ff19166001179055565b60005462010000900460ff1615620013f35760405163d7485e8f60e01b815260040160405180910390fd5b8062001401600b82620067ad565b6200141f5760405163fdf4600b60e01b815260040160405180910390fd5b6001600160a01b0382166000908152600d60205260409020600a81015460ff166200145d57604051634b6b857d60e01b815260040160405180910390fd5b6002805490820154604051630913db4760e01b81526001600160a01b03868116600483015290911690630913db4790602401602060405180830381865afa158015620014ad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620014d391906200796a565b1015620014f3576040516317b204bf60e11b815260040160405180910390fd5b4281600b01541115620015195760405163170cb76760e21b815260040160405180910390fd5b600a8101805460ff1916905560158054600191906000906200153d908490620079d9565b90915550506040516001600160a01b038416907f9390b453426557da5ebdc31f19a37753ca04addf656d32f35232211bb2af3f1990600090a2505050565b60005462010000900460ff1615620015a65760405163d7485e8f60e01b815260040160405180910390fd5b336000908152601a602052604090205460ff1615620015d85760405163b1d02c3d60e01b815260040160405180910390fd5b33620015e6600b82620067ad565b620016045760405163fdf4600b60e01b815260040160405180910390fd5b6001600160a01b0382166200162c57604051636520611b60e11b815260040160405180910390fd5b6001600160a01b038281166000908152600f6020526040902054161515806200166d57506001600160a01b03821660009081526013602052604090205460ff165b156200168c57604051631e6f587560e11b815260040160405180910390fd5b336000818152600d60205260409020600c8101544290620016b090603c9062007954565b1115620016d057604051631f92cdbd60e11b815260040160405180910390fd5b80546001600160a01b039081166000908152601060209081526040808320429081905585548986166001600160a01b031991821681178855600c880192909255818552600f9093528184208054958816959093168517909255519092917f6e4e747ca35203f16401c69805c7dd52fff67ef60b0ebc5c7fe16890530f223591a350505050565b6019546001600160a01b03163314620017825760405163f2771a9960e01b815260040160405180910390fd5b6001600160a01b03166000908152601a60205260409020805460ff19169055565b60005462010000900460ff1615620017ce5760405163d7485e8f60e01b815260040160405180910390fd5b336000908152601a602052604090205460ff1615620018005760405163b1d02c3d60e01b815260040160405180910390fd5b816200180e600b82620067ad565b6200182c5760405163fdf4600b60e01b815260040160405180910390fd5b816000036200184e57604051639811e0c760e01b815260040160405180910390fd5b6001600160a01b038084166000908152600d602090815260408083208151610160810183528154861681526001820154861693810193909352600281015490941690820152600383015460608201526004830180543394916080840191620018b690620078d5565b80601f0160208091040260200160405190810160405280929190818152602001828054620018e490620078d5565b8015620019355780601f10620019095761010080835404028352916020019162001935565b820191906000526020600020905b8154815290600101906020018083116200191757829003601f168201915b50505050508152602001600582016040518060800160405290816000820180546200196090620078d5565b80601f01602080910402602001604051908101604052809291908181526020018280546200198e90620078d5565b8015620019df5780601f10620019b357610100808354040283529160200191620019df565b820191906000526020600020905b815481529060010190602001808311620019c157829003601f168201915b50505050508152602001600182018054620019fa90620078d5565b80601f016020809104026020016040519081016040528092919081815260200182805462001a2890620078d5565b801562001a795780601f1062001a4d5761010080835404028352916020019162001a79565b820191906000526020600020905b81548152906001019060200180831162001a5b57829003601f168201915b5050505050815260200160028201805462001a9490620078d5565b80601f016020809104026020016040519081016040528092919081815260200182805462001ac290620078d5565b801562001b135780601f1062001ae75761010080835404028352916020019162001b13565b820191906000526020600020905b81548152906001019060200180831162001af557829003601f168201915b5050505050815260200160038201805462001b2e90620078d5565b80601f016020809104026020016040519081016040528092919081815260200182805462001b5c90620078d5565b801562001bad5780601f1062001b815761010080835404028352916020019162001bad565b820191906000526020600020905b81548152906001019060200180831162001b8f57829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152805161028081019182905260a09092019190600d84019060149082845b81548152602001906001019080831162001c39575050509190925250505060408082015190516326ccee8b60e11b81526001600160a01b0385811660048301526024820188905292935060009290911690634d99dd16906044016020604051808303816000875af115801562001cb3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001cd991906200796a565b9050826001600160a01b0316866001600160a01b03167f3aace7340547de7b9156593a7652dc07ee900cea3fd8f82cb6c9d38b40829802878460405162001d2a929190918252602082015260400190565b60405180910390a3856001600160a01b0316836001600160a01b03160362001d575762001d57866200694f565b6040808301519051633041949b60e01b815261200591633041949b9162001d8491908790600401620079bf565b600060405180830381600087803b15801562001d9f57600080fd5b505af115801562001db4573d6000803e3d6000fd5b50505050505050505050565b60005462010000900460ff161562001deb5760405163d7485e8f60e01b815260040160405180910390fd5b336000908152601a602052604090205460ff161562001e1d5760405163b1d02c3d60e01b815260040160405180910390fd5b8362001e2b600b82620067ad565b62001e495760405163fdf4600b60e01b815260040160405180910390fd5b8362001e57600b82620067ad565b62001e755760405163fdf4600b60e01b815260040160405180910390fd5b8360000362001e9757604051639811e0c760e01b815260040160405180910390fd5b846001600160a01b0316866001600160a01b03160362001eca5760405163f0e3e62960e01b815260040160405180910390fd5b6001600160a01b038087166000908152600d60209081526040808320815161016081018352815486168152600182015486169381019390935260028101549094169082015260038301546060820152600483018054339491608084019162001f3290620078d5565b80601f016020809104026020016040519081016040528092919081815260200182805462001f6090620078d5565b801562001fb15780601f1062001f855761010080835404028352916020019162001fb1565b820191906000526020600020905b81548152906001019060200180831162001f9357829003601f168201915b505050505081526020016005820160405180608001604052908160008201805462001fdc90620078d5565b80601f01602080910402602001604051908101604052809291908181526020018280546200200a90620078d5565b80156200205b5780601f106200202f576101008083540402835291602001916200205b565b820191906000526020600020905b8154815290600101906020018083116200203d57829003601f168201915b505050505081526020016001820180546200207690620078d5565b80601f0160208091040260200160405190810160405280929190818152602001828054620020a490620078d5565b8015620020f55780601f10620020c957610100808354040283529160200191620020f5565b820191906000526020600020905b815481529060010190602001808311620020d757829003601f168201915b505050505081526020016002820180546200211090620078d5565b80601f01602080910402602001604051908101604052809291908181526020018280546200213e90620078d5565b80156200218f5780601f1062002163576101008083540402835291602001916200218f565b820191906000526020600020905b8154815290600101906020018083116200217157829003601f168201915b50505050508152602001600382018054620021aa90620078d5565b80601f0160208091040260200160405190810160405280929190818152602001828054620021d890620078d5565b8015620022295780601f10620021fd5761010080835404028352916020019162002229565b820191906000526020600020905b8154815290600101906020018083116200220b57829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152805161028081019182905260a09092019190600d84019060149082845b815481526020019060010190808311620022b557505050919092525050506001600160a01b038089166000908152600d60209081526040808320815161016081018352815486168152600182015486169381019390935260028101549094169082015260038301546060820152600483018054949550919390929160808401916200234090620078d5565b80601f01602080910402602001604051908101604052809291908181526020018280546200236e90620078d5565b8015620023bf5780601f106200239357610100808354040283529160200191620023bf565b820191906000526020600020905b815481529060010190602001808311620023a157829003601f168201915b5050505050815260200160058201604051806080016040529081600082018054620023ea90620078d5565b80601f01602080910402602001604051908101604052809291908181526020018280546200241890620078d5565b8015620024695780601f106200243d5761010080835404028352916020019162002469565b820191906000526020600020905b8154815290600101906020018083116200244b57829003601f168201915b505050505081526020016001820180546200248490620078d5565b80601f0160208091040260200160405190810160405280929190818152602001828054620024b290620078d5565b8015620025035780601f10620024d75761010080835404028352916020019162002503565b820191906000526020600020905b815481529060010190602001808311620024e557829003601f168201915b505050505081526020016002820180546200251e90620078d5565b80601f01602080910402602001604051908101604052809291908181526020018280546200254c90620078d5565b80156200259d5780601f1062002571576101008083540402835291602001916200259d565b820191906000526020600020905b8154815290600101906020018083116200257f57829003601f168201915b50505050508152602001600382018054620025b890620078d5565b80601f0160208091040260200160405190810160405280929190818152602001828054620025e690620078d5565b8015620026375780601f106200260b5761010080835404028352916020019162002637565b820191906000526020600020905b8154815290600101906020018083116200261957829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152805161028081019182905260a09092019190600d84019060149082845b815481526020019060010190808311620026c35750505050508152505090508060e001518015620027065750876001600160a01b0316836001600160a01b031614155b156200272557604051636468920360e01b815260040160405180910390fd5b6000805463ff0000001916630100000017815560408381015190516352e82ce560e11b81526001600160a01b038681166004830152602482018b90529091169063a5d059ca906044016020604051808303816000875af11580156200278e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620027b491906200796a565b9050600354811015620027da5760405163dc6f0bdd60e01b815260040160405180910390fd5b896001600160a01b0316846001600160a01b03161480156200286f57506002546040808501519051630913db4760e01b81526001600160a01b038d8116600483015290911690630913db4790602401602060405180830381865afa15801562002847573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200286d91906200796a565b105b156200288e576040516317b204bf60e11b815260040160405180910390fd5b600061271060065483620028a39190620079ef565b620028af919062007931565b9050600083604001516001600160a01b03168260405160006040518083038185875af1925050503d806000811462002904576040519150601f19603f3d011682016040523d82523d6000602084013e62002909565b606091505b50509050806200292c576040516312171d8360e31b815260040160405180910390fd5b620029388284620079d9565b60408086015190516317066a5760e21b81526001600160a01b03898116600483015292955060009290911690635c19a95c90869060240160206040518083038185885af11580156200298e573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190620029b591906200796a565b905060008060036101000a81548160ff021916908360ff160217905550866001600160a01b03168c6001600160a01b03168e6001600160a01b03167ffdac6e81913996d95abcc289e90f2d8bd235487ce6fe6f821e7d21002a1915b48e858960405162002a35939291909283526020830191909152604082015260600190565b60405180910390a460408051600280825260608201835260009260208301908036833701905050905086604001518160008151811062002a795762002a7962007a09565b60200260200101906001600160a01b031690816001600160a01b03168152505085604001518160018151811062002ab45762002ab462007a09565b6001600160a01b0390921660209283029190910190910152604051634484077560e01b81526120059063448407759062002af59084908c9060040162007a1f565b600060405180830381600087803b15801562002b1057600080fd5b505af115801562002b25573d6000803e3d6000fd5b505050508a1562002b97576120056001600160a01b031663e5ed5b1e898f6040518363ffffffff1660e01b815260040162002b62929190620079bf565b600060405180830381600087803b15801562002b7d57600080fd5b505af115801562002b92573d6000803e3d6000fd5b505050505b5050505050505050505050505050565b60005462010000900460ff161562002bd25760405163d7485e8f60e01b815260040160405180910390fd5b336000908152601a602052604090205460ff161562002c045760405163b1d02c3d60e01b815260040160405180910390fd5b3362002c12600b82620067ad565b62002c305760405163fdf4600b60e01b815260040160405180910390fd5b336000818152600d60205260409020600c810154429062002c5490603c9062007954565b111562002c7457604051631f92cdbd60e11b815260040160405180910390fd5b60098101546001600160401b03600160401b9091048116908516111562002cae5760405163dc81db8560e01b815260040160405180910390fd5b60098101546000906001600160401b03908116908616101562002cec57600982015462002ce69086906001600160401b031662007a4b565b62002d06565b600982015462002d06906001600160401b03168662007a4b565b60098301546001600160401b039182169250600160801b90041681111562002d415760405163dc81db8560e01b815260040160405180910390fd5b60098201805467ffffffffffffffff19166001600160401b03871690811790915542600c8401556040519081526001600160a01b038416907f78cdd96edf59e09cfd4d26ef6ef6c92d166effe6a40970c54821206d541932cb9060200160405180910390a25050505050565b6060806060600062002dc0600b62006a68565b9050808610156200343657841562002dd9578462002ddb565b805b945060008562002dec8884620079d9565b1162002e045762002dfe8783620079d9565b62002e06565b855b9050806001600160401b0381111562002e235762002e23620070f2565b60405190808252806020026020018201604052801562002e4d578160200160208202803683370190505b509450806001600160401b0381111562002e6b5762002e6b620070f2565b60405190808252806020026020018201604052801562002e95578160200160208202803683370190505b509350806001600160401b0381111562002eb35762002eb3620070f2565b60405190808252806020026020018201604052801562002ee857816020015b606081526020019060019003908162002ed25790505b50925060005b818110156200343357600062002f1262002f09838b62007954565b600b9062006a73565b6001600160a01b038082166000908152600d602090815260408083208151610160810183528154861681526001820154861693810193909352600281015490941690820152600383015460608201526004830180549495509193909291608084019162002f7f90620078d5565b80601f016020809104026020016040519081016040528092919081815260200182805462002fad90620078d5565b801562002ffe5780601f1062002fd25761010080835404028352916020019162002ffe565b820191906000526020600020905b81548152906001019060200180831162002fe057829003601f168201915b50505050508152602001600582016040518060800160405290816000820180546200302990620078d5565b80601f01602080910402602001604051908101604052809291908181526020018280546200305790620078d5565b8015620030a85780601f106200307c57610100808354040283529160200191620030a8565b820191906000526020600020905b8154815290600101906020018083116200308a57829003601f168201915b50505050508152602001600182018054620030c390620078d5565b80601f0160208091040260200160405190810160405280929190818152602001828054620030f190620078d5565b8015620031425780601f10620031165761010080835404028352916020019162003142565b820191906000526020600020905b8154815290600101906020018083116200312457829003601f168201915b505050505081526020016002820180546200315d90620078d5565b80601f01602080910402602001604051908101604052809291908181526020018280546200318b90620078d5565b8015620031dc5780601f10620031b057610100808354040283529160200191620031dc565b820191906000526020600020905b815481529060010190602001808311620031be57829003601f168201915b50505050508152602001600382018054620031f790620078d5565b80601f01602080910402602001604051908101604052809291908181526020018280546200322590620078d5565b8015620032765780601f106200324a5761010080835404028352916020019162003276565b820191906000526020600020905b8154815290600101906020018083116200325857829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152805161028081019182905260a09092019190600d84019060149082845b8154815260200190600101908083116200330257505050505081525050905080600001518884815181106200333b576200333b62007a09565b60200260200101906001600160a01b031690816001600160a01b0316815250508060e00151620033d45780604001516001600160a01b03166315d1f8986040518163ffffffff1660e01b8152600401602060405180830381865afa158015620033a8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620033ce91906200796a565b620033d7565b60005b878481518110620033ec57620033ec62007a09565b602002602001018181525050806080015186848151811062003412576200341262007a09565b60200260200101819052505050806200342b9062007a75565b905062002eee565b50505b92959194509250565b60005462010000900460ff16156200346a5760405163d7485e8f60e01b815260040160405180910390fd5b336000908152601a602052604090205460ff16156200349c5760405163b1d02c3d60e01b815260040160405180910390fd5b33620034aa600b82620067ad565b15620034c957604051635f28f62b60e01b815260040160405180910390fd5b6001600160a01b038881166000908152600f6020526040902054161515806200350a57506001600160a01b03881660009081526013602052604090205460ff165b156200352957604051631e6f587560e11b815260040160405180910390fd5b60006001600160a01b031660118888604051620035489291906200790b565b908152604051908190036020019020546001600160a01b0316141580620035925750601487876040516200357e9291906200790b565b9081526040519081900360200190205460ff165b15620035b1576040516311fdb94760e01b815260040160405180910390fd5b6000620035bf838062007a91565b604051602001620035d29291906200790b565b60408051601f1981840301815291815281516020928301206000818152600e90935291205490915060ff16156200361c5760405163c0bf414360e01b815260040160405180910390fd5b60025434906200363690670de0b6b3a76400009062007954565b81101562003657576040516317b204bf60e11b815260040160405180910390fd5b6001600160a01b038a166200367f57604051636520611b60e11b815260040160405180910390fd5b611388620036946040870160208801620072d3565b6001600160401b03161180620036da5750620036b76040860160208701620072d3565b6001600160401b0316620036cf6020870187620072d3565b6001600160401b0316115b80620037195750620036f36040860160208701620072d3565b6001600160401b03166200370e6060870160408801620072d3565b6001600160401b0316115b15620037385760405163dc81db8560e01b815260040160405180910390fd5b6200378362003748858062007a91565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525062006a8192505050565b620037a157604051635dba5ad760e01b815260040160405180910390fd5b620037af8989898962006c23565b620037cd57604051631647e3cb60e11b815260040160405180910390fd5b60006200381b84620037e0878062007a91565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525062006d5092505050565b90506200382a600b8562006e1a565b506000838152600e60209081526040808320805460ff191660019081179091556001600160a01b03808916808652600d9094529190932080548f83166001600160a01b031991821617825593810180548516909317909255600282018054918516919093161790915542600382015560048101620038aa8b8d8362007b39565b508560058201620038bc828262007c01565b5087905060098201620038d0828262007d3a565b505042600c8201556001600160a01b038c81166000908152600f60205260409081902080546001600160a01b031916928816929092179091555185906011906200391e908e908e906200790b565b908152602001604051809103902060006101000a8154816001600160a01b0302191690836001600160a01b03160217905550816001600160a01b0316856001600160a01b03168d6001600160a01b03167faecd9fb95e79c75a3a1de93362c6be5fe6ab65770d8614be583884161cd8228d8e8e604051620039a192919062007e0a565b60405180910390a4604051633041949b60e01b815261200590633041949b90620039d29085908990600401620079bf565b600060405180830381600087803b158015620039ed57600080fd5b505af115801562003a02573d6000803e3d6000fd5b50505050505050505050505050505050565b60408051606081018252600080825260208201819052918101919091528162003a3f600b82620067ad565b62003a5d5760405163fdf4600b60e01b815260040160405180910390fd5b6001600160a01b0383166000908152600d602090815260409182902082516060810184526009909101546001600160401b038082168352600160401b8204811693830193909352600160801b90049091169181019190915291505b50919050565b336110011462003ae657604051630f22c43960e41b8152611001600482015260240162000b18565b6001600160a01b038082166000908152600f60205260409020541662003b0e600b82620067ad565b62003b2c5760405163fdf4600b60e01b815260040160405180910390fd5b6001600160a01b038181166000908152600d60205260408082206002810154600754925163045bc4d160e41b81526004810193909352909316906345bc4d10906024016020604051808303816000875af115801562003b8f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003bb591906200796a565b905060006009544262003bc9919062007954565b905062003bd783826200685a565b836001600160a01b03167f6e9a2ee7aee95665e3a774a212eb11441b217e3e4656ab9563793094689aabb28284600160405162003c179392919062007984565b60405180910390a26002830154604051633041949b60e01b815261200591633041949b9162003c55916001600160a01b0316908890600401620079bf565b600060405180830381600087803b15801562003c7057600080fd5b505af115801562003c85573d6000803e3d6000fd5b505050505050505050565b600054610100900460ff161580801562003cb15750600054600160ff909116105b8062003ccd5750303b15801562003ccd575060005460ff166001145b62003d325760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840162000b18565b6000805460ff19166001179055801562003d56576000805461ff0019166101001790555b33411462003d775760405163022d8c9560e31b815260040160405180910390fd5b3a1562003d97576040516383f1b1d360e01b815260040160405180910390fd5b611388600155686c6b935b8bbd4000006002908155670de0b6b3a7640000600355601d600455607860058190556006829055678ac7230489e80000600755680ad78ebc5ac620000060085560095560b4600a556016556040805160c0810190915260a08082526060918291620090c7602083013980602001905181019062003e20919062007e46565b9150604051806101e001604052806101c08152602001620091676101c0913980602001905181019062003e54919062007eea565b905060005b825181101562003ec35760016013600085848151811062003e7e5762003e7e62007a09565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905562003ebb8162007a75565b905062003e59565b5060005b815181101562003f34576001601483838151811062003eea5762003eea62007a09565b602002602001015160405162003f01919062007fe7565b908152604051908190036020019020805491151560ff1990921691909117905562003f2c8162007a75565b905062003ec7565b5050601980546001600160a01b03191673df87f0e2b8519ea2dd4abd8b639cdd628497ed2517905550801562001078576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b6019546001600160a01b0316331462003fd25760405163f2771a9960e01b815260040160405180910390fd5b6000805462ff00001916620100001781556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e7529190a1565b60006200401b600b84620067ad565b620040395760405163fdf4600b60e01b815260040160405180910390fd5b6001600160a01b038381166000908152600d602052604090819020600201549051636bbf224960e01b815260048101859052911690636bbf2249906024015b602060405180830381865afa15801562004096573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620040bc91906200796a565b90505b92915050565b60005462010000900460ff1615620040f05760405163d7485e8f60e01b815260040160405180910390fd5b336000908152601a602052604090205460ff1615620041225760405163b1d02c3d60e01b815260040160405180910390fd5b8162004130600b82620067ad565b6200414e5760405163fdf4600b60e01b815260040160405180910390fd5b6003543490811015620041745760405163dc6f0bdd60e01b815260040160405180910390fd5b6001600160a01b038085166000908152600d602090815260408083208151610160810183528154861681526001820154861693810193909352600281015490941690820152600383015460608201526004830180543394916080840191620041dc90620078d5565b80601f01602080910402602001604051908101604052809291908181526020018280546200420a90620078d5565b80156200425b5780601f106200422f576101008083540402835291602001916200425b565b820191906000526020600020905b8154815290600101906020018083116200423d57829003601f168201915b50505050508152602001600582016040518060800160405290816000820180546200428690620078d5565b80601f0160208091040260200160405190810160405280929190818152602001828054620042b490620078d5565b8015620043055780601f10620042d95761010080835404028352916020019162004305565b820191906000526020600020905b815481529060010190602001808311620042e757829003601f168201915b505050505081526020016001820180546200432090620078d5565b80601f01602080910402602001604051908101604052809291908181526020018280546200434e90620078d5565b80156200439f5780601f1062004373576101008083540402835291602001916200439f565b820191906000526020600020905b8154815290600101906020018083116200438157829003601f168201915b50505050508152602001600282018054620043ba90620078d5565b80601f0160208091040260200160405190810160405280929190818152602001828054620043e890620078d5565b8015620044395780601f106200440d5761010080835404028352916020019162004439565b820191906000526020600020905b8154815290600101906020018083116200441b57829003601f168201915b505050505081526020016003820180546200445490620078d5565b80601f01602080910402602001604051908101604052809291908181526020018280546200448290620078d5565b8015620044d35780601f10620044a757610100808354040283529160200191620044d3565b820191906000526020600020905b815481529060010190602001808311620044b557829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152805161028081019182905260a09092019190600d84019060149082845b8154815260200190600101908083116200455f5750505050508152505090508060e001518015620045a25750856001600160a01b0316826001600160a01b031614155b15620045c157604051636468920360e01b815260040160405180910390fd5b60408082015190516317066a5760e21b81526001600160a01b0384811660048301526000921690635c19a95c90869060240160206040518083038185885af115801562004612573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906200463991906200796a565b9050826001600160a01b0316876001600160a01b03167f24d7bda8602b916d64417f0dbfe2e2e88ec9b1157bd9f596dfdb91ba26624e0483876040516200468a929190918252602082015260400190565b60405180910390a36040808301519051633041949b60e01b815261200591633041949b91620046bf91908790600401620079bf565b600060405180830381600087803b158015620046da57600080fd5b505af1158015620046ef573d6000803e3d6000fd5b50505050851562004758576040516372f6ad8f60e11b81526120059063e5ed5b1e90620047239086908b90600401620079bf565b600060405180830381600087803b1580156200473e57600080fd5b505af115801562004753573d6000803e3d6000fd5b505050505b50505050505050565b6200478d6040518060800160405280606081526020016060815260200160608152602001606081525090565b816200479b600b82620067ad565b620047b95760405163fdf4600b60e01b815260040160405180910390fd5b6001600160a01b0383166000908152600d602052604090819020815160808101909252600501805482908290620047f090620078d5565b80601f01602080910402602001604051908101604052809291908181526020018280546200481e90620078d5565b80156200486f5780601f1062004843576101008083540402835291602001916200486f565b820191906000526020600020905b8154815290600101906020018083116200485157829003601f168201915b505050505081526020016001820180546200488a90620078d5565b80601f0160208091040260200160405190810160405280929190818152602001828054620048b890620078d5565b8015620049095780601f10620048dd5761010080835404028352916020019162004909565b820191906000526020600020905b815481529060010190602001808311620048eb57829003601f168201915b505050505081526020016002820180546200492490620078d5565b80601f01602080910402602001604051908101604052809291908181526020018280546200495290620078d5565b8015620049a35780601f106200497757610100808354040283529160200191620049a3565b820191906000526020600020905b8154815290600101906020018083116200498557829003601f168201915b50505050508152602001600382018054620049be90620078d5565b80601f0160208091040260200160405190810160405280929190818152602001828054620049ec90620078d5565b801562004a3d5780601f1062004a115761010080835404028352916020019162004a3d565b820191906000526020600020905b81548152906001019060200180831162004a1f57829003601f168201915b505050505081525050915050919050565b60005462010000900460ff161562004a795760405163d7485e8f60e01b815260040160405180910390fd5b336000908152601a602052604090205460ff161562004aab5760405163b1d02c3d60e01b815260040160405180910390fd5b62004ab7828262006e31565b5050565b336110071462004ae357604051630f22c43960e41b8152611007600482015260240162000b18565b62004b506040518060400160405280601081526020016f1d1c985b9cd9995c91d85cd31a5b5a5d60821b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062006f3d9050565b1562004bfe576020811462004b825783838383604051630a5a604160e01b815260040162000b18949392919062008005565b604080516020601f840181900481028201810190925282815260009162004bc591858580838501838280828437600092019190915250929392505062006f9a9050565b90506108fc81101562004bf55784848484604051630a5a604160e01b815260040162000b18949392919062008005565b600155620058e5565b62004c6f6040518060400160405280601481526020017336b4b729b2b6332232b632b3b0ba34b7b721272160611b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062006f3d9050565b1562004d24576020811462004ca15783838383604051630a5a604160e01b815260040162000b18949392919062008005565b604080516020601f840181900481028201810190925282815260009162004ce491858580838501838280828437600092019190915250929392505062006f9a9050565b9050683635c9adc5dea0000081101562004d1b5784848484604051630a5a604160e01b815260040162000b18949392919062008005565b600255620058e5565b62004d97604051806040016040528060168152602001756d696e44656c65676174696f6e424e424368616e676560501b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062006f3d9050565b1562004e4b576020811462004dc95783838383604051630a5a604160e01b815260040162000b18949392919062008005565b604080516020601f840181900481028201810190925282815260009162004e0c91858580838501838280828437600092019190915250929392505062006f9a9050565b905067016345785d8a000081101562004e425784848484604051630a5a604160e01b815260040162000b18949392919062008005565b600355620058e5565b62004ebc604051806040016040528060148152602001736d6178456c656374656456616c696461746f727360601b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062006f3d9050565b1562004f76576020811462004eee5783838383604051630a5a604160e01b815260040162000b18949392919062008005565b604080516020601f840181900481028201810190925282815260009162004f3191858580838501838280828437600092019190915250929392505062006f9a9050565b9050600181108062004f4457506101f481115b1562004f6d5784848484604051630a5a604160e01b815260040162000b18949392919062008005565b600455620058e5565b62004fdf6040518060400160405280600c81526020016b1d5b989bdb9914195c9a5bd960a21b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062006f3d9050565b156200508e5760208114620050115783838383604051630a5a604160e01b815260040162000b18949392919062008005565b604080516020601f84018190048102820181019092528281526000916200505491858580838501838280828437600092019190915250929392505062006f9a9050565b90506203f480811015620050855784848484604051630a5a604160e01b815260040162000b18949392919062008005565b600555620058e5565b620050fc60405180604001604052806011815260200170726564656c65676174654665655261746560781b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062006f3d9050565b15620051a957602081146200512e5783838383604051630a5a604160e01b815260040162000b18949392919062008005565b604080516020601f84018190048102820181019092528281526000916200517191858580838501838280828437600092019190915250929392505062006f9a9050565b90506064811115620051a05784848484604051630a5a604160e01b815260040162000b18949392919062008005565b600655620058e5565b6200521960405180604001604052806013815260200172191bdddb9d1a5b5954db185cda105b5bdd5b9d606a1b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062006f3d9050565b15620052da57602081146200524b5783838383604051630a5a604160e01b815260040162000b18949392919062008005565b604080516020601f84018190048102820181019092528281526000916200528e91858580838501838280828437600092019190915250929392505062006f9a9050565b9050674563918244f40000811080620052a8575060085481115b15620052d15784848484604051630a5a604160e01b815260040162000b18949392919062008005565b600755620058e5565b620053486040518060400160405280601181526020017019995b1bdb9e54db185cda105b5bdd5b9d607a1b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062006f3d9050565b156200540b57602081146200537a5783838383604051630a5a604160e01b815260040162000b18949392919062008005565b604080516020601f8401819004810282018101909252828152600091620053bd91858580838501838280828437600092019190915250929392505062006f9a9050565b905068056bc75e2d63100000811080620053d957506007548111155b15620054025784848484604051630a5a604160e01b815260040162000b18949392919062008005565b600855620058e5565b620054786040518060400160405280601081526020016f646f776e74696d654a61696c54696d6560801b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062006f3d9050565b15620055355760208114620054aa5783838383604051630a5a604160e01b815260040162000b18949392919062008005565b604080516020601f8401819004810282018101909252828152600091620054ed91858580838501838280828437600092019190915250929392505062006f9a9050565b90506202a300811080620055035750600a548110155b156200552c5784848484604051630a5a604160e01b815260040162000b18949392919062008005565b600955620058e5565b620055a06040518060400160405280600e81526020016d66656c6f6e794a61696c54696d6560901b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062006f3d9050565b156200565d5760208114620055d25783838383604051630a5a604160e01b815260040162000b18949392919062008005565b604080516020601f84018190048102820181019092528281526000916200561591858580838501838280828437600092019190915250929392505062006f9a9050565b9050620d2f008110806200562b57506009548111155b15620056545784848484604051630a5a604160e01b815260040162000b18949392919062008005565b600a55620058e5565b620056d76040518060400160405280601c81526020017f6d617846656c6f6e794265747765656e42726561746865426c6f636b0000000081525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062006f3d9050565b15620057835760208114620057095783838383604051630a5a604160e01b815260040162000b18949392919062008005565b604080516020601f84018190048102820181019092528281526000916200574c91858580838501838280828437600092019190915250929392505062006f9a9050565b9050806000036200577a5784848484604051630a5a604160e01b815260040162000b18949392919062008005565b601655620058e5565b620057ee6040518060400160405280600e81526020016d30b9b9b2ba283937ba32b1ba37b960911b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062006f3d9050565b15620058c25760148114620058205783838383604051630a5a604160e01b815260040162000b18949392919062008005565b600062005868601484848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062006f9a9050565b90506001600160a01b0381166200589c5784848484604051630a5a604160e01b815260040162000b18949392919062008005565b601980546001600160a01b0319166001600160a01b0392909216919091179055620058e5565b838383836040516325ee20d560e21b815260040162000b18949392919062008005565b7ff1ce9b2cbf50eeb05769a29e2543fd350cab46894a7dd9978a12d534bb20e633848484846040516200591c949392919062008005565b60405180910390a150505050565b60005462010000900460ff1615620059555760405163d7485e8f60e01b815260040160405180910390fd5b336000908152601a602052604090205460ff1615620059875760405163b1d02c3d60e01b815260040160405180910390fd5b816000816001600160401b03811115620059a557620059a5620070f2565b604051908082528060200260200182016040528015620059cf578160200160208202803683370190505b5090506000805b8381101562005acd5762005a18878783818110620059f857620059f862007a09565b905060200201602081019062005a0f919062007042565b600b90620067ad565b62005a365760405163fdf4600b60e01b815260040160405180910390fd5b600d600088888481811062005a4f5762005a4f62007a09565b905060200201602081019062005a66919062007042565b6001600160a01b039081168252602082019290925260400160002060020154845191169250829084908390811062005aa25762005aa262007a09565b6001600160a01b039092166020928302919091019091015262005ac58162007a75565b9050620059d6565b50604051634484077560e01b81526120059063448407759062001d84908590889060040162007a1f565b336110011462005b1f57604051630f22c43960e41b8152611001600482015260240162000b18565b6001600160a01b038082166000908152600f60205260409020541662005b47600b82620067ad565b62005b655760405163fdf4600b60e01b815260040160405180910390fd5b6001600160a01b0381166000908152600d602052604081209062005b8b603c4262007931565b6016546000828152601760205260409020549192501162005bbf5760405163bd52fcdb60e01b815260040160405180910390fd5b600081815260176020526040812080546001929062005be090849062007954565b90915550506001600160a01b0384166000908152601060205260409020541580159062005c3357506001600160a01b038416600090815260106020526040902054429062005c3190603c9062007954565b105b1562005c52576040516330abb81d60e21b815260040160405180910390fd5b60008062005c62856000620067d0565b915091508162005c8557604051631b919bb160e11b815260040160405180910390fd5b600284015460085460405163045bc4d160e41b815260048101919091526000916001600160a01b0316906345bc4d10906024016020604051808303816000875af115801562005cd8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005cfe91906200796a565b905062005d0c85836200685a565b856001600160a01b03167f6e9a2ee7aee95665e3a774a212eb11441b217e3e4656ab9563793094689aabb28383600060405162005d4c9392919062007984565b60405180910390a26002850154604051633041949b60e01b815261200591633041949b9162004723916001600160a01b0316908a90600401620079bf565b60008080606081808662005da0600b82620067ad565b62005dbe5760405163fdf4600b60e01b815260040160405180910390fd5b6001600160a01b038089166000908152600d602090815260408083208151610160810183528154861681526001820154861693810193909352600281015490941690820152600383015460608201526004830180549293919260808401919062005e2890620078d5565b80601f016020809104026020016040519081016040528092919081815260200182805462005e5690620078d5565b801562005ea75780601f1062005e7b5761010080835404028352916020019162005ea7565b820191906000526020600020905b81548152906001019060200180831162005e8957829003601f168201915b505050505081526020016005820160405180608001604052908160008201805462005ed290620078d5565b80601f016020809104026020016040519081016040528092919081815260200182805462005f0090620078d5565b801562005f515780601f1062005f255761010080835404028352916020019162005f51565b820191906000526020600020905b81548152906001019060200180831162005f3357829003601f168201915b5050505050815260200160018201805462005f6c90620078d5565b80601f016020809104026020016040519081016040528092919081815260200182805462005f9a90620078d5565b801562005feb5780601f1062005fbf5761010080835404028352916020019162005feb565b820191906000526020600020905b81548152906001019060200180831162005fcd57829003601f168201915b505050505081526020016002820180546200600690620078d5565b80601f01602080910402602001604051908101604052809291908181526020018280546200603490620078d5565b8015620060855780601f10620060595761010080835404028352916020019162006085565b820191906000526020600020905b8154815290600101906020018083116200606757829003601f168201915b50505050508152602001600382018054620060a090620078d5565b80601f0160208091040260200160405190810160405280929190818152602001828054620060ce90620078d5565b80156200611f5780601f10620060f3576101008083540402835291602001916200611f565b820191906000526020600020905b8154815290600101906020018083116200610157829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152805161028081019182905260a09092019190600d84019060149082845b815481526020019060010190808311620061ab57505050919092525050815160408301516060840151608085015160e086015161010090960151939f929e50909c509a50929850965090945050505050565b60005462010000900460ff1615620062285760405163d7485e8f60e01b815260040160405180910390fd5b336000908152601a602052604090205460ff16156200625a5760405163b1d02c3d60e01b815260040160405180910390fd5b3362006268600b82620067ad565b620062865760405163fdf4600b60e01b815260040160405180910390fd5b336000818152600d60205260409020600c8101544290620062aa90603c9062007954565b1115620062ca57604051631f92cdbd60e11b815260040160405180910390fd5b600581018054620062db90620078d5565b80601f01602080910402602001604051908101604052809291908181526020018280546200630990620078d5565b80156200635a5780601f106200632e576101008083540402835291602001916200635a565b820191906000526020600020905b8154815290600101906020018083116200633c57829003601f168201915b505050828752508591600584019150819062006377908262008030565b50602082015160018201906200638e908262008030565b5060408201516002820190620063a5908262008030565b5060608201516003820190620063bc908262008030565b505042600c830155506040516001600160a01b038316907f85d6366b336ade7f106987ec7a8eac1e8799e508aeab045a39d2f63e0dc969d990600090a250505050565b60005462010000900460ff16156200642a5760405163d7485e8f60e01b815260040160405180910390fd5b336000908152601a602052604090205460ff16156200645c5760405163b1d02c3d60e01b815260040160405180910390fd5b8281146200647d576040516341abc80160e01b815260040160405180910390fd5b60005b83811015620064ee57620064db858583818110620064a257620064a262007a09565b9050602002016020810190620064b9919062007042565b848484818110620064ce57620064ce62007a09565b9050602002013562006e31565b620064e68162007a75565b905062006480565b5050505050565b600062006504600b84620067ad565b620065225760405163fdf4600b60e01b815260040160405180910390fd5b6001600160a01b038381166000908152600d60205260409081902060020154905163aa1966cd60e01b81526004810185905291169063aa1966cd9060240162004078565b60005462010000900460ff1615620065915760405163d7485e8f60e01b815260040160405180910390fd5b336000908152601a602052604090205460ff1615620065c35760405163b1d02c3d60e01b815260040160405180910390fd5b33620065d1600b82620067ad565b620065ef5760405163fdf4600b60e01b815260040160405180910390fd5b620065fd8585858562006c23565b6200661b57604051631647e3cb60e11b815260040160405180910390fd5b60006001600160a01b0316601186866040516200663a9291906200790b565b908152604051908190036020019020546001600160a01b031614158062006684575060148585604051620066709291906200790b565b9081526040519081900360200190205460ff165b15620066a3576040516311fdb94760e01b815260040160405180910390fd5b336000818152600d60205260409020600c8101544290620066c790603c9062007954565b1115620066e757604051631f92cdbd60e11b815260040160405180910390fd5b42601282600401604051620066fd9190620080f8565b90815260405190819003602001902055600481016200671e87898362007b39565b5042600c82015560405182906011906200673c908a908a906200790b565b90815260405190819003602001812080546001600160a01b039384166001600160a01b0319909116179055908316907f783156582145bd0ff7924fae6953ba054cf1233eb60739a200ddb10de068ff0d906200679c908a908a9062007e0a565b60405180910390a250505050505050565b6001600160a01b03811660009081526001830160205260408120541515620040bc565b60008060008484604051602001620067ea92919062008176565b60408051601f19818403018152918152815160209283012060008181526018909352912054909150428111156200682a5760008093509350505062006853565b600a5462006839904262007954565b600092835260186020526040909220829055506001925090505b9250929050565b600060016200686a600b62006a68565b620068769190620079d9565b6015541080159150620068c25760018301546040516001600160a01b03909116907f2afdc18061ac21cff7d9f11527ab9c8dec6fabd4edf6f894ed634bebd6a20d4590600090a2505050565b82600b0154821115620068d757600b83018290555b600a83015460ff166200694a57600a8301805460ff19166001908117909155601580546000906200690a90849062007954565b909155505060018301546040516001600160a01b03909116907f4905ac32602da3fb8b4b7b00c285e5fc4c6c2308cc908b4a1e4e9625a29c90a390600090a25b505050565b6001600160a01b0381166000908152600d60205260409020600a81015460ff161562006979575050565b6002805490820154604051630913db4760e01b81526001600160a01b03858116600483015290911690630913db4790602401602060405180830381865afa158015620069c9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620069ef91906200796a565b101562004ab75762006a04816009546200685a565b80546040516372c4db0f60e11b81526001600160a01b0390911660048201526110009063e589b61e90602401600060405180830381600087803b15801562006a4b57600080fd5b505af115801562006a60573d6000803e3d6000fd5b505050505050565b6000620040bf825490565b6000620040bc838362006f9f565b60008082905060038151108062006a99575060098151115b1562006aa85750600092915050565b60418160008151811062006ac05762006ac062007a09565b016020015160f81c108062006af25750605a8160008151811062006ae85762006ae862007a09565b016020015160f81c115b1562006b015750600092915050565b60015b815181101562006c1957603082828151811062006b255762006b2562007a09565b016020015160f81c108062006b565750603982828151811062006b4c5762006b4c62007a09565b016020015160f81c115b801562006ba65750604182828151811062006b755762006b7562007a09565b016020015160f81c108062006ba65750605a82828151811062006b9c5762006b9c62007a09565b016020015160f81c115b801562006bf65750606182828151811062006bc55762006bc562007a09565b016020015160f81c108062006bf65750607a82828151811062006bec5762006bec62007a09565b016020015160f81c115b1562006c06575060009392505050565b62006c118162007a75565b905062006b04565b5060019392505050565b600060308414158062006c37575060608214155b1562006c465750600062006d48565b600085854660405160200162006c5f93929190620081c0565b60408051808303601f1901815282825280516020918201208184528383019092529092506000919060208201818036833701905050905081602082015260008186868a8a60405160200162006cb9959493929190620081d2565b60408051808303601f190181526001808452838301909252925060009190602082018180368337019050509050815160016020830182602086016066600019fa62006d0357600080fd5b5060008160008151811062006d1c5762006d1c62007a09565b016020015160f81c90506001811462006d3e5760009550505050505062006d48565b6001955050505050505b949350505050565b60008061200361dead60405162006d67906200701e565b6001600160a01b03928316815291166020820152606060408201819052600090820152608001604051809103906000f08015801562006daa573d6000803e3d6000fd5b509050806001600160a01b031663f399e22e3486866040518463ffffffff1660e01b815260040162006dde9291906200820a565b6000604051808303818588803b15801562006df857600080fd5b505af115801562006e0d573d6000803e3d6000fd5b5093979650505050505050565b6000620040bc836001600160a01b03841662006fcc565b8162006e3f600b82620067ad565b62006e5d5760405163fdf4600b60e01b815260040160405180910390fd5b6001600160a01b038381166000908152600d6020526040808220600201549051635569f64b60e11b8152336004820152602481018690529192169063aad3ec96906044016020604051808303816000875af115801562006ec1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062006ee791906200796a565b9050336001600160a01b0316846001600160a01b03167ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926838360405162006f2f91815260200190565b60405180910390a350505050565b60008160405160200162006f52919062007fe7565b604051602081830303815290604052805190602001208360405160200162006f7b919062007fe7565b6040516020818303038152906040528051906020012014905092915050565b015190565b600082600001828154811062006fb95762006fb962007a09565b9060005260206000200154905092915050565b60008181526001830160205260408120546200701557508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155620040bf565b506000620040bf565b610e96806200823183390190565b6001600160a01b03811681146200107857600080fd5b6000602082840312156200705557600080fd5b813562007062816200702c565b9392505050565b60008083601f8401126200707c57600080fd5b5081356001600160401b038111156200709457600080fd5b6020830191508360208285010111156200685357600080fd5b60008060208385031215620070c157600080fd5b82356001600160401b03811115620070d857600080fd5b620070e68582860162007069565b90969095509350505050565b634e487b7160e01b600052604160045260246000fd5b604051608081016001600160401b03811182821017156200712d576200712d620070f2565b60405290565b604051601f8201601f191681016001600160401b03811182821017156200715e576200715e620070f2565b604052919050565b60006001600160401b03821115620071825762007182620070f2565b50601f01601f191660200190565b6000620071a7620071a18462007166565b62007133565b9050828152838383011115620071bc57600080fd5b828260208301376000602084830101529392505050565b600060208284031215620071e657600080fd5b81356001600160401b03811115620071fd57600080fd5b8201601f810184136200720f57600080fd5b62006d488482356020840162007190565b600080604083850312156200723457600080fd5b823562007241816200702c565b946020939093013593505050565b803580151581146200726057600080fd5b919050565b600080600080608085870312156200727c57600080fd5b843562007289816200702c565b935060208501356200729b816200702c565b925060408501359150620072b2606086016200724f565b905092959194509250565b6001600160401b03811681146200107857600080fd5b600060208284031215620072e657600080fd5b81356200706281620072bd565b600080604083850312156200730757600080fd5b50508035926020909101359150565b600081518084526020808501945080840160005b83811015620073515781516001600160a01b0316875295820195908201906001016200732a565b509495945050505050565b60005b83811015620073795781810151838201526020016200735f565b50506000910152565b600081518084526200739c8160208601602086016200735c565b601f01601f19169290920160200192915050565b608081526000620073c5608083018762007316565b82810360208481019190915286518083528782019282019060005b81811015620073fe57845183529383019391830191600101620073e0565b5050848103604086015286518082528282019350600581901b8201830183890160005b838110156200745357601f198584030187526200744083835162007382565b9686019692509085019060010162007421565b5050809550505050505082606083015295945050505050565b600080600080600080600087890360e08112156200748957600080fd5b883562007496816200702c565b975060208901356001600160401b0380821115620074b357600080fd5b620074c18c838d0162007069565b909950975060408b0135915080821115620074db57600080fd5b620074e98c838d0162007069565b90975095508591506060605f19840112156200750457600080fd5b60608b01945060c08b01359250808311156200751f57600080fd5b505088016080818b0312156200753457600080fd5b8091505092959891949750929550565b600080604083850312156200755857600080fd5b823562007565816200702c565b915062007575602084016200724f565b90509250929050565b6020815260008251608060208401526200759c60a084018262007382565b90506020840151601f1980858403016040860152620075bc838362007382565b92506040860151915080858403016060860152620075db838362007382565b9250606086015191508085840301608086015250620075fb828262007382565b95945050505050565b600080600080604085870312156200761b57600080fd5b84356001600160401b03808211156200763357600080fd5b620076418883890162007069565b909650945060208701359150808211156200765b57600080fd5b506200766a8782880162007069565b95989497509550505050565b60008083601f8401126200768957600080fd5b5081356001600160401b03811115620076a157600080fd5b6020830191508360208260051b85010111156200685357600080fd5b600080600060408486031215620076d357600080fd5b83356001600160401b03811115620076ea57600080fd5b620076f88682870162007676565b90945092505060208401356200770e816200702c565b809150509250925092565b6001600160a01b038781168252861660208201526040810185905260c0606082018190526000906200774e9083018662007382565b93151560808301525060a00152949350505050565b600082601f8301126200777557600080fd5b620040bc8383356020850162007190565b6000602082840312156200779957600080fd5b81356001600160401b0380821115620077b157600080fd5b9083019060808286031215620077c657600080fd5b620077d062007108565b823582811115620077e057600080fd5b620077ee8782860162007763565b8252506020830135828111156200780457600080fd5b620078128782860162007763565b6020830152506040830135828111156200782b57600080fd5b620078398782860162007763565b6040830152506060830135828111156200785257600080fd5b620078608782860162007763565b60608301525095945050505050565b600080600080604085870312156200788657600080fd5b84356001600160401b03808211156200789e57600080fd5b620078ac8883890162007676565b90965094506020870135915080821115620078c657600080fd5b506200766a8782880162007676565b600181811c90821680620078ea57607f821691505b60208210810362003ab857634e487b7160e01b600052602260045260246000fd5b8183823760009101908152919050565b634e487b7160e01b600052601160045260246000fd5b6000826200794f57634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115620040bf57620040bf6200791b565b6000602082840312156200797d57600080fd5b5051919050565b838152602081018390526060810160038310620079b157634e487b7160e01b600052602160045260246000fd5b826040830152949350505050565b6001600160a01b0392831681529116602082015260400190565b81810381811115620040bf57620040bf6200791b565b8082028115828204841417620040bf57620040bf6200791b565b634e487b7160e01b600052603260045260246000fd5b60408152600062007a34604083018562007316565b905060018060a01b03831660208301529392505050565b6001600160401b0382811682821603908082111562007a6e5762007a6e6200791b565b5092915050565b60006001820162007a8a5762007a8a6200791b565b5060010190565b6000808335601e1984360301811262007aa957600080fd5b8301803591506001600160401b0382111562007ac457600080fd5b6020019150368190038213156200685357600080fd5b601f8211156200694a57600081815260208120601f850160051c8101602086101562007b035750805b601f850160051c820191505b8181101562006a605782815560010162007b0f565b600019600383901b1c191660019190911b1790565b6001600160401b0383111562007b535762007b53620070f2565b62007b6b8362007b648354620078d5565b8362007ada565b6000601f84116001811462007b9e576000851562007b895750838201355b62007b95868262007b24565b845550620064ee565b600083815260209020601f19861690835b8281101562007bd1578685013582556020948501946001909201910162007baf565b508682101562007bef5760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b62007c0d828362007a91565b6001600160401b0381111562007c275762007c27620070f2565b62007c3f8162007c388554620078d5565b8562007ada565b6000601f82116001811462007c72576000831562007c5d5750838201355b62007c69848262007b24565b86555062007ccf565b600085815260209020601f19841690835b8281101562007ca5578685013582556020948501946001909201910162007c83565b508482101562007cc35760001960f88660031b161c19848701351681555b505060018360011b0185555b5050505062007ce2602083018362007a91565b62007cf281836001860162007b39565b505062007d03604083018362007a91565b62007d1381836002860162007b39565b505062007d24606083018362007a91565b62007d3481836003860162007b39565b50505050565b813562007d4781620072bd565b6001600160401b03811690508154816001600160401b03198216178355602084013562007d7481620072bd565b6fffffffffffffffff0000000000000000604091821b166fffffffffffffffffffffffffffffffff1983168417811785559085013562007db481620072bd565b6001600160c01b0319929092169092179190911760809190911b67ffffffffffffffff60801b1617905550565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60208152600062006d4860208301848662007de1565b60006001600160401b0382111562007e3c5762007e3c620070f2565b5060051b60200190565b6000602080838503121562007e5a57600080fd5b82516001600160401b0381111562007e7157600080fd5b8301601f8101851362007e8357600080fd5b805162007e94620071a18262007e20565b81815260059190911b8201830190838101908783111562007eb457600080fd5b928401925b8284101562007edf57835162007ecf816200702c565b8252928401929084019062007eb9565b979650505050505050565b6000602080838503121562007efe57600080fd5b82516001600160401b038082111562007f1657600080fd5b818501915085601f83011262007f2b57600080fd5b815162007f3c620071a18262007e20565b81815260059190911b8301840190848101908883111562007f5c57600080fd5b8585015b8381101562007fda5780518581111562007f7a5760008081fd5b8601603f81018b1362007f8d5760008081fd5b87810151604062007fa2620071a18362007166565b8281528d8284860101111562007fb85760008081fd5b62007fc9838c83018487016200735c565b865250505091860191860162007f60565b5098975050505050505050565b6000825162007ffb8184602087016200735c565b9190910192915050565b6040815260006200801b60408301868862007de1565b828103602084015262007edf81858762007de1565b81516001600160401b038111156200804c576200804c620070f2565b62008064816200805d8454620078d5565b8462007ada565b602080601f831160018114620080985760008415620080835750858301515b6200808f858262007b24565b86555062006a60565b600085815260208120601f198616915b82811015620080c957888601518255948401946001909101908401620080a8565b5085821015620080e85787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60008083546200810881620078d5565b6001828116801562008123576001811462008139576200816a565b60ff19841687528215158302870194506200816a565b8760005260208060002060005b85811015620081615781548a82015290840190820162008146565b50505082870194505b50929695505050505050565b6bffffffffffffffffffffffff198360601b168152600060038310620081ac57634e487b7160e01b600052602160045260246000fd5b5060f89190911b6014820152601501919050565b82848237909101908152602001919050565b60008651620081e6818460208b016200735c565b82018587823760009086019081528385823760009301928352509095945050505050565b6001600160a01b038316815260406020820181905260009062006d48908301846200738256fe608060405260405162000e9638038062000e96833981016040819052620000269162000497565b828162000036828260006200004d565b50620000449050826200008a565b505050620005ca565b6200005883620000e5565b600082511180620000665750805b1562000085576200008383836200012760201b620001691760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f620000b562000156565b604080516001600160a01b03928316815291841660208301520160405180910390a1620000e2816200018f565b50565b620000f08162000244565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606200014f838360405180606001604052806027815260200162000e6f60279139620002f8565b9392505050565b60006200018060008051602062000e4f83398151915260001b6200037760201b620001951760201c565b546001600160a01b0316919050565b6001600160a01b038116620001fa5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b806200022360008051602062000e4f83398151915260001b6200037760201b620001951760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6200025a816200037a60201b620001981760201c565b620002be5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401620001f1565b80620002237f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b6200037760201b620001951760201c565b6060600080856001600160a01b03168560405162000317919062000577565b600060405180830381855af49150503d806000811462000354576040519150601f19603f3d011682016040523d82523d6000602084013e62000359565b606091505b5090925090506200036d8683838762000389565b9695505050505050565b90565b6001600160a01b03163b151590565b60608315620003fd578251600003620003f5576001600160a01b0385163b620003f55760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401620001f1565b508162000409565b62000409838362000411565b949350505050565b815115620004225781518083602001fd5b8060405162461bcd60e51b8152600401620001f1919062000595565b80516001600160a01b03811681146200045657600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200048e57818101518382015260200162000474565b50506000910152565b600080600060608486031215620004ad57600080fd5b620004b8846200043e565b9250620004c8602085016200043e565b60408501519092506001600160401b0380821115620004e657600080fd5b818601915086601f830112620004fb57600080fd5b8151818111156200051057620005106200045b565b604051601f8201601f19908116603f011681019083821181831017156200053b576200053b6200045b565b816040528281528960208487010111156200055557600080fd5b6200056883602083016020880162000471565b80955050505050509250925092565b600082516200058b81846020870162000471565b9190910192915050565b6020815260008251806020840152620005b681604085016020870162000471565b601f01601f19169190910160400192915050565b61087580620005da6000396000f3fe60806040523661001357610011610017565b005b6100115b61001f6101a7565b6001600160a01b0316330361015f5760606001600160e01b0319600035166364d3180d60e11b810161005a576100536101da565b9150610157565b63587086bd60e11b6001600160e01b031982160161007a57610053610231565b63070d7c6960e41b6001600160e01b031982160161009a57610053610277565b621eb96f60e61b6001600160e01b03198216016100b9576100536102a8565b63a39f25e560e01b6001600160e01b03198216016100d9576100536102e8565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101676102fc565b565b606061018e83836040518060600160405280602781526020016108426027913961030c565b9392505050565b90565b6001600160a01b03163b151590565b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101e4610384565b60006101f33660048184610695565b81019061020091906106db565b905061021d8160405180602001604052806000815250600061038f565b505060408051602081019091526000815290565b60606000806102433660048184610695565b810190610250919061070c565b915091506102608282600161038f565b604051806020016040528060008152509250505090565b6060610281610384565b60006102903660048184610695565b81019061029d91906106db565b905061021d816103bb565b60606102b2610384565b60006102bc6101a7565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102f2610384565b60006102bc610412565b610167610307610412565b610421565b6060600080856001600160a01b03168560405161032991906107f2565b600060405180830381855af49150503d8060008114610364576040519150601f19603f3d011682016040523d82523d6000602084013e610369565b606091505b509150915061037a86838387610445565b9695505050505050565b341561016757600080fd5b610398836104c6565b6000825111806103a55750805b156103b6576103b48383610169565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103e46101a7565b604080516001600160a01b03928316815291841660208301520160405180910390a161040f81610506565b50565b600061041c6105af565b905090565b3660008037600080366000845af43d6000803e808015610440573d6000f35b3d6000fd5b606083156104b45782516000036104ad576001600160a01b0385163b6104ad5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014e565b50816104be565b6104be83836105d7565b949350505050565b6104cf81610601565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b03811661056b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014e565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101cb565b8151156105e75781518083602001fd5b8060405162461bcd60e51b815260040161014e919061080e565b6001600160a01b0381163b61066e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014e565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61058e565b600080858511156106a557600080fd5b838611156106b257600080fd5b5050820193919092039150565b80356001600160a01b03811681146106d657600080fd5b919050565b6000602082840312156106ed57600080fd5b61018e826106bf565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561071f57600080fd5b610728836106bf565b9150602083013567ffffffffffffffff8082111561074557600080fd5b818501915085601f83011261075957600080fd5b81358181111561076b5761076b6106f6565b604051601f8201601f19908116603f01168101908382118183101715610793576107936106f6565b816040528281528860208487010111156107ac57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60005b838110156107e95781810151838201526020016107d1565b50506000910152565b600082516108048184602087016107ce565b9190910192915050565b602081526000825180602084015261082d8160408501602087016107ce565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000ab53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c656400000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000003000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c80000000000000000000000003c44cdddb6a900fa2b585dd299e03d12fa4293bc00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000030b86b3146bdd2200b1dbdb1cea5e40d3451c028cbb4fb03b1826f7f2d82bee76bbd5cd68a74a16a7eceea093fd5826b9200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003087ce273bb9b51fd69e50de7a8d9a99cfb3b1a5c6a7b85f6673d137a5a2ce7df3d6ee4e6d579a142d58b0606c4a7a1c27000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030a33ac14980d85c0d154c5909ebf7a11d455f54beb4d5d0dc1d8b3670b9c4a6b6c450ee3d623ecc48026f09ed1f0b5c1200000000000000000000000000000000a164736f6c6343000811000a", }, { ContractAddr: common.HexToAddress(StakeCreditContract), CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/cfc0bd1127186a917ddc38fd38d22903034d3f0b", - Code: "6080604052600436106101855760003560e01c80635e607d76116100d1578063a5d059ca1161008a578063c2cde2b211610064578063c2cde2b2146104af578063d241c1ea146104cf578063dd62ed3e14610516578063f399e22e1461053657600080fd5b8063a5d059ca1461044f578063a9059cbb1461046f578063aad3ec961461048f57600080fd5b80635e607d761461038f578063647df759146103a457806370a08231146103c457806391faf0b4146103fa57806395d89b411461041a578063a457c2d71461042f57600080fd5b8063313ce5671161013e5780634056852d116101185780634056852d1461031c57806345bc4d101461033c5780634d99dd161461035c5780635c19a95c1461037c57600080fd5b8063313ce567146102a857806339509351146102c45780633a5381b5146102e457600080fd5b806306fdde03146101d45780630913db47146101ff578063095ea7b31461022d57806315d1f8981461025d57806318160ddd1461027357806323b872dd1461028857600080fd5b366101cf5733612002146101b557604051630f22c43960e41b815261200260048201526024015b60405180910390fd5b34609860008282546101c791906119f0565b925050819055005b600080fd5b3480156101e057600080fd5b506101e9610549565b6040516101f69190611a03565b60405180910390f35b34801561020b57600080fd5b5061021f61021a366004611a69565b6105db565b6040519081526020016101f6565b34801561023957600080fd5b5061024d610248366004611a8d565b610603565b60405190151581526020016101f6565b34801561026957600080fd5b5061021f60985481565b34801561027f57600080fd5b5060675461021f565b34801561029457600080fd5b5061024d6102a3366004611ab9565b61061b565b3480156102b457600080fd5b50604051601281526020016101f6565b3480156102d057600080fd5b5061024d6102df366004611a8d565b61063f565b3480156102f057600080fd5b50609754610304906001600160a01b031681565b6040516001600160a01b0390911681526020016101f6565b34801561032857600080fd5b5061021f610337366004611a69565b610661565b34801561034857600080fd5b5061021f610357366004611afa565b610728565b34801561036857600080fd5b5061021f610377366004611a8d565b61081b565b61021f61038a366004611a69565b610a02565b6103a261039d366004611b13565b610a55565b005b3480156103b057600080fd5b5061021f6103bf366004611afa565b610b1d565b3480156103d057600080fd5b5061021f6103df366004611a69565b6001600160a01b031660009081526065602052604090205490565b34801561040657600080fd5b5061021f610415366004611afa565b610b5c565b34801561042657600080fd5b506101e9610b97565b34801561043b57600080fd5b5061024d61044a366004611a8d565b610ba6565b34801561045b57600080fd5b5061021f61046a366004611a8d565b610c21565b34801561047b57600080fd5b5061024d61048a366004611a8d565b610d22565b34801561049b57600080fd5b5061021f6104aa366004611a8d565b610d30565b3480156104bb57600080fd5b5061021f6104ca366004611a69565b610ff2565b3480156104db57600080fd5b506104ef6104ea366004611a8d565b611010565b604080518351815260208085015190820152928101519083015260608201526080016101f6565b34801561052257600080fd5b5061021f610531366004611b3d565b6110c0565b6103a2610544366004611b76565b6110eb565b60606068805461055890611bfb565b80601f016020809104026020016040519081016040528092919081815260200182805461058490611bfb565b80156105d15780601f106105a6576101008083540402835291602001916105d1565b820191906000526020600020905b8154815290600101906020018083116105b457829003601f168201915b5050505050905090565b6001600160a01b0381166000908152606560205260408120546105fd90610b5c565b92915050565b600033610611818585611295565b5060019392505050565b6000336106298582856112ae565b610634858585611322565b506001949350505050565b60003361061181858561065283836110c0565b61065c91906119f0565b611295565b6001600160a01b0381166000908152609a6020526040812054600f81810b600160801b909204900b0380820361069a5750600092915050565b6000805b82811015610720576001600160a01b0385166000908152609a602052604081206106c79061133b565b6000818152609960209081526040918290208251606081018452815481526001820154928101839052600290910154928101929092529192509061070b90856119f0565b935050508061071990611c2f565b905061069e565b509392505050565b6000336120021461075057604051630f22c43960e41b815261200260048201526024016101ac565b6097546001600160a01b03166000908152606560205260408120549061077584610b1d565b90508181116107845780610786565b815b6097549091506000906107a2906001600160a01b03168361138f565b6040519091506000906110029083908381818185875af1925050503d80600081146107e9576040519150601f19603f3d011682016040523d82523d6000602084013e6107ee565b606091505b5050905080610810576040516312171d8360e31b815260040160405180910390fd5b50925050505b919050565b6000336120021461084357604051630f22c43960e41b815261200260048201526024016101ac565b8160000361086457604051631f2a200560e01b815260040160405180910390fd5b6001600160a01b03831660009081526065602052604090205482111561089d57604051631e9acf1760e31b815260040160405180910390fd5b6108a7838361138f565b905060006120026001600160a01b031663fc0c5ff16040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061090f9190611c48565b61091990426119f0565b6040805160608101825285815260208101859052908101829052909150600085610942816113c4565b60405160609290921b6bffffffffffffffffffffffff19166020830152603482015260540160408051601f19818403018152918152815160209283012060008181526099845282812086518155868501516001820155868401516002909101556001600160a01b038a168152609a90935291209091506109f990828154600160801b90819004600f0b6000818152600180860160205260409091209390935583546001600160801b03908116939091011602179055565b50505092915050565b60003361200214610a2a57604051630f22c43960e41b815261200260048201526024016101ac565b34600003610a4b57604051631f2a200560e01b815260040160405180910390fd5b6105fd82346113ec565b3361200214610a7b57604051630f22c43960e41b815261200260048201526024016101ac565b346000612710610a9567ffffffffffffffff851684611c61565b610a9f9190611c78565b90506000610aad8284611c9a565b90508060986000828254610ac191906119f0565b9091555050609754610adc906001600160a01b0316836113ec565b5060408051828152602081018490527ffb0e1482d62102ab9594f69d4c6d693749e3e2bf1c21af272f5456b2d5a4f6b591015b60405180910390a150505050565b6000609854600003610b42576040516307b76ce760e51b815260040160405180910390fd5b609854606754610b529084611c61565b6105fd9190611c78565b6000610b6760675490565b600003610b8757604051632fe8dae960e01b815260040160405180910390fd5b606754609854610b529084611c61565b60606069805461055890611bfb565b60003381610bb482866110c0565b905083811015610c145760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016101ac565b6106348286868403611295565b60003361200214610c4957604051630f22c43960e41b815261200260048201526024016101ac565b81600003610c6a57604051631f2a200560e01b815260040160405180910390fd5b6001600160a01b038316600090815260656020526040902054821115610ca357604051631e9acf1760e31b815260040160405180910390fd5b610cad838361138f565b6040519091506000906120029083908381818185875af1925050503d8060008114610cf4576040519150601f19603f3d011682016040523d82523d6000602084013e610cf9565b606091505b5050905080610d1b576040516312171d8360e31b815260040160405180910390fd5b5092915050565b600033610611818585611322565b60003361200214610d5857604051630f22c43960e41b815261200260048201526024016101ac565b610d60611415565b6001600160a01b0383166000908152609a6020526040902054600f81810b600160801b909204900b03600003610da95760405163ad41893760e01b815260040160405180910390fd5b811580610ddd57506001600160a01b0383166000908152609a6020526040902054600f81810b600160801b909204900b0382115b610de75781610e11565b6001600160a01b0383166000908152609a6020526040902054600f81810b600160801b909204900b035b915060005b8215610ee6576001600160a01b0384166000908152609a60205260408120610e3d9061133b565b60008181526099602090815260409182902082516060810184528154815260018201549281019290925260020154918101829052919250421015610e82575050610ee6565b6001600160a01b0386166000908152609a60205260409020610ea39061146e565b50600082815260996020908152604082208281556001810183905560020191909155810151610ed290846119f0565b9250610edd85611cad565b94505050610e16565b80600003610f07576040516303cd8e0960e21b815260040160405180910390fd5b60006120026001600160a01b031663e8f67c3b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f6d9190611c48565b90506000856001600160a01b03168284604051600060405180830381858888f193505050503d8060008114610fbe576040519150601f19603f3d011682016040523d82523d6000602084013e610fc3565b606091505b5050905080610fe5576040516312171d8360e31b815260040160405180910390fd5b50506001805590506105fd565b6001600160a01b0381166000908152609b60205260408120546105fd565b61103460405180606001604052806000815260200160008152602001600081525090565b6001600160a01b0383166000908152609a60205260408120819061105890856114ed565b60008181526099602090815260408083206001600160a01b038a168452609a9092529091205491925090600f81810b600160801b909204900b036040805160608101825283548152600184015460208201526002909301549083015290969095509350505050565b6001600160a01b03918216600090815260666020908152604080832093909416825291909152205490565b600054610100900460ff161580801561110b5750600054600160ff909116105b806111255750303b158015611125575060005460ff166001145b6111885760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016101ac565b6000805460ff1916600117905580156111ab576000805461ff0019166101001790555b33612002146111d157604051630f22c43960e41b815261200260048201526024016101ac565b600083836040516020016111e6929190611cc4565b60405160208183030381529060405290506000848460405160200161120c929190611cf4565b6040516020818303038152906040529050611227828261155e565b609780546001600160a01b0319166001600160a01b03881617905561124b346115a3565b5050801561128f576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602001610b0f565b50505050565b604051632028747160e01b815260040160405180910390fd5b60006112ba84846110c0565b9050600019811461128f57818110156113155760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016101ac565b61128f8484848403611295565b604051638cd22d1960e01b815260040160405180910390fd5b60006113568254600f81810b600160801b909204900b131590565b1561137457604051631ed9509560e11b815260040160405180910390fd5b508054600f0b60009081526001909101602052604090205490565b600061139a82610b5c565b90506113a68383611713565b80609860008282546113b89190611c9a565b90915550909392505050565b6001600160a01b0381166000908152609b602052604090208054600181018255905b50919050565b60006113f782610b1d565b90506114038382611847565b81609860008282546113b891906119f0565b6002600154036114675760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016101ac565b6002600155565b60006114898254600f81810b600160801b909204900b131590565b156114a757604051631ed9509560e11b815260040160405180910390fd5b508054600f0b6000818152600180840160205260408220805492905583546fffffffffffffffffffffffffffffffff191692016001600160801b03169190911790915590565b6000806115106114fc84611908565b855461150b9190600f0b611d12565b611976565b8454909150600160801b9004600f90810b9082900b1261154357604051632d0483c560e21b815260040160405180910390fd5b600f0b60009081526001939093016020525050604090205490565b600054610100900460ff166115855760405162461bcd60e51b81526004016101ac90611d3a565b60686115918382611de9565b50606961159e8282611de9565b505050565b600054610100900460ff166115ca5760405162461bcd60e51b81526004016101ac90611d3a565b60006120026001600160a01b031663ae0f336d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561160c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116309190611c48565b9050808211158061164a57506097546001600160a01b0316155b80611656575060675415155b1561167457604051632163e6b960e21b815260040160405180910390fd5b60006120026001600160a01b0316634e6fd6c46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116da9190611ea9565b90506116e68183611847565b60006116f28385611c9a565b60975490915061170b906001600160a01b031682611847565b505050609855565b6001600160a01b0382166117735760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016101ac565b6001600160a01b038216600090815260656020526040902054818110156117e75760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016101ac565b6001600160a01b03831660008181526065602090815260408083208686039055606780548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b6001600160a01b03821661189d5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016101ac565b80606760008282546118af91906119f0565b90915550506001600160a01b0382166000818152606560209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b60006001600160ff1b038211156119725760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b60648201526084016101ac565b5090565b80600f81900b81146108165760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20316044820152663238206269747360c81b60648201526084016101ac565b634e487b7160e01b600052601160045260246000fd5b808201808211156105fd576105fd6119da565b600060208083528351808285015260005b81811015611a3057858101830151858201604001528201611a14565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611a6657600080fd5b50565b600060208284031215611a7b57600080fd5b8135611a8681611a51565b9392505050565b60008060408385031215611aa057600080fd5b8235611aab81611a51565b946020939093013593505050565b600080600060608486031215611ace57600080fd5b8335611ad981611a51565b92506020840135611ae981611a51565b929592945050506040919091013590565b600060208284031215611b0c57600080fd5b5035919050565b600060208284031215611b2557600080fd5b813567ffffffffffffffff81168114611a8657600080fd5b60008060408385031215611b5057600080fd5b8235611b5b81611a51565b91506020830135611b6b81611a51565b809150509250929050565b600080600060408486031215611b8b57600080fd5b8335611b9681611a51565b9250602084013567ffffffffffffffff80821115611bb357600080fd5b818601915086601f830112611bc757600080fd5b813581811115611bd657600080fd5b876020828501011115611be857600080fd5b6020830194508093505050509250925092565b600181811c90821680611c0f57607f821691505b6020821081036113e657634e487b7160e01b600052602260045260246000fd5b600060018201611c4157611c416119da565b5060010190565b600060208284031215611c5a57600080fd5b5051919050565b80820281158282048414176105fd576105fd6119da565b600082611c9557634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156105fd576105fd6119da565b600081611cbc57611cbc6119da565b506000190190565b65029ba30b5b2960d51b815281836006830137660810dc99591a5d60ca1b91016006810191909152600d01919050565b611cdd60f21b81528183600283013760009101600201908152919050565b8082018281126000831280158216821582161715611d3257611d326119da565b505092915050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b634e487b7160e01b600052604160045260246000fd5b601f82111561159e57600081815260208120601f850160051c81016020861015611dc25750805b601f850160051c820191505b81811015611de157828155600101611dce565b505050505050565b815167ffffffffffffffff811115611e0357611e03611d85565b611e1781611e118454611bfb565b84611d9b565b602080601f831160018114611e4c5760008415611e345750858301515b600019600386901b1c1916600185901b178555611de1565b600085815260208120601f198616915b82811015611e7b57888601518255948401946001909101908401611e5c565b5085821015611e995787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060208284031215611ebb57600080fd5b8151611a8681611a5156fea164736f6c6343000811000a", + Code: "6080604052600436106101d15760003560e01c8063647df759116100f7578063a9059cbb11610095578063c2cde2b211610064578063c2cde2b21461063c578063d241c1ea1461065c578063dd62ed3e1461069e578063f399e22e146106be57600080fd5b8063a9059cbb146105af578063a9664feb146105cf578063aa1966cd146105ef578063aad3ec961461061c57600080fd5b806391faf0b4116100d157806391faf0b41461053a57806395d89b411461055a578063a457c2d71461056f578063a5d059ca1461058f57600080fd5b8063647df759146104b75780636bbf2249146104d757806370a082311461050457600080fd5b80632f2d448a1161016f57806345bc4d101161013e57806345bc4d101461044f5780634d99dd161461046f5780635c19a95c1461048f5780635e607d76146104a257600080fd5b80632f2d448a146103bb578063313ce567146103db57806339509351146103f75780633a5381b51461041757600080fd5b8063095ea7b3116101ab578063095ea7b31461034057806315d1f8981461037057806318160ddd1461038657806323b872dd1461039b57600080fd5b8063038c0023146102cb57806306fdde03146102fe5780630913db471461032057600080fd5b366102c657336120021461020157604051630f22c43960e41b815261200260048201526024015b60405180910390fd5b60006120026001600160a01b0316631fa8882b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610243573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102679190611d46565b6102719042611d75565b6098546000828152609d6020908152604080832093909355609c9052908120805492935034929091906102a5908490611d97565b9250508190555034609860008282546102be9190611d97565b925050819055005b600080fd5b3480156102d757600080fd5b506102eb6102e6366004611dc2565b6106d1565b6040519081526020015b60405180910390f35b34801561030a57600080fd5b50610313610701565b6040516102f59190611de6565b34801561032c57600080fd5b506102eb61033b366004611dc2565b610793565b34801561034c57600080fd5b5061036061035b366004611e34565b6107b5565b60405190151581526020016102f5565b34801561037c57600080fd5b506102eb60985481565b34801561039257600080fd5b506067546102eb565b3480156103a757600080fd5b506103606103b6366004611e60565b6107cd565b3480156103c757600080fd5b506102eb6103d6366004611dc2565b6107f1565b3480156103e757600080fd5b50604051601281526020016102f5565b34801561040357600080fd5b50610360610412366004611e34565b6108b6565b34801561042357600080fd5b50609754610437906001600160a01b031681565b6040516001600160a01b0390911681526020016102f5565b34801561045b57600080fd5b506102eb61046a366004611ea1565b6108d8565b34801561047b57600080fd5b506102eb61048a366004611e34565b6109cb565b6102eb61049d366004611dc2565b610be2565b6104b56104b0366004611eba565b610c35565b005b3480156104c357600080fd5b506102eb6104d2366004611ea1565b610da8565b3480156104e357600080fd5b506102eb6104f2366004611ea1565b609d6020526000908152604090205481565b34801561051057600080fd5b506102eb61051f366004611dc2565b6001600160a01b031660009081526065602052604090205490565b34801561054657600080fd5b506102eb610555366004611ea1565b610de7565b34801561056657600080fd5b50610313610e22565b34801561057b57600080fd5b5061036061058a366004611e34565b610e31565b34801561059b57600080fd5b506102eb6105aa366004611e34565b610eac565b3480156105bb57600080fd5b506103606105ca366004611e34565b610fad565b3480156105db57600080fd5b506102eb6105ea366004611e34565b610fbb565b3480156105fb57600080fd5b506102eb61060a366004611ea1565b609c6020526000908152604090205481565b34801561062857600080fd5b506102eb610637366004611e34565b6110e4565b34801561064857600080fd5b506102eb610657366004611dc2565b611387565b34801561066857600080fd5b5061067c610677366004611e34565b6113a5565b60408051825181526020808401519082015291810151908201526060016102f5565b3480156106aa57600080fd5b506102eb6106b9366004611ee4565b611428565b6104b56106cc366004611f1d565b611453565b6001600160a01b0381166000908152609a6020526040812054600f81810b600160801b909204900b035b92915050565b60606068805461071090611fa2565b80601f016020809104026020016040519081016040528092919081815260200182805461073c90611fa2565b80156107895780601f1061075e57610100808354040283529160200191610789565b820191906000526020600020905b81548152906001019060200180831161076c57829003601f168201915b5050505050905090565b6001600160a01b0381166000908152606560205260408120546106fb90610de7565b6000336107c3818585611601565b5060019392505050565b6000336107db85828561161a565b6107e685858561168e565b506001949350505050565b6001600160a01b0381166000908152609a6020526040812054600f81810b600160801b909204900b0381805b828110156108ae576001600160a01b0385166000908152609a6020526040812061084790836116a7565b6000818152609960209081526040918290208251606081018452815481526001820154928101929092526002015491810182905291925042106108945761088d84611fd6565b935061089b565b50506108ae565b5050806108a790611fd6565b905061081d565b509392505050565b6000336107c38185856108c98383611428565b6108d39190611d97565b611601565b6000336120021461090057604051630f22c43960e41b815261200260048201526024016101f8565b6097546001600160a01b03166000908152606560205260408120549061092584610da8565b90508181116109345780610936565b815b609754909150600090610952906001600160a01b031683611718565b6040519091506000906110029083908381818185875af1925050503d8060008114610999576040519150601f19603f3d011682016040523d82523d6000602084013e61099e565b606091505b50509050806109c0576040516312171d8360e31b815260040160405180910390fd5b50925050505b919050565b600033612002146109f357604051630f22c43960e41b815261200260048201526024016101f8565b81600003610a1457604051631f2a200560e01b815260040160405180910390fd5b6001600160a01b038316600090815260656020526040902054821115610a4d57604051631e9acf1760e31b815260040160405180910390fd5b610a578383611718565b905060006120026001600160a01b031663fc0c5ff16040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a9b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610abf9190611d46565b610ac99042611d97565b6040805160608101825285815260208101859052908101829052909150600085610af28161174d565b60405160609290921b6bffffffffffffffffffffffff19166020830152603482015260540160408051601f1981840301815291815281516020928301206000818152609990935291205490915015610b5d5760405163b19e911560e01b815260040160405180910390fd5b600081815260996020908152604080832085518155828601516001820155818601516002909101556001600160a01b0389168352609a9091529020610bd990828154600160801b90819004600f0b6000818152600180860160205260409091209390935583546001600160801b03908116939091011602179055565b50505092915050565b60003361200214610c0a57604051630f22c43960e41b815261200260048201526024016101f8565b34600003610c2b57604051631f2a200560e01b815260040160405180910390fd5b6106fb8234611775565b3361200214610c5b57604051630f22c43960e41b815261200260048201526024016101f8565b346000612710610c7567ffffffffffffffff851684611fef565b610c7f9190611d75565b90506000610c8d8284612006565b905060006120026001600160a01b0316631fa8882b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cd1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cf59190611d46565b610cff9042611d75565b6098546000828152609d6020908152604080832093909355609c905290812080549293508492909190610d33908490611d97565b925050819055508160986000828254610d4c9190611d97565b9091555050609754610d67906001600160a01b031684611775565b5060408051838152602081018590527ffb0e1482d62102ab9594f69d4c6d693749e3e2bf1c21af272f5456b2d5a4f6b5910160405180910390a15050505050565b6000609854600003610dcd576040516307b76ce760e51b815260040160405180910390fd5b609854606754610ddd9084611fef565b6106fb9190611d75565b6000610df260675490565b600003610e1257604051632fe8dae960e01b815260040160405180910390fd5b606754609854610ddd9084611fef565b60606069805461071090611fa2565b60003381610e3f8286611428565b905083811015610e9f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016101f8565b6107e68286868403611601565b60003361200214610ed457604051630f22c43960e41b815261200260048201526024016101f8565b81600003610ef557604051631f2a200560e01b815260040160405180910390fd5b6001600160a01b038316600090815260656020526040902054821115610f2e57604051631e9acf1760e31b815260040160405180910390fd5b610f388383611718565b6040519091506000906120029083908381818185875af1925050503d8060008114610f7f576040519150601f19603f3d011682016040523d82523d6000602084013e610f84565b606091505b5050905080610fa6576040516312171d8360e31b815260040160405180910390fd5b5092915050565b6000336107c381858561168e565b6001600160a01b0382166000908152609a6020526040812054600f81810b600160801b909204900b03600003610ff3575060006106fb565b81158061102757506001600160a01b0383166000908152609a6020526040902054600f81810b600160801b909204900b0382115b611031578161105b565b6001600160a01b0383166000908152609a6020526040902054600f81810b600160801b909204900b035b91506000805b838110156108ae576001600160a01b0385166000908152609a6020526040812061108b90836116a7565b600081815260996020908152604091829020825160608101845281548152600182015492810183905260029091015492810192909252919250906110cf9085611d97565b93505050806110dd90611fd6565b9050611061565b6000336120021461110c57604051630f22c43960e41b815261200260048201526024016101f8565b61111461179e565b6001600160a01b0383166000908152609a6020526040902054600f81810b600160801b909204900b0360000361115d5760405163ad41893760e01b815260040160405180910390fd5b81158061119157506001600160a01b0383166000908152609a6020526040902054600f81810b600160801b909204900b0382115b61119b57816111c5565b6001600160a01b0383166000908152609a6020526040902054600f81810b600160801b909204900b035b915060005b821561127b576001600160a01b0384166000908152609a602052604081206111f1906117f7565b6000818152609960209081526040918290208251606081018452815481526001820154928101929092526002015491810182905291925042101561123657505061127b565b6001600160a01b0386166000908152609a602052604090206112579061184b565b5060208101516112679084611d97565b925061127285612019565b945050506111ca565b8060000361129c576040516303cd8e0960e21b815260040160405180910390fd5b60006120026001600160a01b031663e8f67c3b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113029190611d46565b90506000856001600160a01b03168284604051600060405180830381858888f193505050503d8060008114611353576040519150601f19603f3d011682016040523d82523d6000602084013e611358565b606091505b505090508061137a576040516312171d8360e31b815260040160405180910390fd5b50506001805590506106fb565b6001600160a01b0381166000908152609b60205260408120546106fb565b6113c960405180606001604052806000815260200160008152602001600081525090565b6001600160a01b0383166000908152609a602052604081206113eb90846116a7565b6000908152609960209081526040918290208251606081018452815481526001820154928101929092526002015491810191909152949350505050565b6001600160a01b03918216600090815260666020908152604080832093909416825291909152205490565b600054610100900460ff16158080156114735750600054600160ff909116105b8061148d5750303b15801561148d575060005460ff166001145b6114f05760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016101f8565b6000805460ff191660011790558015611513576000805461ff0019166101001790555b336120021461153957604051630f22c43960e41b815261200260048201526024016101f8565b6000838360405160200161154e929190612030565b604051602081830303815290604052905060008484604051602001611574929190612060565b604051602081830303815290604052905061158f82826118ca565b609780546001600160a01b0319166001600160a01b0388161790556115b33461190f565b505080156115fb576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b604051632028747160e01b815260040160405180910390fd5b60006116268484611428565b905060001981146115fb57818110156116815760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016101f8565b6115fb8484848403611601565b604051638cd22d1960e01b815260040160405180910390fd5b6000806116ca6116b684611a7f565b85546116c59190600f0b61207e565b611aed565b8454909150600160801b9004600f90810b9082900b126116fd57604051632d0483c560e21b815260040160405180910390fd5b600f0b60009081526001939093016020525050604090205490565b600061172382610de7565b905061172f8383611b51565b80609860008282546117419190612006565b90915550909392505050565b6001600160a01b0381166000908152609b602052604090208054600181018255905b50919050565b600061178082610da8565b905061178c8382611c85565b81609860008282546117419190611d97565b6002600154036117f05760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016101f8565b6002600155565b60006118128254600f81810b600160801b909204900b131590565b1561183057604051631ed9509560e11b815260040160405180910390fd5b508054600f0b60009081526001909101602052604090205490565b60006118668254600f81810b600160801b909204900b131590565b1561188457604051631ed9509560e11b815260040160405180910390fd5b508054600f0b6000818152600180840160205260408220805492905583546fffffffffffffffffffffffffffffffff191692016001600160801b03169190911790915590565b600054610100900460ff166118f15760405162461bcd60e51b81526004016101f8906120a6565b60686118fd8382612155565b50606961190a8282612155565b505050565b600054610100900460ff166119365760405162461bcd60e51b81526004016101f8906120a6565b60006120026001600160a01b0316638a4d3fa86040518163ffffffff1660e01b8152600401602060405180830381865afa158015611978573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061199c9190611d46565b905080821115806119b657506097546001600160a01b0316155b806119c2575060675415155b156119e057604051632163e6b960e21b815260040160405180910390fd5b60006120026001600160a01b0316634e6fd6c46040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a469190612215565b9050611a528183611c85565b6000611a5e8385612006565b609754909150611a77906001600160a01b031682611c85565b505050609855565b60006001600160ff1b03821115611ae95760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b60648201526084016101f8565b5090565b80600f81900b81146109c65760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20316044820152663238206269747360c81b60648201526084016101f8565b6001600160a01b038216611bb15760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016101f8565b6001600160a01b03821660009081526065602052604090205481811015611c255760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016101f8565b6001600160a01b03831660008181526065602090815260408083208686039055606780548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b6001600160a01b038216611cdb5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016101f8565b8060676000828254611ced9190611d97565b90915550506001600160a01b0382166000818152606560209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b600060208284031215611d5857600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b600082611d9257634e487b7160e01b600052601260045260246000fd5b500490565b808201808211156106fb576106fb611d5f565b6001600160a01b0381168114611dbf57600080fd5b50565b600060208284031215611dd457600080fd5b8135611ddf81611daa565b9392505050565b600060208083528351808285015260005b81811015611e1357858101830151858201604001528201611df7565b506000604082860101526040601f19601f8301168501019250505092915050565b60008060408385031215611e4757600080fd5b8235611e5281611daa565b946020939093013593505050565b600080600060608486031215611e7557600080fd5b8335611e8081611daa565b92506020840135611e9081611daa565b929592945050506040919091013590565b600060208284031215611eb357600080fd5b5035919050565b600060208284031215611ecc57600080fd5b813567ffffffffffffffff81168114611ddf57600080fd5b60008060408385031215611ef757600080fd5b8235611f0281611daa565b91506020830135611f1281611daa565b809150509250929050565b600080600060408486031215611f3257600080fd5b8335611f3d81611daa565b9250602084013567ffffffffffffffff80821115611f5a57600080fd5b818601915086601f830112611f6e57600080fd5b813581811115611f7d57600080fd5b876020828501011115611f8f57600080fd5b6020830194508093505050509250925092565b600181811c90821680611fb657607f821691505b60208210810361176f57634e487b7160e01b600052602260045260246000fd5b600060018201611fe857611fe8611d5f565b5060010190565b80820281158282048414176106fb576106fb611d5f565b818103818111156106fb576106fb611d5f565b60008161202857612028611d5f565b506000190190565b65029ba30b5b2960d51b815281836006830137660810dc99591a5d60ca1b91016006810191909152600d01919050565b611cdd60f21b81528183600283013760009101600201908152919050565b808201828112600083128015821682158216171561209e5761209e611d5f565b505092915050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b634e487b7160e01b600052604160045260246000fd5b601f82111561190a57600081815260208120601f850160051c8101602086101561212e5750805b601f850160051c820191505b8181101561214d5782815560010161213a565b505050505050565b815167ffffffffffffffff81111561216f5761216f6120f1565b6121838161217d8454611fa2565b84612107565b602080601f8311600181146121b857600084156121a05750858301515b600019600386901b1c1916600185901b17855561214d565b600085815260208120601f198616915b828110156121e7578886015182559484019460019091019084016121c8565b50858210156122055787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006020828403121561222757600080fd5b8151611ddf81611daa56fea164736f6c6343000811000a", }, { ContractAddr: common.HexToAddress(GovernorContract), CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/cfc0bd1127186a917ddc38fd38d22903034d3f0b", - Code: "6080604052600436106103bc5760003560e01c80637b3c71d3116101f2578063c28bc2fa1161010d578063e23a9a52116100a0578063f23a6e611161006f578063f23a6e6114610d73578063f8ce560a14610d9f578063fc0c546a14610dbf578063fe0d94c114610de057600080fd5b8063e23a9a5214610c48578063ea0217cf14610d13578063eb9019d414610d33578063ece40cc114610d5357600080fd5b8063da95691a116100dc578063da95691a14610b8e578063dd4e2ba514610bae578063ddf0b00914610bf4578063deaaa7cc14610c1457600080fd5b8063c28bc2fa14610b1c578063c59057e414610b2f578063d07f91e914610b4f578063d33219b414610b6f57600080fd5b8063a7713a7011610185578063b58131b011610154578063b58131b014610aa0578063bc197c8114610ab5578063c01f9e3714610ae1578063c170ec0b14610b0157600080fd5b8063a7713a7014610a2b578063a890c91014610a40578063ab58fb8e14610a60578063ac43175114610a8057600080fd5b806384b0196e116101c157806384b0196e146109a357806391ddadf4146109cb57806397c3d334146109f75780639a802a6d14610a0b57600080fd5b80637b3c71d3146109395780637d5e81e2146109595780638129fc1c146109795780638456cb591461098e57600080fd5b806332b8113e116102e2578063533ddd14116102755780635f398a14116102445780635f398a14146108b257806360c4247f146108d257806363d42b38146108f257806370b0f6601461091957600080fd5b8063533ddd141461081757806354fd4d501461084857806356781388146108725780635c975abb1461089257600080fd5b806340e58ee5116102b157806340e58ee5146107775780634385963214610797578063452115d6146107e25780634bf5d7e91461080257600080fd5b806332b8113e146106eb5780633932abb1146107145780633bccf4fd1461072a5780633e4f49e61461074a57600080fd5b8063143489d01161035a5780632656227d116103295780632656227d1461063d5780632d63f693146106505780632fe3e26114610687578063328dd982146106bb57600080fd5b8063143489d01461056e578063150b7a02146105c4578063160cbed71461060857806324bc1a641461062857600080fd5b8063034201811161039657806303420181146104f7578063046f7da21461051757806306f3f9e61461052c57806306fdde031461054c57600080fd5b8063013cf08b1461042c57806301ffc9a7146104a757806302a251a3146104d757600080fd5b3661042757306103ca610df3565b6001600160a01b0316146104255760405162461bcd60e51b815260206004820152601f60248201527f476f7665726e6f723a206d7573742073656e6420746f206578656375746f720060448201526064015b60405180910390fd5b005b600080fd5b34801561043857600080fd5b5061044c61044736600461585e565b610e0d565b604080519a8b526001600160a01b0390991660208b0152978901969096526060880194909452608087019290925260a086015260c085015260e084015215156101008301521515610120820152610140015b60405180910390f35b3480156104b357600080fd5b506104c76104c2366004615877565b610ec8565b604051901515815260200161049e565b3480156104e357600080fd5b50610162545b60405190815260200161049e565b34801561050357600080fd5b506104e96105123660046159bd565b610ed9565b34801561052357600080fd5b50610425610fd1565b34801561053857600080fd5b5061042561054736600461585e565b61103a565b34801561055857600080fd5b506105616110c5565b60405161049e9190615ab3565b34801561057a57600080fd5b506105ac61058936600461585e565b60009081526101306020526040902054600160401b90046001600160a01b031690565b6040516001600160a01b03909116815260200161049e565b3480156105d057600080fd5b506105ef6105df366004615adb565b630a85bd0160e11b949350505050565b6040516001600160e01b0319909116815260200161049e565b34801561061457600080fd5b506104e9610623366004615cb2565b611158565b34801561063457600080fd5b506104e961135d565b6104e961064b366004615cb2565b611383565b34801561065c57600080fd5b506104e961066b36600461585e565b600090815261013060205260409020546001600160401b031690565b34801561069357600080fd5b506104e97fb3b3f3b703cd84ce352197dcff232b1b5d3cfb2025ce47cf04742d0651f1af8881565b3480156106c757600080fd5b506106db6106d636600461585e565b611476565b60405161049e9493929190615e0a565b3480156106f757600080fd5b5061025c546040516001600160401b03909116815260200161049e565b34801561072057600080fd5b50610161546104e9565b34801561073657600080fd5b506104e9610745366004615e57565b611708565b34801561075657600080fd5b5061076a61076536600461585e565b61177e565b60405161049e9190615ebb565b34801561078357600080fd5b5061042561079236600461585e565b611789565b3480156107a357600080fd5b506104c76107b2366004615ee3565b6000828152610193602090815260408083206001600160a01b038516845260080190915290205460ff1692915050565b3480156107ee57600080fd5b506104e96107fd366004615cb2565b6117b4565b34801561080e57600080fd5b506105616117cb565b34801561082357600080fd5b506104c7610832366004615f13565b61028e6020526000908152604090205460ff1681565b34801561085457600080fd5b506040805180820190915260018152603160f81b6020820152610561565b34801561087e57600080fd5b506104e961088d366004615f30565b611878565b34801561089e57600080fd5b5061028f546104c790610100900460ff1681565b3480156108be57600080fd5b506104e96108cd366004615f5c565b6118a1565b3480156108de57600080fd5b506104e96108ed36600461585e565b6118eb565b3480156108fe57600080fd5b5061028f546105ac906201000090046001600160a01b031681565b34801561092557600080fd5b5061042561093436600461585e565b6119a0565b34801561094557600080fd5b506104e9610954366004615fdf565b611a28565b34801561096557600080fd5b506104e9610974366004616038565b611a7a565b34801561098557600080fd5b50610425611b0a565b34801561099a57600080fd5b50610425611f60565b3480156109af57600080fd5b506109b8611fcd565b60405161049e97969594939291906160d8565b3480156109d757600080fd5b506109e061206b565b60405165ffffffffffff909116815260200161049e565b348015610a0357600080fd5b5060646104e9565b348015610a1757600080fd5b506104e9610a2636600461613a565b6120df565b348015610a3757600080fd5b506104e96120f6565b348015610a4c57600080fd5b50610425610a5b366004615f13565b612123565b348015610a6c57600080fd5b506104e9610a7b36600461585e565b6121ab565b348015610a8c57600080fd5b50610425610a9b366004616192565b612247565b348015610aac57600080fd5b506104e9612826565b348015610ac157600080fd5b506105ef610ad03660046161f1565b63bc197c8160e01b95945050505050565b348015610aed57600080fd5b506104e9610afc36600461585e565b612832565b348015610b0d57600080fd5b5061028f546104c79060ff1681565b610425610b2a366004616284565b61283d565b348015610b3b57600080fd5b506104e9610b4a366004615cb2565b61294d565b348015610b5b57600080fd5b50610425610b6a3660046162c7565b612987565b348015610b7b57600080fd5b506101f8546001600160a01b03166105ac565b348015610b9a57600080fd5b506104e9610ba93660046162f0565b612a0f565b348015610bba57600080fd5b5060408051808201909152601a81527f737570706f72743d627261766f2671756f72756d3d627261766f0000000000006020820152610561565b348015610c0057600080fd5b50610425610c0f36600461585e565b612a96565b348015610c2057600080fd5b506104e97f150214d74d59b7d1e90c73fc22ef3d991dd0a76b046543d4d80ab92d2a50328f81565b348015610c5457600080fd5b50610ce3610c63366004615ee3565b6040805160608101825260008082526020820181905291810191909152506000918252610193602090815260408084206001600160a01b0393909316845260089092018152918190208151606081018352905460ff8082161515835261010082041693820193909352620100009092046001600160601b03169082015290565b6040805182511515815260208084015160ff1690820152918101516001600160601b03169082015260600161049e565b348015610d1f57600080fd5b50610425610d2e36600461585e565b612ab9565b348015610d3f57600080fd5b506104e9610d4e366004616391565b612b41565b348015610d5f57600080fd5b50610425610d6e36600461585e565b612b62565b348015610d7f57600080fd5b506105ef610d8e3660046163bd565b63f23a6e6160e01b95945050505050565b348015610dab57600080fd5b506104e9610dba36600461585e565b612bea565b348015610dcb57600080fd5b506101c5546105ac906001600160a01b031681565b610425610dee36600461585e565b612c79565b6000610e086101f8546001600160a01b031690565b905090565b8060008080808080808080610e218a6121ab565b60008c815261013060205260409020549098506001600160401b03169650610e488b612832565b60008c81526101936020526040812080546005820154600683015460078401546001600160a01b039093169e50949a509850929650919450610e898d61177e565b90506002816007811115610e9f57610e9f615ea5565b1493506007816007811115610eb657610eb6615ea5565b14925050509193959799509193959799565b6000610ed382612c9c565b92915050565b600080610f7d610f757fb3b3f3b703cd84ce352197dcff232b1b5d3cfb2025ce47cf04742d0651f1af888c8c8c8c604051610f15929190616425565b60405180910390208b80519060200120604051602001610f5a959493929190948552602085019390935260ff9190911660408401526060830152608082015260a00190565b60405160208183030381529060405280519060200120612cc1565b868686612cee565b9050610fc38a828b8b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508d9250612d0c915050565b9a9950505050505050505050565b61028f546201000090046001600160a01b0316331461100357604051631431806f60e11b815260040160405180910390fd5b61028f805461ff00191690556040517f62451d457bc659158be6e6247f56ec1df424a5c7597f71c20c2bc44e0965c8f990600090a1565b611042610df3565b6001600160a01b0316336001600160a01b0316146110725760405162461bcd60e51b815260040161041c90616435565b3061107b610df3565b6001600160a01b0316146110b9576000803660405161109b929190616425565b604051809103902090505b806110b2610131612d1b565b036110a657505b6110c281612d9a565b50565b606061012f80546110d59061646c565b80601f01602080910402602001604051908101604052809291908181526020018280546111019061646c565b801561114e5780601f106111235761010080835404028352916020019161114e565b820191906000526020600020905b81548152906001019060200180831161113157829003601f168201915b5050505050905090565b6000806111678686868661294d565b905060046111748261177e565b600781111561118557611185615ea5565b146111a25760405162461bcd60e51b815260040161041c906164a6565b6101f8546040805163793d064960e11b815290516000926001600160a01b03169163f27a0c929160048083019260209291908290030181865afa1580156111ed573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061121191906164e7565b6101f85460405163b1c5f42760e01b81529192506001600160a01b03169063b1c5f4279061124c908a908a908a906000908b90600401616500565b602060405180830381865afa158015611269573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061128d91906164e7565b60008381526101f96020526040808220929092556101f85491516308f2a0bb60e41b81526001600160a01b0390921691638f2a0bb0916112da918b918b918b91908b90899060040161654e565b600060405180830381600087803b1580156112f457600080fd5b505af1158015611308573d6000803e3d6000fd5b505050507f9a2e42fd6722813d69113e7d0079d3d940171428df7373df9c7f7617cfda289282824261133a91906165bc565b604080519283526020830191909152015b60405180910390a15095945050505050565b6000610e08600161136c61206b565b61137691906165cf565b65ffffffffffff16612bea565b6000806113928686868661294d565b9050600061139f8261177e565b905060048160078111156113b5576113b5615ea5565b14806113d2575060058160078111156113d0576113d0615ea5565b145b6113ee5760405162461bcd60e51b815260040161041c906164a6565b6000828152610130602052604090819020600201805460ff19166001179055517f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f9061143d9084815260200190565b60405180910390a16114528288888888612f0b565b61145f8288888888612fac565b61146c828888888861305d565b5095945050505050565b60608060608060006101936000878152602001908152602001600020905080600101816002018260030183600401838054806020026020016040519081016040528092919081815260200182805480156114f957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116114db575b505050505093508280548060200260200160405190810160405280929190818152602001828054801561154b57602002820191906000526020600020905b815481526020019060010190808311611537575b5050505050925081805480602002602001604051908101604052809291908181526020016000905b8282101561161f5783829060005260206000200180546115929061646c565b80601f01602080910402602001604051908101604052809291908181526020018280546115be9061646c565b801561160b5780601f106115e05761010080835404028352916020019161160b565b820191906000526020600020905b8154815290600101906020018083116115ee57829003601f168201915b505050505081526020019060010190611573565b50505050915080805480602002602001604051908101604052809291908181526020016000905b828210156116f25783829060005260206000200180546116659061646c565b80601f01602080910402602001604051908101604052809291908181526020018280546116919061646c565b80156116de5780601f106116b3576101008083540402835291602001916116de565b820191906000526020600020905b8154815290600101906020018083116116c157829003601f168201915b505050505081526020019060010190611646565b5050505090509450945094509450509193509193565b604080517f150214d74d59b7d1e90c73fc22ef3d991dd0a76b046543d4d80ab92d2a50328f602082015290810186905260ff85166060820152600090819061175690610f7590608001610f5a565b905061177387828860405180602001604052806000815250613098565b979650505050505050565b6000610ed3826130bb565b60008060008061179885613208565b93509350935093506117ac848484846117b4565b505050505050565b60006117c285858585613499565b95945050505050565b6101c55460408051634bf5d7e960e01b815290516060926001600160a01b031691634bf5d7e99160048083019260009291908290030181865afa92505050801561183757506040513d6000823e601f3d908101601f1916820160405261183491908101906165f5565b60015b611873575060408051808201909152601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c74000000602082015290565b919050565b60008033905061189984828560405180602001604052806000815250613098565b949350505050565b60008033905061177387828888888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a9250612d0c915050565b61022b5460009080820361190457505061022a54919050565b600061022b611914600184616662565b8154811061192457611924616675565b60009182526020918290206040805180820190915291015463ffffffff8116808352600160201b9091046001600160e01b0316928201929092529150841061197a57602001516001600160e01b03169392505050565b61198f61198685613564565b61022b906135cd565b6001600160e01b0316949350505050565b6119a8610df3565b6001600160a01b0316336001600160a01b0316146119d85760405162461bcd60e51b815260040161041c90616435565b306119e1610df3565b6001600160a01b031614611a1f5760008036604051611a01929190616425565b604051809103902090505b80611a18610131612d1b565b03611a0c57505b6110c281613680565b600080339050611a7086828787878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061309892505050565b9695505050505050565b6000611a846136c3565b60005b8551811015611afd5761028e6000878381518110611aa757611aa7616675565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16611aeb57604051630b094f2760e31b815260040160405180910390fd5b80611af58161668b565b915050611a87565b506117c28585858561376e565b600054610100900460ff1615808015611b2a5750600054600160ff909116105b80611b445750303b158015611b44575060005460ff166001145b611ba75760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161041c565b6000805460ff191660011790558015611bca576000805461ff0019166101001790555b334114611bea5760405163022d8c9560e31b815260040160405180910390fd5b3a15611c09576040516383f1b1d360e01b815260040160405180910390fd5b611c356040518060400160405280600b81526020016a2129a1a3b7bb32b93737b960a91b8152506137d6565b611c4f620151806212750068056bc75e2d6310000061382d565b611c57613864565b611c6261200561388b565b611c6d6120066138bb565b611c77600a6138eb565b611c836201518061391b565b61028e6020527ff0f52cefb444f33092ac77280e2ff9c808a9c078a96d3cd7513137548137ed8f8054600160ff1991821681179092557fb2c9e894c6f17bfc84a6708e0ea85c2729271d7cae0a8d875cd1080fb415e7a080548216831790557fd8ceb939a734f5a4e0a6fede9e31504e16ac856b555e8bac20ad743b9ff2976a80548216831790557f2a7b967fc66f4b36023165170b23a76f880d3dbbf244a856aeee9e670cef725980548216831790557fdb1a1113bac2e4f0e6f8c2f2bc4f6dbecf1fccb033d5df1b55b5c5ad6c20ac7980548216831790557f8b1888b379fb3b749668d86c5bf8aaada8e2276c6ced3a4efcc1e877827ce0b380548216831790557feeeea8d485053a64711f2c5802d2cc63251dd394956c140a2e30db7cef242ec580548216831790557f4cdb1a6c4b56f62f27f7202d75e865c2405f138cb32ec45019c0f2ca8f91e47280548216831790557f49d6c403a3197b15e024f109c83eb730d7af1a8b49fc6f820e09bad2597c14c980548216831790557f7a41b38ceb33f296c1ff3db5ffcc6542acb091d5fb27586f3c551dd2ebac063880548216831790557f701fe333ee20fad5d5a6a9930dddd3fb815af1d976d5250e394e39d6e4123e3880548216831790557fee7ba9842df249188adc0fc380980c3099f608b602924e083dd61e8e70845b4a80548216831790557f29973aeebf3c17f2c3a9cf7ace17f2798aa544e1ea7427938024cde6df46bac180548216831790557f74c0d6e29c82d6628d5f083f86fc15f0c6acef97321252a1eee0bd893dae276580548216831790556120066000527f1bdfc01e60036e5be56ae85d8394ddf727e1021b3d74de5b554fedea2de437678054909116909117905561028f805462010000600160b01b03191663dead000017905580156110c2576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b61028f546201000090046001600160a01b03163314611f9257604051631431806f60e11b815260040160405180910390fd5b61028f805461ff0019166101001790556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e75290600090a1565b6000606080600080600060606065546000801b148015611fed5750606654155b6120315760405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b604482015260640161041c565b61203961394b565b61204161395a565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b6101c554604080516324776b7d60e21b815290516000926001600160a01b0316916391ddadf49160048083019260209291908290030181865afa9250505080156120d2575060408051601f3d908101601f191682019092526120cf918101906166a4565b60015b61187357610e0843613969565b60006120ec8484846139d0565b90505b9392505050565b61022b546000901561211b5761210d61022b613a47565b6001600160e01b0316905090565b5061022a5490565b61212b610df3565b6001600160a01b0316336001600160a01b03161461215b5760405162461bcd60e51b815260040161041c90616435565b30612164610df3565b6001600160a01b0316146121a25760008036604051612184929190616425565b604051809103902090505b8061219b610131612d1b565b0361218f57505b6110c281613a77565b6101f85460008281526101f9602052604080822054905163d45c443560e01b81526004810191909152909182916001600160a01b039091169063d45c443590602401602060405180830381865afa15801561220a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061222e91906164e7565b90508060011461223e57806120ef565b60009392505050565b336110071461226d57604051630f22c43960e41b8152611007600482015260240161041c565b6122d36040518060400160405280600b81526020016a766f74696e6744656c617960a81b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613ae29050565b1561237c57602081146123015783838383604051630a5a604160e01b815260040161041c94939291906166f5565b604080516020601f8401819004810282018101909252828152600091612342918585808385018382808284376000920191909152509293925050613b3b9050565b90508060000361236d5784848484604051630a5a604160e01b815260040161041c94939291906166f5565b61237681613680565b506127e3565b6123e36040518060400160405280600c81526020016b1d9bdd1a5b99d4195c9a5bd960a21b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613ae29050565b1561248657602081146124115783838383604051630a5a604160e01b815260040161041c94939291906166f5565b604080516020601f8401819004810282018101909252828152600091612452918585808385018382808284376000920191909152509293925050613b3b9050565b90508060000361247d5784848484604051630a5a604160e01b815260040161041c94939291906166f5565b61237681613b40565b6124f2604051806040016040528060118152602001701c1c9bdc1bdcd85b151a1c995cda1bdb19607a1b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613ae29050565b1561259557602081146125205783838383604051630a5a604160e01b815260040161041c94939291906166f5565b604080516020601f8401819004810282018101909252828152600091612561918585808385018382808284376000920191909152509293925050613b3b9050565b90508060000361258c5784848484604051630a5a604160e01b815260040161041c94939291906166f5565b61237681613be3565b6125ff6040518060400160405280600f81526020016e38bab7b93ab6a73ab6b2b930ba37b960891b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613ae29050565b156126a2576020811461262d5783838383604051630a5a604160e01b815260040161041c94939291906166f5565b604080516020601f840181900481028201810190925282815260009161266e918585808385018382808284376000920191909152509293925050613b3b9050565b9050806000036126995784848484604051630a5a604160e01b815260040161041c94939291906166f5565b61237681612d9a565b612711604051806040016040528060148152602001736d696e506572696f64416674657251756f72756d60601b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613ae29050565b156127c2576008811461273f5783838383604051630a5a604160e01b815260040161041c94939291906166f5565b6000612785600884848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613b3b9050565b9050806001600160401b03166000036127b95784848484604051630a5a604160e01b815260040161041c94939291906166f5565b61237681613c26565b838383836040516325ee20d560e21b815260040161041c94939291906166f5565b7ff1ce9b2cbf50eeb05769a29e2543fd350cab46894a7dd9978a12d534bb20e6338484848460405161281894939291906166f5565b60405180910390a150505050565b6000610e086101635490565b6000610ed382613c92565b612845610df3565b6001600160a01b0316336001600160a01b0316146128755760405162461bcd60e51b815260040161041c90616435565b3061287e610df3565b6001600160a01b0316146128bc576000803660405161289e929190616425565b604051809103902090505b806128b5610131612d1b565b036128a957505b600080856001600160a01b03168585856040516128da929190616425565b60006040518083038185875af1925050503d8060008114612917576040519150601f19603f3d011682016040523d82523d6000602084013e61291c565b606091505b50915091506129448282604051806060016040528060288152602001616add60289139613cd0565b50505050505050565b600084848484604051602001612966949392919061671c565b60408051601f19818403018152919052805160209091012095945050505050565b61298f610df3565b6001600160a01b0316336001600160a01b0316146129bf5760405162461bcd60e51b815260040161041c90616435565b306129c8610df3565b6001600160a01b031614612a0657600080366040516129e8929190616425565b604051809103902090505b806129ff610131612d1b565b036129f357505b6110c281613c26565b60008251845114612a735760405162461bcd60e51b815260206004820152602860248201527f476f7665726e6f72427261766f3a20696e76616c6964207369676e61747572656044820152670e640d8cadccee8d60c31b606482015260840161041c565b612a81338787878787613ce9565b611a708686612a908787613da7565b85611a7a565b600080600080612aa585613208565b93509350935093506117ac84848484611158565b612ac1610df3565b6001600160a01b0316336001600160a01b031614612af15760405162461bcd60e51b815260040161041c90616435565b30612afa610df3565b6001600160a01b031614612b385760008036604051612b1a929190616425565b604051809103902090505b80612b31610131612d1b565b03612b2557505b6110c281613b40565b60006120ef8383612b5d60408051602081019091526000815290565b6139d0565b612b6a610df3565b6001600160a01b0316336001600160a01b031614612b9a5760405162461bcd60e51b815260040161041c90616435565b30612ba3610df3565b6001600160a01b031614612be15760008036604051612bc3929190616425565b604051809103902090505b80612bda610131612d1b565b03612bce57505b6110c281613be3565b60006064612bf7836118eb565b6101c554604051632394e7a360e21b8152600481018690526001600160a01b0390911690638e539e8c90602401602060405180830381865afa158015612c41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c6591906164e7565b612c6f9190616767565b610ed39190616794565b600080600080612c8885613208565b93509350935093506117ac84848484611383565b60006001600160e01b03198216636e665ced60e01b1480610ed35750610ed382613ed9565b6000610ed3612cce613f75565b8360405161190160f01b8152600281019290925260228201526042902090565b6000806000612cff87878787613f7f565b9150915061146c81614043565b6000611a70868686868661418d565b6000612d368254600f81810b600160801b909204900b131590565b15612d5457604051631ed9509560e11b815260040160405180910390fd5b508054600f0b6000818152600180840160205260408220805492905583546fffffffffffffffffffffffffffffffff191692016001600160801b03169190911790915590565b6064811115612e1d5760405162461bcd60e51b815260206004820152604360248201527f476f7665726e6f72566f74657351756f72756d4672616374696f6e3a2071756f60448201527f72756d4e756d657261746f72206f7665722071756f72756d44656e6f6d696e616064820152623a37b960e91b608482015260a40161041c565b6000612e276120f6565b90508015801590612e39575061022b54155b15612e9e57604080518082019091526000815261022b9060208101612e5d84614290565b6001600160e01b039081169091528254600181018455600093845260209384902083519490930151909116600160201b0263ffffffff909316929092179101555b612ecc612eb9612eac61206b565b65ffffffffffff16613564565b612ec284614290565b61022b91906142f9565b505060408051828152602081018490527f0553476bf02ef2726e8ce5ced78d63e26e602e4a2257b1f559418e24b4633997910160405180910390a15050565b30612f14610df3565b6001600160a01b031614612fa55760005b84518110156117ac57306001600160a01b0316858281518110612f4a57612f4a616675565b60200260200101516001600160a01b031603612f9557612f95838281518110612f7557612f75616675565b60200260200101518051906020012061013161431490919063ffffffff16565b612f9e8161668b565b9050612f25565b5050505050565b61028f54610100900460ff1615612fd65760405163e96776bf60e01b815260040160405180910390fd5b60005b845181101561304f5761028e6000868381518110612ff957612ff9616675565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff1661303d57604051630b094f2760e31b815260040160405180910390fd5b806130478161668b565b915050612fd9565b50612fa58585858585614350565b30613066610df3565b6001600160a01b031614612fa55761013154600f81810b600160801b909204900b1315612fa557600061013155612fa5565b60006117c2858585856130b660408051602081019091526000815290565b612d0c565b6000806130c7836143c5565b905060048160078111156130dd576130dd615ea5565b146130e85792915050565b60008381526101f9602052604090205480613104575092915050565b6101f854604051632ab0f52960e01b8152600481018390526001600160a01b0390911690632ab0f52990602401602060405180830381865afa15801561314e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061317291906167b6565b15613181575060079392505050565b6101f854604051632c258a9f60e11b8152600481018390526001600160a01b039091169063584b153e90602401602060405180830381865afa1580156131cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131ef91906167b6565b156131fe575060059392505050565b5060029392505050565b60608060606000806101936000878152602001908152602001600020905080600101816002016133da83600301805480602002602001604051908101604052809291908181526020016000905b828210156133015783829060005260206000200180546132749061646c565b80601f01602080910402602001604051908101604052809291908181526020018280546132a09061646c565b80156132ed5780601f106132c2576101008083540402835291602001916132ed565b820191906000526020600020905b8154815290600101906020018083116132d057829003601f168201915b505050505081526020019060010190613255565b50505060048601805460408051602080840282018101909252828152935060009084015b828210156133d15783829060005260206000200180546133449061646c565b80601f01602080910402602001604051908101604052809291908181526020018280546133709061646c565b80156133bd5780601f10613392576101008083540402835291602001916133bd565b820191906000526020600020905b8154815290600101906020018083116133a057829003601f168201915b505050505081526020019060010190613325565b50505050613da7565b600984015483546040805160208084028201810190925282815291869183018282801561343057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311613412575b505050505093508280548060200260200160405190810160405280929190818152602001828054801561348257602002820191906000526020600020905b81548152602001906001019080831161346e575b505050505092509450945094509450509193509193565b6000806134a88686868661294d565b600081815261019360205260409020549091506001600160a01b0316338114806134fc57506134d5612826565b6134fa8260016134e361206b565b6134ed91906165cf565b65ffffffffffff16612b41565b105b6135585760405162461bcd60e51b815260206004820152602760248201527f476f7665726e6f72427261766f3a2070726f706f7365722061626f76652074686044820152661c995cda1bdb1960ca1b606482015260840161041c565b611773878787876144fd565b600063ffffffff8211156135c95760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201526532206269747360d01b606482015260840161041c565b5090565b81546000908181600581111561362a5760006135e88461450b565b6135f29085616662565b60008881526020902090915081015463ffffffff908116908716101561361a57809150613628565b6136258160016165bc565b92505b505b6000613638878785856145f3565b905080156136735761365d8761364f600184616662565b600091825260209091200190565b54600160201b90046001600160e01b0316611773565b6000979650505050505050565b6101615460408051918252602082018390527fc565b045403dc03c2eea82b81a0465edad9e2e7fc4d97e11421c209da93d7a93910160405180910390a161016155565b61028f5460ff1661376c576a084595161401484a0000006120056001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561371a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061373e91906164e7565b101561375d576040516311b6707f60e01b815260040160405180910390fd5b61028f805460ff191660011790555b565b60006137ca33868686516001600160401b0381111561378f5761378f6158fa565b6040519080825280602002602001820160405280156137c257816020015b60608152602001906001900390816137ad5790505b508787613ce9565b6117c285858585614649565b600054610100900460ff166137fd5760405162461bcd60e51b815260040161041c906167d8565b6138248161381f6040805180820190915260018152603160f81b602082015290565b614a28565b6110c281614a77565b600054610100900460ff166138545760405162461bcd60e51b815260040161041c906167d8565b61385f838383614aaf565b505050565b600054610100900460ff1661376c5760405162461bcd60e51b815260040161041c906167d8565b600054610100900460ff166138b25760405162461bcd60e51b815260040161041c906167d8565b6110c281614af1565b600054610100900460ff166138e25760405162461bcd60e51b815260040161041c906167d8565b6110c281614b3b565b600054610100900460ff166139125760405162461bcd60e51b815260040161041c906167d8565b6110c281614b62565b600054610100900460ff166139425760405162461bcd60e51b815260040161041c906167d8565b6110c281614b89565b6060606780546110d59061646c565b6060606880546110d59061646c565b600065ffffffffffff8211156135c95760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203460448201526538206269747360d01b606482015260840161041c565b6101c554604051630748d63560e31b81526001600160a01b038581166004830152602482018590526000921690633a46b1a890604401602060405180830381865afa158015613a23573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120ec91906164e7565b8054600090801561223e57613a618361364f600184616662565b54600160201b90046001600160e01b03166120ef565b6101f854604080516001600160a01b03928316815291831660208301527f08f74ea46ef7894f65eabfb5e6e695de773a000b47c529ab559178069b226401910160405180910390a16101f880546001600160a01b0319166001600160a01b0392909216919091179055565b600081604051602001613af59190616823565b6040516020818303038152906040528051906020012083604051602001613b1c9190616823565b6040516020818303038152906040528051906020012014905092915050565b015190565b60008111613ba05760405162461bcd60e51b815260206004820152602760248201527f476f7665726e6f7253657474696e67733a20766f74696e6720706572696f6420604482015266746f6f206c6f7760c81b606482015260840161041c565b6101625460408051918252602082018390527f7e3f7f0708a84de9203036abaa450dccc85ad5ff52f78c170f3edb55cf5e8828910160405180910390a161016255565b6101635460408051918252602082018390527fccb45da8d5717e6c4544694297c4ba5cf151d455c9bb0ed4fc7a38411bc05461910160405180910390a161016355565b61025c54604080516001600160401b03928316815291831660208301527f7ca4ac117ed3cdce75c1161d8207c440389b1a15d69d096831664657c07dafc2910160405180910390a161025c805467ffffffffffffffff19166001600160401b0392909216919091179055565b60008181526101306020526040812060010154610ed3906001600160401b0316600084815261025d60205260409020546001600160401b0316614bb0565b60608315613cdf5750816120ef565b6120ef8383614bc6565b805160208201206000613d078787613d018888613da7565b8561294d565b600081815261019360205260409020600981015491925090613d9c5780546001600160a01b0319166001600160a01b038a161781558751613d5190600183019060208b0190615695565b508651613d6790600283019060208a01906156f6565b508551613d7d9060038301906020890190615731565b508451613d939060048301906020880190615783565b50600981018390555b505050505050505050565b6060600082516001600160401b03811115613dc457613dc46158fa565b604051908082528060200260200182016040528015613df757816020015b6060815260200190600190039081613de25790505b50905060005b8151811015613ed157848181518110613e1857613e18616675565b602002602001015151600014613e8857848181518110613e3a57613e3a616675565b602002602001015180519060200120848281518110613e5b57613e5b616675565b6020026020010151604051602001613e7492919061683f565b604051602081830303815290604052613ea3565b838181518110613e9a57613e9a616675565b60200260200101515b828281518110613eb557613eb5616675565b602002602001018190525080613eca9061668b565b9050613dfd565b509392505050565b600063288ace0360e11b6318df743f60e31b63bf26d89760e01b6379dd796f60e01b6001600160e01b03198616821480613f1f57506001600160e01b0319868116908216145b80613f3657506001600160e01b0319868116908516145b80613f5157506001600160e01b03198616630271189760e51b145b80611a7057506301ffc9a760e01b6001600160e01b03198716149695505050505050565b6000610e08614bf0565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115613fb6575060009050600361403a565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa15801561400a573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166140335760006001925092505061403a565b9150600090505b94509492505050565b600081600481111561405757614057615ea5565b0361405f5750565b600181600481111561407357614073615ea5565b036140c05760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640161041c565b60028160048111156140d4576140d4615ea5565b036141215760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161041c565b600381600481111561413557614135615ea5565b036110c25760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b606482015260840161041c565b60008061419d8787878787614c64565b600088815261025d60205260409020549091506001600160401b03161580156141ca57506141ca87614dba565b15611a705760006141e461025c546001600160401b031690565b6141ec61206b565b65ffffffffffff166141fe9190616870565b905061420988612832565b816001600160401b03161115614258576040516001600160401b038216815288907f541f725fb9f7c98a30cc9c0ff32fbb14358cd7159c847a3aa20a2bdc442ba5119060200160405180910390a25b600088815261025d60205260409020805467ffffffffffffffff19166001600160401b03929092169190911790559695505050505050565b60006001600160e01b038211156135c95760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20326044820152663234206269747360c81b606482015260840161041c565b600080614307858585614dfa565b915091505b935093915050565b8154600160801b90819004600f0b6000818152600180860160205260409091209390935583546001600160801b03908116939091011602179055565b6101f85460405163e38335e560e01b81526001600160a01b039091169063e38335e590349061438c908890889088906000908990600401616500565b6000604051808303818588803b1580156143a557600080fd5b505af11580156143b9573d6000803e3d6000fd5b50505050505050505050565b600081815261013060205260408120600281015460ff16156143ea5750600792915050565b6002810154610100900460ff16156144055750600292915050565b600083815261013060205260408120546001600160401b03169081900361446e5760405162461bcd60e51b815260206004820152601d60248201527f476f7665726e6f723a20756e6b6e6f776e2070726f706f73616c206964000000604482015260640161041c565b600061447861206b565b65ffffffffffff16905080821061449457506000949350505050565b600061449f86612832565b90508181106144b45750600195945050505050565b6144bd86614dba565b80156144e057506000868152610193602052604090206006810154600590910154115b156144f15750600495945050505050565b50600395945050505050565b60006117c285858585614f99565b60008160000361451d57506000919050565b6000600161452a8461504f565b901c6001901b905060018184816145435761454361677e565b048201901c9050600181848161455b5761455b61677e565b048201901c905060018184816145735761457361677e565b048201901c9050600181848161458b5761458b61677e565b048201901c905060018184816145a3576145a361677e565b048201901c905060018184816145bb576145bb61677e565b048201901c905060018184816145d3576145d361677e565b048201901c90506120ef818285816145ed576145ed61677e565b046150e3565b60005b81831015613ed157600061460a84846150f2565b60008781526020902090915063ffffffff86169082015463ffffffff16111561463557809250614643565b6146408160016165bc565b93505b506145f6565b600033614656818461510d565b6146a25760405162461bcd60e51b815260206004820152601d60248201527f476f7665726e6f723a2070726f706f7365722072657374726963746564000000604482015260640161041c565b60006146ac61206b565b65ffffffffffff1690506146be612826565b6146cd83610d4e600185616662565b10156147355760405162461bcd60e51b815260206004820152603160248201527f476f7665726e6f723a2070726f706f73657220766f7465732062656c6f7720706044820152701c9bdc1bdcd85b081d1a1c995cda1bdb19607a1b606482015260840161041c565b600061474a888888888051906020012061294d565b9050865188511461476d5760405162461bcd60e51b815260040161041c90616890565b855188511461478e5760405162461bcd60e51b815260040161041c90616890565b60008851116147df5760405162461bcd60e51b815260206004820152601860248201527f476f7665726e6f723a20656d7074792070726f706f73616c0000000000000000604482015260640161041c565b600081815261013060205260409020546001600160401b03161561484f5760405162461bcd60e51b815260206004820152602160248201527f476f7665726e6f723a2070726f706f73616c20616c72656164792065786973746044820152607360f81b606482015260840161041c565b600061485b6101615490565b61486590846165bc565b905060006148736101625490565b61487d90836165bc565b90506040518060e00160405280614893846151fe565b6001600160401b031681526001600160a01b0387166020820152600060408201526060016148c0836151fe565b6001600160401b03908116825260006020808401829052604080850183905260609485018390528883526101308252918290208551815492870151878501519186166001600160e01b031990941693909317600160401b6001600160a01b039094168402176001600160e01b0316600160e01b60e09290921c91909102178155938501516080860151908416921c0217600183015560a08301516002909201805460c09094015161ffff1990941692151561ff00191692909217610100931515939093029290921790558a517f7d84a6263ae0d98d3329bd7b46bb4e8d6f98cd35a7adb45c274c8b7fd5ebd5e091859188918e918e918111156149c5576149c56158fa565b6040519080825280602002602001820160405280156149f857816020015b60608152602001906001900390816149e35790505b508d88888f604051614a12999897969594939291906168d1565b60405180910390a1509098975050505050505050565b600054610100900460ff16614a4f5760405162461bcd60e51b815260040161041c906167d8565b6067614a5b83826169af565b506068614a6882826169af565b50506000606581905560665550565b600054610100900460ff16614a9e5760405162461bcd60e51b815260040161041c906167d8565b61012f614aab82826169af565b5050565b600054610100900460ff16614ad65760405162461bcd60e51b815260040161041c906167d8565b614adf83613680565b614ae882613b40565b61385f81613be3565b600054610100900460ff16614b185760405162461bcd60e51b815260040161041c906167d8565b6101c580546001600160a01b0319166001600160a01b0392909216919091179055565b600054610100900460ff166121a25760405162461bcd60e51b815260040161041c906167d8565b600054610100900460ff166110b95760405162461bcd60e51b815260040161041c906167d8565b600054610100900460ff16612a065760405162461bcd60e51b815260040161041c906167d8565b6000818311614bbf57816120ef565b5090919050565b815115614bd65781518083602001fd5b8060405162461bcd60e51b815260040161041c9190615ab3565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f614c1b615266565b614c236152bf565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b6000858152610130602052604081206001614c7e8861177e565b6007811115614c8f57614c8f615ea5565b14614ce85760405162461bcd60e51b815260206004820152602360248201527f476f7665726e6f723a20766f7465206e6f742063757272656e746c792061637460448201526269766560e81b606482015260840161041c565b8054600090614d029088906001600160401b0316866139d0565b9050614d1188888884886152f0565b8351600003614d6657866001600160a01b03167fb8e138887d0aa13bab447e82de9d5c1777041ecd21ca36ba824ff1e6c07ddda489888489604051614d599493929190616a6e565b60405180910390a2611773565b866001600160a01b03167fe2babfbac5889a709b63bb7f598b324e08bc5a4fb9ec647fb3cbc9ec07eb87128988848989604051614da7959493929190616a96565b60405180910390a2979650505050505050565b6000818152610193602052604081206005810154614df1610dba85600090815261013060205260409020546001600160401b031690565b11159392505050565b825460009081908015614f40576000614e188761364f600185616662565b60408051808201909152905463ffffffff808216808452600160201b9092046001600160e01b031660208401529192509087161015614e995760405162461bcd60e51b815260206004820152601b60248201527f436865636b706f696e743a2064656372656173696e67206b6579730000000000604482015260640161041c565b805163ffffffff808816911603614ee15784614eba8861364f600186616662565b80546001600160e01b0392909216600160201b0263ffffffff909216919091179055614f30565b6040805180820190915263ffffffff80881682526001600160e01b0380881660208085019182528b54600181018d5560008d81529190912094519151909216600160201b029216919091179101555b60200151925083915061430c9050565b50506040805180820190915263ffffffff80851682526001600160e01b0380851660208085019182528854600181018a5560008a815291822095519251909316600160201b02919093161792019190915590508161430c565b600080614fa88686868661548e565b60008181526101f96020526040902054909150156117c2576101f85460008281526101f960205260409081902054905163c4d252f560e01b81526001600160a01b039092169163c4d252f5916150049160040190815260200190565b600060405180830381600087803b15801561501e57600080fd5b505af1158015615032573d6000803e3d6000fd5b50505060008281526101f960205260408120555095945050505050565b600080608083901c1561506457608092831c92015b604083901c1561507657604092831c92015b602083901c1561508857602092831c92015b601083901c1561509a57601092831c92015b600883901c156150ac57600892831c92015b600483901c156150be57600492831c92015b600283901c156150d057600292831c92015b600183901c15610ed35760010192915050565b6000818310614bbf57816120ef565b60006151016002848418616794565b6120ef908484166165bc565b80516000906034811015615125576001915050610ed3565b82810160131901516001600160a01b031981166b046e0e4dee0dee6cae47a60f60a31b1461515857600192505050610ed3565b600080615166602885616662565b90505b838110156151dd5760008061519d88848151811061518957615189616675565b01602001516001600160f81b03191661559b565b91509150816151b55760019650505050505050610ed3565b8060ff166004856001600160a01b0316901b1793505050806151d69061668b565b9050615169565b50856001600160a01b0316816001600160a01b031614935050505092915050565b60006001600160401b038211156135c95760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203660448201526534206269747360d01b606482015260840161041c565b60008061527161394b565b805190915015615288578051602090910120919050565b60655480156152975792915050565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4709250505090565b6000806152ca61395a565b8051909150156152e1578051602090910120919050565b60665480156152975792915050565b6000858152610193602090815260408083206001600160a01b038816845260088101909252909120805460ff16156153805760405162461bcd60e51b815260206004820152602d60248201527f476f7665726e6f72436f6d7061746962696c697479427261766f3a20766f746560448201526c08185b1c9958591e4818d85cdd609a1b606482015260840161041c565b805460ff86166101000261ffff199091161760011781556153a08461562d565b81546001600160601b039190911662010000026dffffffffffffffffffffffff00001990911617815560ff85166153f057838260060160008282546153e591906165bc565b909155506129449050565b60001960ff86160161541057838260050160008282546153e591906165bc565b60011960ff86160161543057838260070160008282546153e591906165bc565b60405162461bcd60e51b815260206004820152602d60248201527f476f7665726e6f72436f6d7061746962696c697479427261766f3a20696e766160448201526c6c696420766f7465207479706560981b606482015260840161041c565b60008061549d8686868661294d565b905060006154aa8261177e565b905060028160078111156154c0576154c0615ea5565b141580156154e0575060068160078111156154dd576154dd615ea5565b14155b80156154fe575060078160078111156154fb576154fb615ea5565b14155b61554a5760405162461bcd60e51b815260206004820152601d60248201527f476f7665726e6f723a2070726f706f73616c206e6f7420616374697665000000604482015260640161041c565b6000828152610130602052604090819020600201805461ff001916610100179055517f789cf55be980739dad1d0699b93b58e806b51c9d96619bfa8fe0a28abaa7b30c9061134b9084815260200190565b60008060f883901c602f811180156155b65750603a8160ff16105b156155cb57600194602f199091019350915050565b8060ff1660401080156155e1575060478160ff16105b156155f6576001946036199091019350915050565b8060ff16606010801561560c575060678160ff16105b15615621576001946056199091019350915050565b50600093849350915050565b60006001600160601b038211156135c95760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203960448201526536206269747360d01b606482015260840161041c565b8280548282559060005260206000209081019282156156ea579160200282015b828111156156ea57825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906156b5565b506135c99291506157d5565b8280548282559060005260206000209081019282156156ea579160200282015b828111156156ea578251825591602001919060010190615716565b828054828255906000526020600020908101928215615777579160200282015b82811115615777578251829061576790826169af565b5091602001919060010190615751565b506135c99291506157ea565b8280548282559060005260206000209081019282156157c9579160200282015b828111156157c957825182906157b990826169af565b50916020019190600101906157a3565b506135c9929150615807565b5b808211156135c957600081556001016157d6565b808211156135c95760006157fe8282615824565b506001016157ea565b808211156135c957600061581b8282615824565b50600101615807565b5080546158309061646c565b6000825580601f10615840575050565b601f0160209004906000526020600020908101906110c291906157d5565b60006020828403121561587057600080fd5b5035919050565b60006020828403121561588957600080fd5b81356001600160e01b0319811681146120ef57600080fd5b803560ff8116811461187357600080fd5b60008083601f8401126158c457600080fd5b5081356001600160401b038111156158db57600080fd5b6020830191508360208285010111156158f357600080fd5b9250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715615938576159386158fa565b604052919050565b60006001600160401b03821115615959576159596158fa565b50601f01601f191660200190565b600082601f83011261597857600080fd5b813561598b61598682615940565b615910565b8181528460208386010111156159a057600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060008060008060e0898b0312156159d957600080fd5b883597506159e960208a016158a1565b965060408901356001600160401b0380821115615a0557600080fd5b615a118c838d016158b2565b909850965060608b0135915080821115615a2a57600080fd5b50615a378b828c01615967565b945050615a4660808a016158a1565b925060a0890135915060c089013590509295985092959890939650565b60005b83811015615a7e578181015183820152602001615a66565b50506000910152565b60008151808452615a9f816020860160208601615a63565b601f01601f19169290920160200192915050565b6020815260006120ef6020830184615a87565b6001600160a01b03811681146110c257600080fd5b60008060008060808587031215615af157600080fd5b8435615afc81615ac6565b93506020850135615b0c81615ac6565b92506040850135915060608501356001600160401b03811115615b2e57600080fd5b615b3a87828801615967565b91505092959194509250565b60006001600160401b03821115615b5f57615b5f6158fa565b5060051b60200190565b600082601f830112615b7a57600080fd5b81356020615b8a61598683615b46565b82815260059290921b84018101918181019086841115615ba957600080fd5b8286015b84811015615bcd578035615bc081615ac6565b8352918301918301615bad565b509695505050505050565b600082601f830112615be957600080fd5b81356020615bf961598683615b46565b82815260059290921b84018101918181019086841115615c1857600080fd5b8286015b84811015615bcd5780358352918301918301615c1c565b600082601f830112615c4457600080fd5b81356020615c5461598683615b46565b82815260059290921b84018101918181019086841115615c7357600080fd5b8286015b84811015615bcd5780356001600160401b03811115615c965760008081fd5b615ca48986838b0101615967565b845250918301918301615c77565b60008060008060808587031215615cc857600080fd5b84356001600160401b0380821115615cdf57600080fd5b615ceb88838901615b69565b95506020870135915080821115615d0157600080fd5b615d0d88838901615bd8565b94506040870135915080821115615d2357600080fd5b50615d3087828801615c33565b949793965093946060013593505050565b600081518084526020808501945080840160005b83811015615d7a5781516001600160a01b031687529582019590820190600101615d55565b509495945050505050565b600081518084526020808501945080840160005b83811015615d7a57815187529582019590820190600101615d99565b600081518084526020808501808196508360051b8101915082860160005b85811015615dfd578284038952615deb848351615a87565b98850198935090840190600101615dd3565b5091979650505050505050565b608081526000615e1d6080830187615d41565b8281036020840152615e2f8187615d85565b90508281036040840152615e438186615db5565b905082810360608401526117738185615db5565b600080600080600060a08688031215615e6f57600080fd5b85359450615e7f602087016158a1565b9350615e8d604087016158a1565b94979396509394606081013594506080013592915050565b634e487b7160e01b600052602160045260246000fd5b6020810160088310615edd57634e487b7160e01b600052602160045260246000fd5b91905290565b60008060408385031215615ef657600080fd5b823591506020830135615f0881615ac6565b809150509250929050565b600060208284031215615f2557600080fd5b81356120ef81615ac6565b60008060408385031215615f4357600080fd5b82359150615f53602084016158a1565b90509250929050565b600080600080600060808688031215615f7457600080fd5b85359450615f84602087016158a1565b935060408601356001600160401b0380821115615fa057600080fd5b615fac89838a016158b2565b90955093506060880135915080821115615fc557600080fd5b50615fd288828901615967565b9150509295509295909350565b60008060008060608587031215615ff557600080fd5b84359350616005602086016158a1565b925060408501356001600160401b0381111561602057600080fd5b61602c878288016158b2565b95989497509550505050565b6000806000806080858703121561604e57600080fd5b84356001600160401b038082111561606557600080fd5b61607188838901615b69565b9550602087013591508082111561608757600080fd5b61609388838901615bd8565b945060408701359150808211156160a957600080fd5b6160b588838901615c33565b935060608701359150808211156160cb57600080fd5b50615b3a87828801615967565b60ff60f81b8816815260e0602082015260006160f760e0830189615a87565b82810360408401526161098189615a87565b606084018890526001600160a01b038716608085015260a0840186905283810360c08501529050610fc38185615d85565b60008060006060848603121561614f57600080fd5b833561615a81615ac6565b92506020840135915060408401356001600160401b0381111561617c57600080fd5b61618886828701615967565b9150509250925092565b600080600080604085870312156161a857600080fd5b84356001600160401b03808211156161bf57600080fd5b6161cb888389016158b2565b909650945060208701359150808211156161e457600080fd5b5061602c878288016158b2565b600080600080600060a0868803121561620957600080fd5b853561621481615ac6565b9450602086013561622481615ac6565b935060408601356001600160401b038082111561624057600080fd5b61624c89838a01615bd8565b9450606088013591508082111561626257600080fd5b61626e89838a01615bd8565b93506080880135915080821115615fc557600080fd5b6000806000806060858703121561629a57600080fd5b84356162a581615ac6565b93506020850135925060408501356001600160401b0381111561602057600080fd5b6000602082840312156162d957600080fd5b81356001600160401b03811681146120ef57600080fd5b600080600080600060a0868803121561630857600080fd5b85356001600160401b038082111561631f57600080fd5b61632b89838a01615b69565b9650602088013591508082111561634157600080fd5b61634d89838a01615bd8565b9550604088013591508082111561636357600080fd5b61636f89838a01615c33565b9450606088013591508082111561638557600080fd5b61626e89838a01615c33565b600080604083850312156163a457600080fd5b82356163af81615ac6565b946020939093013593505050565b600080600080600060a086880312156163d557600080fd5b85356163e081615ac6565b945060208601356163f081615ac6565b9350604086013592506060860135915060808601356001600160401b0381111561641957600080fd5b615fd288828901615967565b8183823760009101908152919050565b60208082526018908201527f476f7665726e6f723a206f6e6c79476f7665726e616e63650000000000000000604082015260600190565b600181811c9082168061648057607f821691505b6020821081036164a057634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526021908201527f476f7665726e6f723a2070726f706f73616c206e6f74207375636365737366756040820152601b60fa1b606082015260800190565b6000602082840312156164f957600080fd5b5051919050565b60a08152600061651360a0830188615d41565b82810360208401526165258188615d85565b905082810360408401526165398187615db5565b60608401959095525050608001529392505050565b60c08152600061656160c0830189615d41565b82810360208401526165738189615d85565b905082810360408401526165878188615db5565b60608401969096525050608081019290925260a0909101529392505050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610ed357610ed36165a6565b65ffffffffffff8281168282160390808211156165ee576165ee6165a6565b5092915050565b60006020828403121561660757600080fd5b81516001600160401b0381111561661d57600080fd5b8201601f8101841361662e57600080fd5b805161663c61598682615940565b81815285602083850101111561665157600080fd5b6117c2826020830160208601615a63565b81810381811115610ed357610ed36165a6565b634e487b7160e01b600052603260045260246000fd5b60006001820161669d5761669d6165a6565b5060010190565b6000602082840312156166b657600080fd5b815165ffffffffffff811681146120ef57600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6040815260006167096040830186886166cc565b82810360208401526117738185876166cc565b60808152600061672f6080830187615d41565b82810360208401526167418187615d85565b905082810360408401526167558186615db5565b91505082606083015295945050505050565b8082028115828204841417610ed357610ed36165a6565b634e487b7160e01b600052601260045260246000fd5b6000826167b157634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156167c857600080fd5b815180151581146120ef57600080fd5b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60008251616835818460208701615a63565b9190910192915050565b6001600160e01b0319831681528151600090616862816004850160208701615a63565b919091016004019392505050565b6001600160401b038181168382160190808211156165ee576165ee6165a6565b60208082526021908201527f476f7665726e6f723a20696e76616c69642070726f706f73616c206c656e67746040820152600d60fb1b606082015260800190565b8981526001600160a01b0389166020820152610120604082018190526000906168fc8382018b615d41565b90508281036060840152616910818a615d85565b905082810360808401526169248189615db5565b905082810360a08401526169388188615db5565b90508560c08401528460e08401528281036101008401526169598185615a87565b9c9b505050505050505050505050565b601f82111561385f57600081815260208120601f850160051c810160208610156169905750805b601f850160051c820191505b818110156117ac5782815560010161699c565b81516001600160401b038111156169c8576169c86158fa565b6169dc816169d6845461646c565b84616969565b602080601f831160018114616a1157600084156169f95750858301515b600019600386901b1c1916600185901b1785556117ac565b600085815260208120601f198616915b82811015616a4057888601518255948401946001909101908401616a21565b5085821015616a5e5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b84815260ff84166020820152826040820152608060608201526000611a706080830184615a87565b85815260ff8516602082015283604082015260a060608201526000616abe60a0830185615a87565b8281036080840152616ad08185615a87565b9897505050505050505056fe476f7665726e6f723a2072656c617920726576657274656420776974686f7574206d657373616765a164736f6c6343000811000a", + Code: "6080604052600436106103bc5760003560e01c80637b3c71d3116101f2578063c28bc2fa1161010d578063e23a9a52116100a0578063f23a6e611161006f578063f23a6e6114610d73578063f8ce560a14610d9f578063fc0c546a14610dbf578063fe0d94c114610de057600080fd5b8063e23a9a5214610c48578063ea0217cf14610d13578063eb9019d414610d33578063ece40cc114610d5357600080fd5b8063da95691a116100dc578063da95691a14610b8e578063dd4e2ba514610bae578063ddf0b00914610bf4578063deaaa7cc14610c1457600080fd5b8063c28bc2fa14610b1c578063c59057e414610b2f578063d07f91e914610b4f578063d33219b414610b6f57600080fd5b8063a7713a7011610185578063b58131b011610154578063b58131b014610aa0578063bc197c8114610ab5578063c01f9e3714610ae1578063c170ec0b14610b0157600080fd5b8063a7713a7014610a2b578063a890c91014610a40578063ab58fb8e14610a60578063ac43175114610a8057600080fd5b806384b0196e116101c157806384b0196e146109a357806391ddadf4146109cb57806397c3d334146109f75780639a802a6d14610a0b57600080fd5b80637b3c71d3146109395780637d5e81e2146109595780638129fc1c146109795780638456cb591461098e57600080fd5b806332b8113e116102e2578063533ddd14116102755780635f398a14116102445780635f398a14146108b257806360c4247f146108d257806363d42b38146108f257806370b0f6601461091957600080fd5b8063533ddd141461081757806354fd4d501461084857806356781388146108725780635c975abb1461089257600080fd5b806340e58ee5116102b157806340e58ee5146107775780634385963214610797578063452115d6146107e25780634bf5d7e91461080257600080fd5b806332b8113e146106eb5780633932abb1146107145780633bccf4fd1461072a5780633e4f49e61461074a57600080fd5b8063143489d01161035a5780632656227d116103295780632656227d1461063d5780632d63f693146106505780632fe3e26114610687578063328dd982146106bb57600080fd5b8063143489d01461056e578063150b7a02146105c4578063160cbed71461060857806324bc1a641461062857600080fd5b8063034201811161039657806303420181146104f7578063046f7da21461051757806306f3f9e61461052c57806306fdde031461054c57600080fd5b8063013cf08b1461042c57806301ffc9a7146104a757806302a251a3146104d757600080fd5b3661042757306103ca610df3565b6001600160a01b0316146104255760405162461bcd60e51b815260206004820152601f60248201527f476f7665726e6f723a206d7573742073656e6420746f206578656375746f720060448201526064015b60405180910390fd5b005b600080fd5b34801561043857600080fd5b5061044c610447366004615646565b610e0d565b604080519a8b526001600160a01b0390991660208b0152978901969096526060880194909452608087019290925260a086015260c085015260e084015215156101008301521515610120820152610140015b60405180910390f35b3480156104b357600080fd5b506104c76104c236600461565f565b610ec8565b604051901515815260200161049e565b3480156104e357600080fd5b50610162545b60405190815260200161049e565b34801561050357600080fd5b506104e96105123660046157a5565b610ed9565b34801561052357600080fd5b50610425610fd1565b34801561053857600080fd5b50610425610547366004615646565b61103a565b34801561055857600080fd5b506105616110c5565b60405161049e919061589b565b34801561057a57600080fd5b506105ac610589366004615646565b60009081526101306020526040902054600160401b90046001600160a01b031690565b6040516001600160a01b03909116815260200161049e565b3480156105d057600080fd5b506105ef6105df3660046158c3565b630a85bd0160e11b949350505050565b6040516001600160e01b0319909116815260200161049e565b34801561061457600080fd5b506104e9610623366004615a9a565b611158565b34801561063457600080fd5b506104e961135d565b6104e961064b366004615a9a565b611383565b34801561065c57600080fd5b506104e961066b366004615646565b600090815261013060205260409020546001600160401b031690565b34801561069357600080fd5b506104e97fb3b3f3b703cd84ce352197dcff232b1b5d3cfb2025ce47cf04742d0651f1af8881565b3480156106c757600080fd5b506106db6106d6366004615646565b611476565b60405161049e9493929190615bf2565b3480156106f757600080fd5b5061025c546040516001600160401b03909116815260200161049e565b34801561072057600080fd5b50610161546104e9565b34801561073657600080fd5b506104e9610745366004615c3f565b611708565b34801561075657600080fd5b5061076a610765366004615646565b61177e565b60405161049e9190615ca3565b34801561078357600080fd5b50610425610792366004615646565b611789565b3480156107a357600080fd5b506104c76107b2366004615ccb565b6000828152610193602090815260408083206001600160a01b038516845260080190915290205460ff1692915050565b3480156107ee57600080fd5b506104e96107fd366004615a9a565b6117b4565b34801561080e57600080fd5b506105616117cb565b34801561082357600080fd5b506104c7610832366004615cfb565b61028e6020526000908152604090205460ff1681565b34801561085457600080fd5b506040805180820190915260018152603160f81b6020820152610561565b34801561087e57600080fd5b506104e961088d366004615d18565b611878565b34801561089e57600080fd5b5061028f546104c790610100900460ff1681565b3480156108be57600080fd5b506104e96108cd366004615d44565b6118a1565b3480156108de57600080fd5b506104e96108ed366004615646565b6118eb565b3480156108fe57600080fd5b5061028f546105ac906201000090046001600160a01b031681565b34801561092557600080fd5b50610425610934366004615646565b6119a0565b34801561094557600080fd5b506104e9610954366004615dc7565b611a28565b34801561096557600080fd5b506104e9610974366004615e20565b611a7a565b34801561098557600080fd5b50610425611b0a565b34801561099a57600080fd5b50610425611d48565b3480156109af57600080fd5b506109b8611db5565b60405161049e9796959493929190615ec0565b3480156109d757600080fd5b506109e0611e53565b60405165ffffffffffff909116815260200161049e565b348015610a0357600080fd5b5060646104e9565b348015610a1757600080fd5b506104e9610a26366004615f22565b611ec7565b348015610a3757600080fd5b506104e9611ede565b348015610a4c57600080fd5b50610425610a5b366004615cfb565b611f0b565b348015610a6c57600080fd5b506104e9610a7b366004615646565b611f93565b348015610a8c57600080fd5b50610425610a9b366004615f7a565b61202f565b348015610aac57600080fd5b506104e961260e565b348015610ac157600080fd5b506105ef610ad0366004615fd9565b63bc197c8160e01b95945050505050565b348015610aed57600080fd5b506104e9610afc366004615646565b61261a565b348015610b0d57600080fd5b5061028f546104c79060ff1681565b610425610b2a36600461606c565b612625565b348015610b3b57600080fd5b506104e9610b4a366004615a9a565b612735565b348015610b5b57600080fd5b50610425610b6a3660046160af565b61276f565b348015610b7b57600080fd5b506101f8546001600160a01b03166105ac565b348015610b9a57600080fd5b506104e9610ba93660046160d8565b6127f7565b348015610bba57600080fd5b5060408051808201909152601a81527f737570706f72743d627261766f2671756f72756d3d627261766f0000000000006020820152610561565b348015610c0057600080fd5b50610425610c0f366004615646565b61287e565b348015610c2057600080fd5b506104e97f150214d74d59b7d1e90c73fc22ef3d991dd0a76b046543d4d80ab92d2a50328f81565b348015610c5457600080fd5b50610ce3610c63366004615ccb565b6040805160608101825260008082526020820181905291810191909152506000918252610193602090815260408084206001600160a01b0393909316845260089092018152918190208151606081018352905460ff8082161515835261010082041693820193909352620100009092046001600160601b03169082015290565b6040805182511515815260208084015160ff1690820152918101516001600160601b03169082015260600161049e565b348015610d1f57600080fd5b50610425610d2e366004615646565b6128a1565b348015610d3f57600080fd5b506104e9610d4e366004616179565b612929565b348015610d5f57600080fd5b50610425610d6e366004615646565b61294a565b348015610d7f57600080fd5b506105ef610d8e3660046161a5565b63f23a6e6160e01b95945050505050565b348015610dab57600080fd5b506104e9610dba366004615646565b6129d2565b348015610dcb57600080fd5b506101c5546105ac906001600160a01b031681565b610425610dee366004615646565b612a61565b6000610e086101f8546001600160a01b031690565b905090565b8060008080808080808080610e218a611f93565b60008c815261013060205260409020549098506001600160401b03169650610e488b61261a565b60008c81526101936020526040812080546005820154600683015460078401546001600160a01b039093169e50949a509850929650919450610e898d61177e565b90506002816007811115610e9f57610e9f615c8d565b1493506007816007811115610eb657610eb6615c8d565b14925050509193959799509193959799565b6000610ed382612a84565b92915050565b600080610f7d610f757fb3b3f3b703cd84ce352197dcff232b1b5d3cfb2025ce47cf04742d0651f1af888c8c8c8c604051610f1592919061620d565b60405180910390208b80519060200120604051602001610f5a959493929190948552602085019390935260ff9190911660408401526060830152608082015260a00190565b60405160208183030381529060405280519060200120612aa9565b868686612ad6565b9050610fc38a828b8b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508d9250612af4915050565b9a9950505050505050505050565b61028f546201000090046001600160a01b0316331461100357604051631431806f60e11b815260040160405180910390fd5b61028f805461ff00191690556040517f62451d457bc659158be6e6247f56ec1df424a5c7597f71c20c2bc44e0965c8f990600090a1565b611042610df3565b6001600160a01b0316336001600160a01b0316146110725760405162461bcd60e51b815260040161041c9061621d565b3061107b610df3565b6001600160a01b0316146110b9576000803660405161109b92919061620d565b604051809103902090505b806110b2610131612b03565b036110a657505b6110c281612b82565b50565b606061012f80546110d590616254565b80601f016020809104026020016040519081016040528092919081815260200182805461110190616254565b801561114e5780601f106111235761010080835404028352916020019161114e565b820191906000526020600020905b81548152906001019060200180831161113157829003601f168201915b5050505050905090565b60008061116786868686612735565b905060046111748261177e565b600781111561118557611185615c8d565b146111a25760405162461bcd60e51b815260040161041c9061628e565b6101f8546040805163793d064960e11b815290516000926001600160a01b03169163f27a0c929160048083019260209291908290030181865afa1580156111ed573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061121191906162cf565b6101f85460405163b1c5f42760e01b81529192506001600160a01b03169063b1c5f4279061124c908a908a908a906000908b906004016162e8565b602060405180830381865afa158015611269573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061128d91906162cf565b60008381526101f96020526040808220929092556101f85491516308f2a0bb60e41b81526001600160a01b0390921691638f2a0bb0916112da918b918b918b91908b908990600401616336565b600060405180830381600087803b1580156112f457600080fd5b505af1158015611308573d6000803e3d6000fd5b505050507f9a2e42fd6722813d69113e7d0079d3d940171428df7373df9c7f7617cfda289282824261133a91906163a4565b604080519283526020830191909152015b60405180910390a15095945050505050565b6000610e08600161136c611e53565b61137691906163b7565b65ffffffffffff166129d2565b60008061139286868686612735565b9050600061139f8261177e565b905060048160078111156113b5576113b5615c8d565b14806113d2575060058160078111156113d0576113d0615c8d565b145b6113ee5760405162461bcd60e51b815260040161041c9061628e565b6000828152610130602052604090819020600201805460ff19166001179055517f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f9061143d9084815260200190565b60405180910390a16114528288888888612cf3565b61145f8288888888612d94565b61146c8288888888612e45565b5095945050505050565b60608060608060006101936000878152602001908152602001600020905080600101816002018260030183600401838054806020026020016040519081016040528092919081815260200182805480156114f957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116114db575b505050505093508280548060200260200160405190810160405280929190818152602001828054801561154b57602002820191906000526020600020905b815481526020019060010190808311611537575b5050505050925081805480602002602001604051908101604052809291908181526020016000905b8282101561161f57838290600052602060002001805461159290616254565b80601f01602080910402602001604051908101604052809291908181526020018280546115be90616254565b801561160b5780601f106115e05761010080835404028352916020019161160b565b820191906000526020600020905b8154815290600101906020018083116115ee57829003601f168201915b505050505081526020019060010190611573565b50505050915080805480602002602001604051908101604052809291908181526020016000905b828210156116f257838290600052602060002001805461166590616254565b80601f016020809104026020016040519081016040528092919081815260200182805461169190616254565b80156116de5780601f106116b3576101008083540402835291602001916116de565b820191906000526020600020905b8154815290600101906020018083116116c157829003601f168201915b505050505081526020019060010190611646565b5050505090509450945094509450509193509193565b604080517f150214d74d59b7d1e90c73fc22ef3d991dd0a76b046543d4d80ab92d2a50328f602082015290810186905260ff85166060820152600090819061175690610f7590608001610f5a565b905061177387828860405180602001604052806000815250612e80565b979650505050505050565b6000610ed382612ea3565b60008060008061179885612ff0565b93509350935093506117ac848484846117b4565b505050505050565b60006117c285858585613281565b95945050505050565b6101c55460408051634bf5d7e960e01b815290516060926001600160a01b031691634bf5d7e99160048083019260009291908290030181865afa92505050801561183757506040513d6000823e601f3d908101601f1916820160405261183491908101906163dd565b60015b611873575060408051808201909152601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c74000000602082015290565b919050565b60008033905061189984828560405180602001604052806000815250612e80565b949350505050565b60008033905061177387828888888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a9250612af4915050565b61022b5460009080820361190457505061022a54919050565b600061022b61191460018461644a565b815481106119245761192461645d565b60009182526020918290206040805180820190915291015463ffffffff8116808352600160201b9091046001600160e01b0316928201929092529150841061197a57602001516001600160e01b03169392505050565b61198f6119868561334c565b61022b906133b5565b6001600160e01b0316949350505050565b6119a8610df3565b6001600160a01b0316336001600160a01b0316146119d85760405162461bcd60e51b815260040161041c9061621d565b306119e1610df3565b6001600160a01b031614611a1f5760008036604051611a0192919061620d565b604051809103902090505b80611a18610131612b03565b03611a0c57505b6110c281613468565b600080339050611a7086828787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612e8092505050565b9695505050505050565b6000611a846134ab565b60005b8551811015611afd5761028e6000878381518110611aa757611aa761645d565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16611aeb57604051630b094f2760e31b815260040160405180910390fd5b80611af581616473565b915050611a87565b506117c285858585613556565b600054610100900460ff1615808015611b2a5750600054600160ff909116105b80611b445750303b158015611b44575060005460ff166001145b611ba75760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161041c565b6000805460ff191660011790558015611bca576000805461ff0019166101001790555b334114611bea5760405163022d8c9560e31b815260040160405180910390fd5b3a15611c09576040516383f1b1d360e01b815260040160405180910390fd5b611c356040518060400160405280600b81526020016a2129a1a3b7bb32b93737b960a91b8152506135be565b611c5f611c446001603c6164a2565b611c50600160786164a2565b68056bc75e2d63100000613615565b611c6761364c565b611c72612005613673565b611c7d6120066136a3565b611c87600a6136d3565b611c9b611c966001603c6164a2565b613703565b61100760005261028e6020527f4cdb1a6c4b56f62f27f7202d75e865c2405f138cb32ec45019c0f2ca8f91e472805460ff1916600117905561028f805475df87f0e2b8519ea2dd4abd8b639cdd628497ed25000062010000600160b01b031990911617905580156110c2576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b61028f546201000090046001600160a01b03163314611d7a57604051631431806f60e11b815260040160405180910390fd5b61028f805461ff0019166101001790556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e75290600090a1565b6000606080600080600060606065546000801b148015611dd55750606654155b611e195760405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b604482015260640161041c565b611e21613733565b611e29613742565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b6101c554604080516324776b7d60e21b815290516000926001600160a01b0316916391ddadf49160048083019260209291908290030181865afa925050508015611eba575060408051601f3d908101601f19168201909252611eb7918101906164c4565b60015b61187357610e0843613751565b6000611ed48484846137b8565b90505b9392505050565b61022b5460009015611f0357611ef561022b61382f565b6001600160e01b0316905090565b5061022a5490565b611f13610df3565b6001600160a01b0316336001600160a01b031614611f435760405162461bcd60e51b815260040161041c9061621d565b30611f4c610df3565b6001600160a01b031614611f8a5760008036604051611f6c92919061620d565b604051809103902090505b80611f83610131612b03565b03611f7757505b6110c28161385f565b6101f85460008281526101f9602052604080822054905163d45c443560e01b81526004810191909152909182916001600160a01b039091169063d45c443590602401602060405180830381865afa158015611ff2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061201691906162cf565b9050806001146120265780611ed7565b60009392505050565b336110071461205557604051630f22c43960e41b8152611007600482015260240161041c565b6120bb6040518060400160405280600b81526020016a766f74696e6744656c617960a81b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506138ca9050565b1561216457602081146120e95783838383604051630a5a604160e01b815260040161041c9493929190616515565b604080516020601f840181900481028201810190925282815260009161212a9185858083850183828082843760009201919091525092939250506139239050565b9050806000036121555784848484604051630a5a604160e01b815260040161041c9493929190616515565b61215e81613468565b506125cb565b6121cb6040518060400160405280600c81526020016b1d9bdd1a5b99d4195c9a5bd960a21b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506138ca9050565b1561226e57602081146121f95783838383604051630a5a604160e01b815260040161041c9493929190616515565b604080516020601f840181900481028201810190925282815260009161223a9185858083850183828082843760009201919091525092939250506139239050565b9050806000036122655784848484604051630a5a604160e01b815260040161041c9493929190616515565b61215e81613928565b6122da604051806040016040528060118152602001701c1c9bdc1bdcd85b151a1c995cda1bdb19607a1b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506138ca9050565b1561237d57602081146123085783838383604051630a5a604160e01b815260040161041c9493929190616515565b604080516020601f84018190048102820181019092528281526000916123499185858083850183828082843760009201919091525092939250506139239050565b9050806000036123745784848484604051630a5a604160e01b815260040161041c9493929190616515565b61215e816139cb565b6123e76040518060400160405280600f81526020016e38bab7b93ab6a73ab6b2b930ba37b960891b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506138ca9050565b1561248a57602081146124155783838383604051630a5a604160e01b815260040161041c9493929190616515565b604080516020601f84018190048102820181019092528281526000916124569185858083850183828082843760009201919091525092939250506139239050565b9050806000036124815784848484604051630a5a604160e01b815260040161041c9493929190616515565b61215e81612b82565b6124f9604051806040016040528060148152602001736d696e506572696f64416674657251756f72756d60601b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506138ca9050565b156125aa57600881146125275783838383604051630a5a604160e01b815260040161041c9493929190616515565b600061256d600884848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506139239050565b9050806001600160401b03166000036125a15784848484604051630a5a604160e01b815260040161041c9493929190616515565b61215e81613a0e565b838383836040516325ee20d560e21b815260040161041c9493929190616515565b7ff1ce9b2cbf50eeb05769a29e2543fd350cab46894a7dd9978a12d534bb20e633848484846040516126009493929190616515565b60405180910390a150505050565b6000610e086101635490565b6000610ed382613a7a565b61262d610df3565b6001600160a01b0316336001600160a01b03161461265d5760405162461bcd60e51b815260040161041c9061621d565b30612666610df3565b6001600160a01b0316146126a4576000803660405161268692919061620d565b604051809103902090505b8061269d610131612b03565b0361269157505b600080856001600160a01b03168585856040516126c292919061620d565b60006040518083038185875af1925050503d80600081146126ff576040519150601f19603f3d011682016040523d82523d6000602084013e612704565b606091505b509150915061272c82826040518060600160405280602881526020016168c560289139613ab8565b50505050505050565b60008484848460405160200161274e949392919061653c565b60408051601f19818403018152919052805160209091012095945050505050565b612777610df3565b6001600160a01b0316336001600160a01b0316146127a75760405162461bcd60e51b815260040161041c9061621d565b306127b0610df3565b6001600160a01b0316146127ee57600080366040516127d092919061620d565b604051809103902090505b806127e7610131612b03565b036127db57505b6110c281613a0e565b6000825184511461285b5760405162461bcd60e51b815260206004820152602860248201527f476f7665726e6f72427261766f3a20696e76616c6964207369676e61747572656044820152670e640d8cadccee8d60c31b606482015260840161041c565b612869338787878787613ad1565b611a7086866128788787613b8f565b85611a7a565b60008060008061288d85612ff0565b93509350935093506117ac84848484611158565b6128a9610df3565b6001600160a01b0316336001600160a01b0316146128d95760405162461bcd60e51b815260040161041c9061621d565b306128e2610df3565b6001600160a01b031614612920576000803660405161290292919061620d565b604051809103902090505b80612919610131612b03565b0361290d57505b6110c281613928565b6000611ed7838361294560408051602081019091526000815290565b6137b8565b612952610df3565b6001600160a01b0316336001600160a01b0316146129825760405162461bcd60e51b815260040161041c9061621d565b3061298b610df3565b6001600160a01b0316146129c957600080366040516129ab92919061620d565b604051809103902090505b806129c2610131612b03565b036129b657505b6110c2816139cb565b600060646129df836118eb565b6101c554604051632394e7a360e21b8152600481018690526001600160a01b0390911690638e539e8c90602401602060405180830381865afa158015612a29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a4d91906162cf565b612a579190616587565b610ed391906164a2565b600080600080612a7085612ff0565b93509350935093506117ac84848484611383565b60006001600160e01b03198216636e665ced60e01b1480610ed35750610ed382613cc1565b6000610ed3612ab6613d5d565b8360405161190160f01b8152600281019290925260228201526042902090565b6000806000612ae787878787613d67565b9150915061146c81613e2b565b6000611a708686868686613f75565b6000612b1e8254600f81810b600160801b909204900b131590565b15612b3c57604051631ed9509560e11b815260040160405180910390fd5b508054600f0b6000818152600180840160205260408220805492905583546fffffffffffffffffffffffffffffffff191692016001600160801b03169190911790915590565b6064811115612c055760405162461bcd60e51b815260206004820152604360248201527f476f7665726e6f72566f74657351756f72756d4672616374696f6e3a2071756f60448201527f72756d4e756d657261746f72206f7665722071756f72756d44656e6f6d696e616064820152623a37b960e91b608482015260a40161041c565b6000612c0f611ede565b90508015801590612c21575061022b54155b15612c8657604080518082019091526000815261022b9060208101612c4584614078565b6001600160e01b039081169091528254600181018455600093845260209384902083519490930151909116600160201b0263ffffffff909316929092179101555b612cb4612ca1612c94611e53565b65ffffffffffff1661334c565b612caa84614078565b61022b91906140e1565b505060408051828152602081018490527f0553476bf02ef2726e8ce5ced78d63e26e602e4a2257b1f559418e24b4633997910160405180910390a15050565b30612cfc610df3565b6001600160a01b031614612d8d5760005b84518110156117ac57306001600160a01b0316858281518110612d3257612d3261645d565b60200260200101516001600160a01b031603612d7d57612d7d838281518110612d5d57612d5d61645d565b6020026020010151805190602001206101316140fc90919063ffffffff16565b612d8681616473565b9050612d0d565b5050505050565b61028f54610100900460ff1615612dbe5760405163e96776bf60e01b815260040160405180910390fd5b60005b8451811015612e375761028e6000868381518110612de157612de161645d565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16612e2557604051630b094f2760e31b815260040160405180910390fd5b80612e2f81616473565b915050612dc1565b50612d8d8585858585614138565b30612e4e610df3565b6001600160a01b031614612d8d5761013154600f81810b600160801b909204900b1315612d8d57600061013155612d8d565b60006117c285858585612e9e60408051602081019091526000815290565b612af4565b600080612eaf836141ad565b90506004816007811115612ec557612ec5615c8d565b14612ed05792915050565b60008381526101f9602052604090205480612eec575092915050565b6101f854604051632ab0f52960e01b8152600481018390526001600160a01b0390911690632ab0f52990602401602060405180830381865afa158015612f36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f5a919061659e565b15612f69575060079392505050565b6101f854604051632c258a9f60e11b8152600481018390526001600160a01b039091169063584b153e90602401602060405180830381865afa158015612fb3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fd7919061659e565b15612fe6575060059392505050565b5060029392505050565b60608060606000806101936000878152602001908152602001600020905080600101816002016131c283600301805480602002602001604051908101604052809291908181526020016000905b828210156130e957838290600052602060002001805461305c90616254565b80601f016020809104026020016040519081016040528092919081815260200182805461308890616254565b80156130d55780601f106130aa576101008083540402835291602001916130d5565b820191906000526020600020905b8154815290600101906020018083116130b857829003601f168201915b50505050508152602001906001019061303d565b50505060048601805460408051602080840282018101909252828152935060009084015b828210156131b957838290600052602060002001805461312c90616254565b80601f016020809104026020016040519081016040528092919081815260200182805461315890616254565b80156131a55780601f1061317a576101008083540402835291602001916131a5565b820191906000526020600020905b81548152906001019060200180831161318857829003601f168201915b50505050508152602001906001019061310d565b50505050613b8f565b600984015483546040805160208084028201810190925282815291869183018282801561321857602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116131fa575b505050505093508280548060200260200160405190810160405280929190818152602001828054801561326a57602002820191906000526020600020905b815481526020019060010190808311613256575b505050505092509450945094509450509193509193565b60008061329086868686612735565b600081815261019360205260409020549091506001600160a01b0316338114806132e457506132bd61260e565b6132e28260016132cb611e53565b6132d591906163b7565b65ffffffffffff16612929565b105b6133405760405162461bcd60e51b815260206004820152602760248201527f476f7665726e6f72427261766f3a2070726f706f7365722061626f76652074686044820152661c995cda1bdb1960ca1b606482015260840161041c565b611773878787876142e5565b600063ffffffff8211156133b15760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201526532206269747360d01b606482015260840161041c565b5090565b8154600090818160058111156134125760006133d0846142f3565b6133da908561644a565b60008881526020902090915081015463ffffffff908116908716101561340257809150613410565b61340d8160016163a4565b92505b505b6000613420878785856143db565b9050801561345b576134458761343760018461644a565b600091825260209091200190565b54600160201b90046001600160e01b0316611773565b6000979650505050505050565b6101615460408051918252602082018390527fc565b045403dc03c2eea82b81a0465edad9e2e7fc4d97e11421c209da93d7a93910160405180910390a161016155565b61028f5460ff16613554576a084595161401484a0000006120056001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613502573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061352691906162cf565b1015613545576040516311b6707f60e01b815260040160405180910390fd5b61028f805460ff191660011790555b565b60006135b233868686516001600160401b03811115613577576135776156e2565b6040519080825280602002602001820160405280156135aa57816020015b60608152602001906001900390816135955790505b508787613ad1565b6117c285858585614431565b600054610100900460ff166135e55760405162461bcd60e51b815260040161041c906165c0565b61360c816136076040805180820190915260018152603160f81b602082015290565b614810565b6110c28161485f565b600054610100900460ff1661363c5760405162461bcd60e51b815260040161041c906165c0565b613647838383614897565b505050565b600054610100900460ff166135545760405162461bcd60e51b815260040161041c906165c0565b600054610100900460ff1661369a5760405162461bcd60e51b815260040161041c906165c0565b6110c2816148d9565b600054610100900460ff166136ca5760405162461bcd60e51b815260040161041c906165c0565b6110c281614923565b600054610100900460ff166136fa5760405162461bcd60e51b815260040161041c906165c0565b6110c28161494a565b600054610100900460ff1661372a5760405162461bcd60e51b815260040161041c906165c0565b6110c281614971565b6060606780546110d590616254565b6060606880546110d590616254565b600065ffffffffffff8211156133b15760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203460448201526538206269747360d01b606482015260840161041c565b6101c554604051630748d63560e31b81526001600160a01b038581166004830152602482018590526000921690633a46b1a890604401602060405180830381865afa15801561380b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ed491906162cf565b80546000908015612026576138498361343760018461644a565b54600160201b90046001600160e01b0316611ed7565b6101f854604080516001600160a01b03928316815291831660208301527f08f74ea46ef7894f65eabfb5e6e695de773a000b47c529ab559178069b226401910160405180910390a16101f880546001600160a01b0319166001600160a01b0392909216919091179055565b6000816040516020016138dd919061660b565b6040516020818303038152906040528051906020012083604051602001613904919061660b565b6040516020818303038152906040528051906020012014905092915050565b015190565b600081116139885760405162461bcd60e51b815260206004820152602760248201527f476f7665726e6f7253657474696e67733a20766f74696e6720706572696f6420604482015266746f6f206c6f7760c81b606482015260840161041c565b6101625460408051918252602082018390527f7e3f7f0708a84de9203036abaa450dccc85ad5ff52f78c170f3edb55cf5e8828910160405180910390a161016255565b6101635460408051918252602082018390527fccb45da8d5717e6c4544694297c4ba5cf151d455c9bb0ed4fc7a38411bc05461910160405180910390a161016355565b61025c54604080516001600160401b03928316815291831660208301527f7ca4ac117ed3cdce75c1161d8207c440389b1a15d69d096831664657c07dafc2910160405180910390a161025c805467ffffffffffffffff19166001600160401b0392909216919091179055565b60008181526101306020526040812060010154610ed3906001600160401b0316600084815261025d60205260409020546001600160401b0316614998565b60608315613ac7575081611ed7565b611ed783836149ae565b805160208201206000613aef8787613ae98888613b8f565b85612735565b600081815261019360205260409020600981015491925090613b845780546001600160a01b0319166001600160a01b038a161781558751613b3990600183019060208b019061547d565b508651613b4f90600283019060208a01906154de565b508551613b659060038301906020890190615519565b508451613b7b906004830190602088019061556b565b50600981018390555b505050505050505050565b6060600082516001600160401b03811115613bac57613bac6156e2565b604051908082528060200260200182016040528015613bdf57816020015b6060815260200190600190039081613bca5790505b50905060005b8151811015613cb957848181518110613c0057613c0061645d565b602002602001015151600014613c7057848181518110613c2257613c2261645d565b602002602001015180519060200120848281518110613c4357613c4361645d565b6020026020010151604051602001613c5c929190616627565b604051602081830303815290604052613c8b565b838181518110613c8257613c8261645d565b60200260200101515b828281518110613c9d57613c9d61645d565b602002602001018190525080613cb290616473565b9050613be5565b509392505050565b600063288ace0360e11b6318df743f60e31b63bf26d89760e01b6379dd796f60e01b6001600160e01b03198616821480613d0757506001600160e01b0319868116908216145b80613d1e57506001600160e01b0319868116908516145b80613d3957506001600160e01b03198616630271189760e51b145b80611a7057506301ffc9a760e01b6001600160e01b03198716149695505050505050565b6000610e086149d8565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115613d9e5750600090506003613e22565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015613df2573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116613e1b57600060019250925050613e22565b9150600090505b94509492505050565b6000816004811115613e3f57613e3f615c8d565b03613e475750565b6001816004811115613e5b57613e5b615c8d565b03613ea85760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640161041c565b6002816004811115613ebc57613ebc615c8d565b03613f095760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161041c565b6003816004811115613f1d57613f1d615c8d565b036110c25760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b606482015260840161041c565b600080613f858787878787614a4c565b600088815261025d60205260409020549091506001600160401b0316158015613fb25750613fb287614ba2565b15611a70576000613fcc61025c546001600160401b031690565b613fd4611e53565b65ffffffffffff16613fe69190616658565b9050613ff18861261a565b816001600160401b03161115614040576040516001600160401b038216815288907f541f725fb9f7c98a30cc9c0ff32fbb14358cd7159c847a3aa20a2bdc442ba5119060200160405180910390a25b600088815261025d60205260409020805467ffffffffffffffff19166001600160401b03929092169190911790559695505050505050565b60006001600160e01b038211156133b15760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20326044820152663234206269747360c81b606482015260840161041c565b6000806140ef858585614be2565b915091505b935093915050565b8154600160801b90819004600f0b6000818152600180860160205260409091209390935583546001600160801b03908116939091011602179055565b6101f85460405163e38335e560e01b81526001600160a01b039091169063e38335e59034906141749088908890889060009089906004016162e8565b6000604051808303818588803b15801561418d57600080fd5b505af11580156141a1573d6000803e3d6000fd5b50505050505050505050565b600081815261013060205260408120600281015460ff16156141d25750600792915050565b6002810154610100900460ff16156141ed5750600292915050565b600083815261013060205260408120546001600160401b0316908190036142565760405162461bcd60e51b815260206004820152601d60248201527f476f7665726e6f723a20756e6b6e6f776e2070726f706f73616c206964000000604482015260640161041c565b6000614260611e53565b65ffffffffffff16905080821061427c57506000949350505050565b60006142878661261a565b905081811061429c5750600195945050505050565b6142a586614ba2565b80156142c857506000868152610193602052604090206006810154600590910154115b156142d95750600495945050505050565b50600395945050505050565b60006117c285858585614d81565b60008160000361430557506000919050565b6000600161431284614e37565b901c6001901b9050600181848161432b5761432b61648c565b048201901c905060018184816143435761434361648c565b048201901c9050600181848161435b5761435b61648c565b048201901c905060018184816143735761437361648c565b048201901c9050600181848161438b5761438b61648c565b048201901c905060018184816143a3576143a361648c565b048201901c905060018184816143bb576143bb61648c565b048201901c9050611ed7818285816143d5576143d561648c565b04614ecb565b60005b81831015613cb95760006143f28484614eda565b60008781526020902090915063ffffffff86169082015463ffffffff16111561441d5780925061442b565b6144288160016163a4565b93505b506143de565b60003361443e8184614ef5565b61448a5760405162461bcd60e51b815260206004820152601d60248201527f476f7665726e6f723a2070726f706f7365722072657374726963746564000000604482015260640161041c565b6000614494611e53565b65ffffffffffff1690506144a661260e565b6144b583610d4e60018561644a565b101561451d5760405162461bcd60e51b815260206004820152603160248201527f476f7665726e6f723a2070726f706f73657220766f7465732062656c6f7720706044820152701c9bdc1bdcd85b081d1a1c995cda1bdb19607a1b606482015260840161041c565b60006145328888888880519060200120612735565b905086518851146145555760405162461bcd60e51b815260040161041c90616678565b85518851146145765760405162461bcd60e51b815260040161041c90616678565b60008851116145c75760405162461bcd60e51b815260206004820152601860248201527f476f7665726e6f723a20656d7074792070726f706f73616c0000000000000000604482015260640161041c565b600081815261013060205260409020546001600160401b0316156146375760405162461bcd60e51b815260206004820152602160248201527f476f7665726e6f723a2070726f706f73616c20616c72656164792065786973746044820152607360f81b606482015260840161041c565b60006146436101615490565b61464d90846163a4565b9050600061465b6101625490565b61466590836163a4565b90506040518060e0016040528061467b84614fe6565b6001600160401b031681526001600160a01b0387166020820152600060408201526060016146a883614fe6565b6001600160401b03908116825260006020808401829052604080850183905260609485018390528883526101308252918290208551815492870151878501519186166001600160e01b031990941693909317600160401b6001600160a01b039094168402176001600160e01b0316600160e01b60e09290921c91909102178155938501516080860151908416921c0217600183015560a08301516002909201805460c09094015161ffff1990941692151561ff00191692909217610100931515939093029290921790558a517f7d84a6263ae0d98d3329bd7b46bb4e8d6f98cd35a7adb45c274c8b7fd5ebd5e091859188918e918e918111156147ad576147ad6156e2565b6040519080825280602002602001820160405280156147e057816020015b60608152602001906001900390816147cb5790505b508d88888f6040516147fa999897969594939291906166b9565b60405180910390a1509098975050505050505050565b600054610100900460ff166148375760405162461bcd60e51b815260040161041c906165c0565b60676148438382616797565b5060686148508282616797565b50506000606581905560665550565b600054610100900460ff166148865760405162461bcd60e51b815260040161041c906165c0565b61012f6148938282616797565b5050565b600054610100900460ff166148be5760405162461bcd60e51b815260040161041c906165c0565b6148c783613468565b6148d082613928565b613647816139cb565b600054610100900460ff166149005760405162461bcd60e51b815260040161041c906165c0565b6101c580546001600160a01b0319166001600160a01b0392909216919091179055565b600054610100900460ff16611f8a5760405162461bcd60e51b815260040161041c906165c0565b600054610100900460ff166110b95760405162461bcd60e51b815260040161041c906165c0565b600054610100900460ff166127ee5760405162461bcd60e51b815260040161041c906165c0565b60008183116149a75781611ed7565b5090919050565b8151156149be5781518083602001fd5b8060405162461bcd60e51b815260040161041c919061589b565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f614a0361504e565b614a0b6150a7565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b6000858152610130602052604081206001614a668861177e565b6007811115614a7757614a77615c8d565b14614ad05760405162461bcd60e51b815260206004820152602360248201527f476f7665726e6f723a20766f7465206e6f742063757272656e746c792061637460448201526269766560e81b606482015260840161041c565b8054600090614aea9088906001600160401b0316866137b8565b9050614af988888884886150d8565b8351600003614b4e57866001600160a01b03167fb8e138887d0aa13bab447e82de9d5c1777041ecd21ca36ba824ff1e6c07ddda489888489604051614b419493929190616856565b60405180910390a2611773565b866001600160a01b03167fe2babfbac5889a709b63bb7f598b324e08bc5a4fb9ec647fb3cbc9ec07eb87128988848989604051614b8f95949392919061687e565b60405180910390a2979650505050505050565b6000818152610193602052604081206005810154614bd9610dba85600090815261013060205260409020546001600160401b031690565b11159392505050565b825460009081908015614d28576000614c008761343760018561644a565b60408051808201909152905463ffffffff808216808452600160201b9092046001600160e01b031660208401529192509087161015614c815760405162461bcd60e51b815260206004820152601b60248201527f436865636b706f696e743a2064656372656173696e67206b6579730000000000604482015260640161041c565b805163ffffffff808816911603614cc95784614ca28861343760018661644a565b80546001600160e01b0392909216600160201b0263ffffffff909216919091179055614d18565b6040805180820190915263ffffffff80881682526001600160e01b0380881660208085019182528b54600181018d5560008d81529190912094519151909216600160201b029216919091179101555b6020015192508391506140f49050565b50506040805180820190915263ffffffff80851682526001600160e01b0380851660208085019182528854600181018a5560008a815291822095519251909316600160201b0291909316179201919091559050816140f4565b600080614d9086868686615276565b60008181526101f96020526040902054909150156117c2576101f85460008281526101f960205260409081902054905163c4d252f560e01b81526001600160a01b039092169163c4d252f591614dec9160040190815260200190565b600060405180830381600087803b158015614e0657600080fd5b505af1158015614e1a573d6000803e3d6000fd5b50505060008281526101f960205260408120555095945050505050565b600080608083901c15614e4c57608092831c92015b604083901c15614e5e57604092831c92015b602083901c15614e7057602092831c92015b601083901c15614e8257601092831c92015b600883901c15614e9457600892831c92015b600483901c15614ea657600492831c92015b600283901c15614eb857600292831c92015b600183901c15610ed35760010192915050565b60008183106149a75781611ed7565b6000614ee960028484186164a2565b611ed7908484166163a4565b80516000906034811015614f0d576001915050610ed3565b82810160131901516001600160a01b031981166b046e0e4dee0dee6cae47a60f60a31b14614f4057600192505050610ed3565b600080614f4e60288561644a565b90505b83811015614fc557600080614f85888481518110614f7157614f7161645d565b01602001516001600160f81b031916615383565b9150915081614f9d5760019650505050505050610ed3565b8060ff166004856001600160a01b0316901b179350505080614fbe90616473565b9050614f51565b50856001600160a01b0316816001600160a01b031614935050505092915050565b60006001600160401b038211156133b15760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203660448201526534206269747360d01b606482015260840161041c565b600080615059613733565b805190915015615070578051602090910120919050565b606554801561507f5792915050565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4709250505090565b6000806150b2613742565b8051909150156150c9578051602090910120919050565b606654801561507f5792915050565b6000858152610193602090815260408083206001600160a01b038816845260088101909252909120805460ff16156151685760405162461bcd60e51b815260206004820152602d60248201527f476f7665726e6f72436f6d7061746962696c697479427261766f3a20766f746560448201526c08185b1c9958591e4818d85cdd609a1b606482015260840161041c565b805460ff86166101000261ffff1990911617600117815561518884615415565b81546001600160601b039190911662010000026dffffffffffffffffffffffff00001990911617815560ff85166151d857838260060160008282546151cd91906163a4565b9091555061272c9050565b60001960ff8616016151f857838260050160008282546151cd91906163a4565b60011960ff86160161521857838260070160008282546151cd91906163a4565b60405162461bcd60e51b815260206004820152602d60248201527f476f7665726e6f72436f6d7061746962696c697479427261766f3a20696e766160448201526c6c696420766f7465207479706560981b606482015260840161041c565b60008061528586868686612735565b905060006152928261177e565b905060028160078111156152a8576152a8615c8d565b141580156152c8575060068160078111156152c5576152c5615c8d565b14155b80156152e6575060078160078111156152e3576152e3615c8d565b14155b6153325760405162461bcd60e51b815260206004820152601d60248201527f476f7665726e6f723a2070726f706f73616c206e6f7420616374697665000000604482015260640161041c565b6000828152610130602052604090819020600201805461ff001916610100179055517f789cf55be980739dad1d0699b93b58e806b51c9d96619bfa8fe0a28abaa7b30c9061134b9084815260200190565b60008060f883901c602f8111801561539e5750603a8160ff16105b156153b357600194602f199091019350915050565b8060ff1660401080156153c9575060478160ff16105b156153de576001946036199091019350915050565b8060ff1660601080156153f4575060678160ff16105b15615409576001946056199091019350915050565b50600093849350915050565b60006001600160601b038211156133b15760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203960448201526536206269747360d01b606482015260840161041c565b8280548282559060005260206000209081019282156154d2579160200282015b828111156154d257825182546001600160a01b0319166001600160a01b0390911617825560209092019160019091019061549d565b506133b19291506155bd565b8280548282559060005260206000209081019282156154d2579160200282015b828111156154d25782518255916020019190600101906154fe565b82805482825590600052602060002090810192821561555f579160200282015b8281111561555f578251829061554f9082616797565b5091602001919060010190615539565b506133b19291506155d2565b8280548282559060005260206000209081019282156155b1579160200282015b828111156155b157825182906155a19082616797565b509160200191906001019061558b565b506133b19291506155ef565b5b808211156133b157600081556001016155be565b808211156133b15760006155e6828261560c565b506001016155d2565b808211156133b1576000615603828261560c565b506001016155ef565b50805461561890616254565b6000825580601f10615628575050565b601f0160209004906000526020600020908101906110c291906155bd565b60006020828403121561565857600080fd5b5035919050565b60006020828403121561567157600080fd5b81356001600160e01b031981168114611ed757600080fd5b803560ff8116811461187357600080fd5b60008083601f8401126156ac57600080fd5b5081356001600160401b038111156156c357600080fd5b6020830191508360208285010111156156db57600080fd5b9250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715615720576157206156e2565b604052919050565b60006001600160401b03821115615741576157416156e2565b50601f01601f191660200190565b600082601f83011261576057600080fd5b813561577361576e82615728565b6156f8565b81815284602083860101111561578857600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060008060008060e0898b0312156157c157600080fd5b883597506157d160208a01615689565b965060408901356001600160401b03808211156157ed57600080fd5b6157f98c838d0161569a565b909850965060608b013591508082111561581257600080fd5b5061581f8b828c0161574f565b94505061582e60808a01615689565b925060a0890135915060c089013590509295985092959890939650565b60005b8381101561586657818101518382015260200161584e565b50506000910152565b6000815180845261588781602086016020860161584b565b601f01601f19169290920160200192915050565b602081526000611ed7602083018461586f565b6001600160a01b03811681146110c257600080fd5b600080600080608085870312156158d957600080fd5b84356158e4816158ae565b935060208501356158f4816158ae565b92506040850135915060608501356001600160401b0381111561591657600080fd5b6159228782880161574f565b91505092959194509250565b60006001600160401b03821115615947576159476156e2565b5060051b60200190565b600082601f83011261596257600080fd5b8135602061597261576e8361592e565b82815260059290921b8401810191818101908684111561599157600080fd5b8286015b848110156159b55780356159a8816158ae565b8352918301918301615995565b509695505050505050565b600082601f8301126159d157600080fd5b813560206159e161576e8361592e565b82815260059290921b84018101918181019086841115615a0057600080fd5b8286015b848110156159b55780358352918301918301615a04565b600082601f830112615a2c57600080fd5b81356020615a3c61576e8361592e565b82815260059290921b84018101918181019086841115615a5b57600080fd5b8286015b848110156159b55780356001600160401b03811115615a7e5760008081fd5b615a8c8986838b010161574f565b845250918301918301615a5f565b60008060008060808587031215615ab057600080fd5b84356001600160401b0380821115615ac757600080fd5b615ad388838901615951565b95506020870135915080821115615ae957600080fd5b615af5888389016159c0565b94506040870135915080821115615b0b57600080fd5b50615b1887828801615a1b565b949793965093946060013593505050565b600081518084526020808501945080840160005b83811015615b625781516001600160a01b031687529582019590820190600101615b3d565b509495945050505050565b600081518084526020808501945080840160005b83811015615b6257815187529582019590820190600101615b81565b600081518084526020808501808196508360051b8101915082860160005b85811015615be5578284038952615bd384835161586f565b98850198935090840190600101615bbb565b5091979650505050505050565b608081526000615c056080830187615b29565b8281036020840152615c178187615b6d565b90508281036040840152615c2b8186615b9d565b905082810360608401526117738185615b9d565b600080600080600060a08688031215615c5757600080fd5b85359450615c6760208701615689565b9350615c7560408701615689565b94979396509394606081013594506080013592915050565b634e487b7160e01b600052602160045260246000fd5b6020810160088310615cc557634e487b7160e01b600052602160045260246000fd5b91905290565b60008060408385031215615cde57600080fd5b823591506020830135615cf0816158ae565b809150509250929050565b600060208284031215615d0d57600080fd5b8135611ed7816158ae565b60008060408385031215615d2b57600080fd5b82359150615d3b60208401615689565b90509250929050565b600080600080600060808688031215615d5c57600080fd5b85359450615d6c60208701615689565b935060408601356001600160401b0380821115615d8857600080fd5b615d9489838a0161569a565b90955093506060880135915080821115615dad57600080fd5b50615dba8882890161574f565b9150509295509295909350565b60008060008060608587031215615ddd57600080fd5b84359350615ded60208601615689565b925060408501356001600160401b03811115615e0857600080fd5b615e148782880161569a565b95989497509550505050565b60008060008060808587031215615e3657600080fd5b84356001600160401b0380821115615e4d57600080fd5b615e5988838901615951565b95506020870135915080821115615e6f57600080fd5b615e7b888389016159c0565b94506040870135915080821115615e9157600080fd5b615e9d88838901615a1b565b93506060870135915080821115615eb357600080fd5b506159228782880161574f565b60ff60f81b8816815260e060208201526000615edf60e083018961586f565b8281036040840152615ef1818961586f565b606084018890526001600160a01b038716608085015260a0840186905283810360c08501529050610fc38185615b6d565b600080600060608486031215615f3757600080fd5b8335615f42816158ae565b92506020840135915060408401356001600160401b03811115615f6457600080fd5b615f708682870161574f565b9150509250925092565b60008060008060408587031215615f9057600080fd5b84356001600160401b0380821115615fa757600080fd5b615fb38883890161569a565b90965094506020870135915080821115615fcc57600080fd5b50615e148782880161569a565b600080600080600060a08688031215615ff157600080fd5b8535615ffc816158ae565b9450602086013561600c816158ae565b935060408601356001600160401b038082111561602857600080fd5b61603489838a016159c0565b9450606088013591508082111561604a57600080fd5b61605689838a016159c0565b93506080880135915080821115615dad57600080fd5b6000806000806060858703121561608257600080fd5b843561608d816158ae565b93506020850135925060408501356001600160401b03811115615e0857600080fd5b6000602082840312156160c157600080fd5b81356001600160401b0381168114611ed757600080fd5b600080600080600060a086880312156160f057600080fd5b85356001600160401b038082111561610757600080fd5b61611389838a01615951565b9650602088013591508082111561612957600080fd5b61613589838a016159c0565b9550604088013591508082111561614b57600080fd5b61615789838a01615a1b565b9450606088013591508082111561616d57600080fd5b61605689838a01615a1b565b6000806040838503121561618c57600080fd5b8235616197816158ae565b946020939093013593505050565b600080600080600060a086880312156161bd57600080fd5b85356161c8816158ae565b945060208601356161d8816158ae565b9350604086013592506060860135915060808601356001600160401b0381111561620157600080fd5b615dba8882890161574f565b8183823760009101908152919050565b60208082526018908201527f476f7665726e6f723a206f6e6c79476f7665726e616e63650000000000000000604082015260600190565b600181811c9082168061626857607f821691505b60208210810361628857634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526021908201527f476f7665726e6f723a2070726f706f73616c206e6f74207375636365737366756040820152601b60fa1b606082015260800190565b6000602082840312156162e157600080fd5b5051919050565b60a0815260006162fb60a0830188615b29565b828103602084015261630d8188615b6d565b905082810360408401526163218187615b9d565b60608401959095525050608001529392505050565b60c08152600061634960c0830189615b29565b828103602084015261635b8189615b6d565b9050828103604084015261636f8188615b9d565b60608401969096525050608081019290925260a0909101529392505050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610ed357610ed361638e565b65ffffffffffff8281168282160390808211156163d6576163d661638e565b5092915050565b6000602082840312156163ef57600080fd5b81516001600160401b0381111561640557600080fd5b8201601f8101841361641657600080fd5b805161642461576e82615728565b81815285602083850101111561643957600080fd5b6117c282602083016020860161584b565b81810381811115610ed357610ed361638e565b634e487b7160e01b600052603260045260246000fd5b6000600182016164855761648561638e565b5060010190565b634e487b7160e01b600052601260045260246000fd5b6000826164bf57634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156164d657600080fd5b815165ffffffffffff81168114611ed757600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6040815260006165296040830186886164ec565b82810360208401526117738185876164ec565b60808152600061654f6080830187615b29565b82810360208401526165618187615b6d565b905082810360408401526165758186615b9d565b91505082606083015295945050505050565b8082028115828204841417610ed357610ed361638e565b6000602082840312156165b057600080fd5b81518015158114611ed757600080fd5b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6000825161661d81846020870161584b565b9190910192915050565b6001600160e01b031983168152815160009061664a81600485016020870161584b565b919091016004019392505050565b6001600160401b038181168382160190808211156163d6576163d661638e565b60208082526021908201527f476f7665726e6f723a20696e76616c69642070726f706f73616c206c656e67746040820152600d60fb1b606082015260800190565b8981526001600160a01b0389166020820152610120604082018190526000906166e48382018b615b29565b905082810360608401526166f8818a615b6d565b9050828103608084015261670c8189615b9d565b905082810360a08401526167208188615b9d565b90508560c08401528460e0840152828103610100840152616741818561586f565b9c9b505050505050505050505050565b601f82111561364757600081815260208120601f850160051c810160208610156167785750805b601f850160051c820191505b818110156117ac57828155600101616784565b81516001600160401b038111156167b0576167b06156e2565b6167c4816167be8454616254565b84616751565b602080601f8311600181146167f957600084156167e15750858301515b600019600386901b1c1916600185901b1785556117ac565b600085815260208120601f198616915b8281101561682857888601518255948401946001909101908401616809565b50858210156168465787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b84815260ff84166020820152826040820152608060608201526000611a70608083018461586f565b85815260ff8516602082015283604082015260a0606082015260006168a660a083018561586f565b82810360808401526168b8818561586f565b9897505050505050505056fe476f7665726e6f723a2072656c617920726576657274656420776974686f7574206d657373616765a164736f6c6343000811000a", }, { ContractAddr: common.HexToAddress(GovTokenContract), @@ -908,12 +908,12 @@ func init() { { ContractAddr: common.HexToAddress(TimelockContract), CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/cfc0bd1127186a917ddc38fd38d22903034d3f0b", - Code: "6080604052600436106101d15760003560e01c80638129fc1c116100f7578063b1c5f42711610095578063d547741f11610064578063d547741f14610584578063e38335e5146105a4578063f23a6e61146105b7578063f27a0c92146105e357600080fd5b8063b1c5f427146104eb578063bc197c811461050b578063c4d252f514610537578063d45c44351461055757600080fd5b806391d14854116100d157806391d1485414610474578063a217fddf14610494578063ac431751146104a9578063b08e51c0146104c957600080fd5b80638129fc1c1461041d5780638f2a0bb0146104325780638f61f4f51461045257600080fd5b8063248a9ca31161016f57806336568abe1161013e57806336568abe1461039d578063584b153e146103bd57806364d62353146103dd5780638065657f146103fd57600080fd5b8063248a9ca3146102fd5780632ab0f5291461032d5780632f2ff15d1461035d57806331d507501461037d57600080fd5b80630d3cf6fc116101ab5780630d3cf6fc14610264578063134008d31461028657806313bc9f2014610299578063150b7a02146102b957600080fd5b806301d5062a146101dd57806301ffc9a7146101ff57806307bd02651461023457600080fd5b366101d857005b600080fd5b3480156101e957600080fd5b506101fd6101f8366004611a54565b6105f8565b005b34801561020b57600080fd5b5061021f61021a366004611ac8565b6106bc565b60405190151581526020015b60405180910390f35b34801561024057600080fd5b5061025660008051602061253b83398151915281565b60405190815260200161022b565b34801561027057600080fd5b506102566000805160206124fb83398151915281565b6101fd610294366004611af2565b6106e7565b3480156102a557600080fd5b5061021f6102b4366004611b5d565b61078a565b3480156102c557600080fd5b506102e46102d4366004611c2b565b630a85bd0160e11b949350505050565b6040516001600160e01b0319909116815260200161022b565b34801561030957600080fd5b50610256610318366004611b5d565b60009081526065602052604090206001015490565b34801561033957600080fd5b5061021f610348366004611b5d565b60009081526097602052604090205460011490565b34801561036957600080fd5b506101fd610378366004611c92565b6107b0565b34801561038957600080fd5b5061021f610398366004611b5d565b6107da565b3480156103a957600080fd5b506101fd6103b8366004611c92565b6107f3565b3480156103c957600080fd5b5061021f6103d8366004611b5d565b610876565b3480156103e957600080fd5b506101fd6103f8366004611b5d565b61088d565b34801561040957600080fd5b50610256610418366004611af2565b610931565b34801561042957600080fd5b506101fd610970565b34801561043e57600080fd5b506101fd61044d366004611d02565b610b22565b34801561045e57600080fd5b5061025660008051602061251b83398151915281565b34801561048057600080fd5b5061021f61048f366004611c92565b610ca3565b3480156104a057600080fd5b50610256600081565b3480156104b557600080fd5b506101fd6104c4366004611db3565b610cce565b3480156104d557600080fd5b5061025660008051602061255b83398151915281565b3480156104f757600080fd5b50610256610506366004611e1e565b610eb8565b34801561051757600080fd5b506102e4610526366004611f45565b63bc197c8160e01b95945050505050565b34801561054357600080fd5b506101fd610552366004611b5d565b610efd565b34801561056357600080fd5b50610256610572366004611b5d565b60009081526097602052604090205490565b34801561059057600080fd5b506101fd61059f366004611c92565b610fc0565b6101fd6105b2366004611e1e565b610fe5565b3480156105c357600080fd5b506102e46105d2366004611fee565b63f23a6e6160e01b95945050505050565b3480156105ef57600080fd5b50609854610256565b60008051602061251b8339815191526106108161115d565b6000610620898989898989610931565b905061062c8184611167565b6000817f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8b8b8b8b8b8a6040516106689695949392919061207b565b60405180910390a383156106b157807f20fda5fd27a1ea7bf5b9567f143ac5470bb059374a27e8f67cb44f946f6d0387856040516106a891815260200190565b60405180910390a25b505050505050505050565b60006001600160e01b03198216630271189760e51b14806106e157506106e182611256565b92915050565b60008051602061253b833981519152610701816000610ca3565b61070f5761070f813361128b565b600061071f888888888888610931565b905061072b81856112e4565b6107378888888861137f565b6000817fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b588a8a8a8a60405161076f94939291906120b8565b60405180910390a361078081611452565b5050505050505050565b6000818152609760205260408120546001811180156107a95750428111155b9392505050565b6000828152606560205260409020600101546107cb8161115d565b6107d5838361148b565b505050565b60008181526097602052604081205481905b1192915050565b6001600160a01b03811633146108685760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b6108728282611511565b5050565b6000818152609760205260408120546001906107ec565b3330146108f05760405162461bcd60e51b815260206004820152602b60248201527f54696d656c6f636b436f6e74726f6c6c65723a2063616c6c6572206d7573742060448201526a62652074696d656c6f636b60a81b606482015260840161085f565b60985460408051918252602082018390527f11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d5910160405180910390a1609855565b600086868686868660405160200161094e9695949392919061207b565b6040516020818303038152906040528051906020012090509695505050505050565b600054610100900460ff16158080156109905750600054600160ff909116105b806109aa5750303b1580156109aa575060005460ff166001145b610a0d5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161085f565b6000805460ff191660011790558015610a30576000805461ff0019166101001790555b334114610a505760405163022d8c9560e31b815260040160405180910390fd5b3a15610a6f576040516383f1b1d360e01b815260040160405180910390fd5b6040805160018082528183019092526000916020808301908036833701905050905061200481600081518110610aa757610aa76120ea565b60200260200101906001600160a01b031690816001600160a01b031681525050610ad8620151808283612004611578565b508015610b1f576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b60008051602061251b833981519152610b3a8161115d565b888714610b595760405162461bcd60e51b815260040161085f90612100565b888514610b785760405162461bcd60e51b815260040161085f90612100565b6000610b8a8b8b8b8b8b8b8b8b610eb8565b9050610b968184611167565b60005b8a811015610c545780827f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8e8e85818110610bd657610bd66120ea565b9050602002016020810190610beb9190612143565b8d8d86818110610bfd57610bfd6120ea565b905060200201358c8c87818110610c1657610c166120ea565b9050602002810190610c28919061215e565b8c8b604051610c3c9695949392919061207b565b60405180910390a3610c4d816121ba565b9050610b99565b508315610c9657807f20fda5fd27a1ea7bf5b9567f143ac5470bb059374a27e8f67cb44f946f6d038785604051610c8d91815260200190565b60405180910390a25b5050505050505050505050565b60009182526065602090815260408084206001600160a01b0393909316845291905290205460ff1690565b3361100714610cf457604051630f22c43960e41b8152611007600482015260240161085f565b610d57604051806040016040528060088152602001676d696e44656c617960c01b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506115b19050565b15610e545760208114610d855783838383604051630a5a604160e01b815260040161085f94939291906121d3565b604080516020601f8401819004810282018101909252828152600091610dc691858580838501838280828437600092019190915250929392505061160a9050565b9050801580610dd757506212750081115b15610dfd5784848484604051630a5a604160e01b815260040161085f94939291906121d3565b6040516364d6235360e01b81526004810182905230906364d6235390602401600060405180830381600087803b158015610e3657600080fd5b505af1158015610e4a573d6000803e3d6000fd5b5050505050610e75565b838383836040516325ee20d560e21b815260040161085f94939291906121d3565b7ff1ce9b2cbf50eeb05769a29e2543fd350cab46894a7dd9978a12d534bb20e63384848484604051610eaa94939291906121d3565b60405180910390a150505050565b60008888888888888888604051602001610ed998979695949392919061228b565b60405160208183030381529060405280519060200120905098975050505050505050565b60008051602061255b833981519152610f158161115d565b610f1e82610876565b610f845760405162461bcd60e51b815260206004820152603160248201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e2063616044820152701b9b9bdd0818994818d85b98d95b1b1959607a1b606482015260840161085f565b6000828152609760205260408082208290555183917fbaa1eb22f2a492ba1a5fea61b8df4d27c6c8b5f3971e63bb58fa14ff72eedb7091a25050565b600082815260656020526040902060010154610fdb8161115d565b6107d58383611511565b60008051602061253b833981519152610fff816000610ca3565b61100d5761100d813361128b565b87861461102c5760405162461bcd60e51b815260040161085f90612100565b87841461104b5760405162461bcd60e51b815260040161085f90612100565b600061105d8a8a8a8a8a8a8a8a610eb8565b905061106981856112e4565b60005b898110156111475760008b8b83818110611088576110886120ea565b905060200201602081019061109d9190612143565b905060008a8a848181106110b3576110b36120ea565b9050602002013590503660008a8a868181106110d1576110d16120ea565b90506020028101906110e3919061215e565b915091506110f38484848461137f565b84867fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b588686868660405161112a94939291906120b8565b60405180910390a35050505080611140906121ba565b905061106c565b5061115181611452565b50505050505050505050565b610b1f813361128b565b611170826107da565b156111d55760405162461bcd60e51b815260206004820152602f60248201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e20616c60448201526e1c9958591e481cd8da19591d5b1959608a1b606482015260840161085f565b6098548110156112365760405162461bcd60e51b815260206004820152602660248201527f54696d656c6f636b436f6e74726f6c6c65723a20696e73756666696369656e746044820152652064656c617960d01b606482015260840161085f565b611240814261232c565b6000928352609760205260409092209190915550565b60006001600160e01b03198216637965db0b60e01b14806106e157506301ffc9a760e01b6001600160e01b03198316146106e1565b6112958282610ca3565b610872576112a28161160f565b6112ad836020611621565b6040516020016112be929190612363565b60408051601f198184030181529082905262461bcd60e51b825261085f916004016123d8565b6112ed8261078a565b6113095760405162461bcd60e51b815260040161085f9061240b565b80158061132457506000818152609760205260409020546001145b6108725760405162461bcd60e51b815260206004820152602660248201527f54696d656c6f636b436f6e74726f6c6c65723a206d697373696e6720646570656044820152656e64656e637960d01b606482015260840161085f565b6000846001600160a01b031684848460405161139c929190612455565b60006040518083038185875af1925050503d80600081146113d9576040519150601f19603f3d011682016040523d82523d6000602084013e6113de565b606091505b505090508061144b5760405162461bcd60e51b815260206004820152603360248201527f54696d656c6f636b436f6e74726f6c6c65723a20756e6465726c79696e6720746044820152721c985b9cd858dd1a5bdb881c995d995c9d1959606a1b606482015260840161085f565b5050505050565b61145b8161078a565b6114775760405162461bcd60e51b815260040161085f9061240b565b600090815260976020526040902060019055565b6114958282610ca3565b6108725760008281526065602090815260408083206001600160a01b03851684529091529020805460ff191660011790556114cd3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b61151b8282610ca3565b156108725760008281526065602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b600054610100900460ff1661159f5760405162461bcd60e51b815260040161085f90612465565b6115ab848484846117bc565b50505050565b6000816040516020016115c491906124b0565b60405160208183030381529060405280519060200120836040516020016115eb91906124b0565b6040516020818303038152906040528051906020012014905092915050565b015190565b60606106e16001600160a01b03831660145b606060006116308360026124cc565b61163b90600261232c565b6001600160401b0381111561165257611652611b76565b6040519080825280601f01601f19166020018201604052801561167c576020820181803683370190505b509050600360fc1b81600081518110611697576116976120ea565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106116c6576116c66120ea565b60200101906001600160f81b031916908160001a90535060006116ea8460026124cc565b6116f590600161232c565b90505b600181111561176d576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110611729576117296120ea565b1a60f81b82828151811061173f5761173f6120ea565b60200101906001600160f81b031916908160001a90535060049490941c93611766816124e3565b90506116f8565b5083156107a95760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161085f565b600054610100900460ff166117e35760405162461bcd60e51b815260040161085f90612465565b6117fb6000805160206124fb8339815191528061199b565b61182160008051602061251b8339815191526000805160206124fb83398151915261199b565b61184760008051602061253b8339815191526000805160206124fb83398151915261199b565b61186d60008051602061255b8339815191526000805160206124fb83398151915261199b565b6118856000805160206124fb833981519152306119e6565b6001600160a01b038116156118ac576118ac6000805160206124fb833981519152826119e6565b60005b835181101561191d576118e960008051602061251b8339815191528583815181106118dc576118dc6120ea565b60200260200101516119e6565b61190d60008051602061255b8339815191528583815181106118dc576118dc6120ea565b611916816121ba565b90506118af565b5060005b825181101561195e5761194e60008051602061253b8339815191528483815181106118dc576118dc6120ea565b611957816121ba565b9050611921565b5060988490556040805160008152602081018690527f11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d59101610eaa565b600082815260656020526040808220600101805490849055905190918391839186917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a4505050565b610872828261148b565b80356001600160a01b0381168114611a0757600080fd5b919050565b60008083601f840112611a1e57600080fd5b5081356001600160401b03811115611a3557600080fd5b602083019150836020828501011115611a4d57600080fd5b9250929050565b600080600080600080600060c0888a031215611a6f57600080fd5b611a78886119f0565b96506020880135955060408801356001600160401b03811115611a9a57600080fd5b611aa68a828b01611a0c565b989b979a50986060810135976080820135975060a09091013595509350505050565b600060208284031215611ada57600080fd5b81356001600160e01b0319811681146107a957600080fd5b60008060008060008060a08789031215611b0b57600080fd5b611b14876119f0565b95506020870135945060408701356001600160401b03811115611b3657600080fd5b611b4289828a01611a0c565b979a9699509760608101359660809091013595509350505050565b600060208284031215611b6f57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715611bb457611bb4611b76565b604052919050565b600082601f830112611bcd57600080fd5b81356001600160401b03811115611be657611be6611b76565b611bf9601f8201601f1916602001611b8c565b818152846020838601011115611c0e57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060808587031215611c4157600080fd5b611c4a856119f0565b9350611c58602086016119f0565b92506040850135915060608501356001600160401b03811115611c7a57600080fd5b611c8687828801611bbc565b91505092959194509250565b60008060408385031215611ca557600080fd5b82359150611cb5602084016119f0565b90509250929050565b60008083601f840112611cd057600080fd5b5081356001600160401b03811115611ce757600080fd5b6020830191508360208260051b8501011115611a4d57600080fd5b600080600080600080600080600060c08a8c031215611d2057600080fd5b89356001600160401b0380821115611d3757600080fd5b611d438d838e01611cbe565b909b50995060208c0135915080821115611d5c57600080fd5b611d688d838e01611cbe565b909950975060408c0135915080821115611d8157600080fd5b50611d8e8c828d01611cbe565b9a9d999c50979a969997986060880135976080810135975060a0013595509350505050565b60008060008060408587031215611dc957600080fd5b84356001600160401b0380821115611de057600080fd5b611dec88838901611a0c565b90965094506020870135915080821115611e0557600080fd5b50611e1287828801611a0c565b95989497509550505050565b60008060008060008060008060a0898b031215611e3a57600080fd5b88356001600160401b0380821115611e5157600080fd5b611e5d8c838d01611cbe565b909a50985060208b0135915080821115611e7657600080fd5b611e828c838d01611cbe565b909850965060408b0135915080821115611e9b57600080fd5b50611ea88b828c01611cbe565b999c989b509699959896976060870135966080013595509350505050565b600082601f830112611ed757600080fd5b813560206001600160401b03821115611ef257611ef2611b76565b8160051b611f01828201611b8c565b9283528481018201928281019087851115611f1b57600080fd5b83870192505b84831015611f3a57823582529183019190830190611f21565b979650505050505050565b600080600080600060a08688031215611f5d57600080fd5b611f66866119f0565b9450611f74602087016119f0565b935060408601356001600160401b0380821115611f9057600080fd5b611f9c89838a01611ec6565b94506060880135915080821115611fb257600080fd5b611fbe89838a01611ec6565b93506080880135915080821115611fd457600080fd5b50611fe188828901611bbc565b9150509295509295909350565b600080600080600060a0868803121561200657600080fd5b61200f866119f0565b945061201d602087016119f0565b9350604086013592506060860135915060808601356001600160401b0381111561204657600080fd5b611fe188828901611bbc565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60018060a01b038716815285602082015260a0604082015260006120a360a083018688612052565b60608301949094525060800152949350505050565b60018060a01b03851681528360208201526060604082015260006120e0606083018486612052565b9695505050505050565b634e487b7160e01b600052603260045260246000fd5b60208082526023908201527f54696d656c6f636b436f6e74726f6c6c65723a206c656e677468206d69736d616040820152620e8c6d60eb1b606082015260800190565b60006020828403121561215557600080fd5b6107a9826119f0565b6000808335601e1984360301811261217557600080fd5b8301803591506001600160401b0382111561218f57600080fd5b602001915036819003821315611a4d57600080fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016121cc576121cc6121a4565b5060010190565b6040815260006121e7604083018688612052565b8281036020840152611f3a818587612052565b81835260006020808501808196508560051b810191508460005b8781101561227e5782840389528135601e1988360301811261223557600080fd5b870185810190356001600160401b0381111561225057600080fd5b80360382131561225f57600080fd5b61226a868284612052565b9a87019a9550505090840190600101612214565b5091979650505050505050565b60a0808252810188905260008960c08301825b8b8110156122cc576001600160a01b036122b7846119f0565b1682526020928301929091019060010161229e565b5083810360208501528881526001600160fb1b038911156122ec57600080fd5b8860051b9150818a6020830137018281036020908101604085015261231490820187896121fa565b60608401959095525050608001529695505050505050565b808201808211156106e1576106e16121a4565b60005b8381101561235a578181015183820152602001612342565b50506000910152565b7f416363657373436f6e74726f6c3a206163636f756e742000000000000000000081526000835161239b81601785016020880161233f565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516123cc81602884016020880161233f565b01602801949350505050565b60208152600082518060208401526123f781604085016020870161233f565b601f01601f19169190910160400192915050565b6020808252602a908201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e206973604082015269206e6f7420726561647960b01b606082015260800190565b8183823760009101908152919050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b600082516124c281846020870161233f565b9190910192915050565b80820281158282048414176106e1576106e16121a4565b6000816124f2576124f26121a4565b50600019019056fe5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca5b09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc1d8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e63fd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f783a164736f6c6343000811000a", + Code: "6080604052600436106101d15760003560e01c80638129fc1c116100f7578063b1c5f42711610095578063d547741f11610064578063d547741f14610584578063e38335e5146105a4578063f23a6e61146105b7578063f27a0c92146105e357600080fd5b8063b1c5f427146104eb578063bc197c811461050b578063c4d252f514610537578063d45c44351461055757600080fd5b806391d14854116100d157806391d1485414610474578063a217fddf14610494578063ac431751146104a9578063b08e51c0146104c957600080fd5b80638129fc1c1461041d5780638f2a0bb0146104325780638f61f4f51461045257600080fd5b8063248a9ca31161016f57806336568abe1161013e57806336568abe1461039d578063584b153e146103bd57806364d62353146103dd5780638065657f146103fd57600080fd5b8063248a9ca3146102fd5780632ab0f5291461032d5780632f2ff15d1461035d57806331d507501461037d57600080fd5b80630d3cf6fc116101ab5780630d3cf6fc14610264578063134008d31461028657806313bc9f2014610299578063150b7a02146102b957600080fd5b806301d5062a146101dd57806301ffc9a7146101ff57806307bd02651461023457600080fd5b366101d857005b600080fd5b3480156101e957600080fd5b506101fd6101f8366004611a52565b6105f8565b005b34801561020b57600080fd5b5061021f61021a366004611ac6565b6106bc565b60405190151581526020015b60405180910390f35b34801561024057600080fd5b5061025660008051602061253983398151915281565b60405190815260200161022b565b34801561027057600080fd5b506102566000805160206124f983398151915281565b6101fd610294366004611af0565b6106e7565b3480156102a557600080fd5b5061021f6102b4366004611b5b565b61078a565b3480156102c557600080fd5b506102e46102d4366004611c29565b630a85bd0160e11b949350505050565b6040516001600160e01b0319909116815260200161022b565b34801561030957600080fd5b50610256610318366004611b5b565b60009081526065602052604090206001015490565b34801561033957600080fd5b5061021f610348366004611b5b565b60009081526097602052604090205460011490565b34801561036957600080fd5b506101fd610378366004611c90565b6107b0565b34801561038957600080fd5b5061021f610398366004611b5b565b6107da565b3480156103a957600080fd5b506101fd6103b8366004611c90565b6107f3565b3480156103c957600080fd5b5061021f6103d8366004611b5b565b610876565b3480156103e957600080fd5b506101fd6103f8366004611b5b565b61088d565b34801561040957600080fd5b50610256610418366004611af0565b610931565b34801561042957600080fd5b506101fd610970565b34801561043e57600080fd5b506101fd61044d366004611d00565b610b20565b34801561045e57600080fd5b5061025660008051602061251983398151915281565b34801561048057600080fd5b5061021f61048f366004611c90565b610ca1565b3480156104a057600080fd5b50610256600081565b3480156104b557600080fd5b506101fd6104c4366004611db1565b610ccc565b3480156104d557600080fd5b5061025660008051602061255983398151915281565b3480156104f757600080fd5b50610256610506366004611e1c565b610eb6565b34801561051757600080fd5b506102e4610526366004611f43565b63bc197c8160e01b95945050505050565b34801561054357600080fd5b506101fd610552366004611b5b565b610efb565b34801561056357600080fd5b50610256610572366004611b5b565b60009081526097602052604090205490565b34801561059057600080fd5b506101fd61059f366004611c90565b610fbe565b6101fd6105b2366004611e1c565b610fe3565b3480156105c357600080fd5b506102e46105d2366004611fec565b63f23a6e6160e01b95945050505050565b3480156105ef57600080fd5b50609854610256565b6000805160206125198339815191526106108161115b565b6000610620898989898989610931565b905061062c8184611165565b6000817f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8b8b8b8b8b8a60405161066896959493929190612079565b60405180910390a383156106b157807f20fda5fd27a1ea7bf5b9567f143ac5470bb059374a27e8f67cb44f946f6d0387856040516106a891815260200190565b60405180910390a25b505050505050505050565b60006001600160e01b03198216630271189760e51b14806106e157506106e182611254565b92915050565b600080516020612539833981519152610701816000610ca1565b61070f5761070f8133611289565b600061071f888888888888610931565b905061072b81856112e2565b6107378888888861137d565b6000817fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b588a8a8a8a60405161076f94939291906120b6565b60405180910390a361078081611450565b5050505050505050565b6000818152609760205260408120546001811180156107a95750428111155b9392505050565b6000828152606560205260409020600101546107cb8161115b565b6107d58383611489565b505050565b60008181526097602052604081205481905b1192915050565b6001600160a01b03811633146108685760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b610872828261150f565b5050565b6000818152609760205260408120546001906107ec565b3330146108f05760405162461bcd60e51b815260206004820152602b60248201527f54696d656c6f636b436f6e74726f6c6c65723a2063616c6c6572206d7573742060448201526a62652074696d656c6f636b60a81b606482015260840161085f565b60985460408051918252602082018390527f11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d5910160405180910390a1609855565b600086868686868660405160200161094e96959493929190612079565b6040516020818303038152906040528051906020012090509695505050505050565b600054610100900460ff16158080156109905750600054600160ff909116105b806109aa5750303b1580156109aa575060005460ff166001145b610a0d5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161085f565b6000805460ff191660011790558015610a30576000805461ff0019166101001790555b334114610a505760405163022d8c9560e31b815260040160405180910390fd5b3a15610a6f576040516383f1b1d360e01b815260040160405180910390fd5b6040805160018082528183019092526000916020808301908036833701905050905061200481600081518110610aa757610aa76120e8565b60200260200101906001600160a01b031690816001600160a01b031681525050610ad6603c8283612004611576565b508015610b1d576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b600080516020612519833981519152610b388161115b565b888714610b575760405162461bcd60e51b815260040161085f906120fe565b888514610b765760405162461bcd60e51b815260040161085f906120fe565b6000610b888b8b8b8b8b8b8b8b610eb6565b9050610b948184611165565b60005b8a811015610c525780827f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8e8e85818110610bd457610bd46120e8565b9050602002016020810190610be99190612141565b8d8d86818110610bfb57610bfb6120e8565b905060200201358c8c87818110610c1457610c146120e8565b9050602002810190610c26919061215c565b8c8b604051610c3a96959493929190612079565b60405180910390a3610c4b816121b8565b9050610b97565b508315610c9457807f20fda5fd27a1ea7bf5b9567f143ac5470bb059374a27e8f67cb44f946f6d038785604051610c8b91815260200190565b60405180910390a25b5050505050505050505050565b60009182526065602090815260408084206001600160a01b0393909316845291905290205460ff1690565b3361100714610cf257604051630f22c43960e41b8152611007600482015260240161085f565b610d55604051806040016040528060088152602001676d696e44656c617960c01b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506115af9050565b15610e525760208114610d835783838383604051630a5a604160e01b815260040161085f94939291906121d1565b604080516020601f8401819004810282018101909252828152600091610dc49185858083850183828082843760009201919091525092939250506116089050565b9050801580610dd557506212750081115b15610dfb5784848484604051630a5a604160e01b815260040161085f94939291906121d1565b6040516364d6235360e01b81526004810182905230906364d6235390602401600060405180830381600087803b158015610e3457600080fd5b505af1158015610e48573d6000803e3d6000fd5b5050505050610e73565b838383836040516325ee20d560e21b815260040161085f94939291906121d1565b7ff1ce9b2cbf50eeb05769a29e2543fd350cab46894a7dd9978a12d534bb20e63384848484604051610ea894939291906121d1565b60405180910390a150505050565b60008888888888888888604051602001610ed7989796959493929190612289565b60405160208183030381529060405280519060200120905098975050505050505050565b600080516020612559833981519152610f138161115b565b610f1c82610876565b610f825760405162461bcd60e51b815260206004820152603160248201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e2063616044820152701b9b9bdd0818994818d85b98d95b1b1959607a1b606482015260840161085f565b6000828152609760205260408082208290555183917fbaa1eb22f2a492ba1a5fea61b8df4d27c6c8b5f3971e63bb58fa14ff72eedb7091a25050565b600082815260656020526040902060010154610fd98161115b565b6107d5838361150f565b600080516020612539833981519152610ffd816000610ca1565b61100b5761100b8133611289565b87861461102a5760405162461bcd60e51b815260040161085f906120fe565b8784146110495760405162461bcd60e51b815260040161085f906120fe565b600061105b8a8a8a8a8a8a8a8a610eb6565b905061106781856112e2565b60005b898110156111455760008b8b83818110611086576110866120e8565b905060200201602081019061109b9190612141565b905060008a8a848181106110b1576110b16120e8565b9050602002013590503660008a8a868181106110cf576110cf6120e8565b90506020028101906110e1919061215c565b915091506110f18484848461137d565b84867fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b588686868660405161112894939291906120b6565b60405180910390a3505050508061113e906121b8565b905061106a565b5061114f81611450565b50505050505050505050565b610b1d8133611289565b61116e826107da565b156111d35760405162461bcd60e51b815260206004820152602f60248201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e20616c60448201526e1c9958591e481cd8da19591d5b1959608a1b606482015260840161085f565b6098548110156112345760405162461bcd60e51b815260206004820152602660248201527f54696d656c6f636b436f6e74726f6c6c65723a20696e73756666696369656e746044820152652064656c617960d01b606482015260840161085f565b61123e814261232a565b6000928352609760205260409092209190915550565b60006001600160e01b03198216637965db0b60e01b14806106e157506301ffc9a760e01b6001600160e01b03198316146106e1565b6112938282610ca1565b610872576112a08161160d565b6112ab83602061161f565b6040516020016112bc929190612361565b60408051601f198184030181529082905262461bcd60e51b825261085f916004016123d6565b6112eb8261078a565b6113075760405162461bcd60e51b815260040161085f90612409565b80158061132257506000818152609760205260409020546001145b6108725760405162461bcd60e51b815260206004820152602660248201527f54696d656c6f636b436f6e74726f6c6c65723a206d697373696e6720646570656044820152656e64656e637960d01b606482015260840161085f565b6000846001600160a01b031684848460405161139a929190612453565b60006040518083038185875af1925050503d80600081146113d7576040519150601f19603f3d011682016040523d82523d6000602084013e6113dc565b606091505b50509050806114495760405162461bcd60e51b815260206004820152603360248201527f54696d656c6f636b436f6e74726f6c6c65723a20756e6465726c79696e6720746044820152721c985b9cd858dd1a5bdb881c995d995c9d1959606a1b606482015260840161085f565b5050505050565b6114598161078a565b6114755760405162461bcd60e51b815260040161085f90612409565b600090815260976020526040902060019055565b6114938282610ca1565b6108725760008281526065602090815260408083206001600160a01b03851684529091529020805460ff191660011790556114cb3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6115198282610ca1565b156108725760008281526065602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b600054610100900460ff1661159d5760405162461bcd60e51b815260040161085f90612463565b6115a9848484846117ba565b50505050565b6000816040516020016115c291906124ae565b60405160208183030381529060405280519060200120836040516020016115e991906124ae565b6040516020818303038152906040528051906020012014905092915050565b015190565b60606106e16001600160a01b03831660145b6060600061162e8360026124ca565b61163990600261232a565b6001600160401b0381111561165057611650611b74565b6040519080825280601f01601f19166020018201604052801561167a576020820181803683370190505b509050600360fc1b81600081518110611695576116956120e8565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106116c4576116c46120e8565b60200101906001600160f81b031916908160001a90535060006116e88460026124ca565b6116f390600161232a565b90505b600181111561176b576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110611727576117276120e8565b1a60f81b82828151811061173d5761173d6120e8565b60200101906001600160f81b031916908160001a90535060049490941c93611764816124e1565b90506116f6565b5083156107a95760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161085f565b600054610100900460ff166117e15760405162461bcd60e51b815260040161085f90612463565b6117f96000805160206124f983398151915280611999565b61181f6000805160206125198339815191526000805160206124f9833981519152611999565b6118456000805160206125398339815191526000805160206124f9833981519152611999565b61186b6000805160206125598339815191526000805160206124f9833981519152611999565b6118836000805160206124f9833981519152306119e4565b6001600160a01b038116156118aa576118aa6000805160206124f9833981519152826119e4565b60005b835181101561191b576118e76000805160206125198339815191528583815181106118da576118da6120e8565b60200260200101516119e4565b61190b6000805160206125598339815191528583815181106118da576118da6120e8565b611914816121b8565b90506118ad565b5060005b825181101561195c5761194c6000805160206125398339815191528483815181106118da576118da6120e8565b611955816121b8565b905061191f565b5060988490556040805160008152602081018690527f11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d59101610ea8565b600082815260656020526040808220600101805490849055905190918391839186917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a4505050565b6108728282611489565b80356001600160a01b0381168114611a0557600080fd5b919050565b60008083601f840112611a1c57600080fd5b5081356001600160401b03811115611a3357600080fd5b602083019150836020828501011115611a4b57600080fd5b9250929050565b600080600080600080600060c0888a031215611a6d57600080fd5b611a76886119ee565b96506020880135955060408801356001600160401b03811115611a9857600080fd5b611aa48a828b01611a0a565b989b979a50986060810135976080820135975060a09091013595509350505050565b600060208284031215611ad857600080fd5b81356001600160e01b0319811681146107a957600080fd5b60008060008060008060a08789031215611b0957600080fd5b611b12876119ee565b95506020870135945060408701356001600160401b03811115611b3457600080fd5b611b4089828a01611a0a565b979a9699509760608101359660809091013595509350505050565b600060208284031215611b6d57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715611bb257611bb2611b74565b604052919050565b600082601f830112611bcb57600080fd5b81356001600160401b03811115611be457611be4611b74565b611bf7601f8201601f1916602001611b8a565b818152846020838601011115611c0c57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060808587031215611c3f57600080fd5b611c48856119ee565b9350611c56602086016119ee565b92506040850135915060608501356001600160401b03811115611c7857600080fd5b611c8487828801611bba565b91505092959194509250565b60008060408385031215611ca357600080fd5b82359150611cb3602084016119ee565b90509250929050565b60008083601f840112611cce57600080fd5b5081356001600160401b03811115611ce557600080fd5b6020830191508360208260051b8501011115611a4b57600080fd5b600080600080600080600080600060c08a8c031215611d1e57600080fd5b89356001600160401b0380821115611d3557600080fd5b611d418d838e01611cbc565b909b50995060208c0135915080821115611d5a57600080fd5b611d668d838e01611cbc565b909950975060408c0135915080821115611d7f57600080fd5b50611d8c8c828d01611cbc565b9a9d999c50979a969997986060880135976080810135975060a0013595509350505050565b60008060008060408587031215611dc757600080fd5b84356001600160401b0380821115611dde57600080fd5b611dea88838901611a0a565b90965094506020870135915080821115611e0357600080fd5b50611e1087828801611a0a565b95989497509550505050565b60008060008060008060008060a0898b031215611e3857600080fd5b88356001600160401b0380821115611e4f57600080fd5b611e5b8c838d01611cbc565b909a50985060208b0135915080821115611e7457600080fd5b611e808c838d01611cbc565b909850965060408b0135915080821115611e9957600080fd5b50611ea68b828c01611cbc565b999c989b509699959896976060870135966080013595509350505050565b600082601f830112611ed557600080fd5b813560206001600160401b03821115611ef057611ef0611b74565b8160051b611eff828201611b8a565b9283528481018201928281019087851115611f1957600080fd5b83870192505b84831015611f3857823582529183019190830190611f1f565b979650505050505050565b600080600080600060a08688031215611f5b57600080fd5b611f64866119ee565b9450611f72602087016119ee565b935060408601356001600160401b0380821115611f8e57600080fd5b611f9a89838a01611ec4565b94506060880135915080821115611fb057600080fd5b611fbc89838a01611ec4565b93506080880135915080821115611fd257600080fd5b50611fdf88828901611bba565b9150509295509295909350565b600080600080600060a0868803121561200457600080fd5b61200d866119ee565b945061201b602087016119ee565b9350604086013592506060860135915060808601356001600160401b0381111561204457600080fd5b611fdf88828901611bba565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60018060a01b038716815285602082015260a0604082015260006120a160a083018688612050565b60608301949094525060800152949350505050565b60018060a01b03851681528360208201526060604082015260006120de606083018486612050565b9695505050505050565b634e487b7160e01b600052603260045260246000fd5b60208082526023908201527f54696d656c6f636b436f6e74726f6c6c65723a206c656e677468206d69736d616040820152620e8c6d60eb1b606082015260800190565b60006020828403121561215357600080fd5b6107a9826119ee565b6000808335601e1984360301811261217357600080fd5b8301803591506001600160401b0382111561218d57600080fd5b602001915036819003821315611a4b57600080fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016121ca576121ca6121a2565b5060010190565b6040815260006121e5604083018688612050565b8281036020840152611f38818587612050565b81835260006020808501808196508560051b810191508460005b8781101561227c5782840389528135601e1988360301811261223357600080fd5b870185810190356001600160401b0381111561224e57600080fd5b80360382131561225d57600080fd5b612268868284612050565b9a87019a9550505090840190600101612212565b5091979650505050505050565b60a0808252810188905260008960c08301825b8b8110156122ca576001600160a01b036122b5846119ee565b1682526020928301929091019060010161229c565b5083810360208501528881526001600160fb1b038911156122ea57600080fd5b8860051b9150818a6020830137018281036020908101604085015261231290820187896121f8565b60608401959095525050608001529695505050505050565b808201808211156106e1576106e16121a2565b60005b83811015612358578181015183820152602001612340565b50506000910152565b7f416363657373436f6e74726f6c3a206163636f756e742000000000000000000081526000835161239981601785016020880161233d565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516123ca81602884016020880161233d565b01602801949350505050565b60208152600082518060208401526123f581604085016020870161233d565b601f01601f19169190910160400192915050565b6020808252602a908201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e206973604082015269206e6f7420726561647960b01b606082015260800190565b8183823760009101908152919050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b600082516124c081846020870161233d565b9190910192915050565b80820281158282048414176106e1576106e16121a2565b6000816124f0576124f06121a2565b50600019019056fe5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca5b09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc1d8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e63fd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f783a164736f6c6343000811000a", }, { ContractAddr: common.HexToAddress(TokenRecoverPortalContract), CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/cfc0bd1127186a917ddc38fd38d22903034d3f0b", - Code: "608060405234801561001057600080fd5b50600436106100a95760003560e01c80639fcb5012116100715780639fcb50121461012f578063ac4317511461014c578063bfb5a6a11461015f578063de88700b14610172578063e33f8d321461019d578063f4b88300146101c057600080fd5b8063046f7da2146100ae5780632eb4a7ab146100b85780634c335368146100d4578063572c9980146101145780638456cb5914610127575b600080fd5b6100b66101d3565b005b6100c160345481565b6040519081526020015b60405180910390f35b6101076040518060400160405280601481526020017342696e616e63652d436861696e2d47616e67657360601b81525081565b6040516100cb91906113eb565b6100b661012236600461141e565b610236565b6100b66102c7565b60355461013c9060ff1681565b60405190151581526020016100cb565b6100b661015a36600461149c565b610330565b6100b661016d36600461154d565b610756565b603754610185906001600160a01b031681565b6040516001600160a01b0390911681526020016100cb565b61013c6101ab366004611627565b60009081526036602052604090205460ff1690565b603354610185906001600160a01b031681565b6037546001600160a01b031633146101fe5760405163f2771a9960e01b815260040160405180910390fd5b6037805460ff60a01b191690556040517f62451d457bc659158be6e6247f56ec1df424a5c7597f71c20c2bc44e0965c8f990600090a1565b6037546001600160a01b031633146102615760405163f2771a9960e01b815260040160405180910390fd5b604051638525db0360e01b8152600481018390526001600160a01b038216602482015261100490638525db0390604401600060405180830381600087803b1580156102ab57600080fd5b505af11580156102bf573d6000803e3d6000fd5b505050505050565b6037546001600160a01b031633146102f25760405163f2771a9960e01b815260040160405180910390fd5b6037805460ff60a01b1916600160a01b1790556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e75290600090a1565b336110071461035b57604051630f22c43960e41b815261100760048201526024015b60405180910390fd5b6103c56040518060400160405280600f81526020016e617070726f7665724164647265737360881b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610a989050565b1561048d57601481146103f35783838383604051630a5a604160e01b81526004016103529493929190611669565b600061043783838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060149250610af2915050565b90506001600160a01b0381166104685784848484604051630a5a604160e01b81526004016103529493929190611669565b603380546001600160a01b0319166001600160a01b0392909216919091179055610713565b6104f26040518060400160405280600a8152602001691b595c9adb19549bdbdd60b21b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610a989050565b156105bf5760355460ff161561051b576040516379b3306f60e11b815260040160405180910390fd5b602081146105445783838383604051630a5a604160e01b81526004016103529493929190611669565b604080516020601f840181900481028201810190925282815260009161058491858580838501838280828437600092019190915250869250610af7915050565b806105aa5784848484604051630a5a604160e01b81526004016103529493929190611669565b6034556035805460ff19166001179055610713565b6106286040518060400160405280600e81526020016d30b9b9b2ba283937ba32b1ba37b960911b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610a989050565b156106f257601481146106565783838383604051630a5a604160e01b81526004016103529493929190611669565b600061069c601484848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610af29050565b90506001600160a01b0381166106cd5784848484604051630a5a604160e01b81526004016103529493929190611669565b603780546001600160a01b0319166001600160a01b0392909216919091179055610713565b838383836040516325ee20d560e21b81526004016103529493929190611669565b7ff1ce9b2cbf50eeb05769a29e2543fd350cab46894a7dd9978a12d534bb20e633848484846040516107489493929190611669565b60405180910390a150505050565b60355460ff1661077957604051635740729760e01b815260040160405180910390fd5b60345461079957604051635740729760e01b815260040160405180910390fd5b603754600160a01b900460ff16156107c45760405163c629ac8160e01b815260040160405180910390fd5b6107cc610b06565b600061085a89898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8d018190048102820181019092528b815292508b91508a9081908401838280828437600081840152601f19601f820116905080830192505050505050506108558e8e33610b5f565b610c80565b90506000818c8c6040516020016108739392919061169b565b6040516020818303038152906040528051906020012090506108a48160009081526036602052604090205460ff1690565b156108c157604051623e493160e81b815260040160405180910390fd5b6109693389898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8d018190048102820181019092528b815292508b91508a908190840183828082843760009201919091525050604080516020808c0282810182019093528b82528994509092508b918b91829190850190849080828437600092019190915250610d7492505050565b6109aa848480806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250506034549150849050610e7f565b6109c7576040516309bde33960e01b815260040160405180910390fd5b60008181526036602052604090819020805460ff191660011790555163799758b960e01b8152600481018d9052336024820152604481018c90526110049063799758b990606401600060405180830381600087803b158015610a2857600080fd5b505af1158015610a3c573d6000803e3d6000fd5b5050604080518f81523360208201529081018e90527f717c40d7a8dbe67bb6371e964c24423645711d1624980e1c74e6956fc21088059250606001905060405180910390a15050610a8c60018055565b50505050505050505050565b600081604051602001610aab91906116c2565b6040516020818303038152906040528051906020012083604051602001610ad291906116c2565b604051602081830303815290604052805190602001201490505b92915050565b015190565b91018082526020908101910152565b600260015403610b585760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610352565b6002600155565b600060026040518060400160405280601481526020017342696e616e63652d436861696e2d47616e67657360601b815250610bbc85604051602001610ba691815260200190565b6040516020818303038152906040526000610e95565b6040516bffffffffffffffffffffffff19606087901b166020820152610bf5906034016040516020818303038152906040526001610e95565b610c0b88604051602001610ba691815260200190565b604051602001610c1e94939291906116de565b60408051601f1981840301815290829052610c38916116c2565b602060405180830381855afa158015610c55573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610c78919061180d565b949350505050565b60608351602114610ca457604051638152ea1b60e01b815260040160405180910390fd5b8251604014610cc657604051635e4bd79760e11b815260040160405180910390fd5b60408051608180825260c08201909252600091602082018180368337019050509050610cf6818660006021611067565b610d04818560216040611067565b610d338184604051602001610d1b91815260200190565b60405160208183030381529060405260616020611067565b604080516014808252818301909252600091602082018180368337019050509050815160148282856069600019fa610d6a57600080fd5b5095945050505050565b606060005b8251811015610dd25781838281518110610d9557610d9561183c565b6020026020010151604051602001610dae929190611852565b60405160208183030381529060405291508080610dca9061188a565b915050610d79565b5060006040518060400160405280601481526020017342696e616e63652d436861696e2d47616e67657360601b81525087878660345486604051602001610e1e969594939291906118a3565b60408051601f1981840301815291905280516020909101206033549091506001600160a01b0316610e4f82876110de565b6001600160a01b031614610e7657604051636eb5c6cb60e11b815260040160405180910390fd5b50505050505050565b600082610e8c85846110fa565b14949350505050565b6060600083516002610ea79190611914565b67ffffffffffffffff811115610ebf57610ebf611826565b6040519080825280601f01601f191660200182016040528015610ee9576020820181803683370190505b5060408051808201909152601081526f181899199a1a9b1b9c1cb0b131b232b360811b602082015290915060005b855181101561102f57818251878381518110610f3557610f3561183c565b0160200151610f47919060f81c611941565b81518110610f5757610f5761183c565b01602001516001600160f81b03191683610f72836002611914565b81518110610f8257610f8261183c565b60200101906001600160f81b031916908160001a905350818251878381518110610fae57610fae61183c565b0160200151610fc0919060f81c611955565b81518110610fd057610fd061183c565b01602001516001600160f81b03191683610feb836002611914565b610ff6906001611969565b815181106110065761100661183c565b60200101906001600160f81b031916908160001a905350806110278161188a565b915050610f17565b50831561105f5781604051602001611047919061197c565b60405160208183030381529060405292505050610aec565b509392505050565b60005b818110156110d7578381815181106110845761108461183c565b01602001516001600160f81b031916858461109e8161188a565b9550815181106110b0576110b061183c565b60200101906001600160f81b031916908160001a9053506110d08161188a565b905061106a565b5050505050565b60008060006110ed858561113f565b9150915061105f81611184565b600081815b845181101561105f5761112b8286838151811061111e5761111e61183c565b60200260200101516112d1565b9150806111378161188a565b9150506110ff565b60008082516041036111755760208301516040840151606085015160001a61116987828585611303565b9450945050505061117d565b506000905060025b9250929050565b6000816004811115611198576111986119a6565b036111a05750565b60018160048111156111b4576111b46119a6565b036112015760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610352565b6002816004811115611215576112156119a6565b036112625760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610352565b6003816004811115611276576112766119a6565b036112ce5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610352565b50565b60008183106112ed5760008281526020849052604090206112fc565b60008381526020839052604090205b9392505050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561133a57506000905060036113be565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa15801561138e573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166113b7576000600192509250506113be565b9150600090505b94509492505050565b60005b838110156113e25781810151838201526020016113ca565b50506000910152565b602081526000825180602084015261140a8160408501602087016113c7565b601f01601f19169190910160400192915050565b6000806040838503121561143157600080fd5b8235915060208301356001600160a01b038116811461144f57600080fd5b809150509250929050565b60008083601f84011261146c57600080fd5b50813567ffffffffffffffff81111561148457600080fd5b60208301915083602082850101111561117d57600080fd5b600080600080604085870312156114b257600080fd5b843567ffffffffffffffff808211156114ca57600080fd5b6114d68883890161145a565b909650945060208701359150808211156114ef57600080fd5b506114fc8782880161145a565b95989497509550505050565b60008083601f84011261151a57600080fd5b50813567ffffffffffffffff81111561153257600080fd5b6020830191508360208260051b850101111561117d57600080fd5b60008060008060008060008060008060c08b8d03121561156c57600080fd5b8a35995060208b0135985060408b013567ffffffffffffffff8082111561159257600080fd5b61159e8e838f0161145a565b909a50985060608d01359150808211156115b757600080fd5b6115c38e838f0161145a565b909850965060808d01359150808211156115dc57600080fd5b6115e88e838f0161145a565b909650945060a08d013591508082111561160157600080fd5b5061160e8d828e01611508565b915080935050809150509295989b9194979a5092959850565b60006020828403121561163957600080fd5b5035919050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60408152600061167d604083018688611640565b8281036020840152611690818587611640565b979650505050505050565b600084516116ad8184602089016113c7565b91909101928352506020820152604001919050565b600082516116d48184602087016113c7565b9190910192915050565b7f7b226163636f756e745f6e756d626572223a2230222c22636861696e5f6964228152611d1160f11b602082015260008551611721816022850160208a016113c7565b7f222c2264617461223a6e756c6c2c226d656d6f223a22222c226d736773223a5b6022918401918201526a3d9130b6b7bab73a111d1160a91b6042820152855161177281604d840160208a016113c7565b6e1116113932b1b4b834b2b73a111d1160891b604d929091019182015284516117a281605c8401602089016113c7565b711116113a37b5b2b72fb9bcb6b137b6111d1160711b605c929091019182015283516117d581606e8401602088016113c7565b7f227d5d2c2273657175656e6365223a2230222c22736f75726365223a2230227d606e9290910191820152608e019695505050505050565b60006020828403121561181f57600080fd5b5051919050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b600083516118648184602088016113c7565b9190910191825250602001919050565b634e487b7160e01b600052601160045260246000fd5b60006001820161189c5761189c611874565b5060010190565b600087516118b5818460208c016113c7565b606088901b6bffffffffffffffffffffffff191690830190815286516118e2816014840160208b016113c7565b01601481018690526034810185905283516119048160548401602088016113c7565b0160540198975050505050505050565b8082028115828204841417610aec57610aec611874565b634e487b7160e01b600052601260045260246000fd5b6000826119505761195061192b565b500490565b6000826119645761196461192b565b500690565b80820180821115610aec57610aec611874565b61060f60f31b8152600082516119998160028501602087016113c7565b9190910160020192915050565b634e487b7160e01b600052602160045260246000fdfea164736f6c6343000811000a", + Code: "608060405234801561001057600080fd5b50600436106100a95760003560e01c80639fcb5012116100715780639fcb50121461012f578063ac4317511461014c578063bfb5a6a11461015f578063de88700b14610172578063e33f8d321461019d578063e842426a146101c057600080fd5b8063046f7da2146100ae5780632eb4a7ab146100b8578063572c9980146100d457806374be2150146100e75780638456cb5914610127575b600080fd5b6100b66101d3565b005b6100c160345481565b6040519081526020015b60405180910390f35b6100b66100e23660046113c9565b610236565b61011a6040518060400160405280601481526020017342696e616e63652d436861696e2d47616e67657360601b81525081565b6040516100cb9190611429565b6100b66102c7565b60355461013c9060ff1681565b60405190151581526020016100cb565b6100b661015a36600461149e565b610330565b6100b661016d36600461154f565b610758565b603754610185906001600160a01b031681565b6040516001600160a01b0390911681526020016100cb565b61013c6101ab366004611629565b60009081526036602052604090205460ff1690565b603354610185906001600160a01b031681565b6037546001600160a01b031633146101fe5760405163f2771a9960e01b815260040160405180910390fd5b6037805460ff60a01b191690556040517f62451d457bc659158be6e6247f56ec1df424a5c7597f71c20c2bc44e0965c8f990600090a1565b6037546001600160a01b031633146102615760405163f2771a9960e01b815260040160405180910390fd5b604051638525db0360e01b8152600481018390526001600160a01b038216602482015261100490638525db0390604401600060405180830381600087803b1580156102ab57600080fd5b505af11580156102bf573d6000803e3d6000fd5b505050505050565b6037546001600160a01b031633146102f25760405163f2771a9960e01b815260040160405180910390fd5b6037805460ff60a01b1916600160a01b1790556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e75290600090a1565b336110071461035b57604051630f22c43960e41b815261100760048201526024015b60405180910390fd5b6103c56040518060400160405280600f81526020016e617070726f76616c4164647265737360881b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610a9a9050565b1561048f57601481146103f35783838383604051630a5a604160e01b8152600401610352949392919061166b565b6000610439601484848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610af49050565b90506001600160a01b03811661046a5784848484604051630a5a604160e01b8152600401610352949392919061166b565b603380546001600160a01b0319166001600160a01b0392909216919091179055610715565b6104f46040518060400160405280600a8152602001691b595c9adb19549bdbdd60b21b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610a9a9050565b156105c15760355460ff161561051d576040516379b3306f60e11b815260040160405180910390fd5b602081146105465783838383604051630a5a604160e01b8152600401610352949392919061166b565b604080516020601f840181900481028201810190925282815260009161058691858580838501838280828437600092019190915250869250610af9915050565b806105ac5784848484604051630a5a604160e01b8152600401610352949392919061166b565b6034556035805460ff19166001179055610715565b61062a6040518060400160405280600e81526020016d30b9b9b2ba283937ba32b1ba37b960911b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610a9a9050565b156106f457601481146106585783838383604051630a5a604160e01b8152600401610352949392919061166b565b600061069e601484848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610af49050565b90506001600160a01b0381166106cf5784848484604051630a5a604160e01b8152600401610352949392919061166b565b603780546001600160a01b0319166001600160a01b0392909216919091179055610715565b838383836040516325ee20d560e21b8152600401610352949392919061166b565b7ff1ce9b2cbf50eeb05769a29e2543fd350cab46894a7dd9978a12d534bb20e6338484848460405161074a949392919061166b565b60405180910390a150505050565b60355460ff1661077b57604051635740729760e01b815260040160405180910390fd5b60345461079b57604051635740729760e01b815260040160405180910390fd5b603754600160a01b900460ff16156107c65760405163c629ac8160e01b815260040160405180910390fd5b6107ce610b08565b600061085c89898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8d018190048102820181019092528b815292508b91508a9081908401838280828437600081840152601f19601f820116905080830192505050505050506108578e8e33610b61565b610c82565b90506000818c8c6040516020016108759392919061169d565b6040516020818303038152906040528051906020012090506108a68160009081526036602052604090205460ff1690565b156108c357604051623e493160e81b815260040160405180910390fd5b61096b3389898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8d018190048102820181019092528b815292508b91508a908190840183828082843760009201919091525050604080516020808c0282810182019093528b82528994509092508b918b91829190850190849080828437600092019190915250610d7692505050565b6109ac848480806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250506034549150849050610e81565b6109c9576040516309bde33960e01b815260040160405180910390fd5b60008181526036602052604090819020805460ff191660011790555163799758b960e01b8152600481018d9052336024820152604481018c90526110049063799758b990606401600060405180830381600087803b158015610a2a57600080fd5b505af1158015610a3e573d6000803e3d6000fd5b5050604080518f81523360208201529081018e90527f717c40d7a8dbe67bb6371e964c24423645711d1624980e1c74e6956fc21088059250606001905060405180910390a15050610a8e60018055565b50505050505050505050565b600081604051602001610aad91906116c4565b6040516020818303038152906040528051906020012083604051602001610ad491906116c4565b604051602081830303815290604052805190602001201490505b92915050565b015190565b91018082526020908101910152565b600260015403610b5a5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610352565b6002600155565b600060026040518060400160405280601481526020017342696e616e63652d436861696e2d47616e67657360601b815250610bbe85604051602001610ba891815260200190565b6040516020818303038152906040526000610e97565b6040516bffffffffffffffffffffffff19606087901b166020820152610bf7906034016040516020818303038152906040526001610e97565b610c0d88604051602001610ba891815260200190565b604051602001610c2094939291906116e0565b60408051601f1981840301815290829052610c3a916116c4565b602060405180830381855afa158015610c57573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610c7a919061180f565b949350505050565b60608351602114610ca657604051638152ea1b60e01b815260040160405180910390fd5b8251604014610cc857604051635e4bd79760e11b815260040160405180910390fd5b60408051608180825260c08201909252600091602082018180368337019050509050610cf8818660006021611069565b610d06818560216040611069565b610d358184604051602001610d1d91815260200190565b60405160208183030381529060405260616020611069565b604080516014808252818301909252600091602082018180368337019050509050815160148282856069600019fa610d6c57600080fd5b5095945050505050565b606060005b8251811015610dd45781838281518110610d9757610d9761183e565b6020026020010151604051602001610db0929190611854565b60405160208183030381529060405291508080610dcc9061188c565b915050610d7b565b5060006040518060400160405280601481526020017342696e616e63652d436861696e2d47616e67657360601b81525087878660345486604051602001610e20969594939291906118a5565b60408051601f1981840301815291905280516020909101206033549091506001600160a01b0316610e5182876110e0565b6001600160a01b031614610e78576040516356b00a4f60e11b815260040160405180910390fd5b50505050505050565b600082610e8e85846110fc565b14949350505050565b6060600083516002610ea99190611916565b67ffffffffffffffff811115610ec157610ec1611828565b6040519080825280601f01601f191660200182016040528015610eeb576020820181803683370190505b5060408051808201909152601081526f181899199a1a9b1b9c1cb0b131b232b360811b602082015290915060005b855181101561103157818251878381518110610f3757610f3761183e565b0160200151610f49919060f81c611943565b81518110610f5957610f5961183e565b01602001516001600160f81b03191683610f74836002611916565b81518110610f8457610f8461183e565b60200101906001600160f81b031916908160001a905350818251878381518110610fb057610fb061183e565b0160200151610fc2919060f81c611957565b81518110610fd257610fd261183e565b01602001516001600160f81b03191683610fed836002611916565b610ff890600161196b565b815181106110085761100861183e565b60200101906001600160f81b031916908160001a905350806110298161188c565b915050610f19565b5083156110615781604051602001611049919061197e565b60405160208183030381529060405292505050610aee565b509392505050565b60005b818110156110d9578381815181106110865761108661183e565b01602001516001600160f81b03191685846110a08161188c565b9550815181106110b2576110b261183e565b60200101906001600160f81b031916908160001a9053506110d28161188c565b905061106c565b5050505050565b60008060006110ef8585611141565b9150915061106181611186565b600081815b84518110156110615761112d828683815181106111205761112061183e565b60200260200101516112d3565b9150806111398161188c565b915050611101565b60008082516041036111775760208301516040840151606085015160001a61116b87828585611305565b9450945050505061117f565b506000905060025b9250929050565b600081600481111561119a5761119a6119a8565b036111a25750565b60018160048111156111b6576111b66119a8565b036112035760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610352565b6002816004811115611217576112176119a8565b036112645760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610352565b6003816004811115611278576112786119a8565b036112d05760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610352565b50565b60008183106112ef5760008281526020849052604090206112fe565b60008381526020839052604090205b9392505050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561133c57506000905060036113c0565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611390573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166113b9576000600192509250506113c0565b9150600090505b94509492505050565b600080604083850312156113dc57600080fd5b8235915060208301356001600160a01b03811681146113fa57600080fd5b809150509250929050565b60005b83811015611420578181015183820152602001611408565b50506000910152565b6020815260008251806020840152611448816040850160208701611405565b601f01601f19169190910160400192915050565b60008083601f84011261146e57600080fd5b50813567ffffffffffffffff81111561148657600080fd5b60208301915083602082850101111561117f57600080fd5b600080600080604085870312156114b457600080fd5b843567ffffffffffffffff808211156114cc57600080fd5b6114d88883890161145c565b909650945060208701359150808211156114f157600080fd5b506114fe8782880161145c565b95989497509550505050565b60008083601f84011261151c57600080fd5b50813567ffffffffffffffff81111561153457600080fd5b6020830191508360208260051b850101111561117f57600080fd5b60008060008060008060008060008060c08b8d03121561156e57600080fd5b8a35995060208b0135985060408b013567ffffffffffffffff8082111561159457600080fd5b6115a08e838f0161145c565b909a50985060608d01359150808211156115b957600080fd5b6115c58e838f0161145c565b909850965060808d01359150808211156115de57600080fd5b6115ea8e838f0161145c565b909650945060a08d013591508082111561160357600080fd5b506116108d828e0161150a565b915080935050809150509295989b9194979a5092959850565b60006020828403121561163b57600080fd5b5035919050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60408152600061167f604083018688611642565b8281036020840152611692818587611642565b979650505050505050565b600084516116af818460208901611405565b91909101928352506020820152604001919050565b600082516116d6818460208701611405565b9190910192915050565b7f7b226163636f756e745f6e756d626572223a2230222c22636861696e5f6964228152611d1160f11b602082015260008551611723816022850160208a01611405565b7f222c2264617461223a6e756c6c2c226d656d6f223a22222c226d736773223a5b6022918401918201526a3d9130b6b7bab73a111d1160a91b6042820152855161177481604d840160208a01611405565b6e1116113932b1b4b834b2b73a111d1160891b604d929091019182015284516117a481605c840160208901611405565b711116113a37b5b2b72fb9bcb6b137b6111d1160711b605c929091019182015283516117d781606e840160208801611405565b7f227d5d2c2273657175656e6365223a2230222c22736f75726365223a2230227d606e9290910191820152608e019695505050505050565b60006020828403121561182157600080fd5b5051919050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60008351611866818460208801611405565b9190910191825250602001919050565b634e487b7160e01b600052601160045260246000fd5b60006001820161189e5761189e611876565b5060010190565b600087516118b7818460208c01611405565b606088901b6bffffffffffffffffffffffff191690830190815286516118e4816014840160208b01611405565b0160148101869052603481018590528351611906816054840160208801611405565b0160540198975050505050505050565b8082028115828204841417610aee57610aee611876565b634e487b7160e01b600052601260045260246000fd5b6000826119525761195261192d565b500490565b6000826119665761196661192d565b500690565b80820180821115610aee57610aee611876565b61060f60f31b81526000825161199b816002850160208701611405565b9190910160020192915050565b634e487b7160e01b600052602160045260246000fdfea164736f6c6343000811000a", }, }, } From c0df5e70006221263744bc1ba1ade5663f07131d Mon Sep 17 00:00:00 2001 From: Roshan Date: Thu, 21 Dec 2023 16:15:10 +0800 Subject: [PATCH 11/28] chore: add new byte code of `TokenHub` and `GovHub` to Feynman upgrade --- core/systemcontracts/upgrade.go | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/core/systemcontracts/upgrade.go b/core/systemcontracts/upgrade.go index bde0be3168..3048d6f549 100644 --- a/core/systemcontracts/upgrade.go +++ b/core/systemcontracts/upgrade.go @@ -880,6 +880,16 @@ func init() { CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/cfc0bd1127186a917ddc38fd38d22903034d3f0b", Code: "608060405234801561001057600080fd5b50600436106103425760003560e01c80637e434d54116101b8578063ac43175111610104578063dcc6f156116100a2578063f9a2bbc71161007c578063f9a2bbc7146105de578063fc3e5908146105e6578063fc4333cd146105ee578063fd6a6879146105f657610342565b8063dcc6f156146105c6578063df8079e9146105ce578063e1c7392a146105d657610342565b8063c8509d81116100de578063c8509d8114610585578063c96be4cb14610598578063cc844b73146105ab578063dc927faf146105be57610342565b8063ac43175114610562578063c80d4b8f14610575578063c81b16621461057d57610342565b80639f804f5f11610171578063aa82dce11161014b578063aa82dce114610542578063aad560631461054a578063ab51bb9614610552578063ac0af6291461055a57610342565b80639f804f5f1461052a578063a1a11bf514610532578063a78abc161461053a57610342565b80637e434d54146104e45780638256ace6146104ec578063831d65d1146104f457806396713da9146105075780639dc092621461050f5780639e89ded81461051757610342565b8063493279b11161029257806362b72cf511610230578063718a8aa81161020a578063718a8aa8146104c457806375d47a0a146104cc5780637912a65d146104d45780637942fd05146104dc57610342565b806362b72cf5146104ac5780636e47b482146104b457806370fd5bad146104bc57610342565b806351b4dce31161026c57806351b4dce31461048157806351e8067214610489578063567a372d146104915780635bfb49901461049957610342565b8063493279b11461045c5780634bf6c8821461047157806350055f901461047957610342565b806328087028116102ff57806337c8dab9116102d957806337c8dab914610416578063389f4f71146104375780633dffc3871461043f57806343756e5c1461045457610342565b806328087028146103e65780633306ccca146103ee57806335aa2e441461040357610342565b80630bee7a67146103475780630e2374a5146103655780631182b8751461037a57806322d1e80b1461039a57806323bac5a2146103af57806327962118146103d1575b600080fd5b61034f6105fe565b60405161035c9190613e4e565b60405180910390f35b61036d610603565b60405161035c919061362c565b61038d610388366004613562565b610609565b60405161035c9190613664565b6103a261066f565b60405161035c9190613659565b6103c26103bd366004613279565b610678565b60405161035c93929190613e36565b6103e46103df3660046133bf565b61069b565b005b61036d610ac2565b6103f6610ac8565b60405161035c9190613dfe565b61036d610411366004613532565b610acd565b610429610424366004613279565b610af4565b60405161035c929190613e28565b6103f6610b4b565b610447610b51565b60405161035c9190613e5f565b61036d610b56565b610464610b5c565b60405161035c9190613def565b610447610b62565b6103f6610b67565b61036d610b6d565b61036d610b73565b6103f6610b79565b6103e46104a7366004613279565b610b7f565b6103f6610c2a565b61036d610c30565b610447610c36565b610447610c3b565b61036d610c40565b6103f6610c46565b610447610c4b565b61036d610c50565b610429610c56565b6103e4610502366004613562565b610c60565b610447610d73565b61036d610d78565b6103e46105253660046132b1565b610d7e565b6103f6610dad565b61036d610db3565b6103a2610db9565b61036d610dc2565b61036d610dc8565b61034f610dce565b6103f6610dd3565b6103e4610570366004613416565b610dd8565b6103f6611374565b61036d611379565b6103e4610593366004613562565b61137f565b6103e46105a6366004613279565b6113f0565b6103e46105b936600461347f565b611871565b61036d611eb8565b6103f6611ebe565b61036d611ec3565b6103e4611ec9565b61036d611f16565b610447611f1c565b6103e4611f21565b61036d61236a565b606481565b61200181565b606033612000146106355760405162461bcd60e51b815260040161062c90613c92565b60405180910390fd5b60005460ff166106575760405162461bcd60e51b815260040161062c90613738565b60405162461bcd60e51b815260040161062c90613d83565b60075460ff1681565b600260208190526000918252604090912080546001820154919092015460ff1683565b60005460ff166106bd5760405162461bcd60e51b815260040161062c90613738565b6006546106ca5760146006555b8151158015906106da5750805115155b6106f65760405162461bcd60e51b815260040161062c90613bf0565b60408051600380825260808201909252606091816020015b606081526020019060019003908161070e5790505090506107306102ca612370565b8160008151811061073d57fe5b60200260200101819052506107518361238b565b8160018151811061075e57fe5b60200260200101819052506107728261238b565b8160028151811061077f57fe5b60200260200101819052506060610795826123e1565b60408051603480825260608281019093529293509091602082018180368337019050509050815160346020830182602086016068600019fa6107d657600080fd5b506014810151603482015160405163436aa28360e11b8152600090612002906386d545069061080990869060040161362c565b60206040518083038186803b15801561082157600080fd5b505afa158015610835573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108599190613295565b6001600160a01b031614156108805760405162461bcd60e51b815260040161062c90613708565b43600854820110156108a45760405162461bcd60e51b815260040161062c906136a9565b60606110006001600160a01b0316633b071dcc6040518163ffffffff1660e01b815260040160006040518083038186803b1580156108e157600080fd5b505afa1580156108f5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261091d91908101906132dc565b50905060005b8151811015610a605781818151811061093857fe5b60200260200101516001600160a01b0316846001600160a01b03161415610a58576006546040516309a99b4f60e41b815260646110028031909302049190639a99b4f09061098c9033908590600401613640565b602060405180830381600087803b1580156109a657600080fd5b505af11580156109ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109de919061354a565b506110006001600160a01b03166335409f7f8484815181106109fc57fe5b60200260200101516040518263ffffffff1660e01b8152600401610a20919061362c565b600060405180830381600087803b158015610a3a57600080fd5b505af1158015610a4e573d6000803e3d6000fd5b5050505050610a60565b600101610923565b50604051631871f7d960e31b81526120029063c38fbec890610a8690869060040161362c565b600060405180830381600087803b158015610aa057600080fd5b505af1158015610ab4573d6000803e3d6000fd5b505050505050505050505050565b61200581565b603c81565b60018181548110610ada57fe5b6000918252602090912001546001600160a01b0316905081565b600080610aff613060565b5050506001600160a01b0316600090815260026020818152604092839020835160608101855281548082526001830154938201849052919093015460ff16151592909301919091529091565b60055481565b600181565b61100181565b6102ca81565b600881565b60065481565b61200681565b61200081565b60045481565b3361100014610ba05760405162461bcd60e51b815260040161062c9061397b565b60005460ff16610bc25760405162461bcd60e51b815260040161062c90613738565b61200063f7a251d7600b610bd584612472565b60006040518463ffffffff1660e01b8152600401610bf593929190613e6d565b600060405180830381600087803b158015610c0f57600080fd5b505af1158015610c23573d6000803e3d6000fd5b5050505050565b60035481565b61100581565b600281565b601081565b61100881565b600581565b600b81565b61200381565b6004546005549091565b3361200014610c815760405162461bcd60e51b815260040161062c90613c92565b60005460ff16610ca35760405162461bcd60e51b815260040161062c90613738565b610cab613083565b6000610cec84848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061253c92505050565b915091508015610d335781516040517f7f0956d47419b9525356e7111652b653b530ec6f5096dccc04589bc38e62996791610d2691613e4e565b60405180910390a1610c23565b81516040517f7d45f62d17443dd4547bca8a8112c60e2385669318dc300ec61a5d2492f262e791610d6391613e4e565b60405180910390a150505b505050565b600981565b61100781565b3361100014610d9f5760405162461bcd60e51b815260040161062c9061397b565b610da982826125bc565b5050565b60085481565b61100681565b60005460ff1681565b61200281565b61300081565b600081565b600481565b60005460ff16610dfa5760405162461bcd60e51b815260040161062c90613738565b3361100714610e1b5760405162461bcd60e51b815260040161062c90613adf565b610e8684848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260148152731b5a5cd9195b59585b9bdc951a1c995cda1bdb1960621b602082015291506127939050565b15610f215760208114610eab5760405162461bcd60e51b815260040161062c90613907565b604080516020601f8401819004810282018101909252828152600091610ee9918585808385018382808284376000920191909152506127ed92505050565b905060018110158015610efd575060055481105b610f195760405162461bcd60e51b815260040161062c90613c4d565b600455611331565b610f8784848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600f81526e19995b1bdb9e551a1c995cda1bdb19608a1b602082015291506127939050565b156110235760208114610fac5760405162461bcd60e51b815260040161062c90613b2d565b604080516020601f8401819004810282018101909252828152600091610fea918585808385018382808284376000920191909152506127ed92505050565b90506103e88111158015610fff575060045481115b61101b5760405162461bcd60e51b815260040161062c906137f1565b600555611331565b61109084848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601681527566656c6f6e79536c617368526577617264526174696f60501b602082015291506127939050565b1561112a57602081146110b55760405162461bcd60e51b815260040161062c90613a67565b604080516020601f84018190048102820181019092528281526000916110f3918585808385018382808284376000920191909152506127ed92505050565b9050600a81101580156111065750606481105b6111225760405162461bcd60e51b815260040161062c90613b6f565b600655611331565b61119e84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601881527f656e61626c654d616c6963696f7573566f7465536c6173680000000000000000602082015291506127939050565b1561121557602081146111c35760405162461bcd60e51b815260040161062c90613826565b604080516020601f84018190048102820181019092528281526111ff91908484808385018382808284376000920191909152506127f292505050565b6007805460ff1916911515919091179055611331565b61127c84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601081526f66656c6f6e79536c61736853636f706560801b602082015291506127939050565b1561131957602081146112a15760405162461bcd60e51b815260040161062c906139f6565b604080516020601f84018190048102820181019092528281526000916112df918585808385018382808284376000920191909152506127ed92505050565b905061708081101580156112f55750620d2f0081105b6113115760405162461bcd60e51b815260040161062c9061376f565b600855611331565b60405162461bcd60e51b815260040161062c90613d2e565b7f6cdb0ac70ab7f2e2d035cca5be60d89906f2dede7648ddbd7402189c1eeed17a848484846040516113669493929190613677565b60405180910390a150505050565b600a81565b61100281565b33612000146113a05760405162461bcd60e51b815260040161062c90613c92565b60005460ff166113c25760405162461bcd60e51b815260040161062c90613738565b6040517f07db600eebe2ac176be8dcebad61858c245a4961bb32ca2aa3d159b09aa0810e90600090a1505050565b33411461140f5760405162461bcd60e51b815260040161062c90613ce1565b60005460ff166114315760405162461bcd60e51b815260040161062c90613738565b60035443116114525760405162461bcd60e51b815260040161062c90613dba565b3a156114705760405162461bcd60e51b815260040161062c90613a39565b60405163155853f360e21b8152611000906355614fcc9061149590849060040161362c565b60206040518083038186803b1580156114ad57600080fd5b505afa1580156114c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114e5919061339f565b6114ee5761186a565b6114f6613060565b506001600160a01b0381166000908152600260208181526040928390208351606081018552815481526001820154928101929092529091015460ff1615801592820192909252906115515760208101805160010190526115aa565b60016040820181905260208201819052805480820182556000919091527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180546001600160a01b0319166001600160a01b0384161790555b4381526005546020820151816115bc57fe5b0661179857600060208201526040516335409f7f60e01b8152611000906335409f7f906115ed90859060040161362c565b600060405180830381600087803b15801561160757600080fd5b505af115801561161b573d6000803e3d6000fd5b505060405163436aa28360e11b81526000925061200291506386d545069061164790869060040161362c565b60206040518083038186803b15801561165f57600080fd5b505afa158015611673573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116979190613295565b6001600160a01b0316146116b8576116b38282602001516125bc565b611793565b61200063f7a251d7600b6116cb85612472565b60006040518463ffffffff1660e01b81526004016116eb93929190613e6d565b600060405180830381600087803b15801561170557600080fd5b505af1925050508015611716575060015b611793573d808015611744576040519150601f19603f3d011682016040523d82523d6000602084013e611749565b606091505b50826001600160a01b03167fd7bc86ff5d08c8ab043edec743302aba2520e6635172a428bc956721db9e2d1c836020015183604051611789929190613e07565b60405180910390a2505b611804565b6004548160200151816117a757fe5b06611804576040516375abf10160e11b81526110009063eb57e202906117d190859060040161362c565b600060405180830381600087803b1580156117eb57600080fd5b505af11580156117ff573d6000803e3d6000fd5b505050505b6001600160a01b0382166000818152600260208181526040808420865181559186015160018301558581015191909201805460ff1916911515919091179055517fddb6012116e51abf5436d956a4f0ebd927e92c576ff96d7918290c8782291e3e9190a2505b5043600355565b60005460ff166118935760405162461bcd60e51b815260040161062c90613738565b60075460ff166118b55760405162461bcd60e51b815260040161062c906136d3565b6006546118c25760146006555b6008546118cf57603c6008555b6008548151604001514391011180156118f357504360085482602001516040015101115b61190f5760405162461bcd60e51b815260040161062c90613d55565b80602001516020015181600001516020015114801561193d5750806020015160600151816000015160600151145b1561195a5760405162461bcd60e51b815260040161062c9061394e565b8051604081015190511080156119795750602081015160408101519051105b6119955760405162461bcd60e51b815260040161062c906138d0565b6020810151518151511080156119ba5750806000015160400151816020015160400151105b806119e557508051516020820151511080156119e55750806020015160400151816000015160400151105b806119ff5750806020015160400151816000015160400151145b611a1b5760405162461bcd60e51b815260040161062c906137ba565b604080820151905163ea321e4960e01b81526110009163ea321e4991611a449190600401613664565b60206040518083038186803b158015611a5c57600080fd5b505afa158015611a70573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a94919061339f565b611ab05760405162461bcd60e51b815260040161062c90613ab0565b611ac28160000151826040015161281a565b8015611adb5750611adb8160200151826040015161281a565b611af75760405162461bcd60e51b815260040161062c90613871565b6060806110006001600160a01b0316633b071dcc6040518163ffffffff1660e01b815260040160006040518083038186803b158015611b3557600080fd5b505afa158015611b49573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611b7191908101906132dc565b9150915060005b8151811015611cac57611ba2828281518110611b9057fe5b602002602001015185604001516129f2565b15611ca4576006546040516213929d60e11b8152606461100280319093020491906227253a90611bd89033908590600401613640565b602060405180830381600087803b158015611bf257600080fd5b505af1158015611c06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c2a919061354a565b506110006001600160a01b03166335409f7f858481518110611c4857fe5b60200260200101516040518263ffffffff1660e01b8152600401611c6c919061362c565b600060405180830381600087803b158015611c8657600080fd5b505af1158015611c9a573d6000803e3d6000fd5b5050505050611cac565b600101611b78565b5060408084015190516317b4f35360e01b8152600091612002916317b4f35391611cd891600401613664565b60206040518083038186803b158015611cf057600080fd5b505afa158015611d04573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d289190613295565b6001600160a01b031614611d96576040808401519051630e9fbf5160e01b815261200291630e9fbf5191611d5f9190600401613664565b600060405180830381600087803b158015611d7957600080fd5b505af1158015611d8d573d6000803e3d6000fd5b50505050610d6e565b6000611da784604001516000612a56565b90506120006001600160a01b031663f7a251d7600b611dc98760400151612a72565b60006040518463ffffffff1660e01b8152600401611de993929190613e6d565b600060405180830381600087803b158015611e0357600080fd5b505af1925050508015611e14575060015b611e86573d808015611e42576040519150601f19603f3d011682016040523d82523d6000602084013e611e47565b606091505b50817fd58d1183100bd0932c0588f31c4205d6bc6168909765a96c41adbed3115f362882604051611e789190613664565b60405180910390a250611eb2565b60405181907f7b78aadacff901d8b63d0dba4f86283d4db8aef27f9ed70413dd860f1c9532b690600090a25b50505050565b61100381565b601481565b61200481565b60005460ff1615611eec5760405162461bcd60e51b815260040161062c90613bb9565b60056004819055600a905560078054600160ff199182168117909255600080549091169091179055565b61100081565b600381565b3361100014611f425760405162461bcd60e51b815260040161062c9061397b565b60005460ff16611f645760405162461bcd60e51b815260040161062c90613738565b600154611f7057612368565b600154600090600019015b80821161233c576000805b8284101561209f57611f96613060565b6002600060018781548110611fa757fe5b60009182526020808320909101546001600160a01b0316835282810193909352604091820190208151606081018352815481526001820154938101939093526002015460ff1615159082015260055490915060049004816020015111156120895760046005548161201457fe5b0481602001510381602001818152505080600260006001888154811061203657fe5b6000918252602080832091909101546001600160a01b0316835282810193909352604091820190208351815591830151600183015591909101516002909101805460ff1916911515919091179055612093565b600192505061209f565b50836001019350611f86565b828411612236576120ae613060565b60026000600186815481106120bf57fe5b60009182526020808320909101546001600160a01b0316835282810193909352604091820190208151606081018352815481526001820154938101939093526002015460ff1615159082015260055490915060049004816020015111156121a75760046005548161212c57fe5b0481602001510381602001818152505080600260006001878154811061214e57fe5b6000918252602080832091909101546001600160a01b03168352828101939093526040918201902083518155918301516001808401919091559201516002909101805460ff191691151591909117905591506122369050565b60026000600186815481106121b857fe5b60009182526020808320909101546001600160a01b031683528201929092526040018120818155600181810192909255600201805460ff191690558054806121fc57fe5b600082815260209020810160001990810180546001600160a01b0319169055019055836122295750612236565b506000199092019161209f565b8180156122405750805b1561231f57600260006001868154811061225657fe5b60009182526020808320909101546001600160a01b031683528201929092526040018120818155600181810192909255600201805460ff1916905580548490811061229d57fe5b600091825260209091200154600180546001600160a01b0390921691869081106122c357fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060018054806122fc57fe5b600082815260209020810160001990810180546001600160a01b03191690550190555b8261232b57505061233c565b505060019091019060001901611f7b565b6040517fcfdb3b6ccaeccbdc68be3c59c840e3b3c90f0a7c491f5fff1cf56cfda200dd9c90600090a150505b565b61100481565b606061238361237e83612aad565b61238b565b90505b919050565b6060815160011480156123bd5750607f60f81b826000815181106123ab57fe5b01602001516001600160f81b03191611155b156123c9575080612386565b6123836123db8351608060ff16612b93565b83612c65565b60608151600014156124025750604080516000815260208101909152612386565b60608260008151811061241157fe5b602002602001015190506000600190505b8351811015612452576124488285838151811061243b57fe5b6020026020010151612c65565b9150600101612422565b5061246b612465825160c060ff16612b93565b82612c65565b9392505050565b60408051600480825260a08201909252606091829190816020015b606081526020019060019003908161248d5790505090506124b6836001600160a01b0316612ce2565b816000815181106124c357fe5b60200260200101819052506124d743612370565b816001815181106124e457fe5b60209081029190910101526124fa6102ca612370565b8160028151811061250757fe5b602002602001018190525061251b42612370565b8160038151811061252857fe5b602002602001018190525061246b816123e1565b612544613083565b600061254e613083565b612556613095565b61256761256286612d05565b612d2a565b90506000805b61257683612d74565b156125af57806125a25761259161258c84612d95565b612de3565b63ffffffff168452600191506125a7565b6125af565b60010161256d565b5091935090915050915091565b6040516375cc7d8960e01b8152612002906375cc7d89906125e190859060040161362c565b600060405180830381600087803b1580156125fb57600080fd5b505af192505050801561260c575060015b610da9576040516000815260443d1015612628575060006126c5565b60046000803e60005160e01c6308c379a081146126495760009150506126c5565b60043d036004833e81513d602482011167ffffffffffffffff82111715612675576000925050506126c5565b808301805167ffffffffffffffff8111156126975760009450505050506126c5565b8060208301013d86018111156126b5576000955050505050506126c5565b601f01601f191660405250925050505b806126d05750612719565b826001600160a01b03167fd7bc86ff5d08c8ab043edec743302aba2520e6635172a428bc956721db9e2d1c838360405161270b929190613e07565b60405180910390a25061278e565b3d808015612743576040519150601f19603f3d011682016040523d82523d6000602084013e612748565b606091505b50826001600160a01b03167fd7bc86ff5d08c8ab043edec743302aba2520e6635172a428bc956721db9e2d1c8383604051612784929190613e07565b60405180910390a2505b610da9565b6000816040516020016127a69190613610565b60405160208183030381529060405280519060200120836040516020016127cd9190613610565b604051602081830303815290604052805190602001201490505b92915050565b015190565b8082015160009060ff81161561280c576001915081612812565b60009150815b505092915050565b60408051600480825260a0820190925260009160609190816020015b606081526020019060019003908161283657505060408051602080825281830190925291925060609190808201818036833701905050905061287b8560000151612370565b8260008151811061288857fe5b60200260200101819052506128a36020866020015183612e65565b6128ac8161238b565b826001815181106128b957fe5b60200260200101819052506128d18560400151612370565b826002815181106128de57fe5b60200260200101819052506128f96020866060015183612e65565b6129028161238b565b8260038151811061290f57fe5b60200260200101819052506129356020612928846123e1565b8051906020012083612e65565b6040805160b080825260e08201909252606091602082018180368337019050509050612965818360006020612e75565b61297781876080015160206060612e75565b612985818660806030612e75565b604080516001808252818301909252606091602082018180368337019050509050815160016020830182602086016066600019fa6129c257600080fd5b5060016129d0826000612ec8565b60ff16146129e55760009450505050506127e7565b5060019695505050505050565b815181516000916001918114808314612a0e5760009250612a4c565b600160208701838101602088015b600284838510011415612a47578051835114612a3b5760009650600093505b60209283019201612a1c565b505050505b5090949350505050565b60008160200183511015612a6957600080fd5b50016020015190565b60408051600480825260a08201909252606091829190816020015b6060815260200190600190039081612a8d5790505090506124b68361238b565b604080516020808252818301909252606091829190602082018180368337505050602081018490529050600067ffffffffffffffff198416612af157506018612b15565b6fffffffffffffffffffffffffffffffff198416612b1157506010612b15565b5060005b6020811015612b4b57818181518110612b2a57fe5b01602001516001600160f81b03191615612b4357612b4b565b600101612b15565b60008160200390506060816040519080825280601f01601f191660200182016040528015612b80576020820181803683370190505b5080830196909652508452509192915050565b6060680100000000000000008310612bbd5760405162461bcd60e51b815260040161062c906138a8565b60408051600180825281830190925260609160208201818036833701905050905060378411612c175782840160f81b81600081518110612bf957fe5b60200101906001600160f81b031916908160001a90535090506127e7565b6060612c2285612aad565b90508381510160370160f81b82600081518110612c3b57fe5b60200101906001600160f81b031916908160001a905350612c5c8282612c65565b95945050505050565b6060806040519050835180825260208201818101602087015b81831015612c96578051835260209283019201612c7e565b50855184518101855292509050808201602086015b81831015612cc3578051835260209283019201612cab565b508651929092011591909101601f01601f191660405250905092915050565b60408051600560a21b831860148201526034810190915260609061246b8161238b565b612d0d6130b5565b506040805180820190915281518152602082810190820152919050565b612d32613095565b612d3b82612ee4565b612d4457600080fd5b6000612d538360200151612f1e565b60208085015160408051808201909152868152920190820152915050919050565b6000612d7e6130b5565b505080518051602091820151919092015191011190565b612d9d6130b5565b612da682612d74565b612daf57600080fd5b60208201516000612dbf82612f81565b80830160209586015260408051808201909152908152938401919091525090919050565b805160009015801590612df857508151602110155b612e0157600080fd5b6000612e108360200151612f1e565b90508083600001511015612e365760405162461bcd60e51b815260040161062c90613c16565b825160208085015183018051928490039291831015612e5c57826020036101000a820491505b50949350505050565b9091018181526020918201910152565b60005b81811015610c2357838181518110612e8c57fe5b602001015160f81c60f81b858480600101955081518110612ea957fe5b60200101906001600160f81b031916908160001a905350600101612e78565b60008160010183511015612edb57600080fd5b50016001015190565b8051600090612ef557506000612386565b6020820151805160001a9060c0821015612f1457600092505050612386565b5060019392505050565b8051600090811a6080811015612f38576000915050612386565b60b8811080612f53575060c08110801590612f53575060f881105b15612f62576001915050612386565b60c0811015612f765760b519019050612386565b60f519019050612386565b80516000908190811a6080811015612f9c5760019150613059565b60b8811015612fb157607e1981019150613059565b60c081101561300257600060b78203600186019550806020036101000a865104915060018101820193505080831015612ffc5760405162461bcd60e51b815260040161062c906139cb565b50613059565b60f88110156130175760be1981019150613059565b600060f78203600186019550806020036101000a8651049150600181018201935050808310156128125760405162461bcd60e51b815260040161062c906139cb565b5092915050565b604051806060016040528060008152602001600081526020016000151581525090565b60408051602081019091526000815290565b60405180604001604052806130a86130b5565b8152602001600081525090565b604051806040016040528060008152602001600081525090565b600082601f8301126130df578081fd5b81516130f26130ed82613ec0565b613e99565b818152915060208083019084810160005b84811015613168578151870188603f82011261311e57600080fd5b8381015161312e6130ed82613ee0565b81815260408b8184860101111561314457600080fd5b61315383888401838701613f04565b50865250509282019290820190600101613103565b505050505092915050565b60008083601f840112613184578182fd5b50813567ffffffffffffffff81111561319b578182fd5b6020830191508360208285010111156131b357600080fd5b9250929050565b600082601f8301126131ca578081fd5b81356131d86130ed82613ee0565b91508082528360208285010111156131ef57600080fd5b8060208401602084013760009082016020015292915050565b600060a08284031215613219578081fd5b61322360a0613e99565b905081358152602082013560208201526040820135604082015260608201356060820152608082013567ffffffffffffffff81111561326157600080fd5b61326d848285016131ba565b60808301525092915050565b60006020828403121561328a578081fd5b813561246b81613f30565b6000602082840312156132a6578081fd5b815161246b81613f30565b600080604083850312156132c3578081fd5b82356132ce81613f30565b946020939093013593505050565b600080604083850312156132ee578182fd5b825167ffffffffffffffff80821115613305578384fd5b81850186601f820112613316578485fd5b805192506133266130ed84613ec0565b80848252602080830192508084018a828389028701011115613346578889fd5b8894505b8685101561337157805161335d81613f30565b84526001949094019392810192810161334a565b508801519096509350505080821115613388578283fd5b50613395858286016130cf565b9150509250929050565b6000602082840312156133b0578081fd5b8151801515811461246b578182fd5b600080604083850312156133d1578182fd5b823567ffffffffffffffff808211156133e8578384fd5b6133f4868387016131ba565b93506020850135915080821115613409578283fd5b50613395858286016131ba565b6000806000806040858703121561342b578182fd5b843567ffffffffffffffff80821115613442578384fd5b61344e88838901613173565b90965094506020870135915080821115613466578384fd5b5061347387828801613173565b95989497509550505050565b600060208284031215613490578081fd5b813567ffffffffffffffff808211156134a7578283fd5b818401606081870312156134b9578384fd5b6134c36060613e99565b92508035828111156134d3578485fd5b6134df87828401613208565b8452506020810135828111156134f3578485fd5b6134ff87828401613208565b602085015250604081013582811115613516578485fd5b613522878284016131ba565b6040850152509195945050505050565b600060208284031215613543578081fd5b5035919050565b60006020828403121561355b578081fd5b5051919050565b600080600060408486031215613576578081fd5b833560ff81168114613586578182fd5b9250602084013567ffffffffffffffff8111156135a1578182fd5b6135ad86828701613173565b9497909650939450505050565b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b600081518084526135fc816020860160208601613f04565b601f01601f19169290920160200192915050565b60008251613622818460208701613f04565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b901515815260200190565b60006020825261246b60208301846135e4565b60006040825261368b6040830186886135ba565b828103602084015261369e8185876135ba565b979650505050505050565b60208082526010908201526f195d9a59195b98d9481d1bdbc81bdb1960821b604082015260600190565b6020808252818101527f6d616c6963696f757320766f746520736c617368206e6f7420656e61626c6564604082015260600190565b6020808252601690820152751d985b1a59185d1bdc881b9bdd081b5a59dc985d195960521b604082015260600190565b60208082526019908201527f74686520636f6e7472616374206e6f7420696e69742079657400000000000000604082015260600190565b6020808252602b908201527f746865206d616c6963696f757320766f746520736c6173682073636f7065206f60408201526a7574206f662072616e676560a81b606082015260800190565b6020808252601a908201527f6e6f2076696f6c6174696f6e206f6620766f74652072756c6573000000000000604082015260600190565b6020808252818101527f7468652066656c6f6e795468726573686f6c64206f7574206f662072616e6765604082015260600190565b6020808252602b908201527f6c656e677468206f6620656e61626c654d616c6963696f7573566f7465536c6160408201526a0e6d040dad2e6dac2e8c6d60ab1b606082015260800190565b60208082526017908201527f766572696679207369676e6174757265206661696c6564000000000000000000604082015260600190565b6020808252600e908201526d696e70757420746f6f206c6f6e6760901b604082015260600190565b60208082526019908201527f7372634e756d20626967676572207468616e207461724e756d00000000000000604082015260600190565b60208082526027908201527f6c656e677468206f66206d697364656d65616e6f725468726573686f6c64206d6040820152660d2e6dac2e8c6d60cb1b606082015260800190565b60208082526013908201527274776f206964656e746963616c20766f74657360681b604082015260600190565b60208082526030908201527f746865206d6573736167652073656e646572206d7573742062652076616c696460408201526f185d1bdc94d95d0818dbdb9d1c9858dd60821b606082015260800190565b6020808252601190820152706164646974696f6e206f766572666c6f7760781b604082015260600190565b60208082526023908201527f6c656e677468206f662066656c6f6e79536c61736853636f7065206d69736d616040820152620e8c6d60eb1b606082015260800190565b6020808252601490820152736761737072696365206973206e6f74207a65726f60601b604082015260600190565b60208082526029908201527f6c656e677468206f662066656c6f6e79536c617368526577617264526174696f604082015268040dad2e6dac2e8c6d60bb1b606082015260800190565b6020808252601590820152741d9bdd195059191c881a5cc81b9bdd08199bdd5b99605a1b604082015260600190565b6020808252602e908201527f746865206d6573736167652073656e646572206d75737420626520676f76657260408201526d1b985b98d94818dbdb9d1c9858dd60921b606082015260800190565b60208082526022908201527f6c656e677468206f662066656c6f6e795468726573686f6c64206d69736d61746040820152610c6d60f31b606082015260800190565b6020808252602a908201527f7468652066656c6f6e7920736c6173682072657761726420726174696f206f7560408201526974206f662072616e676560b01b606082015260800190565b60208082526019908201527f74686520636f6e747261637420616c726561647920696e697400000000000000604082015260600190565b6020808252600c908201526b32b6b83a3c903432b0b232b960a11b604082015260600190565b6020808252601a908201527f6c656e677468206973206c657373207468616e206f6666736574000000000000604082015260600190565b60208082526025908201527f746865206d697364656d65616e6f725468726573686f6c64206f7574206f662060408201526472616e676560d81b606082015260800190565b6020808252602f908201527f746865206d6573736167652073656e646572206d7573742062652063726f737360408201526e0818da185a5b8818dbdb9d1c9858dd608a1b606082015260800190565b6020808252602d908201527f746865206d6573736167652073656e646572206d75737420626520746865206260408201526c3637b1b590383937b23ab1b2b960991b606082015260800190565b6020808252600d908201526c756e6b6e6f776e20706172616d60981b604082015260600190565b6020808252601490820152731d185c99d95d08189b1bd8dac81d1bdbc81bdb1960621b604082015260600190565b6020808252601e908201527f7265636569766520756e65787065637465642073796e207061636b6167650000604082015260600190565b6020808252818101527f63616e206e6f7420736c61736820747769636520696e206f6e6520626c6f636b604082015260600190565b61ffff91909116815260200190565b90815260200190565b600083825260406020830152613e2060408301846135e4565b949350505050565b918252602082015260400190565b92835260208301919091521515604082015260600190565b63ffffffff91909116815260200190565b60ff91909116815260200190565b600060ff8516825260606020830152613e8960608301856135e4565b9050826040830152949350505050565b60405181810167ffffffffffffffff81118282101715613eb857600080fd5b604052919050565b600067ffffffffffffffff821115613ed6578081fd5b5060209081020190565b600067ffffffffffffffff821115613ef6578081fd5b50601f01601f191660200190565b60005b83811015613f1f578181015183820152602001613f07565b83811115611eb25750506000910152565b6001600160a01b0381168114613f4557600080fd5b5056fea164736f6c6343000604000a", }, + { + ContractAddr: common.HexToAddress(TokenHubContract), + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/cfc0bd1127186a917ddc38fd38d22903034d3f0b", + Code: "6080604052600436106104345760003560e01c806393ab703f11610229578063bbface1f1161012e578063e8f35cea116100b6578063fb063e8f1161007a578063fb063e8f146110c1578063fc1a598f146110d6578063fc3e590814610cf7578063fd6a687914611109578063ff9c0027146108cd5761047c565b8063e8f35cea1461103a578063ebf71d531461106d578063f014847214611082578063f9a2bbc714611097578063fa9e9159146110ac5761047c565b8063cf419844116100fd578063cf41984414610fc0578063d9e6dae91461083a578063dc927faf14610ffb578063df8079e914611010578063e1c7392a146110255761047c565b8063bbface1f14610ec0578063bd46646114610ef3578063c81b166214610f26578063c8509d8114610f3b5761047c565b8063a7c9f02d116101b1578063ab51bb9611610180578063ab51bb9614610d7d578063ac43175114610d92578063b99328c514610e5d578063b9fd21e314610e96578063ba35ead614610eab5761047c565b8063a7c9f02d14610cf7578063aa7415f514610d0c578063aa82dce114610d53578063aad5606314610d685761047c565b80639a99b4f0116101f85780639a99b4f014610c6a5780639dc0926214610ca3578063a1a11bf514610cb8578063a496fba214610ccd578063a78abc1614610ce25761047c565b806393ab703f14610bf25780639509b98014610c0757806396713da914610c405780639a854bbd14610c555761047c565b806351e806721161033a57806371d30863116102c25780637e434d54116102865780637e434d5414610ae0578063831d65d114610af55780638525db0314610b7a5780638b87b21f1461078f5780638eff336c14610bb35761047c565b806371d3086314610a38578063727be1f814610a4d57806375d47a0a14610a775780637942fd0514610a8c578063799758b914610aa15761047c565b806366dea52a1161030957806366dea52a146108cd5780636e056520146108e25780636e47b48214610a0e57806370fd5bad146108cd578063718a8aa814610a235761047c565b806351e806721461087957806359b927891461088e5780635d499b1b146108b8578063613684751461083a5761047c565b80633dffc387116103bd578063493279b11161038c578063493279b1146107f95780634a3acdf4146108255780634bf6c8821461083a57806350432d321461084f57806351b4dce3146108645761047c565b80633dffc3871461078f5780633fd8b02f146107ba57806343756e5c146107cf57806343a368b9146107e45761047c565b806312234582116104045780631223458214610625578063149d14d91461066057806328087028146106755780632ae454831461068a5780633d713223146106de5761047c565b806227253a146104815780630bee7a67146104cc5780630e2374a5146104fa5780631182b8751461052b5761047c565b3661047c57341561047a576040805133815234602082015281517f6c98249d85d88c3753a04a22230f595e4dc8d3dc86c34af35deeeedc861b89db929181900390910190a15b005b600080fd5b34801561048d57600080fd5b506104ba600480360360408110156104a457600080fd5b506001600160a01b03813516906020013561111e565b60408051918252519081900360200190f35b3480156104d857600080fd5b506104e16111db565b6040805163ffffffff9092168252519081900360200190f35b34801561050657600080fd5b5061050f6111e0565b604080516001600160a01b039092168252519081900360200190f35b34801561053757600080fd5b506105b06004803603604081101561054e57600080fd5b60ff8235169190810190604081016020820135600160201b81111561057257600080fd5b82018360208201111561058457600080fd5b803590602001918460018302840111600160201b831117156105a557600080fd5b5090925090506111e6565b6040805160208082528351818301528351919283929083019185019080838360005b838110156105ea5781810151838201526020016105d2565b50505050905090810190601f1680156106175780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561063157600080fd5b5061047a6004803603604081101561064857600080fd5b506001600160a01b0381358116916020013516611314565b34801561066c57600080fd5b506104ba61140e565b34801561068157600080fd5b5061050f611414565b34801561069657600080fd5b506106c5600480360360408110156106ad57600080fd5b506001600160a01b038135811691602001351661141a565b6040805192835260208301919091528051918290030190f35b3480156106ea57600080fd5b5061050f6004803603602081101561070157600080fd5b810190602081018135600160201b81111561071b57600080fd5b82018360208201111561072d57600080fd5b803590602001918460018302840111600160201b8311171561074e57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061143e945050505050565b34801561079b57600080fd5b506107a4611462565b6040805160ff9092168252519081900360200190f35b3480156107c657600080fd5b506104ba611467565b3480156107db57600080fd5b5061050f61146d565b3480156107f057600080fd5b506104ba611473565b34801561080557600080fd5b5061080e61147f565b6040805161ffff9092168252519081900360200190f35b34801561083157600080fd5b506104ba611485565b34801561084657600080fd5b506107a461148b565b34801561085b57600080fd5b506104ba611490565b34801561087057600080fd5b5061050f61149b565b34801561088557600080fd5b5061050f6114a1565b34801561089a57600080fd5b5061050f600480360360208110156108b157600080fd5b50356114a7565b3480156108c457600080fd5b506104ba6114c2565b3480156108d957600080fd5b506107a46114cb565b6109fa600480360360808110156108f857600080fd5b810190602081018135600160201b81111561091257600080fd5b82018360208201111561092457600080fd5b803590602001918460208302840111600160201b8311171561094557600080fd5b919390929091602081019035600160201b81111561096257600080fd5b82018360208201111561097457600080fd5b803590602001918460208302840111600160201b8311171561099557600080fd5b919390929091602081019035600160201b8111156109b257600080fd5b8201836020820111156109c457600080fd5b803590602001918460208302840111600160201b831117156109e557600080fd5b91935091503567ffffffffffffffff166114d0565b604080519115158252519081900360200190f35b348015610a1a57600080fd5b5061050f6119a5565b348015610a2f57600080fd5b506107a46119ab565b348015610a4457600080fd5b506104ba6119b0565b348015610a5957600080fd5b506109fa60048036036020811015610a7057600080fd5b50356119b6565b348015610a8357600080fd5b5061050f611a37565b348015610a9857600080fd5b506107a4611a3d565b348015610aad57600080fd5b5061047a60048036036060811015610ac457600080fd5b508035906001600160a01b036020820135169060400135611a42565b348015610aec57600080fd5b5061050f611ce8565b348015610b0157600080fd5b5061047a60048036036040811015610b1857600080fd5b60ff8235169190810190604081016020820135600160201b811115610b3c57600080fd5b820183602082011115610b4e57600080fd5b803590602001918460018302840111600160201b83111715610b6f57600080fd5b509092509050611cee565b348015610b8657600080fd5b5061047a60048036036040811015610b9d57600080fd5b50803590602001356001600160a01b0316611e37565b348015610bbf57600080fd5b5061047a60048036036060811015610bd657600080fd5b508035906001600160a01b036020820135169060400135611fa0565b348015610bfe57600080fd5b506104ba612026565b348015610c1357600080fd5b5061047a60048036036040811015610c2a57600080fd5b506001600160a01b03813516906020013561202d565b348015610c4c57600080fd5b506107a46121ea565b348015610c6157600080fd5b506104ba6121ef565b348015610c7657600080fd5b506104ba60048036036040811015610c8d57600080fd5b506001600160a01b0381351690602001356121fb565b348015610caf57600080fd5b5061050f612339565b348015610cc457600080fd5b5061050f61233f565b348015610cd957600080fd5b506107a4612345565b348015610cee57600080fd5b506109fa61234a565b348015610d0357600080fd5b506107a4612353565b6109fa60048036036080811015610d2257600080fd5b5080356001600160a01b03908116916020810135909116906040810135906060013567ffffffffffffffff16612358565b348015610d5f57600080fd5b5061050f612a19565b348015610d7457600080fd5b5061050f612a1f565b348015610d8957600080fd5b506104e1612345565b348015610d9e57600080fd5b5061047a60048036036040811015610db557600080fd5b810190602081018135600160201b811115610dcf57600080fd5b820183602082011115610de157600080fd5b803590602001918460018302840111600160201b83111715610e0257600080fd5b919390929091602081019035600160201b811115610e1f57600080fd5b820183602082011115610e3157600080fd5b803590602001918460018302840111600160201b83111715610e5257600080fd5b509092509050612a25565b348015610e6957600080fd5b5061047a60048036036040811015610e8057600080fd5b50803590602001356001600160a01b0316612ecd565b348015610ea257600080fd5b506104ba612f4d565b348015610eb757600080fd5b506104ba612f57565b348015610ecc57600080fd5b506104ba60048036036020811015610ee357600080fd5b50356001600160a01b0316612f5d565b348015610eff57600080fd5b506104ba60048036036020811015610f1657600080fd5b50356001600160a01b0316612f6f565b348015610f3257600080fd5b5061050f612f8a565b348015610f4757600080fd5b5061047a60048036036040811015610f5e57600080fd5b60ff8235169190810190604081016020820135600160201b811115610f8257600080fd5b820183602082011115610f9457600080fd5b803590602001918460018302840111600160201b83111715610fb557600080fd5b509092509050612f90565b348015610fcc57600080fd5b5061047a60048036036040811015610fe357600080fd5b506001600160a01b0381358116916020013516613060565b34801561100757600080fd5b5061050f613334565b34801561101c57600080fd5b5061050f61333a565b34801561103157600080fd5b5061047a613340565b34801561104657600080fd5b506104ba6004803603602081101561105d57600080fd5b50356001600160a01b03166133e0565b34801561107957600080fd5b506107a46133f2565b34801561108e57600080fd5b506107a46133f7565b3480156110a357600080fd5b5061050f6133fc565b3480156110b857600080fd5b506104ba613402565b3480156110cd57600080fd5b506104ba613408565b3480156110e257600080fd5b506105b0600480360360208110156110f957600080fd5b50356001600160a01b0316613416565b34801561111557600080fd5b5061050f61353d565b6000805460ff16611164576040805162461bcd60e51b81526020600482015260196024820152600080516020615cf3833981519152604482015290519081900360640190fd5b33611005146111a45760405162461bcd60e51b815260040180806020018281038252602f81526020018061594f602f913960400191505060405180910390fd5b60405162461bcd60e51b8152600401808060200182810382526026815260200180615da96026913960400191505060405180910390fd5b606481565b61200181565b60005460609060ff1661122e576040805162461bcd60e51b81526020600482015260196024820152600080516020615cf3833981519152604482015290519081900360640190fd5b336120001461126e5760405162461bcd60e51b815260040180806020018281038252602f815260200180615ca1602f913960400191505060405180910390fd5b60ff8416600214156112c0576112b983838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061354392505050565b905061130d565b6040805162461bcd60e51b815260206004820152601860248201527f756e7265636f676e697a65642073796e207061636b6167650000000000000000604482015290519081900360640190fd5b9392505050565b33612000146113545760405162461bcd60e51b815260040180806020018281038252602f815260200180615ca1602f913960400191505060405180910390fd5b6001600160a01b03808316600090815260076020908152604080832093851683529290522080546113bf576040805162461bcd60e51b815260206004820152601060248201526f1b9bc81b1bd8dad95908185b5bdd5b9d60821b604482015290519081900360640190fd5b8054600082556040805182815290516001600160a01b0380861692908716917f152fb15aa5d80f843e1e4bd5f2fc9161714f169945024decec7e84fb910fdd519181900360200190a350505050565b60015490565b61200581565b60076020908152600092835260408084209091529082529020805460019091015482565b6020818101516000908152600490915260409020546001600160a01b03165b919050565b600181565b60055481565b61100181565b670de0b6b3a764000081565b6102ca81565b61a8c081565b600881565b66071afd498d000081565b61200681565b61200081565b6000908152600460205260409020546001600160a01b031690565b6402540be40081565b600281565b6000805460ff16611516576040805162461bcd60e51b81526020600482015260196024820152600080516020615cf3833981519152604482015290519081900360640190fd5b8685146115545760405162461bcd60e51b815260040180806020018281038252603b815260200180615c66603b913960400191505060405180910390fd5b8683146115925760405162461bcd60e51b815260040180806020018281038252603f815260200180615b39603f913960400191505060405180910390fd5b426078018267ffffffffffffffff1610156115de5760405162461bcd60e51b81526004018080602001828103825260248152602001806159fe6024913960400191505060405180910390fd5b6402540be4003406156116225760405162461bcd60e51b8152600401808060200182810382526040815260200180615d696040913960400191505060405180910390fd5b60408051868152602080880282010190915285906000908190606090848015611655578160200160208202803683370190505b50905060005b84811015611730576402540be4008b8b8381811061167557fe5b905060200201358161168357fe5b06156116c05760405162461bcd60e51b815260040180806020018281038252603c815260200180615b78603c913960400191505060405180910390fd5b6116e58b8b838181106116cf57fe5b905060200201358561366790919063ffffffff16565b93506117116402540be4008c8c848181106116fc57fe5b905060200201356136c190919063ffffffff16565b82828151811061171d57fe5b602090810291909101015260010161165b565b5060015461175590611748908663ffffffff61370316565b849063ffffffff61366716565b3410156117935760405162461bcd60e51b8152600401808060200182810382526056815260200180615d136056913960600191505060405180910390fd5b6117a3348463ffffffff61375c16565b91506117ad615802565b6040518060c001604052806221272160e91b60001b815260200160006001600160a01b031681526020018381526020018e8e808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152505050908252506040805160208c810282810182019093528c82529283019290918d918d91829185019084908082843760009201919091525050509082525067ffffffffffffffff8916602090910152905061200063f7a251d760036118718461379e565b611886876402540be40063ffffffff6136c116565b6040518463ffffffff1660e01b8152600401808460ff1660ff16815260200180602001838152602001828103825284818151815260200191508051906020019080838360005b838110156118e45781810151838201526020016118cc565b50505050905090810190601f1680156119115780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b15801561193257600080fd5b505af1158015611946573d6000803e3d6000fd5b505060408051600081523360208201528082018890526060810187905290517f74eab09b0e53aefc23f2e1b16da593f95c2dd49c6f5a23720463d10d9c330b2a9350908190036080019150a15060019c9b505050505050505050505050565b61100581565b601081565b60015481565b600033612001146119f85760405162461bcd60e51b815260040180806020018281038252603381526020018061591c6033913960400191505060405180910390fd5b8115611a2f576040516120019083156108fc029084906000818181858888f19350505050158015611a2d573d6000803e3d6000fd5b505b506001919050565b61100881565b600b81565b60005460ff16611a87576040805162461bcd60e51b81526020600482015260196024820152600080516020615cf3833981519152604482015290519081900360640190fd5b3361300014611ac75760405162461bcd60e51b815260040180806020018281038252602b815260200180615ae9602b913960400191505060405180910390fd5b677ce66c50e2840000811115611b0e5760405162461bcd60e51b8152600401808060200182810382526035815260200180615a226035913960400191505060405180910390fd5b60006221272160e91b8414611c6f576000848152600460205260409020546001600160a01b031680611b78576040805162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a59081cde5b589bdb60921b604482015290519081900360640190fd5b6001600160a01b038116600090815260026020526040902054611b9b8482613a59565b604080516370a0823160e01b8152306004820152905191945084916001600160a01b038516916370a08231916024808301926020929190829003018186803b158015611be657600080fd5b505afa158015611bfa573d6000803e3d6000fd5b505050506040513d6020811015611c1057600080fd5b50511015611c5c576040805162461bcd60e51b8152602060048201526014602482015273696e73756666696369656e742062616c616e636560601b604482015290519081900360640190fd5b611c6886838588613a99565b5050611ce2565b611c84826402540be40063ffffffff61370316565b905080471015611cd2576040805162461bcd60e51b8152602060048201526014602482015273696e73756666696369656e742062616c616e636560601b604482015290519081900360640190fd5b6000611ce085828487613a99565b505b50505050565b61200381565b60005460ff16611d33576040805162461bcd60e51b81526020600482015260196024820152600080516020615cf3833981519152604482015290519081900360640190fd5b3361200014611d735760405162461bcd60e51b815260040180806020018281038252602f815260200180615ca1602f913960400191505060405180910390fd5b60ff831660031415611dc357611dbe82828080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250613b3392505050565b611e32565b7f41ce201247b6ceb957dcdb217d0b8acb50b9ea0e12af9af4f5e7f38902101605838383604051808460ff1660ff168152602001806020018281038252848482818152602001925080828437600083820152604051601f909101601f1916909201829003965090945050505050a15b505050565b3361300014611e775760405162461bcd60e51b815260040180806020018281038252602b815260200180615ae9602b913960400191505060405180910390fd5b60006221272160e91b8314611ee257506000828152600460205260409020546001600160a01b031680611ee2576040805162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a59081cde5b589bdb60921b604482015290519081900360640190fd5b6001600160a01b0380821660009081526007602090815260408083209386168352929052208054611f4d576040805162461bcd60e51b815260206004820152601060248201526f1b9bc81b1bd8dad95908185b5bdd5b9d60821b604482015290519081900360640190fd5b8054600082556040805182815290516001600160a01b03808716929086169188917f8041a9a8704332594e2884f5e0f942281cdd7611854c365b4d0aa70b2295d6b6919081900360200190a45050505050565b3361100814611fe05760405162461bcd60e51b8152600401808060200182810382526023815260200180615cd06023913960400191505060405180910390fd5b600083815260046020908152604080832080546001600160a01b039096166001600160a01b03199096168617905593825260038152838220949094556002909352912055565b62093a8081565b81806001600160a01b031663893d20e86040518163ffffffff1660e01b815260040160206040518083038186803b15801561206757600080fd5b505afa15801561207b573d6000803e3d6000fd5b505050506040513d602081101561209157600080fd5b50516001600160a01b031633146120ef576040805162461bcd60e51b815260206004820152601860248201527f6e6f74206f776e6572206f6620424550323020746f6b656e0000000000000000604482015290519081900360640190fd5b6000821161213d576040805162461bcd60e51b81526020600482015260166024820152751e995c9bc81b1a5b5a5d081b9bdd08185b1b1bddd95960521b604482015290519081900360640190fd5b6001600160a01b038316600090815260036020526040902054612193576040805162461bcd60e51b81526020600482015260096024820152681b9bdd08189bdd5b9960ba1b604482015290519081900360640190fd5b6001600160a01b038316600081815260066020908152604091829020859055815185815291513393927f9df3a90730dbf23b5cc18dbbd5f4af3fa94a0dffb6ff6841f98a9a9a6ac626a892908290030190a3505050565b600981565b677ce66c50e284000081565b6000805460ff16612241576040805162461bcd60e51b81526020600482015260196024820152600080516020615cf3833981519152604482015290519081900360640190fd5b33611005146122815760405162461bcd60e51b815260040180806020018281038252602f81526020018061594f602f913960400191505060405180910390fd5b60004783106122905747612292565b825b9050670de0b6b3a76400008111156122ae576000915050612333565b8015612330576040516001600160a01b0385169082156108fc029083906000818181858888f193505050501580156122ea573d6000803e3d6000fd5b50604080516001600160a01b03861681526020810183905281517ff8b71c64315fc33b2ead2adfa487955065152a8ac33d9d5193aafd7f45dc15a0929181900390910190a15b90505b92915050565b61100781565b61100681565b600081565b60005460ff1681565b600381565b6000805460ff1661239e576040805162461bcd60e51b81526020600482015260196024820152600080516020615cf3833981519152604482015290519081900360640190fd5b426078018267ffffffffffffffff1610156123ea5760405162461bcd60e51b81526004018080602001828103825260248152602001806159fe6024913960400191505060405180910390fd5b6402540be40034061561242e5760405162461bcd60e51b8152600401808060200182810382526040815260200180615d696040913960400191505060405180910390fd5b600080806001600160a01b03881661250d5760015461245490879063ffffffff61366716565b3410156124925760405162461bcd60e51b8152600401808060200182810382526061815260200180615a886061913960800191505060405180910390fd5b6402540be4008606156124d65760405162461bcd60e51b815260040180806020018281038252603c815260200180615b78603c913960400191505060405180910390fd5b6124e6348763ffffffff61375c16565b90506124fd866402540be40063ffffffff6136c116565b6221272160e91b935091506127b0565b6001600160a01b0388166000908152600360205260409020549250826125645760405162461bcd60e51b8152600401808060200182810382526031815260200180615a576031913960400191505060405180910390fd5b6001543410156125a55760405162461bcd60e51b815260040180806020018281038252603f815260200180615bd5603f913960400191505060405180910390fd5b506001600160a01b03871660009081526002602052604090205434906008811115806125f057506008811180156125f057506125ee876007198301600a0a63ffffffff613b8f16565b155b61262b5760405162461bcd60e51b815260040180806020018281038252603c815260200180615b78603c913960400191505060405180910390fd5b6126358782613bd1565b925061264084613c0a565b15612688576305f5e1008310156126885760405162461bcd60e51b815260040180806020018281038252603a8152602001806159a0603a913960400191505060405180910390fd5b6008811015806126a257506008811080156126a257508683115b6126dd5760405162461bcd60e51b8152600401808060200182810382526025815260200180615b146025913960400191505060405180910390fd5b677ce66c50e28400008311156127245760405162461bcd60e51b8152600401808060200182810382526035815260200180615a226035913960400191505060405180910390fd5b604080516323b872dd60e01b81523360048201523060248201526044810189905290516001600160a01b038b16916323b872dd9160648083019260209291908290030181600087803b15801561277957600080fd5b505af115801561278d573d6000803e3d6000fd5b505050506040513d60208110156127a357600080fd5b50516127ae57600080fd5b505b6127b8615802565b6040805160c0810182528581526001600160a01b038b166020820152815160018082528184018452919283019181602001602082028036833750505081526040805160018082528183019092526020928301929091908083019080368337505050815260408051600180825281830190925260209283019290919080830190803683370190505081526020018767ffffffffffffffff16815250905082816040015160008151811061286657fe5b60200260200101818152505087816060015160008151811061288457fe5b60200260200101906001600160a01b031690816001600160a01b0316815250503381608001516000815181106128b657fe5b6001600160a01b039092166020928302919091019091015261200063f7a251d760036128e18461379e565b6128f6866402540be40063ffffffff6136c116565b6040518463ffffffff1660e01b8152600401808460ff1660ff16815260200180602001838152602001828103825284818151815260200191508051906020019080838360005b8381101561295457818101518382015260200161293c565b50505050905090810190601f1680156129815780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b1580156129a257600080fd5b505af11580156129b6573d6000803e3d6000fd5b5050604080516001600160a01b038d1681523360208201528082018b90526060810186905290517f74eab09b0e53aefc23f2e1b16da593f95c2dd49c6f5a23720463d10d9c330b2a9350908190036080019150a150600198975050505050505050565b61200281565b61300081565b3361100714612a655760405162461bcd60e51b815260040180806020018281038252602e815260200180615c14602e913960400191505060405180910390fd5b60208114612aba576040805162461bcd60e51b815260206004820152601b60248201527f65787065637465642076616c7565206c656e6774682069732033320000000000604482015290519081900360640190fd5b606084848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8801819004810282018101909252868152939450606093925086915085908190840183828082843760009201919091525050505060208301519091506772656c617946656560c01b811415612bc2576020820151670de0b6b3a76400008111801590612b6957506402540be4008106155b612bba576040805162461bcd60e51b815260206004820152601960248201527f7468652072656c6179466565206f7574206f662072616e676500000000000000604482015290519081900360640190fd5b600155612e38565b612c3687878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601781527f6c617267655472616e736665724c6f636b506572696f6400000000000000000060208201529150613d109050565b15612cd257604080516020601f8701819004810282018101909252858152600091612c7991888880838501838280828437600092019190915250613df792505050565b905062093a80811115612cca576040805162461bcd60e51b81526020600482015260146024820152736c6f636b20706572696f6420746f6f206c6f6e6760601b604482015290519081900360640190fd5b600555612e38565b612d3e87878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080518082019091526015815274189b9893185c99d9551c985b9cd9995c931a5b5a5d605a1b60208201529150613d109050565b15612dfb57604080516020601f8701819004810282018101909252858152600091612d8191888880838501838280828437600092019190915250613df792505050565b905068056bc75e2d63100000811015612dcb5760405162461bcd60e51b815260040180806020018281038252602281526020018061597e6022913960400191505060405180910390fd5b6000805260066020527f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f855612e38565b6040805162461bcd60e51b815260206004820152600d60248201526c756e6b6e6f776e20706172616d60981b604482015290519081900360640190fd5b7f6cdb0ac70ab7f2e2d035cca5be60d89906f2dede7648ddbd7402189c1eeed17a878787876040518080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600083820152604051601f909101601f19169092018290039850909650505050505050a150505050505050565b3361100814612f0d5760405162461bcd60e51b8152600401808060200182810382526023815260200180615cd06023913960400191505060405180910390fd5b600091825260046020908152604080842080546001600160a01b03191690556001600160a01b039290921683526003815281832083905560029052812055565b6221272160e91b81565b61c35081565b60026020526000908152604090205481565b6001600160a01b031660009081526003602052604090205490565b61100281565b60005460ff16612fd5576040805162461bcd60e51b81526020600482015260196024820152600080516020615cf3833981519152604482015290519081900360640190fd5b33612000146130155760405162461bcd60e51b815260040180806020018281038252602f815260200180615ca1602f913960400191505060405180910390fd5b60ff831660031415611dc357611dbe82828080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250613dfc92505050565b60085460ff16600214156130ac576040805162461bcd60e51b815260206004820152600e60248201526d4e6f2072652d656e7472616e637960901b604482015290519081900360640190fd5b6008805460ff191660021790556001600160a01b0380831660009081526007602090815260408083209385168352929052208054613124576040805162461bcd60e51b815260206004820152601060248201526f1b9bc81b1bd8dad95908185b5bdd5b9d60821b604482015290519081900360640190fd5b806001015442101561317d576040805162461bcd60e51b815260206004820152601760248201527f7374696c6c206f6e206c6f636b696e6720706572696f64000000000000000000604482015290519081900360640190fd5b805460008083556001600160a01b0385166131f0576040516001600160a01b038516906127109084906000818181858888f193505050503d80600081146131e0576040519150601f19603f3d011682016040523d82523d6000602084013e6131e5565b606091505b505080915050613283565b846001600160a01b031663a9059cbb61c35086856040518463ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600088803b15801561325357600080fd5b5087f1158015613267573d6000803e3d6000fd5b50505050506040513d602081101561327e57600080fd5b505190505b806132d5576040805162461bcd60e51b815260206004820152601e60248201527f776974686472617720756e6c6f636b656420746f6b656e206661696c65640000604482015290519081900360640190fd5b836001600160a01b0316856001600160a01b03167f832fc3e25f2b3e6fb0eb59419a73cba405f2a249fce75f7e31ea5a457a0323f1846040518082815260200191505060405180910390a350506008805460ff19166001179055505050565b61100381565b61200481565b60005460ff1615613398576040805162461bcd60e51b815260206004820152601960248201527f74686520636f6e747261637420616c726561647920696e697400000000000000604482015290519081900360640190fd5b66071afd498d000060019081556000808052600260205260127fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b55805460ff19169091179055565b60066020526000908152604090205481565b600481565b600581565b61100081565b61271081565b69021e19e0c9bab240000081565b6001600160a01b03811660009081526003602090815260409182902054825182815280840190935260609290918391906020820181803683375050506020810183905290506000805b60208160ff1610156134a657828160ff168151811061347a57fe5b01602001516001600160f81b031916156134995781600101915061349e565b6134a6565b60010161345f565b5060608160ff166040519080825280601f01601f1916602001820160405280156134d7576020820181803683370190505b50905060005b8260ff168160ff16101561353357838160ff16815181106134fa57fe5b602001015160f81c60f81b828260ff168151811061351457fe5b60200101906001600160f81b031916908160001a9053506001016134dd565b5095945050505050565b61100481565b606061354d61584e565b600061355884613ef3565b91509150806135ae576040805162461bcd60e51b815260206004820152601f60248201527f756e7265636f676e697a6564207472616e73666572496e207061636b61676500604482015290519081900360640190fd5b60006135b983614032565b905063ffffffff81161561364d576040808401516020808601516001600160a01b031660009081526002909152918220546135f49190613bd1565b90506135fe615883565b60405180608001604052808660000151815260200183815260200186608001516001600160a01b031681526020018463ffffffff16815250905061364181614398565b9550505050505061145d565b5050604080516000815260208101909152915061145d9050565b600082820183811015612330576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600061233083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614474565b60008261371257506000612333565b8282028284828161371f57fe5b04146123305760405162461bcd60e51b8152600401808060200182810382526021815260200180615bb46021913960400191505060405180910390fd5b600061233083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250614516565b60408051600680825260e08201909252606091829190816020015b60608152602001906001900390816137b957505083519091506137db90614570565b816000815181106137e857fe5b602002602001018190525061380983602001516001600160a01b0316614583565b8160018151811061381657fe5b60200260200101819052506000836040015151905060608160405190808252806020026020018201604052801561386157816020015b606081526020019060019003908161384c5790505b50905060005b828110156138ae5761388f8660400151828151811061388257fe5b6020026020010151614570565b82828151811061389b57fe5b6020908102919091010152600101613867565b506138b8816145a6565b836002815181106138c557fe5b602002602001018190525060608260405190808252806020026020018201604052801561390657816020015b60608152602001906001900390816138f15790505b50905060005b8381101561395c5761393d8760600151828151811061392757fe5b60200260200101516001600160a01b0316614583565b82828151811061394957fe5b602090810291909101015260010161390c565b50613966816145a6565b8460038151811061397357fe5b60200260200101819052506060836040519080825280602002602001820160405280156139b457816020015b606081526020019060019003908161399f5790505b50905060005b848110156139f4576139d58860800151828151811061392757fe5b8282815181106139e157fe5b60209081029190910101526001016139ba565b506139fe816145a6565b85600481518110613a0b57fe5b6020026020010181905250613a2d8760a0015167ffffffffffffffff16614570565b85600581518110613a3a57fe5b6020026020010181905250613a4e856145a6565b979650505050505050565b60006008821115613a8257613a7b836007198401600a0a63ffffffff61370316565b9050612333565b612330836008849003600a0a63ffffffff6136c116565b6001600160a01b0380841660009081526007602090815260408083209385168352929052208054613ad0908463ffffffff61366716565b81554262093a80016001820181905560408051858152602081019290925280516001600160a01b03808616939088169289927f446d1aa056e7b903901f49880e9f252762c1b81dc4301cf28db6dae526497eaa9281900390910190a45050505050565b613b3b6158aa565b6000613b4683614630565b9150915080613b865760405162461bcd60e51b8152600401808060200182810382526024815260200180615c426024913960400191505060405180910390fd5b611e32826147fb565b600061233083836040518060400160405280601881526020017f536166654d6174683a206d6f64756c6f206279207a65726f0000000000000000815250614c7f565b60006008821115613bf357613a7b836007198401600a0a63ffffffff6136c116565b612330836008849003600a0a63ffffffff61370316565b604080516020808252818301909252600091606091906020820181803683375050506020810184905290506000805b60208160ff161015613c8057828160ff1681518110613c5457fe5b01602001516001600160f81b03191615613c7357816001019150613c78565b613c80565b600101613c39565b50600760ff82161015613c985760009250505061145d565b816005820360ff1681518110613caa57fe5b6020910101516001600160f81b031916602d60f81b14613ccf5760009250505061145d565b816001820360ff1681518110613ce157fe5b6020910101516001600160f81b031916604d60f81b14613d065760009250505061145d565b5060019392505050565b6000816040516020018082805190602001908083835b60208310613d455780518252601f199092019160209182019101613d26565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405280519060200120836040516020018082805190602001908083835b60208310613db35780518252601f199092019160209182019101613d94565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040528051906020012014905092915050565b015190565b613e04615802565b6000613e0f83614ce1565b9150915080613e4f5760405162461bcd60e51b81526004018080602001828103825260248152602001806159da6024913960400191505060405180910390fd5b613e576158aa565b602080840180516001600160a01b0390811684526040808701518585015291511660009081526002909252812054905b846040015151811015613ed857613eb585604001518281518110613ea757fe5b602002602001015183613a59565b85604001518281518110613ec557fe5b6020908102919091010152600101613e87565b506080840151604083015260056060830152611ce0826147fb565b613efb61584e565b6000613f0561584e565b613f0d6158e1565b613f1e613f1986614f45565b614f6a565b90506000805b613f2d83614fb4565b156140255780613f4f57613f48613f4384614fd5565b615023565b845261401d565b8060011415613f7c57613f69613f6484614fd5565b6150da565b6001600160a01b0316602085015261401d565b8060021415613f9b57613f91613f4384614fd5565b604085015261401d565b8060031415613fc357613fb0613f6484614fd5565b6001600160a01b0316606085015261401d565b8060041415613feb57613fd8613f6484614fd5565b6001600160a01b0316608085015261401d565b806005141561401857614000613f4384614fd5565b67ffffffffffffffff1660a08501526001915061401d565b614025565b600101613f24565b5091935090915050915091565b60208101516000906001600160a01b0316614176578160a0015167ffffffffffffffff164211156140655750600161145d565b81604001514710156140795750600361145d565b614082826150f4565b6140f757606082015160408084015190516000926001600160a01b0316916127109184818181858888f193505050503d80600081146140dd576040519150601f19603f3d011682016040523d82523d6000602084013e6140e2565b606091505b50509050806140f557506004905061145d565b505b7f471eb9cc1ffe55ffadf15b32595415eb9d80f22e761d24bd6dffc607e1284d5982602001518360600151846040015160405180846001600160a01b03166001600160a01b03168152602001836001600160a01b03166001600160a01b03168152602001828152602001935050505060405180910390a150600061145d565b8160a0015167ffffffffffffffff164211156141945750600161145d565b81516020808401516001600160a01b0316600090815260039091526040902054146141c15750600261145d565b602080830151604080516370a0823160e01b815230600482015290516000936001600160a01b03909316926370a082319261c3509260248083019392829003018187803b15801561421157600080fd5b5086fa158015614225573d6000803e3d6000fd5b50505050506040513d602081101561423c57600080fd5b5051604084015190915081101561425757506003905061145d565b614260836150f4565b61431757600083602001516001600160a01b031663a9059cbb61c350866060015187604001516040518463ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600088803b1580156142d557600080fd5b5087f11580156142e9573d6000803e3d6000fd5b50505050506040513d602081101561430057600080fd5b505190508061431557506005915061145d9050565b505b7f471eb9cc1ffe55ffadf15b32595415eb9d80f22e761d24bd6dffc607e1284d5983602001518460600151856040015160405180846001600160a01b03166001600160a01b03168152602001836001600160a01b03166001600160a01b03168152602001828152602001935050505060405180910390a1506000905061145d565b60408051600480825260a08201909252606091829190816020015b60608152602001906001900390816143b357505083519091506143d590614570565b816000815181106143e257fe5b60200260200101819052506143fa8360200151614570565b8160018151811061440757fe5b602002602001018190525061442883604001516001600160a01b0316614583565b8160028151811061443557fe5b6020026020010181905250614453836060015163ffffffff16614570565b8160038151811061446057fe5b602002602001018190525061130d816145a6565b600081836145005760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156144c55781810151838201526020016144ad565b50505050905090810190601f1680156144f25780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161450c57fe5b0495945050505050565b600081848411156145685760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156144c55781810151838201526020016144ad565b505050900390565b606061233361457e83615262565b615348565b60408051600560a21b831860148201526034810190915260609061130d81615348565b60608151600014156145c7575060408051600081526020810190915261145d565b6060826000815181106145d657fe5b602002602001015190506000600190505b83518110156146175761460d8285838151811061460057fe5b602002602001015161539a565b91506001016145e7565b5061130d61462a825160c060ff16615417565b8261539a565b6146386158aa565b60006146426158aa565b61464a6158e1565b614656613f1986614f45565b90506000805b61466583614fb4565b15614025578061468b5761467b613f6484614fd5565b6001600160a01b031684526147f3565b806001141561472c5760606146a76146a285614fd5565b61550f565b905080516040519080825280602002602001820160405280156146d4578160200160208202803683370190505b50602086015260005b8151811015614725576147028282815181106146f557fe5b6020026020010151615023565b8660200151828151811061471257fe5b60209081029190910101526001016146dd565b50506147f3565b80600214156147ce5760606147436146a285614fd5565b90508051604051908082528060200260200182016040528015614770578160200160208202803683370190505b50604086015260005b81518110156147255761479e82828151811061479157fe5b60200260200101516150da565b866040015182815181106147ae57fe5b6001600160a01b0390921660209283029190910190910152600101614779565b8060031415614018576147e3613f4384614fd5565b63ffffffff166060850152600191505b60010161465c565b80516001600160a01b0316614a255760005b816020015151811015614a1f5760008260400151828151811061482c57fe5b60200260200101516001600160a01b03166127108460200151848151811061485057fe5b60209081029190910101516040516000818181858888f193505050503d8060008114614898576040519150601f19603f3d011682016040523d82523d6000602084013e61489d565b606091505b5050905080614960577f203f9f67a785f4f81be4d48b109aa0c498d1bc8097ecc2627063f480cc5fe73e8360000151846040015184815181106148dc57fe5b6020026020010151856020015185815181106148f457fe5b6020026020010151866060015160405180856001600160a01b03166001600160a01b03168152602001846001600160a01b03166001600160a01b031681526020018381526020018263ffffffff1663ffffffff16815260200194505050505060405180910390a1614a16565b7fd468d4fa5e8fb4adc119b29a983fd0785e04af5cb8b7a3a69a47270c54b6901a83600001518460400151848151811061499657fe5b6020026020010151856020015185815181106149ae57fe5b6020026020010151866060015160405180856001600160a01b03166001600160a01b03168152602001846001600160a01b03166001600160a01b031681526020018381526020018263ffffffff1663ffffffff16815260200194505050505060405180910390a15b5060010161480d565b50614c7c565b60005b816020015151811015614c7a57600082600001516001600160a01b031663a9059cbb61c35085604001518581518110614a5d57fe5b602002602001015186602001518681518110614a7557fe5b60200260200101516040518463ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600088803b158015614acc57600080fd5b5087f1158015614ae0573d6000803e3d6000fd5b50505050506040513d6020811015614af757600080fd5b505190508015614bbb577fd468d4fa5e8fb4adc119b29a983fd0785e04af5cb8b7a3a69a47270c54b6901a836000015184604001518481518110614b3757fe5b602002602001015185602001518581518110614b4f57fe5b6020026020010151866060015160405180856001600160a01b03166001600160a01b03168152602001846001600160a01b03166001600160a01b031681526020018381526020018263ffffffff1663ffffffff16815260200194505050505060405180910390a1614c71565b7f203f9f67a785f4f81be4d48b109aa0c498d1bc8097ecc2627063f480cc5fe73e836000015184604001518481518110614bf157fe5b602002602001015185602001518581518110614c0957fe5b6020026020010151866060015160405180856001600160a01b03166001600160a01b03168152602001846001600160a01b03166001600160a01b031681526020018381526020018263ffffffff1663ffffffff16815260200194505050505060405180910390a15b50600101614a28565b505b50565b60008183614cce5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156144c55781810151838201526020016144ad565b50828481614cd857fe5b06949350505050565b614ce9615802565b6000614cf3615802565b614cfb6158e1565b614d07613f1986614f45565b90506000805b614d1683614fb4565b156140255780614d3357614d2c613f4384614fd5565b8452614f3d565b8060011415614d5b57614d48613f6484614fd5565b6001600160a01b03166020850152614f3d565b8060021415614dea576060614d726146a285614fd5565b90508051604051908082528060200260200182016040528015614d9f578160200160208202803683370190505b50604086015260005b8151811015614de357614dc08282815181106146f557fe5b86604001518281518110614dd057fe5b6020908102919091010152600101614da8565b5050614f3d565b8060031415614e7f576060614e016146a285614fd5565b90508051604051908082528060200260200182016040528015614e2e578160200160208202803683370190505b50606086015260005b8151811015614de357614e4f82828151811061479157fe5b86606001518281518110614e5f57fe5b6001600160a01b0390921660209283029190910190910152600101614e37565b8060041415614f14576060614e966146a285614fd5565b90508051604051908082528060200260200182016040528015614ec3578160200160208202803683370190505b50608086015260005b8151811015614de357614ee482828151811061479157fe5b86608001518281518110614ef457fe5b6001600160a01b0390921660209283029190910190910152600101614ecc565b806005141561401857614f29613f4384614fd5565b67ffffffffffffffff1660a0850152600191505b600101614d0d565b614f4d615901565b506040805180820190915281518152602082810190820152919050565b614f726158e1565b614f7b826155e0565b614f8457600080fd5b6000614f938360200151615610565b60208085015160408051808201909152868152920190820152915050919050565b6000614fbe615901565b505080518051602091820151919092015191011190565b614fdd615901565b614fe682614fb4565b614fef57600080fd5b60208201516000614fff82615673565b80830160209586015260408051808201909152908152938401919091525090919050565b80516000901580159061503857508151602110155b61504157600080fd5b60006150508360200151615610565b905080836000015110156150ab576040805162461bcd60e51b815260206004820152601a60248201527f6c656e677468206973206c657373207468616e206f6666736574000000000000604482015290519081900360640190fd5b8251602080850151830180519284900392918310156150d157826020036101000a820491505b50949350505050565b80516000906015146150eb57600080fd5b61233382615023565b600080805260066020527f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f85415801561512d5750600554155b1561516f5760008052600660205269021e19e0c9bab24000007f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f85561a8c06005555b6020808301516001600160a01b031660009081526006909152604090205480158061519d5750808360400151105b156151ac57600091505061145d565b6020808401516001600160a01b0390811660009081526007835260408082206060880151909316825291909252908190209084015181546151f29163ffffffff61366716565b8155600554420160018201819055606085015160208087015160408089015181519081529283019490945283516001600160a01b039384169493909116927f3fb83143cd331170da18fb1e8564d97e8ec39264b6ecb1ba248ea7596ab07258928290030190a35060019392505050565b604080516020808252818301909252606091829190602082018180368337505050602081018490529050600067ffffffffffffffff1984166152a6575060186152ca565b6fffffffffffffffffffffffffffffffff1984166152c6575060106152ca565b5060005b6020811015615300578181815181106152df57fe5b01602001516001600160f81b031916156152f857615300565b6001016152ca565b60008160200390506060816040519080825280601f01601f191660200182016040528015615335576020820181803683370190505b5080830196909652508452509192915050565b60608151600114801561537a5750607f60f81b8260008151811061536857fe5b01602001516001600160f81b03191611155b1561538657508061145d565b6123336153988351608060ff16615417565b835b6060806040519050835180825260208201818101602087015b818310156153cb5780518352602092830192016153b3565b50855184518101855292509050808201602086015b818310156153f85780518352602092830192016153e0565b508651929092011591909101601f01601f191660405250905092915050565b6060680100000000000000008310615467576040805162461bcd60e51b815260206004820152600e60248201526d696e70757420746f6f206c6f6e6760901b604482015290519081900360640190fd5b604080516001808252818301909252606091602082018180368337019050509050603784116154c15782840160f81b816000815181106154a357fe5b60200101906001600160f81b031916908160001a9053509050612333565b60606154cc85615262565b90508381510160370160f81b826000815181106154e557fe5b60200101906001600160f81b031916908160001a905350615506828261539a565b95945050505050565b606061551a826155e0565b61552357600080fd5b600061552e836157a6565b905060608160405190808252806020026020018201604052801561556c57816020015b615559615901565b8152602001906001900390816155515790505b509050600061557e8560200151615610565b60208601510190506000805b848110156155d55761559b83615673565b91506040518060400160405280838152602001848152508482815181106155be57fe5b60209081029190910101529181019160010161558a565b509195945050505050565b80516000906155f15750600061145d565b6020820151805160001a9060c0821015613d065760009250505061145d565b8051600090811a608081101561562a57600091505061145d565b60b8811080615645575060c08110801590615645575060f881105b1561565457600191505061145d565b60c08110156156685760b51901905061145d565b60f51901905061145d565b80516000908190811a608081101561568e576001915061579f565b60b88110156156a357607e198101915061579f565b60c081101561571d57600060b78203600186019550806020036101000a865104915060018101820193505080831015615717576040805162461bcd60e51b81526020600482015260116024820152706164646974696f6e206f766572666c6f7760781b604482015290519081900360640190fd5b5061579f565b60f88110156157325760be198101915061579f565b600060f78203600186019550806020036101000a86510491506001810182019350508083101561579d576040805162461bcd60e51b81526020600482015260116024820152706164646974696f6e206f766572666c6f7760781b604482015290519081900360640190fd5b505b5092915050565b80516000906157b75750600061145d565b600080905060006157cb8460200151615610565b602085015185519181019250015b808210156157f9576157ea82615673565b820191508260010192506157d9565b50909392505050565b6040518060c001604052806000801916815260200160006001600160a01b03168152602001606081526020016060815260200160608152602001600067ffffffffffffffff1681525090565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a081019190915290565b60408051608081018252600080825260208201819052918101829052606081019190915290565b604051806080016040528060006001600160a01b031681526020016060815260200160608152602001600063ffffffff1681525090565b60405180604001604052806158f4615901565b8152602001600081525090565b60405180604001604052806000815260200160008152509056fe6f6e6c79207374616b696e672073797374656d20636f6e74726163742063616e2063616c6c20746869732066756e6374696f6e746865206d6573736167652073656e646572206d75737420626520696e63656e746976697a6520636f6e7472616374626e62206c61726765207472616e73666572206c696d697420746f6f20736d616c6c466f72206d696e69546f6b656e2c20746865207472616e7366657220616d6f756e74206d757374206e6f74206265206c657373207468616e2031756e7265636f676e697a6564207472616e736665724f75742073796e207061636b61676565787069726554696d65206d7573742062652074776f206d696e75746573206c61746572616d6f756e7420697320746f6f206c617267652c20657863656564206d6178696d756d206265703220746f6b656e20616d6f756e7474686520636f6e747261637420686173206e6f74206265656e20626f756e6420746f20616e79206265703220746f6b656e726563656976656420424e4220616d6f756e742073686f756c64206265206e6f206c657373207468616e207468652073756d206f66207472616e736665724f757420424e4220616d6f756e7420616e64206d696e696d756d2072656c6179466565746865206d73672073656e646572206d75737420626520746f6b656e207265636f76657220706f7274616c616d6f756e7420697320746f6f206c617267652c2075696e74323536206f766572666c6f774c656e677468206f6620726563697069656e74416464727320646f65736e277420657175616c20746f206c656e677468206f6620726566756e644164647273696e76616c6964207472616e7366657220616d6f756e743a20707265636973696f6e206c6f737320696e20616d6f756e7420636f6e76657273696f6e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77726563656976656420424e4220616d6f756e742073686f756c64206265206e6f206c657373207468616e20746865206d696e696d756d2072656c6179466565746865206d6573736167652073656e646572206d75737420626520676f7665726e616e636520636f6e7472616374756e7265636f676e697a6564207472616e736665724f75742061636b207061636b6167654c656e677468206f6620726563697069656e74416464727320646f65736e277420657175616c20746f206c656e677468206f6620616d6f756e7473746865206d6573736167652073656e646572206d7573742062652063726f737320636861696e20636f6e7472616374746865206d73672073656e646572206d75737420626520746f6b656e4d616e6167657274686520636f6e7472616374206e6f7420696e69742079657400000000000000726563656976656420424e4220616d6f756e742073686f756c64206265206e6f206c657373207468616e207468652073756d206f66207472616e7366657220424e4220616d6f756e7420616e642072656c6179466565696e76616c696420726563656976656420424e4220616d6f756e743a20707265636973696f6e206c6f737320696e20616d6f756e7420636f6e76657273696f6e434c41494d5f524557415244535f464f525f46494e414c4954595f4e4f545f414c4c4f574544a164736f6c6343000604000a", + }, + { + ContractAddr: common.HexToAddress(GovHubContract), + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/cfc0bd1127186a917ddc38fd38d22903034d3f0b", + Code: "608060405234801561001057600080fd5b50600436106102115760003560e01c80637e434d5411610125578063aad56063116100ad578063dc927faf1161007c578063dc927faf14610602578063df8079e91461060a578063f9a2bbc714610612578063fc3e59081461061a578063fd6a68791461062257610211565b8063aad5606314610572578063ab51bb961461057a578063c81b166214610582578063c8509d811461058a57610211565b80639ab1a373116100f45780639ab1a373146105365780639dc092621461053e578063a1a11bf514610546578063a78abc161461054e578063aa82dce11461056a57610211565b80637e434d54146103e5578063831d65d1146103ed57806388e4194e1461046757806396713da91461052e57610211565b8063493279b1116101a85780636e47b482116101775780636e47b482146103bd57806370fd5bad146103c5578063718a8aa8146103cd57806375d47a0a146103d55780637942fd05146103dd57610211565b8063493279b1146103865780634bf6c882146103a557806351b4dce3146103ad57806351e80672146103b557610211565b80633a21baae116101e45780633a21baae146103505780633dffc3871461035857806343756e5c146103765780634900c4ea1461037e57610211565b80630bee7a67146102165780630e2374a5146102375780631182b8751461025b5780632808702814610348575b600080fd5b61021e61062a565b6040805163ffffffff9092168252519081900360200190f35b61023f61062f565b604080516001600160a01b039092168252519081900360200190f35b6102d36004803603604081101561027157600080fd5b60ff8235169190810190604081016020820135600160201b81111561029557600080fd5b8201836020820111156102a757600080fd5b803590602001918460018302840111600160201b831117156102c857600080fd5b509092509050610635565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561030d5781810151838201526020016102f5565b50505050905090810190601f16801561033a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61023f6106e4565b61021e6106ea565b6103606106ef565b6040805160ff9092168252519081900360200190f35b61023f6106f4565b6103606106fa565b61038e6106ff565b6040805161ffff9092168252519081900360200190f35b610360610705565b61023f61070a565b61023f610710565b61023f610716565b61036061071c565b610360610721565b61023f610726565b61036061072c565b61023f610731565b6104656004803603604081101561040357600080fd5b60ff8235169190810190604081016020820135600160201b81111561042757600080fd5b82018360208201111561043957600080fd5b803590602001918460018302840111600160201b8311171561045a57600080fd5b509092509050610737565b005b6104656004803603606081101561047d57600080fd5b810190602081018135600160201b81111561049757600080fd5b8201836020820111156104a957600080fd5b803590602001918460018302840111600160201b831117156104ca57600080fd5b919390929091602081019035600160201b8111156104e757600080fd5b8201836020820111156104f957600080fd5b803590602001918460018302840111600160201b8311171561051a57600080fd5b9193509150356001600160a01b03166107c9565b6103606108b4565b61021e6108b9565b61023f6108be565b61023f6108c4565b6105566108ca565b604080519115158252519081900360200190f35b61023f6108d3565b61023f6108d9565b61021e6106fa565b61023f6108df565b610465600480360360408110156105a057600080fd5b60ff8235169190810190604081016020820135600160201b8111156105c457600080fd5b8201836020820111156105d657600080fd5b803590602001918460018302840111600160201b831117156105f757600080fd5b5090925090506108e5565b61023f61095c565b61023f610962565b61023f610968565b61036061096e565b61023f610973565b606481565b61200181565b606061063f6115e1565b600061068085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061097992505050565b915091508061069c576106936064610a3f565b925050506106dd565b60006106a783610aa9565b905063ffffffff81166106ce57505060408051600081526020810190915291506106dd9050565b6106d781610a3f565b93505050505b9392505050565b61200581565b606681565b600181565b61100181565b600081565b6102ca81565b600881565b61200681565b61200081565b61100581565b600281565b601081565b61100881565b600b81565b61200381565b33612000146107775760405162461bcd60e51b815260040180806020018281038252602f815260200180611646602f913960400191505060405180910390fd5b6040805162461bcd60e51b815260206004820152601e60248201527f7265636569766520756e65787065637465642061636b207061636b6167650000604482015290519081900360640190fd5b505050565b33612006146108095760405162461bcd60e51b81526004018080602001828103825260318152602001806116756031913960400191505060405180910390fd5b6108116115e1565b604051806060016040528087878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250604080516020601f8801819004810282018101909252868152918101919087908790819084018382808284376000920191909152505050908252506001600160a01b03841660209091015290506108ab81610aa9565b50505050505050565b600981565b606581565b61100781565b61100681565b60005460ff1681565b61200281565b61300081565b61100281565b33612000146109255760405162461bcd60e51b815260040180806020018281038252602f815260200180611646602f913960400191505060405180910390fd5b60405162461bcd60e51b81526004018080602001828103825260238152602001806116a66023913960400191505060405180910390fd5b61100381565b61200481565b61100081565b600381565b61100481565b6109816115e1565b600061098b6115e1565b61099361160b565b6109a461099f86610e4a565b610e6f565b90506000805b6109b383610eb9565b15610a3257806109d5576109ce6109c984610eda565b610f28565b8452610a2a565b80600114156109f4576109ea6109c984610eda565b6020850152610a2a565b8060021415610a2557610a0e610a0984610eda565b610fa1565b6001600160a01b0316604085015260019150610a2a565b610a32565b6001016109aa565b5091935090915050915091565b604080516001808252818301909252606091829190816020015b6060815260200190600190039081610a59579050509050610a7f8363ffffffff16610fc1565b81600081518110610a8c57fe5b6020026020010181905250610aa081610fd4565b9150505b919050565b6000610ab8826040015161105e565b610b2457604080516020808252601c908201527f74686520746172676574206973206e6f74206120636f6e7472616374000000008183015290517f70e72399380dcfb0338abc03dc8d47f9f470ada8e769c9a78d644ea97385ecb29181900360600190a1506065610aa4565b81604001516001600160a01b031663ac431751836000015184602001516040518363ffffffff1660e01b8152600401808060200180602001838103835285818151815260200191508051906020019080838360005b83811015610b91578181015183820152602001610b79565b50505050905090810190601f168015610bbe5780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015610bf1578181015183820152602001610bd9565b50505050905090810190601f168015610c1e5780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b158015610c3f57600080fd5b505af1925050508015610c50575060015b610e42576040516000815260443d1015610c6c57506000610d09565b60046000803e60005160e01c6308c379a08114610c8d576000915050610d09565b60043d036004833e81513d602482011167ffffffffffffffff82111715610cb957600092505050610d09565b808301805167ffffffffffffffff811115610cdb576000945050505050610d09565b8060208301013d8601811115610cf957600095505050505050610d09565b601f01601f191660405250925050505b80610d145750610db7565b7f70e72399380dcfb0338abc03dc8d47f9f470ada8e769c9a78d644ea97385ecb2816040518080602001828103825283818151815260200191508051906020019080838360005b83811015610d73578181015183820152602001610d5b565b50505050905090810190601f168015610da05780820380516001836020036101000a031916815260200191505b509250505060405180910390a16066915050610aa4565b3d808015610de1576040519150601f19603f3d011682016040523d82523d6000602084013e610de6565b606091505b5060408051602080825283518183015283517f1279f84165b4fd69c35e1f338ff107231b036c655cd1688851e011ce617c4e8d938593928392918301919085019080838360008315610d73578181015183820152602001610d5b565b506000919050565b610e5261162b565b506040805180820190915281518152602082810190820152919050565b610e7761160b565b610e8082611064565b610e8957600080fd5b6000610e98836020015161109e565b60208085015160408051808201909152868152920190820152915050919050565b6000610ec361162b565b505080518051602091820151919092015191011190565b610ee261162b565b610eeb82610eb9565b610ef457600080fd5b60208201516000610f0482611101565b80830160209586015260408051808201909152908152938401919091525090919050565b8051606090610f3657600080fd5b6000610f45836020015161109e565b83516040805191839003808352601f19601f8201168301602001909152919250606090828015610f7c576020820181803683370190505b5090506000816020019050610f98848760200151018285611234565b50949350505050565b8051600090601514610fb257600080fd5b610fbb8261127f565b92915050565b6060610fbb610fcf83611334565b61141a565b6060815160001415610ff55750604080516000815260208101909152610aa4565b60608260008151811061100457fe5b602002602001015190506000600190505b83518110156110455761103b8285838151811061102e57fe5b602002602001015161146c565b9150600101611015565b50610aa0611058825160c060ff166114e9565b8261146c565b3b151590565b805160009061107557506000610aa4565b6020820151805160001a9060c082101561109457600092505050610aa4565b5060019392505050565b8051600090811a60808110156110b8576000915050610aa4565b60b88110806110d3575060c081108015906110d3575060f881105b156110e2576001915050610aa4565b60c08110156110f65760b519019050610aa4565b60f519019050610aa4565b80516000908190811a608081101561111c576001915061122d565b60b881101561113157607e198101915061122d565b60c08110156111ab57600060b78203600186019550806020036101000a8651049150600181018201935050808310156111a5576040805162461bcd60e51b81526020600482015260116024820152706164646974696f6e206f766572666c6f7760781b604482015290519081900360640190fd5b5061122d565b60f88110156111c05760be198101915061122d565b600060f78203600186019550806020036101000a86510491506001810182019350508083101561122b576040805162461bcd60e51b81526020600482015260116024820152706164646974696f6e206f766572666c6f7760781b604482015290519081900360640190fd5b505b5092915050565b8061123e576107c4565b5b6020811061125e578251825260209283019290910190601f190161123f565b915181516020939093036101000a6000190180199091169216919091179052565b80516000901580159061129457508151602110155b61129d57600080fd5b60006112ac836020015161109e565b90508083600001511015611307576040805162461bcd60e51b815260206004820152601a60248201527f6c656e677468206973206c657373207468616e206f6666736574000000000000604482015290519081900360640190fd5b825160208085015183018051928490039291831015610f9857506020919091036101000a90049392505050565b604080516020808252818301909252606091829190602082018180368337505050602081018490529050600067ffffffffffffffff1984166113785750601861139c565b6fffffffffffffffffffffffffffffffff1984166113985750601061139c565b5060005b60208110156113d2578181815181106113b157fe5b01602001516001600160f81b031916156113ca576113d2565b60010161139c565b60008160200390506060816040519080825280601f01601f191660200182016040528015611407576020820181803683370190505b5080830196909652508452509192915050565b60608151600114801561144c5750607f60f81b8260008151811061143a57fe5b01602001516001600160f81b03191611155b15611458575080610aa4565b610fbb61146a8351608060ff166114e9565b835b6060806040519050835180825260208201818101602087015b8183101561149d578051835260209283019201611485565b50855184518101855292509050808201602086015b818310156114ca5780518352602092830192016114b2565b508651929092011591909101601f01601f191660405250905092915050565b6060680100000000000000008310611539576040805162461bcd60e51b815260206004820152600e60248201526d696e70757420746f6f206c6f6e6760901b604482015290519081900360640190fd5b604080516001808252818301909252606091602082018180368337019050509050603784116115935782840160f81b8160008151811061157557fe5b60200101906001600160f81b031916908160001a9053509050610fbb565b606061159e85611334565b90508381510160370160f81b826000815181106115b757fe5b60200101906001600160f81b031916908160001a9053506115d8828261146c565b95945050505050565b6040518060600160405280606081526020016060815260200160006001600160a01b031681525090565b604051806040016040528061161e61162b565b8152602001600081525090565b60405180604001604052806000815260200160008152509056fe746865206d6573736167652073656e646572206d7573742062652063726f737320636861696e20636f6e7472616374746865206d73672073656e646572206d75737420626520676f7665726e6f722074696d656c6f636b20636f6e74726163747265636569766520756e6578706563746564206661696c2061636b207061636b616765a164736f6c6343000604000a", + }, { ContractAddr: common.HexToAddress(StakingContract), CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/cfc0bd1127186a917ddc38fd38d22903034d3f0b", From 432085ea623b643975b569633923705d731415d8 Mon Sep 17 00:00:00 2001 From: Roshan <48975233+Pythonberg1997@users.noreply.github.com> Date: Mon, 25 Dec 2023 11:20:50 +0800 Subject: [PATCH 12/28] fix: avoid update validators on Feynman block (#2102) --- consensus/parlia/parlia.go | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/consensus/parlia/parlia.go b/consensus/parlia/parlia.go index be68ce2ede..d17e1ea208 100644 --- a/consensus/parlia/parlia.go +++ b/consensus/parlia/parlia.go @@ -1177,8 +1177,11 @@ func (p *Parlia) Finalize(chain consensus.ChainHeaderReader, header *types.Heade // update validators every day if p.chainConfig.IsFeynman(header.Number, header.Time) && isBreatheBlock(parent.Time, header.Time) { - if err := p.updateValidatorSetV2(state, header, cx, txs, receipts, systemTxs, usedGas, false); err != nil { - return err + // we should avoid update validators in the Feynman upgrade block + if !p.chainConfig.IsOnFeynman(header.Number, parent.Time, header.Time) { + if err := p.updateValidatorSetV2(state, header, cx, txs, receipts, systemTxs, usedGas, false); err != nil { + return err + } } } @@ -1257,8 +1260,11 @@ func (p *Parlia) FinalizeAndAssemble(chain consensus.ChainHeaderReader, header * // update validators every day if p.chainConfig.IsFeynman(header.Number, header.Time) && isBreatheBlock(parent.Time, header.Time) { - if err := p.updateValidatorSetV2(state, header, cx, &txs, &receipts, nil, &header.GasUsed, true); err != nil { - return nil, nil, err + // we should avoid update validators in the Feynman upgrade block + if !p.chainConfig.IsOnFeynman(header.Number, parent.Time, header.Time) { + if err := p.updateValidatorSetV2(state, header, cx, &txs, &receipts, nil, &header.GasUsed, true); err != nil { + return nil, nil, err + } } } From e5822640c651fbb23ba8d9a39ce41ae866dfce76 Mon Sep 17 00:00:00 2001 From: Roshan <48975233+Pythonberg1997@users.noreply.github.com> Date: Thu, 4 Jan 2024 20:18:45 +0800 Subject: [PATCH 13/28] chore: add `SystemTxsGas` for Feynman upgrade (#2133) --- miner/worker.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/miner/worker.go b/miner/worker.go index fe012451fa..92cfeb7021 100644 --- a/miner/worker.go +++ b/miner/worker.go @@ -711,7 +711,11 @@ func (w *worker) commitTransactions(env *environment, txs *transactionsByPriceAn gasLimit := env.header.GasLimit if env.gasPool == nil { env.gasPool = new(core.GasPool).AddGas(gasLimit) - env.gasPool.SubGas(params.SystemTxsGas * 5) + if w.chain.Config().IsFeynman(env.header.Number, env.header.Time) { + env.gasPool.SubGas(params.SystemTxsGas * 40) // 20,000,000 + } else { + env.gasPool.SubGas(params.SystemTxsGas * 5) + } } var coalescedLogs []*types.Log From 64a57a3e2a7397e16b848ee2c2e2126173775f3a Mon Sep 17 00:00:00 2001 From: Roshan <48975233+Pythonberg1997@users.noreply.github.com> Date: Mon, 8 Jan 2024 11:15:14 +0800 Subject: [PATCH 14/28] chore: update abi and bytecode (#2137) --- consensus/parlia/abi.go | 443 +++++++++++++++++++++++++++----- consensus/parlia/feynmanfork.go | 5 +- core/systemcontracts/upgrade.go | 61 +++-- 3 files changed, 418 insertions(+), 91 deletions(-) diff --git a/consensus/parlia/abi.go b/consensus/parlia/abi.go index c10107b5a1..d196f5bf4e 100644 --- a/consensus/parlia/abi.go +++ b/consensus/parlia/abi.go @@ -1391,7 +1391,7 @@ const validatorSetABIBeforeLuban = ` ] ` -// TODO: update ABI +// TODO: update ABI to the latest version const validatorSetABI = ` [ { @@ -1400,7 +1400,7 @@ const validatorSetABI = ` }, { "type": "function", - "name": "BIND_CHANNELID", + "name": "BC_FUSION_CHANNELID", "inputs": [], "outputs": [ { @@ -1413,20 +1413,20 @@ const validatorSetABI = ` }, { "type": "function", - "name": "BURN_ADDRESS", + "name": "BIND_CHANNELID", "inputs": [], "outputs": [ { "name": "", - "type": "address", - "internalType": "address" + "type": "uint8", + "internalType": "uint8" } ], "stateMutability": "view" }, { "type": "function", - "name": "BURN_RATIO_SCALE", + "name": "BLOCK_FEES_RATIO_SCALE", "inputs": [], "outputs": [ { @@ -1437,6 +1437,19 @@ const validatorSetABI = ` ], "stateMutability": "view" }, + { + "type": "function", + "name": "BURN_ADDRESS", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, { "type": "function", "name": "CODE_OK", @@ -1619,6 +1632,19 @@ const validatorSetABI = ` ], "stateMutability": "view" }, + { + "type": "function", + "name": "GOV_TOKEN_ADDR", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, { "type": "function", "name": "INCENTIVIZE_ADDR", @@ -1814,6 +1840,19 @@ const validatorSetABI = ` ], "stateMutability": "view" }, + { + "type": "function", + "name": "STAKE_CREDIT_ADDR", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, { "type": "function", "name": "STAKE_HUB_ADDR", @@ -1868,13 +1907,13 @@ const validatorSetABI = ` }, { "type": "function", - "name": "SYSTEM_REWARD_RATIO_SCALE", + "name": "TIMELOCK_ADDR", "inputs": [], "outputs": [ { "name": "", - "type": "uint256", - "internalType": "uint256" + "type": "address", + "internalType": "address" } ], "stateMutability": "view" @@ -2431,19 +2470,6 @@ const validatorSetABI = ` ], "stateMutability": "view" }, - { - "type": "function", - "name": "jailValidator", - "inputs": [ - { - "name": "consensusAddress", - "type": "address", - "internalType": "address" - } - ], - "outputs": [], - "stateMutability": "nonpayable" - }, { "type": "function", "name": "maintainSlashScale", @@ -2593,6 +2619,19 @@ const validatorSetABI = ` ], "stateMutability": "view" }, + { + "type": "function", + "name": "removeTmpMigratedValidator", + "inputs": [ + { + "name": "validator", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, { "type": "function", "name": "systemRewardRatio", @@ -3919,7 +3958,7 @@ const slashABI = ` ] ` -// TODO: update ABI +// TODO: update ABI to the latest version const stakeABI = ` [ { @@ -3928,7 +3967,20 @@ const stakeABI = ` }, { "type": "function", - "name": "BREATH_BLOCK_INTERVAL", + "name": "BC_FUSION_CHANNELID", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint8", + "internalType": "uint8" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "BREATHE_BLOCK_INTERVAL", "inputs": [], "outputs": [ { @@ -3954,7 +4006,7 @@ const stakeABI = ` }, { "type": "function", - "name": "INIT_LOCK_AMOUNT", + "name": "LOCK_AMOUNT", "inputs": [], "outputs": [ { @@ -3978,6 +4030,19 @@ const stakeABI = ` ], "stateMutability": "view" }, + { + "type": "function", + "name": "STAKING_CHANNELID", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint8", + "internalType": "uint8" + } + ], + "stateMutability": "view" + }, { "type": "function", "name": "addToBlackList", @@ -4059,6 +4124,44 @@ const stakeABI = ` "outputs": [], "stateMutability": "nonpayable" }, + { + "type": "function", + "name": "consensusExpiration", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "consensusToOperator", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, { "type": "function", "name": "createValidator", @@ -4319,44 +4422,6 @@ const stakeABI = ` ], "stateMutability": "view" }, - { - "type": "function", - "name": "getOperatorAddressByConsensusAddress", - "inputs": [ - { - "name": "consensusAddress", - "type": "address", - "internalType": "address" - } - ], - "outputs": [ - { - "name": "", - "type": "address", - "internalType": "address" - } - ], - "stateMutability": "view" - }, - { - "type": "function", - "name": "getOperatorAddressByVoteAddress", - "inputs": [ - { - "name": "voteAddress", - "type": "bytes", - "internalType": "bytes" - } - ], - "outputs": [ - { - "name": "", - "type": "address", - "internalType": "address" - } - ], - "stateMutability": "view" - }, { "type": "function", "name": "getValidatorBasicInfo", @@ -4565,6 +4630,100 @@ const stakeABI = ` ], "stateMutability": "view" }, + { + "type": "function", + "name": "getValidators", + "inputs": [ + { + "name": "offset", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "limit", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "operatorAddrs", + "type": "address[]", + "internalType": "address[]" + }, + { + "name": "creditAddrs", + "type": "address[]", + "internalType": "address[]" + }, + { + "name": "totalLength", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "handleAckPackage", + "inputs": [ + { + "name": "channelId", + "type": "uint8", + "internalType": "uint8" + }, + { + "name": "msgBytes", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "handleFailAckPackage", + "inputs": [ + { + "name": "channelId", + "type": "uint8", + "internalType": "uint8" + }, + { + "name": "msgBytes", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "handleSynPackage", + "inputs": [ + { + "name": "", + "type": "uint8", + "internalType": "uint8" + }, + { + "name": "msgBytes", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [ + { + "name": "", + "type": "bytes", + "internalType": "bytes" + } + ], + "stateMutability": "nonpayable" + }, { "type": "function", "name": "initialize", @@ -4590,7 +4749,7 @@ const stakeABI = ` "name": "maliciousVoteSlash", "inputs": [ { - "name": "_voteAddr", + "name": "voteAddress", "type": "bytes", "internalType": "bytes" } @@ -4611,6 +4770,19 @@ const stakeABI = ` ], "stateMutability": "view" }, + { + "type": "function", + "name": "maxFelonyBetweenBreatheBlock", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, { "type": "function", "name": "minDelegationBNBChange", @@ -4811,6 +4983,44 @@ const stakeABI = ` "outputs": [], "stateMutability": "nonpayable" }, + { + "type": "function", + "name": "voteExpiration", + "inputs": [ + { + "name": "", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "voteToOperator", + "inputs": [ + { + "name": "", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, { "type": "event", "name": "Claimed", @@ -4847,7 +5057,7 @@ const stakeABI = ` "internalType": "address" }, { - "name": "commissionRate", + "name": "newCommissionRate", "type": "uint64", "indexed": false, "internalType": "uint64" @@ -4931,6 +5141,68 @@ const stakeABI = ` ], "anonymous": false }, + { + "type": "event", + "name": "MigrateFailed", + "inputs": [ + { + "name": "operatorAddress", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "delegator", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "bnbAmount", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "status", + "type": "uint8", + "indexed": false, + "internalType": "enum StakeHub.StakeMigrationStatus" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "MigrateSuccess", + "inputs": [ + { + "name": "operatorAddress", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "delegator", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "shares", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "bnbAmount", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, { "type": "event", "name": "ParamChange", @@ -5194,11 +5466,35 @@ const stakeABI = ` ], "anonymous": false }, + { + "type": "event", + "name": "unexpectedPackage", + "inputs": [ + { + "name": "channelId", + "type": "uint8", + "indexed": false, + "internalType": "uint8" + }, + { + "name": "msgBytes", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + } + ], + "anonymous": false + }, { "type": "error", "name": "AlreadySlashed", "inputs": [] }, + { + "type": "error", + "name": "ConsensusAddressExpired", + "inputs": [] + }, { "type": "error", "name": "DelegationAmountTooSmall", @@ -5209,6 +5505,11 @@ const stakeABI = ` "name": "DuplicateConsensusAddress", "inputs": [] }, + { + "type": "error", + "name": "DuplicateMoniker", + "inputs": [] + }, { "type": "error", "name": "DuplicateVoteAddress", @@ -5239,6 +5540,11 @@ const stakeABI = ` "name": "InvalidRequest", "inputs": [] }, + { + "type": "error", + "name": "InvalidSynPackage", + "inputs": [] + }, { "type": "error", "name": "InvalidValue", @@ -5267,7 +5573,7 @@ const stakeABI = ` }, { "type": "error", - "name": "NoMoreFelonyToday", + "name": "NoMoreFelonyAllowed", "inputs": [] }, { @@ -5357,6 +5663,11 @@ const stakeABI = ` "name": "ValidatorNotJailed", "inputs": [] }, + { + "type": "error", + "name": "VoteAddressExpired", + "inputs": [] + }, { "type": "error", "name": "ZeroShares", diff --git a/consensus/parlia/feynmanfork.go b/consensus/parlia/feynmanfork.go index 13d3ebdfd6..51c2007ba8 100644 --- a/consensus/parlia/feynmanfork.go +++ b/consensus/parlia/feynmanfork.go @@ -18,11 +18,12 @@ import ( "github.com/ethereum/go-ethereum/rpc" ) -// TODO: revert to normal value +// TODO: SecondsPerDay represents the seconds in a day, it should be 86400 +// We set it to 60 for testing purpose and we will change it back to 86400 when launching // const SecondsPerDay uint64 = 86400 const SecondsPerDay uint64 = 60 -// the parmas should be blocks' time which are timestamp +// the params should be two blocks' time(timestamp) func sameDayInUTC(first, second uint64) bool { return first/SecondsPerDay == second/SecondsPerDay } diff --git a/core/systemcontracts/upgrade.go b/core/systemcontracts/upgrade.go index 3048d6f549..328e56219b 100644 --- a/core/systemcontracts/upgrade.go +++ b/core/systemcontracts/upgrade.go @@ -764,7 +764,7 @@ func init() { }, } - // TODO: update to latest + // TODO: update mainNet and chapelNet to latest version feynmanUpgrade[mainNet] = &Upgrade{ UpgradeName: "feynman", Configs: []*UpgradeConfig{ @@ -829,6 +829,16 @@ func init() { CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/cfc0bd1127186a917ddc38fd38d22903034d3f0b", Code: "608060405234801561001057600080fd5b50600436106102f15760003560e01c8063831d65d11161019d578063c81b1662116100e9578063df8079e9116100a2578063f9a2bbc71161007c578063f9a2bbc714610575578063fc3e59081461057d578063fc4333cd14610585578063fd6a68791461058d576102f1565b8063df8079e91461055d578063e1c7392a14610565578063eb57bff71461056d576102f1565b8063c81b16621461050c578063c8509d8114610514578063c96be4cb14610527578063cc844b731461053a578063d2a42e4b1461054d578063dc927faf14610555576102f1565b8063aa82dce111610156578063ac0af62911610130578063ac0af629146104e1578063ac431751146104e9578063ae61dc3b146104fc578063c80d4b8f14610504576102f1565b8063aa82dce1146104c9578063aad56063146104d1578063ab51bb96146104d9576102f1565b8063831d65d11461048357806396713da9146104965780639dc092621461049e5780639e89ded8146104a6578063a1a11bf5146104b9578063a78abc16146104c1576102f1565b8063493279b11161025c5780636e47b4821161021557806375d47a0a116101ef57806375d47a0a146104635780637912a65d1461046b5780637942fd05146104735780638256ace61461047b576102f1565b80636e47b4821461044b57806370fd5bad14610453578063718a8aa81461045b576102f1565b8063493279b1146104035780634bf6c8821461041857806351e8067214610420578063567a372d146104285780635bfb49901461043057806362b72cf514610443576102f1565b806335aa2e44116102ae57806335aa2e441461039557806337c8dab9146103a8578063389f4f71146103c95780633a63f4b1146103de5780633dffc387146103e657806343756e5c146103fb576102f1565b80630bee7a67146102f65780630e2374a5146103145780631182b8751461032957806322d1e80b1461034957806323bac5a21461035e5780632796211814610380575b600080fd5b6102fe610595565b60405161030b9190613ddc565b60405180910390f35b61031c61059a565b60405161030b91906135af565b61033c6103373660046134e5565b6105a0565b60405161030b91906135e7565b610351610606565b60405161030b91906135dc565b61037161036c3660046131fc565b61060f565b60405161030b93929190613dc4565b61039361038e366004613342565b610632565b005b61031c6103a33660046134b5565b610a4d565b6103bb6103b63660046131fc565b610a74565b60405161030b929190613db6565b6103d1610acb565b60405161030b9190613d8c565b6103d1610ad1565b6103ee610ad7565b60405161030b9190613ded565b61031c610adc565b61040b610ae2565b60405161030b9190613d7d565b6103ee610ae8565b61031c610aed565b6103d1610af3565b61039361043e3660046131fc565b610af9565b6103d1610ba4565b61031c610baa565b6103ee610bb0565b6103ee610bb5565b61031c610bba565b6103d1610bc0565b6103ee610bc5565b6103bb610bca565b6103936104913660046134e5565b610bd4565b6103ee610ce7565b61031c610cec565b6103936104b4366004613234565b610cf2565b61031c610d21565b610351610d27565b61031c610d30565b61031c610d36565b6102fe610d3c565b6103d1610d41565b6103936104f7366004613399565b610d46565b6103d16112f6565b6103d16112fd565b61031c611302565b6103936105223660046134e5565b611308565b6103936105353660046131fc565b611379565b610393610548366004613402565b6117fa565b6103d1611e45565b61031c611e4a565b61031c611e50565b610393611e56565b6103d1611e93565b61031c611e99565b6103ee611e9f565b610393611ea4565b61031c6122ed565b606481565b61200181565b606033612000146105cc5760405162461bcd60e51b81526004016105c390613bd5565b60405180910390fd5b60005460ff166105ee5760405162461bcd60e51b81526004016105c390613705565b60405162461bcd60e51b81526004016105c390613cc6565b60075460ff1681565b600260208190526000918252604090912080546001820154919092015460ff1683565b60005460ff166106545760405162461bcd60e51b81526004016105c390613705565b8151158015906106645750805115155b6106805760405162461bcd60e51b81526004016105c390613b33565b60408051600380825260808201909252606091816020015b60608152602001906001900390816106985790505090506106ba6102ca6122f3565b816000815181106106c757fe5b60200260200101819052506106db8361230e565b816001815181106106e857fe5b60200260200101819052506106fc8261230e565b8160028151811061070957fe5b6020026020010181905250606061071f82612364565b60408051603480825260608281019093529293509091602082018180368337019050509050815160346020830182602086016068600019fa61076057600080fd5b50601481015160348201516040516333c1892360e21b81526000906120029063cf06248c906107939086906004016135af565b60206040518083038186803b1580156107ab57600080fd5b505afa1580156107bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107e39190613218565b6001600160a01b0316141561080a5760405162461bcd60e51b81526004016105c3906136d5565b4281621baf8001101561082f5760405162461bcd60e51b81526004016105c390613676565b60606110006001600160a01b0316633b071dcc6040518163ffffffff1660e01b815260040160006040518083038186803b15801561086c57600080fd5b505afa158015610880573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526108a8919081019061325f565b50905060005b81518110156109eb578181815181106108c357fe5b60200260200101516001600160a01b0316846001600160a01b031614156109e3576006546040516309a99b4f60e41b815260646110028031909302049190639a99b4f09061091790339085906004016135c3565b602060405180830381600087803b15801561093157600080fd5b505af1158015610945573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061096991906134cd565b506110006001600160a01b03166335409f7f84848151811061098757fe5b60200260200101516040518263ffffffff1660e01b81526004016109ab91906135af565b600060405180830381600087803b1580156109c557600080fd5b505af11580156109d9573d6000803e3d6000fd5b50505050506109eb565b6001016108ae565b50604051631871f7d960e31b81526120029063c38fbec890610a119086906004016135af565b600060405180830381600087803b158015610a2b57600080fd5b505af1158015610a3f573d6000803e3d6000fd5b505050505050505050505050565b60018181548110610a5a57fe5b6000918252602090912001546001600160a01b0316905081565b600080610a7f612fe3565b5050506001600160a01b0316600090815260026020818152604092839020835160608101855281548082526001830154938201849052919093015460ff16151592909301919091529091565b60055481565b60065481565b600181565b61100181565b6102ca81565b600881565b61200081565b60045481565b3361100014610b1a5760405162461bcd60e51b81526004016105c390613994565b60005460ff16610b3c5760405162461bcd60e51b81526004016105c390613705565b61200063f7a251d7600b610b4f846123f5565b60006040518463ffffffff1660e01b8152600401610b6f93929190613dfb565b600060405180830381600087803b158015610b8957600080fd5b505af1158015610b9d573d6000803e3d6000fd5b5050505050565b60035481565b61100581565b600281565b601081565b61100881565b600581565b600b81565b6004546005549091565b3361200014610bf55760405162461bcd60e51b81526004016105c390613bd5565b60005460ff16610c175760405162461bcd60e51b81526004016105c390613705565b610c1f613006565b6000610c6084848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506124bf92505050565b915091508015610ca75781516040517f7f0956d47419b9525356e7111652b653b530ec6f5096dccc04589bc38e62996791610c9a91613ddc565b60405180910390a1610b9d565b81516040517f7d45f62d17443dd4547bca8a8112c60e2385669318dc300ec61a5d2492f262e791610cd791613ddc565b60405180910390a150505b505050565b600981565b61100781565b3361100014610d135760405162461bcd60e51b81526004016105c390613994565b610d1d828261253f565b5050565b61100681565b60005460ff1681565b61200281565b61300081565b600081565b600481565b60005460ff16610d685760405162461bcd60e51b81526004016105c390613705565b3361100714610d895760405162461bcd60e51b81526004016105c390613a6c565b610df484848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260148152731b5a5cd9195b59585b9bdc951a1c995cda1bdb1960621b602082015291506127169050565b15610e8f5760208114610e195760405162461bcd60e51b81526004016105c390613920565b604080516020601f8401819004810282018101909252828152600091610e579185858083850183828082843760009201919091525061277092505050565b905060018110158015610e6b575060055481105b610e875760405162461bcd60e51b81526004016105c390613b90565b6004556112b3565b610ef584848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600f81526e19995b1bdb9e551a1c995cda1bdb19608a1b602082015291506127169050565b15610f915760208114610f1a5760405162461bcd60e51b81526004016105c390613aba565b604080516020601f8401819004810282018101909252828152600091610f589185858083850183828082843760009201919091525061277092505050565b90506103e88111158015610f6d575060045481115b610f895760405162461bcd60e51b81526004016105c3906137be565b6005556112b3565b61100584848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601881527f66696e616c697479536c617368526577617264526174696f0000000000000000602082015291506127169050565b1561109f576020811461102a5760405162461bcd60e51b81526004016105c390613cfd565b604080516020601f84018190048102820181019092528281526000916110689185858083850183828082843760009201919091525061277092505050565b9050600a811015801561107b5750606481105b6110975760405162461bcd60e51b81526004016105c3906138d4565b6006556112b3565b61111384848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601881527f656e61626c654d616c6963696f7573566f7465536c6173680000000000000000602082015291506127169050565b1561118a57602081146111385760405162461bcd60e51b81526004016105c3906137f3565b604080516020601f8401819004810282018101909252828152611174919084848083850183828082843760009201919091525061277592505050565b6007805460ff19169115159190911790556112b3565b6111fe84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601781527f6d616c6963696f7573566f7465536c61736853636f7065000000000000000000602082015291506127169050565b1561129b57602081146112235760405162461bcd60e51b81526004016105c39061362c565b604080516020601f84018190048102820181019092528281526000916112619185858083850183828082843760009201919091525061277092505050565b905061708081101580156112775750620d2f0081105b6112935760405162461bcd60e51b81526004016105c39061373c565b6008556112b3565b60405162461bcd60e51b81526004016105c390613c71565b7f6cdb0ac70ab7f2e2d035cca5be60d89906f2dede7648ddbd7402189c1eeed17a848484846040516112e894939291906135fa565b60405180910390a150505050565b6201518081565b600a81565b61100281565b33612000146113295760405162461bcd60e51b81526004016105c390613bd5565b60005460ff1661134b5760405162461bcd60e51b81526004016105c390613705565b6040517f07db600eebe2ac176be8dcebad61858c245a4961bb32ca2aa3d159b09aa0810e90600090a1505050565b3341146113985760405162461bcd60e51b81526004016105c390613c24565b60005460ff166113ba5760405162461bcd60e51b81526004016105c390613705565b60035443116113db5760405162461bcd60e51b81526004016105c390613d48565b3a156113f95760405162461bcd60e51b81526004016105c390613a0f565b60405163155853f360e21b8152611000906355614fcc9061141e9084906004016135af565b60206040518083038186803b15801561143657600080fd5b505afa15801561144a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061146e9190613322565b611477576117f3565b61147f612fe3565b506001600160a01b0381166000908152600260208181526040928390208351606081018552815481526001820154928101929092529091015460ff1615801592820192909252906114da576020810180516001019052611533565b60016040820181905260208201819052805480820182556000919091527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180546001600160a01b0319166001600160a01b0384161790555b43815260055460208201518161154557fe5b0661172157600060208201526040516335409f7f60e01b8152611000906335409f7f906115769085906004016135af565b600060405180830381600087803b15801561159057600080fd5b505af11580156115a4573d6000803e3d6000fd5b50506040516333c1892360e21b815260009250612002915063cf06248c906115d09086906004016135af565b60206040518083038186803b1580156115e857600080fd5b505afa1580156115fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116209190613218565b6001600160a01b0316146116415761163c82826020015161253f565b61171c565b61200063f7a251d7600b611654856123f5565b60006040518463ffffffff1660e01b815260040161167493929190613dfb565b600060405180830381600087803b15801561168e57600080fd5b505af192505050801561169f575060015b61171c573d8080156116cd576040519150601f19603f3d011682016040523d82523d6000602084013e6116d2565b606091505b50826001600160a01b03167fd7bc86ff5d08c8ab043edec743302aba2520e6635172a428bc956721db9e2d1c836020015183604051611712929190613d95565b60405180910390a2505b61178d565b60045481602001518161173057fe5b0661178d576040516375abf10160e11b81526110009063eb57e2029061175a9085906004016135af565b600060405180830381600087803b15801561177457600080fd5b505af1158015611788573d6000803e3d6000fd5b505050505b6001600160a01b0382166000818152600260208181526040808420865181559186015160018301558581015191909201805460ff1916911515919091179055517fddb6012116e51abf5436d956a4f0ebd927e92c576ff96d7918290c8782291e3e9190a2505b5043600355565b60005460ff1661181c5760405162461bcd60e51b81526004016105c390613705565b60075460ff1661183e5760405162461bcd60e51b81526004016105c3906136a0565b60065461184b5760146006555b60085461185a57620151806008555b60085481516040015143910111801561187e57504360085482602001516040015101115b61189a5760405162461bcd60e51b81526004016105c390613c98565b8060200151602001518160000151602001511480156118c85750806020015160600151816000015160600151145b156118e55760405162461bcd60e51b81526004016105c390613967565b8051604081015190511080156119045750602081015160408101519051105b6119205760405162461bcd60e51b81526004016105c39061389d565b6020810151518151511080156119455750806000015160400151816020015160400151105b8061197057508051516020820151511080156119705750806020015160400151816000015160400151105b8061198a5750806020015160400151816000015160400151145b6119a65760405162461bcd60e51b81526004016105c390613787565b604080820151905163ea321e4960e01b81526110009163ea321e49916119cf91906004016135e7565b60206040518083038186803b1580156119e757600080fd5b505afa1580156119fb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a1f9190613322565b611a3b5760405162461bcd60e51b81526004016105c390613a3d565b611a4d8160000151826040015161279d565b8015611a665750611a668160200151826040015161279d565b611a825760405162461bcd60e51b81526004016105c39061383e565b6060806110006001600160a01b0316633b071dcc6040518163ffffffff1660e01b815260040160006040518083038186803b158015611ac057600080fd5b505afa158015611ad4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611afc919081019061325f565b9150915060005b8151811015611c3957611b2d828281518110611b1b57fe5b60200260200101518560400151612975565b15611c31576006546040516309a99b4f60e41b815260646110028031909302049190639a99b4f090611b6590339085906004016135c3565b602060405180830381600087803b158015611b7f57600080fd5b505af1158015611b93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bb791906134cd565b506110006001600160a01b03166335409f7f858481518110611bd557fe5b60200260200101516040518263ffffffff1660e01b8152600401611bf991906135af565b600060405180830381600087803b158015611c1357600080fd5b505af1158015611c27573d6000803e3d6000fd5b5050505050611c39565b600101611b03565b506040808401519051630f5b9efd60e31b815260009161200291637adcf7e891611c65916004016135e7565b60206040518083038186803b158015611c7d57600080fd5b505afa158015611c91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cb59190613218565b6001600160a01b031614611d23576040808401519051630e9fbf5160e01b815261200291630e9fbf5191611cec91906004016135e7565b600060405180830381600087803b158015611d0657600080fd5b505af1158015611d1a573d6000803e3d6000fd5b50505050610ce2565b6000611d34846040015160006129d9565b90506120006001600160a01b031663f7a251d7600b611d5687604001516129f5565b60006040518463ffffffff1660e01b8152600401611d7693929190613dfb565b600060405180830381600087803b158015611d9057600080fd5b505af1925050508015611da1575060015b611e13573d808015611dcf576040519150601f19603f3d011682016040523d82523d6000602084013e611dd4565b606091505b50817fd58d1183100bd0932c0588f31c4205d6bc6168909765a96c41adbed3115f362882604051611e0591906135e7565b60405180910390a250611e3f565b60405181907f7b78aadacff901d8b63d0dba4f86283d4db8aef27f9ed70413dd860f1c9532b690600090a25b50505050565b601481565b61100381565b61200481565b60005460ff1615611e795760405162461bcd60e51b81526004016105c390613afc565b60056004819055600a90556000805460ff19166001179055565b60085481565b61100081565b600381565b3361100014611ec55760405162461bcd60e51b81526004016105c390613994565b60005460ff16611ee75760405162461bcd60e51b81526004016105c390613705565b600154611ef3576122eb565b600154600090600019015b8082116122bf576000805b8284101561202257611f19612fe3565b6002600060018781548110611f2a57fe5b60009182526020808320909101546001600160a01b0316835282810193909352604091820190208151606081018352815481526001820154938101939093526002015460ff16151590820152600554909150600490048160200151111561200c57600460055481611f9757fe5b04816020015103816020018181525050806002600060018881548110611fb957fe5b6000918252602080832091909101546001600160a01b0316835282810193909352604091820190208351815591830151600183015591909101516002909101805460ff1916911515919091179055612016565b6001925050612022565b50836001019350611f09565b8284116121b957612031612fe3565b600260006001868154811061204257fe5b60009182526020808320909101546001600160a01b0316835282810193909352604091820190208151606081018352815481526001820154938101939093526002015460ff16151590820152600554909150600490048160200151111561212a576004600554816120af57fe5b048160200151038160200181815250508060026000600187815481106120d157fe5b6000918252602080832091909101546001600160a01b03168352828101939093526040918201902083518155918301516001808401919091559201516002909101805460ff191691151591909117905591506121b99050565b600260006001868154811061213b57fe5b60009182526020808320909101546001600160a01b031683528201929092526040018120818155600181810192909255600201805460ff1916905580548061217f57fe5b600082815260209020810160001990810180546001600160a01b0319169055019055836121ac57506121b9565b5060001990920191612022565b8180156121c35750805b156122a25760026000600186815481106121d957fe5b60009182526020808320909101546001600160a01b031683528201929092526040018120818155600181810192909255600201805460ff1916905580548490811061222057fe5b600091825260209091200154600180546001600160a01b03909216918690811061224657fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600180548061227f57fe5b600082815260209020810160001990810180546001600160a01b03191690550190555b826122ae5750506122bf565b505060019091019060001901611efe565b6040517fcfdb3b6ccaeccbdc68be3c59c840e3b3c90f0a7c491f5fff1cf56cfda200dd9c90600090a150505b565b61100481565b606061230661230183612a30565b61230e565b90505b919050565b6060815160011480156123405750607f60f81b8260008151811061232e57fe5b01602001516001600160f81b03191611155b1561234c575080612309565b61230661235e8351608060ff16612b16565b83612be8565b60608151600014156123855750604080516000815260208101909152612309565b60608260008151811061239457fe5b602002602001015190506000600190505b83518110156123d5576123cb828583815181106123be57fe5b6020026020010151612be8565b91506001016123a5565b506123ee6123e8825160c060ff16612b16565b82612be8565b9392505050565b60408051600480825260a08201909252606091829190816020015b6060815260200190600190039081612410579050509050612439836001600160a01b0316612c65565b8160008151811061244657fe5b602002602001018190525061245a436122f3565b8160018151811061246757fe5b602090810291909101015261247d6102ca6122f3565b8160028151811061248a57fe5b602002602001018190525061249e426122f3565b816003815181106124ab57fe5b60200260200101819052506123ee81612364565b6124c7613006565b60006124d1613006565b6124d9613018565b6124ea6124e586612c88565b612cad565b90506000805b6124f983612cf7565b1561253257806125255761251461250f84612d18565b612d66565b63ffffffff1684526001915061252a565b612532565b6001016124f0565b5091935090915050915091565b6040516375cc7d8960e01b8152612002906375cc7d89906125649085906004016135af565b600060405180830381600087803b15801561257e57600080fd5b505af192505050801561258f575060015b610d1d576040516000815260443d10156125ab57506000612648565b60046000803e60005160e01c6308c379a081146125cc576000915050612648565b60043d036004833e81513d602482011167ffffffffffffffff821117156125f857600092505050612648565b808301805167ffffffffffffffff81111561261a576000945050505050612648565b8060208301013d860181111561263857600095505050505050612648565b601f01601f191660405250925050505b80612653575061269c565b826001600160a01b03167fd7bc86ff5d08c8ab043edec743302aba2520e6635172a428bc956721db9e2d1c838360405161268e929190613d95565b60405180910390a250612711565b3d8080156126c6576040519150601f19603f3d011682016040523d82523d6000602084013e6126cb565b606091505b50826001600160a01b03167fd7bc86ff5d08c8ab043edec743302aba2520e6635172a428bc956721db9e2d1c8383604051612707929190613d95565b60405180910390a2505b610d1d565b6000816040516020016127299190613593565b60405160208183030381529060405280519060200120836040516020016127509190613593565b604051602081830303815290604052805190602001201490505b92915050565b015190565b8082015160009060ff81161561278f576001915081612795565b60009150815b505092915050565b60408051600480825260a0820190925260009160609190816020015b60608152602001906001900390816127b95750506040805160208082528183019092529192506060919080820181803683370190505090506127fe85600001516122f3565b8260008151811061280b57fe5b60200260200101819052506128266020866020015183612de8565b61282f8161230e565b8260018151811061283c57fe5b602002602001018190525061285485604001516122f3565b8260028151811061286157fe5b602002602001018190525061287c6020866060015183612de8565b6128858161230e565b8260038151811061289257fe5b60200260200101819052506128b860206128ab84612364565b8051906020012083612de8565b6040805160b080825260e082019092526060916020820181803683370190505090506128e8818360006020612df8565b6128fa81876080015160206060612df8565b612908818660806030612df8565b604080516001808252818301909252606091602082018180368337019050509050815160016020830182602086016066600019fa61294557600080fd5b506001612953826000612e4b565b60ff161461296857600094505050505061276a565b5060019695505050505050565b81518151600091600191811480831461299157600092506129cf565b600160208701838101602088015b6002848385100114156129ca5780518351146129be5760009650600093505b6020928301920161299f565b505050505b5090949350505050565b600081602001835110156129ec57600080fd5b50016020015190565b60408051600480825260a08201909252606091829190816020015b6060815260200190600190039081612a105790505090506124398361230e565b604080516020808252818301909252606091829190602082018180368337505050602081018490529050600067ffffffffffffffff198416612a7457506018612a98565b6fffffffffffffffffffffffffffffffff198416612a9457506010612a98565b5060005b6020811015612ace57818181518110612aad57fe5b01602001516001600160f81b03191615612ac657612ace565b600101612a98565b60008160200390506060816040519080825280601f01601f191660200182016040528015612b03576020820181803683370190505b5080830196909652508452509192915050565b6060680100000000000000008310612b405760405162461bcd60e51b81526004016105c390613875565b60408051600180825281830190925260609160208201818036833701905050905060378411612b9a5782840160f81b81600081518110612b7c57fe5b60200101906001600160f81b031916908160001a905350905061276a565b6060612ba585612a30565b90508381510160370160f81b82600081518110612bbe57fe5b60200101906001600160f81b031916908160001a905350612bdf8282612be8565b95945050505050565b6060806040519050835180825260208201818101602087015b81831015612c19578051835260209283019201612c01565b50855184518101855292509050808201602086015b81831015612c46578051835260209283019201612c2e565b508651929092011591909101601f01601f191660405250905092915050565b60408051600560a21b83186014820152603481019091526060906123ee8161230e565b612c90613038565b506040805180820190915281518152602082810190820152919050565b612cb5613018565b612cbe82612e67565b612cc757600080fd5b6000612cd68360200151612ea1565b60208085015160408051808201909152868152920190820152915050919050565b6000612d01613038565b505080518051602091820151919092015191011190565b612d20613038565b612d2982612cf7565b612d3257600080fd5b60208201516000612d4282612f04565b80830160209586015260408051808201909152908152938401919091525090919050565b805160009015801590612d7b57508151602110155b612d8457600080fd5b6000612d938360200151612ea1565b90508083600001511015612db95760405162461bcd60e51b81526004016105c390613b59565b825160208085015183018051928490039291831015612ddf57826020036101000a820491505b50949350505050565b9091018181526020918201910152565b60005b81811015610b9d57838181518110612e0f57fe5b602001015160f81c60f81b858480600101955081518110612e2c57fe5b60200101906001600160f81b031916908160001a905350600101612dfb565b60008160010183511015612e5e57600080fd5b50016001015190565b8051600090612e7857506000612309565b6020820151805160001a9060c0821015612e9757600092505050612309565b5060019392505050565b8051600090811a6080811015612ebb576000915050612309565b60b8811080612ed6575060c08110801590612ed6575060f881105b15612ee5576001915050612309565b60c0811015612ef95760b519019050612309565b60f519019050612309565b80516000908190811a6080811015612f1f5760019150612fdc565b60b8811015612f3457607e1981019150612fdc565b60c0811015612f8557600060b78203600186019550806020036101000a865104915060018101820193505080831015612f7f5760405162461bcd60e51b81526004016105c3906139e4565b50612fdc565b60f8811015612f9a5760be1981019150612fdc565b600060f78203600186019550806020036101000a8651049150600181018201935050808310156127955760405162461bcd60e51b81526004016105c3906139e4565b5092915050565b604051806060016040528060008152602001600081526020016000151581525090565b60408051602081019091526000815290565b604051806040016040528061302b613038565b8152602001600081525090565b604051806040016040528060008152602001600081525090565b600082601f830112613062578081fd5b815161307561307082613e4e565b613e27565b818152915060208083019084810160005b848110156130eb578151870188603f8201126130a157600080fd5b838101516130b161307082613e6e565b81815260408b818486010111156130c757600080fd5b6130d683888401838701613e92565b50865250509282019290820190600101613086565b505050505092915050565b60008083601f840112613107578182fd5b50813567ffffffffffffffff81111561311e578182fd5b60208301915083602082850101111561313657600080fd5b9250929050565b600082601f83011261314d578081fd5b813561315b61307082613e6e565b915080825283602082850101111561317257600080fd5b8060208401602084013760009082016020015292915050565b600060a0828403121561319c578081fd5b6131a660a0613e27565b905081358152602082013560208201526040820135604082015260608201356060820152608082013567ffffffffffffffff8111156131e457600080fd5b6131f08482850161313d565b60808301525092915050565b60006020828403121561320d578081fd5b81356123ee81613ebe565b600060208284031215613229578081fd5b81516123ee81613ebe565b60008060408385031215613246578081fd5b823561325181613ebe565b946020939093013593505050565b60008060408385031215613271578182fd5b825167ffffffffffffffff80821115613288578384fd5b81850186601f820112613299578485fd5b805192506132a961307084613e4e565b80848252602080830192508084018a8283890287010111156132c9578889fd5b8894505b868510156132f45780516132e081613ebe565b8452600194909401939281019281016132cd565b50880151909650935050508082111561330b578283fd5b5061331885828601613052565b9150509250929050565b600060208284031215613333578081fd5b815180151581146123ee578182fd5b60008060408385031215613354578182fd5b823567ffffffffffffffff8082111561336b578384fd5b6133778683870161313d565b9350602085013591508082111561338c578283fd5b506133188582860161313d565b600080600080604085870312156133ae578182fd5b843567ffffffffffffffff808211156133c5578384fd5b6133d1888389016130f6565b909650945060208701359150808211156133e9578384fd5b506133f6878288016130f6565b95989497509550505050565b600060208284031215613413578081fd5b813567ffffffffffffffff8082111561342a578283fd5b8184016060818703121561343c578384fd5b6134466060613e27565b9250803582811115613456578485fd5b6134628782840161318b565b845250602081013582811115613476578485fd5b6134828782840161318b565b602085015250604081013582811115613499578485fd5b6134a58782840161313d565b6040850152509195945050505050565b6000602082840312156134c6578081fd5b5035919050565b6000602082840312156134de578081fd5b5051919050565b6000806000604084860312156134f9578081fd5b833560ff81168114613509578182fd5b9250602084013567ffffffffffffffff811115613524578182fd5b613530868287016130f6565b9497909650939450505050565b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b6000815180845261357f816020860160208601613e92565b601f01601f19169290920160200192915050565b600082516135a5818460208701613e92565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b901515815260200190565b6000602082526123ee6020830184613567565b60006040825261360e60408301868861353d565b828103602084015261362181858761353d565b979650505050505050565b6020808252602a908201527f6c656e677468206f66206d616c6963696f7573566f7465536c61736853636f706040820152690ca40dad2e6dac2e8c6d60b31b606082015260800190565b60208082526010908201526f195d9a59195b98d9481d1bdbc81bdb1960821b604082015260600190565b6020808252818101527f6d616c6963696f757320766f746520736c617368206e6f7420656e61626c6564604082015260600190565b6020808252601690820152751d985b1a59185d1bdc881b9bdd081b5a59dc985d195960521b604082015260600190565b60208082526019908201527f74686520636f6e7472616374206e6f7420696e69742079657400000000000000604082015260600190565b6020808252602b908201527f746865206d616c6963696f757320766f746520736c6173682073636f7065206f60408201526a7574206f662072616e676560a81b606082015260800190565b6020808252601a908201527f6e6f2076696f6c6174696f6e206f6620766f74652072756c6573000000000000604082015260600190565b6020808252818101527f7468652066656c6f6e795468726573686f6c64206f7574206f662072616e6765604082015260600190565b6020808252602b908201527f6c656e677468206f6620656e61626c654d616c6963696f7573566f7465536c6160408201526a0e6d040dad2e6dac2e8c6d60ab1b606082015260800190565b60208082526017908201527f766572696679207369676e6174757265206661696c6564000000000000000000604082015260600190565b6020808252600e908201526d696e70757420746f6f206c6f6e6760901b604082015260600190565b60208082526019908201527f7372634e756d20626967676572207468616e207461724e756d00000000000000604082015260600190565b6020808252602c908201527f7468652066696e616c69747920736c6173682072657761726420726174696f2060408201526b6f7574206f662072616e676560a01b606082015260800190565b60208082526027908201527f6c656e677468206f66206d697364656d65616e6f725468726573686f6c64206d6040820152660d2e6dac2e8c6d60cb1b606082015260800190565b60208082526013908201527274776f206964656e746963616c20766f74657360681b604082015260600190565b60208082526030908201527f746865206d6573736167652073656e646572206d7573742062652076616c696460408201526f185d1bdc94d95d0818dbdb9d1c9858dd60821b606082015260800190565b6020808252601190820152706164646974696f6e206f766572666c6f7760781b604082015260600190565b6020808252601490820152736761737072696365206973206e6f74207a65726f60601b604082015260600190565b6020808252601590820152741d9bdd195059191c881a5cc81b9bdd08199bdd5b99605a1b604082015260600190565b6020808252602e908201527f746865206d6573736167652073656e646572206d75737420626520676f76657260408201526d1b985b98d94818dbdb9d1c9858dd60921b606082015260800190565b60208082526022908201527f6c656e677468206f662066656c6f6e795468726573686f6c64206d69736d61746040820152610c6d60f31b606082015260800190565b60208082526019908201527f74686520636f6e747261637420616c726561647920696e697400000000000000604082015260600190565b6020808252600c908201526b32b6b83a3c903432b0b232b960a11b604082015260600190565b6020808252601a908201527f6c656e677468206973206c657373207468616e206f6666736574000000000000604082015260600190565b60208082526025908201527f746865206d697364656d65616e6f725468726573686f6c64206f7574206f662060408201526472616e676560d81b606082015260800190565b6020808252602f908201527f746865206d6573736167652073656e646572206d7573742062652063726f737360408201526e0818da185a5b8818dbdb9d1c9858dd608a1b606082015260800190565b6020808252602d908201527f746865206d6573736167652073656e646572206d75737420626520746865206260408201526c3637b1b590383937b23ab1b2b960991b606082015260800190565b6020808252600d908201526c756e6b6e6f776e20706172616d60981b604082015260600190565b6020808252601490820152731d185c99d95d08189b1bd8dac81d1bdbc81bdb1960621b604082015260600190565b6020808252601e908201527f7265636569766520756e65787065637465642073796e207061636b6167650000604082015260600190565b6020808252602b908201527f6c656e677468206f662066696e616c697479536c61736852657761726452617460408201526a0d2de40dad2e6dac2e8c6d60ab1b606082015260800190565b6020808252818101527f63616e206e6f7420736c61736820747769636520696e206f6e6520626c6f636b604082015260600190565b61ffff91909116815260200190565b90815260200190565b600083825260406020830152613dae6040830184613567565b949350505050565b918252602082015260400190565b92835260208301919091521515604082015260600190565b63ffffffff91909116815260200190565b60ff91909116815260200190565b600060ff8516825260606020830152613e176060830185613567565b9050826040830152949350505050565b60405181810167ffffffffffffffff81118282101715613e4657600080fd5b604052919050565b600067ffffffffffffffff821115613e64578081fd5b5060209081020190565b600067ffffffffffffffff821115613e84578081fd5b50601f01601f191660200190565b60005b83811015613ead578181015183820152602001613e95565b83811115611e3f5750506000910152565b6001600160a01b0381168114613ed357600080fd5b5056fea164736f6c6343000604000a", }, + { + ContractAddr: common.HexToAddress(SystemRewardContract), + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/cfc0bd1127186a917ddc38fd38d22903034d3f0b", + Code: "6080604052600436106101fd5760003560e01c806396713da91161010d578063ac431751116100a0578063f1fad1041161006f578063f1fad1041461062b578063f9a2bbc714610640578063fb5478b314610655578063fc3e59081461066a578063fd6a68791461067f57610241565b8063ac4317511461051d578063c81b1662146105ec578063dc927faf14610601578063df8079e91461061657610241565b8063a78abc16116100dc578063a78abc16146104c9578063aa82dce1146104de578063aad56063146104f3578063ab51bb961461050857610241565b806396713da9146104515780639a99b4f0146104665780639dc092621461049f578063a1a11bf5146104b457610241565b806351b4dce31161019057806370fd5bad1161015f57806370fd5bad146103e8578063718a8aa8146103fd57806375d47a0a146104125780637942fd05146104275780637e434d541461043c57610241565b806351b4dce31461036257806351e80672146103775780636d70f7ae1461038c5780636e47b482146103d357610241565b80633dffc387116101cc5780633dffc387146102e157806343756e5c1461030c578063493279b1146103215780634bf6c8821461034d57610241565b80630bee7a67146102465780630e2374a51461027457806328087028146102a55780633a0b0eff146102ba57610241565b3661024157341561023f5760408051348152905133917f6c98249d85d88c3753a04a22230f595e4dc8d3dc86c34af35deeeedc861b89db919081900360200190a25b005b600080fd5b34801561025257600080fd5b5061025b610694565b6040805163ffffffff9092168252519081900360200190f35b34801561028057600080fd5b50610289610699565b604080516001600160a01b039092168252519081900360200190f35b3480156102b157600080fd5b5061028961069f565b3480156102c657600080fd5b506102cf6106a5565b60408051918252519081900360200190f35b3480156102ed57600080fd5b506102f66106ab565b6040805160ff9092168252519081900360200190f35b34801561031857600080fd5b506102896106b0565b34801561032d57600080fd5b506103366106b6565b6040805161ffff9092168252519081900360200190f35b34801561035957600080fd5b506102f66106bc565b34801561036e57600080fd5b506102896106c1565b34801561038357600080fd5b506102896106c7565b34801561039857600080fd5b506103bf600480360360208110156103af57600080fd5b50356001600160a01b03166106cd565b604080519115158252519081900360200190f35b3480156103df57600080fd5b506102896106eb565b3480156103f457600080fd5b506102f66106f1565b34801561040957600080fd5b506102f66106f6565b34801561041e57600080fd5b506102896106fb565b34801561043357600080fd5b506102f6610701565b34801561044857600080fd5b50610289610706565b34801561045d57600080fd5b506102f661070c565b34801561047257600080fd5b506102cf6004803603604081101561048957600080fd5b506001600160a01b038135169060200135610711565b3480156104ab57600080fd5b50610289610911565b3480156104c057600080fd5b50610289610917565b3480156104d557600080fd5b506103bf61091d565b3480156104ea57600080fd5b50610289610926565b3480156104ff57600080fd5b5061028961092c565b34801561051457600080fd5b5061025b610932565b34801561052957600080fd5b5061023f6004803603604081101561054057600080fd5b81019060208101813564010000000081111561055b57600080fd5b82018360208201111561056d57600080fd5b8035906020019184600183028401116401000000008311171561058f57600080fd5b9193909290916020810190356401000000008111156105ad57600080fd5b8201836020820111156105bf57600080fd5b803590602001918460018302840111640100000000831117156105e157600080fd5b509092509050610937565b3480156105f857600080fd5b50610289610cba565b34801561060d57600080fd5b50610289610cc0565b34801561062257600080fd5b50610289610cc6565b34801561063757600080fd5b506102f6610ccc565b34801561064c57600080fd5b50610289610cd1565b34801561066157600080fd5b506102cf610cd7565b34801561067657600080fd5b506102f6610ce3565b34801561068b57600080fd5b50610289610ce8565b606481565b61200181565b61200581565b60015481565b600181565b61100181565b6102ca81565b600881565b61200681565b61200081565b6001600160a01b031660009081526002602052604090205460ff1690565b61100581565b600281565b601081565b61100881565b600b81565b61200381565b600981565b6000805460ff166107e35760026020527fe57bda0a954a7c7381b17b2c763e646ba2c60f67292d287ba583603e2c1c41668054600160ff1991821681179092557fe25235fc0de9d7165652bef0846fefda506174abb9a190f03d0f7bcc6146dbce80548216831790557ffcc09d5775472c6fa988b216f5ce189894c14e093527f732b9b65da0880b5f81805482168317905561100160009081527fd5856b6520af3fbaacead8d875ff5c4db19c2ad37c909e14d0ea394740e2ebc8805483168417905560048355805490911690911790555b3360009081526002602052604090205460ff166108315760405162461bcd60e51b815260040180806020018281038252602b815260200180610dd6602b913960400191505060405180910390fd5b60004783106108405747610842565b825b9050674563918244f4000081111561085f5750674563918244f400005b80156108e0576040516001600160a01b0385169082156108fc029083906000818181858888f1935050505015801561089b573d6000803e3d6000fd5b506040805182815290516001600160a01b038616917ff8b71c64315fc33b2ead2adfa487955065152a8ac33d9d5193aafd7f45dc15a0919081900360200190a261090a565b6040517fe589651933c2457488cc0d8e0941518abf748e799435e4e396d9c4d0b2db2d4d90600090a15b9392505050565b61100781565b61100681565b60005460ff1681565b61200281565b61300081565b600081565b33611007146109775760405162461bcd60e51b815260040180806020018281038252602e815260200180610e30602e913960400191505060405180910390fd5b6109d984848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600b81526a30b23227b832b930ba37b960a91b60208201529150610cee9050565b15610ab157606082828080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505082519293505060149091149050610a5c5760405162461bcd60e51b815260040180806020018281038252602c815260200180610e5e602c913960400191505060405180910390fd5b60148101516001600160a01b038116600081815260026020526040808220805460ff19166001179055517f9870d7fe5d112134c55844951dedf365363006d9c588db07c4c85af6322a06199190a25050610c28565b610b1684848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600e81526d3232b632ba32a7b832b930ba37b960911b60208201529150610cee9050565b15610beb57606082828080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505082519293505060149091149050610b995760405162461bcd60e51b815260040180806020018281038252602f815260200180610e01602f913960400191505060405180910390fd5b60148101516001600160a01b038116600081815260026020526040808220805460ff19169055517fb40992a19dba61ea600e87fce607102bf5908dc89076217b6ca6ae195224f7029190a25050610c28565b6040805162461bcd60e51b815260206004820152600d60248201526c756e6b6e6f776e20706172616d60981b604482015290519081900360640190fd5b7f6cdb0ac70ab7f2e2d035cca5be60d89906f2dede7648ddbd7402189c1eeed17a848484846040518080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600083820152604051601f909101601f19169092018290039850909650505050505050a150505050565b61100281565b61100381565b61200481565b601181565b61100081565b674563918244f4000081565b600381565b61100481565b6000816040516020018082805190602001908083835b60208310610d235780518252601f199092019160209182019101610d04565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405280519060200120836040516020018082805190602001908083835b60208310610d915780518252601f199092019160209182019101610d72565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051602081830303815290604052805190602001201490509291505056fe6f6e6c79206f70657261746f7220697320616c6c6f77656420746f2063616c6c20746865206d6574686f646c656e677468206f662076616c756520666f722064656c6574654f70657261746f722073686f756c64206265203230746865206d6573736167652073656e646572206d75737420626520676f7665726e616e636520636f6e74726163746c656e677468206f662076616c756520666f72206164644f70657261746f722073686f756c64206265203230a164736f6c6343000604000a", + }, + { + ContractAddr: common.HexToAddress(CrossChainContract), + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/cfc0bd1127186a917ddc38fd38d22903034d3f0b", + Code: "608060405234801561001057600080fd5b50600436106103e65760003560e01c806374f079b81161020a578063c27cdcfb11610125578063df8079e9116100b8578063f1fad10411610087578063f1fad10414610bac578063f7a251d714610bb4578063f9a2bbc714610c2c578063fc3e590814610c34578063fd6a687914610c3c576103e6565b8063df8079e914610b74578063e1c7392a14610b7c578063e3b0480514610b84578063e6400bbe14610ba4576103e6565b8063d31f968d116100f4578063d31f968d14610b2d578063d76a867514610b5c578063dc40433114610b64578063dc927faf14610b6c576103e6565b8063c27cdcfb14610af5578063c780e9de14610b15578063c81b166214610b1d578063ccc108d714610b25576103e6565b80639dc092621161019d578063aad560631161016c578063aad5606314610a27578063ab51bb9614610a2f578063ac43175114610a37578063b0355f5b146107d6576103e6565b80639dc0926214610a07578063a1a11bf514610a0f578063a78abc1614610a17578063aa82dce114610a1f576103e6565b806384013b6a116101d957806384013b6a1461091c578063863fe4ab146109f75780638cc8f561146108e457806396713da9146109ff576103e6565b806374f079b8146108fc57806375d47a0a146109045780637942fd051461090c5780637e434d5414610914576103e6565b806343756e5c116103055780636a3cb34d116102985780636e47a51a116102675780636e47a51a146108bc5780636e47b482146108dc57806370fd5bad146108e4578063718a8aa8146108ec578063719482d5146108f4576103e6565b80636a3cb34d146108645780636bacff2c1461086c5780636c46aa68146108645780636de380bd146108b4576103e6565b806351e80672116102d457806351e806721461081e5780635692ddd3146108265780635f8321771461082e57806363e1394e1461085c576103e6565b806343756e5c146107fe578063493279b1146108065780634bf6c8821461080e57806351b4dce314610816576103e6565b8063299b533d1161037d5780633a648b151161034c5780633a648b15146106725780633bdc47a6146106ae5780633dffc387146107d6578063422f9050146107de576103e6565b8063299b533d146105f85780632af6f3991461062c5780632ff32aea14610649578063308325f41461066a576103e6565b80631d130935116103b95780631d130935146104685780631e275ae11461048457806322556cdc146105e857806328087028146105f0576103e6565b806305e68258146103eb5780630bee7a67146104095780630e2374a51461042a57806314b3023b1461044e575b600080fd5b6103f3610c44565b6040805160ff9092168252519081900360200190f35b610411610c49565b6040805163ffffffff9092168252519081900360200190f35b610432610c4e565b604080516001600160a01b039092168252519081900360200190f35b610456610c54565b60408051918252519081900360200190f35b610470610c5a565b604080519115158252519081900360200190f35b6105e6600480360361010081101561049b57600080fd5b81018160a081016080820135600160201b8111156104b857600080fd5b8201836020820111156104ca57600080fd5b803590602001918460018302840111600160201b831117156104eb57600080fd5b919390929091602081019035600160201b81111561050857600080fd5b82018360208201111561051a57600080fd5b803590602001918460018302840111600160201b8311171561053b57600080fd5b919390929091602081019035600160201b81111561055857600080fd5b82018360208201111561056a57600080fd5b803590602001918460018302840111600160201b8311171561058b57600080fd5b919390929091602081019035600160201b8111156105a857600080fd5b8201836020820111156105ba57600080fd5b803590602001918460018302840111600160201b831117156105db57600080fd5b509092509050610c63565b005b610456611347565b61043261134c565b6106156004803603602081101561060e57600080fd5b5035611352565b6040805161ffff9092168252519081900360200190f35b6104706004803603602081101561064257600080fd5b5035611368565b61065161137d565b60408051600792830b90920b8252519081900360200190f35b610456611386565b6106926004803603602081101561068857600080fd5b503560ff1661138c565b604080516001600160401b039092168252519081900360200190f35b610761600480360360608110156106c457600080fd5b60ff82351691602081013591810190606081016040820135600160201b8111156106ed57600080fd5b8201836020820111156106ff57600080fd5b803590602001918460018302840111600160201b8311171561072057600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506113a7945050505050565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561079b578181015183820152602001610783565b50505050905090810190601f1680156107c85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103f361141d565b610470600480360360208110156107f457600080fd5b503560ff16611422565b610432611437565b61061561143d565b6103f3611443565b610432611448565b61043261144e565b610456611454565b6105e66004803603604081101561084457600080fd5b506001600160a01b0381358116916020013516611484565b6104566116e4565b61061561170c565b6108896004803603602081101561088257600080fd5b5035611711565b6040805161ffff90941684526001600160801b03909216602084015282820152519081900360600190f35b610456611740565b610432600480360360208110156108d257600080fd5b503560ff16611767565b610432611782565b6103f361170c565b6103f3611788565b61061561141d565b61045661178d565b610432611793565b6103f3611799565b61043261179e565b6105e6600480360360a081101561093257600080fd5b810190602081018135600160201b81111561094c57600080fd5b82018360208201111561095e57600080fd5b803590602001918460018302840111600160201b8311171561097f57600080fd5b919390929091602081019035600160201b81111561099c57600080fd5b8201836020820111156109ae57600080fd5b803590602001918460018302840111600160201b831117156109cf57600080fd5b919350915080356001600160401b03908116916020810135909116906040013560ff166117a4565b610456612a5e565b6103f3612a66565b610432612a6b565b610432612a71565b610470612a77565b610432612a80565b610432612a86565b610411610c44565b6105e660048036036040811015610a4d57600080fd5b810190602081018135600160201b811115610a6757600080fd5b820183602082011115610a7957600080fd5b803590602001918460018302840111600160201b83111715610a9a57600080fd5b919390929091602081019035600160201b811115610ab757600080fd5b820183602082011115610ac957600080fd5b803590602001918460018302840111600160201b83111715610aea57600080fd5b509092509050612a8c565b61069260048036036020811015610b0b57600080fd5b503560ff16613550565b61045661356b565b61043261358f565b6105e6613595565b61047060048036036040811015610b4357600080fd5b5080356001600160a01b0316906020013560ff166137e9565b610761613809565b610456613828565b61043261382e565b610432613834565b6105e661383a565b61069260048036036020811015610b9a57600080fd5b503560ff16613bf1565b6105e6613c0c565b6103f3613e2b565b6105e660048036036060811015610bca57600080fd5b60ff8235169190810190604081016020820135600160201b811115610bee57600080fd5b820183602082011115610c0057600080fd5b803590602001918460018302840111600160201b83111715610c2157600080fd5b919350915035613e30565b610432613f73565b6103f3613f79565b610432613f7e565b600081565b606481565b61200181565b60015481565b600b5460ff1681565b60005460ff16610ca8576040805162461bcd60e51b81526020600482015260196024820152600080516020614a62833981519152604482015290519081900360640190fd5b604080516337d7f9c160e21b81526001600160401b038b35166004820181905291516110039163df5fe704916024808301926020929190829003018186803b158015610cf357600080fd5b505afa158015610d07573d6000803e3d6000fd5b505050506040513d6020811015610d1d57600080fd5b5051610d5a5760405162461bcd60e51b8152600401808060200182810382526023815260200180614a826023913960400191505060405180910390fd5b604080516337d7f9c160e21b815260208c8101356001600160401b03166004830181905292516110039263df5fe704926024808301939192829003018186803b158015610da657600080fd5b505afa158015610dba573d6000803e3d6000fd5b505050506040513d6020811015610dd057600080fd5b5051610e0d5760405162461bcd60e51b8152600401808060200182810382526023815260200180614a826023913960400191505060405180910390fd5b60608b013560ff81166000908152600560205260409020546001600160401b03909116906001600160a01b0316610e86576040805162461bcd60e51b815260206004820152601860248201527718da185b9b995b081a5cc81b9bdd081cdd5c1c1bdc9d195960421b604482015290519081900360640190fd5b600b5460ff1615610eca576040805162461bcd60e51b81526020600482015260096024820152681cdd5cdc195b99195960ba1b604482015290519081900360640190fd5b8888604051808383808284376040519201829003822094508f93508e9250819050838380828437808301925050509250505060405180910390201415610f46576040805162461bcd60e51b815260206004820152600c60248201526b1cd85b59481c185e5b1bd85960a21b604482015290519081900360640190fd5b60606001600160401b0360408e01358116908e83013516610f678282613f84565b80516020808301919091206000818152600e9092526040909120549194509060ff1615610fd0576040805162461bcd60e51b8152602060048201526012602482015271185b1c9958591e4818da185b1b195b99d95960721b604482015290519081900360640190fd5b6000908152600e60205260408120805460ff191660011790558f8160200201356001600160401b0316905060608f8f8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050905060608c8c8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052506040805163cba510a960e01b81526001600160401b038a16600482015290519596509094611003945063cba510a9935060248083019350602092829003018186803b1580156110c657600080fd5b505afa1580156110da573d6000803e3d6000fd5b505050506040513d60208110156110f057600080fd5b505160408051808201909152600381526269626360e81b602082015290915061111d908290898686613fcc565b611166576040805162461bcd60e51b81526020600482015260156024820152740696e76616c6964206d65726b6c652070726f6f663605c1b604482015290519081900360640190fd5b5050505060008f60016004811061117957fe5b60200201356001600160401b0316905060608d8d8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8f018190048102820181019092528d815293945060609392508d91508c908190840183828082843760009201829052506040805163cba510a960e01b81526001600160401b038a16600482015290519596509094611003945063cba510a9935060248083019350602092829003018186803b15801561124557600080fd5b505afa158015611259573d6000803e3d6000fd5b505050506040513d602081101561126f57600080fd5b505160408051808201909152600381526269626360e81b602082015290915061129c908290898686613fcc565b6112e5576040805162461bcd60e51b8152602060048201526015602482015274696e76616c6964206d65726b6c652070726f6f663160581b604482015290519081900360640190fd5b505050506112f16140c9565b604080516001600160401b038416815260ff83166020820152815133927f039eb91179ffd7d3b6e97f8ea106e748e827f910b872375dbc9c14a362319c3c928290030190a2505050505050505050505050505050565b603281565b61200581565b600d6020526000908152604090205461ffff1681565b600e6020526000908152604090205460ff1681565b60045460070b81565b60025481565b600a602052600090815260409020546001600160401b031681565b60606000825160210190506060816040519080825280601f01601f1916602001820160405280156113df576020820181803683370190505b506021810186905260018101879052828152905060418101600061140286614147565b50905061141181838851614151565b50909695505050505050565b600181565b60096020526000908152604090205460ff1681565b61100181565b6102ca81565b600881565b61200681565b61200081565b604080517710d05390d15317d514905394d1915497d41493d413d4d05360421b8152905190819003601801902081565b60005460ff166114c9576040805162461bcd60e51b81526020600482015260196024820152600080516020614a62833981519152604482015290519081900360640190fd5b6040805163569e4ed360e11b815233600482015290516000916110009163ad3c9da691602480820192602092909190829003018186803b15801561150c57600080fd5b505afa158015611520573d6000803e3d6000fd5b505050506040513d602081101561153657600080fd5b505160408051633d42651560e11b8152905191925060009161100091637a84ca2a916004808301926020929190829003018186803b15801561157757600080fd5b505afa15801561158b573d6000803e3d6000fd5b505050506040513d60208110156115a157600080fd5b50519050806115ae575060155b6000821180156115be5750808211155b6115fd576040805162461bcd60e51b815260206004820152600b60248201526a1b9bdd0818d8589a5b995d60aa1b604482015290519081900360640190fd5b604080516001600160a01b038087166020808401919091529086168284015282518083038401815260608301808552815191909201207710d05390d15317d514905394d1915497d41493d413d4d05360421b909152915190819003607801902060009061166a9083614192565b905080156116dc5760408051630911a2c160e11b81526001600160a01b03888116600483015287166024820152905161100491631223458291604480830192600092919082900301818387803b1580156116c357600080fd5b505af11580156116d7573d6000803e3d6000fd5b505050505b505050505050565b604080516f14d554d411539117d41493d413d4d05360821b8152905190819003601001902081565b600281565b600c602052600090815260409020805460019091015461ffff8216916201000090046001600160801b03169083565b604080516e149153d4115397d41493d413d4d053608a1b8152905190819003600f01902081565b6005602052600090815260409020546001600160a01b031681565b61100581565b601081565b60035481565b61100881565b600b81565b61200381565b60005460ff166117e9576040805162461bcd60e51b81526020600482015260196024820152600080516020614a62833981519152604482015290519081900360640190fd5b60408051630a83aaa960e31b815233600482015290516110069163541d5548916024808301926020929190829003018186803b15801561182857600080fd5b505afa15801561183c573d6000803e3d6000fd5b505050506040513d602081101561185257600080fd5b50516118a5576040805162461bcd60e51b815260206004820152601f60248201527f746865206d73672073656e646572206973206e6f7420612072656c6179657200604482015290519081900360640190fd5b60ff8116600090815260086020526040902054829082906001600160401b039081169083168114611915576040805162461bcd60e51b815260206004820152601560248201527439b2b8bab2b731b2903737ba1034b71037b93232b960591b604482015290519081900360640190fd5b60ff8216600090815260086020908152604091829020805467ffffffffffffffff1916600185016001600160401b039081169190911790915582516337d7f9c160e21b81529089166004820152915188926110039263df5fe70492602480840193829003018186803b15801561198a57600080fd5b505afa15801561199e573d6000803e3d6000fd5b505050506040513d60208110156119b457600080fd5b50516119f15760405162461bcd60e51b8152600401808060200182810382526023815260200180614a826023913960400191505060405180910390fd5b60ff851660009081526005602052604090205485906001600160a01b0316611a5b576040805162461bcd60e51b815260206004820152601860248201527718da185b9b995b081a5cc81b9bdd081cdd5c1c1bdc9d195960421b604482015290519081900360640190fd5b60ff86166000908152600a6020526040902054889087906001600160401b039081169083161015611ac4576040805162461bcd60e51b815260206004820152600e60248201526d3a37b79037b632103432b0b232b960911b604482015290519081900360640190fd5b60ff81166000908152600a60205260409020546001600160401b03838116911614611b165760ff81166000908152600a60205260409020805467ffffffffffffffff19166001600160401b0384161790555b600b5460ff1615611b5a576040805162461bcd60e51b81526020600482015260096024820152681cdd5cdc195b99195960ba1b604482015290519081900360640190fd5b60608e8e8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050905060608d8d8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509050611c9e6110036001600160a01b031663cba510a98e6040518263ffffffff1660e01b815260040180826001600160401b03166001600160401b0316815260200191505060206040518083038186803b158015611c4757600080fd5b505afa158015611c5b573d6000803e3d6000fd5b505050506040513d6020811015611c7157600080fd5b505160408051808201909152600381526269626360e81b6020820152611c978e8e613f84565b8585613fcc565b611ce6576040805162461bcd60e51b815260206004820152601460248201527334b73b30b634b21036b2b935b63290383937b7b360611b604482015290519081900360640190fd5b60408051631bb5062960e31b81526001600160401b038e16600482015290516000916110039163dda8314891602480820192602092909190829003018186803b158015611d3257600080fd5b505afa158015611d46573d6000803e3d6000fd5b505050506040513d6020811015611d5c57600080fd5b505190508b8b600080806060611d7189614477565b935093509350935083611e33578460ff16866001600160401b03167ff7b2e42d694eb1100184aae86d4245d9e46966100b1dc7e723275b98326854ac8b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015611deb578181015183820152602001611dd3565b50505050905090810190601f168015611e185780820380516001836020036101000a031916815260200191505b509250505060405180910390a3505050505050505050612a4e565b6040805160ff85811682529151918716916001600160401b038916917f36afdaf439a8f43fe72135135d804ae620b37a474f0943b5b85f6788312cad40919081900360200190a360ff83166123b85760ff85166000818152600560209081526040808320548151631182b87560e01b815260048101958652602481019283528651604482015286516001600160a01b03909216958695631182b875958d958a9593949093606490910192918601918190849084905b83811015611f00578181015183820152602001611ee8565b50505050905090810190601f168015611f2d5780820380516001836020036101000a031916815260200191505b509350505050600060405180830381600087803b158015611f4d57600080fd5b505af192505050801561203157506040513d6000823e601f3d908101601f191682016040526020811015611f8057600080fd5b8101908080516040519392919084600160201b821115611f9f57600080fd5b908301906020820185811115611fb457600080fd5b8251600160201b811182820188101715611fcd57600080fd5b82525081516020918201929091019080838360005b83811015611ffa578181015183820152602001611fe2565b50505050905090810190601f1680156120275780820380516001836020036101000a031916815260200191505b5060405250505060015b612343576040516000815260443d101561204d575060006120e8565b60046000803e60005160e01c6308c379a0811461206e5760009150506120e8565b60043d036004833e81513d60248201116001600160401b0382111715612099576000925050506120e8565b80830180516001600160401b038111156120ba5760009450505050506120e8565b8060208301013d86018111156120d8576000955050505050506120e8565b601f01601f191660405250925050505b806120f35750612205565b60ff871660009081526007602052604081205461212a916001600160401b0390911690899061212590600290886113a7565b614527565b60ff8716600090815260076020908152604080832080546001600160401b038082166001011667ffffffffffffffff19909116179055805182815284518184015284516001600160a01b038716947ff91a8f63e5b3e0e89e5f93e1915a7805f3c52d9a73b3c09769785c2c7bf87acf948794849390840192918601918190849084905b838110156121c55781810151838201526020016121ad565b50505050905090810190601f1680156121f25780820380516001836020036101000a031916815260200191505b509250505060405180910390a25061233e565b3d80801561222f576040519150601f19603f3d011682016040523d82523d6000602084013e612234565b606091505b5060ff8716600090815260076020526040812054612267916001600160401b0390911690899061212590600290886113a7565b60ff8716600090815260076020908152604080832080546001600160401b038082166001011667ffffffffffffffff19909116179055805182815284518184015284516001600160a01b038716947f63ac299d6332d1cc4e61b81e59bc00c0ac7c798addadf33840f1307cd2977351948794849390840192918601918190849084905b838110156123025781810151838201526020016122ea565b50505050905090810190601f16801561232f5780820380516001836020036101000a031916815260200191505b509250505060405180910390a2505b6123b2565b8051156123b05760ff871660009081526007602052604081205461237c916001600160401b0390911690899061212590600190866113a7565b60ff8716600090815260076020526040902080546001600160401b038082166001011667ffffffffffffffff199091161790555b505b50612986565b60ff83166001141561265c5760ff8516600081815260056020908152604080832054815163831d65d160e01b815260048101958652602481019283528651604482015286516001600160a01b0390921695869563831d65d1958d958a9593949093606490910192918601918190849084905b8381101561244257818101518382015260200161242a565b50505050905090810190601f16801561246f5780820380516001836020036101000a031916815260200191505b509350505050600060405180830381600087803b15801561248f57600080fd5b505af19250505080156124a0575060015b6123b2576040516000815260443d10156124bc57506000612557565b60046000803e60005160e01c6308c379a081146124dd576000915050612557565b60043d036004833e81513d60248201116001600160401b038211171561250857600092505050612557565b80830180516001600160401b03811115612529576000945050505050612557565b8060208301013d860181111561254757600095505050505050612557565b601f01601f191660405250925050505b8061256257506125c7565b60408051602080825283518183015283516001600160a01b038616937ff91a8f63e5b3e0e89e5f93e1915a7805f3c52d9a73b3c09769785c2c7bf87acf93869390928392830191850190808383600083156121c55781810151838201526020016121ad565b3d8080156125f1576040519150601f19603f3d011682016040523d82523d6000602084013e6125f6565b606091505b5060408051602080825283518183015283516001600160a01b038616937f63ac299d6332d1cc4e61b81e59bc00c0ac7c798addadf33840f1307cd297735193869390928392830191850190808383600083156123025781810151838201526020016122ea565b60ff8316600214156129865760ff8516600081815260056020908152604080832054815163c8509d8160e01b815260048101958652602481019283528651604482015286516001600160a01b0390921695869563c8509d81958d958a9593949093606490910192918601918190849084905b838110156126e65781810151838201526020016126ce565b50505050905090810190601f1680156127135780820380516001836020036101000a031916815260200191505b509350505050600060405180830381600087803b15801561273357600080fd5b505af1925050508015612744575060015b612984576040516000815260443d1015612760575060006127fb565b60046000803e60005160e01c6308c379a081146127815760009150506127fb565b60043d036004833e81513d60248201116001600160401b03821117156127ac576000925050506127fb565b80830180516001600160401b038111156127cd5760009450505050506127fb565b8060208301013d86018111156127eb576000955050505050506127fb565b601f01601f191660405250925050505b8061280657506128af565b816001600160a01b03167ff91a8f63e5b3e0e89e5f93e1915a7805f3c52d9a73b3c09769785c2c7bf87acf826040518080602001828103825283818151815260200191508051906020019080838360005b8381101561286f578181015183820152602001612857565b50505050905090810190601f16801561289c5780820380516001836020036101000a031916815260200191505b509250505060405180910390a250612984565b3d8080156128d9576040519150601f19603f3d011682016040523d82523d6000602084013e6128de565b606091505b50816001600160a01b03167f63ac299d6332d1cc4e61b81e59bc00c0ac7c798addadf33840f1307cd2977351826040518080602001828103825283818151815260200191508051906020019080838360005b83811015612948578181015183820152602001612930565b50505050905090810190601f1680156129755780820380516001836020036101000a031916815260200191505b509250505060405180910390a2505b505b60ff80861660009081526009602052604090205461100591636f93d2e6918a913391879116806129b8575060ff881615155b604080516001600160e01b031960e088901b1681526001600160a01b039586166004820152939094166024840152604483019190915215156064820152905160848083019260209291908290030181600087803b158015612a1857600080fd5b505af1158015612a2c573d6000803e3d6000fd5b505050506040513d6020811015612a4257600080fd5b50505050505050505050505b5050505050505050505050505050565b630102ca0081565b600981565b61100781565b61100681565b60005460ff1681565b61200281565b61300081565b3361100714612acc5760405162461bcd60e51b815260040180806020018281038252602e8152602001806149b8602e913960400191505060405180910390fd5b600b5460ff1615612b10576040805162461bcd60e51b81526020600482015260096024820152681cdd5cdc195b99195960ba1b604482015290519081900360640190fd5b612b7984848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080518082019091526012815271626174636853697a65466f724f7261636c6560701b602082015291506146c29050565b15612c1457604080516020601f8401819004810282018101909252828152600091612bbc918585808385018382808284376000920191909152506147a992505050565b90506127108111158015612bd15750600a8110155b612c0c5760405162461bcd60e51b8152600401808060200182810382526032815260200180614a306032913960400191505060405180910390fd5b6001556134be565b612c7d84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601281527118591913dc955c19185d1950da185b9b995b60721b602082015291506146c29050565b15612e0557606082828080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505082519293505060169091149050612d005760405162461bcd60e51b815260040180806020018281038252605a8152602001806148d1605a913960600191505060405180910390fd5b60018101516002820151601683015160ff82161590612d1e816147ae565b612d6f576040805162461bcd60e51b815260206004820152601960248201527f61646472657373206973206e6f74206120636f6e747261637400000000000000604482015290519081900360640190fd5b60ff8416600081815260056020908152604080832080546001600160a01b0319166001600160a01b038716908117909155808452600683528184208585528352818420805460ff199081166001179091556009909352818420805490931687151517909255519092917f7e3b6af43092577ee20e60eaa1d9b114a7031305c895ee7dd3ffe17196d2e1e091a350505050506134be565b612e7284848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080518082019091526016815275195b98589b1953dc911a5cd8589b1950da185b9b995b60521b602082015291506146c29050565b15612fa357606082828080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505082519293505060029091149050612ef55760405162461bcd60e51b815260040180806020018281038252604a8152602001806149e6604a913960600191505060405180910390fd5b600181810151600283015160ff80831660009081526005602052604090205492939192908316909114906001600160a01b03168015612f99576001600160a01b038116600090815260066020908152604080832060ff881680855290835292819020805460ff1916861515908117909155815190815290517fa3132e3f9819fbddc7f0ed6d38d7feef59aa95112090b7c592f5cb5bc4aa4adc929181900390910190a25b50505050506134be565b61300784848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600d81526c73757370656e6451756f72756d60981b602082015291506146c29050565b1561313c576002811461304b5760405162461bcd60e51b815260040180806020018281038252602d81526020018061495f602d913960400191505060405180910390fd5b600061308e600284848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506147a992505050565b905060008161ffff161180156130a8575060648161ffff16105b6130f2576040805162461bcd60e51b8152602060048201526016602482015275696e76616c69642073757370656e642071756f72756d60501b604482015290519081900360640190fd5b604080516f14d554d411539117d41493d413d4d05360821b815281519081900360100190206000908152600d60205220805461ffff90921661ffff199092169190911790556134be565b61319f84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600c81526b72656f70656e51756f72756d60a01b602082015291506146c29050565b156132d257600281146131e35760405162461bcd60e51b815260040180806020018281038252602c81526020018061498c602c913960400191505060405180910390fd5b6000613226600284848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506147a992505050565b905060008161ffff16118015613240575060648161ffff16105b613289576040805162461bcd60e51b8152602060048201526015602482015274696e76616c69642072656f70656e2071756f72756d60581b604482015290519081900360640190fd5b604080516e149153d4115397d41493d413d4d053608a1b8152815190819003600f0190206000908152600d60205220805461ffff90921661ffff199092169190911790556134be565b61333d84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601481527363616e63656c5472616e7366657251756f72756d60601b602082015291506146c29050565b1561348157600281146133815760405162461bcd60e51b815260040180806020018281038252603481526020018061492b6034913960400191505060405180910390fd5b60006133c4600284848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506147a992505050565b905060008161ffff161180156133de575060648161ffff16105b61342f576040805162461bcd60e51b815260206004820152601e60248201527f696e76616c69642063616e63656c207472616e736665722071756f72756d0000604482015290519081900360640190fd5b604080517710d05390d15317d514905394d1915497d41493d413d4d05360421b815281519081900360180190206000908152600d60205220805461ffff90921661ffff199092169190911790556134be565b6040805162461bcd60e51b815260206004820152600d60248201526c756e6b6e6f776e20706172616d60981b604482015290519081900360640190fd5b7f6cdb0ac70ab7f2e2d035cca5be60d89906f2dede7648ddbd7402189c1eeed17a848484846040518080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600083820152604051601f909101601f19169092018290039850909650505050505050a150505050565b6008602052600090815260409020546001600160401b031681565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081565b61100281565b60005460ff166135da576040805162461bcd60e51b81526020600482015260196024820152600080516020614a62833981519152604482015290519081900360640190fd5b6040805163569e4ed360e11b815233600482015290516000916110009163ad3c9da691602480820192602092909190829003018186803b15801561361d57600080fd5b505afa158015613631573d6000803e3d6000fd5b505050506040513d602081101561364757600080fd5b505160408051633d42651560e11b8152905191925060009161100091637a84ca2a916004808301926020929190829003018186803b15801561368857600080fd5b505afa15801561369c573d6000803e3d6000fd5b505050506040513d60208110156136b257600080fd5b50519050806136bf575060155b6000821180156136cf5750808211155b61370e576040805162461bcd60e51b815260206004820152600b60248201526a1b9bdd0818d8589a5b995d60aa1b604482015290519081900360640190fd5b600b5460ff16613755576040805162461bcd60e51b815260206004820152600d60248201526c1b9bdd081cdd5cdc195b991959609a1b604482015290519081900360640190fd5b604080516e149153d4115397d41493d413d4d053608a1b8152905190819003600f0190206000906137a6907fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470614192565b905080156137e457600b805460ff1916905560405133907f899fe8c37dc61708a3aaa99c4bf143346c1d1da69af79be9e8920c0a6785b75290600090a25b505050565b600660209081526000928352604080842090915290825290205460ff1681565b6040518060400160405280600381526020016269626360e81b81525081565b610e1081565b61100381565b61200481565b60005460ff1615613892576040805162461bcd60e51b815260206004820152601960248201527f74686520636f6e747261637420616c726561647920696e697400000000000000604482015290519081900360640190fd5b7f1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b80546001600160a01b0319908116611008179091557f92e85d02570a8092d09a6e3a57665bc3815a2699a4074001bf1ccabf660f5a36805460ff199081169091557fd8af288fc1c8680b4f4706064cf021e264efb6828fcaf7eb5ca36818eb365bcc8054821660019081179091557f89832631fb3c3307a103ba2c84ab569c64d6182a18893dcd163f0f1c2090733a805484166110049081179091557f6cde3cea4b3a3fb2488b2808bae7556f4a405e50f65e1794383bc026131b13c38054841690557f72e4efa1513b071517c6c74dba31b5934a81aa83cddd400e7081df5529c9943680548416831790557fa9bc9a3a348c357ba16b37005d7e6b3236198c0e939f4af8c5f19b8deeb8ebc08054851690911790557fc575c31fea594a6eb97c8e9d3f9caee4c16218c6ef37e923234c0fe9014a61e78054831690557f4e523af77f034e9810f1c94057f5e931fb3d16a51511a4c3add793617d18610580548316821790557ffb33122aa9f93cc639ebe80a7bc4784c11e6053dde89c6f4f7e268c6a623da1e805484166110001790557fc7694af312c4f286114180fd0ba6a52461fcee8a381636770b19a343af92538a80548316821790557f01112dd68e482ba8d68a7e828cff8b3abcea08eab88941953c180a7e650e9cd480548316821790557fc0a4a8be475dfebc377ebef2d7c4ff47656f572a08dd92b81017efcdba0febe1805484166110071790557f87e8a52529e8ece4ef759037313542a6429ff494a9fab9027fb79db90124eba680548316821790557f4c7666bbcb22d46469f7cc282f70764a7012dca2cce630ff8d83db9a9cdd48f080548316821790557f40f28f99a40bc9f6beea1013afdbc3cdcc689eb76b82c4de06c0acf1e1932ed58054909316611001179092557f0d9cf2cd531699eed8dd34e40ff2884a14a698c4898184fba85194e6f6772d248054821683179055600b60009081527f23f68c9bd22b8a93d06adabe17481c87c016bcbd20adc8bfd707a4d813a572176020527fdf0d5d05428057f5455c2dc8e810dd86d1e9350faa72f16bda8a45443c5b39328054831684179055603283556004805467ffffffffffffffff19166001600160401b031790556002819055600381905580549091169091179055565b6007602052600090815260409020546001600160401b031681565b60005460ff16613c51576040805162461bcd60e51b81526020600482015260196024820152600080516020614a62833981519152604482015290519081900360640190fd5b6040805163569e4ed360e11b815233600482015290516000916110009163ad3c9da691602480820192602092909190829003018186803b158015613c9457600080fd5b505afa158015613ca8573d6000803e3d6000fd5b505050506040513d6020811015613cbe57600080fd5b505160408051633d42651560e11b8152905191925060009161100091637a84ca2a916004808301926020929190829003018186803b158015613cff57600080fd5b505afa158015613d13573d6000803e3d6000fd5b505050506040513d6020811015613d2957600080fd5b5051905080613d36575060155b600082118015613d465750808211155b613d85576040805162461bcd60e51b815260206004820152600b60248201526a1b9bdd0818d8589a5b995d60aa1b604482015290519081900360640190fd5b600b5460ff1615613dc9576040805162461bcd60e51b81526020600482015260096024820152681cdd5cdc195b99195960ba1b604482015290519081900360640190fd5b604080516f14d554d411539117d41493d413d4d05360821b81529051908190036010019020600090613e1b907fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470614192565b905080156137e4576137e46140c9565b601181565b60005460ff16613e75576040805162461bcd60e51b81526020600482015260196024820152600080516020614a62833981519152604482015290519081900360640190fd5b33600090815260066020908152604080832060ff8089168552925290912054859116613ed25760405162461bcd60e51b81526004018080602001828103825260318152602001806148a06031913960400191505060405180910390fd5b60ff85166000908152600760209081526040808320548151601f88018490048402810184019092528682526001600160401b031692613f379284928a9261212592909189918c908c90819084018382808284376000920191909152506113a792505050565b60ff959095166000908152600760205260409020805467ffffffffffffffff191660019096016001600160401b03169590951790945550505050565b61100081565b600381565b61100481565b60408051600e808252818301909252606091630102ca0060ff851617918391602082018180368337505050600e81810187905260068201939093529182525090505b92915050565b600085613fdb575060006140c0565b606082518451865160800101016040519080825280601f01601f191660200182016040528015614012576020820181803683370190505b5090506000614020826147b4565b60208089015182520190508660008061403889614147565b8086526020909501949092509050614051828583614151565b9283019261405e88614147565b8086526020909501949092509050614077828583614151565b9283018a81526020019261408a87614147565b909250905061409a828583614151565b5083516020016140a86147ba565b60208183886065600019fa5051600114955050505050505b95945050505050565b600b5460ff161561410d576040805162461bcd60e51b81526020600482015260096024820152681cdd5cdc195b99195960ba1b604482015290519081900360640190fd5b600b805460ff1916600117905560405133907f6f123d3d54c84a7960a573b31c221dcd86e13fd849c5adb0c6ca851468cc1ae490600090a2565b8051602090910191565b5b60208110614171578251825260209283019290910190601f1901614152565b915181516020939093036101000a6000190180199091169216919091179052565b6000828152600d602052604081205461ffff1661425b57604080516f14d554d411539117d41493d413d4d05360821b815281519081900360100181206000908152600d6020818152848320805461ffff199081166001179091556e149153d4115397d41493d413d4d053608a1b8552855194859003600f01852084528282528584208054821660029081179091557710d05390d15317d514905394d1915497d41493d413d4d05360421b8652865195869003601801909520845291905292902080549092161790555b6000838152600c6020526040902080546201000090046001600160801b03164210158061428c575082816001015414155b1561435f576000848152600d602090815260409182902054835461ffff90911661ffff199091161771ffffffffffffffffffffffffffffffff0000191662010000610e1042016001600160801b03160217835560018084018690558251918201909252338152614301916002840191906147d8565b5080546040805161ffff83168152620100009092046001600160801b0316602083015281810185905251339186917f9e109f0e55ef32e99e4880be2ec357f1ddb3469c79d0747ef4762da6e89fabe5916060908290030190a3614413565b60005b60028201548110156143ea57336001600160a01b031682600201828154811061438757fe5b6000918252602090912001546001600160a01b031614156143e2576040805162461bcd60e51b815260206004820152601060248201526f185b1c9958591e48185c1c1c9bdd995960821b604482015290519081900360640190fd5b600101614362565b50600281018054600181018255600091825260209091200180546001600160a01b031916331790555b8054600282015461ffff9091161161446d576000848152600c60205260408120805471ffffffffffffffffffffffffffffffffffff191681556001810182905590614461600283018261483d565b50506001915050613fc6565b5060009392505050565b600080600060606021855110156144a7575050604080516000808252602082019092529092508291508190614520565b600185015160218601518651604080516020198301808252601f19600119909401939093168101602001909152604189019392916060919080156144f2576020820181803683370190505b509050600061450082614147565b509050614512858260218d5103614151565b506001975091955093509150505b9193509193565b600b5460ff161561456b576040805162461bcd60e51b81526020600482015260096024820152681cdd5cdc195b99195960ba1b604482015290519081900360640190fd5b6002544311156145aa576004805467ffffffffffffffff1981166001600160401b036001600793840b810190930b1617909155600355436002556145eb565b600380546001908101918290555410156145eb576004805467ffffffffffffffff1981166001600160401b036001600793840b810190930b16179091556003555b8160ff16836001600160401b0316600460009054906101000a900460070b6001600160401b03167f3a6e0fc61675aa2a100bcba0568368bb92bcec91c97673391074f11138f0cffe6102ca85604051808361ffff1661ffff16815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561468257818101518382015260200161466a565b50505050905090810190601f1680156146af5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a4505050565b6000816040516020018082805190602001908083835b602083106146f75780518252601f1990920191602091820191016146d8565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405280519060200120836040516020018082805190602001908083835b602083106147655780518252601f199092019160209182019101614746565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040528051906020012014905092915050565b015190565b3b151590565b60200190565b60405180602001604052806001906020820280368337509192915050565b82805482825590600052602060002090810192821561482d579160200282015b8281111561482d57825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906147f8565b5061483992915061485e565b5090565b508054600082559060005260206000209081019061485b9190614885565b50565b61488291905b808211156148395780546001600160a01b0319168155600101614864565b90565b61488291905b80821115614839576000815560010161488b56fe74686520636f6e747261637420616e64206368616e6e656c2068617665206e6f74206265656e20726567697374657265646c656e677468206f662076616c756520666f72206164644f725570646174654368616e6e656c2073686f756c642062652032322c206368616e6e656c49643a697346726f6d53797374656d3a68616e646c6572416464726573736c656e677468206f662076616c756520666f722063616e63656c5472616e7366657251756f72756d2073686f756c6420626520326c656e677468206f662076616c756520666f722073757370656e6451756f72756d2073686f756c6420626520326c656e677468206f662076616c756520666f722072656f70656e51756f72756d2073686f756c642062652032746865206d6573736167652073656e646572206d75737420626520676f7665726e616e636520636f6e74726163746c656e677468206f662076616c756520666f7220656e61626c654f7244697361626c654368616e6e656c2073686f756c6420626520322c206368616e6e656c49643a6973456e61626c65746865206e6577426174636853697a65466f724f7261636c652073686f756c6420626520696e205b31302c2031303030305d74686520636f6e7472616374206e6f7420696e697420796574000000000000006c6967687420636c69656e74206e6f742073796e632074686520626c6f636b20796574a164736f6c6343000604000a", + }, { ContractAddr: common.HexToAddress(StakingContract), CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/cfc0bd1127186a917ddc38fd38d22903034d3f0b", @@ -872,58 +882,63 @@ func init() { Configs: []*UpgradeConfig{ { ContractAddr: common.HexToAddress(ValidatorContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/cfc0bd1127186a917ddc38fd38d22903034d3f0b", - Code: "6080604052600436106104f05760003560e01c806388b32f111161028c578063c6d339451161015a578063e40716a1116100cc578063f92eb86b11610085578063f92eb86b14610d0d578063f9a2bbc714610d22578063fc3e590814610d37578063fccc281314610d4c578063fd4ad81f14610d61578063fd6a687914610d90576104f7565b8063e40716a114610c70578063e589b61e14610c85578063ea321e4914610ca5578063eb57e20214610cc5578063eda5868c14610ce5578063f340fa0114610cfa576104f7565b8063d86222d51161011e578063d86222d514610bf2578063daacdb6614610c07578063dc927faf14610c1c578063df8079e914610c31578063e086c7b114610c46578063e1c7392a14610c5b576104f7565b8063c6d3394514610b93578063c81b166214610ba8578063c8509d8114610962578063ce910b0c14610bbd578063d68fb56a14610bdd576104f7565b8063a78abc16116101fe578063ad3c9da6116101b7578063ad3c9da614610b12578063aef198a914610b32578063b7ab4db514610b47578063b8cf4ef114610b69578063bf9f4995146106d3578063c466689d14610b7e576104f7565b8063a78abc1614610a89578063aa82dce114610a9e578063aad5606314610ab3578063aaf5eb6814610ac8578063ab51bb9614610add578063ac43175114610af2576104f7565b806396713da91161025057806396713da914610a0b5780639dc0926214610a205780639fe0f81614610a35578063a0dc275814610a4a578063a1a11bf514610a5f578063a5422d5c14610a74576104f7565b806388b32f11146109975780638a7beb01146109ac5780638b5ad0c9146109c15780638d19a410146109d65780639369d7de146109f6576104f7565b806351b4dce3116103c957806370fd5bad1161033b5780637e434d54116102f45780637e434d541461092357806381650b6214610938578063820dcaa81461094d578063831d65d114610962578063853230aa146108e45780638624988214610982576104f7565b806370fd5bad146108a5578063718a8aa8146108ba57806375d47a0a146108cf57806378dfed4a146108e45780637942fd05146108f95780637a84ca2a1461090e576104f7565b80635d77156c1161038d5780635d77156c146107ff5780635de1e22c1461081457806360eba4fe1461082957806362b72cf5146108495780636969a25c1461085e5780636e47b48214610890576104f7565b806351b4dce31461078057806351e806721461079557806355614fcc146107aa578063565c56b3146107ca5780635667515a146107ea576104f7565b8063321d398a1161046257806343756e5c1161042657806343756e5c146106f557806345cf9daf1461070a578063493279b11461071f5780634bf6c882146107415780634df6e0c3146107565780635192c82c1461076b576104f7565b8063321d398a146106505780633365af3a1461067057806335409f7f146106905780633b071dcc146106b05780633dffc387146106d3576104f7565b8063152ad3b8116104b4578063152ad3b8146105af5780631e4c1524146105d15780631ff18069146105f1578063219f22d514610606578063280870281461061b578063300c356714610630576104f7565b806304c4fec6146104fc57806307a56847146105135780630bee7a671461053e5780630e2374a5146105605780631182b87514610582576104f7565b366104f757005b600080fd5b34801561050857600080fd5b50610511610da5565b005b34801561051f57600080fd5b50610528610e17565b6040516105359190618dfa565b60405180910390f35b34801561054a57600080fd5b50610553610e1d565b6040516105359190618e24565b34801561056c57600080fd5b50610575610e22565b6040516105359190618144565b34801561058e57600080fd5b506105a261059d36600461802a565b610e28565b60405161053591906182d7565b3480156105bb57600080fd5b506105c461110b565b60405161053591906182cc565b3480156105dd57600080fd5b506105116105ec366004617e38565b611114565b3480156105fd57600080fd5b506105286117cb565b34801561061257600080fd5b506105536117d1565b34801561062757600080fd5b506105756117d6565b34801561063c57600080fd5b5061051161064b366004617dd0565b6117dc565b34801561065c57600080fd5b506105c461066b366004617fd7565b611b23565b34801561067c57600080fd5b506105c461068b366004617fd7565b611bf2565b34801561069c57600080fd5b506105116106ab366004617d98565b611ca3565b3480156106bc57600080fd5b506106c5611dfc565b6040516105359291906181e2565b3480156106df57600080fd5b506106e86120d8565b6040516105359190618e35565b34801561070157600080fd5b506105756120dd565b34801561071657600080fd5b506105286120e3565b34801561072b57600080fd5b506107346120e9565b6040516105359190618deb565b34801561074d57600080fd5b506106e86120ef565b34801561076257600080fd5b506106c56120f4565b34801561077757600080fd5b50610528612272565b34801561078c57600080fd5b50610575612278565b3480156107a157600080fd5b5061057561227e565b3480156107b657600080fd5b506105c46107c5366004617d98565b612284565b3480156107d657600080fd5b506105286107e5366004617d98565b6122b9565b3480156107f657600080fd5b506106e861230a565b34801561080b57600080fd5b5061055361230f565b34801561082057600080fd5b50610528612314565b34801561083557600080fd5b506105a2610844366004617fd7565b61231a565b34801561085557600080fd5b506105286123c0565b34801561086a57600080fd5b5061087e610879366004617fd7565b6123c6565b60405161053596959493929190618171565b34801561089c57600080fd5b5061057561242a565b3480156108b157600080fd5b506106e8612430565b3480156108c657600080fd5b506106e8612435565b3480156108db57600080fd5b5061057561243a565b3480156108f057600080fd5b50610528612440565b34801561090557600080fd5b506106e8612446565b34801561091a57600080fd5b5061052861244b565b34801561092f57600080fd5b50610575612451565b34801561094457600080fd5b50610553612457565b34801561095957600080fd5b5061052861245c565b34801561096e57600080fd5b5061051161097d36600461802a565b612462565b34801561098e57600080fd5b506105286124c3565b3480156109a357600080fd5b506105286124c9565b3480156109b857600080fd5b506105c46124cf565b3480156109cd57600080fd5b506105286124d8565b3480156109e257600080fd5b506105286109f1366004617d98565b6124de565b348015610a0257600080fd5b5061051161251e565b348015610a1757600080fd5b506106e8612632565b348015610a2c57600080fd5b50610575612637565b348015610a4157600080fd5b5061052861263d565b348015610a5657600080fd5b50610528612642565b348015610a6b57600080fd5b50610575612647565b348015610a8057600080fd5b506105a261264d565b348015610a9557600080fd5b506105c4612669565b348015610aaa57600080fd5b50610575612672565b348015610abf57600080fd5b50610575612678565b348015610ad457600080fd5b5061052861267e565b348015610ae957600080fd5b5061055361230a565b348015610afe57600080fd5b50610511610b0d366004617f7b565b612687565b348015610b1e57600080fd5b50610528610b2d366004617d98565b612f20565b348015610b3e57600080fd5b50610528612f32565b348015610b5357600080fd5b50610b5c612f3f565b60405161053591906181cf565b348015610b7557600080fd5b5061052861302b565b348015610b8a57600080fd5b50610528613030565b348015610b9f57600080fd5b50610528612430565b348015610bb457600080fd5b50610575613036565b348015610bc957600080fd5b506105a2610bd8366004617fd7565b61303c565b348015610be957600080fd5b50610528613049565b348015610bfe57600080fd5b50610528613088565b348015610c1357600080fd5b50610528613094565b348015610c2857600080fd5b5061057561309a565b348015610c3d57600080fd5b506105756130a0565b348015610c5257600080fd5b50610528610e1d565b348015610c6757600080fd5b506105116130a6565b348015610c7c57600080fd5b50610528613337565b348015610c9157600080fd5b50610511610ca0366004617d98565b61333d565b348015610cb157600080fd5b506105c4610cc0366004617f3c565b613482565b348015610cd157600080fd5b50610511610ce0366004617d98565b613608565b348015610cf157600080fd5b5061055361370c565b610511610d08366004617d98565b613711565b348015610d1957600080fd5b50610528613a90565b348015610d2e57600080fd5b50610575613a96565b348015610d4357600080fd5b506106e861263d565b348015610d5857600080fd5b50610575613a9c565b348015610d6d57600080fd5b50610d81610d7c366004617fd7565b613aa2565b60405161053593929190618e03565b348015610d9c57600080fd5b50610575613b64565b6000610db0336124de565b9050600b8181548110610dbf57fe5b600091825260209091206001601690920201015460ff16610dfb5760405162461bcd60e51b8152600401610df290618a06565b60405180910390fd5b6000610e05613049565b9050610e12338383613b6a565b505050565b60095481565b606481565b61200181565b60005460609060ff16610e4d5760405162461bcd60e51b8152600401610df2906184fe565b600b54610f0b57610e5c617944565b60015460005b81811015610f0757600b80546001810182556000919091528351600080516020618f078339815191526016909202918201908155602080860151600080516020618f478339815191528401805460ff1916911515919091179055604086015180518794610ee393600080516020618f27833981519152909101920190617973565b506060820151610ef990600383019060136179ed565b505050806001019050610e62565b5050505b610f13617a1a565b6000610f5485858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250613e3b92505050565b9150915080610f7057610f676064613ff7565b92505050611104565b815160009060ff16610f9557610f8e83602001518460400151614058565b90506110d0565b825160ff16600114156110cc57826020015151600114610fda57600080516020618ee7833981519152604051610fca906188bf565b60405180910390a15060676110c7565b6000600460008560200151600081518110610ff157fe5b6020026020010151600001516001600160a01b03166001600160a01b031681526020019081526020016000205490508060001480611059575060018082038154811061103957fe5b9060005260206000209060040201600201601c9054906101000a900460ff165b156110b957836020015160008151811061106f57fe5b6020026020010151600001516001600160a01b03167fe209c46bebf57cf265d5d9009a00870e256d9150f3ed5281ab9d9eb3cec6e4be60405160405180910390a2600091506110c5565b6110c28161521a565b91505b505b6110d0565b5060655b63ffffffff81166110f557505060408051600081526020810190915291506111049050565b6110fe81613ff7565b93505050505b9392505050565b60075460ff1681565b3341146111335760405162461bcd60e51b8152600401610df290618c56565b3a156111515760405162461bcd60e51b8152600401610df290618945565b825160408051828152602080840282010190915260609082801561118f57816020015b61117c617a3e565b8152602001906001900390816111745790505b50905060005b82811015611239576040518060c001604052808783815181106111b457fe5b60200260200101516001600160a01b0316815260200160006001600160a01b0316815260200160006001600160a01b031681526020018683815181106111f657fe5b60200260200101516001600160401b03168152602001600015158152602001600081525082828151811061122657fe5b6020908102919091010152600101611195565b5060405163d31f968d60e01b81526120009063d31f968d9061126490611000906008906004016181b3565b60206040518083038186803b15801561127c57600080fd5b505afa158015611290573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112b49190617f1c565b156115a05780516015548181111561135657815b818110156113545760158054806112db57fe5b60008281526020812060046000199093019283020180546001600160a01b0319908116825560018201805490911690556002810180546001600160e81b0319169055600301559055601680548061132e57fe5b60019003818190600052602060002001600061134a9190617a73565b90556001016112c8565b505b60005b828110156115965781811061147e57601584828151811061137657fe5b602090810291909101810151825460018181018555600094855293839020825160049092020180546001600160a01b039283166001600160a01b0319918216178255938301519481018054958316958516959095179094556040820151600285018054606085015160808601511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b199590961692909716919091179290921692909217169290921790915560a00151600390910155855160169087908390811061144657fe5b602090810291909101810151825460018101845560009384529282902081516114789491909101929190910190617973565b5061158e565b83818151811061148a57fe5b60200260200101516015828154811061149f57fe5b6000918252602091829020835160049092020180546001600160a01b039283166001600160a01b0319918216178255928401516001820180549184169185169190911790556040840151600282018054606087015160808801511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b1995909716929097169190911792909216939093171692909217905560a090910151600390910155855186908290811061155a57fe5b60200260200101516016828154811061156f57fe5b90600052602060002001908051906020019061158c929190617973565b505b600101611359565b5050505050610e12565b6060806115ad838661532e565b9150915060005b6001548110156116bb57600181815481106115cb57fe5b9060005260206000209060040201600301546000146116b3576120026001600160a01b031663092193ab6001838154811061160257fe5b9060005260206000209060040201600301546001848154811061162157fe5b60009182526020909120600491820201546040516001600160e01b031960e086901b16815261165c926001600160a01b039092169101618144565b6000604051808303818588803b15801561167557600080fd5b505af1158015611689573d6000803e3d6000fd5b505050505060006001828154811061169d57fe5b9060005260206000209060040201600301819055505b6001016115b4565b504715611729577f6ecc855f9440a9282c90913bbc91619fd44f5ec0b462af28d127b116f130aa4d476040516116f19190618dfa565b60405180910390a1604051611002904780156108fc02916000818181858888f19350505050158015611727573d6000803e3d6000fd5b505b60006003819055600555815115611744576117448282615567565b6110016001600160a01b031663fc4333cd6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561178157600080fd5b505af1158015611795573d6000803e3d6000fd5b50506040517fedd8d7296956dd970ab4de3f2fc03be2b0ffc615d20cd4c72c6e44f928630ebf925060009150a150505050505050565b60035481565b606881565b61200581565b3341146117fb5760405162461bcd60e51b8152600401610df290618c56565b601054431161181c5760405162461bcd60e51b8152600401610df29061865a565b3a1561183a5760405162461bcd60e51b8152600401610df290618945565b60005460ff1661185c5760405162461bcd60e51b8152600401610df2906184fe565b60006110023168056bc75e2d631000008111156118935761188c8168056bc75e2d6310000063ffffffff615d4a16565b915061189a565b5050611b19565b6040516213929d60e11b8152611002906227253a906118bf9030908690600401618158565b602060405180830381600087803b1580156118d957600080fd5b505af11580156118ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119119190617fef565b91508161191f575050611b19565b6000805b8481101561194d5785858281811061193757fe5b9050602002013582019150806001019050611923565b508061195b57505050611b19565b6000806000805b89811015611b11578489898381811061197757fe5b9050602002013588028161198757fe5b0493508a8a8281811061199657fe5b90506020020160208101906119ab9190617d98565b6001600160a01b03811660009081526004602052604090205490935091508115611ac75760006001808403815481106119e057fe5b9060005260206000209060040201905080600201601c9054906101000a900460ff1615611a4d57836001600160a01b03167fb9c75cbbfde137c4281689580799ef5f52144e78858f776a5979b2b212137d8586604051611a409190618dfa565b60405180910390a2611ac1565b600354611a60908663ffffffff615d8c16565b6003908155810154611a78908663ffffffff615d8c16565b60038201556040516001600160a01b038516907fcb0aad6cf9cd03bdf6137e359f541c42f38b39f007cae8e89e88aa7d8c6617b290611ab8908890618dfa565b60405180910390a25b50611b09565b826001600160a01b03167fb9c75cbbfde137c4281689580799ef5f52144e78858f776a5979b2b212137d8585604051611b009190618dfa565b60405180910390a25b600101611962565b505050505050505b5050436010555050565b6001546000908210611b3757506000611bed565b60006001600160a01b031660018381548110611b4f57fe5b60009182526020909120600490910201546001600160a01b03161480611b7f57506008541580611b7f5750600a54155b80611b8e575060085460095410155b80611b9f5750611b9d82611bf2565b155b80611bc857506000600b8381548110611bb457fe5b906000526020600020906016020160000154115b80611bdc57506001611bd8612f3f565b5111155b15611be957506000611bed565b5060015b919050565b6001546000908210611c0657506000611bed565b600b548210611c435760018281548110611c1c57fe5b9060005260206000209060040201600201601c9054906101000a900460ff16159050611bed565b60018281548110611c5057fe5b9060005260206000209060040201600201601c9054906101000a900460ff16158015611c9d5750600b8281548110611c8457fe5b600091825260209091206001601690920201015460ff16155b92915050565b3361100114611cc45760405162461bcd60e51b8152600401610df290618d6b565b600b54611d8257611cd3617944565b60015460005b81811015611d7e57600b80546001810182556000919091528351600080516020618f078339815191526016909202918201908155602080860151600080516020618f478339815191528401805460ff1916911515919091179055604086015180518794611d5a93600080516020618f27833981519152909101920190617973565b506060820151611d7090600383019060136179ed565b505050806001019050611cd9565b5050505b6001600160a01b03811660009081526004602052604090205480611da65750611df9565b6001810390506000600b8281548110611dbb57fe5b600091825260209091206001601690920201015460ff169050611dde8383615db1565b8015611de75750805b15610e12576009805460001901905550505b50565b60015460609081906000805b82811015611e4f5760018181548110611e1d57fe5b9060005260206000209060040201600201601c9054906101000a900460ff16611e47576001909101905b600101611e08565b50606081604051908082528060200260200182016040528015611e7c578160200160208202803683370190505b509050606082604051908082528060200260200182016040528015611eb557816020015b6060815260200190600190039081611ea05790505b50600b54600094509091508414156120305760005b8481101561202a5760018181548110611edf57fe5b9060005260206000209060040201600201601c9054906101000a900460ff166120225760018181548110611f0f57fe5b600091825260209091206004909102015483516001600160a01b0390911690849086908110611f3a57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050600b8181548110611f6757fe5b600091825260209182902060026016909202018101805460408051601f600019610100600186161502019093169490940491820185900485028401850190528083529192909190830182828015611fff5780601f10611fd457610100808354040283529160200191611fff565b820191906000526020600020905b815481529060010190602001808311611fe257829003601f168201915b505050505082858151811061201057fe5b60209081029190910101526001909301925b600101611eca565b506120cc565b60005b848110156120ca576001818154811061204857fe5b9060005260206000209060040201600201601c9054906101000a900460ff166120c2576001818154811061207857fe5b600091825260209091206004909102015483516001600160a01b03909116908490869081106120a357fe5b6001600160a01b03909216602092830291909101909101526001909301925b600101612033565b505b909450925050505b9091565b600181565b61100181565b60085481565b6102ca81565b600881565b600e54600c54606091829180612108575060155b6060612112612f3f565b9050606061211f82616164565b9050828251116121365790945092506120d4915050565b83838351031015612148578282510393505b831561217e5760c8430461216483838388880360008a8a6162d2565b61217c8383838888038989038a8b8b8b5103016162d2565b505b6060836040519080825280602002602001820160405280156121aa578160200160208202803683370190505b5090506060846040519080825280602002602001820160405280156121e357816020015b60608152602001906001900390816121ce5790505b50905060005b85811015612264578481815181106121fd57fe5b602002602001015183828151811061221157fe5b60200260200101906001600160a01b031690816001600160a01b03168152505083818151811061223d57fe5b602002602001015182828151811061225157fe5b60209081029190910101526001016121e9565b509096509450505050509091565b60065481565b61200681565b61200081565b6001600160a01b038116600090815260046020526040812054806122ac576000915050611bed565b6000190161110481611bf2565b6001600160a01b038116600090815260046020526040812054806122e1576000915050611bed565b6001808203815481106122f057fe5b906000526020600020906004020160030154915050919050565b600081565b606781565b600f5481565b6012818154811061232757fe5b600091825260209182902001805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152935090918301828280156123b85780601f1061238d576101008083540402835291602001916123b8565b820191906000526020600020905b81548152906001019060200180831161239b57829003601f168201915b505050505081565b60105481565b600181815481106123d357fe5b600091825260209091206004909102018054600182015460028301546003909301546001600160a01b0392831694509082169291821691600160a01b81046001600160401b031691600160e01b90910460ff169086565b61100581565b600281565b601081565b61100881565b6103e881565b600b81565b600c5481565b61200381565b606681565b61271081565b33612000146124835760405162461bcd60e51b8152600401610df290618c07565b7f41ce201247b6ceb957dcdb217d0b8acb50b9ea0e12af9af4f5e7f389021016058383836040516124b693929190618e43565b60405180910390a1505050565b60025481565b60115481565b60145460ff1681565b600a5481565b6001600160a01b038116600090815260046020526040812054806125145760405162461bcd60e51b8152600401610df290618b8f565b6000190192915050565b600b546125dc5761252d617944565b60015460005b818110156125d857600b80546001810182556000919091528351600080516020618f078339815191526016909202918201908155602080860151600080516020618f478339815191528401805460ff19169115159190911790556040860151805187946125b493600080516020618f27833981519152909101920190617973565b5060608201516125ca90600383019060136179ed565b505050806001019050612533565b5050505b6008546125e95760036008555b600a546125f6576002600a555b6000612601336124de565b905061260c81611b23565b6126285760405162461bcd60e51b8152600401610df29061887c565b611df93382616429565b600981565b61100781565b600381565b60c881565b61100681565b6040518060a0016040528060788152602001618f676078913981565b60005460ff1681565b61200281565b61300081565b6402540be40081565b60005460ff166126a95760405162461bcd60e51b8152600401610df2906184fe565b33611007146126ca5760405162461bcd60e51b8152600401610df290618973565b61273484848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080518082019091526013815272065787069726554696d655365636f6e6447617606c1b602082015291506164c19050565b156127d157602081146127595760405162461bcd60e51b8152600401610df290618b49565b604080516020601f84018190048102820181019092528281526000916127979185858083850183828082843760009201919091525061651a92505050565b9050606481101580156127ad5750620186a08111155b6127c95760405162461bcd60e51b8152600401610df29061876c565b600255612edd565b61283184848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260098152686275726e526174696f60b81b602082015291506164c19050565b156128c457602081146128565760405162461bcd60e51b8152600401610df29061831c565b604080516020601f84018190048102820181019092528281526000916128949185858083850183828082843760009201919091525061651a92505050565b9050612710600f54820111156128bc5760405162461bcd60e51b8152600401610df290618353565b600655612edd565b61292e84848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260138152726d61784e756d4f664d61696e7461696e696e6760681b602082015291506164c19050565b156129c857602081146129535760405162461bcd60e51b8152600401610df2906183bb565b604080516020601f84018190048102820181019092528281526000916129919185858083850183828082843760009201919091525061651a92505050565b600c54909150806129a0575060155b8082106129bf5760405162461bcd60e51b8152600401610df2906186c4565b50600855612edd565b612a3184848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260128152716d61696e7461696e536c6173685363616c6560701b602082015291506164c19050565b15612aca5760208114612a565760405162461bcd60e51b8152600401610df290618484565b604080516020601f8401819004810282018101909252828152600091612a949185858083850183828082843760009201919091525061651a92505050565b9050600081118015612aa65750600a81105b612ac25760405162461bcd60e51b8152600401610df290618ce7565b600a55612edd565b612b3e84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601981527f6d61784e756d4f66576f726b696e6743616e6469646174657300000000000000602082015291506164c19050565b15612bcd5760208114612b635760405162461bcd60e51b8152600401610df290618438565b604080516020601f8401819004810282018101909252828152600091612ba19185858083850183828082843760009201919091525061651a92505050565b9050600d54811115612bc55760405162461bcd60e51b8152600401610df2906187e2565b600e55612edd565b612c3684848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260128152716d61784e756d4f6643616e6469646174657360701b602082015291506164c19050565b15612cb85760208114612c5b5760405162461bcd60e51b8152600401610df2906189c1565b604080516020601f8401819004810282018101909252828152600091612c999185858083850183828082843760009201919091525061651a92505050565b600d819055600e54909150811015612cb257600d54600e555b50612edd565b612d1c84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600d81526c6e756d4f66436162696e65747360981b602082015291506164c19050565b15612dca5760208114612d415760405162461bcd60e51b8152600401610df2906184c9565b604080516020601f8401819004810282018101909252828152600091612d7f9185858083850183828082843760009201919091525061651a92505050565b905060008111612da15760405162461bcd60e51b8152600401610df29061856c565b6064811115612dc25760405162461bcd60e51b8152600401610df2906185b4565b600c55612edd565b612e3284848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601181527073797374656d526577617264526174696f60781b602082015291506164c19050565b15612ec55760208114612e575760405162461bcd60e51b8152600401610df290618ca3565b604080516020601f8401819004810282018101909252828152600091612e959185858083850183828082843760009201919091525061651a92505050565b905061271060065482011115612ebd5760405162461bcd60e51b8152600401610df290618aaa565b600f55612edd565b60405162461bcd60e51b8152600401610df290618d44565b7f6cdb0ac70ab7f2e2d035cca5be60d89906f2dede7648ddbd7402189c1eeed17a84848484604051612f1294939291906182ea565b60405180910390a150505050565b60046020526000908152604090205481565b68056bc75e2d6310000081565b6001546060906000805b82811015612f6e57612f5a81611bf2565b15612f66578160010191505b600101612f49565b50606081604051908082528060200260200182016040528015612f9b578160200160208202803683370190505b5090506000915060005b8381101561302257612fb681611bf2565b1561301a5760018181548110612fc857fe5b600091825260209091206004909102015482516001600160a01b0390911690839085908110612ff357fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508260010192505b600101612fa5565b50925050505b90565b601581565b61027181565b61100281565b6013818154811061232757fe5b6000613053612f3f565b519050600080600c541161306857601561306c565b600c545b90508082111561307a578091505b8161308457600191505b5090565b67016345785d8a000081565b60055481565b61100381565b61200481565b60005460ff16156130c95760405162461bcd60e51b8152600401610df290618a73565b6130d1617a1a565b60006130f46040518060a0016040528060788152602001618f6760789139613e3b565b91509150806131155760405162461bcd60e51b8152600401610df290618bc6565b61311d617944565b60005b83602001515181101561331e57600b80546001810182556000919091528251600080516020618f078339815191526016909202918201908155602080850151600080516020618f478339815191528401805460ff19169115159190911790556040850151805186946131a693600080516020618f27833981519152909101920190617973565b5060608201516131bc90600383019060136179ed565b505050836040015181815181106131cf57fe5b6020026020010151600b82815481106131e457fe5b90600052602060002090601602016002019080519060200190613208929190617973565b5060018460200151828151811061321b57fe5b60209081029190910181015182546001818101855560009485528385208351600493840290910180546001600160a01b039283166001600160a01b03199182161782558587015182850180549185169183169190911790556040860151600283018054606089015160808a01511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b199590981692909516919091179290921694909417161790915560a0909301516003909301929092559187015180519185019391859081106132f157fe5b602090810291909101810151516001600160a01b0316825281019190915260400160002055600101613120565b50506103e860025550506000805460ff19166001179055565b600d5481565b336120021461335e5760405162461bcd60e51b8152600401610df290618db4565b60005b6015548110156133e657816001600160a01b03166015828154811061338257fe5b60009182526020909120600490910201546001600160a01b031614156133de576001601582815481106133b157fe5b9060005260206000209060040201600201601c6101000a81548160ff0219169083151502179055506133e6565b600101613361565b506001600160a01b038116600090815260046020526040902054801580613437575060018082038154811061341757fe5b9060005260206000209060040201600201601c9054906101000a900460ff165b15613475576040516001600160a01b038316907fe209c46bebf57cf265d5d9009a00870e256d9150f3ed5281ab9d9eb3cec6e4be90600090a261347e565b610e128161521a565b5050565b601354600090815b8181101561358b5761357385858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506013805490925085915081106134db57fe5b600091825260209182902001805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156135695780601f1061353e57610100808354040283529160200191613569565b820191906000526020600020905b81548152906001019060200180831161354c57829003601f168201915b505050505061651f565b1561358357600192505050611c9d565b60010161348a565b5060125460005b818110156135fc576135e386868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506012805490925085915081106134db57fe5b156135f45760019350505050611c9d565b600101613592565b50600095945050505050565b33611001146136295760405162461bcd60e51b8152600401610df290618d6b565b600b546136e757613638617944565b60015460005b818110156136e357600b80546001810182556000919091528351600080516020618f078339815191526016909202918201908155602080860151600080516020618f478339815191528401805460ff19169115159190911790556040860151805187946136bf93600080516020618f27833981519152909101920190617973565b5060608201516136d590600383019060136179ed565b50505080600101905061363e565b5050505b60006136f282616583565b90506136fd81611b23565b1561347e5761347e8282616429565b606581565b3341146137305760405162461bcd60e51b8152600401610df290618c56565b60005460ff166137525760405162461bcd60e51b8152600401610df2906184fe565b600034116137725760405162461bcd60e51b8152600401610df2906187b3565b3a156137905760405162461bcd60e51b8152600401610df290618945565b6001600160a01b03811660009081526004602052604090205460145434919060ff166137d057610271600f556103e86006556014805460ff191660011790555b6000821180156137e257506000600f54115b15613894576000613810612710613804600f543461672690919063ffffffff16565b9063ffffffff61676016565b90508015613892576040516110029082156108fc029083906000818181858888f19350505050158015613847573d6000803e3d6000fd5b507f6ecc855f9440a9282c90913bbc91619fd44f5ec0b462af28d127b116f130aa4d816040516138779190618dfa565b60405180910390a161388f838263ffffffff615d4a16565b92505b505b6000821180156138a657506000600654115b1561394c5760006138c86127106138046006543461672690919063ffffffff16565b9050801561394a5760405161dead9082156108fc029083906000818181858888f193505050501580156138ff573d6000803e3d6000fd5b507f627059660ea01c4733a328effb2294d2f86905bf806da763a89cee254de8bee58160405161392f9190618dfa565b60405180910390a1613947838263ffffffff615d4a16565b92505b505b8015613a4a57600060018083038154811061396357fe5b9060005260206000209060040201905080600201601c9054906101000a900460ff16156139d057836001600160a01b03167ff177e5d6c5764d79c32883ed824111d9b13f5668cf6ab1cc12dd36791dd955b4846040516139c39190618dfa565b60405180910390a2613a44565b6003546139e3908463ffffffff615d8c16565b60039081558101546139fb908463ffffffff615d8c16565b60038201556040516001600160a01b038516907f93a090ecc682c002995fad3c85b30c5651d7fd29b0be5da9d784a3302aedc05590613a3b908690618dfa565b60405180910390a25b50610e12565b826001600160a01b03167ff177e5d6c5764d79c32883ed824111d9b13f5668cf6ab1cc12dd36791dd955b483604051613a839190618dfa565b60405180910390a2505050565b600e5481565b61100081565b61dead81565b600b8181548110613aaf57fe5b6000918252602091829020601691909102018054600180830154600280850180546040805161010096831615969096026000190190911692909204601f810188900488028501880190925281845293965060ff90911694919291830182828015613b5a5780601f10613b2f57610100808354040283529160200191613b5a565b820191906000526020600020905b815481529060010190602001808311613b3d57829003601f168201915b5050505050905083565b61100481565b6000600a5460001480613b7b575081155b80613b865750600954155b15613b9357506000611104565b60096000815460019003919050819055506000613bde600a5461380485613804600b8981548110613bc057fe5b6000918252602090912060169091020154439063ffffffff615d4a16565b90506000600b8581548110613bef57fe5b906000526020600020906016020160010160006101000a81548160ff0219169083151502179055506000806110016001600160a01b0316638256ace66040518163ffffffff1660e01b8152600401604080518083038186803b158015613c5457600080fd5b505afa158015613c68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c8c9190618007565b9150915060009350808310613deb57613ca58787615db1565b5060405163436aa28360e11b8152600090612002906386d5450690613cce908b90600401618144565b60206040518083038186803b158015613ce657600080fd5b505afa158015613cfa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d1e9190617db4565b6001600160a01b031614613d8a576040516313d13bdb60e31b815261100190639e89ded890613d53908a908790600401618158565b600060405180830381600087803b158015613d6d57600080fd5b505af1158015613d81573d6000803e3d6000fd5b50505050613de2565b6040516305bfb49960e41b815261100190635bfb499090613daf908a90600401618144565b600060405180830381600087803b158015613dc957600080fd5b505af1158015613ddd573d6000803e3d6000fd5b505050505b60019350613dfd565b818310613dfd57613dfb87616583565b505b6040516001600160a01b038816907fb9d38178dc641ff1817967a63c9078cbcd955a9f1fcd75e0e3636de615d44d3b90600090a25050509392505050565b613e43617a1a565b6000613e4d617a1a565b613e55617ab7565b613e66613e61866167a2565b6167c7565b90506000805b613e7583616811565b15613fe95780613e9a57613e90613e8b84616832565b616880565b60ff168452613fe1565b8060011415613fdc576060613eb6613eb185616832565b616900565b90508051604051908082528060200260200182016040528015613ef357816020015b613ee0617a3e565b815260200190600190039081613ed85790505b5085602001819052508051604051908082528060200260200182016040528015613f3157816020015b6060815260200190600190039081613f1c5790505b50604086015260005b8151811015613fd157613f4b617a3e565b60606000613f6b858581518110613f5e57fe5b60200260200101516169d1565b92509250925080613f8b578860009a509a50505050505050505050613ff2565b8289602001518581518110613f9c57fe5b60200260200101819052508189604001518581518110613fb857fe5b6020026020010181905250505050806001019050613f3a565b506001925050613fe1565b613fe9565b600101613e6c565b50919350909150505b915091565b604080516001808252818301909252606091829190816020015b60608152602001906001900390816140115790505090506140378363ffffffff16616aeb565b8160008151811061404457fe5b602002602001018190525061110481616afe565b600060648351111561408f57600080516020618ee783398151915260405161407f90618611565b60405180910390a1506066611c9d565b60005b835181101561412d5760005b81811015614124578481815181106140b257fe5b6020026020010151600001516001600160a01b03168583815181106140d357fe5b6020026020010151600001516001600160a01b0316141561411c57600080516020618ee783398151915260405161410990618721565b60405180910390a1606692505050611c9d565b60010161409e565b50600101614092565b5060608060606015805480602002602001604051908101604052809291908181526020016000905b828210156141df5760008481526020908190206040805160c0810182526004860290920180546001600160a01b039081168452600180830154821685870152600283015491821693850193909352600160a01b81046001600160401b03166060850152600160e01b900460ff16151560808401526003015460a08301529083529092019101614155565b50505050905060606016805480602002602001604051908101604052809291908181526020016000905b828210156142b45760008481526020908190208301805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156142a05780601f10614275576101008083540402835291602001916142a0565b820191906000526020600020905b81548152906001019060200180831161428357829003601f168201915b505050505081526020019060010190614209565b50505050905060005b8251811015614311578281815181106142d257fe5b6020026020010151606001516002028382815181106142ed57fe5b60209081029190910101516001600160401b039091166060909101526001016142bd565b5060608061432189898686616b88565b9150915061432f828261532e565b6001546040805182815260208084028201019091529298509096506000955085945092506060915082801561436e578160200160208202803683370190505b50905060005b828110156144ff5760006001600160a01b03166120026001600160a01b03166386d54506600184815481106143a557fe5b60009182526020909120600491820201546040516001600160e01b031960e085901b1681526143e0926001600160a01b039092169101618144565b60206040518083038186803b1580156143f857600080fd5b505afa15801561440c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144309190617db4565b6001600160a01b03161461449257600182828151811061444c57fe5b602002602001019060ff16908160ff16815250506001818154811061446d57fe5b90600052602060002090600402016003015460001461448d578360010193505b6144f7565b67016345785d8a0000600182815481106144a857fe5b906000526020600020906004020160030154106144ca578460010194506144f7565b600181815481106144d757fe5b9060005260206000209060040201600301546000146144f7578360010193505b600101614374565b5060608460405190808252806020026020018201604052801561452c578160200160208202803683370190505b50905060608560405190808252806020026020018201604052801561455b578160200160208202803683370190505b50905060608660405190808252806020026020018201604052801561458a578160200160208202803683370190505b5090506060876040519080825280602002602001820160405280156145b9578160200160208202803683370190505b50905060006060886040519080825280602002602001820160405280156145ea578160200160208202803683370190505b509050606089604051908082528060200260200182016040528015614619578160200160208202803683370190505b50905060009a506000995060006110046001600160a01b031663149d14d96040518163ffffffff1660e01b815260040160206040518083038186803b15801561466157600080fd5b505afa158015614675573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906146999190617fef565b905067016345785d8a00008111156146e557600080516020618ee78339815191526040516146c690618a32565b60405180910390a160689e505050505050505050505050505050611c9d565b60005b8a811015614a79578981815181106146fc57fe5b602002602001015160ff16600114156147f2576001818154811061471c57fe5b9060005260206000209060040201600301546000146147ed576001818154811061474257fe5b600091825260209091206004909102015484516001600160a01b039091169085908e90811061476d57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250506001818154811061479a57fe5b906000526020600020906004020160030154838d815181106147b857fe5b60200260200101818152505060018a8d815181106147d257fe5b602002602001019060ff16908160ff16815250508b6001019b505b614a71565b67016345785d8a00006001828154811061480857fe5b9060005260206000209060040201600301541061498d576001818154811061482c57fe5b906000526020600020906004020160020160009054906101000a90046001600160a01b0316898e8151811061485d57fe5b60200260200101906001600160a01b031690816001600160a01b03168152505060006402540be4006001838154811061489257fe5b906000526020600020906004020160030154816148ab57fe5b06600183815481106148b957fe5b9060005260206000209060040201600301540390506148e18382615d4a90919063ffffffff16565b898f815181106148ed57fe5b6020026020010181815250506001828154811061490657fe5b906000526020600020906004020160010160009054906101000a90046001600160a01b0316878f8151811061493757fe5b60200260200101906001600160a01b031690816001600160a01b03168152505081888f8151811061496457fe5b602090810291909101015261497f868263ffffffff615d8c16565b95508d6001019d5050614a71565b6001818154811061499a57fe5b906000526020600020906004020160030154600014614a7157600181815481106149c057fe5b906000526020600020906004020160010160009054906101000a90046001600160a01b0316848d815181106149f157fe5b60200260200101906001600160a01b031690816001600160a01b03168152505060018181548110614a1e57fe5b906000526020600020906004020160030154838d81518110614a3c57fe5b60200260200101818152505060008a8d81518110614a5657fe5b602002602001019060ff16908160ff16815250508b6001019b505b6001016146e8565b5060008415614cef576002546040516303702b2960e51b815261100491636e056520918891614ab3918e918e918d91420190600401618252565b6020604051808303818588803b158015614acc57600080fd5b505af193505050508015614afd575060408051601f3d908101601f19168201909252614afa91810190617f1c565b60015b614c74576040516000815260443d1015614b1957506000614bb4565b60046000803e60005160e01c6308c379a08114614b3a576000915050614bb4565b60043d036004833e81513d60248201116001600160401b0382111715614b6557600092505050614bb4565b80830180516001600160401b03811115614b86576000945050505050614bb4565b8060208301013d8601811115614ba457600095505050505050614bb4565b601f01601f191660405250925050505b80614bbf5750614c01565b60019150857fa7cdeed7d0db45e3219a6e5d60838824c16f1d39991fcfe3f963029c844bf28082604051614bf391906182d7565b60405180910390a250614c6f565b3d808015614c2b576040519150601f19603f3d011682016040523d82523d6000602084013e614c30565b606091505b5060019150857fbfa884552dd8921b6ce90bfe906952ae5b3b29be0cc1a951d4f62697635a3a4582604051614c6591906182d7565b60405180910390a2505b614cef565b8015614cb6577fa217d08e65f80c73121cd9db834d81652d544bfbf452f6d04922b16c90a37b7086604051614ca99190618dfa565b60405180910390a1614ced565b857fa7cdeed7d0db45e3219a6e5d60838824c16f1d39991fcfe3f963029c844bf280604051614ce490618401565b60405180910390a25b505b8015614ea55760005b8751811015614ea3576000888281518110614d0f57fe5b60200260200101519050600060018281548110614d2857fe5b60009182526020909120600160049092020181015481546001600160a01b03909116916108fc9185908110614d5957fe5b9060005260206000209060040201600301549081150290604051600060405180830381858888f1935050505090508015614e155760018281548110614d9a57fe5b60009182526020909120600160049092020181015481546001600160a01b03909116917f6c61d60f69a7beb3e1c80db7f39f37b208537cbb19da3174511b477812b2fc7d9185908110614de957fe5b906000526020600020906004020160030154604051614e089190618dfa565b60405180910390a2614e99565b60018281548110614e2257fe5b60009182526020909120600160049092020181015481546001600160a01b03909116917f25d0ce7d2f0cec669a8c17efe49d195c13455bb8872b65fa610ac7f53fe4ca7d9185908110614e7157fe5b906000526020600020906004020160030154604051614e909190618dfa565b60405180910390a25b5050600101614cf8565b505b83511561509b5760005b8451811015615099578a8181518110614ec457fe5b602002602001015160ff1660011415614f63576120026001600160a01b031663092193ab858381518110614ef457fe5b6020026020010151878481518110614f0857fe5b60200260200101516040518363ffffffff1660e01b8152600401614f2c9190618144565b6000604051808303818588803b158015614f4557600080fd5b505af1158015614f59573d6000803e3d6000fd5b5050505050615091565b6000858281518110614f7157fe5b60200260200101516001600160a01b03166108fc868481518110614f9157fe5b60200260200101519081150290604051600060405180830381858888f193505050509050801561502757858281518110614fc757fe5b60200260200101516001600160a01b03167f6c61d60f69a7beb3e1c80db7f39f37b208537cbb19da3174511b477812b2fc7d86848151811061500557fe5b602002602001015160405161501a9190618dfa565b60405180910390a261508f565b85828151811061503357fe5b60200260200101516001600160a01b03167f25d0ce7d2f0cec669a8c17efe49d195c13455bb8872b65fa610ac7f53fe4ca7d86848151811061507157fe5b60200260200101516040516150869190618dfa565b60405180910390a25b505b600101614eaf565b505b5050505050505050505050505060005b60015481101561510857600181815481106150c257fe5b906000526020600020906004020160030154600014615100576000600182815481106150ea57fe5b9060005260206000209060040201600301819055505b6001016150ab565b504715615176577f6ecc855f9440a9282c90913bbc91619fd44f5ec0b462af28d127b116f130aa4d4760405161513e9190618dfa565b60405180910390a1604051611002904780156108fc02916000818181858888f19350505050158015615174573d6000803e3d6000fd5b505b60006003819055600555815115615191576151918282615567565b6110016001600160a01b031663fc4333cd6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156151ce57600080fd5b505af11580156151e2573d6000803e3d6000fd5b50506040517fedd8d7296956dd970ab4de3f2fc03be2b0ffc615d20cd4c72c6e44f928630ebf925060009150a1506000949350505050565b6001546005546000919060001982011180159061528d5760018085038154811061524057fe5b600091825260208220600490910201546040516001600160a01b03909116917fe209c46bebf57cf265d5d9009a00870e256d9150f3ed5281ab9d9eb3cec6e4be91a2600092505050611bed565b6005805460019081019091558054819060001987019081106152ab57fe5b9060005260206000209060040201600201601c6101000a81548160ff0219169083151502179055506001808503815481106152e257fe5b600091825260208220600490910201546040516001600160a01b03909116917ff226e7d8f547ff903d9d419cf5f54e0d7d07efa9584135a53a057c5f1f27f49a91a25060009392505050565b60608060008080808061533f613049565b6001549091505b801561544d57600181039250600b838154811061535f57fe5b600091825260209091206001601690920201015460ff1661537f57615444565b6001838154811061538c57fe5b60009182526020909120600490910201546001600160a01b031694506153b3858484613b6a565b93508315806153c6575060018a51038610155b156153d057615444565b60005b8a5181101561544257856001600160a01b03168b82815181106153f257fe5b6020026020010151600001516001600160a01b0316141561543a5760018b828151811061541b57fe5b6020908102919091010151901515608090910152600190960195615442565b6001016153d3565b505b60001901615346565b508489510360405190808252806020026020018201604052801561548b57816020015b615478617a3e565b8152602001906001900390816154705790505b509650848951036040519080825280602002602001820160405280156154c557816020015b60608152602001906001900390816154b05790505b5095506000915060005b8951811015615559578981815181106154e457fe5b6020026020010151608001516155515789818151811061550057fe5b602002602001015188848151811061551457fe5b602002602001018190525088818151811061552b57fe5b602002602001015187848151811061553f57fe5b60200260200101819052508260010192505b6001016154cf565b5050505050505b9250929050565b600154825160005b82811015615684576001615581617a3e565b6001838154811061558e57fe5b600091825260208083206040805160c08101825260049490940290910180546001600160a01b0390811685526001820154811693850193909352600281015492831691840191909152600160a01b82046001600160401b03166060840152600160e01b90910460ff16151560808301526003015460a082015291505b848110156156585787818151811061561e57fe5b6020026020010151600001516001600160a01b031682600001516001600160a01b031614156156505760009250615658565b60010161560a565b50811561567a5780516001600160a01b03166000908152600460205260408120555b505060010161556f565b508082111561574357805b828110156157415760018054806156a257fe5b60008281526020812060046000199093019283020180546001600160a01b0319908116825560018201805490911690556002810180546001600160e81b0319169055600301559055600b8054806156f557fe5b60008281526020812060166000199093019283020181815560018101805460ff19169055906157276002830182617a73565b615735600383016000617ad7565b5050905560010161568f565b505b60008183106157525781615754565b825b905060005b81811015615aec5761580686828151811061577057fe5b60200260200101516001838154811061578557fe5b60009182526020918290206040805160c08101825260049390930290910180546001600160a01b0390811684526001820154811694840194909452600281015493841691830191909152600160a01b83046001600160401b03166060830152600160e01b90920460ff161515608082015260039091015460a0820152616f54565b6159ba57806001016004600088848151811061581e57fe5b6020026020010151600001516001600160a01b03166001600160a01b031681526020019081526020016000208190555085818151811061585a57fe5b60200260200101516001828154811061586f57fe5b6000918252602091829020835160049092020180546001600160a01b039283166001600160a01b0319918216178255928401516001820180549184169185169190911790556040840151600282018054606087015160808801511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b1995909716929097169190911792909216939093171692909217905560a090910151600390910155845185908290811061592a57fe5b6020026020010151600b828154811061593f57fe5b90600052602060002090601602016002019080519060200190615963929190617973565b506000600b828154811061597357fe5b60009182526020822060169190910201600101805460ff191692151592909217909155600b8054839081106159a457fe5b6000918252602090912060169091020155615ae4565b615a4b8582815181106159c957fe5b6020026020010151600b83815481106159de57fe5b600091825260209182902060026016909202018101805460408051601f6000196101006001861615020190931694909404918201859004850284018501905280835291929091908301828280156135695780601f1061353e57610100808354040283529160200191613569565b615a9657848181518110615a5b57fe5b6020026020010151600b8281548110615a7057fe5b90600052602060002090601602016002019080519060200190615a94929190617973565b505b858181518110615aa257fe5b60200260200101516080015160018281548110615abb57fe5b9060005260206000209060040201600201601c6101000a81548160ff0219169083151502179055505b600101615759565b5082821115615cc457615afd617944565b835b83811015615cc157858181518110615b1357fe5b602002602001015182604001819052506001878281518110615b3157fe5b6020908102919091018101518254600181810185556000948552838520835160049093020180546001600160a01b039384166001600160a01b0319918216178255848601518284018054918616918316919091179055604080860151600284018054606089015160808a01511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b1995909a1692909616919091179290921696909617169190911790935560a090930151600390930192909255600b8054928301815590935284516016909102600080516020618f07833981519152810191825585830151600080516020618f478339815191528201805491151560ff1990921691909117905592850151805186949293615c6793600080516020618f2783398151915201920190617973565b506060820151615c7d90600383019060136179ed565b5050508060010160046000898481518110615c9457fe5b602090810291909101810151516001600160a01b0316825281019190915260400160002055600101615aff565b50505b615ccc616fd5565b615cd46171bd565b6000600981905560015493505b83811015615d42576000600b8281548110615cf857fe5b60009182526020822060169190910201600101805460ff191692151592909217909155600b805483908110615d2957fe5b6000918252602090912060169091020155600101615ce1565b505050505050565b600061110483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506173ab565b6000828201838110156111045760405162461bcd60e51b8152600401610df290618535565b60008060018381548110615dc157fe5b90600052602060002090600402016003015490506000600180805490500390506001615deb612f3f565b5111615e2057600060018581548110615e0057fe5b906000526020600020906004020160030181905550600092505050611c9d565b846001600160a01b03167f3b6f9ef90462b512a1293ecec018670bf7b7f1876fb727590a8a6d7643130a7083604051615e599190618dfa565b60405180910390a26001600160a01b038516600090815260046020526040812055835b600154600019018110156160465760018160010181548110615e9a57fe5b906000526020600020906004020160018281548110615eb557fe5b60009182526020909120825460049092020180546001600160a01b03199081166001600160a01b0393841617825560018085015481840180548416918616919091179055600280860180549185018054909416919095161780835584546001600160401b03600160a01b91829004160267ffffffffffffffff60a01b1990911617808355935460ff600160e01b918290041615150260ff60e01b19909416939093179055600392830154920191909155600b805490918301908110615f7657fe5b9060005260206000209060160201600b8281548110615f9157fe5b600091825260209091208254601690920201908155600180830154818301805460ff909216151560ff1990921691909117905560028084018054615fe8938386019390821615610100026000190190911604617ae6565b50615ffb60038281019084016013617b5b565b5090505080600101600460006001848154811061601457fe5b600091825260208083206004909202909101546001600160a01b03168352820192909252604001902055600101615e7c565b50600180548061605257fe5b60008281526020812060046000199093019283020180546001600160a01b0319908116825560018201805490911690556002810180546001600160e81b0319169055600301559055600b8054806160a557fe5b60008281526020812060166000199093019283020181815560018101805460ff19169055906160d76002830182617a73565b6160e5600383016000617ad7565b5050905560008183816160f457fe5b04905080156161585760015460005b8181101561615557826001828154811061611957fe5b906000526020600020906004020160030154016001828154811061613957fe5b6000918252602090912060036004909202010155600101616103565b50505b50600195945050505050565b6001548151604080518281526020808402820101909152606092919083908280156161a357816020015b606081526020019060019003908161618e5790505b50600b5490915083146161ba579250611bed915050565b60005b828110156162c957600b6001600460008985815181106161d957fe5b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054038154811061620d57fe5b600091825260209182902060026016909202018101805460408051601f6000196101006001861615020190931694909404918201859004850284018501905280835291929091908301828280156162a55780601f1061627a576101008083540402835291602001916162a5565b820191906000526020600020905b81548152906001019060200180831161628857829003601f168201915b50505050508282815181106162b657fe5b60209081029190910101526001016161bd565b50949350505050565b60005b8281101561641f57600082878388016040516020016162f5929190618136565b6040516020818303038152906040528051906020012060001c8161631557fe5b06905080850182870114616416576000898388018151811061633357fe5b602002602001015190506060898489018151811061634d57fe5b602002602001015190508a8388018151811061636557fe5b60200260200101518b858a018151811061637b57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050818b848901815181106163aa57fe5b60200260200101906001600160a01b031690816001600160a01b03168152505089838801815181106163d857fe5b60200260200101518a858a01815181106163ee57fe5b6020026020010181905250808a8489018151811061640857fe5b602002602001018190525050505b506001016162d5565b5050505050505050565b600980546001908101909155600b80548390811061644357fe5b906000526020600020906016020160010160006101000a81548160ff02191690831515021790555043600b828154811061647957fe5b600091825260208220601690910201919091556040516001600160a01b038416917ff62981a567ec3cec866c6fa93c55bcdf841d6292d18b8d522ececa769375d82d91a25050565b6000816040516020016164d4919061811a565b60405160208183030381529060405280519060200120836040516020016164fb919061811a565b6040516020818303038152906040528051906020012014905092915050565b015190565b81518151600091600191811480831461653b5760009250616579565b600160208701838101602088015b6002848385100114156165745780518351146165685760009650600093505b60209283019201616549565b505050505b5090949350505050565b6001600160a01b038116600090815260046020526040812054806165ac57506000199050611bed565b6001810390506000600182815481106165c157fe5b90600052602060002090600402016003015490506000600183815481106165e457fe5b6000918252602090912060036004909202010155600154604051600019909101906001600160a01b038616907f8cd4e147d8af98a9e3b6724021b8bf6aed2e5dac71c38f2dce8161b82585b25d9061663d908590618dfa565b60405180910390a28061665557829350505050611bed565b600081838161666057fe5b049050801561671c5760005b848110156166be57816001828154811061668257fe5b90600052602060002090600402016003015401600182815481106166a257fe5b600091825260209091206003600490920201015560010161666c565b50600180549085015b818110156167195782600182815481106166dd57fe5b90600052602060002090600402016003015401600182815481106166fd57fe5b60009182526020909120600360049092020101556001016166c7565b50505b5091949350505050565b60008261673557506000611c9d565b8282028284828161674257fe5b04146111045760405162461bcd60e51b8152600401610df290618904565b600061110483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506173d7565b6167aa617b85565b506040805180820190915281518152602082810190820152919050565b6167cf617ab7565b6167d88261740e565b6167e157600080fd5b60006167f08360200151617448565b60208085015160408051808201909152868152920190820152915050919050565b600061681b617b85565b505080518051602091820151919092015191011190565b61683a617b85565b61684382616811565b61684c57600080fd5b6020820151600061685c826174ab565b80830160209586015260408051808201909152908152938401919091525090919050565b80516000901580159061689557508151602110155b61689e57600080fd5b60006168ad8360200151617448565b905080836000015110156168d35760405162461bcd60e51b8152600401610df290618b12565b8251602080850151830180519284900392918310156162c957506020919091036101000a90049392505050565b606061690b8261740e565b61691457600080fd5b600061691f8361758c565b905060608160405190808252806020026020018201604052801561695d57816020015b61694a617b85565b8152602001906001900390816169425790505b509050600061696f8560200151617448565b60208601510190506000805b848110156169c65761698c836174ab565b91506040518060400160405280838152602001848152508482815181106169af57fe5b60209081029190910101529181019160010161697b565b509195945050505050565b6169d9617a3e565b606060006169e5617a3e565b60606169ef617ab7565b6169f8876167c7565b90506000805b616a0783616811565b15616adc5780616a3257616a22616a1d84616832565b6175e8565b6001600160a01b03168552616ad4565b8060011415616a5a57616a47616a1d84616832565b6001600160a01b03166020860152616ad4565b8060021415616a8257616a6f616a1d84616832565b6001600160a01b03166040860152616ad4565b8060031415616aae57616a97613e8b84616832565b6001600160401b0316606086015260019150616ad4565b8060041415616acf57616ac8616ac384616832565b617602565b9350616ad4565b616adc565b6001016169fe565b50929791965091945092505050565b6060611c9d616af983617672565b617758565b6060815160001415616b1f5750604080516000815260208101909152611bed565b606082600081518110616b2e57fe5b602002602001015190506000600190505b8351811015616b6f57616b6582858381518110616b5857fe5b60200260200101516177aa565b9150600101616b3f565b50611104616b82825160c060ff16617827565b826177aa565b60608060006120026001600160a01b031663c473318f6040518163ffffffff1660e01b815260040160206040518083038186803b158015616bc857600080fd5b505afa158015616bdc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190616c009190617fef565b90508085518851011015616c15575083518651015b606081604051908082528060200260200182016040528015616c5157816020015b616c3e617a3e565b815260200190600190039081616c365790505b509050606082604051908082528060200260200182016040528015616c8a57816020015b6060815260200190600190039081616c755790505b50905060008060005b8b51831080616ca25750895182105b8015616cad57508581105b15616f42578b51831415616d1d57898281518110616cc757fe5b6020026020010151858281518110616cdb57fe5b6020026020010181905250888281518110616cf257fe5b6020026020010151848281518110616d0657fe5b602090810291909101015260019182019101616c93565b8951821415616d88578b8381518110616d3257fe5b6020026020010151858281518110616d4657fe5b60200260200101819052508a8381518110616d5d57fe5b6020026020010151848281518110616d7157fe5b602090810291909101015260019283019201616c93565b898281518110616d9457fe5b6020026020010151606001516001600160401b03168c8481518110616db557fe5b6020026020010151606001516001600160401b03161115616e31578b8381518110616ddc57fe5b6020026020010151858281518110616df057fe5b60200260200101819052508a8381518110616e0757fe5b6020026020010151848281518110616e1b57fe5b6020026020010181905250826001019250616f3a565b898281518110616e3d57fe5b6020026020010151606001516001600160401b03168c8481518110616e5e57fe5b6020026020010151606001516001600160401b03161015616eda57898281518110616e8557fe5b6020026020010151858281518110616e9957fe5b6020026020010181905250888281518110616eb057fe5b6020026020010151848281518110616ec457fe5b6020026020010181905250816001019150616f3a565b898281518110616ee657fe5b6020026020010151600001516001600160a01b03168c8481518110616f0757fe5b6020026020010151600001516001600160a01b03161015616f2e578b8381518110616ddc57fe5b898281518110616cc757fe5b600101616c93565b50929a91995090975050505050505050565b805182516000916001600160a01b039182169116148015616f8e575081602001516001600160a01b031683602001516001600160a01b0316145b8015616fb3575081604001516001600160a01b031683604001516001600160a01b0316145b80156111045750506060908101519101516001600160401b0390811691161490565b6012546013548082111561702057805b8281101561701e576012805480616ff857fe5b6001900381819060005260206000200160006170149190617a73565b9055600101616fe5565b505b600081831061702f5781617031565b825b905060005b81811015617149576170ee6012828154811061704e57fe5b600091825260209182902001805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156170dc5780601f106170b1576101008083540402835291602001916170dc565b820191906000526020600020905b8154815290600101906020018083116170bf57829003601f168201915b5050505050601383815481106134db57fe5b61714157601381815481106170ff57fe5b906000526020600020016012828154811061711657fe5b90600052602060002001908054600181600116156101000203166002900461713f929190617ae6565b505b600101617036565b5082821115610e1257825b828110156171b75760126013828154811061716b57fe5b60009182526020808320845460018181018755958552919093209290910180546171ae949390920192909160026101009282161592909202600019011604617ae6565b50600101617154565b50505050565b601354600b548082111561720857805b828110156172065760138054806171e057fe5b6001900381819060005260206000200160006171fc9190617a73565b90556001016171cd565b505b60008183106172175781617219565b825b905060005b81811015617338576172d66013828154811061723657fe5b600091825260209182902001805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156172c45780601f10617299576101008083540402835291602001916172c4565b820191906000526020600020905b8154815290600101906020018083116172a757829003601f168201915b5050505050600b83815481106159de57fe5b61733057600b81815481106172e757fe5b90600052602060002090601602016002016013828154811061730557fe5b90600052602060002001908054600181600116156101000203166002900461732e929190617ae6565b505b60010161721e565b5082821115610e1257825b828110156171b7576013600b828154811061735a57fe5b6000918252602080832084546001808201875595855291909320601692909202909201600290810180546173a295939094019390926000199082161561010002011604617ae6565b50600101617343565b600081848411156173cf5760405162461bcd60e51b8152600401610df291906182d7565b505050900390565b600081836173f85760405162461bcd60e51b8152600401610df291906182d7565b50600083858161740457fe5b0495945050505050565b805160009061741f57506000611bed565b6020820151805160001a9060c082101561743e57600092505050611bed565b5060019392505050565b8051600090811a6080811015617462576000915050611bed565b60b881108061747d575060c0811080159061747d575060f881105b1561748c576001915050611bed565b60c08110156174a05760b519019050611bed565b60f519019050611bed565b80516000908190811a60808110156174c65760019150617585565b60b88110156174db57607e1981019150617585565b60c081101561752c57600060b78203600186019550806020036101000a8651049150600181018201935050808310156175265760405162461bcd60e51b8152600401610df290618851565b50617585565b60f88110156175415760be1981019150617585565b600060f78203600186019550806020036101000a8651049150600181018201935050808310156175835760405162461bcd60e51b8152600401610df290618851565b505b5092915050565b805160009061759d57506000611bed565b600080905060006175b18460200151617448565b602085015185519181019250015b808210156175df576175d0826174ab565b820191508260010192506175bf565b50909392505050565b80516000906015146175f957600080fd5b611c9d82616880565b805160609061761057600080fd5b600061761f8360200151617448565b83516040805191839003808352601f19601f8201168301602001909152919250606090828015617656576020820181803683370190505b50905060008160200190506162c98487602001510182856178f9565b604080516020808252818301909252606091829190602082018180368337505050602081018490529050600067ffffffffffffffff1984166176b6575060186176da565b6fffffffffffffffffffffffffffffffff1984166176d6575060106176da565b5060005b6020811015617710578181815181106176ef57fe5b01602001516001600160f81b0319161561770857617710565b6001016176da565b60008160200390506060816040519080825280601f01601f191660200182016040528015617745576020820181803683370190505b5080830196909652508452509192915050565b60608151600114801561778a5750607f60f81b8260008151811061777857fe5b01602001516001600160f81b03191611155b15617796575080611bed565b611c9d6177a88351608060ff16617827565b835b6060806040519050835180825260208201818101602087015b818310156177db5780518352602092830192016177c3565b50855184518101855292509050808201602086015b818310156178085780518352602092830192016177f0565b508651929092011591909101601f01601f191660405250905092915050565b60606801000000000000000083106178515760405162461bcd60e51b8152600401610df29061869c565b604080516001808252818301909252606091602082018180368337019050509050603784116178ab5782840160f81b8160008151811061788d57fe5b60200101906001600160f81b031916908160001a9053509050611c9d565b60606178b685617672565b90508381510160370160f81b826000815181106178cf57fe5b60200101906001600160f81b031916908160001a9053506178f082826177aa565b95945050505050565b8061790357610e12565b5b60208110617923578251825260209283019290910190601f1901617904565b915181516020939093036101000a6000190180199091169216919091179052565b6040518060800160405280600081526020016000151581526020016060815260200161796e617b9f565b905290565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106179b457805160ff19168380011785556179e1565b828001600101855582156179e1579182015b828111156179e15782518255916020019190600101906179c6565b50613084929150617bbe565b82601381019282156179e157916020028201828111156179e15782518255916020019190600101906179c6565b6040518060600160405280600060ff16815260200160608152602001606081525090565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a081019190915290565b50805460018160011615610100020316600290046000825580601f10617a995750611df9565b601f016020900490600052602060002090810190611df99190617bbe565b6040518060400160405280617aca617b85565b8152602001600081525090565b50611df9906013810190617bbe565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10617b1f57805485556179e1565b828001600101855582156179e157600052602060002091601f016020900482015b828111156179e1578254825591600101919060010190617b40565b82601381019282156179e157918201828111156179e1578254825591600101919060010190617b40565b604051806040016040528060008152602001600081525090565b6040518061026001604052806013906020820280368337509192915050565b61302891905b808211156130845760008155600101617bc4565b8035611c9d81618ed1565b60008083601f840112617bf4578182fd5b5081356001600160401b03811115617c0a578182fd5b602083019150836020808302850101111561556057600080fd5b6000601f8381840112617c35578182fd5b8235617c48617c4382618e86565b618e60565b818152925060208084019085810160005b84811015617cda578135880189603f820112617c7457600080fd5b838101356001600160401b03811115617c8c57600080fd5b617c9d818901601f19168601618e60565b81815260408c81848601011115617cb357600080fd5b82818501888401375060009181018601919091528552509282019290820190600101617c59565b50505050505092915050565b600082601f830112617cf6578081fd5b8135617d04617c4382618e86565b818152915060208083019084810181840286018201871015617d2557600080fd5b6000805b85811015617cda5782356001600160401b0381168114617d47578283fd5b85529383019391830191600101617d29565b60008083601f840112617d6a578182fd5b5081356001600160401b03811115617d80578182fd5b60208301915083602082850101111561556057600080fd5b600060208284031215617da9578081fd5b813561110481618ed1565b600060208284031215617dc5578081fd5b815161110481618ed1565b60008060008060408587031215617de5578283fd5b84356001600160401b0380821115617dfb578485fd5b617e0788838901617be3565b90965094506020870135915080821115617e1f578384fd5b50617e2c87828801617be3565b95989497509550505050565b600080600060608486031215617e4c578283fd5b83356001600160401b0380821115617e62578485fd5b81860187601f820112617e73578586fd5b80359250617e83617c4384618e86565b80848252602080830192508084018b828389028701011115617ea357898afd5b8994505b86851015617ecd57617eb98c82617bd8565b845260019490940193928101928101617ea7565b509097508801359350505080821115617ee4578384fd5b617ef087838801617ce6565b93506040860135915080821115617f05578283fd5b50617f1286828701617c24565b9150509250925092565b600060208284031215617f2d578081fd5b81518015158114611104578182fd5b60008060208385031215617f4e578182fd5b82356001600160401b03811115617f63578283fd5b617f6f85828601617d59565b90969095509350505050565b60008060008060408587031215617f90578384fd5b84356001600160401b0380821115617fa6578586fd5b617fb288838901617d59565b90965094506020870135915080821115617fca578384fd5b50617e2c87828801617d59565b600060208284031215617fe8578081fd5b5035919050565b600060208284031215618000578081fd5b5051919050565b60008060408385031215618019578182fd5b505080516020909101519092909150565b60008060006040848603121561803e578081fd5b833560ff8116811461804e578182fd5b925060208401356001600160401b03811115618068578182fd5b61807486828701617d59565b9497909650939450505050565b6000815180845260208085019450808401835b838110156180b95781516001600160a01b031687529582019590820190600101618094565b509495945050505050565b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b60008151808452618106816020860160208601618ea5565b601f01601f19169290920160200192915050565b6000825161812c818460208701618ea5565b9190910192915050565b918252602082015260400190565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b03968716815294861660208601529290941660408401526001600160401b03166060830152911515608082015260a081019190915260c00190565b6001600160a01b0392909216825260ff16602082015260400190565b6000602082526111046020830184618081565b6000604082526181f56040830185618081565b602083820381850152818551808452828401915082838202850101838801865b8381101561824357601f198784030185526182318383516180ee565b94860194925090850190600101618215565b50909998505050505050505050565b6000608082526182656080830187618081565b828103602084810191909152865180835287820192820190845b8181101561829b5784518352938301939183019160010161827f565b505084810360408601526182af8188618081565b93505050506001600160401b038316606083015295945050505050565b901515815260200190565b60006020825261110460208301846180ee565b6000604082526182fe6040830186886180c4565b82810360208401526183118185876180c4565b979650505050505050565b6020808252601c908201527f6c656e677468206f66206275726e526174696f206d69736d6174636800000000604082015260600190565b60208082526042908201527f746865206275726e526174696f20706c75732073797374656d5265776172645260408201527f6174696f206d757374206265206e6f2067726561746572207468616e20313030606082015261030360f41b608082015260a00190565b60208082526026908201527f6c656e677468206f66206d61784e756d4f664d61696e7461696e696e67206d696040820152650e6dac2e8c6d60d31b606082015260800190565b6020808252601b908201527f6261746368207472616e736665722072657475726e2066616c73650000000000604082015260600190565b6020808252602c908201527f6c656e677468206f66206d61784e756d4f66576f726b696e6743616e6469646160408201526b0e8cae640dad2e6dac2e8c6d60a31b606082015260800190565b60208082526025908201527f6c656e677468206f66206d61696e7461696e536c6173685363616c65206d69736040820152640dac2e8c6d60db1b606082015260800190565b6020808252818101527f6c656e677468206f66206e756d4f66436162696e657473206d69736d61746368604082015260600190565b60208082526019908201527f74686520636f6e7472616374206e6f7420696e69742079657400000000000000604082015260600190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b60208082526028908201527f746865206e756d4f66436162696e657473206d75737420626520677265617465604082015267072207468616e20360c41b606082015260800190565b60208082526039908201527f746865206e756d4f66436162696e657473206d757374206265206c657373207460408201527f68616e204d41585f4e554d5f4f465f56414c494441544f525300000000000000606082015260800190565b60208082526029908201527f746865206e756d626572206f662076616c696461746f727320657863656564206040820152681d1a19481b1a5b5a5d60ba1b606082015260800190565b60208082526022908201527f63616e206e6f7420646f207468697320747769636520696e206f6e6520626c6f604082015261636b60f01b606082015260800190565b6020808252600e908201526d696e70757420746f6f206c6f6e6760901b604082015260600190565b60208082526037908201527f746865206d61784e756d4f664d61696e7461696e696e67206d7573742062652060408201527f6c657373207468616e206e756d4f66436162696e657473000000000000000000606082015260800190565b6020808252602b908201527f6475706c696361746520636f6e73656e7375732061646472657373206f66207660408201526a185b1a59185d1bdc94d95d60aa1b606082015260800190565b60208082526027908201527f7468652065787069726554696d655365636f6e64476170206973206f7574206f604082015266662072616e676560c81b606082015260800190565b6020808252601590820152746465706f7369742076616c7565206973207a65726f60581b604082015260600190565b60208082526049908201527f746865206d61784e756d4f66576f726b696e6743616e64696461746573206d7560408201527f7374206265206e6f742067726561746572207468616e206d61784e756d4f6643606082015268616e6469646174657360b81b608082015260a00190565b6020808252601190820152706164646974696f6e206f766572666c6f7760781b604082015260600190565b60208082526023908201527f63616e206e6f7420656e7465722054656d706f72617279204d61696e74656e616040820152626e636560e81b606082015260800190565b60208082526025908201527f6c656e677468206f66206a61696c2076616c696461746f7273206d757374206260408201526465206f6e6560d81b606082015260800190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252601490820152736761737072696365206973206e6f74207a65726f60601b604082015260600190565b6020808252602e908201527f746865206d6573736167652073656e646572206d75737420626520676f76657260408201526d1b985b98d94818dbdb9d1c9858dd60921b606082015260800190565b60208082526025908201527f6c656e677468206f66206d61784e756d4f6643616e64696461746573206d69736040820152640dac2e8c6d60db1b606082015260800190565b6020808252601290820152716e6f7420696e206d61696e74656e616e636560701b604082015260600190565b60208082526021908201527f666565206973206c6172676572207468616e2044555354595f494e434f4d494e6040820152604760f81b606082015260800190565b60208082526019908201527f74686520636f6e747261637420616c726561647920696e697400000000000000604082015260600190565b60208082526042908201527f7468652073797374656d526577617264526174696f20706c7573206275726e5260408201527f6174696f206d757374206265206e6f2067726561746572207468616e20313030606082015261030360f41b608082015260a00190565b6020808252601a908201527f6c656e677468206973206c657373207468616e206f6666736574000000000000604082015260600190565b60208082526026908201527f6c656e677468206f662065787069726554696d655365636f6e64476170206d696040820152650e6dac2e8c6d60d31b606082015260800190565b60208082526017908201527f6f6e6c792063757272656e742076616c696461746f7273000000000000000000604082015260600190565b60208082526021908201527f6661696c656420746f20706172736520696e69742076616c696461746f7253656040820152601d60fa1b606082015260800190565b6020808252602f908201527f746865206d6573736167652073656e646572206d7573742062652063726f737360408201526e0818da185a5b8818dbdb9d1c9858dd608a1b606082015260800190565b6020808252602d908201527f746865206d6573736167652073656e646572206d75737420626520746865206260408201526c3637b1b590383937b23ab1b2b960991b606082015260800190565b60208082526024908201527f6c656e677468206f662073797374656d526577617264526174696f206d69736d6040820152630c2e8c6d60e31b606082015260800190565b6020808252603e908201527f746865206d61696e7461696e536c6173685363616c65206d757374206265206760408201527f726561746572207468616e203020616e64206c657373207468616e2031300000606082015260800190565b6020808252600d908201526c756e6b6e6f776e20706172616d60981b604082015260600190565b60208082526029908201527f746865206d6573736167652073656e646572206d75737420626520736c6173686040820152680818dbdb9d1c9858dd60ba1b606082015260800190565b6020808252601f908201527f746865206d73672073656e646572206d757374206265207374616b6548756200604082015260600190565b61ffff91909116815260200190565b90815260200190565b60008482528315156020830152606060408301526178f060608301846180ee565b63ffffffff91909116815260200190565b60ff91909116815260200190565b600060ff85168252604060208301526178f06040830184866180c4565b6040518181016001600160401b0381118282101715618e7e57600080fd5b604052919050565b60006001600160401b03821115618e9b578081fd5b5060209081020190565b60005b83811015618ec0578181015183820152602001618ea8565b838111156171b75750506000910152565b6001600160a01b0381168114611df957600080fdfe70e72399380dcfb0338abc03dc8d47f9f470ada8e769c9a78d644ea97385ecb20175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db90175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01dbb0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01dbaf87680f873f871949fb29aac15b9a4b7f17c3385939b007540f4d791949fb29aac15b9a4b7f17c3385939b007540f4d791949fb29aac15b9a4b7f17c3385939b007540f4d79164b085e6972fc98cd3c81d64d40e325acfed44365b97a7567a27939c14dbc7512ddcf54cb1284eb637cfa308ae4e00cb5588a164736f6c6343000604000a", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/1abdfbf3aeb86909c2220b79bf92b87ddff64b54", + Code: "6080604052600436106104fb5760003560e01c806388b32f111161028c578063c6d339451161015a578063e40716a1116100cc578063f92eb86b11610085578063f92eb86b14610d2d578063f9a2bbc714610d42578063fc3e590814610d57578063fccc281314610d6c578063fd4ad81f14610d81578063fd6a687914610db057610502565b8063e40716a114610c9b578063ea321e4914610cb0578063eb57e20214610cd0578063eda5868c14610cf0578063f1fad10414610d05578063f340fa0114610d1a57610502565b8063d86222d51161011e578063d86222d514610c1d578063daacdb6614610c32578063dc927faf14610c47578063df8079e914610c5c578063e086c7b114610c71578063e1c7392a14610c8657610502565b8063c6d3394514610bbe578063c81b166214610bd3578063c8509d811461098d578063ce910b0c14610be8578063d68fb56a14610c0857610502565b8063a78abc16116101fe578063ad3c9da6116101b7578063ad3c9da614610b3d578063aef198a914610b5d578063b7ab4db514610b72578063b8cf4ef114610b94578063bf9f4995146106fe578063c466689d14610ba957610502565b8063a78abc1614610ab4578063aa82dce114610ac9578063aad5606314610ade578063aaf5eb6814610af3578063ab51bb9614610b08578063ac43175114610b1d57610502565b806396713da91161025057806396713da914610a365780639dc0926214610a4b5780639fe0f81614610a60578063a0dc275814610a75578063a1a11bf514610a8a578063a5422d5c14610a9f57610502565b806388b32f11146109c25780638a7beb01146109d75780638b5ad0c9146109ec5780638d19a41014610a015780639369d7de14610a2157610502565b806351b4dce3116103c957806370fd5bad1161033b5780637e434d54116102f45780637e434d541461094e57806381650b6214610963578063820dcaa814610978578063831d65d11461098d578063853230aa1461090f57806386249882146109ad57610502565b806370fd5bad146108d0578063718a8aa8146108e557806375d47a0a146108fa57806378dfed4a1461090f5780637942fd05146109245780637a84ca2a1461093957610502565b80635d77156c1161038d5780635d77156c1461082a5780635de1e22c1461083f57806360eba4fe1461085457806362b72cf5146108745780636969a25c146108895780636e47b482146108bb57610502565b806351b4dce3146107ab57806351e80672146107c057806355614fcc146107d5578063565c56b3146107f55780635667515a1461081557610502565b8063300c35671161046d57806343756e5c1161042657806343756e5c1461072057806345cf9daf14610735578063493279b11461074a5780634bf6c8821461076c5780634df6e0c3146107815780635192c82c1461079657610502565b8063300c35671461065b578063321d398a1461067b5780633365af3a1461069b57806335409f7f146106bb5780633b071dcc146106db5780633dffc387146106fe57610502565b8063152ad3b8116104bf578063152ad3b8146105ba5780631e4c1524146105dc5780631ff18069146105fc578063219f22d51461061157806328087028146106265780632a0ffb6e1461063b57610502565b806304c4fec61461050757806307a568471461051e5780630bee7a67146105495780630e2374a51461056b5780631182b8751461058d57610502565b3661050257005b600080fd5b34801561051357600080fd5b5061051c610dc5565b005b34801561052a57600080fd5b50610533610e37565b6040516105409190618cd1565b60405180910390f35b34801561055557600080fd5b5061055e610e3d565b6040516105409190618cfb565b34801561057757600080fd5b50610580610e42565b6040516105409190617fe4565b34801561059957600080fd5b506105ad6105a8366004617eca565b610e48565b6040516105409190618177565b3480156105c657600080fd5b506105cf611144565b604051610540919061816c565b3480156105e857600080fd5b5061051c6105f7366004617cd8565b61114d565b34801561060857600080fd5b50610533611804565b34801561061d57600080fd5b5061055e61180a565b34801561063257600080fd5b5061058061180f565b34801561064757600080fd5b5061051c610656366004617c38565b611815565b34801561066757600080fd5b5061051c610676366004617c70565b6118c2565b34801561068757600080fd5b506105cf610696366004617e77565b611c0b565b3480156106a757600080fd5b506105cf6106b6366004617e77565b611cda565b3480156106c757600080fd5b5061051c6106d6366004617c38565b611d8b565b3480156106e757600080fd5b506106f0611ef0565b604051610540929190618082565b34801561070a57600080fd5b506107136121cc565b6040516105409190618d0c565b34801561072c57600080fd5b506105806121d1565b34801561074157600080fd5b506105336121d7565b34801561075657600080fd5b5061075f6121dd565b6040516105409190618cc2565b34801561077857600080fd5b506107136121e3565b34801561078d57600080fd5b506106f06121e8565b3480156107a257600080fd5b50610533612366565b3480156107b757600080fd5b5061058061236c565b3480156107cc57600080fd5b50610580612372565b3480156107e157600080fd5b506105cf6107f0366004617c38565b612378565b34801561080157600080fd5b50610533610810366004617c38565b6123ad565b34801561082157600080fd5b506107136123fe565b34801561083657600080fd5b5061055e612403565b34801561084b57600080fd5b50610533612408565b34801561086057600080fd5b506105ad61086f366004617e77565b61240e565b34801561088057600080fd5b506105336124b4565b34801561089557600080fd5b506108a96108a4366004617e77565b6124ba565b60405161054096959493929190618011565b3480156108c757600080fd5b5061058061251e565b3480156108dc57600080fd5b50610713612524565b3480156108f157600080fd5b50610713612529565b34801561090657600080fd5b5061058061252e565b34801561091b57600080fd5b50610533612534565b34801561093057600080fd5b5061071361253a565b34801561094557600080fd5b5061053361253f565b34801561095a57600080fd5b50610580612545565b34801561096f57600080fd5b5061055e61254b565b34801561098457600080fd5b50610533612550565b34801561099957600080fd5b5061051c6109a8366004617eca565b612556565b3480156109b957600080fd5b506105336125b7565b3480156109ce57600080fd5b506105336125bd565b3480156109e357600080fd5b506105cf6125c3565b3480156109f857600080fd5b506105336125cc565b348015610a0d57600080fd5b50610533610a1c366004617c38565b6125d2565b348015610a2d57600080fd5b5061051c612612565b348015610a4257600080fd5b50610713612726565b348015610a5757600080fd5b5061058061272b565b348015610a6c57600080fd5b50610533612731565b348015610a8157600080fd5b50610533612736565b348015610a9657600080fd5b5061058061273b565b348015610aab57600080fd5b506105ad612741565b348015610ac057600080fd5b506105cf61275d565b348015610ad557600080fd5b50610580612766565b348015610aea57600080fd5b5061058061276c565b348015610aff57600080fd5b50610533612772565b348015610b1457600080fd5b5061055e6123fe565b348015610b2957600080fd5b5061051c610b38366004617e1b565b61277b565b348015610b4957600080fd5b50610533610b58366004617c38565b613014565b348015610b6957600080fd5b50610533613026565b348015610b7e57600080fd5b50610b87613033565b604051610540919061806f565b348015610ba057600080fd5b5061053361311f565b348015610bb557600080fd5b50610533613124565b348015610bca57600080fd5b50610533612524565b348015610bdf57600080fd5b5061058061312a565b348015610bf457600080fd5b506105ad610c03366004617e77565b613130565b348015610c1457600080fd5b5061053361313d565b348015610c2957600080fd5b5061053361317c565b348015610c3e57600080fd5b50610533613188565b348015610c5357600080fd5b5061058061318e565b348015610c6857600080fd5b50610580613194565b348015610c7d57600080fd5b50610533610e3d565b348015610c9257600080fd5b5061051c61319a565b348015610ca757600080fd5b5061053361342b565b348015610cbc57600080fd5b506105cf610ccb366004617ddc565b613431565b348015610cdc57600080fd5b5061051c610ceb366004617c38565b6135b7565b348015610cfc57600080fd5b5061055e6136bb565b348015610d1157600080fd5b506107136136c0565b61051c610d28366004617c38565b6136c5565b348015610d3957600080fd5b50610533613a44565b348015610d4e57600080fd5b50610580613a4a565b348015610d6357600080fd5b50610713612731565b348015610d7857600080fd5b50610580613a50565b348015610d8d57600080fd5b50610da1610d9c366004617e77565b613a56565b60405161054093929190618cda565b348015610dbc57600080fd5b50610580613b18565b6000610dd0336125d2565b9050600b8181548110610ddf57fe5b600091825260209091206001601690920201015460ff16610e1b5760405162461bcd60e51b8152600401610e12906188dd565b60405180910390fd5b6000610e2561313d565b9050610e32338383613b1e565b505050565b60095481565b606481565b61200181565b60005460609060ff16610e6d5760405162461bcd60e51b8152600401610e129061839e565b600b54610f2b57610e7c6177e4565b60015460005b81811015610f2757600b80546001810182556000919091528351600080516020618dde8339815191526016909202918201908155602080860151600080516020618e1e8339815191528401805460ff1916911515919091179055604086015180518794610f0393600080516020618dfe833981519152909101920190617813565b506060820151610f19906003830190601361788d565b505050806001019050610e82565b5050505b610f336178ba565b6000610f7485858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250613def92505050565b9150915080610f9057610f876064613fab565b9250505061113d565b815160009060ff16610fb557610fae8360200151846040015161400c565b9050611109565b825160ff166001141561110557826020015151600114610ffa57600080516020618dbe833981519152604051610fea90618796565b60405180910390a1506067611100565b6000836020015160008151811061100d57fe5b602090810291909101810151516001600160a01b0381166000908152600490925260409091205490915080158061106e575060018082038154811061104e57fe5b9060005260206000209060040201600201601c9054906101000a900460ff165b156110ac576040516001600160a01b038316907fe209c46bebf57cf265d5d9009a00870e256d9150f3ed5281ab9d9eb3cec6e4be90600090a26110f9565b60006110bb83600184036151ce565b9050806110f7576040516001600160a01b038416907fe209c46bebf57cf265d5d9009a00870e256d9150f3ed5281ab9d9eb3cec6e4be90600090a25b505b6000925050505b611109565b5060655b63ffffffff811661112e575050604080516000815260208101909152915061113d9050565b61113781613fab565b93505050505b9392505050565b60075460ff1681565b33411461116c5760405162461bcd60e51b8152600401610e1290618b2d565b3a1561118a5760405162461bcd60e51b8152600401610e129061881c565b82516040805182815260208084028201019091526060908280156111c857816020015b6111b56178de565b8152602001906001900390816111ad5790505b50905060005b82811015611272576040518060c001604052808783815181106111ed57fe5b60200260200101516001600160a01b0316815260200160006001600160a01b0316815260200160006001600160a01b0316815260200186838151811061122f57fe5b60200260200101516001600160401b03168152602001600015158152602001600081525082828151811061125f57fe5b60209081029190910101526001016111ce565b5060405163d31f968d60e01b81526120009063d31f968d9061129d9061100090600890600401618053565b60206040518083038186803b1580156112b557600080fd5b505afa1580156112c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ed9190617dbc565b156115d95780516015548181111561138f57815b8181101561138d57601580548061131457fe5b60008281526020812060046000199093019283020180546001600160a01b0319908116825560018201805490911690556002810180546001600160e81b0319169055600301559055601680548061136757fe5b6001900381819060005260206000200160006113839190617913565b9055600101611301565b505b60005b828110156115cf578181106114b75760158482815181106113af57fe5b602090810291909101810151825460018181018555600094855293839020825160049092020180546001600160a01b039283166001600160a01b0319918216178255938301519481018054958316958516959095179094556040820151600285018054606085015160808601511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b199590961692909716919091179290921692909217169290921790915560a00151600390910155855160169087908390811061147f57fe5b602090810291909101810151825460018101845560009384529282902081516114b19491909101929190910190617813565b506115c7565b8381815181106114c357fe5b6020026020010151601582815481106114d857fe5b6000918252602091829020835160049092020180546001600160a01b039283166001600160a01b0319918216178255928401516001820180549184169185169190911790556040840151600282018054606087015160808801511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b1995909716929097169190911792909216939093171692909217905560a090910151600390910155855186908290811061159357fe5b6020026020010151601682815481106115a857fe5b9060005260206000200190805190602001906115c5929190617813565b505b600101611392565b5050505050610e32565b6060806115e68386615581565b9150915060005b6001548110156116f4576001818154811061160457fe5b9060005260206000209060040201600301546000146116ec576120026001600160a01b031663092193ab6001838154811061163b57fe5b9060005260206000209060040201600301546001848154811061165a57fe5b60009182526020909120600491820201546040516001600160e01b031960e086901b168152611695926001600160a01b039092169101617fe4565b6000604051808303818588803b1580156116ae57600080fd5b505af11580156116c2573d6000803e3d6000fd5b50505050506000600182815481106116d657fe5b9060005260206000209060040201600301819055505b6001016115ed565b504715611762577f6ecc855f9440a9282c90913bbc91619fd44f5ec0b462af28d127b116f130aa4d4760405161172a9190618cd1565b60405180910390a1604051611002904780156108fc02916000818181858888f19350505050158015611760573d6000803e3d6000fd5b505b6000600381905560055581511561177d5761177d82826157ba565b6110016001600160a01b031663fc4333cd6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156117ba57600080fd5b505af11580156117ce573d6000803e3d6000fd5b50506040517fedd8d7296956dd970ab4de3f2fc03be2b0ffc615d20cd4c72c6e44f928630ebf925060009150a150505050505050565b60035481565b606881565b61200581565b33612002146118365760405162461bcd60e51b8152600401610e1290618c8b565b60005b6015548110156118be57816001600160a01b03166015828154811061185a57fe5b60009182526020909120600490910201546001600160a01b031614156118b65760016015828154811061188957fe5b9060005260206000209060040201600201601c6101000a81548160ff0219169083151502179055506118be565b600101611839565b5050565b3341146118e15760405162461bcd60e51b8152600401610e1290618b2d565b60105443116119025760405162461bcd60e51b8152600401610e1290618531565b3a156119205760405162461bcd60e51b8152600401610e129061881c565b60005460ff166119425760405162461bcd60e51b8152600401610e129061839e565b60006110023168056bc75e2d63100000811115611979576119728168056bc75e2d6310000063ffffffff615f9d16565b9150611980565b5050611c01565b6040516309a99b4f60e41b815261100290639a99b4f0906119a79030908690600401617ff8565b602060405180830381600087803b1580156119c157600080fd5b505af11580156119d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119f99190617e8f565b915081611a07575050611c01565b6000805b84811015611a3557858582818110611a1f57fe5b9050602002013582019150806001019050611a0b565b5080611a4357505050611c01565b6000806000805b89811015611bf95784898983818110611a5f57fe5b90506020020135880281611a6f57fe5b0493508a8a82818110611a7e57fe5b9050602002016020810190611a939190617c38565b6001600160a01b03811660009081526004602052604090205490935091508115611baf576000600180840381548110611ac857fe5b9060005260206000209060040201905080600201601c9054906101000a900460ff1615611b3557836001600160a01b03167fb9c75cbbfde137c4281689580799ef5f52144e78858f776a5979b2b212137d8586604051611b289190618cd1565b60405180910390a2611ba9565b600354611b48908663ffffffff615fdf16565b6003908155810154611b60908663ffffffff615fdf16565b60038201556040516001600160a01b038516907fcb0aad6cf9cd03bdf6137e359f541c42f38b39f007cae8e89e88aa7d8c6617b290611ba0908890618cd1565b60405180910390a25b50611bf1565b826001600160a01b03167fb9c75cbbfde137c4281689580799ef5f52144e78858f776a5979b2b212137d8585604051611be89190618cd1565b60405180910390a25b600101611a4a565b505050505050505b5050436010555050565b6001546000908210611c1f57506000611cd5565b60006001600160a01b031660018381548110611c3757fe5b60009182526020909120600490910201546001600160a01b03161480611c6757506008541580611c675750600a54155b80611c76575060085460095410155b80611c875750611c8582611cda565b155b80611cb057506000600b8381548110611c9c57fe5b906000526020600020906016020160000154115b80611cc457506001611cc0613033565b5111155b15611cd157506000611cd5565b5060015b919050565b6001546000908210611cee57506000611cd5565b600b548210611d2b5760018281548110611d0457fe5b9060005260206000209060040201600201601c9054906101000a900460ff16159050611cd5565b60018281548110611d3857fe5b9060005260206000209060040201600201601c9054906101000a900460ff16158015611d855750600b8281548110611d6c57fe5b600091825260209091206001601690920201015460ff16155b92915050565b600b54611e4957611d9a6177e4565b60015460005b81811015611e4557600b80546001810182556000919091528351600080516020618dde8339815191526016909202918201908155602080860151600080516020618e1e8339815191528401805460ff1916911515919091179055604086015180518794611e2193600080516020618dfe833981519152909101920190617813565b506060820151611e37906003830190601361788d565b505050806001019050611da0565b5050505b336110011480611e5a575033612002145b611e765760405162461bcd60e51b8152600401610e12906183d5565b6001600160a01b03811660009081526004602052604090205480611e9a5750611eed565b6001810390506000600b8281548110611eaf57fe5b600091825260209091206001601690920201015460ff169050611ed283836151ce565b8015611edb5750805b15610e32576009805460001901905550505b50565b60015460609081906000805b82811015611f435760018181548110611f1157fe5b9060005260206000209060040201600201601c9054906101000a900460ff16611f3b576001909101905b600101611efc565b50606081604051908082528060200260200182016040528015611f70578160200160208202803683370190505b509050606082604051908082528060200260200182016040528015611fa957816020015b6060815260200190600190039081611f945790505b50600b54600094509091508414156121245760005b8481101561211e5760018181548110611fd357fe5b9060005260206000209060040201600201601c9054906101000a900460ff16612116576001818154811061200357fe5b600091825260209091206004909102015483516001600160a01b039091169084908690811061202e57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050600b818154811061205b57fe5b600091825260209182902060026016909202018101805460408051601f6000196101006001861615020190931694909404918201859004850284018501905280835291929091908301828280156120f35780601f106120c8576101008083540402835291602001916120f3565b820191906000526020600020905b8154815290600101906020018083116120d657829003601f168201915b505050505082858151811061210457fe5b60209081029190910101526001909301925b600101611fbe565b506121c0565b60005b848110156121be576001818154811061213c57fe5b9060005260206000209060040201600201601c9054906101000a900460ff166121b6576001818154811061216c57fe5b600091825260209091206004909102015483516001600160a01b039091169084908690811061219757fe5b6001600160a01b03909216602092830291909101909101526001909301925b600101612127565b505b909450925050505b9091565b600181565b61100181565b60085481565b6102ca81565b600881565b600e54600c546060918291806121fc575060155b6060612206613033565b9050606061221382616004565b90508282511161222a5790945092506121c8915050565b8383835103101561223c578282510393505b8315612272576014430461225883838388880360008a8a616172565b6122708383838888038989038a8b8b8b510301616172565b505b60608360405190808252806020026020018201604052801561229e578160200160208202803683370190505b5090506060846040519080825280602002602001820160405280156122d757816020015b60608152602001906001900390816122c25790505b50905060005b85811015612358578481815181106122f157fe5b602002602001015183828151811061230557fe5b60200260200101906001600160a01b031690816001600160a01b03168152505083818151811061233157fe5b602002602001015182828151811061234557fe5b60209081029190910101526001016122dd565b509096509450505050509091565b60065481565b61200681565b61200081565b6001600160a01b038116600090815260046020526040812054806123a0576000915050611cd5565b6000190161113d81611cda565b6001600160a01b038116600090815260046020526040812054806123d5576000915050611cd5565b6001808203815481106123e457fe5b906000526020600020906004020160030154915050919050565b600081565b606781565b600f5481565b6012818154811061241b57fe5b600091825260209182902001805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152935090918301828280156124ac5780601f10612481576101008083540402835291602001916124ac565b820191906000526020600020905b81548152906001019060200180831161248f57829003601f168201915b505050505081565b60105481565b600181815481106124c757fe5b600091825260209091206004909102018054600182015460028301546003909301546001600160a01b0392831694509082169291821691600160a01b81046001600160401b031691600160e01b90910460ff169086565b61100581565b600281565b601081565b61100881565b6103e881565b600b81565b600c5481565b61200381565b606681565b61271081565b33612000146125775760405162461bcd60e51b8152600401610e1290618ade565b7f41ce201247b6ceb957dcdb217d0b8acb50b9ea0e12af9af4f5e7f389021016058383836040516125aa93929190618d1a565b60405180910390a1505050565b60025481565b60115481565b60145460ff1681565b600a5481565b6001600160a01b038116600090815260046020526040812054806126085760405162461bcd60e51b8152600401610e1290618a66565b6000190192915050565b600b546126d0576126216177e4565b60015460005b818110156126cc57600b80546001810182556000919091528351600080516020618dde8339815191526016909202918201908155602080860151600080516020618e1e8339815191528401805460ff19169115159190911790556040860151805187946126a893600080516020618dfe833981519152909101920190617813565b5060608201516126be906003830190601361788d565b505050806001019050612627565b5050505b6008546126dd5760036008555b600a546126ea576002600a555b60006126f5336125d2565b905061270081611c0b565b61271c5760405162461bcd60e51b8152600401610e1290618753565b611eed33826162c9565b600981565b61100781565b600381565b601481565b61100681565b6040518060a0016040528060788152602001618e3e6078913981565b60005460ff1681565b61200281565b61300081565b6402540be40081565b60005460ff1661279d5760405162461bcd60e51b8152600401610e129061839e565b33611007146127be5760405162461bcd60e51b8152600401610e129061884a565b61282884848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080518082019091526013815272065787069726554696d655365636f6e6447617606c1b602082015291506163619050565b156128c5576020811461284d5760405162461bcd60e51b8152600401610e1290618a20565b604080516020601f840181900481028201810190925282815260009161288b918585808385018382808284376000920191909152506163ba92505050565b9050606481101580156128a15750620186a08111155b6128bd5760405162461bcd60e51b8152600401610e1290618643565b600255612fd1565b61292584848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260098152686275726e526174696f60b81b602082015291506163619050565b156129b8576020811461294a5760405162461bcd60e51b8152600401610e12906181bc565b604080516020601f8401819004810282018101909252828152600091612988918585808385018382808284376000920191909152506163ba92505050565b9050612710600f54820111156129b05760405162461bcd60e51b8152600401610e12906181f3565b600655612fd1565b612a2284848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260138152726d61784e756d4f664d61696e7461696e696e6760681b602082015291506163619050565b15612abc5760208114612a475760405162461bcd60e51b8152600401610e129061825b565b604080516020601f8401819004810282018101909252828152600091612a85918585808385018382808284376000920191909152506163ba92505050565b600c5490915080612a94575060155b808210612ab35760405162461bcd60e51b8152600401610e129061859b565b50600855612fd1565b612b2584848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260128152716d61696e7461696e536c6173685363616c6560701b602082015291506163619050565b15612bbe5760208114612b4a5760405162461bcd60e51b8152600401610e1290618324565b604080516020601f8401819004810282018101909252828152600091612b88918585808385018382808284376000920191909152506163ba92505050565b9050600081118015612b9a5750600a81105b612bb65760405162461bcd60e51b8152600401610e1290618bbe565b600a55612fd1565b612c3284848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601981527f6d61784e756d4f66576f726b696e6743616e6469646174657300000000000000602082015291506163619050565b15612cc15760208114612c575760405162461bcd60e51b8152600401610e12906182d8565b604080516020601f8401819004810282018101909252828152600091612c95918585808385018382808284376000920191909152506163ba92505050565b9050600d54811115612cb95760405162461bcd60e51b8152600401610e12906186b9565b600e55612fd1565b612d2a84848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260128152716d61784e756d4f6643616e6469646174657360701b602082015291506163619050565b15612dac5760208114612d4f5760405162461bcd60e51b8152600401610e1290618898565b604080516020601f8401819004810282018101909252828152600091612d8d918585808385018382808284376000920191909152506163ba92505050565b600d819055600e54909150811015612da657600d54600e555b50612fd1565b612e1084848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600d81526c6e756d4f66436162696e65747360981b602082015291506163619050565b15612ebe5760208114612e355760405162461bcd60e51b8152600401610e1290618369565b604080516020601f8401819004810282018101909252828152600091612e73918585808385018382808284376000920191909152506163ba92505050565b905060008111612e955760405162461bcd60e51b8152600401610e1290618443565b6064811115612eb65760405162461bcd60e51b8152600401610e129061848b565b600c55612fd1565b612f2684848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601181527073797374656d526577617264526174696f60781b602082015291506163619050565b15612fb95760208114612f4b5760405162461bcd60e51b8152600401610e1290618b7a565b604080516020601f8401819004810282018101909252828152600091612f89918585808385018382808284376000920191909152506163ba92505050565b905061271060065482011115612fb15760405162461bcd60e51b8152600401610e1290618981565b600f55612fd1565b60405162461bcd60e51b8152600401610e1290618c1b565b7f6cdb0ac70ab7f2e2d035cca5be60d89906f2dede7648ddbd7402189c1eeed17a84848484604051613006949392919061818a565b60405180910390a150505050565b60046020526000908152604090205481565b68056bc75e2d6310000081565b6001546060906000805b828110156130625761304e81611cda565b1561305a578160010191505b60010161303d565b5060608160405190808252806020026020018201604052801561308f578160200160208202803683370190505b5090506000915060005b83811015613116576130aa81611cda565b1561310e57600181815481106130bc57fe5b600091825260209091206004909102015482516001600160a01b03909116908390859081106130e757fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508260010192505b600101613099565b50925050505b90565b601581565b61027181565b61100281565b6013818154811061241b57fe5b6000613147613033565b519050600080600c541161315c576015613160565b600c545b90508082111561316e578091505b8161317857600191505b5090565b67016345785d8a000081565b60055481565b61100381565b61200481565b60005460ff16156131bd5760405162461bcd60e51b8152600401610e129061894a565b6131c56178ba565b60006131e86040518060a0016040528060788152602001618e3e60789139613def565b91509150806132095760405162461bcd60e51b8152600401610e1290618a9d565b6132116177e4565b60005b83602001515181101561341257600b80546001810182556000919091528251600080516020618dde8339815191526016909202918201908155602080850151600080516020618e1e8339815191528401805460ff191691151591909117905560408501518051869461329a93600080516020618dfe833981519152909101920190617813565b5060608201516132b0906003830190601361788d565b505050836040015181815181106132c357fe5b6020026020010151600b82815481106132d857fe5b906000526020600020906016020160020190805190602001906132fc929190617813565b5060018460200151828151811061330f57fe5b60209081029190910181015182546001818101855560009485528385208351600493840290910180546001600160a01b039283166001600160a01b03199182161782558587015182850180549185169183169190911790556040860151600283018054606089015160808a01511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b199590981692909516919091179290921694909417161790915560a0909301516003909301929092559187015180519185019391859081106133e557fe5b602090810291909101810151516001600160a01b0316825281019190915260400160002055600101613214565b50506103e860025550506000805460ff19166001179055565b600d5481565b601354600090815b8181101561353a5761352285858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060138054909250859150811061348a57fe5b600091825260209182902001805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156135185780601f106134ed57610100808354040283529160200191613518565b820191906000526020600020905b8154815290600101906020018083116134fb57829003601f168201915b50505050506163bf565b1561353257600192505050611d85565b600101613439565b5060125460005b818110156135ab5761359286868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060128054909250859150811061348a57fe5b156135a35760019350505050611d85565b600101613541565b50600095945050505050565b33611001146135d85760405162461bcd60e51b8152600401610e1290618c42565b600b54613696576135e76177e4565b60015460005b8181101561369257600b80546001810182556000919091528351600080516020618dde8339815191526016909202918201908155602080860151600080516020618e1e8339815191528401805460ff191691151591909117905560408601518051879461366e93600080516020618dfe833981519152909101920190617813565b506060820151613684906003830190601361788d565b5050508060010190506135ed565b5050505b60006136a182616423565b90506136ac81611c0b565b156118be576118be82826162c9565b606581565b601181565b3341146136e45760405162461bcd60e51b8152600401610e1290618b2d565b60005460ff166137065760405162461bcd60e51b8152600401610e129061839e565b600034116137265760405162461bcd60e51b8152600401610e129061868a565b3a156137445760405162461bcd60e51b8152600401610e129061881c565b6001600160a01b03811660009081526004602052604090205460145434919060ff1661378457610271600f556103e86006556014805460ff191660011790555b60008211801561379657506000600f54115b156138485760006137c46127106137b8600f54346165c690919063ffffffff16565b9063ffffffff61660016565b90508015613846576040516110029082156108fc029083906000818181858888f193505050501580156137fb573d6000803e3d6000fd5b507f6ecc855f9440a9282c90913bbc91619fd44f5ec0b462af28d127b116f130aa4d8160405161382b9190618cd1565b60405180910390a1613843838263ffffffff615f9d16565b92505b505b60008211801561385a57506000600654115b1561390057600061387c6127106137b8600654346165c690919063ffffffff16565b905080156138fe5760405161dead9082156108fc029083906000818181858888f193505050501580156138b3573d6000803e3d6000fd5b507f627059660ea01c4733a328effb2294d2f86905bf806da763a89cee254de8bee5816040516138e39190618cd1565b60405180910390a16138fb838263ffffffff615f9d16565b92505b505b80156139fe57600060018083038154811061391757fe5b9060005260206000209060040201905080600201601c9054906101000a900460ff161561398457836001600160a01b03167ff177e5d6c5764d79c32883ed824111d9b13f5668cf6ab1cc12dd36791dd955b4846040516139779190618cd1565b60405180910390a26139f8565b600354613997908463ffffffff615fdf16565b60039081558101546139af908463ffffffff615fdf16565b60038201556040516001600160a01b038516907f93a090ecc682c002995fad3c85b30c5651d7fd29b0be5da9d784a3302aedc055906139ef908690618cd1565b60405180910390a25b50610e32565b826001600160a01b03167ff177e5d6c5764d79c32883ed824111d9b13f5668cf6ab1cc12dd36791dd955b483604051613a379190618cd1565b60405180910390a2505050565b600e5481565b61100081565b61dead81565b600b8181548110613a6357fe5b6000918252602091829020601691909102018054600180830154600280850180546040805161010096831615969096026000190190911692909204601f810188900488028501880190925281845293965060ff90911694919291830182828015613b0e5780601f10613ae357610100808354040283529160200191613b0e565b820191906000526020600020905b815481529060010190602001808311613af157829003601f168201915b5050505050905083565b61100481565b6000600a5460001480613b2f575081155b80613b3a5750600954155b15613b475750600061113d565b60096000815460019003919050819055506000613b92600a546137b8856137b8600b8981548110613b7457fe5b6000918252602090912060169091020154439063ffffffff615f9d16565b90506000600b8581548110613ba357fe5b906000526020600020906016020160010160006101000a81548160ff0219169083151502179055506000806110016001600160a01b0316638256ace66040518163ffffffff1660e01b8152600401604080518083038186803b158015613c0857600080fd5b505afa158015613c1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c409190617ea7565b9150915060009350808310613d9f57613c5987876151ce565b5060405163436aa28360e11b8152600090612002906386d5450690613c82908b90600401617fe4565b60206040518083038186803b158015613c9a57600080fd5b505afa158015613cae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613cd29190617c54565b6001600160a01b031614613d3e576040516313d13bdb60e31b815261100190639e89ded890613d07908a908790600401617ff8565b600060405180830381600087803b158015613d2157600080fd5b505af1158015613d35573d6000803e3d6000fd5b50505050613d96565b6040516305bfb49960e41b815261100190635bfb499090613d63908a90600401617fe4565b600060405180830381600087803b158015613d7d57600080fd5b505af1158015613d91573d6000803e3d6000fd5b505050505b60019350613db1565b818310613db157613daf87616423565b505b6040516001600160a01b038816907fb9d38178dc641ff1817967a63c9078cbcd955a9f1fcd75e0e3636de615d44d3b90600090a25050509392505050565b613df76178ba565b6000613e016178ba565b613e09617957565b613e1a613e1586616642565b616667565b90506000805b613e29836166b1565b15613f9d5780613e4e57613e44613e3f846166d2565b616720565b60ff168452613f95565b8060011415613f90576060613e6a613e65856166d2565b6167a0565b90508051604051908082528060200260200182016040528015613ea757816020015b613e946178de565b815260200190600190039081613e8c5790505b5085602001819052508051604051908082528060200260200182016040528015613ee557816020015b6060815260200190600190039081613ed05790505b50604086015260005b8151811015613f8557613eff6178de565b60606000613f1f858581518110613f1257fe5b6020026020010151616871565b92509250925080613f3f578860009a509a50505050505050505050613fa6565b8289602001518581518110613f5057fe5b60200260200101819052508189604001518581518110613f6c57fe5b6020026020010181905250505050806001019050613eee565b506001925050613f95565b613f9d565b600101613e20565b50919350909150505b915091565b604080516001808252818301909252606091829190816020015b6060815260200190600190039081613fc5579050509050613feb8363ffffffff1661698b565b81600081518110613ff857fe5b602002602001018190525061113d8161699e565b600060648351111561404357600080516020618dbe833981519152604051614033906184e8565b60405180910390a1506066611d85565b60005b83518110156140e15760005b818110156140d85784818151811061406657fe5b6020026020010151600001516001600160a01b031685838151811061408757fe5b6020026020010151600001516001600160a01b031614156140d057600080516020618dbe8339815191526040516140bd906185f8565b60405180910390a1606692505050611d85565b600101614052565b50600101614046565b5060608060606015805480602002602001604051908101604052809291908181526020016000905b828210156141935760008481526020908190206040805160c0810182526004860290920180546001600160a01b039081168452600180830154821685870152600283015491821693850193909352600160a01b81046001600160401b03166060850152600160e01b900460ff16151560808401526003015460a08301529083529092019101614109565b50505050905060606016805480602002602001604051908101604052809291908181526020016000905b828210156142685760008481526020908190208301805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156142545780601f1061422957610100808354040283529160200191614254565b820191906000526020600020905b81548152906001019060200180831161423757829003601f168201915b5050505050815260200190600101906141bd565b50505050905060005b82518110156142c55782818151811061428657fe5b6020026020010151606001516003028382815181106142a157fe5b60209081029190910101516001600160401b03909116606090910152600101614271565b506060806142d589898686616a28565b915091506142e38282615581565b60015460408051828152602080840282010190915292985090965060009550859450925060609150828015614322578160200160208202803683370190505b50905060005b828110156144b35760006001600160a01b03166120026001600160a01b03166386d545066001848154811061435957fe5b60009182526020909120600491820201546040516001600160e01b031960e085901b168152614394926001600160a01b039092169101617fe4565b60206040518083038186803b1580156143ac57600080fd5b505afa1580156143c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143e49190617c54565b6001600160a01b03161461444657600182828151811061440057fe5b602002602001019060ff16908160ff16815250506001818154811061442157fe5b906000526020600020906004020160030154600014614441578360010193505b6144ab565b67016345785d8a00006001828154811061445c57fe5b9060005260206000209060040201600301541061447e578460010194506144ab565b6001818154811061448b57fe5b9060005260206000209060040201600301546000146144ab578360010193505b600101614328565b506060846040519080825280602002602001820160405280156144e0578160200160208202803683370190505b50905060608560405190808252806020026020018201604052801561450f578160200160208202803683370190505b50905060608660405190808252806020026020018201604052801561453e578160200160208202803683370190505b50905060608760405190808252806020026020018201604052801561456d578160200160208202803683370190505b509050600060608860405190808252806020026020018201604052801561459e578160200160208202803683370190505b5090506060896040519080825280602002602001820160405280156145cd578160200160208202803683370190505b50905060009a506000995060006110046001600160a01b031663149d14d96040518163ffffffff1660e01b815260040160206040518083038186803b15801561461557600080fd5b505afa158015614629573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061464d9190617e8f565b905067016345785d8a000081111561469957600080516020618dbe83398151915260405161467a90618909565b60405180910390a160689e505050505050505050505050505050611d85565b60005b8a811015614a2d578981815181106146b057fe5b602002602001015160ff16600114156147a657600181815481106146d057fe5b9060005260206000209060040201600301546000146147a157600181815481106146f657fe5b600091825260209091206004909102015484516001600160a01b039091169085908e90811061472157fe5b60200260200101906001600160a01b031690816001600160a01b0316815250506001818154811061474e57fe5b906000526020600020906004020160030154838d8151811061476c57fe5b60200260200101818152505060018a8d8151811061478657fe5b602002602001019060ff16908160ff16815250508b6001019b505b614a25565b67016345785d8a0000600182815481106147bc57fe5b9060005260206000209060040201600301541061494157600181815481106147e057fe5b906000526020600020906004020160020160009054906101000a90046001600160a01b0316898e8151811061481157fe5b60200260200101906001600160a01b031690816001600160a01b03168152505060006402540be4006001838154811061484657fe5b9060005260206000209060040201600301548161485f57fe5b066001838154811061486d57fe5b9060005260206000209060040201600301540390506148958382615f9d90919063ffffffff16565b898f815181106148a157fe5b602002602001018181525050600182815481106148ba57fe5b906000526020600020906004020160010160009054906101000a90046001600160a01b0316878f815181106148eb57fe5b60200260200101906001600160a01b031690816001600160a01b03168152505081888f8151811061491857fe5b6020908102919091010152614933868263ffffffff615fdf16565b95508d6001019d5050614a25565b6001818154811061494e57fe5b906000526020600020906004020160030154600014614a25576001818154811061497457fe5b906000526020600020906004020160010160009054906101000a90046001600160a01b0316848d815181106149a557fe5b60200260200101906001600160a01b031690816001600160a01b031681525050600181815481106149d257fe5b906000526020600020906004020160030154838d815181106149f057fe5b60200260200101818152505060008a8d81518110614a0a57fe5b602002602001019060ff16908160ff16815250508b6001019b505b60010161469c565b5060008415614ca3576002546040516303702b2960e51b815261100491636e056520918891614a67918e918e918d914201906004016180f2565b6020604051808303818588803b158015614a8057600080fd5b505af193505050508015614ab1575060408051601f3d908101601f19168201909252614aae91810190617dbc565b60015b614c28576040516000815260443d1015614acd57506000614b68565b60046000803e60005160e01c6308c379a08114614aee576000915050614b68565b60043d036004833e81513d60248201116001600160401b0382111715614b1957600092505050614b68565b80830180516001600160401b03811115614b3a576000945050505050614b68565b8060208301013d8601811115614b5857600095505050505050614b68565b601f01601f191660405250925050505b80614b735750614bb5565b60019150857fa7cdeed7d0db45e3219a6e5d60838824c16f1d39991fcfe3f963029c844bf28082604051614ba79190618177565b60405180910390a250614c23565b3d808015614bdf576040519150601f19603f3d011682016040523d82523d6000602084013e614be4565b606091505b5060019150857fbfa884552dd8921b6ce90bfe906952ae5b3b29be0cc1a951d4f62697635a3a4582604051614c199190618177565b60405180910390a2505b614ca3565b8015614c6a577fa217d08e65f80c73121cd9db834d81652d544bfbf452f6d04922b16c90a37b7086604051614c5d9190618cd1565b60405180910390a1614ca1565b857fa7cdeed7d0db45e3219a6e5d60838824c16f1d39991fcfe3f963029c844bf280604051614c98906182a1565b60405180910390a25b505b8015614e595760005b8751811015614e57576000888281518110614cc357fe5b60200260200101519050600060018281548110614cdc57fe5b60009182526020909120600160049092020181015481546001600160a01b03909116916108fc9185908110614d0d57fe5b9060005260206000209060040201600301549081150290604051600060405180830381858888f1935050505090508015614dc95760018281548110614d4e57fe5b60009182526020909120600160049092020181015481546001600160a01b03909116917f6c61d60f69a7beb3e1c80db7f39f37b208537cbb19da3174511b477812b2fc7d9185908110614d9d57fe5b906000526020600020906004020160030154604051614dbc9190618cd1565b60405180910390a2614e4d565b60018281548110614dd657fe5b60009182526020909120600160049092020181015481546001600160a01b03909116917f25d0ce7d2f0cec669a8c17efe49d195c13455bb8872b65fa610ac7f53fe4ca7d9185908110614e2557fe5b906000526020600020906004020160030154604051614e449190618cd1565b60405180910390a25b5050600101614cac565b505b83511561504f5760005b845181101561504d578a8181518110614e7857fe5b602002602001015160ff1660011415614f17576120026001600160a01b031663092193ab858381518110614ea857fe5b6020026020010151878481518110614ebc57fe5b60200260200101516040518363ffffffff1660e01b8152600401614ee09190617fe4565b6000604051808303818588803b158015614ef957600080fd5b505af1158015614f0d573d6000803e3d6000fd5b5050505050615045565b6000858281518110614f2557fe5b60200260200101516001600160a01b03166108fc868481518110614f4557fe5b60200260200101519081150290604051600060405180830381858888f1935050505090508015614fdb57858281518110614f7b57fe5b60200260200101516001600160a01b03167f6c61d60f69a7beb3e1c80db7f39f37b208537cbb19da3174511b477812b2fc7d868481518110614fb957fe5b6020026020010151604051614fce9190618cd1565b60405180910390a2615043565b858281518110614fe757fe5b60200260200101516001600160a01b03167f25d0ce7d2f0cec669a8c17efe49d195c13455bb8872b65fa610ac7f53fe4ca7d86848151811061502557fe5b602002602001015160405161503a9190618cd1565b60405180910390a25b505b600101614e63565b505b5050505050505050505050505060005b6001548110156150bc576001818154811061507657fe5b9060005260206000209060040201600301546000146150b45760006001828154811061509e57fe5b9060005260206000209060040201600301819055505b60010161505f565b50471561512a577f6ecc855f9440a9282c90913bbc91619fd44f5ec0b462af28d127b116f130aa4d476040516150f29190618cd1565b60405180910390a1604051611002904780156108fc02916000818181858888f19350505050158015615128573d6000803e3d6000fd5b505b600060038190556005558151156151455761514582826157ba565b6110016001600160a01b031663fc4333cd6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561518257600080fd5b505af1158015615196573d6000803e3d6000fd5b50506040517fedd8d7296956dd970ab4de3f2fc03be2b0ffc615d20cd4c72c6e44f928630ebf925060009150a1506000949350505050565b600080600183815481106151de57fe5b90600052602060002090600402016003015490506000600180805490500390506001615208613033565b511161523d5760006001858154811061521d57fe5b906000526020600020906004020160030181905550600092505050611d85565b846001600160a01b03167f3b6f9ef90462b512a1293ecec018670bf7b7f1876fb727590a8a6d7643130a70836040516152769190618cd1565b60405180910390a26001600160a01b038516600090815260046020526040812055835b6001546000190181101561546357600181600101815481106152b757fe5b9060005260206000209060040201600182815481106152d257fe5b60009182526020909120825460049092020180546001600160a01b03199081166001600160a01b0393841617825560018085015481840180548416918616919091179055600280860180549185018054909416919095161780835584546001600160401b03600160a01b91829004160267ffffffffffffffff60a01b1990911617808355935460ff600160e01b918290041615150260ff60e01b19909416939093179055600392830154920191909155600b80549091830190811061539357fe5b9060005260206000209060160201600b82815481106153ae57fe5b600091825260209091208254601690920201908155600180830154818301805460ff909216151560ff1990921691909117905560028084018054615405938386019390821615610100026000190190911604617977565b50615418600382810190840160136179ec565b5090505080600101600460006001848154811061543157fe5b600091825260208083206004909202909101546001600160a01b03168352820192909252604001902055600101615299565b50600180548061546f57fe5b60008281526020812060046000199093019283020180546001600160a01b0319908116825560018201805490911690556002810180546001600160e81b0319169055600301559055600b8054806154c257fe5b60008281526020812060166000199093019283020181815560018101805460ff19169055906154f46002830182617913565b615502600383016000617a16565b50509055600081838161551157fe5b04905080156155755760015460005b8181101561557257826001828154811061553657fe5b906000526020600020906004020160030154016001828154811061555657fe5b6000918252602090912060036004909202010155600101615520565b50505b50600195945050505050565b60608060008080808061559261313d565b6001549091505b80156156a057600181039250600b83815481106155b257fe5b600091825260209091206001601690920201015460ff166155d257615697565b600183815481106155df57fe5b60009182526020909120600490910201546001600160a01b03169450615606858484613b1e565b9350831580615619575060018a51038610155b1561562357615697565b60005b8a5181101561569557856001600160a01b03168b828151811061564557fe5b6020026020010151600001516001600160a01b0316141561568d5760018b828151811061566e57fe5b6020908102919091010151901515608090910152600190960195615695565b600101615626565b505b60001901615599565b50848951036040519080825280602002602001820160405280156156de57816020015b6156cb6178de565b8152602001906001900390816156c35790505b5096508489510360405190808252806020026020018201604052801561571857816020015b60608152602001906001900390816157035790505b5095506000915060005b89518110156157ac5789818151811061573757fe5b6020026020010151608001516157a45789818151811061575357fe5b602002602001015188848151811061576757fe5b602002602001018190525088818151811061577e57fe5b602002602001015187848151811061579257fe5b60200260200101819052508260010192505b600101615722565b5050505050505b9250929050565b600154825160005b828110156158d75760016157d46178de565b600183815481106157e157fe5b600091825260208083206040805160c08101825260049490940290910180546001600160a01b0390811685526001820154811693850193909352600281015492831691840191909152600160a01b82046001600160401b03166060840152600160e01b90910460ff16151560808301526003015460a082015291505b848110156158ab5787818151811061587157fe5b6020026020010151600001516001600160a01b031682600001516001600160a01b031614156158a357600092506158ab565b60010161585d565b5081156158cd5780516001600160a01b03166000908152600460205260408120555b50506001016157c2565b508082111561599657805b828110156159945760018054806158f557fe5b60008281526020812060046000199093019283020180546001600160a01b0319908116825560018201805490911690556002810180546001600160e81b0319169055600301559055600b80548061594857fe5b60008281526020812060166000199093019283020181815560018101805460ff191690559061597a6002830182617913565b615988600383016000617a16565b505090556001016158e2565b505b60008183106159a557816159a7565b825b905060005b81811015615d3f57615a598682815181106159c357fe5b6020026020010151600183815481106159d857fe5b60009182526020918290206040805160c08101825260049390930290910180546001600160a01b0390811684526001820154811694840194909452600281015493841691830191909152600160a01b83046001600160401b03166060830152600160e01b90920460ff161515608082015260039091015460a0820152616df4565b615c0d578060010160046000888481518110615a7157fe5b6020026020010151600001516001600160a01b03166001600160a01b0316815260200190815260200160002081905550858181518110615aad57fe5b602002602001015160018281548110615ac257fe5b6000918252602091829020835160049092020180546001600160a01b039283166001600160a01b0319918216178255928401516001820180549184169185169190911790556040840151600282018054606087015160808801511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b1995909716929097169190911792909216939093171692909217905560a0909101516003909101558451859082908110615b7d57fe5b6020026020010151600b8281548110615b9257fe5b90600052602060002090601602016002019080519060200190615bb6929190617813565b506000600b8281548110615bc657fe5b60009182526020822060169190910201600101805460ff191692151592909217909155600b805483908110615bf757fe5b6000918252602090912060169091020155615d37565b615c9e858281518110615c1c57fe5b6020026020010151600b8381548110615c3157fe5b600091825260209182902060026016909202018101805460408051601f6000196101006001861615020190931694909404918201859004850284018501905280835291929091908301828280156135185780601f106134ed57610100808354040283529160200191613518565b615ce957848181518110615cae57fe5b6020026020010151600b8281548110615cc357fe5b90600052602060002090601602016002019080519060200190615ce7929190617813565b505b858181518110615cf557fe5b60200260200101516080015160018281548110615d0e57fe5b9060005260206000209060040201600201601c6101000a81548160ff0219169083151502179055505b6001016159ac565b5082821115615f1757615d506177e4565b835b83811015615f1457858181518110615d6657fe5b602002602001015182604001819052506001878281518110615d8457fe5b6020908102919091018101518254600181810185556000948552838520835160049093020180546001600160a01b039384166001600160a01b0319918216178255848601518284018054918616918316919091179055604080860151600284018054606089015160808a01511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b1995909a1692909616919091179290921696909617169190911790935560a090930151600390930192909255600b8054928301815590935284516016909102600080516020618dde833981519152810191825585830151600080516020618e1e8339815191528201805491151560ff1990921691909117905592850151805186949293615eba93600080516020618dfe83398151915201920190617813565b506060820151615ed0906003830190601361788d565b5050508060010160046000898481518110615ee757fe5b602090810291909101810151516001600160a01b0316825281019190915260400160002055600101615d52565b50505b615f1f616e75565b615f2761705d565b6000600981905560015493505b83811015615f95576000600b8281548110615f4b57fe5b60009182526020822060169190910201600101805460ff191692151592909217909155600b805483908110615f7c57fe5b6000918252602090912060169091020155600101615f34565b505050505050565b600061113d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061724b565b60008282018381101561113d5760405162461bcd60e51b8152600401610e129061840c565b60015481516040805182815260208084028201019091526060929190839082801561604357816020015b606081526020019060019003908161602e5790505b50600b54909150831461605a579250611cd5915050565b60005b8281101561616957600b60016004600089858151811061607957fe5b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000205403815481106160ad57fe5b600091825260209182902060026016909202018101805460408051601f6000196101006001861615020190931694909404918201859004850284018501905280835291929091908301828280156161455780601f1061611a57610100808354040283529160200191616145565b820191906000526020600020905b81548152906001019060200180831161612857829003601f168201915b505050505082828151811061615657fe5b602090810291909101015260010161605d565b50949350505050565b60005b828110156162bf5760008287838801604051602001616195929190617fd6565b6040516020818303038152906040528051906020012060001c816161b557fe5b069050808501828701146162b657600089838801815181106161d357fe5b60200260200101519050606089848901815181106161ed57fe5b602002602001015190508a8388018151811061620557fe5b60200260200101518b858a018151811061621b57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050818b8489018151811061624a57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050898388018151811061627857fe5b60200260200101518a858a018151811061628e57fe5b6020026020010181905250808a848901815181106162a857fe5b602002602001018190525050505b50600101616175565b5050505050505050565b600980546001908101909155600b8054839081106162e357fe5b906000526020600020906016020160010160006101000a81548160ff02191690831515021790555043600b828154811061631957fe5b600091825260208220601690910201919091556040516001600160a01b038416917ff62981a567ec3cec866c6fa93c55bcdf841d6292d18b8d522ececa769375d82d91a25050565b6000816040516020016163749190617fba565b604051602081830303815290604052805190602001208360405160200161639b9190617fba565b6040516020818303038152906040528051906020012014905092915050565b015190565b8151815160009160019181148083146163db5760009250616419565b600160208701838101602088015b6002848385100114156164145780518351146164085760009650600093505b602092830192016163e9565b505050505b5090949350505050565b6001600160a01b0381166000908152600460205260408120548061644c57506000199050611cd5565b60018103905060006001828154811061646157fe5b906000526020600020906004020160030154905060006001838154811061648457fe5b6000918252602090912060036004909202010155600154604051600019909101906001600160a01b038616907f8cd4e147d8af98a9e3b6724021b8bf6aed2e5dac71c38f2dce8161b82585b25d906164dd908590618cd1565b60405180910390a2806164f557829350505050611cd5565b600081838161650057fe5b04905080156165bc5760005b8481101561655e57816001828154811061652257fe5b906000526020600020906004020160030154016001828154811061654257fe5b600091825260209091206003600490920201015560010161650c565b50600180549085015b818110156165b957826001828154811061657d57fe5b906000526020600020906004020160030154016001828154811061659d57fe5b6000918252602090912060036004909202010155600101616567565b50505b5091949350505050565b6000826165d557506000611d85565b828202828482816165e257fe5b041461113d5760405162461bcd60e51b8152600401610e12906187db565b600061113d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250617277565b61664a617a25565b506040805180820190915281518152602082810190820152919050565b61666f617957565b616678826172ae565b61668157600080fd5b600061669083602001516172e8565b60208085015160408051808201909152868152920190820152915050919050565b60006166bb617a25565b505080518051602091820151919092015191011190565b6166da617a25565b6166e3826166b1565b6166ec57600080fd5b602082015160006166fc8261734b565b80830160209586015260408051808201909152908152938401919091525090919050565b80516000901580159061673557508151602110155b61673e57600080fd5b600061674d83602001516172e8565b905080836000015110156167735760405162461bcd60e51b8152600401610e12906189e9565b82516020808501518301805192849003929183101561616957506020919091036101000a90049392505050565b60606167ab826172ae565b6167b457600080fd5b60006167bf8361742c565b90506060816040519080825280602002602001820160405280156167fd57816020015b6167ea617a25565b8152602001906001900390816167e25790505b509050600061680f85602001516172e8565b60208601510190506000805b848110156168665761682c8361734b565b915060405180604001604052808381526020018481525084828151811061684f57fe5b60209081029190910101529181019160010161681b565b509195945050505050565b6168796178de565b606060006168856178de565b606061688f617957565b61689887616667565b90506000805b6168a7836166b1565b1561697c57806168d2576168c26168bd846166d2565b617488565b6001600160a01b03168552616974565b80600114156168fa576168e76168bd846166d2565b6001600160a01b03166020860152616974565b80600214156169225761690f6168bd846166d2565b6001600160a01b03166040860152616974565b806003141561694e57616937613e3f846166d2565b6001600160401b0316606086015260019150616974565b806004141561696f57616968616963846166d2565b6174a2565b9350616974565b61697c565b60010161689e565b50929791965091945092505050565b6060611d8561699983617512565b6175f8565b60608151600014156169bf5750604080516000815260208101909152611cd5565b6060826000815181106169ce57fe5b602002602001015190506000600190505b8351811015616a0f57616a05828583815181106169f857fe5b602002602001015161764a565b91506001016169df565b5061113d616a22825160c060ff166176c7565b8261764a565b60608060006120026001600160a01b031663c473318f6040518163ffffffff1660e01b815260040160206040518083038186803b158015616a6857600080fd5b505afa158015616a7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190616aa09190617e8f565b90508085518851011015616ab5575083518651015b606081604051908082528060200260200182016040528015616af157816020015b616ade6178de565b815260200190600190039081616ad65790505b509050606082604051908082528060200260200182016040528015616b2a57816020015b6060815260200190600190039081616b155790505b50905060008060005b8b51831080616b425750895182105b8015616b4d57508581105b15616de2578b51831415616bbd57898281518110616b6757fe5b6020026020010151858281518110616b7b57fe5b6020026020010181905250888281518110616b9257fe5b6020026020010151848281518110616ba657fe5b602090810291909101015260019182019101616b33565b8951821415616c28578b8381518110616bd257fe5b6020026020010151858281518110616be657fe5b60200260200101819052508a8381518110616bfd57fe5b6020026020010151848281518110616c1157fe5b602090810291909101015260019283019201616b33565b898281518110616c3457fe5b6020026020010151606001516001600160401b03168c8481518110616c5557fe5b6020026020010151606001516001600160401b03161115616cd1578b8381518110616c7c57fe5b6020026020010151858281518110616c9057fe5b60200260200101819052508a8381518110616ca757fe5b6020026020010151848281518110616cbb57fe5b6020026020010181905250826001019250616dda565b898281518110616cdd57fe5b6020026020010151606001516001600160401b03168c8481518110616cfe57fe5b6020026020010151606001516001600160401b03161015616d7a57898281518110616d2557fe5b6020026020010151858281518110616d3957fe5b6020026020010181905250888281518110616d5057fe5b6020026020010151848281518110616d6457fe5b6020026020010181905250816001019150616dda565b898281518110616d8657fe5b6020026020010151600001516001600160a01b03168c8481518110616da757fe5b6020026020010151600001516001600160a01b03161015616dce578b8381518110616c7c57fe5b898281518110616b6757fe5b600101616b33565b50929a91995090975050505050505050565b805182516000916001600160a01b039182169116148015616e2e575081602001516001600160a01b031683602001516001600160a01b0316145b8015616e53575081604001516001600160a01b031683604001516001600160a01b0316145b801561113d5750506060908101519101516001600160401b0390811691161490565b60125460135480821115616ec057805b82811015616ebe576012805480616e9857fe5b600190038181906000526020600020016000616eb49190617913565b9055600101616e85565b505b6000818310616ecf5781616ed1565b825b905060005b81811015616fe957616f8e60128281548110616eee57fe5b600091825260209182902001805460408051601f6002600019610100600187161502019094169390930492830185900485028101850190915281815292830182828015616f7c5780601f10616f5157610100808354040283529160200191616f7c565b820191906000526020600020905b815481529060010190602001808311616f5f57829003601f168201915b50505050506013838154811061348a57fe5b616fe15760138181548110616f9f57fe5b9060005260206000200160128281548110616fb657fe5b906000526020600020019080546001816001161561010002031660029004616fdf929190617977565b505b600101616ed6565b5082821115610e3257825b828110156170575760126013828154811061700b57fe5b600091825260208083208454600181810187559585529190932092909101805461704e949390920192909160026101009282161592909202600019011604617977565b50600101616ff4565b50505050565b601354600b54808211156170a857805b828110156170a657601380548061708057fe5b60019003818190600052602060002001600061709c9190617913565b905560010161706d565b505b60008183106170b757816170b9565b825b905060005b818110156171d857617176601382815481106170d657fe5b600091825260209182902001805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156171645780601f1061713957610100808354040283529160200191617164565b820191906000526020600020905b81548152906001019060200180831161714757829003601f168201915b5050505050600b8381548110615c3157fe5b6171d057600b818154811061718757fe5b9060005260206000209060160201600201601382815481106171a557fe5b9060005260206000200190805460018160011615610100020316600290046171ce929190617977565b505b6001016170be565b5082821115610e3257825b82811015617057576013600b82815481106171fa57fe5b60009182526020808320845460018082018755958552919093206016929092029092016002908101805461724295939094019390926000199082161561010002011604617977565b506001016171e3565b6000818484111561726f5760405162461bcd60e51b8152600401610e129190618177565b505050900390565b600081836172985760405162461bcd60e51b8152600401610e129190618177565b5060008385816172a457fe5b0495945050505050565b80516000906172bf57506000611cd5565b6020820151805160001a9060c08210156172de57600092505050611cd5565b5060019392505050565b8051600090811a6080811015617302576000915050611cd5565b60b881108061731d575060c0811080159061731d575060f881105b1561732c576001915050611cd5565b60c08110156173405760b519019050611cd5565b60f519019050611cd5565b80516000908190811a60808110156173665760019150617425565b60b881101561737b57607e1981019150617425565b60c08110156173cc57600060b78203600186019550806020036101000a8651049150600181018201935050808310156173c65760405162461bcd60e51b8152600401610e1290618728565b50617425565b60f88110156173e15760be1981019150617425565b600060f78203600186019550806020036101000a8651049150600181018201935050808310156174235760405162461bcd60e51b8152600401610e1290618728565b505b5092915050565b805160009061743d57506000611cd5565b6000809050600061745184602001516172e8565b602085015185519181019250015b8082101561747f576174708261734b565b8201915082600101925061745f565b50909392505050565b805160009060151461749957600080fd5b611d8582616720565b80516060906174b057600080fd5b60006174bf83602001516172e8565b83516040805191839003808352601f19601f82011683016020019091529192506060908280156174f6576020820181803683370190505b5090506000816020019050616169848760200151018285617799565b604080516020808252818301909252606091829190602082018180368337505050602081018490529050600067ffffffffffffffff1984166175565750601861757a565b6fffffffffffffffffffffffffffffffff1984166175765750601061757a565b5060005b60208110156175b05781818151811061758f57fe5b01602001516001600160f81b031916156175a8576175b0565b60010161757a565b60008160200390506060816040519080825280601f01601f1916602001820160405280156175e5576020820181803683370190505b5080830196909652508452509192915050565b60608151600114801561762a5750607f60f81b8260008151811061761857fe5b01602001516001600160f81b03191611155b15617636575080611cd5565b611d856176488351608060ff166176c7565b835b6060806040519050835180825260208201818101602087015b8183101561767b578051835260209283019201617663565b50855184518101855292509050808201602086015b818310156176a8578051835260209283019201617690565b508651929092011591909101601f01601f191660405250905092915050565b60606801000000000000000083106176f15760405162461bcd60e51b8152600401610e1290618573565b6040805160018082528183019092526060916020820181803683370190505090506037841161774b5782840160f81b8160008151811061772d57fe5b60200101906001600160f81b031916908160001a9053509050611d85565b606061775685617512565b90508381510160370160f81b8260008151811061776f57fe5b60200101906001600160f81b031916908160001a905350617790828261764a565b95945050505050565b806177a357610e32565b5b602081106177c3578251825260209283019290910190601f19016177a4565b915181516020939093036101000a6000190180199091169216919091179052565b6040518060800160405280600081526020016000151581526020016060815260200161780e617a3f565b905290565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061785457805160ff1916838001178555617881565b82800160010185558215617881579182015b82811115617881578251825591602001919060010190617866565b50613178929150617a5e565b82601381019282156178815791602002820182811115617881578251825591602001919060010190617866565b6040518060600160405280600060ff16815260200160608152602001606081525090565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a081019190915290565b50805460018160011615610100020316600290046000825580601f106179395750611eed565b601f016020900490600052602060002090810190611eed9190617a5e565b604051806040016040528061796a617a25565b8152602001600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106179b05780548555617881565b8280016001018555821561788157600052602060002091601f016020900482015b828111156178815782548255916001019190600101906179d1565b826013810192821561788157918201828111156178815782548255916001019190600101906179d1565b50611eed906013810190617a5e565b604051806040016040528060008152602001600081525090565b6040518061026001604052806013906020820280368337509192915050565b61311c91905b808211156131785760008155600101617a64565b8035611d8581618da8565b60008083601f840112617a94578182fd5b5081356001600160401b03811115617aaa578182fd5b60208301915083602080830285010111156157b357600080fd5b6000601f8381840112617ad5578182fd5b8235617ae8617ae382618d5d565b618d37565b818152925060208084019085810160005b84811015617b7a578135880189603f820112617b1457600080fd5b838101356001600160401b03811115617b2c57600080fd5b617b3d818901601f19168601618d37565b81815260408c81848601011115617b5357600080fd5b82818501888401375060009181018601919091528552509282019290820190600101617af9565b50505050505092915050565b600082601f830112617b96578081fd5b8135617ba4617ae382618d5d565b818152915060208083019084810181840286018201871015617bc557600080fd5b6000805b85811015617b7a5782356001600160401b0381168114617be7578283fd5b85529383019391830191600101617bc9565b60008083601f840112617c0a578182fd5b5081356001600160401b03811115617c20578182fd5b6020830191508360208285010111156157b357600080fd5b600060208284031215617c49578081fd5b813561113d81618da8565b600060208284031215617c65578081fd5b815161113d81618da8565b60008060008060408587031215617c85578283fd5b84356001600160401b0380821115617c9b578485fd5b617ca788838901617a83565b90965094506020870135915080821115617cbf578384fd5b50617ccc87828801617a83565b95989497509550505050565b600080600060608486031215617cec578283fd5b83356001600160401b0380821115617d02578485fd5b81860187601f820112617d13578586fd5b80359250617d23617ae384618d5d565b80848252602080830192508084018b828389028701011115617d4357898afd5b8994505b86851015617d6d57617d598c82617a78565b845260019490940193928101928101617d47565b509097508801359350505080821115617d84578384fd5b617d9087838801617b86565b93506040860135915080821115617da5578283fd5b50617db286828701617ac4565b9150509250925092565b600060208284031215617dcd578081fd5b8151801515811461113d578182fd5b60008060208385031215617dee578182fd5b82356001600160401b03811115617e03578283fd5b617e0f85828601617bf9565b90969095509350505050565b60008060008060408587031215617e30578384fd5b84356001600160401b0380821115617e46578586fd5b617e5288838901617bf9565b90965094506020870135915080821115617e6a578384fd5b50617ccc87828801617bf9565b600060208284031215617e88578081fd5b5035919050565b600060208284031215617ea0578081fd5b5051919050565b60008060408385031215617eb9578182fd5b505080516020909101519092909150565b600080600060408486031215617ede578081fd5b833560ff81168114617eee578182fd5b925060208401356001600160401b03811115617f08578182fd5b617f1486828701617bf9565b9497909650939450505050565b6000815180845260208085019450808401835b83811015617f595781516001600160a01b031687529582019590820190600101617f34565b509495945050505050565b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b60008151808452617fa6816020860160208601618d7c565b601f01601f19169290920160200192915050565b60008251617fcc818460208701618d7c565b9190910192915050565b918252602082015260400190565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b03968716815294861660208601529290941660408401526001600160401b03166060830152911515608082015260a081019190915260c00190565b6001600160a01b0392909216825260ff16602082015260400190565b60006020825261113d6020830184617f21565b6000604082526180956040830185617f21565b602083820381850152818551808452828401915082838202850101838801865b838110156180e357601f198784030185526180d1838351617f8e565b948601949250908501906001016180b5565b50909998505050505050505050565b6000608082526181056080830187617f21565b828103602084810191909152865180835287820192820190845b8181101561813b5784518352938301939183019160010161811f565b5050848103604086015261814f8188617f21565b93505050506001600160401b038316606083015295945050505050565b901515815260200190565b60006020825261113d6020830184617f8e565b60006040825261819e604083018688617f64565b82810360208401526181b1818587617f64565b979650505050505050565b6020808252601c908201527f6c656e677468206f66206275726e526174696f206d69736d6174636800000000604082015260600190565b60208082526042908201527f746865206275726e526174696f20706c75732073797374656d5265776172645260408201527f6174696f206d757374206265206e6f2067726561746572207468616e20313030606082015261030360f41b608082015260a00190565b60208082526026908201527f6c656e677468206f66206d61784e756d4f664d61696e7461696e696e67206d696040820152650e6dac2e8c6d60d31b606082015260800190565b6020808252601b908201527f6261746368207472616e736665722072657475726e2066616c73650000000000604082015260600190565b6020808252602c908201527f6c656e677468206f66206d61784e756d4f66576f726b696e6743616e6469646160408201526b0e8cae640dad2e6dac2e8c6d60a31b606082015260800190565b60208082526025908201527f6c656e677468206f66206d61696e7461696e536c6173685363616c65206d69736040820152640dac2e8c6d60db1b606082015260800190565b6020808252818101527f6c656e677468206f66206e756d4f66436162696e657473206d69736d61746368604082015260600190565b60208082526019908201527f74686520636f6e7472616374206e6f7420696e69742079657400000000000000604082015260600190565b6020808252601f908201527f6f6e6c7920736c617368206f72207374616b6548756220636f6e747261637400604082015260600190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b60208082526028908201527f746865206e756d4f66436162696e657473206d75737420626520677265617465604082015267072207468616e20360c41b606082015260800190565b60208082526039908201527f746865206e756d4f66436162696e657473206d757374206265206c657373207460408201527f68616e204d41585f4e554d5f4f465f56414c494441544f525300000000000000606082015260800190565b60208082526029908201527f746865206e756d626572206f662076616c696461746f727320657863656564206040820152681d1a19481b1a5b5a5d60ba1b606082015260800190565b60208082526022908201527f63616e206e6f7420646f207468697320747769636520696e206f6e6520626c6f604082015261636b60f01b606082015260800190565b6020808252600e908201526d696e70757420746f6f206c6f6e6760901b604082015260600190565b60208082526037908201527f746865206d61784e756d4f664d61696e7461696e696e67206d7573742062652060408201527f6c657373207468616e206e756d4f66436162696e657473000000000000000000606082015260800190565b6020808252602b908201527f6475706c696361746520636f6e73656e7375732061646472657373206f66207660408201526a185b1a59185d1bdc94d95d60aa1b606082015260800190565b60208082526027908201527f7468652065787069726554696d655365636f6e64476170206973206f7574206f604082015266662072616e676560c81b606082015260800190565b6020808252601590820152746465706f7369742076616c7565206973207a65726f60581b604082015260600190565b60208082526049908201527f746865206d61784e756d4f66576f726b696e6743616e64696461746573206d7560408201527f7374206265206e6f742067726561746572207468616e206d61784e756d4f6643606082015268616e6469646174657360b81b608082015260a00190565b6020808252601190820152706164646974696f6e206f766572666c6f7760781b604082015260600190565b60208082526023908201527f63616e206e6f7420656e7465722054656d706f72617279204d61696e74656e616040820152626e636560e81b606082015260800190565b60208082526025908201527f6c656e677468206f66206a61696c2076616c696461746f7273206d757374206260408201526465206f6e6560d81b606082015260800190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252601490820152736761737072696365206973206e6f74207a65726f60601b604082015260600190565b6020808252602e908201527f746865206d6573736167652073656e646572206d75737420626520676f76657260408201526d1b985b98d94818dbdb9d1c9858dd60921b606082015260800190565b60208082526025908201527f6c656e677468206f66206d61784e756d4f6643616e64696461746573206d69736040820152640dac2e8c6d60db1b606082015260800190565b6020808252601290820152716e6f7420696e206d61696e74656e616e636560701b604082015260600190565b60208082526021908201527f666565206973206c6172676572207468616e2044555354595f494e434f4d494e6040820152604760f81b606082015260800190565b60208082526019908201527f74686520636f6e747261637420616c726561647920696e697400000000000000604082015260600190565b60208082526042908201527f7468652073797374656d526577617264526174696f20706c7573206275726e5260408201527f6174696f206d757374206265206e6f2067726561746572207468616e20313030606082015261030360f41b608082015260a00190565b6020808252601a908201527f6c656e677468206973206c657373207468616e206f6666736574000000000000604082015260600190565b60208082526026908201527f6c656e677468206f662065787069726554696d655365636f6e64476170206d696040820152650e6dac2e8c6d60d31b606082015260800190565b60208082526017908201527f6f6e6c792063757272656e742076616c696461746f7273000000000000000000604082015260600190565b60208082526021908201527f6661696c656420746f20706172736520696e69742076616c696461746f7253656040820152601d60fa1b606082015260800190565b6020808252602f908201527f746865206d6573736167652073656e646572206d7573742062652063726f737360408201526e0818da185a5b8818dbdb9d1c9858dd608a1b606082015260800190565b6020808252602d908201527f746865206d6573736167652073656e646572206d75737420626520746865206260408201526c3637b1b590383937b23ab1b2b960991b606082015260800190565b60208082526024908201527f6c656e677468206f662073797374656d526577617264526174696f206d69736d6040820152630c2e8c6d60e31b606082015260800190565b6020808252603e908201527f746865206d61696e7461696e536c6173685363616c65206d757374206265206760408201527f726561746572207468616e203020616e64206c657373207468616e2031300000606082015260800190565b6020808252600d908201526c756e6b6e6f776e20706172616d60981b604082015260600190565b60208082526029908201527f746865206d6573736167652073656e646572206d75737420626520736c6173686040820152680818dbdb9d1c9858dd60ba1b606082015260800190565b6020808252601f908201527f746865206d73672073656e646572206d757374206265207374616b6548756200604082015260600190565b61ffff91909116815260200190565b90815260200190565b60008482528315156020830152606060408301526177906060830184617f8e565b63ffffffff91909116815260200190565b60ff91909116815260200190565b600060ff8516825260406020830152617790604083018486617f64565b6040518181016001600160401b0381118282101715618d5557600080fd5b604052919050565b60006001600160401b03821115618d72578081fd5b5060209081020190565b60005b83811015618d97578181015183820152602001618d7f565b838111156170575750506000910152565b6001600160a01b0381168114611eed57600080fdfe70e72399380dcfb0338abc03dc8d47f9f470ada8e769c9a78d644ea97385ecb20175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db90175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01dbb0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01dbaf87680f873f871949fb29aac15b9a4b7f17c3385939b007540f4d791949fb29aac15b9a4b7f17c3385939b007540f4d791949fb29aac15b9a4b7f17c3385939b007540f4d79164b085e6972fc98cd3c81d64d40e325acfed44365b97a7567a27939c14dbc7512ddcf54cb1284eb637cfa308ae4e00cb5588a164736f6c6343000604000a", }, { ContractAddr: common.HexToAddress(SlashContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/cfc0bd1127186a917ddc38fd38d22903034d3f0b", - Code: "608060405234801561001057600080fd5b50600436106103425760003560e01c80637e434d54116101b8578063ac43175111610104578063dcc6f156116100a2578063f9a2bbc71161007c578063f9a2bbc7146105de578063fc3e5908146105e6578063fc4333cd146105ee578063fd6a6879146105f657610342565b8063dcc6f156146105c6578063df8079e9146105ce578063e1c7392a146105d657610342565b8063c8509d81116100de578063c8509d8114610585578063c96be4cb14610598578063cc844b73146105ab578063dc927faf146105be57610342565b8063ac43175114610562578063c80d4b8f14610575578063c81b16621461057d57610342565b80639f804f5f11610171578063aa82dce11161014b578063aa82dce114610542578063aad560631461054a578063ab51bb9614610552578063ac0af6291461055a57610342565b80639f804f5f1461052a578063a1a11bf514610532578063a78abc161461053a57610342565b80637e434d54146104e45780638256ace6146104ec578063831d65d1146104f457806396713da9146105075780639dc092621461050f5780639e89ded81461051757610342565b8063493279b11161029257806362b72cf511610230578063718a8aa81161020a578063718a8aa8146104c457806375d47a0a146104cc5780637912a65d146104d45780637942fd05146104dc57610342565b806362b72cf5146104ac5780636e47b482146104b457806370fd5bad146104bc57610342565b806351b4dce31161026c57806351b4dce31461048157806351e8067214610489578063567a372d146104915780635bfb49901461049957610342565b8063493279b11461045c5780634bf6c8821461047157806350055f901461047957610342565b806328087028116102ff57806337c8dab9116102d957806337c8dab914610416578063389f4f71146104375780633dffc3871461043f57806343756e5c1461045457610342565b806328087028146103e65780633306ccca146103ee57806335aa2e441461040357610342565b80630bee7a67146103475780630e2374a5146103655780631182b8751461037a57806322d1e80b1461039a57806323bac5a2146103af57806327962118146103d1575b600080fd5b61034f6105fe565b60405161035c9190613e4e565b60405180910390f35b61036d610603565b60405161035c919061362c565b61038d610388366004613562565b610609565b60405161035c9190613664565b6103a261066f565b60405161035c9190613659565b6103c26103bd366004613279565b610678565b60405161035c93929190613e36565b6103e46103df3660046133bf565b61069b565b005b61036d610ac2565b6103f6610ac8565b60405161035c9190613dfe565b61036d610411366004613532565b610acd565b610429610424366004613279565b610af4565b60405161035c929190613e28565b6103f6610b4b565b610447610b51565b60405161035c9190613e5f565b61036d610b56565b610464610b5c565b60405161035c9190613def565b610447610b62565b6103f6610b67565b61036d610b6d565b61036d610b73565b6103f6610b79565b6103e46104a7366004613279565b610b7f565b6103f6610c2a565b61036d610c30565b610447610c36565b610447610c3b565b61036d610c40565b6103f6610c46565b610447610c4b565b61036d610c50565b610429610c56565b6103e4610502366004613562565b610c60565b610447610d73565b61036d610d78565b6103e46105253660046132b1565b610d7e565b6103f6610dad565b61036d610db3565b6103a2610db9565b61036d610dc2565b61036d610dc8565b61034f610dce565b6103f6610dd3565b6103e4610570366004613416565b610dd8565b6103f6611374565b61036d611379565b6103e4610593366004613562565b61137f565b6103e46105a6366004613279565b6113f0565b6103e46105b936600461347f565b611871565b61036d611eb8565b6103f6611ebe565b61036d611ec3565b6103e4611ec9565b61036d611f16565b610447611f1c565b6103e4611f21565b61036d61236a565b606481565b61200181565b606033612000146106355760405162461bcd60e51b815260040161062c90613c92565b60405180910390fd5b60005460ff166106575760405162461bcd60e51b815260040161062c90613738565b60405162461bcd60e51b815260040161062c90613d83565b60075460ff1681565b600260208190526000918252604090912080546001820154919092015460ff1683565b60005460ff166106bd5760405162461bcd60e51b815260040161062c90613738565b6006546106ca5760146006555b8151158015906106da5750805115155b6106f65760405162461bcd60e51b815260040161062c90613bf0565b60408051600380825260808201909252606091816020015b606081526020019060019003908161070e5790505090506107306102ca612370565b8160008151811061073d57fe5b60200260200101819052506107518361238b565b8160018151811061075e57fe5b60200260200101819052506107728261238b565b8160028151811061077f57fe5b60200260200101819052506060610795826123e1565b60408051603480825260608281019093529293509091602082018180368337019050509050815160346020830182602086016068600019fa6107d657600080fd5b506014810151603482015160405163436aa28360e11b8152600090612002906386d545069061080990869060040161362c565b60206040518083038186803b15801561082157600080fd5b505afa158015610835573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108599190613295565b6001600160a01b031614156108805760405162461bcd60e51b815260040161062c90613708565b43600854820110156108a45760405162461bcd60e51b815260040161062c906136a9565b60606110006001600160a01b0316633b071dcc6040518163ffffffff1660e01b815260040160006040518083038186803b1580156108e157600080fd5b505afa1580156108f5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261091d91908101906132dc565b50905060005b8151811015610a605781818151811061093857fe5b60200260200101516001600160a01b0316846001600160a01b03161415610a58576006546040516309a99b4f60e41b815260646110028031909302049190639a99b4f09061098c9033908590600401613640565b602060405180830381600087803b1580156109a657600080fd5b505af11580156109ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109de919061354a565b506110006001600160a01b03166335409f7f8484815181106109fc57fe5b60200260200101516040518263ffffffff1660e01b8152600401610a20919061362c565b600060405180830381600087803b158015610a3a57600080fd5b505af1158015610a4e573d6000803e3d6000fd5b5050505050610a60565b600101610923565b50604051631871f7d960e31b81526120029063c38fbec890610a8690869060040161362c565b600060405180830381600087803b158015610aa057600080fd5b505af1158015610ab4573d6000803e3d6000fd5b505050505050505050505050565b61200581565b603c81565b60018181548110610ada57fe5b6000918252602090912001546001600160a01b0316905081565b600080610aff613060565b5050506001600160a01b0316600090815260026020818152604092839020835160608101855281548082526001830154938201849052919093015460ff16151592909301919091529091565b60055481565b600181565b61100181565b6102ca81565b600881565b60065481565b61200681565b61200081565b60045481565b3361100014610ba05760405162461bcd60e51b815260040161062c9061397b565b60005460ff16610bc25760405162461bcd60e51b815260040161062c90613738565b61200063f7a251d7600b610bd584612472565b60006040518463ffffffff1660e01b8152600401610bf593929190613e6d565b600060405180830381600087803b158015610c0f57600080fd5b505af1158015610c23573d6000803e3d6000fd5b5050505050565b60035481565b61100581565b600281565b601081565b61100881565b600581565b600b81565b61200381565b6004546005549091565b3361200014610c815760405162461bcd60e51b815260040161062c90613c92565b60005460ff16610ca35760405162461bcd60e51b815260040161062c90613738565b610cab613083565b6000610cec84848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061253c92505050565b915091508015610d335781516040517f7f0956d47419b9525356e7111652b653b530ec6f5096dccc04589bc38e62996791610d2691613e4e565b60405180910390a1610c23565b81516040517f7d45f62d17443dd4547bca8a8112c60e2385669318dc300ec61a5d2492f262e791610d6391613e4e565b60405180910390a150505b505050565b600981565b61100781565b3361100014610d9f5760405162461bcd60e51b815260040161062c9061397b565b610da982826125bc565b5050565b60085481565b61100681565b60005460ff1681565b61200281565b61300081565b600081565b600481565b60005460ff16610dfa5760405162461bcd60e51b815260040161062c90613738565b3361100714610e1b5760405162461bcd60e51b815260040161062c90613adf565b610e8684848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260148152731b5a5cd9195b59585b9bdc951a1c995cda1bdb1960621b602082015291506127939050565b15610f215760208114610eab5760405162461bcd60e51b815260040161062c90613907565b604080516020601f8401819004810282018101909252828152600091610ee9918585808385018382808284376000920191909152506127ed92505050565b905060018110158015610efd575060055481105b610f195760405162461bcd60e51b815260040161062c90613c4d565b600455611331565b610f8784848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600f81526e19995b1bdb9e551a1c995cda1bdb19608a1b602082015291506127939050565b156110235760208114610fac5760405162461bcd60e51b815260040161062c90613b2d565b604080516020601f8401819004810282018101909252828152600091610fea918585808385018382808284376000920191909152506127ed92505050565b90506103e88111158015610fff575060045481115b61101b5760405162461bcd60e51b815260040161062c906137f1565b600555611331565b61109084848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601681527566656c6f6e79536c617368526577617264526174696f60501b602082015291506127939050565b1561112a57602081146110b55760405162461bcd60e51b815260040161062c90613a67565b604080516020601f84018190048102820181019092528281526000916110f3918585808385018382808284376000920191909152506127ed92505050565b9050600a81101580156111065750606481105b6111225760405162461bcd60e51b815260040161062c90613b6f565b600655611331565b61119e84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601881527f656e61626c654d616c6963696f7573566f7465536c6173680000000000000000602082015291506127939050565b1561121557602081146111c35760405162461bcd60e51b815260040161062c90613826565b604080516020601f84018190048102820181019092528281526111ff91908484808385018382808284376000920191909152506127f292505050565b6007805460ff1916911515919091179055611331565b61127c84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601081526f66656c6f6e79536c61736853636f706560801b602082015291506127939050565b1561131957602081146112a15760405162461bcd60e51b815260040161062c906139f6565b604080516020601f84018190048102820181019092528281526000916112df918585808385018382808284376000920191909152506127ed92505050565b905061708081101580156112f55750620d2f0081105b6113115760405162461bcd60e51b815260040161062c9061376f565b600855611331565b60405162461bcd60e51b815260040161062c90613d2e565b7f6cdb0ac70ab7f2e2d035cca5be60d89906f2dede7648ddbd7402189c1eeed17a848484846040516113669493929190613677565b60405180910390a150505050565b600a81565b61100281565b33612000146113a05760405162461bcd60e51b815260040161062c90613c92565b60005460ff166113c25760405162461bcd60e51b815260040161062c90613738565b6040517f07db600eebe2ac176be8dcebad61858c245a4961bb32ca2aa3d159b09aa0810e90600090a1505050565b33411461140f5760405162461bcd60e51b815260040161062c90613ce1565b60005460ff166114315760405162461bcd60e51b815260040161062c90613738565b60035443116114525760405162461bcd60e51b815260040161062c90613dba565b3a156114705760405162461bcd60e51b815260040161062c90613a39565b60405163155853f360e21b8152611000906355614fcc9061149590849060040161362c565b60206040518083038186803b1580156114ad57600080fd5b505afa1580156114c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114e5919061339f565b6114ee5761186a565b6114f6613060565b506001600160a01b0381166000908152600260208181526040928390208351606081018552815481526001820154928101929092529091015460ff1615801592820192909252906115515760208101805160010190526115aa565b60016040820181905260208201819052805480820182556000919091527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180546001600160a01b0319166001600160a01b0384161790555b4381526005546020820151816115bc57fe5b0661179857600060208201526040516335409f7f60e01b8152611000906335409f7f906115ed90859060040161362c565b600060405180830381600087803b15801561160757600080fd5b505af115801561161b573d6000803e3d6000fd5b505060405163436aa28360e11b81526000925061200291506386d545069061164790869060040161362c565b60206040518083038186803b15801561165f57600080fd5b505afa158015611673573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116979190613295565b6001600160a01b0316146116b8576116b38282602001516125bc565b611793565b61200063f7a251d7600b6116cb85612472565b60006040518463ffffffff1660e01b81526004016116eb93929190613e6d565b600060405180830381600087803b15801561170557600080fd5b505af1925050508015611716575060015b611793573d808015611744576040519150601f19603f3d011682016040523d82523d6000602084013e611749565b606091505b50826001600160a01b03167fd7bc86ff5d08c8ab043edec743302aba2520e6635172a428bc956721db9e2d1c836020015183604051611789929190613e07565b60405180910390a2505b611804565b6004548160200151816117a757fe5b06611804576040516375abf10160e11b81526110009063eb57e202906117d190859060040161362c565b600060405180830381600087803b1580156117eb57600080fd5b505af11580156117ff573d6000803e3d6000fd5b505050505b6001600160a01b0382166000818152600260208181526040808420865181559186015160018301558581015191909201805460ff1916911515919091179055517fddb6012116e51abf5436d956a4f0ebd927e92c576ff96d7918290c8782291e3e9190a2505b5043600355565b60005460ff166118935760405162461bcd60e51b815260040161062c90613738565b60075460ff166118b55760405162461bcd60e51b815260040161062c906136d3565b6006546118c25760146006555b6008546118cf57603c6008555b6008548151604001514391011180156118f357504360085482602001516040015101115b61190f5760405162461bcd60e51b815260040161062c90613d55565b80602001516020015181600001516020015114801561193d5750806020015160600151816000015160600151145b1561195a5760405162461bcd60e51b815260040161062c9061394e565b8051604081015190511080156119795750602081015160408101519051105b6119955760405162461bcd60e51b815260040161062c906138d0565b6020810151518151511080156119ba5750806000015160400151816020015160400151105b806119e557508051516020820151511080156119e55750806020015160400151816000015160400151105b806119ff5750806020015160400151816000015160400151145b611a1b5760405162461bcd60e51b815260040161062c906137ba565b604080820151905163ea321e4960e01b81526110009163ea321e4991611a449190600401613664565b60206040518083038186803b158015611a5c57600080fd5b505afa158015611a70573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a94919061339f565b611ab05760405162461bcd60e51b815260040161062c90613ab0565b611ac28160000151826040015161281a565b8015611adb5750611adb8160200151826040015161281a565b611af75760405162461bcd60e51b815260040161062c90613871565b6060806110006001600160a01b0316633b071dcc6040518163ffffffff1660e01b815260040160006040518083038186803b158015611b3557600080fd5b505afa158015611b49573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611b7191908101906132dc565b9150915060005b8151811015611cac57611ba2828281518110611b9057fe5b602002602001015185604001516129f2565b15611ca4576006546040516213929d60e11b8152606461100280319093020491906227253a90611bd89033908590600401613640565b602060405180830381600087803b158015611bf257600080fd5b505af1158015611c06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c2a919061354a565b506110006001600160a01b03166335409f7f858481518110611c4857fe5b60200260200101516040518263ffffffff1660e01b8152600401611c6c919061362c565b600060405180830381600087803b158015611c8657600080fd5b505af1158015611c9a573d6000803e3d6000fd5b5050505050611cac565b600101611b78565b5060408084015190516317b4f35360e01b8152600091612002916317b4f35391611cd891600401613664565b60206040518083038186803b158015611cf057600080fd5b505afa158015611d04573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d289190613295565b6001600160a01b031614611d96576040808401519051630e9fbf5160e01b815261200291630e9fbf5191611d5f9190600401613664565b600060405180830381600087803b158015611d7957600080fd5b505af1158015611d8d573d6000803e3d6000fd5b50505050610d6e565b6000611da784604001516000612a56565b90506120006001600160a01b031663f7a251d7600b611dc98760400151612a72565b60006040518463ffffffff1660e01b8152600401611de993929190613e6d565b600060405180830381600087803b158015611e0357600080fd5b505af1925050508015611e14575060015b611e86573d808015611e42576040519150601f19603f3d011682016040523d82523d6000602084013e611e47565b606091505b50817fd58d1183100bd0932c0588f31c4205d6bc6168909765a96c41adbed3115f362882604051611e789190613664565b60405180910390a250611eb2565b60405181907f7b78aadacff901d8b63d0dba4f86283d4db8aef27f9ed70413dd860f1c9532b690600090a25b50505050565b61100381565b601481565b61200481565b60005460ff1615611eec5760405162461bcd60e51b815260040161062c90613bb9565b60056004819055600a905560078054600160ff199182168117909255600080549091169091179055565b61100081565b600381565b3361100014611f425760405162461bcd60e51b815260040161062c9061397b565b60005460ff16611f645760405162461bcd60e51b815260040161062c90613738565b600154611f7057612368565b600154600090600019015b80821161233c576000805b8284101561209f57611f96613060565b6002600060018781548110611fa757fe5b60009182526020808320909101546001600160a01b0316835282810193909352604091820190208151606081018352815481526001820154938101939093526002015460ff1615159082015260055490915060049004816020015111156120895760046005548161201457fe5b0481602001510381602001818152505080600260006001888154811061203657fe5b6000918252602080832091909101546001600160a01b0316835282810193909352604091820190208351815591830151600183015591909101516002909101805460ff1916911515919091179055612093565b600192505061209f565b50836001019350611f86565b828411612236576120ae613060565b60026000600186815481106120bf57fe5b60009182526020808320909101546001600160a01b0316835282810193909352604091820190208151606081018352815481526001820154938101939093526002015460ff1615159082015260055490915060049004816020015111156121a75760046005548161212c57fe5b0481602001510381602001818152505080600260006001878154811061214e57fe5b6000918252602080832091909101546001600160a01b03168352828101939093526040918201902083518155918301516001808401919091559201516002909101805460ff191691151591909117905591506122369050565b60026000600186815481106121b857fe5b60009182526020808320909101546001600160a01b031683528201929092526040018120818155600181810192909255600201805460ff191690558054806121fc57fe5b600082815260209020810160001990810180546001600160a01b0319169055019055836122295750612236565b506000199092019161209f565b8180156122405750805b1561231f57600260006001868154811061225657fe5b60009182526020808320909101546001600160a01b031683528201929092526040018120818155600181810192909255600201805460ff1916905580548490811061229d57fe5b600091825260209091200154600180546001600160a01b0390921691869081106122c357fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060018054806122fc57fe5b600082815260209020810160001990810180546001600160a01b03191690550190555b8261232b57505061233c565b505060019091019060001901611f7b565b6040517fcfdb3b6ccaeccbdc68be3c59c840e3b3c90f0a7c491f5fff1cf56cfda200dd9c90600090a150505b565b61100481565b606061238361237e83612aad565b61238b565b90505b919050565b6060815160011480156123bd5750607f60f81b826000815181106123ab57fe5b01602001516001600160f81b03191611155b156123c9575080612386565b6123836123db8351608060ff16612b93565b83612c65565b60608151600014156124025750604080516000815260208101909152612386565b60608260008151811061241157fe5b602002602001015190506000600190505b8351811015612452576124488285838151811061243b57fe5b6020026020010151612c65565b9150600101612422565b5061246b612465825160c060ff16612b93565b82612c65565b9392505050565b60408051600480825260a08201909252606091829190816020015b606081526020019060019003908161248d5790505090506124b6836001600160a01b0316612ce2565b816000815181106124c357fe5b60200260200101819052506124d743612370565b816001815181106124e457fe5b60209081029190910101526124fa6102ca612370565b8160028151811061250757fe5b602002602001018190525061251b42612370565b8160038151811061252857fe5b602002602001018190525061246b816123e1565b612544613083565b600061254e613083565b612556613095565b61256761256286612d05565b612d2a565b90506000805b61257683612d74565b156125af57806125a25761259161258c84612d95565b612de3565b63ffffffff168452600191506125a7565b6125af565b60010161256d565b5091935090915050915091565b6040516375cc7d8960e01b8152612002906375cc7d89906125e190859060040161362c565b600060405180830381600087803b1580156125fb57600080fd5b505af192505050801561260c575060015b610da9576040516000815260443d1015612628575060006126c5565b60046000803e60005160e01c6308c379a081146126495760009150506126c5565b60043d036004833e81513d602482011167ffffffffffffffff82111715612675576000925050506126c5565b808301805167ffffffffffffffff8111156126975760009450505050506126c5565b8060208301013d86018111156126b5576000955050505050506126c5565b601f01601f191660405250925050505b806126d05750612719565b826001600160a01b03167fd7bc86ff5d08c8ab043edec743302aba2520e6635172a428bc956721db9e2d1c838360405161270b929190613e07565b60405180910390a25061278e565b3d808015612743576040519150601f19603f3d011682016040523d82523d6000602084013e612748565b606091505b50826001600160a01b03167fd7bc86ff5d08c8ab043edec743302aba2520e6635172a428bc956721db9e2d1c8383604051612784929190613e07565b60405180910390a2505b610da9565b6000816040516020016127a69190613610565b60405160208183030381529060405280519060200120836040516020016127cd9190613610565b604051602081830303815290604052805190602001201490505b92915050565b015190565b8082015160009060ff81161561280c576001915081612812565b60009150815b505092915050565b60408051600480825260a0820190925260009160609190816020015b606081526020019060019003908161283657505060408051602080825281830190925291925060609190808201818036833701905050905061287b8560000151612370565b8260008151811061288857fe5b60200260200101819052506128a36020866020015183612e65565b6128ac8161238b565b826001815181106128b957fe5b60200260200101819052506128d18560400151612370565b826002815181106128de57fe5b60200260200101819052506128f96020866060015183612e65565b6129028161238b565b8260038151811061290f57fe5b60200260200101819052506129356020612928846123e1565b8051906020012083612e65565b6040805160b080825260e08201909252606091602082018180368337019050509050612965818360006020612e75565b61297781876080015160206060612e75565b612985818660806030612e75565b604080516001808252818301909252606091602082018180368337019050509050815160016020830182602086016066600019fa6129c257600080fd5b5060016129d0826000612ec8565b60ff16146129e55760009450505050506127e7565b5060019695505050505050565b815181516000916001918114808314612a0e5760009250612a4c565b600160208701838101602088015b600284838510011415612a47578051835114612a3b5760009650600093505b60209283019201612a1c565b505050505b5090949350505050565b60008160200183511015612a6957600080fd5b50016020015190565b60408051600480825260a08201909252606091829190816020015b6060815260200190600190039081612a8d5790505090506124b68361238b565b604080516020808252818301909252606091829190602082018180368337505050602081018490529050600067ffffffffffffffff198416612af157506018612b15565b6fffffffffffffffffffffffffffffffff198416612b1157506010612b15565b5060005b6020811015612b4b57818181518110612b2a57fe5b01602001516001600160f81b03191615612b4357612b4b565b600101612b15565b60008160200390506060816040519080825280601f01601f191660200182016040528015612b80576020820181803683370190505b5080830196909652508452509192915050565b6060680100000000000000008310612bbd5760405162461bcd60e51b815260040161062c906138a8565b60408051600180825281830190925260609160208201818036833701905050905060378411612c175782840160f81b81600081518110612bf957fe5b60200101906001600160f81b031916908160001a90535090506127e7565b6060612c2285612aad565b90508381510160370160f81b82600081518110612c3b57fe5b60200101906001600160f81b031916908160001a905350612c5c8282612c65565b95945050505050565b6060806040519050835180825260208201818101602087015b81831015612c96578051835260209283019201612c7e565b50855184518101855292509050808201602086015b81831015612cc3578051835260209283019201612cab565b508651929092011591909101601f01601f191660405250905092915050565b60408051600560a21b831860148201526034810190915260609061246b8161238b565b612d0d6130b5565b506040805180820190915281518152602082810190820152919050565b612d32613095565b612d3b82612ee4565b612d4457600080fd5b6000612d538360200151612f1e565b60208085015160408051808201909152868152920190820152915050919050565b6000612d7e6130b5565b505080518051602091820151919092015191011190565b612d9d6130b5565b612da682612d74565b612daf57600080fd5b60208201516000612dbf82612f81565b80830160209586015260408051808201909152908152938401919091525090919050565b805160009015801590612df857508151602110155b612e0157600080fd5b6000612e108360200151612f1e565b90508083600001511015612e365760405162461bcd60e51b815260040161062c90613c16565b825160208085015183018051928490039291831015612e5c57826020036101000a820491505b50949350505050565b9091018181526020918201910152565b60005b81811015610c2357838181518110612e8c57fe5b602001015160f81c60f81b858480600101955081518110612ea957fe5b60200101906001600160f81b031916908160001a905350600101612e78565b60008160010183511015612edb57600080fd5b50016001015190565b8051600090612ef557506000612386565b6020820151805160001a9060c0821015612f1457600092505050612386565b5060019392505050565b8051600090811a6080811015612f38576000915050612386565b60b8811080612f53575060c08110801590612f53575060f881105b15612f62576001915050612386565b60c0811015612f765760b519019050612386565b60f519019050612386565b80516000908190811a6080811015612f9c5760019150613059565b60b8811015612fb157607e1981019150613059565b60c081101561300257600060b78203600186019550806020036101000a865104915060018101820193505080831015612ffc5760405162461bcd60e51b815260040161062c906139cb565b50613059565b60f88110156130175760be1981019150613059565b600060f78203600186019550806020036101000a8651049150600181018201935050808310156128125760405162461bcd60e51b815260040161062c906139cb565b5092915050565b604051806060016040528060008152602001600081526020016000151581525090565b60408051602081019091526000815290565b60405180604001604052806130a86130b5565b8152602001600081525090565b604051806040016040528060008152602001600081525090565b600082601f8301126130df578081fd5b81516130f26130ed82613ec0565b613e99565b818152915060208083019084810160005b84811015613168578151870188603f82011261311e57600080fd5b8381015161312e6130ed82613ee0565b81815260408b8184860101111561314457600080fd5b61315383888401838701613f04565b50865250509282019290820190600101613103565b505050505092915050565b60008083601f840112613184578182fd5b50813567ffffffffffffffff81111561319b578182fd5b6020830191508360208285010111156131b357600080fd5b9250929050565b600082601f8301126131ca578081fd5b81356131d86130ed82613ee0565b91508082528360208285010111156131ef57600080fd5b8060208401602084013760009082016020015292915050565b600060a08284031215613219578081fd5b61322360a0613e99565b905081358152602082013560208201526040820135604082015260608201356060820152608082013567ffffffffffffffff81111561326157600080fd5b61326d848285016131ba565b60808301525092915050565b60006020828403121561328a578081fd5b813561246b81613f30565b6000602082840312156132a6578081fd5b815161246b81613f30565b600080604083850312156132c3578081fd5b82356132ce81613f30565b946020939093013593505050565b600080604083850312156132ee578182fd5b825167ffffffffffffffff80821115613305578384fd5b81850186601f820112613316578485fd5b805192506133266130ed84613ec0565b80848252602080830192508084018a828389028701011115613346578889fd5b8894505b8685101561337157805161335d81613f30565b84526001949094019392810192810161334a565b508801519096509350505080821115613388578283fd5b50613395858286016130cf565b9150509250929050565b6000602082840312156133b0578081fd5b8151801515811461246b578182fd5b600080604083850312156133d1578182fd5b823567ffffffffffffffff808211156133e8578384fd5b6133f4868387016131ba565b93506020850135915080821115613409578283fd5b50613395858286016131ba565b6000806000806040858703121561342b578182fd5b843567ffffffffffffffff80821115613442578384fd5b61344e88838901613173565b90965094506020870135915080821115613466578384fd5b5061347387828801613173565b95989497509550505050565b600060208284031215613490578081fd5b813567ffffffffffffffff808211156134a7578283fd5b818401606081870312156134b9578384fd5b6134c36060613e99565b92508035828111156134d3578485fd5b6134df87828401613208565b8452506020810135828111156134f3578485fd5b6134ff87828401613208565b602085015250604081013582811115613516578485fd5b613522878284016131ba565b6040850152509195945050505050565b600060208284031215613543578081fd5b5035919050565b60006020828403121561355b578081fd5b5051919050565b600080600060408486031215613576578081fd5b833560ff81168114613586578182fd5b9250602084013567ffffffffffffffff8111156135a1578182fd5b6135ad86828701613173565b9497909650939450505050565b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b600081518084526135fc816020860160208601613f04565b601f01601f19169290920160200192915050565b60008251613622818460208701613f04565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b901515815260200190565b60006020825261246b60208301846135e4565b60006040825261368b6040830186886135ba565b828103602084015261369e8185876135ba565b979650505050505050565b60208082526010908201526f195d9a59195b98d9481d1bdbc81bdb1960821b604082015260600190565b6020808252818101527f6d616c6963696f757320766f746520736c617368206e6f7420656e61626c6564604082015260600190565b6020808252601690820152751d985b1a59185d1bdc881b9bdd081b5a59dc985d195960521b604082015260600190565b60208082526019908201527f74686520636f6e7472616374206e6f7420696e69742079657400000000000000604082015260600190565b6020808252602b908201527f746865206d616c6963696f757320766f746520736c6173682073636f7065206f60408201526a7574206f662072616e676560a81b606082015260800190565b6020808252601a908201527f6e6f2076696f6c6174696f6e206f6620766f74652072756c6573000000000000604082015260600190565b6020808252818101527f7468652066656c6f6e795468726573686f6c64206f7574206f662072616e6765604082015260600190565b6020808252602b908201527f6c656e677468206f6620656e61626c654d616c6963696f7573566f7465536c6160408201526a0e6d040dad2e6dac2e8c6d60ab1b606082015260800190565b60208082526017908201527f766572696679207369676e6174757265206661696c6564000000000000000000604082015260600190565b6020808252600e908201526d696e70757420746f6f206c6f6e6760901b604082015260600190565b60208082526019908201527f7372634e756d20626967676572207468616e207461724e756d00000000000000604082015260600190565b60208082526027908201527f6c656e677468206f66206d697364656d65616e6f725468726573686f6c64206d6040820152660d2e6dac2e8c6d60cb1b606082015260800190565b60208082526013908201527274776f206964656e746963616c20766f74657360681b604082015260600190565b60208082526030908201527f746865206d6573736167652073656e646572206d7573742062652076616c696460408201526f185d1bdc94d95d0818dbdb9d1c9858dd60821b606082015260800190565b6020808252601190820152706164646974696f6e206f766572666c6f7760781b604082015260600190565b60208082526023908201527f6c656e677468206f662066656c6f6e79536c61736853636f7065206d69736d616040820152620e8c6d60eb1b606082015260800190565b6020808252601490820152736761737072696365206973206e6f74207a65726f60601b604082015260600190565b60208082526029908201527f6c656e677468206f662066656c6f6e79536c617368526577617264526174696f604082015268040dad2e6dac2e8c6d60bb1b606082015260800190565b6020808252601590820152741d9bdd195059191c881a5cc81b9bdd08199bdd5b99605a1b604082015260600190565b6020808252602e908201527f746865206d6573736167652073656e646572206d75737420626520676f76657260408201526d1b985b98d94818dbdb9d1c9858dd60921b606082015260800190565b60208082526022908201527f6c656e677468206f662066656c6f6e795468726573686f6c64206d69736d61746040820152610c6d60f31b606082015260800190565b6020808252602a908201527f7468652066656c6f6e7920736c6173682072657761726420726174696f206f7560408201526974206f662072616e676560b01b606082015260800190565b60208082526019908201527f74686520636f6e747261637420616c726561647920696e697400000000000000604082015260600190565b6020808252600c908201526b32b6b83a3c903432b0b232b960a11b604082015260600190565b6020808252601a908201527f6c656e677468206973206c657373207468616e206f6666736574000000000000604082015260600190565b60208082526025908201527f746865206d697364656d65616e6f725468726573686f6c64206f7574206f662060408201526472616e676560d81b606082015260800190565b6020808252602f908201527f746865206d6573736167652073656e646572206d7573742062652063726f737360408201526e0818da185a5b8818dbdb9d1c9858dd608a1b606082015260800190565b6020808252602d908201527f746865206d6573736167652073656e646572206d75737420626520746865206260408201526c3637b1b590383937b23ab1b2b960991b606082015260800190565b6020808252600d908201526c756e6b6e6f776e20706172616d60981b604082015260600190565b6020808252601490820152731d185c99d95d08189b1bd8dac81d1bdbc81bdb1960621b604082015260600190565b6020808252601e908201527f7265636569766520756e65787065637465642073796e207061636b6167650000604082015260600190565b6020808252818101527f63616e206e6f7420736c61736820747769636520696e206f6e6520626c6f636b604082015260600190565b61ffff91909116815260200190565b90815260200190565b600083825260406020830152613e2060408301846135e4565b949350505050565b918252602082015260400190565b92835260208301919091521515604082015260600190565b63ffffffff91909116815260200190565b60ff91909116815260200190565b600060ff8516825260606020830152613e8960608301856135e4565b9050826040830152949350505050565b60405181810167ffffffffffffffff81118282101715613eb857600080fd5b604052919050565b600067ffffffffffffffff821115613ed6578081fd5b5060209081020190565b600067ffffffffffffffff821115613ef6578081fd5b50601f01601f191660200190565b60005b83811015613f1f578181015183820152602001613f07565b83811115611eb25750506000910152565b6001600160a01b0381168114613f4557600080fd5b5056fea164736f6c6343000604000a", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/1abdfbf3aeb86909c2220b79bf92b87ddff64b54", + Code: "0x608060405234801561001057600080fd5b506004361061035d5760003560e01c80637e434d54116101d3578063c80d4b8f11610104578063df8079e9116100a2578063f9a2bbc71161007c578063f9a2bbc714610601578063fc3e590814610609578063fc4333cd14610611578063fd6a6879146106195761035d565b8063df8079e9146105e9578063e1c7392a146105f1578063f1fad104146105f95761035d565b8063c96be4cb116100de578063c96be4cb146105b3578063cc844b73146105c6578063dc927faf146105d9578063dcc6f156146105e15761035d565b8063c80d4b8f14610590578063c81b166214610598578063c8509d81146105a05761035d565b8063a1a11bf511610171578063aad560631161014b578063aad5606314610565578063ab51bb961461056d578063ac0af62914610575578063ac4317511461057d5761035d565b8063a1a11bf51461054d578063a78abc1614610555578063aa82dce11461055d5761035d565b806396713da9116101ad57806396713da9146105225780639dc092621461052a5780639e89ded8146105325780639f804f5f146105455761035d565b80637e434d54146104ff5780638256ace614610507578063831d65d11461050f5761035d565b8063493279b1116102ad57806362b72cf51161024b578063718a8aa811610225578063718a8aa8146104df57806375d47a0a146104e75780637912a65d146104ef5780637942fd05146104f75761035d565b806362b72cf5146104c75780636e47b482146104cf57806370fd5bad146104d75761035d565b806351b4dce31161028757806351b4dce31461049c57806351e80672146104a4578063567a372d146104ac5780635bfb4990146104b45761035d565b8063493279b1146104775780634bf6c8821461048c57806350055f90146104945761035d565b8063280870281161031a57806337c8dab9116102f457806337c8dab914610431578063389f4f71146104525780633dffc3871461045a57806343756e5c1461046f5761035d565b806328087028146104015780633306ccca1461040957806335aa2e441461041e5761035d565b80630bee7a67146103625780630e2374a5146103805780631182b8751461039557806322d1e80b146103b557806323bac5a2146103ca57806327962118146103ec575b600080fd5b61036a610621565b6040516103779190613d3b565b60405180910390f35b610388610626565b6040516103779190613519565b6103a86103a336600461344f565b61062c565b6040516103779190613551565b6103bd610692565b6040516103779190613546565b6103dd6103d8366004613166565b61069b565b60405161037793929190613d23565b6103ff6103fa3660046132ac565b6106be565b005b610388610a13565b610411610a19565b6040516103779190613ceb565b61038861042c36600461341f565b610a1e565b61044461043f366004613166565b610a45565b604051610377929190613d15565b610411610a9c565b610462610aa2565b6040516103779190613d4c565b610388610aa7565b61047f610aad565b6040516103779190613cdc565b610462610ab3565b610411610ab8565b610388610abe565b610388610ac4565b610411610aca565b6103ff6104c2366004613166565b610ad0565b610411610b7b565b610388610b81565b610462610b87565b610462610b8c565b610388610b91565b610411610b97565b610462610b9c565b610388610ba1565b610444610ba7565b6103ff61051d36600461344f565b610bb1565b610462610cc4565b610388610cc9565b6103ff61054036600461319e565b610ccf565b610411610cfe565b610388610d04565b6103bd610d0a565b610388610d13565b610388610d19565b61036a610d1f565b610411610d24565b6103ff61058b366004613303565b610d29565b6104116112c5565b6103886112ca565b6103ff6105ae36600461344f565b6112d0565b6103ff6105c1366004613166565b611341565b6103ff6105d436600461336c565b6117c2565b610388611da0565b610411611da6565b610388611dab565b6103ff611db1565b610462611dfe565b610388611e03565b610462611e09565b6103ff611e0e565b610388612257565b606481565b61200181565b606033612000146106585760405162461bcd60e51b815260040161064f90613b7f565b60405180910390fd5b60005460ff1661067a5760405162461bcd60e51b815260040161064f90613625565b60405162461bcd60e51b815260040161064f90613c70565b60075460ff1681565b600260208190526000918252604090912080546001820154919092015460ff1683565b60005460ff166106e05760405162461bcd60e51b815260040161064f90613625565b6006546106ed5760146006555b6008546106fa57603c6008555b81511580159061070a5750805115155b6107265760405162461bcd60e51b815260040161064f90613add565b60408051600380825260808201909252606091816020015b606081526020019060019003908161073e5790505090506107606102ca61225d565b8160008151811061076d57fe5b602002602001018190525061078183612278565b8160018151811061078e57fe5b60200260200101819052506107a282612278565b816002815181106107af57fe5b602002602001018190525060606107c5826122ce565b60408051603480825260608281019093529293509091602082018180368337019050509050815160346020830182602086016068600019fa61080657600080fd5b506014810151603482015160405163436aa28360e11b8152600090612002906386d5450690610839908690600401613519565b60206040518083038186803b15801561085157600080fd5b505afa158015610865573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108899190613182565b6001600160a01b031614156108b05760405162461bcd60e51b815260040161064f906135f5565b43600854820110156108d45760405162461bcd60e51b815260040161064f90613596565b604051631871f7d960e31b81526120029063c38fbec8906108f9908590600401613519565b600060405180830381600087803b15801561091357600080fd5b505af1158015610927573d6000803e3d6000fd5b50506040516335409f7f60e01b815261100092506335409f7f9150610950908590600401613519565b600060405180830381600087803b15801561096a57600080fd5b505af115801561097e573d6000803e3d6000fd5b50506006546040516309a99b4f60e41b815260646110028031909302049350909150639a99b4f0906109b6903390859060040161352d565b602060405180830381600087803b1580156109d057600080fd5b505af11580156109e4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a089190613437565b505050505050505050565b61200581565b603c81565b60018181548110610a2b57fe5b6000918252602090912001546001600160a01b0316905081565b600080610a50612f4d565b5050506001600160a01b0316600090815260026020818152604092839020835160608101855281548082526001830154938201849052919093015460ff16151592909301919091529091565b60055481565b600181565b61100181565b6102ca81565b600881565b60065481565b61200681565b61200081565b60045481565b3361100014610af15760405162461bcd60e51b815260040161064f90613868565b60005460ff16610b135760405162461bcd60e51b815260040161064f90613625565b61200063f7a251d7600b610b268461235f565b60006040518463ffffffff1660e01b8152600401610b4693929190613d5a565b600060405180830381600087803b158015610b6057600080fd5b505af1158015610b74573d6000803e3d6000fd5b5050505050565b60035481565b61100581565b600281565b601081565b61100881565b600581565b600b81565b61200381565b6004546005549091565b3361200014610bd25760405162461bcd60e51b815260040161064f90613b7f565b60005460ff16610bf45760405162461bcd60e51b815260040161064f90613625565b610bfc612f70565b6000610c3d84848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061242992505050565b915091508015610c845781516040517f7f0956d47419b9525356e7111652b653b530ec6f5096dccc04589bc38e62996791610c7791613d3b565b60405180910390a1610b74565b81516040517f7d45f62d17443dd4547bca8a8112c60e2385669318dc300ec61a5d2492f262e791610cb491613d3b565b60405180910390a150505b505050565b600981565b61100781565b3361100014610cf05760405162461bcd60e51b815260040161064f90613868565b610cfa82826124a9565b5050565b60085481565b61100681565b60005460ff1681565b61200281565b61300081565b600081565b600481565b60005460ff16610d4b5760405162461bcd60e51b815260040161064f90613625565b3361100714610d6c5760405162461bcd60e51b815260040161064f906139cc565b610dd784848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260148152731b5a5cd9195b59585b9bdc951a1c995cda1bdb1960621b602082015291506126809050565b15610e725760208114610dfc5760405162461bcd60e51b815260040161064f906137f4565b604080516020601f8401819004810282018101909252828152600091610e3a918585808385018382808284376000920191909152506126da92505050565b905060018110158015610e4e575060055481105b610e6a5760405162461bcd60e51b815260040161064f90613b3a565b600455611282565b610ed884848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600f81526e19995b1bdb9e551a1c995cda1bdb19608a1b602082015291506126809050565b15610f745760208114610efd5760405162461bcd60e51b815260040161064f90613a1a565b604080516020601f8401819004810282018101909252828152600091610f3b918585808385018382808284376000920191909152506126da92505050565b90506103e88111158015610f50575060045481115b610f6c5760405162461bcd60e51b815260040161064f906136de565b600555611282565b610fe184848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601681527566656c6f6e79536c617368526577617264526174696f60501b602082015291506126809050565b1561107b57602081146110065760405162461bcd60e51b815260040161064f90613954565b604080516020601f8401819004810282018101909252828152600091611044918585808385018382808284376000920191909152506126da92505050565b9050600a81101580156110575750606481105b6110735760405162461bcd60e51b815260040161064f90613a5c565b600655611282565b6110ef84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601881527f656e61626c654d616c6963696f7573566f7465536c6173680000000000000000602082015291506126809050565b1561116657602081146111145760405162461bcd60e51b815260040161064f90613713565b604080516020601f840181900481028201810190925282815261115091908484808385018382808284376000920191909152506126df92505050565b6007805460ff1916911515919091179055611282565b6111cd84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601081526f66656c6f6e79536c61736853636f706560801b602082015291506126809050565b1561126a57602081146111f25760405162461bcd60e51b815260040161064f906138e3565b604080516020601f8401819004810282018101909252828152600091611230918585808385018382808284376000920191909152506126da92505050565b905061708081101580156112465750620d2f0081105b6112625760405162461bcd60e51b815260040161064f9061365c565b600855611282565b60405162461bcd60e51b815260040161064f90613c1b565b7f6cdb0ac70ab7f2e2d035cca5be60d89906f2dede7648ddbd7402189c1eeed17a848484846040516112b79493929190613564565b60405180910390a150505050565b600a81565b61100281565b33612000146112f15760405162461bcd60e51b815260040161064f90613b7f565b60005460ff166113135760405162461bcd60e51b815260040161064f90613625565b6040517f07db600eebe2ac176be8dcebad61858c245a4961bb32ca2aa3d159b09aa0810e90600090a1505050565b3341146113605760405162461bcd60e51b815260040161064f90613bce565b60005460ff166113825760405162461bcd60e51b815260040161064f90613625565b60035443116113a35760405162461bcd60e51b815260040161064f90613ca7565b3a156113c15760405162461bcd60e51b815260040161064f90613926565b60405163155853f360e21b8152611000906355614fcc906113e6908490600401613519565b60206040518083038186803b1580156113fe57600080fd5b505afa158015611412573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611436919061328c565b61143f576117bb565b611447612f4d565b506001600160a01b0381166000908152600260208181526040928390208351606081018552815481526001820154928101929092529091015460ff1615801592820192909252906114a25760208101805160010190526114fb565b60016040820181905260208201819052805480820182556000919091527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180546001600160a01b0319166001600160a01b0384161790555b43815260055460208201518161150d57fe5b066116e957600060208201526040516335409f7f60e01b8152611000906335409f7f9061153e908590600401613519565b600060405180830381600087803b15801561155857600080fd5b505af115801561156c573d6000803e3d6000fd5b505060405163436aa28360e11b81526000925061200291506386d5450690611598908690600401613519565b60206040518083038186803b1580156115b057600080fd5b505afa1580156115c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115e89190613182565b6001600160a01b031614611609576116048282602001516124a9565b6116e4565b61200063f7a251d7600b61161c8561235f565b60006040518463ffffffff1660e01b815260040161163c93929190613d5a565b600060405180830381600087803b15801561165657600080fd5b505af1925050508015611667575060015b6116e4573d808015611695576040519150601f19603f3d011682016040523d82523d6000602084013e61169a565b606091505b50826001600160a01b03167fd7bc86ff5d08c8ab043edec743302aba2520e6635172a428bc956721db9e2d1c8360200151836040516116da929190613cf4565b60405180910390a2505b611755565b6004548160200151816116f857fe5b06611755576040516375abf10160e11b81526110009063eb57e20290611722908590600401613519565b600060405180830381600087803b15801561173c57600080fd5b505af1158015611750573d6000803e3d6000fd5b505050505b6001600160a01b0382166000818152600260208181526040808420865181559186015160018301558581015191909201805460ff1916911515919091179055517fddb6012116e51abf5436d956a4f0ebd927e92c576ff96d7918290c8782291e3e9190a2505b5043600355565b60005460ff166117e45760405162461bcd60e51b815260040161064f90613625565b60075460ff166118065760405162461bcd60e51b815260040161064f906135c0565b6006546118135760146006555b60085461182057603c6008555b60085481516040015143910111801561184457504360085482602001516040015101115b6118605760405162461bcd60e51b815260040161064f90613c42565b80602001516020015181600001516020015114801561188e5750806020015160600151816000015160600151145b156118ab5760405162461bcd60e51b815260040161064f9061383b565b8051604081015190511080156118ca5750602081015160408101519051105b6118e65760405162461bcd60e51b815260040161064f906137bd565b60208101515181515110801561190b5750806000015160400151816020015160400151105b8061193657508051516020820151511080156119365750806020015160400151816000015160400151105b806119505750806020015160400151816000015160400151145b61196c5760405162461bcd60e51b815260040161064f906136a7565b604080820151905163ea321e4960e01b81526110009163ea321e49916119959190600401613551565b60206040518083038186803b1580156119ad57600080fd5b505afa1580156119c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119e5919061328c565b611a015760405162461bcd60e51b815260040161064f9061399d565b611a1381600001518260400151612707565b8015611a2c5750611a2c81602001518260400151612707565b611a485760405162461bcd60e51b815260040161064f9061375e565b6060806110006001600160a01b0316633b071dcc6040518163ffffffff1660e01b815260040160006040518083038186803b158015611a8657600080fd5b505afa158015611a9a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611ac291908101906131c9565b9150915060005b8151811015611bff57611af3828281518110611ae157fe5b602002602001015185604001516128df565b15611bf7576006546040516309a99b4f60e41b815260646110028031909302049190639a99b4f090611b2b903390859060040161352d565b602060405180830381600087803b158015611b4557600080fd5b505af1158015611b59573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b7d9190613437565b506110006001600160a01b03166335409f7f858481518110611b9b57fe5b60200260200101516040518263ffffffff1660e01b8152600401611bbf9190613519565b600060405180830381600087803b158015611bd957600080fd5b505af1158015611bed573d6000803e3d6000fd5b5050505050611bff565b600101611ac9565b5060408084015190516317b4f35360e01b8152600091612002916317b4f35391611c2b91600401613551565b60206040518083038186803b158015611c4357600080fd5b505afa158015611c57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c7b9190613182565b6001600160a01b031614611ce9576040808401519051630e9fbf5160e01b815261200291630e9fbf5191611cb29190600401613551565b600060405180830381600087803b158015611ccc57600080fd5b505af1158015611ce0573d6000803e3d6000fd5b50505050610cbf565b6120006001600160a01b031663f7a251d7600b611d098660400151612943565b60006040518463ffffffff1660e01b8152600401611d2993929190613d5a565b600060405180830381600087803b158015611d4357600080fd5b505af1158015611d57573d6000803e3d6000fd5b505050506000611d6c8460400151600061297e565b60405190915081907f7b78aadacff901d8b63d0dba4f86283d4db8aef27f9ed70413dd860f1c9532b690600090a250505050565b61100381565b601481565b61200481565b60005460ff1615611dd45760405162461bcd60e51b815260040161064f90613aa6565b60056004819055600a905560078054600160ff199182168117909255600080549091169091179055565b601181565b61100081565b600381565b3361100014611e2f5760405162461bcd60e51b815260040161064f90613868565b60005460ff16611e515760405162461bcd60e51b815260040161064f90613625565b600154611e5d57612255565b600154600090600019015b808211612229576000805b82841015611f8c57611e83612f4d565b6002600060018781548110611e9457fe5b60009182526020808320909101546001600160a01b0316835282810193909352604091820190208151606081018352815481526001820154938101939093526002015460ff161515908201526005549091506004900481602001511115611f7657600460055481611f0157fe5b04816020015103816020018181525050806002600060018881548110611f2357fe5b6000918252602080832091909101546001600160a01b0316835282810193909352604091820190208351815591830151600183015591909101516002909101805460ff1916911515919091179055611f80565b6001925050611f8c565b50836001019350611e73565b82841161212357611f9b612f4d565b6002600060018681548110611fac57fe5b60009182526020808320909101546001600160a01b0316835282810193909352604091820190208151606081018352815481526001820154938101939093526002015460ff1615159082015260055490915060049004816020015111156120945760046005548161201957fe5b0481602001510381602001818152505080600260006001878154811061203b57fe5b6000918252602080832091909101546001600160a01b03168352828101939093526040918201902083518155918301516001808401919091559201516002909101805460ff191691151591909117905591506121239050565b60026000600186815481106120a557fe5b60009182526020808320909101546001600160a01b031683528201929092526040018120818155600181810192909255600201805460ff191690558054806120e957fe5b600082815260209020810160001990810180546001600160a01b0319169055019055836121165750612123565b5060001990920191611f8c565b81801561212d5750805b1561220c57600260006001868154811061214357fe5b60009182526020808320909101546001600160a01b031683528201929092526040018120818155600181810192909255600201805460ff1916905580548490811061218a57fe5b600091825260209091200154600180546001600160a01b0390921691869081106121b057fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060018054806121e957fe5b600082815260209020810160001990810180546001600160a01b03191690550190555b82612218575050612229565b505060019091019060001901611e68565b6040517fcfdb3b6ccaeccbdc68be3c59c840e3b3c90f0a7c491f5fff1cf56cfda200dd9c90600090a150505b565b61100481565b606061227061226b8361299a565b612278565b90505b919050565b6060815160011480156122aa5750607f60f81b8260008151811061229857fe5b01602001516001600160f81b03191611155b156122b6575080612273565b6122706122c88351608060ff16612a80565b83612b52565b60608151600014156122ef5750604080516000815260208101909152612273565b6060826000815181106122fe57fe5b602002602001015190506000600190505b835181101561233f576123358285838151811061232857fe5b6020026020010151612b52565b915060010161230f565b50612358612352825160c060ff16612a80565b82612b52565b9392505050565b60408051600480825260a08201909252606091829190816020015b606081526020019060019003908161237a5790505090506123a3836001600160a01b0316612bcf565b816000815181106123b057fe5b60200260200101819052506123c44361225d565b816001815181106123d157fe5b60209081029190910101526123e76102ca61225d565b816002815181106123f457fe5b60200260200101819052506124084261225d565b8160038151811061241557fe5b6020026020010181905250612358816122ce565b612431612f70565b600061243b612f70565b612443612f82565b61245461244f86612bf2565b612c17565b90506000805b61246383612c61565b1561249c578061248f5761247e61247984612c82565b612cd0565b63ffffffff16845260019150612494565b61249c565b60010161245a565b5091935090915050915091565b6040516375cc7d8960e01b8152612002906375cc7d89906124ce908590600401613519565b600060405180830381600087803b1580156124e857600080fd5b505af19250505080156124f9575060015b610cfa576040516000815260443d1015612515575060006125b2565b60046000803e60005160e01c6308c379a081146125365760009150506125b2565b60043d036004833e81513d602482011167ffffffffffffffff82111715612562576000925050506125b2565b808301805167ffffffffffffffff8111156125845760009450505050506125b2565b8060208301013d86018111156125a2576000955050505050506125b2565b601f01601f191660405250925050505b806125bd5750612606565b826001600160a01b03167fd7bc86ff5d08c8ab043edec743302aba2520e6635172a428bc956721db9e2d1c83836040516125f8929190613cf4565b60405180910390a25061267b565b3d808015612630576040519150601f19603f3d011682016040523d82523d6000602084013e612635565b606091505b50826001600160a01b03167fd7bc86ff5d08c8ab043edec743302aba2520e6635172a428bc956721db9e2d1c8383604051612671929190613cf4565b60405180910390a2505b610cfa565b60008160405160200161269391906134fd565b60405160208183030381529060405280519060200120836040516020016126ba91906134fd565b604051602081830303815290604052805190602001201490505b92915050565b015190565b8082015160009060ff8116156126f95760019150816126ff565b60009150815b505092915050565b60408051600480825260a0820190925260009160609190816020015b6060815260200190600190039081612723575050604080516020808252818301909252919250606091908082018180368337019050509050612768856000015161225d565b8260008151811061277557fe5b60200260200101819052506127906020866020015183612d52565b61279981612278565b826001815181106127a657fe5b60200260200101819052506127be856040015161225d565b826002815181106127cb57fe5b60200260200101819052506127e66020866060015183612d52565b6127ef81612278565b826003815181106127fc57fe5b60200260200101819052506128226020612815846122ce565b8051906020012083612d52565b6040805160b080825260e08201909252606091602082018180368337019050509050612852818360006020612d62565b61286481876080015160206060612d62565b612872818660806030612d62565b604080516001808252818301909252606091602082018180368337019050509050815160016020830182602086016066600019fa6128af57600080fd5b5060016128bd826000612db5565b60ff16146128d25760009450505050506126d4565b5060019695505050505050565b8151815160009160019181148083146128fb5760009250612939565b600160208701838101602088015b6002848385100114156129345780518351146129285760009650600093505b60209283019201612909565b505050505b5090949350505050565b60408051600480825260a08201909252606091829190816020015b606081526020019060019003908161295e5790505090506123a383612278565b6000816020018351101561299157600080fd5b50016020015190565b604080516020808252818301909252606091829190602082018180368337505050602081018490529050600067ffffffffffffffff1984166129de57506018612a02565b6fffffffffffffffffffffffffffffffff1984166129fe57506010612a02565b5060005b6020811015612a3857818181518110612a1757fe5b01602001516001600160f81b03191615612a3057612a38565b600101612a02565b60008160200390506060816040519080825280601f01601f191660200182016040528015612a6d576020820181803683370190505b5080830196909652508452509192915050565b6060680100000000000000008310612aaa5760405162461bcd60e51b815260040161064f90613795565b60408051600180825281830190925260609160208201818036833701905050905060378411612b045782840160f81b81600081518110612ae657fe5b60200101906001600160f81b031916908160001a90535090506126d4565b6060612b0f8561299a565b90508381510160370160f81b82600081518110612b2857fe5b60200101906001600160f81b031916908160001a905350612b498282612b52565b95945050505050565b6060806040519050835180825260208201818101602087015b81831015612b83578051835260209283019201612b6b565b50855184518101855292509050808201602086015b81831015612bb0578051835260209283019201612b98565b508651929092011591909101601f01601f191660405250905092915050565b60408051600560a21b831860148201526034810190915260609061235881612278565b612bfa612fa2565b506040805180820190915281518152602082810190820152919050565b612c1f612f82565b612c2882612dd1565b612c3157600080fd5b6000612c408360200151612e0b565b60208085015160408051808201909152868152920190820152915050919050565b6000612c6b612fa2565b505080518051602091820151919092015191011190565b612c8a612fa2565b612c9382612c61565b612c9c57600080fd5b60208201516000612cac82612e6e565b80830160209586015260408051808201909152908152938401919091525090919050565b805160009015801590612ce557508151602110155b612cee57600080fd5b6000612cfd8360200151612e0b565b90508083600001511015612d235760405162461bcd60e51b815260040161064f90613b03565b825160208085015183018051928490039291831015612d4957826020036101000a820491505b50949350505050565b9091018181526020918201910152565b60005b81811015610b7457838181518110612d7957fe5b602001015160f81c60f81b858480600101955081518110612d9657fe5b60200101906001600160f81b031916908160001a905350600101612d65565b60008160010183511015612dc857600080fd5b50016001015190565b8051600090612de257506000612273565b6020820151805160001a9060c0821015612e0157600092505050612273565b5060019392505050565b8051600090811a6080811015612e25576000915050612273565b60b8811080612e40575060c08110801590612e40575060f881105b15612e4f576001915050612273565b60c0811015612e635760b519019050612273565b60f519019050612273565b80516000908190811a6080811015612e895760019150612f46565b60b8811015612e9e57607e1981019150612f46565b60c0811015612eef57600060b78203600186019550806020036101000a865104915060018101820193505080831015612ee95760405162461bcd60e51b815260040161064f906138b8565b50612f46565b60f8811015612f045760be1981019150612f46565b600060f78203600186019550806020036101000a8651049150600181018201935050808310156126ff5760405162461bcd60e51b815260040161064f906138b8565b5092915050565b604051806060016040528060008152602001600081526020016000151581525090565b60408051602081019091526000815290565b6040518060400160405280612f95612fa2565b8152602001600081525090565b604051806040016040528060008152602001600081525090565b600082601f830112612fcc578081fd5b8151612fdf612fda82613dad565b613d86565b818152915060208083019084810160005b84811015613055578151870188603f82011261300b57600080fd5b8381015161301b612fda82613dcd565b81815260408b8184860101111561303157600080fd5b61304083888401838701613df1565b50865250509282019290820190600101612ff0565b505050505092915050565b60008083601f840112613071578182fd5b50813567ffffffffffffffff811115613088578182fd5b6020830191508360208285010111156130a057600080fd5b9250929050565b600082601f8301126130b7578081fd5b81356130c5612fda82613dcd565b91508082528360208285010111156130dc57600080fd5b8060208401602084013760009082016020015292915050565b600060a08284031215613106578081fd5b61311060a0613d86565b905081358152602082013560208201526040820135604082015260608201356060820152608082013567ffffffffffffffff81111561314e57600080fd5b61315a848285016130a7565b60808301525092915050565b600060208284031215613177578081fd5b813561235881613e21565b600060208284031215613193578081fd5b815161235881613e21565b600080604083850312156131b0578081fd5b82356131bb81613e21565b946020939093013593505050565b600080604083850312156131db578182fd5b825167ffffffffffffffff808211156131f2578384fd5b81850186601f820112613203578485fd5b80519250613213612fda84613dad565b80848252602080830192508084018a828389028701011115613233578889fd5b8894505b8685101561325e57805161324a81613e21565b845260019490940193928101928101613237565b508801519096509350505080821115613275578283fd5b5061328285828601612fbc565b9150509250929050565b60006020828403121561329d578081fd5b81518015158114612358578182fd5b600080604083850312156132be578182fd5b823567ffffffffffffffff808211156132d5578384fd5b6132e1868387016130a7565b935060208501359150808211156132f6578283fd5b50613282858286016130a7565b60008060008060408587031215613318578182fd5b843567ffffffffffffffff8082111561332f578384fd5b61333b88838901613060565b90965094506020870135915080821115613353578384fd5b5061336087828801613060565b95989497509550505050565b60006020828403121561337d578081fd5b813567ffffffffffffffff80821115613394578283fd5b818401606081870312156133a6578384fd5b6133b06060613d86565b92508035828111156133c0578485fd5b6133cc878284016130f5565b8452506020810135828111156133e0578485fd5b6133ec878284016130f5565b602085015250604081013582811115613403578485fd5b61340f878284016130a7565b6040850152509195945050505050565b600060208284031215613430578081fd5b5035919050565b600060208284031215613448578081fd5b5051919050565b600080600060408486031215613463578081fd5b833560ff81168114613473578182fd5b9250602084013567ffffffffffffffff81111561348e578182fd5b61349a86828701613060565b9497909650939450505050565b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b600081518084526134e9816020860160208601613df1565b601f01601f19169290920160200192915050565b6000825161350f818460208701613df1565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b901515815260200190565b60006020825261235860208301846134d1565b6000604082526135786040830186886134a7565b828103602084015261358b8185876134a7565b979650505050505050565b60208082526010908201526f195d9a59195b98d9481d1bdbc81bdb1960821b604082015260600190565b6020808252818101527f6d616c6963696f757320766f746520736c617368206e6f7420656e61626c6564604082015260600190565b6020808252601690820152751d985b1a59185d1bdc881b9bdd081b5a59dc985d195960521b604082015260600190565b60208082526019908201527f74686520636f6e7472616374206e6f7420696e69742079657400000000000000604082015260600190565b6020808252602b908201527f746865206d616c6963696f757320766f746520736c6173682073636f7065206f60408201526a7574206f662072616e676560a81b606082015260800190565b6020808252601a908201527f6e6f2076696f6c6174696f6e206f6620766f74652072756c6573000000000000604082015260600190565b6020808252818101527f7468652066656c6f6e795468726573686f6c64206f7574206f662072616e6765604082015260600190565b6020808252602b908201527f6c656e677468206f6620656e61626c654d616c6963696f7573566f7465536c6160408201526a0e6d040dad2e6dac2e8c6d60ab1b606082015260800190565b60208082526017908201527f766572696679207369676e6174757265206661696c6564000000000000000000604082015260600190565b6020808252600e908201526d696e70757420746f6f206c6f6e6760901b604082015260600190565b60208082526019908201527f7372634e756d20626967676572207468616e207461724e756d00000000000000604082015260600190565b60208082526027908201527f6c656e677468206f66206d697364656d65616e6f725468726573686f6c64206d6040820152660d2e6dac2e8c6d60cb1b606082015260800190565b60208082526013908201527274776f206964656e746963616c20766f74657360681b604082015260600190565b60208082526030908201527f746865206d6573736167652073656e646572206d7573742062652076616c696460408201526f185d1bdc94d95d0818dbdb9d1c9858dd60821b606082015260800190565b6020808252601190820152706164646974696f6e206f766572666c6f7760781b604082015260600190565b60208082526023908201527f6c656e677468206f662066656c6f6e79536c61736853636f7065206d69736d616040820152620e8c6d60eb1b606082015260800190565b6020808252601490820152736761737072696365206973206e6f74207a65726f60601b604082015260600190565b60208082526029908201527f6c656e677468206f662066656c6f6e79536c617368526577617264526174696f604082015268040dad2e6dac2e8c6d60bb1b606082015260800190565b6020808252601590820152741d9bdd195059191c881a5cc81b9bdd08199bdd5b99605a1b604082015260600190565b6020808252602e908201527f746865206d6573736167652073656e646572206d75737420626520676f76657260408201526d1b985b98d94818dbdb9d1c9858dd60921b606082015260800190565b60208082526022908201527f6c656e677468206f662066656c6f6e795468726573686f6c64206d69736d61746040820152610c6d60f31b606082015260800190565b6020808252602a908201527f7468652066656c6f6e7920736c6173682072657761726420726174696f206f7560408201526974206f662072616e676560b01b606082015260800190565b60208082526019908201527f74686520636f6e747261637420616c726561647920696e697400000000000000604082015260600190565b6020808252600c908201526b32b6b83a3c903432b0b232b960a11b604082015260600190565b6020808252601a908201527f6c656e677468206973206c657373207468616e206f6666736574000000000000604082015260600190565b60208082526025908201527f746865206d697364656d65616e6f725468726573686f6c64206f7574206f662060408201526472616e676560d81b606082015260800190565b6020808252602f908201527f746865206d6573736167652073656e646572206d7573742062652063726f737360408201526e0818da185a5b8818dbdb9d1c9858dd608a1b606082015260800190565b6020808252602d908201527f746865206d6573736167652073656e646572206d75737420626520746865206260408201526c3637b1b590383937b23ab1b2b960991b606082015260800190565b6020808252600d908201526c756e6b6e6f776e20706172616d60981b604082015260600190565b6020808252601490820152731d185c99d95d08189b1bd8dac81d1bdbc81bdb1960621b604082015260600190565b6020808252601e908201527f7265636569766520756e65787065637465642073796e207061636b6167650000604082015260600190565b6020808252818101527f63616e206e6f7420736c61736820747769636520696e206f6e6520626c6f636b604082015260600190565b61ffff91909116815260200190565b90815260200190565b600083825260406020830152613d0d60408301846134d1565b949350505050565b918252602082015260400190565b92835260208301919091521515604082015260600190565b63ffffffff91909116815260200190565b60ff91909116815260200190565b600060ff8516825260606020830152613d7660608301856134d1565b9050826040830152949350505050565b60405181810167ffffffffffffffff81118282101715613da557600080fd5b604052919050565b600067ffffffffffffffff821115613dc3578081fd5b5060209081020190565b600067ffffffffffffffff821115613de3578081fd5b50601f01601f191660200190565b60005b83811015613e0c578181015183820152602001613df4565b83811115613e1b576000848401525b50505050565b6001600160a01b0381168114613e3657600080fd5b5056fea164736f6c6343000604000a", }, { ContractAddr: common.HexToAddress(TokenHubContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/cfc0bd1127186a917ddc38fd38d22903034d3f0b", - Code: "6080604052600436106104345760003560e01c806393ab703f11610229578063bbface1f1161012e578063e8f35cea116100b6578063fb063e8f1161007a578063fb063e8f146110c1578063fc1a598f146110d6578063fc3e590814610cf7578063fd6a687914611109578063ff9c0027146108cd5761047c565b8063e8f35cea1461103a578063ebf71d531461106d578063f014847214611082578063f9a2bbc714611097578063fa9e9159146110ac5761047c565b8063cf419844116100fd578063cf41984414610fc0578063d9e6dae91461083a578063dc927faf14610ffb578063df8079e914611010578063e1c7392a146110255761047c565b8063bbface1f14610ec0578063bd46646114610ef3578063c81b166214610f26578063c8509d8114610f3b5761047c565b8063a7c9f02d116101b1578063ab51bb9611610180578063ab51bb9614610d7d578063ac43175114610d92578063b99328c514610e5d578063b9fd21e314610e96578063ba35ead614610eab5761047c565b8063a7c9f02d14610cf7578063aa7415f514610d0c578063aa82dce114610d53578063aad5606314610d685761047c565b80639a99b4f0116101f85780639a99b4f014610c6a5780639dc0926214610ca3578063a1a11bf514610cb8578063a496fba214610ccd578063a78abc1614610ce25761047c565b806393ab703f14610bf25780639509b98014610c0757806396713da914610c405780639a854bbd14610c555761047c565b806351e806721161033a57806371d30863116102c25780637e434d54116102865780637e434d5414610ae0578063831d65d114610af55780638525db0314610b7a5780638b87b21f1461078f5780638eff336c14610bb35761047c565b806371d3086314610a38578063727be1f814610a4d57806375d47a0a14610a775780637942fd0514610a8c578063799758b914610aa15761047c565b806366dea52a1161030957806366dea52a146108cd5780636e056520146108e25780636e47b48214610a0e57806370fd5bad146108cd578063718a8aa814610a235761047c565b806351e806721461087957806359b927891461088e5780635d499b1b146108b8578063613684751461083a5761047c565b80633dffc387116103bd578063493279b11161038c578063493279b1146107f95780634a3acdf4146108255780634bf6c8821461083a57806350432d321461084f57806351b4dce3146108645761047c565b80633dffc3871461078f5780633fd8b02f146107ba57806343756e5c146107cf57806343a368b9146107e45761047c565b806312234582116104045780631223458214610625578063149d14d91461066057806328087028146106755780632ae454831461068a5780633d713223146106de5761047c565b806227253a146104815780630bee7a67146104cc5780630e2374a5146104fa5780631182b8751461052b5761047c565b3661047c57341561047a576040805133815234602082015281517f6c98249d85d88c3753a04a22230f595e4dc8d3dc86c34af35deeeedc861b89db929181900390910190a15b005b600080fd5b34801561048d57600080fd5b506104ba600480360360408110156104a457600080fd5b506001600160a01b03813516906020013561111e565b60408051918252519081900360200190f35b3480156104d857600080fd5b506104e16111db565b6040805163ffffffff9092168252519081900360200190f35b34801561050657600080fd5b5061050f6111e0565b604080516001600160a01b039092168252519081900360200190f35b34801561053757600080fd5b506105b06004803603604081101561054e57600080fd5b60ff8235169190810190604081016020820135600160201b81111561057257600080fd5b82018360208201111561058457600080fd5b803590602001918460018302840111600160201b831117156105a557600080fd5b5090925090506111e6565b6040805160208082528351818301528351919283929083019185019080838360005b838110156105ea5781810151838201526020016105d2565b50505050905090810190601f1680156106175780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561063157600080fd5b5061047a6004803603604081101561064857600080fd5b506001600160a01b0381358116916020013516611314565b34801561066c57600080fd5b506104ba61140e565b34801561068157600080fd5b5061050f611414565b34801561069657600080fd5b506106c5600480360360408110156106ad57600080fd5b506001600160a01b038135811691602001351661141a565b6040805192835260208301919091528051918290030190f35b3480156106ea57600080fd5b5061050f6004803603602081101561070157600080fd5b810190602081018135600160201b81111561071b57600080fd5b82018360208201111561072d57600080fd5b803590602001918460018302840111600160201b8311171561074e57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061143e945050505050565b34801561079b57600080fd5b506107a4611462565b6040805160ff9092168252519081900360200190f35b3480156107c657600080fd5b506104ba611467565b3480156107db57600080fd5b5061050f61146d565b3480156107f057600080fd5b506104ba611473565b34801561080557600080fd5b5061080e61147f565b6040805161ffff9092168252519081900360200190f35b34801561083157600080fd5b506104ba611485565b34801561084657600080fd5b506107a461148b565b34801561085b57600080fd5b506104ba611490565b34801561087057600080fd5b5061050f61149b565b34801561088557600080fd5b5061050f6114a1565b34801561089a57600080fd5b5061050f600480360360208110156108b157600080fd5b50356114a7565b3480156108c457600080fd5b506104ba6114c2565b3480156108d957600080fd5b506107a46114cb565b6109fa600480360360808110156108f857600080fd5b810190602081018135600160201b81111561091257600080fd5b82018360208201111561092457600080fd5b803590602001918460208302840111600160201b8311171561094557600080fd5b919390929091602081019035600160201b81111561096257600080fd5b82018360208201111561097457600080fd5b803590602001918460208302840111600160201b8311171561099557600080fd5b919390929091602081019035600160201b8111156109b257600080fd5b8201836020820111156109c457600080fd5b803590602001918460208302840111600160201b831117156109e557600080fd5b91935091503567ffffffffffffffff166114d0565b604080519115158252519081900360200190f35b348015610a1a57600080fd5b5061050f6119a5565b348015610a2f57600080fd5b506107a46119ab565b348015610a4457600080fd5b506104ba6119b0565b348015610a5957600080fd5b506109fa60048036036020811015610a7057600080fd5b50356119b6565b348015610a8357600080fd5b5061050f611a37565b348015610a9857600080fd5b506107a4611a3d565b348015610aad57600080fd5b5061047a60048036036060811015610ac457600080fd5b508035906001600160a01b036020820135169060400135611a42565b348015610aec57600080fd5b5061050f611ce8565b348015610b0157600080fd5b5061047a60048036036040811015610b1857600080fd5b60ff8235169190810190604081016020820135600160201b811115610b3c57600080fd5b820183602082011115610b4e57600080fd5b803590602001918460018302840111600160201b83111715610b6f57600080fd5b509092509050611cee565b348015610b8657600080fd5b5061047a60048036036040811015610b9d57600080fd5b50803590602001356001600160a01b0316611e37565b348015610bbf57600080fd5b5061047a60048036036060811015610bd657600080fd5b508035906001600160a01b036020820135169060400135611fa0565b348015610bfe57600080fd5b506104ba612026565b348015610c1357600080fd5b5061047a60048036036040811015610c2a57600080fd5b506001600160a01b03813516906020013561202d565b348015610c4c57600080fd5b506107a46121ea565b348015610c6157600080fd5b506104ba6121ef565b348015610c7657600080fd5b506104ba60048036036040811015610c8d57600080fd5b506001600160a01b0381351690602001356121fb565b348015610caf57600080fd5b5061050f612339565b348015610cc457600080fd5b5061050f61233f565b348015610cd957600080fd5b506107a4612345565b348015610cee57600080fd5b506109fa61234a565b348015610d0357600080fd5b506107a4612353565b6109fa60048036036080811015610d2257600080fd5b5080356001600160a01b03908116916020810135909116906040810135906060013567ffffffffffffffff16612358565b348015610d5f57600080fd5b5061050f612a19565b348015610d7457600080fd5b5061050f612a1f565b348015610d8957600080fd5b506104e1612345565b348015610d9e57600080fd5b5061047a60048036036040811015610db557600080fd5b810190602081018135600160201b811115610dcf57600080fd5b820183602082011115610de157600080fd5b803590602001918460018302840111600160201b83111715610e0257600080fd5b919390929091602081019035600160201b811115610e1f57600080fd5b820183602082011115610e3157600080fd5b803590602001918460018302840111600160201b83111715610e5257600080fd5b509092509050612a25565b348015610e6957600080fd5b5061047a60048036036040811015610e8057600080fd5b50803590602001356001600160a01b0316612ecd565b348015610ea257600080fd5b506104ba612f4d565b348015610eb757600080fd5b506104ba612f57565b348015610ecc57600080fd5b506104ba60048036036020811015610ee357600080fd5b50356001600160a01b0316612f5d565b348015610eff57600080fd5b506104ba60048036036020811015610f1657600080fd5b50356001600160a01b0316612f6f565b348015610f3257600080fd5b5061050f612f8a565b348015610f4757600080fd5b5061047a60048036036040811015610f5e57600080fd5b60ff8235169190810190604081016020820135600160201b811115610f8257600080fd5b820183602082011115610f9457600080fd5b803590602001918460018302840111600160201b83111715610fb557600080fd5b509092509050612f90565b348015610fcc57600080fd5b5061047a60048036036040811015610fe357600080fd5b506001600160a01b0381358116916020013516613060565b34801561100757600080fd5b5061050f613334565b34801561101c57600080fd5b5061050f61333a565b34801561103157600080fd5b5061047a613340565b34801561104657600080fd5b506104ba6004803603602081101561105d57600080fd5b50356001600160a01b03166133e0565b34801561107957600080fd5b506107a46133f2565b34801561108e57600080fd5b506107a46133f7565b3480156110a357600080fd5b5061050f6133fc565b3480156110b857600080fd5b506104ba613402565b3480156110cd57600080fd5b506104ba613408565b3480156110e257600080fd5b506105b0600480360360208110156110f957600080fd5b50356001600160a01b0316613416565b34801561111557600080fd5b5061050f61353d565b6000805460ff16611164576040805162461bcd60e51b81526020600482015260196024820152600080516020615cf3833981519152604482015290519081900360640190fd5b33611005146111a45760405162461bcd60e51b815260040180806020018281038252602f81526020018061594f602f913960400191505060405180910390fd5b60405162461bcd60e51b8152600401808060200182810382526026815260200180615da96026913960400191505060405180910390fd5b606481565b61200181565b60005460609060ff1661122e576040805162461bcd60e51b81526020600482015260196024820152600080516020615cf3833981519152604482015290519081900360640190fd5b336120001461126e5760405162461bcd60e51b815260040180806020018281038252602f815260200180615ca1602f913960400191505060405180910390fd5b60ff8416600214156112c0576112b983838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061354392505050565b905061130d565b6040805162461bcd60e51b815260206004820152601860248201527f756e7265636f676e697a65642073796e207061636b6167650000000000000000604482015290519081900360640190fd5b9392505050565b33612000146113545760405162461bcd60e51b815260040180806020018281038252602f815260200180615ca1602f913960400191505060405180910390fd5b6001600160a01b03808316600090815260076020908152604080832093851683529290522080546113bf576040805162461bcd60e51b815260206004820152601060248201526f1b9bc81b1bd8dad95908185b5bdd5b9d60821b604482015290519081900360640190fd5b8054600082556040805182815290516001600160a01b0380861692908716917f152fb15aa5d80f843e1e4bd5f2fc9161714f169945024decec7e84fb910fdd519181900360200190a350505050565b60015490565b61200581565b60076020908152600092835260408084209091529082529020805460019091015482565b6020818101516000908152600490915260409020546001600160a01b03165b919050565b600181565b60055481565b61100181565b670de0b6b3a764000081565b6102ca81565b61a8c081565b600881565b66071afd498d000081565b61200681565b61200081565b6000908152600460205260409020546001600160a01b031690565b6402540be40081565b600281565b6000805460ff16611516576040805162461bcd60e51b81526020600482015260196024820152600080516020615cf3833981519152604482015290519081900360640190fd5b8685146115545760405162461bcd60e51b815260040180806020018281038252603b815260200180615c66603b913960400191505060405180910390fd5b8683146115925760405162461bcd60e51b815260040180806020018281038252603f815260200180615b39603f913960400191505060405180910390fd5b426078018267ffffffffffffffff1610156115de5760405162461bcd60e51b81526004018080602001828103825260248152602001806159fe6024913960400191505060405180910390fd5b6402540be4003406156116225760405162461bcd60e51b8152600401808060200182810382526040815260200180615d696040913960400191505060405180910390fd5b60408051868152602080880282010190915285906000908190606090848015611655578160200160208202803683370190505b50905060005b84811015611730576402540be4008b8b8381811061167557fe5b905060200201358161168357fe5b06156116c05760405162461bcd60e51b815260040180806020018281038252603c815260200180615b78603c913960400191505060405180910390fd5b6116e58b8b838181106116cf57fe5b905060200201358561366790919063ffffffff16565b93506117116402540be4008c8c848181106116fc57fe5b905060200201356136c190919063ffffffff16565b82828151811061171d57fe5b602090810291909101015260010161165b565b5060015461175590611748908663ffffffff61370316565b849063ffffffff61366716565b3410156117935760405162461bcd60e51b8152600401808060200182810382526056815260200180615d136056913960600191505060405180910390fd5b6117a3348463ffffffff61375c16565b91506117ad615802565b6040518060c001604052806221272160e91b60001b815260200160006001600160a01b031681526020018381526020018e8e808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152505050908252506040805160208c810282810182019093528c82529283019290918d918d91829185019084908082843760009201919091525050509082525067ffffffffffffffff8916602090910152905061200063f7a251d760036118718461379e565b611886876402540be40063ffffffff6136c116565b6040518463ffffffff1660e01b8152600401808460ff1660ff16815260200180602001838152602001828103825284818151815260200191508051906020019080838360005b838110156118e45781810151838201526020016118cc565b50505050905090810190601f1680156119115780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b15801561193257600080fd5b505af1158015611946573d6000803e3d6000fd5b505060408051600081523360208201528082018890526060810187905290517f74eab09b0e53aefc23f2e1b16da593f95c2dd49c6f5a23720463d10d9c330b2a9350908190036080019150a15060019c9b505050505050505050505050565b61100581565b601081565b60015481565b600033612001146119f85760405162461bcd60e51b815260040180806020018281038252603381526020018061591c6033913960400191505060405180910390fd5b8115611a2f576040516120019083156108fc029084906000818181858888f19350505050158015611a2d573d6000803e3d6000fd5b505b506001919050565b61100881565b600b81565b60005460ff16611a87576040805162461bcd60e51b81526020600482015260196024820152600080516020615cf3833981519152604482015290519081900360640190fd5b3361300014611ac75760405162461bcd60e51b815260040180806020018281038252602b815260200180615ae9602b913960400191505060405180910390fd5b677ce66c50e2840000811115611b0e5760405162461bcd60e51b8152600401808060200182810382526035815260200180615a226035913960400191505060405180910390fd5b60006221272160e91b8414611c6f576000848152600460205260409020546001600160a01b031680611b78576040805162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a59081cde5b589bdb60921b604482015290519081900360640190fd5b6001600160a01b038116600090815260026020526040902054611b9b8482613a59565b604080516370a0823160e01b8152306004820152905191945084916001600160a01b038516916370a08231916024808301926020929190829003018186803b158015611be657600080fd5b505afa158015611bfa573d6000803e3d6000fd5b505050506040513d6020811015611c1057600080fd5b50511015611c5c576040805162461bcd60e51b8152602060048201526014602482015273696e73756666696369656e742062616c616e636560601b604482015290519081900360640190fd5b611c6886838588613a99565b5050611ce2565b611c84826402540be40063ffffffff61370316565b905080471015611cd2576040805162461bcd60e51b8152602060048201526014602482015273696e73756666696369656e742062616c616e636560601b604482015290519081900360640190fd5b6000611ce085828487613a99565b505b50505050565b61200381565b60005460ff16611d33576040805162461bcd60e51b81526020600482015260196024820152600080516020615cf3833981519152604482015290519081900360640190fd5b3361200014611d735760405162461bcd60e51b815260040180806020018281038252602f815260200180615ca1602f913960400191505060405180910390fd5b60ff831660031415611dc357611dbe82828080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250613b3392505050565b611e32565b7f41ce201247b6ceb957dcdb217d0b8acb50b9ea0e12af9af4f5e7f38902101605838383604051808460ff1660ff168152602001806020018281038252848482818152602001925080828437600083820152604051601f909101601f1916909201829003965090945050505050a15b505050565b3361300014611e775760405162461bcd60e51b815260040180806020018281038252602b815260200180615ae9602b913960400191505060405180910390fd5b60006221272160e91b8314611ee257506000828152600460205260409020546001600160a01b031680611ee2576040805162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a59081cde5b589bdb60921b604482015290519081900360640190fd5b6001600160a01b0380821660009081526007602090815260408083209386168352929052208054611f4d576040805162461bcd60e51b815260206004820152601060248201526f1b9bc81b1bd8dad95908185b5bdd5b9d60821b604482015290519081900360640190fd5b8054600082556040805182815290516001600160a01b03808716929086169188917f8041a9a8704332594e2884f5e0f942281cdd7611854c365b4d0aa70b2295d6b6919081900360200190a45050505050565b3361100814611fe05760405162461bcd60e51b8152600401808060200182810382526023815260200180615cd06023913960400191505060405180910390fd5b600083815260046020908152604080832080546001600160a01b039096166001600160a01b03199096168617905593825260038152838220949094556002909352912055565b62093a8081565b81806001600160a01b031663893d20e86040518163ffffffff1660e01b815260040160206040518083038186803b15801561206757600080fd5b505afa15801561207b573d6000803e3d6000fd5b505050506040513d602081101561209157600080fd5b50516001600160a01b031633146120ef576040805162461bcd60e51b815260206004820152601860248201527f6e6f74206f776e6572206f6620424550323020746f6b656e0000000000000000604482015290519081900360640190fd5b6000821161213d576040805162461bcd60e51b81526020600482015260166024820152751e995c9bc81b1a5b5a5d081b9bdd08185b1b1bddd95960521b604482015290519081900360640190fd5b6001600160a01b038316600090815260036020526040902054612193576040805162461bcd60e51b81526020600482015260096024820152681b9bdd08189bdd5b9960ba1b604482015290519081900360640190fd5b6001600160a01b038316600081815260066020908152604091829020859055815185815291513393927f9df3a90730dbf23b5cc18dbbd5f4af3fa94a0dffb6ff6841f98a9a9a6ac626a892908290030190a3505050565b600981565b677ce66c50e284000081565b6000805460ff16612241576040805162461bcd60e51b81526020600482015260196024820152600080516020615cf3833981519152604482015290519081900360640190fd5b33611005146122815760405162461bcd60e51b815260040180806020018281038252602f81526020018061594f602f913960400191505060405180910390fd5b60004783106122905747612292565b825b9050670de0b6b3a76400008111156122ae576000915050612333565b8015612330576040516001600160a01b0385169082156108fc029083906000818181858888f193505050501580156122ea573d6000803e3d6000fd5b50604080516001600160a01b03861681526020810183905281517ff8b71c64315fc33b2ead2adfa487955065152a8ac33d9d5193aafd7f45dc15a0929181900390910190a15b90505b92915050565b61100781565b61100681565b600081565b60005460ff1681565b600381565b6000805460ff1661239e576040805162461bcd60e51b81526020600482015260196024820152600080516020615cf3833981519152604482015290519081900360640190fd5b426078018267ffffffffffffffff1610156123ea5760405162461bcd60e51b81526004018080602001828103825260248152602001806159fe6024913960400191505060405180910390fd5b6402540be40034061561242e5760405162461bcd60e51b8152600401808060200182810382526040815260200180615d696040913960400191505060405180910390fd5b600080806001600160a01b03881661250d5760015461245490879063ffffffff61366716565b3410156124925760405162461bcd60e51b8152600401808060200182810382526061815260200180615a886061913960800191505060405180910390fd5b6402540be4008606156124d65760405162461bcd60e51b815260040180806020018281038252603c815260200180615b78603c913960400191505060405180910390fd5b6124e6348763ffffffff61375c16565b90506124fd866402540be40063ffffffff6136c116565b6221272160e91b935091506127b0565b6001600160a01b0388166000908152600360205260409020549250826125645760405162461bcd60e51b8152600401808060200182810382526031815260200180615a576031913960400191505060405180910390fd5b6001543410156125a55760405162461bcd60e51b815260040180806020018281038252603f815260200180615bd5603f913960400191505060405180910390fd5b506001600160a01b03871660009081526002602052604090205434906008811115806125f057506008811180156125f057506125ee876007198301600a0a63ffffffff613b8f16565b155b61262b5760405162461bcd60e51b815260040180806020018281038252603c815260200180615b78603c913960400191505060405180910390fd5b6126358782613bd1565b925061264084613c0a565b15612688576305f5e1008310156126885760405162461bcd60e51b815260040180806020018281038252603a8152602001806159a0603a913960400191505060405180910390fd5b6008811015806126a257506008811080156126a257508683115b6126dd5760405162461bcd60e51b8152600401808060200182810382526025815260200180615b146025913960400191505060405180910390fd5b677ce66c50e28400008311156127245760405162461bcd60e51b8152600401808060200182810382526035815260200180615a226035913960400191505060405180910390fd5b604080516323b872dd60e01b81523360048201523060248201526044810189905290516001600160a01b038b16916323b872dd9160648083019260209291908290030181600087803b15801561277957600080fd5b505af115801561278d573d6000803e3d6000fd5b505050506040513d60208110156127a357600080fd5b50516127ae57600080fd5b505b6127b8615802565b6040805160c0810182528581526001600160a01b038b166020820152815160018082528184018452919283019181602001602082028036833750505081526040805160018082528183019092526020928301929091908083019080368337505050815260408051600180825281830190925260209283019290919080830190803683370190505081526020018767ffffffffffffffff16815250905082816040015160008151811061286657fe5b60200260200101818152505087816060015160008151811061288457fe5b60200260200101906001600160a01b031690816001600160a01b0316815250503381608001516000815181106128b657fe5b6001600160a01b039092166020928302919091019091015261200063f7a251d760036128e18461379e565b6128f6866402540be40063ffffffff6136c116565b6040518463ffffffff1660e01b8152600401808460ff1660ff16815260200180602001838152602001828103825284818151815260200191508051906020019080838360005b8381101561295457818101518382015260200161293c565b50505050905090810190601f1680156129815780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b1580156129a257600080fd5b505af11580156129b6573d6000803e3d6000fd5b5050604080516001600160a01b038d1681523360208201528082018b90526060810186905290517f74eab09b0e53aefc23f2e1b16da593f95c2dd49c6f5a23720463d10d9c330b2a9350908190036080019150a150600198975050505050505050565b61200281565b61300081565b3361100714612a655760405162461bcd60e51b815260040180806020018281038252602e815260200180615c14602e913960400191505060405180910390fd5b60208114612aba576040805162461bcd60e51b815260206004820152601b60248201527f65787065637465642076616c7565206c656e6774682069732033320000000000604482015290519081900360640190fd5b606084848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8801819004810282018101909252868152939450606093925086915085908190840183828082843760009201919091525050505060208301519091506772656c617946656560c01b811415612bc2576020820151670de0b6b3a76400008111801590612b6957506402540be4008106155b612bba576040805162461bcd60e51b815260206004820152601960248201527f7468652072656c6179466565206f7574206f662072616e676500000000000000604482015290519081900360640190fd5b600155612e38565b612c3687878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601781527f6c617267655472616e736665724c6f636b506572696f6400000000000000000060208201529150613d109050565b15612cd257604080516020601f8701819004810282018101909252858152600091612c7991888880838501838280828437600092019190915250613df792505050565b905062093a80811115612cca576040805162461bcd60e51b81526020600482015260146024820152736c6f636b20706572696f6420746f6f206c6f6e6760601b604482015290519081900360640190fd5b600555612e38565b612d3e87878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080518082019091526015815274189b9893185c99d9551c985b9cd9995c931a5b5a5d605a1b60208201529150613d109050565b15612dfb57604080516020601f8701819004810282018101909252858152600091612d8191888880838501838280828437600092019190915250613df792505050565b905068056bc75e2d63100000811015612dcb5760405162461bcd60e51b815260040180806020018281038252602281526020018061597e6022913960400191505060405180910390fd5b6000805260066020527f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f855612e38565b6040805162461bcd60e51b815260206004820152600d60248201526c756e6b6e6f776e20706172616d60981b604482015290519081900360640190fd5b7f6cdb0ac70ab7f2e2d035cca5be60d89906f2dede7648ddbd7402189c1eeed17a878787876040518080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600083820152604051601f909101601f19169092018290039850909650505050505050a150505050505050565b3361100814612f0d5760405162461bcd60e51b8152600401808060200182810382526023815260200180615cd06023913960400191505060405180910390fd5b600091825260046020908152604080842080546001600160a01b03191690556001600160a01b039290921683526003815281832083905560029052812055565b6221272160e91b81565b61c35081565b60026020526000908152604090205481565b6001600160a01b031660009081526003602052604090205490565b61100281565b60005460ff16612fd5576040805162461bcd60e51b81526020600482015260196024820152600080516020615cf3833981519152604482015290519081900360640190fd5b33612000146130155760405162461bcd60e51b815260040180806020018281038252602f815260200180615ca1602f913960400191505060405180910390fd5b60ff831660031415611dc357611dbe82828080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250613dfc92505050565b60085460ff16600214156130ac576040805162461bcd60e51b815260206004820152600e60248201526d4e6f2072652d656e7472616e637960901b604482015290519081900360640190fd5b6008805460ff191660021790556001600160a01b0380831660009081526007602090815260408083209385168352929052208054613124576040805162461bcd60e51b815260206004820152601060248201526f1b9bc81b1bd8dad95908185b5bdd5b9d60821b604482015290519081900360640190fd5b806001015442101561317d576040805162461bcd60e51b815260206004820152601760248201527f7374696c6c206f6e206c6f636b696e6720706572696f64000000000000000000604482015290519081900360640190fd5b805460008083556001600160a01b0385166131f0576040516001600160a01b038516906127109084906000818181858888f193505050503d80600081146131e0576040519150601f19603f3d011682016040523d82523d6000602084013e6131e5565b606091505b505080915050613283565b846001600160a01b031663a9059cbb61c35086856040518463ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600088803b15801561325357600080fd5b5087f1158015613267573d6000803e3d6000fd5b50505050506040513d602081101561327e57600080fd5b505190505b806132d5576040805162461bcd60e51b815260206004820152601e60248201527f776974686472617720756e6c6f636b656420746f6b656e206661696c65640000604482015290519081900360640190fd5b836001600160a01b0316856001600160a01b03167f832fc3e25f2b3e6fb0eb59419a73cba405f2a249fce75f7e31ea5a457a0323f1846040518082815260200191505060405180910390a350506008805460ff19166001179055505050565b61100381565b61200481565b60005460ff1615613398576040805162461bcd60e51b815260206004820152601960248201527f74686520636f6e747261637420616c726561647920696e697400000000000000604482015290519081900360640190fd5b66071afd498d000060019081556000808052600260205260127fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b55805460ff19169091179055565b60066020526000908152604090205481565b600481565b600581565b61100081565b61271081565b69021e19e0c9bab240000081565b6001600160a01b03811660009081526003602090815260409182902054825182815280840190935260609290918391906020820181803683375050506020810183905290506000805b60208160ff1610156134a657828160ff168151811061347a57fe5b01602001516001600160f81b031916156134995781600101915061349e565b6134a6565b60010161345f565b5060608160ff166040519080825280601f01601f1916602001820160405280156134d7576020820181803683370190505b50905060005b8260ff168160ff16101561353357838160ff16815181106134fa57fe5b602001015160f81c60f81b828260ff168151811061351457fe5b60200101906001600160f81b031916908160001a9053506001016134dd565b5095945050505050565b61100481565b606061354d61584e565b600061355884613ef3565b91509150806135ae576040805162461bcd60e51b815260206004820152601f60248201527f756e7265636f676e697a6564207472616e73666572496e207061636b61676500604482015290519081900360640190fd5b60006135b983614032565b905063ffffffff81161561364d576040808401516020808601516001600160a01b031660009081526002909152918220546135f49190613bd1565b90506135fe615883565b60405180608001604052808660000151815260200183815260200186608001516001600160a01b031681526020018463ffffffff16815250905061364181614398565b9550505050505061145d565b5050604080516000815260208101909152915061145d9050565b600082820183811015612330576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600061233083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614474565b60008261371257506000612333565b8282028284828161371f57fe5b04146123305760405162461bcd60e51b8152600401808060200182810382526021815260200180615bb46021913960400191505060405180910390fd5b600061233083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250614516565b60408051600680825260e08201909252606091829190816020015b60608152602001906001900390816137b957505083519091506137db90614570565b816000815181106137e857fe5b602002602001018190525061380983602001516001600160a01b0316614583565b8160018151811061381657fe5b60200260200101819052506000836040015151905060608160405190808252806020026020018201604052801561386157816020015b606081526020019060019003908161384c5790505b50905060005b828110156138ae5761388f8660400151828151811061388257fe5b6020026020010151614570565b82828151811061389b57fe5b6020908102919091010152600101613867565b506138b8816145a6565b836002815181106138c557fe5b602002602001018190525060608260405190808252806020026020018201604052801561390657816020015b60608152602001906001900390816138f15790505b50905060005b8381101561395c5761393d8760600151828151811061392757fe5b60200260200101516001600160a01b0316614583565b82828151811061394957fe5b602090810291909101015260010161390c565b50613966816145a6565b8460038151811061397357fe5b60200260200101819052506060836040519080825280602002602001820160405280156139b457816020015b606081526020019060019003908161399f5790505b50905060005b848110156139f4576139d58860800151828151811061392757fe5b8282815181106139e157fe5b60209081029190910101526001016139ba565b506139fe816145a6565b85600481518110613a0b57fe5b6020026020010181905250613a2d8760a0015167ffffffffffffffff16614570565b85600581518110613a3a57fe5b6020026020010181905250613a4e856145a6565b979650505050505050565b60006008821115613a8257613a7b836007198401600a0a63ffffffff61370316565b9050612333565b612330836008849003600a0a63ffffffff6136c116565b6001600160a01b0380841660009081526007602090815260408083209385168352929052208054613ad0908463ffffffff61366716565b81554262093a80016001820181905560408051858152602081019290925280516001600160a01b03808616939088169289927f446d1aa056e7b903901f49880e9f252762c1b81dc4301cf28db6dae526497eaa9281900390910190a45050505050565b613b3b6158aa565b6000613b4683614630565b9150915080613b865760405162461bcd60e51b8152600401808060200182810382526024815260200180615c426024913960400191505060405180910390fd5b611e32826147fb565b600061233083836040518060400160405280601881526020017f536166654d6174683a206d6f64756c6f206279207a65726f0000000000000000815250614c7f565b60006008821115613bf357613a7b836007198401600a0a63ffffffff6136c116565b612330836008849003600a0a63ffffffff61370316565b604080516020808252818301909252600091606091906020820181803683375050506020810184905290506000805b60208160ff161015613c8057828160ff1681518110613c5457fe5b01602001516001600160f81b03191615613c7357816001019150613c78565b613c80565b600101613c39565b50600760ff82161015613c985760009250505061145d565b816005820360ff1681518110613caa57fe5b6020910101516001600160f81b031916602d60f81b14613ccf5760009250505061145d565b816001820360ff1681518110613ce157fe5b6020910101516001600160f81b031916604d60f81b14613d065760009250505061145d565b5060019392505050565b6000816040516020018082805190602001908083835b60208310613d455780518252601f199092019160209182019101613d26565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405280519060200120836040516020018082805190602001908083835b60208310613db35780518252601f199092019160209182019101613d94565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040528051906020012014905092915050565b015190565b613e04615802565b6000613e0f83614ce1565b9150915080613e4f5760405162461bcd60e51b81526004018080602001828103825260248152602001806159da6024913960400191505060405180910390fd5b613e576158aa565b602080840180516001600160a01b0390811684526040808701518585015291511660009081526002909252812054905b846040015151811015613ed857613eb585604001518281518110613ea757fe5b602002602001015183613a59565b85604001518281518110613ec557fe5b6020908102919091010152600101613e87565b506080840151604083015260056060830152611ce0826147fb565b613efb61584e565b6000613f0561584e565b613f0d6158e1565b613f1e613f1986614f45565b614f6a565b90506000805b613f2d83614fb4565b156140255780613f4f57613f48613f4384614fd5565b615023565b845261401d565b8060011415613f7c57613f69613f6484614fd5565b6150da565b6001600160a01b0316602085015261401d565b8060021415613f9b57613f91613f4384614fd5565b604085015261401d565b8060031415613fc357613fb0613f6484614fd5565b6001600160a01b0316606085015261401d565b8060041415613feb57613fd8613f6484614fd5565b6001600160a01b0316608085015261401d565b806005141561401857614000613f4384614fd5565b67ffffffffffffffff1660a08501526001915061401d565b614025565b600101613f24565b5091935090915050915091565b60208101516000906001600160a01b0316614176578160a0015167ffffffffffffffff164211156140655750600161145d565b81604001514710156140795750600361145d565b614082826150f4565b6140f757606082015160408084015190516000926001600160a01b0316916127109184818181858888f193505050503d80600081146140dd576040519150601f19603f3d011682016040523d82523d6000602084013e6140e2565b606091505b50509050806140f557506004905061145d565b505b7f471eb9cc1ffe55ffadf15b32595415eb9d80f22e761d24bd6dffc607e1284d5982602001518360600151846040015160405180846001600160a01b03166001600160a01b03168152602001836001600160a01b03166001600160a01b03168152602001828152602001935050505060405180910390a150600061145d565b8160a0015167ffffffffffffffff164211156141945750600161145d565b81516020808401516001600160a01b0316600090815260039091526040902054146141c15750600261145d565b602080830151604080516370a0823160e01b815230600482015290516000936001600160a01b03909316926370a082319261c3509260248083019392829003018187803b15801561421157600080fd5b5086fa158015614225573d6000803e3d6000fd5b50505050506040513d602081101561423c57600080fd5b5051604084015190915081101561425757506003905061145d565b614260836150f4565b61431757600083602001516001600160a01b031663a9059cbb61c350866060015187604001516040518463ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600088803b1580156142d557600080fd5b5087f11580156142e9573d6000803e3d6000fd5b50505050506040513d602081101561430057600080fd5b505190508061431557506005915061145d9050565b505b7f471eb9cc1ffe55ffadf15b32595415eb9d80f22e761d24bd6dffc607e1284d5983602001518460600151856040015160405180846001600160a01b03166001600160a01b03168152602001836001600160a01b03166001600160a01b03168152602001828152602001935050505060405180910390a1506000905061145d565b60408051600480825260a08201909252606091829190816020015b60608152602001906001900390816143b357505083519091506143d590614570565b816000815181106143e257fe5b60200260200101819052506143fa8360200151614570565b8160018151811061440757fe5b602002602001018190525061442883604001516001600160a01b0316614583565b8160028151811061443557fe5b6020026020010181905250614453836060015163ffffffff16614570565b8160038151811061446057fe5b602002602001018190525061130d816145a6565b600081836145005760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156144c55781810151838201526020016144ad565b50505050905090810190601f1680156144f25780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161450c57fe5b0495945050505050565b600081848411156145685760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156144c55781810151838201526020016144ad565b505050900390565b606061233361457e83615262565b615348565b60408051600560a21b831860148201526034810190915260609061130d81615348565b60608151600014156145c7575060408051600081526020810190915261145d565b6060826000815181106145d657fe5b602002602001015190506000600190505b83518110156146175761460d8285838151811061460057fe5b602002602001015161539a565b91506001016145e7565b5061130d61462a825160c060ff16615417565b8261539a565b6146386158aa565b60006146426158aa565b61464a6158e1565b614656613f1986614f45565b90506000805b61466583614fb4565b15614025578061468b5761467b613f6484614fd5565b6001600160a01b031684526147f3565b806001141561472c5760606146a76146a285614fd5565b61550f565b905080516040519080825280602002602001820160405280156146d4578160200160208202803683370190505b50602086015260005b8151811015614725576147028282815181106146f557fe5b6020026020010151615023565b8660200151828151811061471257fe5b60209081029190910101526001016146dd565b50506147f3565b80600214156147ce5760606147436146a285614fd5565b90508051604051908082528060200260200182016040528015614770578160200160208202803683370190505b50604086015260005b81518110156147255761479e82828151811061479157fe5b60200260200101516150da565b866040015182815181106147ae57fe5b6001600160a01b0390921660209283029190910190910152600101614779565b8060031415614018576147e3613f4384614fd5565b63ffffffff166060850152600191505b60010161465c565b80516001600160a01b0316614a255760005b816020015151811015614a1f5760008260400151828151811061482c57fe5b60200260200101516001600160a01b03166127108460200151848151811061485057fe5b60209081029190910101516040516000818181858888f193505050503d8060008114614898576040519150601f19603f3d011682016040523d82523d6000602084013e61489d565b606091505b5050905080614960577f203f9f67a785f4f81be4d48b109aa0c498d1bc8097ecc2627063f480cc5fe73e8360000151846040015184815181106148dc57fe5b6020026020010151856020015185815181106148f457fe5b6020026020010151866060015160405180856001600160a01b03166001600160a01b03168152602001846001600160a01b03166001600160a01b031681526020018381526020018263ffffffff1663ffffffff16815260200194505050505060405180910390a1614a16565b7fd468d4fa5e8fb4adc119b29a983fd0785e04af5cb8b7a3a69a47270c54b6901a83600001518460400151848151811061499657fe5b6020026020010151856020015185815181106149ae57fe5b6020026020010151866060015160405180856001600160a01b03166001600160a01b03168152602001846001600160a01b03166001600160a01b031681526020018381526020018263ffffffff1663ffffffff16815260200194505050505060405180910390a15b5060010161480d565b50614c7c565b60005b816020015151811015614c7a57600082600001516001600160a01b031663a9059cbb61c35085604001518581518110614a5d57fe5b602002602001015186602001518681518110614a7557fe5b60200260200101516040518463ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600088803b158015614acc57600080fd5b5087f1158015614ae0573d6000803e3d6000fd5b50505050506040513d6020811015614af757600080fd5b505190508015614bbb577fd468d4fa5e8fb4adc119b29a983fd0785e04af5cb8b7a3a69a47270c54b6901a836000015184604001518481518110614b3757fe5b602002602001015185602001518581518110614b4f57fe5b6020026020010151866060015160405180856001600160a01b03166001600160a01b03168152602001846001600160a01b03166001600160a01b031681526020018381526020018263ffffffff1663ffffffff16815260200194505050505060405180910390a1614c71565b7f203f9f67a785f4f81be4d48b109aa0c498d1bc8097ecc2627063f480cc5fe73e836000015184604001518481518110614bf157fe5b602002602001015185602001518581518110614c0957fe5b6020026020010151866060015160405180856001600160a01b03166001600160a01b03168152602001846001600160a01b03166001600160a01b031681526020018381526020018263ffffffff1663ffffffff16815260200194505050505060405180910390a15b50600101614a28565b505b50565b60008183614cce5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156144c55781810151838201526020016144ad565b50828481614cd857fe5b06949350505050565b614ce9615802565b6000614cf3615802565b614cfb6158e1565b614d07613f1986614f45565b90506000805b614d1683614fb4565b156140255780614d3357614d2c613f4384614fd5565b8452614f3d565b8060011415614d5b57614d48613f6484614fd5565b6001600160a01b03166020850152614f3d565b8060021415614dea576060614d726146a285614fd5565b90508051604051908082528060200260200182016040528015614d9f578160200160208202803683370190505b50604086015260005b8151811015614de357614dc08282815181106146f557fe5b86604001518281518110614dd057fe5b6020908102919091010152600101614da8565b5050614f3d565b8060031415614e7f576060614e016146a285614fd5565b90508051604051908082528060200260200182016040528015614e2e578160200160208202803683370190505b50606086015260005b8151811015614de357614e4f82828151811061479157fe5b86606001518281518110614e5f57fe5b6001600160a01b0390921660209283029190910190910152600101614e37565b8060041415614f14576060614e966146a285614fd5565b90508051604051908082528060200260200182016040528015614ec3578160200160208202803683370190505b50608086015260005b8151811015614de357614ee482828151811061479157fe5b86608001518281518110614ef457fe5b6001600160a01b0390921660209283029190910190910152600101614ecc565b806005141561401857614f29613f4384614fd5565b67ffffffffffffffff1660a0850152600191505b600101614d0d565b614f4d615901565b506040805180820190915281518152602082810190820152919050565b614f726158e1565b614f7b826155e0565b614f8457600080fd5b6000614f938360200151615610565b60208085015160408051808201909152868152920190820152915050919050565b6000614fbe615901565b505080518051602091820151919092015191011190565b614fdd615901565b614fe682614fb4565b614fef57600080fd5b60208201516000614fff82615673565b80830160209586015260408051808201909152908152938401919091525090919050565b80516000901580159061503857508151602110155b61504157600080fd5b60006150508360200151615610565b905080836000015110156150ab576040805162461bcd60e51b815260206004820152601a60248201527f6c656e677468206973206c657373207468616e206f6666736574000000000000604482015290519081900360640190fd5b8251602080850151830180519284900392918310156150d157826020036101000a820491505b50949350505050565b80516000906015146150eb57600080fd5b61233382615023565b600080805260066020527f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f85415801561512d5750600554155b1561516f5760008052600660205269021e19e0c9bab24000007f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f85561a8c06005555b6020808301516001600160a01b031660009081526006909152604090205480158061519d5750808360400151105b156151ac57600091505061145d565b6020808401516001600160a01b0390811660009081526007835260408082206060880151909316825291909252908190209084015181546151f29163ffffffff61366716565b8155600554420160018201819055606085015160208087015160408089015181519081529283019490945283516001600160a01b039384169493909116927f3fb83143cd331170da18fb1e8564d97e8ec39264b6ecb1ba248ea7596ab07258928290030190a35060019392505050565b604080516020808252818301909252606091829190602082018180368337505050602081018490529050600067ffffffffffffffff1984166152a6575060186152ca565b6fffffffffffffffffffffffffffffffff1984166152c6575060106152ca565b5060005b6020811015615300578181815181106152df57fe5b01602001516001600160f81b031916156152f857615300565b6001016152ca565b60008160200390506060816040519080825280601f01601f191660200182016040528015615335576020820181803683370190505b5080830196909652508452509192915050565b60608151600114801561537a5750607f60f81b8260008151811061536857fe5b01602001516001600160f81b03191611155b1561538657508061145d565b6123336153988351608060ff16615417565b835b6060806040519050835180825260208201818101602087015b818310156153cb5780518352602092830192016153b3565b50855184518101855292509050808201602086015b818310156153f85780518352602092830192016153e0565b508651929092011591909101601f01601f191660405250905092915050565b6060680100000000000000008310615467576040805162461bcd60e51b815260206004820152600e60248201526d696e70757420746f6f206c6f6e6760901b604482015290519081900360640190fd5b604080516001808252818301909252606091602082018180368337019050509050603784116154c15782840160f81b816000815181106154a357fe5b60200101906001600160f81b031916908160001a9053509050612333565b60606154cc85615262565b90508381510160370160f81b826000815181106154e557fe5b60200101906001600160f81b031916908160001a905350615506828261539a565b95945050505050565b606061551a826155e0565b61552357600080fd5b600061552e836157a6565b905060608160405190808252806020026020018201604052801561556c57816020015b615559615901565b8152602001906001900390816155515790505b509050600061557e8560200151615610565b60208601510190506000805b848110156155d55761559b83615673565b91506040518060400160405280838152602001848152508482815181106155be57fe5b60209081029190910101529181019160010161558a565b509195945050505050565b80516000906155f15750600061145d565b6020820151805160001a9060c0821015613d065760009250505061145d565b8051600090811a608081101561562a57600091505061145d565b60b8811080615645575060c08110801590615645575060f881105b1561565457600191505061145d565b60c08110156156685760b51901905061145d565b60f51901905061145d565b80516000908190811a608081101561568e576001915061579f565b60b88110156156a357607e198101915061579f565b60c081101561571d57600060b78203600186019550806020036101000a865104915060018101820193505080831015615717576040805162461bcd60e51b81526020600482015260116024820152706164646974696f6e206f766572666c6f7760781b604482015290519081900360640190fd5b5061579f565b60f88110156157325760be198101915061579f565b600060f78203600186019550806020036101000a86510491506001810182019350508083101561579d576040805162461bcd60e51b81526020600482015260116024820152706164646974696f6e206f766572666c6f7760781b604482015290519081900360640190fd5b505b5092915050565b80516000906157b75750600061145d565b600080905060006157cb8460200151615610565b602085015185519181019250015b808210156157f9576157ea82615673565b820191508260010192506157d9565b50909392505050565b6040518060c001604052806000801916815260200160006001600160a01b03168152602001606081526020016060815260200160608152602001600067ffffffffffffffff1681525090565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a081019190915290565b60408051608081018252600080825260208201819052918101829052606081019190915290565b604051806080016040528060006001600160a01b031681526020016060815260200160608152602001600063ffffffff1681525090565b60405180604001604052806158f4615901565b8152602001600081525090565b60405180604001604052806000815260200160008152509056fe6f6e6c79207374616b696e672073797374656d20636f6e74726163742063616e2063616c6c20746869732066756e6374696f6e746865206d6573736167652073656e646572206d75737420626520696e63656e746976697a6520636f6e7472616374626e62206c61726765207472616e73666572206c696d697420746f6f20736d616c6c466f72206d696e69546f6b656e2c20746865207472616e7366657220616d6f756e74206d757374206e6f74206265206c657373207468616e2031756e7265636f676e697a6564207472616e736665724f75742073796e207061636b61676565787069726554696d65206d7573742062652074776f206d696e75746573206c61746572616d6f756e7420697320746f6f206c617267652c20657863656564206d6178696d756d206265703220746f6b656e20616d6f756e7474686520636f6e747261637420686173206e6f74206265656e20626f756e6420746f20616e79206265703220746f6b656e726563656976656420424e4220616d6f756e742073686f756c64206265206e6f206c657373207468616e207468652073756d206f66207472616e736665724f757420424e4220616d6f756e7420616e64206d696e696d756d2072656c6179466565746865206d73672073656e646572206d75737420626520746f6b656e207265636f76657220706f7274616c616d6f756e7420697320746f6f206c617267652c2075696e74323536206f766572666c6f774c656e677468206f6620726563697069656e74416464727320646f65736e277420657175616c20746f206c656e677468206f6620726566756e644164647273696e76616c6964207472616e7366657220616d6f756e743a20707265636973696f6e206c6f737320696e20616d6f756e7420636f6e76657273696f6e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77726563656976656420424e4220616d6f756e742073686f756c64206265206e6f206c657373207468616e20746865206d696e696d756d2072656c6179466565746865206d6573736167652073656e646572206d75737420626520676f7665726e616e636520636f6e7472616374756e7265636f676e697a6564207472616e736665724f75742061636b207061636b6167654c656e677468206f6620726563697069656e74416464727320646f65736e277420657175616c20746f206c656e677468206f6620616d6f756e7473746865206d6573736167652073656e646572206d7573742062652063726f737320636861696e20636f6e7472616374746865206d73672073656e646572206d75737420626520746f6b656e4d616e6167657274686520636f6e7472616374206e6f7420696e69742079657400000000000000726563656976656420424e4220616d6f756e742073686f756c64206265206e6f206c657373207468616e207468652073756d206f66207472616e7366657220424e4220616d6f756e7420616e642072656c6179466565696e76616c696420726563656976656420424e4220616d6f756e743a20707265636973696f6e206c6f737320696e20616d6f756e7420636f6e76657273696f6e434c41494d5f524557415244535f464f525f46494e414c4954595f4e4f545f414c4c4f574544a164736f6c6343000604000a", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/1abdfbf3aeb86909c2220b79bf92b87ddff64b54", + Code: "6080604052600436106104405760003560e01c80639509b98011610234578063c81b16621161012e578063ebf71d53116100b6578063fb063e8f1161007a578063fb063e8f146110d3578063fc1a598f146110e8578063fc3e590814610cca578063fd6a68791461111b578063ff9c0027146108a057610488565b8063ebf71d531461106a578063f01484721461107f578063f1fad10414611094578063f9a2bbc7146110a9578063fa9e9159146110be57610488565b8063dc927faf116100fd578063dc927faf14610fce578063df8079e914610fe3578063e04c83a714610ff8578063e1c7392a14611022578063e8f35cea1461103757610488565b8063c81b166214610ef9578063c8509d8114610f0e578063cf41984414610f93578063d9e6dae91461080d57610488565b8063aa7415f5116101bc578063b99328c511610180578063b99328c514610e30578063b9fd21e314610e69578063ba35ead614610e7e578063bbface1f14610e93578063bd46646114610ec657610488565b8063aa7415f514610cdf578063aa82dce114610d26578063aad5606314610d3b578063ab51bb9614610d50578063ac43175114610d6557610488565b80639dc09262116102035780639dc0926214610c76578063a1a11bf514610c8b578063a496fba214610ca0578063a78abc1614610cb5578063a7c9f02d14610cca57610488565b80639509b98014610bda57806396713da914610c135780639a854bbd14610c285780639a99b4f014610c3d57610488565b806359b9278911610345578063727be1f8116102cd578063831d65d111610291578063831d65d114610ac85780638525db0314610b4d5780638b87b21f146107625780638eff336c14610b8657806393ab703f14610bc557610488565b8063727be1f814610a2057806375d47a0a14610a4a5780637942fd0514610a5f578063799758b914610a745780637e434d5414610ab357610488565b80636e056520116103145780636e056520146108b55780636e47b482146109e157806370fd5bad146108a0578063718a8aa8146109f657806371d3086314610a0b57610488565b806359b92789146108615780635d499b1b1461088b578063613684751461080d57806366dea52a146108a057610488565b80633fd8b02f116103c85780634a3acdf4116103975780634a3acdf4146107f85780634bf6c8821461080d57806350432d321461082257806351b4dce31461083757806351e806721461084c57610488565b80633fd8b02f1461078d57806343756e5c146107a257806343a368b9146107b7578063493279b1146107cc57610488565b8063149d14d91161040f578063149d14d91461062157806328087028146106485780632ae454831461065d5780633d713223146106b15780633dffc3871461076257610488565b80630bee7a671461048d5780630e2374a5146104bb5780631182b875146104ec57806312234582146105e657610488565b36610488573415610486576040805133815234602082015281517f6c98249d85d88c3753a04a22230f595e4dc8d3dc86c34af35deeeedc861b89db929181900390910190a15b005b600080fd5b34801561049957600080fd5b506104a2611130565b6040805163ffffffff9092168252519081900360200190f35b3480156104c757600080fd5b506104d0611135565b604080516001600160a01b039092168252519081900360200190f35b3480156104f857600080fd5b506105716004803603604081101561050f57600080fd5b60ff8235169190810190604081016020820135600160201b81111561053357600080fd5b82018360208201111561054557600080fd5b803590602001918460018302840111600160201b8311171561056657600080fd5b50909250905061113b565b6040805160208082528351818301528351919283929083019185019080838360005b838110156105ab578181015183820152602001610593565b50505050905090810190601f1680156105d85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156105f257600080fd5b506104866004803603604081101561060957600080fd5b506001600160a01b0381358116916020013516611269565b34801561062d57600080fd5b50610636611363565b60408051918252519081900360200190f35b34801561065457600080fd5b506104d0611369565b34801561066957600080fd5b506106986004803603604081101561068057600080fd5b506001600160a01b038135811691602001351661136f565b6040805192835260208301919091528051918290030190f35b3480156106bd57600080fd5b506104d0600480360360208110156106d457600080fd5b810190602081018135600160201b8111156106ee57600080fd5b82018360208201111561070057600080fd5b803590602001918460018302840111600160201b8311171561072157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611393945050505050565b34801561076e57600080fd5b506107776113b7565b6040805160ff9092168252519081900360200190f35b34801561079957600080fd5b506106366113bc565b3480156107ae57600080fd5b506104d06113c2565b3480156107c357600080fd5b506106366113c8565b3480156107d857600080fd5b506107e16113d4565b6040805161ffff9092168252519081900360200190f35b34801561080457600080fd5b506106366113da565b34801561081957600080fd5b506107776113e0565b34801561082e57600080fd5b506106366113e5565b34801561084357600080fd5b506104d06113f0565b34801561085857600080fd5b506104d06113f6565b34801561086d57600080fd5b506104d06004803603602081101561088457600080fd5b50356113fc565b34801561089757600080fd5b50610636611417565b3480156108ac57600080fd5b50610777611420565b6109cd600480360360808110156108cb57600080fd5b810190602081018135600160201b8111156108e557600080fd5b8201836020820111156108f757600080fd5b803590602001918460208302840111600160201b8311171561091857600080fd5b919390929091602081019035600160201b81111561093557600080fd5b82018360208201111561094757600080fd5b803590602001918460208302840111600160201b8311171561096857600080fd5b919390929091602081019035600160201b81111561098557600080fd5b82018360208201111561099757600080fd5b803590602001918460208302840111600160201b831117156109b857600080fd5b91935091503567ffffffffffffffff16611425565b604080519115158252519081900360200190f35b3480156109ed57600080fd5b506104d06118fa565b348015610a0257600080fd5b50610777611900565b348015610a1757600080fd5b50610636611905565b348015610a2c57600080fd5b506109cd60048036036020811015610a4357600080fd5b503561190b565b348015610a5657600080fd5b506104d061198c565b348015610a6b57600080fd5b50610777611992565b348015610a8057600080fd5b5061048660048036036060811015610a9757600080fd5b508035906001600160a01b036020820135169060400135611997565b348015610abf57600080fd5b506104d0611c3d565b348015610ad457600080fd5b5061048660048036036040811015610aeb57600080fd5b60ff8235169190810190604081016020820135600160201b811115610b0f57600080fd5b820183602082011115610b2157600080fd5b803590602001918460018302840111600160201b83111715610b4257600080fd5b509092509050611c43565b348015610b5957600080fd5b5061048660048036036040811015610b7057600080fd5b50803590602001356001600160a01b0316611d8c565b348015610b9257600080fd5b5061048660048036036060811015610ba957600080fd5b508035906001600160a01b036020820135169060400135611ef5565b348015610bd157600080fd5b50610636611f7b565b348015610be657600080fd5b5061048660048036036040811015610bfd57600080fd5b506001600160a01b038135169060200135611f80565b348015610c1f57600080fd5b5061077761213d565b348015610c3457600080fd5b50610636612142565b348015610c4957600080fd5b5061063660048036036040811015610c6057600080fd5b506001600160a01b03813516906020013561214e565b348015610c8257600080fd5b506104d061228c565b348015610c9757600080fd5b506104d0612292565b348015610cac57600080fd5b50610777612298565b348015610cc157600080fd5b506109cd61229d565b348015610cd657600080fd5b506107776122a6565b6109cd60048036036080811015610cf557600080fd5b5080356001600160a01b03908116916020810135909116906040810135906060013567ffffffffffffffff166122ab565b348015610d3257600080fd5b506104d061296c565b348015610d4757600080fd5b506104d0612972565b348015610d5c57600080fd5b506104a2612298565b348015610d7157600080fd5b5061048660048036036040811015610d8857600080fd5b810190602081018135600160201b811115610da257600080fd5b820183602082011115610db457600080fd5b803590602001918460018302840111600160201b83111715610dd557600080fd5b919390929091602081019035600160201b811115610df257600080fd5b820183602082011115610e0457600080fd5b803590602001918460018302840111600160201b83111715610e2557600080fd5b509092509050612978565b348015610e3c57600080fd5b5061048660048036036040811015610e5357600080fd5b50803590602001356001600160a01b0316612e20565b348015610e7557600080fd5b50610636612ea0565b348015610e8a57600080fd5b50610636612eaa565b348015610e9f57600080fd5b5061063660048036036020811015610eb657600080fd5b50356001600160a01b0316612eb0565b348015610ed257600080fd5b5061063660048036036020811015610ee957600080fd5b50356001600160a01b0316612ec2565b348015610f0557600080fd5b506104d0612edd565b348015610f1a57600080fd5b5061048660048036036040811015610f3157600080fd5b60ff8235169190810190604081016020820135600160201b811115610f5557600080fd5b820183602082011115610f6757600080fd5b803590602001918460018302840111600160201b83111715610f8857600080fd5b509092509050612ee3565b348015610f9f57600080fd5b5061048660048036036040811015610fb657600080fd5b506001600160a01b0381358116916020013516612fb3565b348015610fda57600080fd5b506104d0613287565b348015610fef57600080fd5b506104d061328d565b34801561100457600080fd5b506109cd6004803603602081101561101b57600080fd5b5035613293565b34801561102e57600080fd5b50610486613333565b34801561104357600080fd5b506106366004803603602081101561105a57600080fd5b50356001600160a01b03166133d3565b34801561107657600080fd5b506107776133e5565b34801561108b57600080fd5b506107776133ea565b3480156110a057600080fd5b506107776133ef565b3480156110b557600080fd5b506104d06133f4565b3480156110ca57600080fd5b506106366133fa565b3480156110df57600080fd5b50610636613400565b3480156110f457600080fd5b506105716004803603602081101561110b57600080fd5b50356001600160a01b031661340e565b34801561112757600080fd5b506104d0613535565b606481565b61200181565b60005460609060ff16611183576040805162461bcd60e51b81526020600482015260196024820152600080516020615ce9833981519152604482015290519081900360640190fd5b33612000146111c35760405162461bcd60e51b815260040180806020018281038252602f815260200180615c97602f913960400191505060405180910390fd5b60ff8416600214156112155761120e83838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061353b92505050565b9050611262565b6040805162461bcd60e51b815260206004820152601860248201527f756e7265636f676e697a65642073796e207061636b6167650000000000000000604482015290519081900360640190fd5b9392505050565b33612000146112a95760405162461bcd60e51b815260040180806020018281038252602f815260200180615c97602f913960400191505060405180910390fd5b6001600160a01b0380831660009081526007602090815260408083209385168352929052208054611314576040805162461bcd60e51b815260206004820152601060248201526f1b9bc81b1bd8dad95908185b5bdd5b9d60821b604482015290519081900360640190fd5b8054600082556040805182815290516001600160a01b0380861692908716917f152fb15aa5d80f843e1e4bd5f2fc9161714f169945024decec7e84fb910fdd519181900360200190a350505050565b60015490565b61200581565b60076020908152600092835260408084209091529082529020805460019091015482565b6020818101516000908152600490915260409020546001600160a01b03165b919050565b600181565b60055481565b61100181565b670de0b6b3a764000081565b6102ca81565b61a8c081565b600881565b66071afd498d000081565b61200681565b61200081565b6000908152600460205260409020546001600160a01b031690565b6402540be40081565b600281565b6000805460ff1661146b576040805162461bcd60e51b81526020600482015260196024820152600080516020615ce9833981519152604482015290519081900360640190fd5b8685146114a95760405162461bcd60e51b815260040180806020018281038252603b815260200180615c5c603b913960400191505060405180910390fd5b8683146114e75760405162461bcd60e51b815260040180806020018281038252603f815260200180615b2f603f913960400191505060405180910390fd5b426078018267ffffffffffffffff1610156115335760405162461bcd60e51b81526004018080602001828103825260248152602001806159f46024913960400191505060405180910390fd5b6402540be4003406156115775760405162461bcd60e51b8152600401808060200182810382526040815260200180615d5f6040913960400191505060405180910390fd5b604080518681526020808802820101909152859060009081906060908480156115aa578160200160208202803683370190505b50905060005b84811015611685576402540be4008b8b838181106115ca57fe5b90506020020135816115d857fe5b06156116155760405162461bcd60e51b815260040180806020018281038252603c815260200180615b6e603c913960400191505060405180910390fd5b61163a8b8b8381811061162457fe5b905060200201358561365f90919063ffffffff16565b93506116666402540be4008c8c8481811061165157fe5b905060200201356136b990919063ffffffff16565b82828151811061167257fe5b60209081029190910101526001016115b0565b506001546116aa9061169d908663ffffffff6136fb16565b849063ffffffff61365f16565b3410156116e85760405162461bcd60e51b8152600401808060200182810382526056815260200180615d096056913960600191505060405180910390fd5b6116f8348463ffffffff61375416565b91506117026157f8565b6040518060c001604052806221272160e91b60001b815260200160006001600160a01b031681526020018381526020018e8e808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152505050908252506040805160208c810282810182019093528c82529283019290918d918d91829185019084908082843760009201919091525050509082525067ffffffffffffffff8916602090910152905061200063f7a251d760036117c684613796565b6117db876402540be40063ffffffff6136b916565b6040518463ffffffff1660e01b8152600401808460ff1660ff16815260200180602001838152602001828103825284818151815260200191508051906020019080838360005b83811015611839578181015183820152602001611821565b50505050905090810190601f1680156118665780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b15801561188757600080fd5b505af115801561189b573d6000803e3d6000fd5b505060408051600081523360208201528082018890526060810187905290517f74eab09b0e53aefc23f2e1b16da593f95c2dd49c6f5a23720463d10d9c330b2a9350908190036080019150a15060019c9b505050505050505050505050565b61100581565b601081565b60015481565b6000336120011461194d5760405162461bcd60e51b81526004018080602001828103825260338152602001806159126033913960400191505060405180910390fd5b8115611984576040516120019083156108fc029084906000818181858888f19350505050158015611982573d6000803e3d6000fd5b505b506001919050565b61100881565b600b81565b60005460ff166119dc576040805162461bcd60e51b81526020600482015260196024820152600080516020615ce9833981519152604482015290519081900360640190fd5b3361300014611a1c5760405162461bcd60e51b815260040180806020018281038252602b815260200180615adf602b913960400191505060405180910390fd5b677ce66c50e2840000811115611a635760405162461bcd60e51b8152600401808060200182810382526035815260200180615a186035913960400191505060405180910390fd5b60006221272160e91b8414611bc4576000848152600460205260409020546001600160a01b031680611acd576040805162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a59081cde5b589bdb60921b604482015290519081900360640190fd5b6001600160a01b038116600090815260026020526040902054611af08482613a51565b604080516370a0823160e01b8152306004820152905191945084916001600160a01b038516916370a08231916024808301926020929190829003018186803b158015611b3b57600080fd5b505afa158015611b4f573d6000803e3d6000fd5b505050506040513d6020811015611b6557600080fd5b50511015611bb1576040805162461bcd60e51b8152602060048201526014602482015273696e73756666696369656e742062616c616e636560601b604482015290519081900360640190fd5b611bbd86838588613a91565b5050611c37565b611bd9826402540be40063ffffffff6136fb16565b905080471015611c27576040805162461bcd60e51b8152602060048201526014602482015273696e73756666696369656e742062616c616e636560601b604482015290519081900360640190fd5b6000611c3585828487613a91565b505b50505050565b61200381565b60005460ff16611c88576040805162461bcd60e51b81526020600482015260196024820152600080516020615ce9833981519152604482015290519081900360640190fd5b3361200014611cc85760405162461bcd60e51b815260040180806020018281038252602f815260200180615c97602f913960400191505060405180910390fd5b60ff831660031415611d1857611d1382828080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250613b2992505050565b611d87565b7f41ce201247b6ceb957dcdb217d0b8acb50b9ea0e12af9af4f5e7f38902101605838383604051808460ff1660ff168152602001806020018281038252848482818152602001925080828437600083820152604051601f909101601f1916909201829003965090945050505050a15b505050565b3361300014611dcc5760405162461bcd60e51b815260040180806020018281038252602b815260200180615adf602b913960400191505060405180910390fd5b60006221272160e91b8314611e3757506000828152600460205260409020546001600160a01b031680611e37576040805162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a59081cde5b589bdb60921b604482015290519081900360640190fd5b6001600160a01b0380821660009081526007602090815260408083209386168352929052208054611ea2576040805162461bcd60e51b815260206004820152601060248201526f1b9bc81b1bd8dad95908185b5bdd5b9d60821b604482015290519081900360640190fd5b8054600082556040805182815290516001600160a01b03808716929086169188917f8041a9a8704332594e2884f5e0f942281cdd7611854c365b4d0aa70b2295d6b6919081900360200190a45050505050565b3361100814611f355760405162461bcd60e51b8152600401808060200182810382526023815260200180615cc66023913960400191505060405180910390fd5b600083815260046020908152604080832080546001600160a01b039096166001600160a01b03199096168617905593825260038152838220949094556002909352912055565b603c81565b81806001600160a01b031663893d20e86040518163ffffffff1660e01b815260040160206040518083038186803b158015611fba57600080fd5b505afa158015611fce573d6000803e3d6000fd5b505050506040513d6020811015611fe457600080fd5b50516001600160a01b03163314612042576040805162461bcd60e51b815260206004820152601860248201527f6e6f74206f776e6572206f6620424550323020746f6b656e0000000000000000604482015290519081900360640190fd5b60008211612090576040805162461bcd60e51b81526020600482015260166024820152751e995c9bc81b1a5b5a5d081b9bdd08185b1b1bddd95960521b604482015290519081900360640190fd5b6001600160a01b0383166000908152600360205260409020546120e6576040805162461bcd60e51b81526020600482015260096024820152681b9bdd08189bdd5b9960ba1b604482015290519081900360640190fd5b6001600160a01b038316600081815260066020908152604091829020859055815185815291513393927f9df3a90730dbf23b5cc18dbbd5f4af3fa94a0dffb6ff6841f98a9a9a6ac626a892908290030190a3505050565b600981565b677ce66c50e284000081565b6000805460ff16612194576040805162461bcd60e51b81526020600482015260196024820152600080516020615ce9833981519152604482015290519081900360640190fd5b33611005146121d45760405162461bcd60e51b815260040180806020018281038252602f815260200180615945602f913960400191505060405180910390fd5b60004783106121e357476121e5565b825b9050670de0b6b3a7640000811115612201576000915050612286565b8015612283576040516001600160a01b0385169082156108fc029083906000818181858888f1935050505015801561223d573d6000803e3d6000fd5b50604080516001600160a01b03861681526020810183905281517ff8b71c64315fc33b2ead2adfa487955065152a8ac33d9d5193aafd7f45dc15a0929181900390910190a15b90505b92915050565b61100781565b61100681565b600081565b60005460ff1681565b600381565b6000805460ff166122f1576040805162461bcd60e51b81526020600482015260196024820152600080516020615ce9833981519152604482015290519081900360640190fd5b426078018267ffffffffffffffff16101561233d5760405162461bcd60e51b81526004018080602001828103825260248152602001806159f46024913960400191505060405180910390fd5b6402540be4003406156123815760405162461bcd60e51b8152600401808060200182810382526040815260200180615d5f6040913960400191505060405180910390fd5b600080806001600160a01b038816612460576001546123a790879063ffffffff61365f16565b3410156123e55760405162461bcd60e51b8152600401808060200182810382526061815260200180615a7e6061913960800191505060405180910390fd5b6402540be4008606156124295760405162461bcd60e51b815260040180806020018281038252603c815260200180615b6e603c913960400191505060405180910390fd5b612439348763ffffffff61375416565b9050612450866402540be40063ffffffff6136b916565b6221272160e91b93509150612703565b6001600160a01b0388166000908152600360205260409020549250826124b75760405162461bcd60e51b8152600401808060200182810382526031815260200180615a4d6031913960400191505060405180910390fd5b6001543410156124f85760405162461bcd60e51b815260040180806020018281038252603f815260200180615bcb603f913960400191505060405180910390fd5b506001600160a01b038716600090815260026020526040902054349060088111158061254357506008811180156125435750612541876007198301600a0a63ffffffff613b8516565b155b61257e5760405162461bcd60e51b815260040180806020018281038252603c815260200180615b6e603c913960400191505060405180910390fd5b6125888782613bc7565b925061259384613c00565b156125db576305f5e1008310156125db5760405162461bcd60e51b815260040180806020018281038252603a815260200180615996603a913960400191505060405180910390fd5b6008811015806125f557506008811080156125f557508683115b6126305760405162461bcd60e51b8152600401808060200182810382526025815260200180615b0a6025913960400191505060405180910390fd5b677ce66c50e28400008311156126775760405162461bcd60e51b8152600401808060200182810382526035815260200180615a186035913960400191505060405180910390fd5b604080516323b872dd60e01b81523360048201523060248201526044810189905290516001600160a01b038b16916323b872dd9160648083019260209291908290030181600087803b1580156126cc57600080fd5b505af11580156126e0573d6000803e3d6000fd5b505050506040513d60208110156126f657600080fd5b505161270157600080fd5b505b61270b6157f8565b6040805160c0810182528581526001600160a01b038b166020820152815160018082528184018452919283019181602001602082028036833750505081526040805160018082528183019092526020928301929091908083019080368337505050815260408051600180825281830190925260209283019290919080830190803683370190505081526020018767ffffffffffffffff1681525090508281604001516000815181106127b957fe5b6020026020010181815250508781606001516000815181106127d757fe5b60200260200101906001600160a01b031690816001600160a01b03168152505033816080015160008151811061280957fe5b6001600160a01b039092166020928302919091019091015261200063f7a251d7600361283484613796565b612849866402540be40063ffffffff6136b916565b6040518463ffffffff1660e01b8152600401808460ff1660ff16815260200180602001838152602001828103825284818151815260200191508051906020019080838360005b838110156128a757818101518382015260200161288f565b50505050905090810190601f1680156128d45780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b1580156128f557600080fd5b505af1158015612909573d6000803e3d6000fd5b5050604080516001600160a01b038d1681523360208201528082018b90526060810186905290517f74eab09b0e53aefc23f2e1b16da593f95c2dd49c6f5a23720463d10d9c330b2a9350908190036080019150a150600198975050505050505050565b61200281565b61300081565b33611007146129b85760405162461bcd60e51b815260040180806020018281038252602e815260200180615c0a602e913960400191505060405180910390fd5b60208114612a0d576040805162461bcd60e51b815260206004820152601b60248201527f65787065637465642076616c7565206c656e6774682069732033320000000000604482015290519081900360640190fd5b606084848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8801819004810282018101909252868152939450606093925086915085908190840183828082843760009201919091525050505060208301519091506772656c617946656560c01b811415612b15576020820151670de0b6b3a76400008111801590612abc57506402540be4008106155b612b0d576040805162461bcd60e51b815260206004820152601960248201527f7468652072656c6179466565206f7574206f662072616e676500000000000000604482015290519081900360640190fd5b600155612d8b565b612b8987878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601781527f6c617267655472616e736665724c6f636b506572696f6400000000000000000060208201529150613d069050565b15612c2557604080516020601f8701819004810282018101909252858152600091612bcc91888880838501838280828437600092019190915250613ded92505050565b905062093a80811115612c1d576040805162461bcd60e51b81526020600482015260146024820152736c6f636b20706572696f6420746f6f206c6f6e6760601b604482015290519081900360640190fd5b600555612d8b565b612c9187878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080518082019091526015815274189b9893185c99d9551c985b9cd9995c931a5b5a5d605a1b60208201529150613d069050565b15612d4e57604080516020601f8701819004810282018101909252858152600091612cd491888880838501838280828437600092019190915250613ded92505050565b905068056bc75e2d63100000811015612d1e5760405162461bcd60e51b81526004018080602001828103825260228152602001806159746022913960400191505060405180910390fd5b6000805260066020527f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f855612d8b565b6040805162461bcd60e51b815260206004820152600d60248201526c756e6b6e6f776e20706172616d60981b604482015290519081900360640190fd5b7f6cdb0ac70ab7f2e2d035cca5be60d89906f2dede7648ddbd7402189c1eeed17a878787876040518080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600083820152604051601f909101601f19169092018290039850909650505050505050a150505050505050565b3361100814612e605760405162461bcd60e51b8152600401808060200182810382526023815260200180615cc66023913960400191505060405180910390fd5b600091825260046020908152604080842080546001600160a01b03191690556001600160a01b039290921683526003815281832083905560029052812055565b6221272160e91b81565b61c35081565b60026020526000908152604090205481565b6001600160a01b031660009081526003602052604090205490565b61100281565b60005460ff16612f28576040805162461bcd60e51b81526020600482015260196024820152600080516020615ce9833981519152604482015290519081900360640190fd5b3361200014612f685760405162461bcd60e51b815260040180806020018281038252602f815260200180615c97602f913960400191505060405180910390fd5b60ff831660031415611d1857611d1382828080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250613df292505050565b60085460ff1660021415612fff576040805162461bcd60e51b815260206004820152600e60248201526d4e6f2072652d656e7472616e637960901b604482015290519081900360640190fd5b6008805460ff191660021790556001600160a01b0380831660009081526007602090815260408083209385168352929052208054613077576040805162461bcd60e51b815260206004820152601060248201526f1b9bc81b1bd8dad95908185b5bdd5b9d60821b604482015290519081900360640190fd5b80600101544210156130d0576040805162461bcd60e51b815260206004820152601760248201527f7374696c6c206f6e206c6f636b696e6720706572696f64000000000000000000604482015290519081900360640190fd5b805460008083556001600160a01b038516613143576040516001600160a01b038516906127109084906000818181858888f193505050503d8060008114613133576040519150601f19603f3d011682016040523d82523d6000602084013e613138565b606091505b5050809150506131d6565b846001600160a01b031663a9059cbb61c35086856040518463ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600088803b1580156131a657600080fd5b5087f11580156131ba573d6000803e3d6000fd5b50505050506040513d60208110156131d157600080fd5b505190505b80613228576040805162461bcd60e51b815260206004820152601e60248201527f776974686472617720756e6c6f636b656420746f6b656e206661696c65640000604482015290519081900360640190fd5b836001600160a01b0316856001600160a01b03167f832fc3e25f2b3e6fb0eb59419a73cba405f2a249fce75f7e31ea5a457a0323f1846040518082815260200191505060405180910390a350506008805460ff19166001179055505050565b61100381565b61200481565b600033612002146132eb576040805162461bcd60e51b815260206004820152601f60248201527f746865206d73672073656e646572206d757374206265207374616b6548756200604482015290519081900360640190fd5b81471061332b576040516120029083156108fc029084906000818181858888f19350505050158015613321573d6000803e3d6000fd5b50600190506113b2565b506000919050565b60005460ff161561338b576040805162461bcd60e51b815260206004820152601960248201527f74686520636f6e747261637420616c726561647920696e697400000000000000604482015290519081900360640190fd5b66071afd498d000060019081556000808052600260205260127fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b55805460ff19169091179055565b60066020526000908152604090205481565b600481565b600581565b601181565b61100081565b61271081565b69021e19e0c9bab240000081565b6001600160a01b03811660009081526003602090815260409182902054825182815280840190935260609290918391906020820181803683375050506020810183905290506000805b60208160ff16101561349e57828160ff168151811061347257fe5b01602001516001600160f81b0319161561349157816001019150613496565b61349e565b600101613457565b5060608160ff166040519080825280601f01601f1916602001820160405280156134cf576020820181803683370190505b50905060005b8260ff168160ff16101561352b57838160ff16815181106134f257fe5b602001015160f81c60f81b828260ff168151811061350c57fe5b60200101906001600160f81b031916908160001a9053506001016134d5565b5095945050505050565b61100481565b6060613545615844565b600061355084613ee9565b91509150806135a6576040805162461bcd60e51b815260206004820152601f60248201527f756e7265636f676e697a6564207472616e73666572496e207061636b61676500604482015290519081900360640190fd5b60006135b183614028565b905063ffffffff811615613645576040808401516020808601516001600160a01b031660009081526002909152918220546135ec9190613bc7565b90506135f6615879565b60405180608001604052808660000151815260200183815260200186608001516001600160a01b031681526020018463ffffffff1681525090506136398161438e565b955050505050506113b2565b505060408051600081526020810190915291506113b29050565b600082820183811015612283576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600061228383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061446a565b60008261370a57506000612286565b8282028284828161371757fe5b04146122835760405162461bcd60e51b8152600401808060200182810382526021815260200180615baa6021913960400191505060405180910390fd5b600061228383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061450c565b60408051600680825260e08201909252606091829190816020015b60608152602001906001900390816137b157505083519091506137d390614566565b816000815181106137e057fe5b602002602001018190525061380183602001516001600160a01b0316614579565b8160018151811061380e57fe5b60200260200101819052506000836040015151905060608160405190808252806020026020018201604052801561385957816020015b60608152602001906001900390816138445790505b50905060005b828110156138a6576138878660400151828151811061387a57fe5b6020026020010151614566565b82828151811061389357fe5b602090810291909101015260010161385f565b506138b08161459c565b836002815181106138bd57fe5b60200260200101819052506060826040519080825280602002602001820160405280156138fe57816020015b60608152602001906001900390816138e95790505b50905060005b83811015613954576139358760600151828151811061391f57fe5b60200260200101516001600160a01b0316614579565b82828151811061394157fe5b6020908102919091010152600101613904565b5061395e8161459c565b8460038151811061396b57fe5b60200260200101819052506060836040519080825280602002602001820160405280156139ac57816020015b60608152602001906001900390816139975790505b50905060005b848110156139ec576139cd8860800151828151811061391f57fe5b8282815181106139d957fe5b60209081029190910101526001016139b2565b506139f68161459c565b85600481518110613a0357fe5b6020026020010181905250613a258760a0015167ffffffffffffffff16614566565b85600581518110613a3257fe5b6020026020010181905250613a468561459c565b979650505050505050565b60006008821115613a7a57613a73836007198401600a0a63ffffffff6136fb16565b9050612286565b612283836008849003600a0a63ffffffff6136b916565b6001600160a01b0380841660009081526007602090815260408083209385168352929052208054613ac8908463ffffffff61365f16565b815542603c016001820181905560408051858152602081019290925280516001600160a01b03808616939088169289927f446d1aa056e7b903901f49880e9f252762c1b81dc4301cf28db6dae526497eaa9281900390910190a45050505050565b613b316158a0565b6000613b3c83614626565b9150915080613b7c5760405162461bcd60e51b8152600401808060200182810382526024815260200180615c386024913960400191505060405180910390fd5b611d87826147f1565b600061228383836040518060400160405280601881526020017f536166654d6174683a206d6f64756c6f206279207a65726f0000000000000000815250614c75565b60006008821115613be957613a73836007198401600a0a63ffffffff6136b916565b612283836008849003600a0a63ffffffff6136fb16565b604080516020808252818301909252600091606091906020820181803683375050506020810184905290506000805b60208160ff161015613c7657828160ff1681518110613c4a57fe5b01602001516001600160f81b03191615613c6957816001019150613c6e565b613c76565b600101613c2f565b50600760ff82161015613c8e576000925050506113b2565b816005820360ff1681518110613ca057fe5b6020910101516001600160f81b031916602d60f81b14613cc5576000925050506113b2565b816001820360ff1681518110613cd757fe5b6020910101516001600160f81b031916604d60f81b14613cfc576000925050506113b2565b5060019392505050565b6000816040516020018082805190602001908083835b60208310613d3b5780518252601f199092019160209182019101613d1c565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405280519060200120836040516020018082805190602001908083835b60208310613da95780518252601f199092019160209182019101613d8a565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040528051906020012014905092915050565b015190565b613dfa6157f8565b6000613e0583614cd7565b9150915080613e455760405162461bcd60e51b81526004018080602001828103825260248152602001806159d06024913960400191505060405180910390fd5b613e4d6158a0565b602080840180516001600160a01b0390811684526040808701518585015291511660009081526002909252812054905b846040015151811015613ece57613eab85604001518281518110613e9d57fe5b602002602001015183613a51565b85604001518281518110613ebb57fe5b6020908102919091010152600101613e7d565b506080840151604083015260056060830152611c35826147f1565b613ef1615844565b6000613efb615844565b613f036158d7565b613f14613f0f86614f3b565b614f60565b90506000805b613f2383614faa565b1561401b5780613f4557613f3e613f3984614fcb565b615019565b8452614013565b8060011415613f7257613f5f613f5a84614fcb565b6150d0565b6001600160a01b03166020850152614013565b8060021415613f9157613f87613f3984614fcb565b6040850152614013565b8060031415613fb957613fa6613f5a84614fcb565b6001600160a01b03166060850152614013565b8060041415613fe157613fce613f5a84614fcb565b6001600160a01b03166080850152614013565b806005141561400e57613ff6613f3984614fcb565b67ffffffffffffffff1660a085015260019150614013565b61401b565b600101613f1a565b5091935090915050915091565b60208101516000906001600160a01b031661416c578160a0015167ffffffffffffffff1642111561405b575060016113b2565b816040015147101561406f575060036113b2565b614078826150ea565b6140ed57606082015160408084015190516000926001600160a01b0316916127109184818181858888f193505050503d80600081146140d3576040519150601f19603f3d011682016040523d82523d6000602084013e6140d8565b606091505b50509050806140eb5750600490506113b2565b505b7f471eb9cc1ffe55ffadf15b32595415eb9d80f22e761d24bd6dffc607e1284d5982602001518360600151846040015160405180846001600160a01b03166001600160a01b03168152602001836001600160a01b03166001600160a01b03168152602001828152602001935050505060405180910390a15060006113b2565b8160a0015167ffffffffffffffff1642111561418a575060016113b2565b81516020808401516001600160a01b0316600090815260039091526040902054146141b7575060026113b2565b602080830151604080516370a0823160e01b815230600482015290516000936001600160a01b03909316926370a082319261c3509260248083019392829003018187803b15801561420757600080fd5b5086fa15801561421b573d6000803e3d6000fd5b50505050506040513d602081101561423257600080fd5b5051604084015190915081101561424d5750600390506113b2565b614256836150ea565b61430d57600083602001516001600160a01b031663a9059cbb61c350866060015187604001516040518463ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600088803b1580156142cb57600080fd5b5087f11580156142df573d6000803e3d6000fd5b50505050506040513d60208110156142f657600080fd5b505190508061430b5750600591506113b29050565b505b7f471eb9cc1ffe55ffadf15b32595415eb9d80f22e761d24bd6dffc607e1284d5983602001518460600151856040015160405180846001600160a01b03166001600160a01b03168152602001836001600160a01b03166001600160a01b03168152602001828152602001935050505060405180910390a150600090506113b2565b60408051600480825260a08201909252606091829190816020015b60608152602001906001900390816143a957505083519091506143cb90614566565b816000815181106143d857fe5b60200260200101819052506143f08360200151614566565b816001815181106143fd57fe5b602002602001018190525061441e83604001516001600160a01b0316614579565b8160028151811061442b57fe5b6020026020010181905250614449836060015163ffffffff16614566565b8160038151811061445657fe5b60200260200101819052506112628161459c565b600081836144f65760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156144bb5781810151838201526020016144a3565b50505050905090810190601f1680156144e85780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161450257fe5b0495945050505050565b6000818484111561455e5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156144bb5781810151838201526020016144a3565b505050900390565b606061228661457483615258565b61533e565b60408051600560a21b83186014820152603481019091526060906112628161533e565b60608151600014156145bd57506040805160008152602081019091526113b2565b6060826000815181106145cc57fe5b602002602001015190506000600190505b835181101561460d57614603828583815181106145f657fe5b6020026020010151615390565b91506001016145dd565b50611262614620825160c060ff1661540d565b82615390565b61462e6158a0565b60006146386158a0565b6146406158d7565b61464c613f0f86614f3b565b90506000805b61465b83614faa565b1561401b578061468157614671613f5a84614fcb565b6001600160a01b031684526147e9565b806001141561472257606061469d61469885614fcb565b615505565b905080516040519080825280602002602001820160405280156146ca578160200160208202803683370190505b50602086015260005b815181101561471b576146f88282815181106146eb57fe5b6020026020010151615019565b8660200151828151811061470857fe5b60209081029190910101526001016146d3565b50506147e9565b80600214156147c457606061473961469885614fcb565b90508051604051908082528060200260200182016040528015614766578160200160208202803683370190505b50604086015260005b815181101561471b5761479482828151811061478757fe5b60200260200101516150d0565b866040015182815181106147a457fe5b6001600160a01b039092166020928302919091019091015260010161476f565b806003141561400e576147d9613f3984614fcb565b63ffffffff166060850152600191505b600101614652565b80516001600160a01b0316614a1b5760005b816020015151811015614a155760008260400151828151811061482257fe5b60200260200101516001600160a01b03166127108460200151848151811061484657fe5b60209081029190910101516040516000818181858888f193505050503d806000811461488e576040519150601f19603f3d011682016040523d82523d6000602084013e614893565b606091505b5050905080614956577f203f9f67a785f4f81be4d48b109aa0c498d1bc8097ecc2627063f480cc5fe73e8360000151846040015184815181106148d257fe5b6020026020010151856020015185815181106148ea57fe5b6020026020010151866060015160405180856001600160a01b03166001600160a01b03168152602001846001600160a01b03166001600160a01b031681526020018381526020018263ffffffff1663ffffffff16815260200194505050505060405180910390a1614a0c565b7fd468d4fa5e8fb4adc119b29a983fd0785e04af5cb8b7a3a69a47270c54b6901a83600001518460400151848151811061498c57fe5b6020026020010151856020015185815181106149a457fe5b6020026020010151866060015160405180856001600160a01b03166001600160a01b03168152602001846001600160a01b03166001600160a01b031681526020018381526020018263ffffffff1663ffffffff16815260200194505050505060405180910390a15b50600101614803565b50614c72565b60005b816020015151811015614c7057600082600001516001600160a01b031663a9059cbb61c35085604001518581518110614a5357fe5b602002602001015186602001518681518110614a6b57fe5b60200260200101516040518463ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600088803b158015614ac257600080fd5b5087f1158015614ad6573d6000803e3d6000fd5b50505050506040513d6020811015614aed57600080fd5b505190508015614bb1577fd468d4fa5e8fb4adc119b29a983fd0785e04af5cb8b7a3a69a47270c54b6901a836000015184604001518481518110614b2d57fe5b602002602001015185602001518581518110614b4557fe5b6020026020010151866060015160405180856001600160a01b03166001600160a01b03168152602001846001600160a01b03166001600160a01b031681526020018381526020018263ffffffff1663ffffffff16815260200194505050505060405180910390a1614c67565b7f203f9f67a785f4f81be4d48b109aa0c498d1bc8097ecc2627063f480cc5fe73e836000015184604001518481518110614be757fe5b602002602001015185602001518581518110614bff57fe5b6020026020010151866060015160405180856001600160a01b03166001600160a01b03168152602001846001600160a01b03166001600160a01b031681526020018381526020018263ffffffff1663ffffffff16815260200194505050505060405180910390a15b50600101614a1e565b505b50565b60008183614cc45760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156144bb5781810151838201526020016144a3565b50828481614cce57fe5b06949350505050565b614cdf6157f8565b6000614ce96157f8565b614cf16158d7565b614cfd613f0f86614f3b565b90506000805b614d0c83614faa565b1561401b5780614d2957614d22613f3984614fcb565b8452614f33565b8060011415614d5157614d3e613f5a84614fcb565b6001600160a01b03166020850152614f33565b8060021415614de0576060614d6861469885614fcb565b90508051604051908082528060200260200182016040528015614d95578160200160208202803683370190505b50604086015260005b8151811015614dd957614db68282815181106146eb57fe5b86604001518281518110614dc657fe5b6020908102919091010152600101614d9e565b5050614f33565b8060031415614e75576060614df761469885614fcb565b90508051604051908082528060200260200182016040528015614e24578160200160208202803683370190505b50606086015260005b8151811015614dd957614e4582828151811061478757fe5b86606001518281518110614e5557fe5b6001600160a01b0390921660209283029190910190910152600101614e2d565b8060041415614f0a576060614e8c61469885614fcb565b90508051604051908082528060200260200182016040528015614eb9578160200160208202803683370190505b50608086015260005b8151811015614dd957614eda82828151811061478757fe5b86608001518281518110614eea57fe5b6001600160a01b0390921660209283029190910190910152600101614ec2565b806005141561400e57614f1f613f3984614fcb565b67ffffffffffffffff1660a0850152600191505b600101614d03565b614f436158f7565b506040805180820190915281518152602082810190820152919050565b614f686158d7565b614f71826155d6565b614f7a57600080fd5b6000614f898360200151615606565b60208085015160408051808201909152868152920190820152915050919050565b6000614fb46158f7565b505080518051602091820151919092015191011190565b614fd36158f7565b614fdc82614faa565b614fe557600080fd5b60208201516000614ff582615669565b80830160209586015260408051808201909152908152938401919091525090919050565b80516000901580159061502e57508151602110155b61503757600080fd5b60006150468360200151615606565b905080836000015110156150a1576040805162461bcd60e51b815260206004820152601a60248201527f6c656e677468206973206c657373207468616e206f6666736574000000000000604482015290519081900360640190fd5b8251602080850151830180519284900392918310156150c757826020036101000a820491505b50949350505050565b80516000906015146150e157600080fd5b61228682615019565b600080805260066020527f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f8541580156151235750600554155b156151655760008052600660205269021e19e0c9bab24000007f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f85561a8c06005555b6020808301516001600160a01b03166000908152600690915260409020548015806151935750808360400151105b156151a25760009150506113b2565b6020808401516001600160a01b0390811660009081526007835260408082206060880151909316825291909252908190209084015181546151e89163ffffffff61365f16565b8155600554420160018201819055606085015160208087015160408089015181519081529283019490945283516001600160a01b039384169493909116927f3fb83143cd331170da18fb1e8564d97e8ec39264b6ecb1ba248ea7596ab07258928290030190a35060019392505050565b604080516020808252818301909252606091829190602082018180368337505050602081018490529050600067ffffffffffffffff19841661529c575060186152c0565b6fffffffffffffffffffffffffffffffff1984166152bc575060106152c0565b5060005b60208110156152f6578181815181106152d557fe5b01602001516001600160f81b031916156152ee576152f6565b6001016152c0565b60008160200390506060816040519080825280601f01601f19166020018201604052801561532b576020820181803683370190505b5080830196909652508452509192915050565b6060815160011480156153705750607f60f81b8260008151811061535e57fe5b01602001516001600160f81b03191611155b1561537c5750806113b2565b61228661538e8351608060ff1661540d565b835b6060806040519050835180825260208201818101602087015b818310156153c15780518352602092830192016153a9565b50855184518101855292509050808201602086015b818310156153ee5780518352602092830192016153d6565b508651929092011591909101601f01601f191660405250905092915050565b606068010000000000000000831061545d576040805162461bcd60e51b815260206004820152600e60248201526d696e70757420746f6f206c6f6e6760901b604482015290519081900360640190fd5b604080516001808252818301909252606091602082018180368337019050509050603784116154b75782840160f81b8160008151811061549957fe5b60200101906001600160f81b031916908160001a9053509050612286565b60606154c285615258565b90508381510160370160f81b826000815181106154db57fe5b60200101906001600160f81b031916908160001a9053506154fc8282615390565b95945050505050565b6060615510826155d6565b61551957600080fd5b60006155248361579c565b905060608160405190808252806020026020018201604052801561556257816020015b61554f6158f7565b8152602001906001900390816155475790505b50905060006155748560200151615606565b60208601510190506000805b848110156155cb5761559183615669565b91506040518060400160405280838152602001848152508482815181106155b457fe5b602090810291909101015291810191600101615580565b509195945050505050565b80516000906155e7575060006113b2565b6020820151805160001a9060c0821015613cfc576000925050506113b2565b8051600090811a60808110156156205760009150506113b2565b60b881108061563b575060c0811080159061563b575060f881105b1561564a5760019150506113b2565b60c081101561565e5760b5190190506113b2565b60f5190190506113b2565b80516000908190811a60808110156156845760019150615795565b60b881101561569957607e1981019150615795565b60c081101561571357600060b78203600186019550806020036101000a86510491506001810182019350508083101561570d576040805162461bcd60e51b81526020600482015260116024820152706164646974696f6e206f766572666c6f7760781b604482015290519081900360640190fd5b50615795565b60f88110156157285760be1981019150615795565b600060f78203600186019550806020036101000a865104915060018101820193505080831015615793576040805162461bcd60e51b81526020600482015260116024820152706164646974696f6e206f766572666c6f7760781b604482015290519081900360640190fd5b505b5092915050565b80516000906157ad575060006113b2565b600080905060006157c18460200151615606565b602085015185519181019250015b808210156157ef576157e082615669565b820191508260010192506157cf565b50909392505050565b6040518060c001604052806000801916815260200160006001600160a01b03168152602001606081526020016060815260200160608152602001600067ffffffffffffffff1681525090565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a081019190915290565b60408051608081018252600080825260208201819052918101829052606081019190915290565b604051806080016040528060006001600160a01b031681526020016060815260200160608152602001600063ffffffff1681525090565b60405180604001604052806158ea6158f7565b8152602001600081525090565b60405180604001604052806000815260200160008152509056fe6f6e6c79207374616b696e672073797374656d20636f6e74726163742063616e2063616c6c20746869732066756e6374696f6e746865206d6573736167652073656e646572206d75737420626520696e63656e746976697a6520636f6e7472616374626e62206c61726765207472616e73666572206c696d697420746f6f20736d616c6c466f72206d696e69546f6b656e2c20746865207472616e7366657220616d6f756e74206d757374206e6f74206265206c657373207468616e2031756e7265636f676e697a6564207472616e736665724f75742073796e207061636b61676565787069726554696d65206d7573742062652074776f206d696e75746573206c61746572616d6f756e7420697320746f6f206c617267652c20657863656564206d6178696d756d206265703220746f6b656e20616d6f756e7474686520636f6e747261637420686173206e6f74206265656e20626f756e6420746f20616e79206265703220746f6b656e726563656976656420424e4220616d6f756e742073686f756c64206265206e6f206c657373207468616e207468652073756d206f66207472616e736665724f757420424e4220616d6f756e7420616e64206d696e696d756d2072656c6179466565746865206d73672073656e646572206d75737420626520746f6b656e207265636f76657220706f7274616c616d6f756e7420697320746f6f206c617267652c2075696e74323536206f766572666c6f774c656e677468206f6620726563697069656e74416464727320646f65736e277420657175616c20746f206c656e677468206f6620726566756e644164647273696e76616c6964207472616e7366657220616d6f756e743a20707265636973696f6e206c6f737320696e20616d6f756e7420636f6e76657273696f6e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77726563656976656420424e4220616d6f756e742073686f756c64206265206e6f206c657373207468616e20746865206d696e696d756d2072656c6179466565746865206d6573736167652073656e646572206d75737420626520676f7665726e616e636520636f6e7472616374756e7265636f676e697a6564207472616e736665724f75742061636b207061636b6167654c656e677468206f6620726563697069656e74416464727320646f65736e277420657175616c20746f206c656e677468206f6620616d6f756e7473746865206d6573736167652073656e646572206d7573742062652063726f737320636861696e20636f6e7472616374746865206d73672073656e646572206d75737420626520746f6b656e4d616e6167657274686520636f6e7472616374206e6f7420696e69742079657400000000000000726563656976656420424e4220616d6f756e742073686f756c64206265206e6f206c657373207468616e207468652073756d206f66207472616e7366657220424e4220616d6f756e7420616e642072656c6179466565696e76616c696420726563656976656420424e4220616d6f756e743a20707265636973696f6e206c6f737320696e20616d6f756e7420636f6e76657273696f6ea164736f6c6343000604000a", }, { ContractAddr: common.HexToAddress(GovHubContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/cfc0bd1127186a917ddc38fd38d22903034d3f0b", - Code: "608060405234801561001057600080fd5b50600436106102115760003560e01c80637e434d5411610125578063aad56063116100ad578063dc927faf1161007c578063dc927faf14610602578063df8079e91461060a578063f9a2bbc714610612578063fc3e59081461061a578063fd6a68791461062257610211565b8063aad5606314610572578063ab51bb961461057a578063c81b166214610582578063c8509d811461058a57610211565b80639ab1a373116100f45780639ab1a373146105365780639dc092621461053e578063a1a11bf514610546578063a78abc161461054e578063aa82dce11461056a57610211565b80637e434d54146103e5578063831d65d1146103ed57806388e4194e1461046757806396713da91461052e57610211565b8063493279b1116101a85780636e47b482116101775780636e47b482146103bd57806370fd5bad146103c5578063718a8aa8146103cd57806375d47a0a146103d55780637942fd05146103dd57610211565b8063493279b1146103865780634bf6c882146103a557806351b4dce3146103ad57806351e80672146103b557610211565b80633a21baae116101e45780633a21baae146103505780633dffc3871461035857806343756e5c146103765780634900c4ea1461037e57610211565b80630bee7a67146102165780630e2374a5146102375780631182b8751461025b5780632808702814610348575b600080fd5b61021e61062a565b6040805163ffffffff9092168252519081900360200190f35b61023f61062f565b604080516001600160a01b039092168252519081900360200190f35b6102d36004803603604081101561027157600080fd5b60ff8235169190810190604081016020820135600160201b81111561029557600080fd5b8201836020820111156102a757600080fd5b803590602001918460018302840111600160201b831117156102c857600080fd5b509092509050610635565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561030d5781810151838201526020016102f5565b50505050905090810190601f16801561033a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61023f6106e4565b61021e6106ea565b6103606106ef565b6040805160ff9092168252519081900360200190f35b61023f6106f4565b6103606106fa565b61038e6106ff565b6040805161ffff9092168252519081900360200190f35b610360610705565b61023f61070a565b61023f610710565b61023f610716565b61036061071c565b610360610721565b61023f610726565b61036061072c565b61023f610731565b6104656004803603604081101561040357600080fd5b60ff8235169190810190604081016020820135600160201b81111561042757600080fd5b82018360208201111561043957600080fd5b803590602001918460018302840111600160201b8311171561045a57600080fd5b509092509050610737565b005b6104656004803603606081101561047d57600080fd5b810190602081018135600160201b81111561049757600080fd5b8201836020820111156104a957600080fd5b803590602001918460018302840111600160201b831117156104ca57600080fd5b919390929091602081019035600160201b8111156104e757600080fd5b8201836020820111156104f957600080fd5b803590602001918460018302840111600160201b8311171561051a57600080fd5b9193509150356001600160a01b03166107c9565b6103606108b4565b61021e6108b9565b61023f6108be565b61023f6108c4565b6105566108ca565b604080519115158252519081900360200190f35b61023f6108d3565b61023f6108d9565b61021e6106fa565b61023f6108df565b610465600480360360408110156105a057600080fd5b60ff8235169190810190604081016020820135600160201b8111156105c457600080fd5b8201836020820111156105d657600080fd5b803590602001918460018302840111600160201b831117156105f757600080fd5b5090925090506108e5565b61023f61095c565b61023f610962565b61023f610968565b61036061096e565b61023f610973565b606481565b61200181565b606061063f6115e1565b600061068085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061097992505050565b915091508061069c576106936064610a3f565b925050506106dd565b60006106a783610aa9565b905063ffffffff81166106ce57505060408051600081526020810190915291506106dd9050565b6106d781610a3f565b93505050505b9392505050565b61200581565b606681565b600181565b61100181565b600081565b6102ca81565b600881565b61200681565b61200081565b61100581565b600281565b601081565b61100881565b600b81565b61200381565b33612000146107775760405162461bcd60e51b815260040180806020018281038252602f815260200180611646602f913960400191505060405180910390fd5b6040805162461bcd60e51b815260206004820152601e60248201527f7265636569766520756e65787065637465642061636b207061636b6167650000604482015290519081900360640190fd5b505050565b33612006146108095760405162461bcd60e51b81526004018080602001828103825260318152602001806116756031913960400191505060405180910390fd5b6108116115e1565b604051806060016040528087878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250604080516020601f8801819004810282018101909252868152918101919087908790819084018382808284376000920191909152505050908252506001600160a01b03841660209091015290506108ab81610aa9565b50505050505050565b600981565b606581565b61100781565b61100681565b60005460ff1681565b61200281565b61300081565b61100281565b33612000146109255760405162461bcd60e51b815260040180806020018281038252602f815260200180611646602f913960400191505060405180910390fd5b60405162461bcd60e51b81526004018080602001828103825260238152602001806116a66023913960400191505060405180910390fd5b61100381565b61200481565b61100081565b600381565b61100481565b6109816115e1565b600061098b6115e1565b61099361160b565b6109a461099f86610e4a565b610e6f565b90506000805b6109b383610eb9565b15610a3257806109d5576109ce6109c984610eda565b610f28565b8452610a2a565b80600114156109f4576109ea6109c984610eda565b6020850152610a2a565b8060021415610a2557610a0e610a0984610eda565b610fa1565b6001600160a01b0316604085015260019150610a2a565b610a32565b6001016109aa565b5091935090915050915091565b604080516001808252818301909252606091829190816020015b6060815260200190600190039081610a59579050509050610a7f8363ffffffff16610fc1565b81600081518110610a8c57fe5b6020026020010181905250610aa081610fd4565b9150505b919050565b6000610ab8826040015161105e565b610b2457604080516020808252601c908201527f74686520746172676574206973206e6f74206120636f6e7472616374000000008183015290517f70e72399380dcfb0338abc03dc8d47f9f470ada8e769c9a78d644ea97385ecb29181900360600190a1506065610aa4565b81604001516001600160a01b031663ac431751836000015184602001516040518363ffffffff1660e01b8152600401808060200180602001838103835285818151815260200191508051906020019080838360005b83811015610b91578181015183820152602001610b79565b50505050905090810190601f168015610bbe5780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015610bf1578181015183820152602001610bd9565b50505050905090810190601f168015610c1e5780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b158015610c3f57600080fd5b505af1925050508015610c50575060015b610e42576040516000815260443d1015610c6c57506000610d09565b60046000803e60005160e01c6308c379a08114610c8d576000915050610d09565b60043d036004833e81513d602482011167ffffffffffffffff82111715610cb957600092505050610d09565b808301805167ffffffffffffffff811115610cdb576000945050505050610d09565b8060208301013d8601811115610cf957600095505050505050610d09565b601f01601f191660405250925050505b80610d145750610db7565b7f70e72399380dcfb0338abc03dc8d47f9f470ada8e769c9a78d644ea97385ecb2816040518080602001828103825283818151815260200191508051906020019080838360005b83811015610d73578181015183820152602001610d5b565b50505050905090810190601f168015610da05780820380516001836020036101000a031916815260200191505b509250505060405180910390a16066915050610aa4565b3d808015610de1576040519150601f19603f3d011682016040523d82523d6000602084013e610de6565b606091505b5060408051602080825283518183015283517f1279f84165b4fd69c35e1f338ff107231b036c655cd1688851e011ce617c4e8d938593928392918301919085019080838360008315610d73578181015183820152602001610d5b565b506000919050565b610e5261162b565b506040805180820190915281518152602082810190820152919050565b610e7761160b565b610e8082611064565b610e8957600080fd5b6000610e98836020015161109e565b60208085015160408051808201909152868152920190820152915050919050565b6000610ec361162b565b505080518051602091820151919092015191011190565b610ee261162b565b610eeb82610eb9565b610ef457600080fd5b60208201516000610f0482611101565b80830160209586015260408051808201909152908152938401919091525090919050565b8051606090610f3657600080fd5b6000610f45836020015161109e565b83516040805191839003808352601f19601f8201168301602001909152919250606090828015610f7c576020820181803683370190505b5090506000816020019050610f98848760200151018285611234565b50949350505050565b8051600090601514610fb257600080fd5b610fbb8261127f565b92915050565b6060610fbb610fcf83611334565b61141a565b6060815160001415610ff55750604080516000815260208101909152610aa4565b60608260008151811061100457fe5b602002602001015190506000600190505b83518110156110455761103b8285838151811061102e57fe5b602002602001015161146c565b9150600101611015565b50610aa0611058825160c060ff166114e9565b8261146c565b3b151590565b805160009061107557506000610aa4565b6020820151805160001a9060c082101561109457600092505050610aa4565b5060019392505050565b8051600090811a60808110156110b8576000915050610aa4565b60b88110806110d3575060c081108015906110d3575060f881105b156110e2576001915050610aa4565b60c08110156110f65760b519019050610aa4565b60f519019050610aa4565b80516000908190811a608081101561111c576001915061122d565b60b881101561113157607e198101915061122d565b60c08110156111ab57600060b78203600186019550806020036101000a8651049150600181018201935050808310156111a5576040805162461bcd60e51b81526020600482015260116024820152706164646974696f6e206f766572666c6f7760781b604482015290519081900360640190fd5b5061122d565b60f88110156111c05760be198101915061122d565b600060f78203600186019550806020036101000a86510491506001810182019350508083101561122b576040805162461bcd60e51b81526020600482015260116024820152706164646974696f6e206f766572666c6f7760781b604482015290519081900360640190fd5b505b5092915050565b8061123e576107c4565b5b6020811061125e578251825260209283019290910190601f190161123f565b915181516020939093036101000a6000190180199091169216919091179052565b80516000901580159061129457508151602110155b61129d57600080fd5b60006112ac836020015161109e565b90508083600001511015611307576040805162461bcd60e51b815260206004820152601a60248201527f6c656e677468206973206c657373207468616e206f6666736574000000000000604482015290519081900360640190fd5b825160208085015183018051928490039291831015610f9857506020919091036101000a90049392505050565b604080516020808252818301909252606091829190602082018180368337505050602081018490529050600067ffffffffffffffff1984166113785750601861139c565b6fffffffffffffffffffffffffffffffff1984166113985750601061139c565b5060005b60208110156113d2578181815181106113b157fe5b01602001516001600160f81b031916156113ca576113d2565b60010161139c565b60008160200390506060816040519080825280601f01601f191660200182016040528015611407576020820181803683370190505b5080830196909652508452509192915050565b60608151600114801561144c5750607f60f81b8260008151811061143a57fe5b01602001516001600160f81b03191611155b15611458575080610aa4565b610fbb61146a8351608060ff166114e9565b835b6060806040519050835180825260208201818101602087015b8183101561149d578051835260209283019201611485565b50855184518101855292509050808201602086015b818310156114ca5780518352602092830192016114b2565b508651929092011591909101601f01601f191660405250905092915050565b6060680100000000000000008310611539576040805162461bcd60e51b815260206004820152600e60248201526d696e70757420746f6f206c6f6e6760901b604482015290519081900360640190fd5b604080516001808252818301909252606091602082018180368337019050509050603784116115935782840160f81b8160008151811061157557fe5b60200101906001600160f81b031916908160001a9053509050610fbb565b606061159e85611334565b90508381510160370160f81b826000815181106115b757fe5b60200101906001600160f81b031916908160001a9053506115d8828261146c565b95945050505050565b6040518060600160405280606081526020016060815260200160006001600160a01b031681525090565b604051806040016040528061161e61162b565b8152602001600081525090565b60405180604001604052806000815260200160008152509056fe746865206d6573736167652073656e646572206d7573742062652063726f737320636861696e20636f6e7472616374746865206d73672073656e646572206d75737420626520676f7665726e6f722074696d656c6f636b20636f6e74726163747265636569766520756e6578706563746564206661696c2061636b207061636b616765a164736f6c6343000604000a", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/1abdfbf3aeb86909c2220b79bf92b87ddff64b54", + Code: "608060405234801561001057600080fd5b506004361061021c5760003560e01c8063831d65d111610125578063ab51bb96116100ad578063df8079e91161007c578063df8079e914610615578063f1fad1041461061d578063f9a2bbc714610625578063fc3e59081461062d578063fd6a6879146106355761021c565b8063ab51bb9614610585578063c81b16621461058d578063c8509d8114610595578063dc927faf1461060d5761021c565b80639dc09262116100f45780639dc0926214610549578063a1a11bf514610551578063a78abc1614610559578063aa82dce114610575578063aad560631461057d5761021c565b8063831d65d1146103f857806388e4194e1461047257806396713da9146105395780639ab1a373146105415761021c565b80634bf6c882116101a857806370fd5bad1161017757806370fd5bad146103d0578063718a8aa8146103d857806375d47a0a146103e05780637942fd05146103e85780637e434d54146103f05761021c565b80634bf6c882146103b057806351b4dce3146103b857806351e80672146103c05780636e47b482146103c85761021c565b80633a21baae116101ef5780633a21baae1461035b5780633dffc3871461036357806343756e5c146103815780634900c4ea14610389578063493279b1146103915761021c565b80630bee7a67146102215780630e2374a5146102425780631182b875146102665780632808702814610353575b600080fd5b61022961063d565b6040805163ffffffff9092168252519081900360200190f35b61024a610642565b604080516001600160a01b039092168252519081900360200190f35b6102de6004803603604081101561027c57600080fd5b60ff8235169190810190604081016020820135600160201b8111156102a057600080fd5b8201836020820111156102b257600080fd5b803590602001918460018302840111600160201b831117156102d357600080fd5b509092509050610648565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610318578181015183820152602001610300565b50505050905090810190601f1680156103455780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61024a6106f7565b6102296106fd565b61036b610702565b6040805160ff9092168252519081900360200190f35b61024a610707565b61036b61070d565b610399610712565b6040805161ffff9092168252519081900360200190f35b61036b610718565b61024a61071d565b61024a610723565b61024a610729565b61036b61072f565b61036b610734565b61024a610739565b61036b61073f565b61024a610744565b6104706004803603604081101561040e57600080fd5b60ff8235169190810190604081016020820135600160201b81111561043257600080fd5b82018360208201111561044457600080fd5b803590602001918460018302840111600160201b8311171561046557600080fd5b50909250905061074a565b005b6104706004803603606081101561048857600080fd5b810190602081018135600160201b8111156104a257600080fd5b8201836020820111156104b457600080fd5b803590602001918460018302840111600160201b831117156104d557600080fd5b919390929091602081019035600160201b8111156104f257600080fd5b82018360208201111561050457600080fd5b803590602001918460018302840111600160201b8311171561052557600080fd5b9193509150356001600160a01b03166107dc565b61036b6108c7565b6102296108cc565b61024a6108d1565b61024a6108d7565b6105616108dd565b604080519115158252519081900360200190f35b61024a6108e6565b61024a6108ec565b61022961070d565b61024a6108f2565b610470600480360360408110156105ab57600080fd5b60ff8235169190810190604081016020820135600160201b8111156105cf57600080fd5b8201836020820111156105e157600080fd5b803590602001918460018302840111600160201b8311171561060257600080fd5b5090925090506108f8565b61024a61096f565b61024a610975565b61036b61097b565b61024a610980565b61036b610986565b61024a61098b565b606481565b61200181565b60606106526115f9565b600061069385858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061099192505050565b91509150806106af576106a66064610a57565b925050506106f0565b60006106ba83610ac1565b905063ffffffff81166106e157505060408051600081526020810190915291506106f09050565b6106ea81610a57565b93505050505b9392505050565b61200581565b606681565b600181565b61100181565b600081565b6102ca81565b600881565b61200681565b61200081565b61100581565b600281565b601081565b61100881565b600b81565b61200381565b336120001461078a5760405162461bcd60e51b815260040180806020018281038252602f81526020018061165e602f913960400191505060405180910390fd5b6040805162461bcd60e51b815260206004820152601e60248201527f7265636569766520756e65787065637465642061636b207061636b6167650000604482015290519081900360640190fd5b505050565b336120061461081c5760405162461bcd60e51b815260040180806020018281038252603181526020018061168d6031913960400191505060405180910390fd5b6108246115f9565b604051806060016040528087878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250604080516020601f8801819004810282018101909252868152918101919087908790819084018382808284376000920191909152505050908252506001600160a01b03841660209091015290506108be81610ac1565b50505050505050565b600981565b606581565b61100781565b61100681565b60005460ff1681565b61200281565b61300081565b61100281565b33612000146109385760405162461bcd60e51b815260040180806020018281038252602f81526020018061165e602f913960400191505060405180910390fd5b60405162461bcd60e51b81526004018080602001828103825260238152602001806116be6023913960400191505060405180910390fd5b61100381565b61200481565b601181565b61100081565b600381565b61100481565b6109996115f9565b60006109a36115f9565b6109ab611623565b6109bc6109b786610e62565b610e87565b90506000805b6109cb83610ed1565b15610a4a57806109ed576109e66109e184610ef2565b610f40565b8452610a42565b8060011415610a0c57610a026109e184610ef2565b6020850152610a42565b8060021415610a3d57610a26610a2184610ef2565b610fb9565b6001600160a01b0316604085015260019150610a42565b610a4a565b6001016109c2565b5091935090915050915091565b604080516001808252818301909252606091829190816020015b6060815260200190600190039081610a71579050509050610a978363ffffffff16610fd9565b81600081518110610aa457fe5b6020026020010181905250610ab881610fec565b9150505b919050565b6000610ad08260400151611076565b610b3c57604080516020808252601c908201527f74686520746172676574206973206e6f74206120636f6e7472616374000000008183015290517f70e72399380dcfb0338abc03dc8d47f9f470ada8e769c9a78d644ea97385ecb29181900360600190a1506065610abc565b81604001516001600160a01b031663ac431751836000015184602001516040518363ffffffff1660e01b8152600401808060200180602001838103835285818151815260200191508051906020019080838360005b83811015610ba9578181015183820152602001610b91565b50505050905090810190601f168015610bd65780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015610c09578181015183820152602001610bf1565b50505050905090810190601f168015610c365780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b158015610c5757600080fd5b505af1925050508015610c68575060015b610e5a576040516000815260443d1015610c8457506000610d21565b60046000803e60005160e01c6308c379a08114610ca5576000915050610d21565b60043d036004833e81513d602482011167ffffffffffffffff82111715610cd157600092505050610d21565b808301805167ffffffffffffffff811115610cf3576000945050505050610d21565b8060208301013d8601811115610d1157600095505050505050610d21565b601f01601f191660405250925050505b80610d2c5750610dcf565b7f70e72399380dcfb0338abc03dc8d47f9f470ada8e769c9a78d644ea97385ecb2816040518080602001828103825283818151815260200191508051906020019080838360005b83811015610d8b578181015183820152602001610d73565b50505050905090810190601f168015610db85780820380516001836020036101000a031916815260200191505b509250505060405180910390a16066915050610abc565b3d808015610df9576040519150601f19603f3d011682016040523d82523d6000602084013e610dfe565b606091505b5060408051602080825283518183015283517f1279f84165b4fd69c35e1f338ff107231b036c655cd1688851e011ce617c4e8d938593928392918301919085019080838360008315610d8b578181015183820152602001610d73565b506000919050565b610e6a611643565b506040805180820190915281518152602082810190820152919050565b610e8f611623565b610e988261107c565b610ea157600080fd5b6000610eb083602001516110b6565b60208085015160408051808201909152868152920190820152915050919050565b6000610edb611643565b505080518051602091820151919092015191011190565b610efa611643565b610f0382610ed1565b610f0c57600080fd5b60208201516000610f1c82611119565b80830160209586015260408051808201909152908152938401919091525090919050565b8051606090610f4e57600080fd5b6000610f5d83602001516110b6565b83516040805191839003808352601f19601f8201168301602001909152919250606090828015610f94576020820181803683370190505b5090506000816020019050610fb084876020015101828561124c565b50949350505050565b8051600090601514610fca57600080fd5b610fd382611297565b92915050565b6060610fd3610fe78361134c565b611432565b606081516000141561100d5750604080516000815260208101909152610abc565b60608260008151811061101c57fe5b602002602001015190506000600190505b835181101561105d576110538285838151811061104657fe5b6020026020010151611484565b915060010161102d565b50610ab8611070825160c060ff16611501565b82611484565b3b151590565b805160009061108d57506000610abc565b6020820151805160001a9060c08210156110ac57600092505050610abc565b5060019392505050565b8051600090811a60808110156110d0576000915050610abc565b60b88110806110eb575060c081108015906110eb575060f881105b156110fa576001915050610abc565b60c081101561110e5760b519019050610abc565b60f519019050610abc565b80516000908190811a60808110156111345760019150611245565b60b881101561114957607e1981019150611245565b60c08110156111c357600060b78203600186019550806020036101000a8651049150600181018201935050808310156111bd576040805162461bcd60e51b81526020600482015260116024820152706164646974696f6e206f766572666c6f7760781b604482015290519081900360640190fd5b50611245565b60f88110156111d85760be1981019150611245565b600060f78203600186019550806020036101000a865104915060018101820193505080831015611243576040805162461bcd60e51b81526020600482015260116024820152706164646974696f6e206f766572666c6f7760781b604482015290519081900360640190fd5b505b5092915050565b80611256576107d7565b5b60208110611276578251825260209283019290910190601f1901611257565b915181516020939093036101000a6000190180199091169216919091179052565b8051600090158015906112ac57508151602110155b6112b557600080fd5b60006112c483602001516110b6565b9050808360000151101561131f576040805162461bcd60e51b815260206004820152601a60248201527f6c656e677468206973206c657373207468616e206f6666736574000000000000604482015290519081900360640190fd5b825160208085015183018051928490039291831015610fb057506020919091036101000a90049392505050565b604080516020808252818301909252606091829190602082018180368337505050602081018490529050600067ffffffffffffffff198416611390575060186113b4565b6fffffffffffffffffffffffffffffffff1984166113b0575060106113b4565b5060005b60208110156113ea578181815181106113c957fe5b01602001516001600160f81b031916156113e2576113ea565b6001016113b4565b60008160200390506060816040519080825280601f01601f19166020018201604052801561141f576020820181803683370190505b5080830196909652508452509192915050565b6060815160011480156114645750607f60f81b8260008151811061145257fe5b01602001516001600160f81b03191611155b15611470575080610abc565b610fd36114828351608060ff16611501565b835b6060806040519050835180825260208201818101602087015b818310156114b557805183526020928301920161149d565b50855184518101855292509050808201602086015b818310156114e25780518352602092830192016114ca565b508651929092011591909101601f01601f191660405250905092915050565b6060680100000000000000008310611551576040805162461bcd60e51b815260206004820152600e60248201526d696e70757420746f6f206c6f6e6760901b604482015290519081900360640190fd5b604080516001808252818301909252606091602082018180368337019050509050603784116115ab5782840160f81b8160008151811061158d57fe5b60200101906001600160f81b031916908160001a9053509050610fd3565b60606115b68561134c565b90508381510160370160f81b826000815181106115cf57fe5b60200101906001600160f81b031916908160001a9053506115f08282611484565b95945050505050565b6040518060600160405280606081526020016060815260200160006001600160a01b031681525090565b6040518060400160405280611636611643565b8152602001600081525090565b60405180604001604052806000815260200160008152509056fe746865206d6573736167652073656e646572206d7573742062652063726f737320636861696e20636f6e7472616374746865206d73672073656e646572206d75737420626520676f7665726e6f722074696d656c6f636b20636f6e74726163747265636569766520756e6578706563746564206661696c2061636b207061636b616765a164736f6c6343000604000a", + }, + { + ContractAddr: common.HexToAddress(CrossChainContract), + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/1abdfbf3aeb86909c2220b79bf92b87ddff64b54", + Code: "608060405234801561001057600080fd5b50600436106103e65760003560e01c806374f079b81161020a578063c27cdcfb11610125578063df8079e9116100b8578063f1fad10411610087578063f1fad10414610bac578063f7a251d714610bb4578063f9a2bbc714610c2c578063fc3e590814610c34578063fd6a687914610c3c576103e6565b8063df8079e914610b74578063e1c7392a14610b7c578063e3b0480514610b84578063e6400bbe14610ba4576103e6565b8063d31f968d116100f4578063d31f968d14610b2d578063d76a867514610b5c578063dc40433114610b64578063dc927faf14610b6c576103e6565b8063c27cdcfb14610af5578063c780e9de14610b15578063c81b166214610b1d578063ccc108d714610b25576103e6565b80639dc092621161019d578063aad560631161016c578063aad5606314610a27578063ab51bb9614610a2f578063ac43175114610a37578063b0355f5b146107d6576103e6565b80639dc0926214610a07578063a1a11bf514610a0f578063a78abc1614610a17578063aa82dce114610a1f576103e6565b806384013b6a116101d957806384013b6a1461091c578063863fe4ab146109f75780638cc8f561146108e457806396713da9146109ff576103e6565b806374f079b8146108fc57806375d47a0a146109045780637942fd051461090c5780637e434d5414610914576103e6565b806343756e5c116103055780636a3cb34d116102985780636e47a51a116102675780636e47a51a146108bc5780636e47b482146108dc57806370fd5bad146108e4578063718a8aa8146108ec578063719482d5146108f4576103e6565b80636a3cb34d146108645780636bacff2c1461086c5780636c46aa68146108645780636de380bd146108b4576103e6565b806351e80672116102d457806351e806721461081e5780635692ddd3146108265780635f8321771461082e57806363e1394e1461085c576103e6565b806343756e5c146107fe578063493279b1146108065780634bf6c8821461080e57806351b4dce314610816576103e6565b8063299b533d1161037d5780633a648b151161034c5780633a648b15146106725780633bdc47a6146106ae5780633dffc387146107d6578063422f9050146107de576103e6565b8063299b533d146105f85780632af6f3991461062c5780632ff32aea14610649578063308325f41461066a576103e6565b80631d130935116103b95780631d130935146104685780631e275ae11461048457806322556cdc146105e857806328087028146105f0576103e6565b806305e68258146103eb5780630bee7a67146104095780630e2374a51461042a57806314b3023b1461044e575b600080fd5b6103f3610c44565b6040805160ff9092168252519081900360200190f35b610411610c49565b6040805163ffffffff9092168252519081900360200190f35b610432610c4e565b604080516001600160a01b039092168252519081900360200190f35b610456610c54565b60408051918252519081900360200190f35b610470610c5a565b604080519115158252519081900360200190f35b6105e6600480360361010081101561049b57600080fd5b81018160a081016080820135600160201b8111156104b857600080fd5b8201836020820111156104ca57600080fd5b803590602001918460018302840111600160201b831117156104eb57600080fd5b919390929091602081019035600160201b81111561050857600080fd5b82018360208201111561051a57600080fd5b803590602001918460018302840111600160201b8311171561053b57600080fd5b919390929091602081019035600160201b81111561055857600080fd5b82018360208201111561056a57600080fd5b803590602001918460018302840111600160201b8311171561058b57600080fd5b919390929091602081019035600160201b8111156105a857600080fd5b8201836020820111156105ba57600080fd5b803590602001918460018302840111600160201b831117156105db57600080fd5b509092509050610c63565b005b610456611347565b61043261134c565b6106156004803603602081101561060e57600080fd5b5035611352565b6040805161ffff9092168252519081900360200190f35b6104706004803603602081101561064257600080fd5b5035611368565b61065161137d565b60408051600792830b90920b8252519081900360200190f35b610456611386565b6106926004803603602081101561068857600080fd5b503560ff1661138c565b604080516001600160401b039092168252519081900360200190f35b610761600480360360608110156106c457600080fd5b60ff82351691602081013591810190606081016040820135600160201b8111156106ed57600080fd5b8201836020820111156106ff57600080fd5b803590602001918460018302840111600160201b8311171561072057600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506113a7945050505050565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561079b578181015183820152602001610783565b50505050905090810190601f1680156107c85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103f361141d565b610470600480360360208110156107f457600080fd5b503560ff16611422565b610432611437565b61061561143d565b6103f3611443565b610432611448565b61043261144e565b610456611454565b6105e66004803603604081101561084457600080fd5b506001600160a01b0381358116916020013516611484565b6104566116e4565b61061561170c565b6108896004803603602081101561088257600080fd5b5035611711565b6040805161ffff90941684526001600160801b03909216602084015282820152519081900360600190f35b610456611740565b610432600480360360208110156108d257600080fd5b503560ff16611767565b610432611782565b6103f361170c565b6103f3611788565b61061561141d565b61045661178d565b610432611793565b6103f3611799565b61043261179e565b6105e6600480360360a081101561093257600080fd5b810190602081018135600160201b81111561094c57600080fd5b82018360208201111561095e57600080fd5b803590602001918460018302840111600160201b8311171561097f57600080fd5b919390929091602081019035600160201b81111561099c57600080fd5b8201836020820111156109ae57600080fd5b803590602001918460018302840111600160201b831117156109cf57600080fd5b919350915080356001600160401b03908116916020810135909116906040013560ff166117a4565b610456612a5e565b6103f3612a66565b610432612a6b565b610432612a71565b610470612a77565b610432612a80565b610432612a86565b610411610c44565b6105e660048036036040811015610a4d57600080fd5b810190602081018135600160201b811115610a6757600080fd5b820183602082011115610a7957600080fd5b803590602001918460018302840111600160201b83111715610a9a57600080fd5b919390929091602081019035600160201b811115610ab757600080fd5b820183602082011115610ac957600080fd5b803590602001918460018302840111600160201b83111715610aea57600080fd5b509092509050612a8c565b61069260048036036020811015610b0b57600080fd5b503560ff16613550565b61045661356b565b61043261358f565b6105e6613595565b61047060048036036040811015610b4357600080fd5b5080356001600160a01b0316906020013560ff166137e9565b610761613809565b610456613828565b61043261382e565b610432613834565b6105e661383a565b61069260048036036020811015610b9a57600080fd5b503560ff16613bf1565b6105e6613c0c565b6103f3613e2b565b6105e660048036036060811015610bca57600080fd5b60ff8235169190810190604081016020820135600160201b811115610bee57600080fd5b820183602082011115610c0057600080fd5b803590602001918460018302840111600160201b83111715610c2157600080fd5b919350915035613e30565b610432613f73565b6103f3613f79565b610432613f7e565b600081565b606481565b61200181565b60015481565b600b5460ff1681565b60005460ff16610ca8576040805162461bcd60e51b81526020600482015260196024820152600080516020614a62833981519152604482015290519081900360640190fd5b604080516337d7f9c160e21b81526001600160401b038b35166004820181905291516110039163df5fe704916024808301926020929190829003018186803b158015610cf357600080fd5b505afa158015610d07573d6000803e3d6000fd5b505050506040513d6020811015610d1d57600080fd5b5051610d5a5760405162461bcd60e51b8152600401808060200182810382526023815260200180614a826023913960400191505060405180910390fd5b604080516337d7f9c160e21b815260208c8101356001600160401b03166004830181905292516110039263df5fe704926024808301939192829003018186803b158015610da657600080fd5b505afa158015610dba573d6000803e3d6000fd5b505050506040513d6020811015610dd057600080fd5b5051610e0d5760405162461bcd60e51b8152600401808060200182810382526023815260200180614a826023913960400191505060405180910390fd5b60608b013560ff81166000908152600560205260409020546001600160401b03909116906001600160a01b0316610e86576040805162461bcd60e51b815260206004820152601860248201527718da185b9b995b081a5cc81b9bdd081cdd5c1c1bdc9d195960421b604482015290519081900360640190fd5b600b5460ff1615610eca576040805162461bcd60e51b81526020600482015260096024820152681cdd5cdc195b99195960ba1b604482015290519081900360640190fd5b8888604051808383808284376040519201829003822094508f93508e9250819050838380828437808301925050509250505060405180910390201415610f46576040805162461bcd60e51b815260206004820152600c60248201526b1cd85b59481c185e5b1bd85960a21b604482015290519081900360640190fd5b60606001600160401b0360408e01358116908e83013516610f678282613f84565b80516020808301919091206000818152600e9092526040909120549194509060ff1615610fd0576040805162461bcd60e51b8152602060048201526012602482015271185b1c9958591e4818da185b1b195b99d95960721b604482015290519081900360640190fd5b6000908152600e60205260408120805460ff191660011790558f8160200201356001600160401b0316905060608f8f8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050905060608c8c8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052506040805163cba510a960e01b81526001600160401b038a16600482015290519596509094611003945063cba510a9935060248083019350602092829003018186803b1580156110c657600080fd5b505afa1580156110da573d6000803e3d6000fd5b505050506040513d60208110156110f057600080fd5b505160408051808201909152600381526269626360e81b602082015290915061111d908290898686613fcc565b611166576040805162461bcd60e51b81526020600482015260156024820152740696e76616c6964206d65726b6c652070726f6f663605c1b604482015290519081900360640190fd5b5050505060008f60016004811061117957fe5b60200201356001600160401b0316905060608d8d8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8f018190048102820181019092528d815293945060609392508d91508c908190840183828082843760009201829052506040805163cba510a960e01b81526001600160401b038a16600482015290519596509094611003945063cba510a9935060248083019350602092829003018186803b15801561124557600080fd5b505afa158015611259573d6000803e3d6000fd5b505050506040513d602081101561126f57600080fd5b505160408051808201909152600381526269626360e81b602082015290915061129c908290898686613fcc565b6112e5576040805162461bcd60e51b8152602060048201526015602482015274696e76616c6964206d65726b6c652070726f6f663160581b604482015290519081900360640190fd5b505050506112f16140c9565b604080516001600160401b038416815260ff83166020820152815133927f039eb91179ffd7d3b6e97f8ea106e748e827f910b872375dbc9c14a362319c3c928290030190a2505050505050505050505050505050565b603281565b61200581565b600d6020526000908152604090205461ffff1681565b600e6020526000908152604090205460ff1681565b60045460070b81565b60025481565b600a602052600090815260409020546001600160401b031681565b60606000825160210190506060816040519080825280601f01601f1916602001820160405280156113df576020820181803683370190505b506021810186905260018101879052828152905060418101600061140286614147565b50905061141181838851614151565b50909695505050505050565b600181565b60096020526000908152604090205460ff1681565b61100181565b6102ca81565b600881565b61200681565b61200081565b604080517710d05390d15317d514905394d1915497d41493d413d4d05360421b8152905190819003601801902081565b60005460ff166114c9576040805162461bcd60e51b81526020600482015260196024820152600080516020614a62833981519152604482015290519081900360640190fd5b6040805163569e4ed360e11b815233600482015290516000916110009163ad3c9da691602480820192602092909190829003018186803b15801561150c57600080fd5b505afa158015611520573d6000803e3d6000fd5b505050506040513d602081101561153657600080fd5b505160408051633d42651560e11b8152905191925060009161100091637a84ca2a916004808301926020929190829003018186803b15801561157757600080fd5b505afa15801561158b573d6000803e3d6000fd5b505050506040513d60208110156115a157600080fd5b50519050806115ae575060155b6000821180156115be5750808211155b6115fd576040805162461bcd60e51b815260206004820152600b60248201526a1b9bdd0818d8589a5b995d60aa1b604482015290519081900360640190fd5b604080516001600160a01b038087166020808401919091529086168284015282518083038401815260608301808552815191909201207710d05390d15317d514905394d1915497d41493d413d4d05360421b909152915190819003607801902060009061166a9083614192565b905080156116dc5760408051630911a2c160e11b81526001600160a01b03888116600483015287166024820152905161100491631223458291604480830192600092919082900301818387803b1580156116c357600080fd5b505af11580156116d7573d6000803e3d6000fd5b505050505b505050505050565b604080516f14d554d411539117d41493d413d4d05360821b8152905190819003601001902081565b600281565b600c602052600090815260409020805460019091015461ffff8216916201000090046001600160801b03169083565b604080516e149153d4115397d41493d413d4d053608a1b8152905190819003600f01902081565b6005602052600090815260409020546001600160a01b031681565b61100581565b601081565b60035481565b61100881565b600b81565b61200381565b60005460ff166117e9576040805162461bcd60e51b81526020600482015260196024820152600080516020614a62833981519152604482015290519081900360640190fd5b60408051630a83aaa960e31b815233600482015290516110069163541d5548916024808301926020929190829003018186803b15801561182857600080fd5b505afa15801561183c573d6000803e3d6000fd5b505050506040513d602081101561185257600080fd5b50516118a5576040805162461bcd60e51b815260206004820152601f60248201527f746865206d73672073656e646572206973206e6f7420612072656c6179657200604482015290519081900360640190fd5b60ff8116600090815260086020526040902054829082906001600160401b039081169083168114611915576040805162461bcd60e51b815260206004820152601560248201527439b2b8bab2b731b2903737ba1034b71037b93232b960591b604482015290519081900360640190fd5b60ff8216600090815260086020908152604091829020805467ffffffffffffffff1916600185016001600160401b039081169190911790915582516337d7f9c160e21b81529089166004820152915188926110039263df5fe70492602480840193829003018186803b15801561198a57600080fd5b505afa15801561199e573d6000803e3d6000fd5b505050506040513d60208110156119b457600080fd5b50516119f15760405162461bcd60e51b8152600401808060200182810382526023815260200180614a826023913960400191505060405180910390fd5b60ff851660009081526005602052604090205485906001600160a01b0316611a5b576040805162461bcd60e51b815260206004820152601860248201527718da185b9b995b081a5cc81b9bdd081cdd5c1c1bdc9d195960421b604482015290519081900360640190fd5b60ff86166000908152600a6020526040902054889087906001600160401b039081169083161015611ac4576040805162461bcd60e51b815260206004820152600e60248201526d3a37b79037b632103432b0b232b960911b604482015290519081900360640190fd5b60ff81166000908152600a60205260409020546001600160401b03838116911614611b165760ff81166000908152600a60205260409020805467ffffffffffffffff19166001600160401b0384161790555b600b5460ff1615611b5a576040805162461bcd60e51b81526020600482015260096024820152681cdd5cdc195b99195960ba1b604482015290519081900360640190fd5b60608e8e8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050905060608d8d8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509050611c9e6110036001600160a01b031663cba510a98e6040518263ffffffff1660e01b815260040180826001600160401b03166001600160401b0316815260200191505060206040518083038186803b158015611c4757600080fd5b505afa158015611c5b573d6000803e3d6000fd5b505050506040513d6020811015611c7157600080fd5b505160408051808201909152600381526269626360e81b6020820152611c978e8e613f84565b8585613fcc565b611ce6576040805162461bcd60e51b815260206004820152601460248201527334b73b30b634b21036b2b935b63290383937b7b360611b604482015290519081900360640190fd5b60408051631bb5062960e31b81526001600160401b038e16600482015290516000916110039163dda8314891602480820192602092909190829003018186803b158015611d3257600080fd5b505afa158015611d46573d6000803e3d6000fd5b505050506040513d6020811015611d5c57600080fd5b505190508b8b600080806060611d7189614477565b935093509350935083611e33578460ff16866001600160401b03167ff7b2e42d694eb1100184aae86d4245d9e46966100b1dc7e723275b98326854ac8b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015611deb578181015183820152602001611dd3565b50505050905090810190601f168015611e185780820380516001836020036101000a031916815260200191505b509250505060405180910390a3505050505050505050612a4e565b6040805160ff85811682529151918716916001600160401b038916917f36afdaf439a8f43fe72135135d804ae620b37a474f0943b5b85f6788312cad40919081900360200190a360ff83166123b85760ff85166000818152600560209081526040808320548151631182b87560e01b815260048101958652602481019283528651604482015286516001600160a01b03909216958695631182b875958d958a9593949093606490910192918601918190849084905b83811015611f00578181015183820152602001611ee8565b50505050905090810190601f168015611f2d5780820380516001836020036101000a031916815260200191505b509350505050600060405180830381600087803b158015611f4d57600080fd5b505af192505050801561203157506040513d6000823e601f3d908101601f191682016040526020811015611f8057600080fd5b8101908080516040519392919084600160201b821115611f9f57600080fd5b908301906020820185811115611fb457600080fd5b8251600160201b811182820188101715611fcd57600080fd5b82525081516020918201929091019080838360005b83811015611ffa578181015183820152602001611fe2565b50505050905090810190601f1680156120275780820380516001836020036101000a031916815260200191505b5060405250505060015b612343576040516000815260443d101561204d575060006120e8565b60046000803e60005160e01c6308c379a0811461206e5760009150506120e8565b60043d036004833e81513d60248201116001600160401b0382111715612099576000925050506120e8565b80830180516001600160401b038111156120ba5760009450505050506120e8565b8060208301013d86018111156120d8576000955050505050506120e8565b601f01601f191660405250925050505b806120f35750612205565b60ff871660009081526007602052604081205461212a916001600160401b0390911690899061212590600290886113a7565b614527565b60ff8716600090815260076020908152604080832080546001600160401b038082166001011667ffffffffffffffff19909116179055805182815284518184015284516001600160a01b038716947ff91a8f63e5b3e0e89e5f93e1915a7805f3c52d9a73b3c09769785c2c7bf87acf948794849390840192918601918190849084905b838110156121c55781810151838201526020016121ad565b50505050905090810190601f1680156121f25780820380516001836020036101000a031916815260200191505b509250505060405180910390a25061233e565b3d80801561222f576040519150601f19603f3d011682016040523d82523d6000602084013e612234565b606091505b5060ff8716600090815260076020526040812054612267916001600160401b0390911690899061212590600290886113a7565b60ff8716600090815260076020908152604080832080546001600160401b038082166001011667ffffffffffffffff19909116179055805182815284518184015284516001600160a01b038716947f63ac299d6332d1cc4e61b81e59bc00c0ac7c798addadf33840f1307cd2977351948794849390840192918601918190849084905b838110156123025781810151838201526020016122ea565b50505050905090810190601f16801561232f5780820380516001836020036101000a031916815260200191505b509250505060405180910390a2505b6123b2565b8051156123b05760ff871660009081526007602052604081205461237c916001600160401b0390911690899061212590600190866113a7565b60ff8716600090815260076020526040902080546001600160401b038082166001011667ffffffffffffffff199091161790555b505b50612986565b60ff83166001141561265c5760ff8516600081815260056020908152604080832054815163831d65d160e01b815260048101958652602481019283528651604482015286516001600160a01b0390921695869563831d65d1958d958a9593949093606490910192918601918190849084905b8381101561244257818101518382015260200161242a565b50505050905090810190601f16801561246f5780820380516001836020036101000a031916815260200191505b509350505050600060405180830381600087803b15801561248f57600080fd5b505af19250505080156124a0575060015b6123b2576040516000815260443d10156124bc57506000612557565b60046000803e60005160e01c6308c379a081146124dd576000915050612557565b60043d036004833e81513d60248201116001600160401b038211171561250857600092505050612557565b80830180516001600160401b03811115612529576000945050505050612557565b8060208301013d860181111561254757600095505050505050612557565b601f01601f191660405250925050505b8061256257506125c7565b60408051602080825283518183015283516001600160a01b038616937ff91a8f63e5b3e0e89e5f93e1915a7805f3c52d9a73b3c09769785c2c7bf87acf93869390928392830191850190808383600083156121c55781810151838201526020016121ad565b3d8080156125f1576040519150601f19603f3d011682016040523d82523d6000602084013e6125f6565b606091505b5060408051602080825283518183015283516001600160a01b038616937f63ac299d6332d1cc4e61b81e59bc00c0ac7c798addadf33840f1307cd297735193869390928392830191850190808383600083156123025781810151838201526020016122ea565b60ff8316600214156129865760ff8516600081815260056020908152604080832054815163c8509d8160e01b815260048101958652602481019283528651604482015286516001600160a01b0390921695869563c8509d81958d958a9593949093606490910192918601918190849084905b838110156126e65781810151838201526020016126ce565b50505050905090810190601f1680156127135780820380516001836020036101000a031916815260200191505b509350505050600060405180830381600087803b15801561273357600080fd5b505af1925050508015612744575060015b612984576040516000815260443d1015612760575060006127fb565b60046000803e60005160e01c6308c379a081146127815760009150506127fb565b60043d036004833e81513d60248201116001600160401b03821117156127ac576000925050506127fb565b80830180516001600160401b038111156127cd5760009450505050506127fb565b8060208301013d86018111156127eb576000955050505050506127fb565b601f01601f191660405250925050505b8061280657506128af565b816001600160a01b03167ff91a8f63e5b3e0e89e5f93e1915a7805f3c52d9a73b3c09769785c2c7bf87acf826040518080602001828103825283818151815260200191508051906020019080838360005b8381101561286f578181015183820152602001612857565b50505050905090810190601f16801561289c5780820380516001836020036101000a031916815260200191505b509250505060405180910390a250612984565b3d8080156128d9576040519150601f19603f3d011682016040523d82523d6000602084013e6128de565b606091505b50816001600160a01b03167f63ac299d6332d1cc4e61b81e59bc00c0ac7c798addadf33840f1307cd2977351826040518080602001828103825283818151815260200191508051906020019080838360005b83811015612948578181015183820152602001612930565b50505050905090810190601f1680156129755780820380516001836020036101000a031916815260200191505b509250505060405180910390a2505b505b60ff80861660009081526009602052604090205461100591636f93d2e6918a913391879116806129b8575060ff881615155b604080516001600160e01b031960e088901b1681526001600160a01b039586166004820152939094166024840152604483019190915215156064820152905160848083019260209291908290030181600087803b158015612a1857600080fd5b505af1158015612a2c573d6000803e3d6000fd5b505050506040513d6020811015612a4257600080fd5b50505050505050505050505b5050505050505050505050505050565b630102ca0081565b600981565b61100781565b61100681565b60005460ff1681565b61200281565b61300081565b3361100714612acc5760405162461bcd60e51b815260040180806020018281038252602e8152602001806149b8602e913960400191505060405180910390fd5b600b5460ff1615612b10576040805162461bcd60e51b81526020600482015260096024820152681cdd5cdc195b99195960ba1b604482015290519081900360640190fd5b612b7984848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080518082019091526012815271626174636853697a65466f724f7261636c6560701b602082015291506146c29050565b15612c1457604080516020601f8401819004810282018101909252828152600091612bbc918585808385018382808284376000920191909152506147a992505050565b90506127108111158015612bd15750600a8110155b612c0c5760405162461bcd60e51b8152600401808060200182810382526032815260200180614a306032913960400191505060405180910390fd5b6001556134be565b612c7d84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601281527118591913dc955c19185d1950da185b9b995b60721b602082015291506146c29050565b15612e0557606082828080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505082519293505060169091149050612d005760405162461bcd60e51b815260040180806020018281038252605a8152602001806148d1605a913960600191505060405180910390fd5b60018101516002820151601683015160ff82161590612d1e816147ae565b612d6f576040805162461bcd60e51b815260206004820152601960248201527f61646472657373206973206e6f74206120636f6e747261637400000000000000604482015290519081900360640190fd5b60ff8416600081815260056020908152604080832080546001600160a01b0319166001600160a01b038716908117909155808452600683528184208585528352818420805460ff199081166001179091556009909352818420805490931687151517909255519092917f7e3b6af43092577ee20e60eaa1d9b114a7031305c895ee7dd3ffe17196d2e1e091a350505050506134be565b612e7284848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080518082019091526016815275195b98589b1953dc911a5cd8589b1950da185b9b995b60521b602082015291506146c29050565b15612fa357606082828080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505082519293505060029091149050612ef55760405162461bcd60e51b815260040180806020018281038252604a8152602001806149e6604a913960600191505060405180910390fd5b600181810151600283015160ff80831660009081526005602052604090205492939192908316909114906001600160a01b03168015612f99576001600160a01b038116600090815260066020908152604080832060ff881680855290835292819020805460ff1916861515908117909155815190815290517fa3132e3f9819fbddc7f0ed6d38d7feef59aa95112090b7c592f5cb5bc4aa4adc929181900390910190a25b50505050506134be565b61300784848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600d81526c73757370656e6451756f72756d60981b602082015291506146c29050565b1561313c576002811461304b5760405162461bcd60e51b815260040180806020018281038252602d81526020018061495f602d913960400191505060405180910390fd5b600061308e600284848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506147a992505050565b905060008161ffff161180156130a8575060648161ffff16105b6130f2576040805162461bcd60e51b8152602060048201526016602482015275696e76616c69642073757370656e642071756f72756d60501b604482015290519081900360640190fd5b604080516f14d554d411539117d41493d413d4d05360821b815281519081900360100190206000908152600d60205220805461ffff90921661ffff199092169190911790556134be565b61319f84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600c81526b72656f70656e51756f72756d60a01b602082015291506146c29050565b156132d257600281146131e35760405162461bcd60e51b815260040180806020018281038252602c81526020018061498c602c913960400191505060405180910390fd5b6000613226600284848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506147a992505050565b905060008161ffff16118015613240575060648161ffff16105b613289576040805162461bcd60e51b8152602060048201526015602482015274696e76616c69642072656f70656e2071756f72756d60581b604482015290519081900360640190fd5b604080516e149153d4115397d41493d413d4d053608a1b8152815190819003600f0190206000908152600d60205220805461ffff90921661ffff199092169190911790556134be565b61333d84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601481527363616e63656c5472616e7366657251756f72756d60601b602082015291506146c29050565b1561348157600281146133815760405162461bcd60e51b815260040180806020018281038252603481526020018061492b6034913960400191505060405180910390fd5b60006133c4600284848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506147a992505050565b905060008161ffff161180156133de575060648161ffff16105b61342f576040805162461bcd60e51b815260206004820152601e60248201527f696e76616c69642063616e63656c207472616e736665722071756f72756d0000604482015290519081900360640190fd5b604080517710d05390d15317d514905394d1915497d41493d413d4d05360421b815281519081900360180190206000908152600d60205220805461ffff90921661ffff199092169190911790556134be565b6040805162461bcd60e51b815260206004820152600d60248201526c756e6b6e6f776e20706172616d60981b604482015290519081900360640190fd5b7f6cdb0ac70ab7f2e2d035cca5be60d89906f2dede7648ddbd7402189c1eeed17a848484846040518080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600083820152604051601f909101601f19169092018290039850909650505050505050a150505050565b6008602052600090815260409020546001600160401b031681565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081565b61100281565b60005460ff166135da576040805162461bcd60e51b81526020600482015260196024820152600080516020614a62833981519152604482015290519081900360640190fd5b6040805163569e4ed360e11b815233600482015290516000916110009163ad3c9da691602480820192602092909190829003018186803b15801561361d57600080fd5b505afa158015613631573d6000803e3d6000fd5b505050506040513d602081101561364757600080fd5b505160408051633d42651560e11b8152905191925060009161100091637a84ca2a916004808301926020929190829003018186803b15801561368857600080fd5b505afa15801561369c573d6000803e3d6000fd5b505050506040513d60208110156136b257600080fd5b50519050806136bf575060155b6000821180156136cf5750808211155b61370e576040805162461bcd60e51b815260206004820152600b60248201526a1b9bdd0818d8589a5b995d60aa1b604482015290519081900360640190fd5b600b5460ff16613755576040805162461bcd60e51b815260206004820152600d60248201526c1b9bdd081cdd5cdc195b991959609a1b604482015290519081900360640190fd5b604080516e149153d4115397d41493d413d4d053608a1b8152905190819003600f0190206000906137a6907fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470614192565b905080156137e457600b805460ff1916905560405133907f899fe8c37dc61708a3aaa99c4bf143346c1d1da69af79be9e8920c0a6785b75290600090a25b505050565b600660209081526000928352604080842090915290825290205460ff1681565b6040518060400160405280600381526020016269626360e81b81525081565b610e1081565b61100381565b61200481565b60005460ff1615613892576040805162461bcd60e51b815260206004820152601960248201527f74686520636f6e747261637420616c726561647920696e697400000000000000604482015290519081900360640190fd5b7f1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b80546001600160a01b0319908116611008179091557f92e85d02570a8092d09a6e3a57665bc3815a2699a4074001bf1ccabf660f5a36805460ff199081169091557fd8af288fc1c8680b4f4706064cf021e264efb6828fcaf7eb5ca36818eb365bcc8054821660019081179091557f89832631fb3c3307a103ba2c84ab569c64d6182a18893dcd163f0f1c2090733a805484166110049081179091557f6cde3cea4b3a3fb2488b2808bae7556f4a405e50f65e1794383bc026131b13c38054841690557f72e4efa1513b071517c6c74dba31b5934a81aa83cddd400e7081df5529c9943680548416831790557fa9bc9a3a348c357ba16b37005d7e6b3236198c0e939f4af8c5f19b8deeb8ebc08054851690911790557fc575c31fea594a6eb97c8e9d3f9caee4c16218c6ef37e923234c0fe9014a61e78054831690557f4e523af77f034e9810f1c94057f5e931fb3d16a51511a4c3add793617d18610580548316821790557ffb33122aa9f93cc639ebe80a7bc4784c11e6053dde89c6f4f7e268c6a623da1e805484166110001790557fc7694af312c4f286114180fd0ba6a52461fcee8a381636770b19a343af92538a80548316821790557f01112dd68e482ba8d68a7e828cff8b3abcea08eab88941953c180a7e650e9cd480548316821790557fc0a4a8be475dfebc377ebef2d7c4ff47656f572a08dd92b81017efcdba0febe1805484166110071790557f87e8a52529e8ece4ef759037313542a6429ff494a9fab9027fb79db90124eba680548316821790557f4c7666bbcb22d46469f7cc282f70764a7012dca2cce630ff8d83db9a9cdd48f080548316821790557f40f28f99a40bc9f6beea1013afdbc3cdcc689eb76b82c4de06c0acf1e1932ed58054909316611001179092557f0d9cf2cd531699eed8dd34e40ff2884a14a698c4898184fba85194e6f6772d248054821683179055600b60009081527f23f68c9bd22b8a93d06adabe17481c87c016bcbd20adc8bfd707a4d813a572176020527fdf0d5d05428057f5455c2dc8e810dd86d1e9350faa72f16bda8a45443c5b39328054831684179055603283556004805467ffffffffffffffff19166001600160401b031790556002819055600381905580549091169091179055565b6007602052600090815260409020546001600160401b031681565b60005460ff16613c51576040805162461bcd60e51b81526020600482015260196024820152600080516020614a62833981519152604482015290519081900360640190fd5b6040805163569e4ed360e11b815233600482015290516000916110009163ad3c9da691602480820192602092909190829003018186803b158015613c9457600080fd5b505afa158015613ca8573d6000803e3d6000fd5b505050506040513d6020811015613cbe57600080fd5b505160408051633d42651560e11b8152905191925060009161100091637a84ca2a916004808301926020929190829003018186803b158015613cff57600080fd5b505afa158015613d13573d6000803e3d6000fd5b505050506040513d6020811015613d2957600080fd5b5051905080613d36575060155b600082118015613d465750808211155b613d85576040805162461bcd60e51b815260206004820152600b60248201526a1b9bdd0818d8589a5b995d60aa1b604482015290519081900360640190fd5b600b5460ff1615613dc9576040805162461bcd60e51b81526020600482015260096024820152681cdd5cdc195b99195960ba1b604482015290519081900360640190fd5b604080516f14d554d411539117d41493d413d4d05360821b81529051908190036010019020600090613e1b907fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470614192565b905080156137e4576137e46140c9565b601181565b60005460ff16613e75576040805162461bcd60e51b81526020600482015260196024820152600080516020614a62833981519152604482015290519081900360640190fd5b33600090815260066020908152604080832060ff8089168552925290912054859116613ed25760405162461bcd60e51b81526004018080602001828103825260318152602001806148a06031913960400191505060405180910390fd5b60ff85166000908152600760209081526040808320548151601f88018490048402810184019092528682526001600160401b031692613f379284928a9261212592909189918c908c90819084018382808284376000920191909152506113a792505050565b60ff959095166000908152600760205260409020805467ffffffffffffffff191660019096016001600160401b03169590951790945550505050565b61100081565b600381565b61100481565b60408051600e808252818301909252606091630102ca0060ff851617918391602082018180368337505050600e81810187905260068201939093529182525090505b92915050565b600085613fdb575060006140c0565b606082518451865160800101016040519080825280601f01601f191660200182016040528015614012576020820181803683370190505b5090506000614020826147b4565b60208089015182520190508660008061403889614147565b8086526020909501949092509050614051828583614151565b9283019261405e88614147565b8086526020909501949092509050614077828583614151565b9283018a81526020019261408a87614147565b909250905061409a828583614151565b5083516020016140a86147ba565b60208183886065600019fa5051600114955050505050505b95945050505050565b600b5460ff161561410d576040805162461bcd60e51b81526020600482015260096024820152681cdd5cdc195b99195960ba1b604482015290519081900360640190fd5b600b805460ff1916600117905560405133907f6f123d3d54c84a7960a573b31c221dcd86e13fd849c5adb0c6ca851468cc1ae490600090a2565b8051602090910191565b5b60208110614171578251825260209283019290910190601f1901614152565b915181516020939093036101000a6000190180199091169216919091179052565b6000828152600d602052604081205461ffff1661425b57604080516f14d554d411539117d41493d413d4d05360821b815281519081900360100181206000908152600d6020818152848320805461ffff199081166001179091556e149153d4115397d41493d413d4d053608a1b8552855194859003600f01852084528282528584208054821660029081179091557710d05390d15317d514905394d1915497d41493d413d4d05360421b8652865195869003601801909520845291905292902080549092161790555b6000838152600c6020526040902080546201000090046001600160801b03164210158061428c575082816001015414155b1561435f576000848152600d602090815260409182902054835461ffff90911661ffff199091161771ffffffffffffffffffffffffffffffff0000191662010000610e1042016001600160801b03160217835560018084018690558251918201909252338152614301916002840191906147d8565b5080546040805161ffff83168152620100009092046001600160801b0316602083015281810185905251339186917f9e109f0e55ef32e99e4880be2ec357f1ddb3469c79d0747ef4762da6e89fabe5916060908290030190a3614413565b60005b60028201548110156143ea57336001600160a01b031682600201828154811061438757fe5b6000918252602090912001546001600160a01b031614156143e2576040805162461bcd60e51b815260206004820152601060248201526f185b1c9958591e48185c1c1c9bdd995960821b604482015290519081900360640190fd5b600101614362565b50600281018054600181018255600091825260209091200180546001600160a01b031916331790555b8054600282015461ffff9091161161446d576000848152600c60205260408120805471ffffffffffffffffffffffffffffffffffff191681556001810182905590614461600283018261483d565b50506001915050613fc6565b5060009392505050565b600080600060606021855110156144a7575050604080516000808252602082019092529092508291508190614520565b600185015160218601518651604080516020198301808252601f19600119909401939093168101602001909152604189019392916060919080156144f2576020820181803683370190505b509050600061450082614147565b509050614512858260218d5103614151565b506001975091955093509150505b9193509193565b600b5460ff161561456b576040805162461bcd60e51b81526020600482015260096024820152681cdd5cdc195b99195960ba1b604482015290519081900360640190fd5b6002544311156145aa576004805467ffffffffffffffff1981166001600160401b036001600793840b810190930b1617909155600355436002556145eb565b600380546001908101918290555410156145eb576004805467ffffffffffffffff1981166001600160401b036001600793840b810190930b16179091556003555b8160ff16836001600160401b0316600460009054906101000a900460070b6001600160401b03167f3a6e0fc61675aa2a100bcba0568368bb92bcec91c97673391074f11138f0cffe6102ca85604051808361ffff1661ffff16815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561468257818101518382015260200161466a565b50505050905090810190601f1680156146af5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a4505050565b6000816040516020018082805190602001908083835b602083106146f75780518252601f1990920191602091820191016146d8565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405280519060200120836040516020018082805190602001908083835b602083106147655780518252601f199092019160209182019101614746565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040528051906020012014905092915050565b015190565b3b151590565b60200190565b60405180602001604052806001906020820280368337509192915050565b82805482825590600052602060002090810192821561482d579160200282015b8281111561482d57825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906147f8565b5061483992915061485e565b5090565b508054600082559060005260206000209081019061485b9190614885565b50565b61488291905b808211156148395780546001600160a01b0319168155600101614864565b90565b61488291905b80821115614839576000815560010161488b56fe74686520636f6e747261637420616e64206368616e6e656c2068617665206e6f74206265656e20726567697374657265646c656e677468206f662076616c756520666f72206164644f725570646174654368616e6e656c2073686f756c642062652032322c206368616e6e656c49643a697346726f6d53797374656d3a68616e646c6572416464726573736c656e677468206f662076616c756520666f722063616e63656c5472616e7366657251756f72756d2073686f756c6420626520326c656e677468206f662076616c756520666f722073757370656e6451756f72756d2073686f756c6420626520326c656e677468206f662076616c756520666f722072656f70656e51756f72756d2073686f756c642062652032746865206d6573736167652073656e646572206d75737420626520676f7665726e616e636520636f6e74726163746c656e677468206f662076616c756520666f7220656e61626c654f7244697361626c654368616e6e656c2073686f756c6420626520322c206368616e6e656c49643a6973456e61626c65746865206e6577426174636853697a65466f724f7261636c652073686f756c6420626520696e205b31302c2031303030305d74686520636f6e7472616374206e6f7420696e697420796574000000000000006c6967687420636c69656e74206e6f742073796e632074686520626c6f636b20796574a164736f6c6343000604000a", }, { ContractAddr: common.HexToAddress(StakingContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/cfc0bd1127186a917ddc38fd38d22903034d3f0b", - Code: "6080604052600436106103c75760003560e01c8063718a8aa8116101f2578063b88a802f1161010d578063dc927faf116100a0578063f9a2bbc71161006f578063f9a2bbc714610d00578063fa03f79714610d15578063fc3e5908146106c8578063fd6a687914610d2a576103ce565b8063dc927faf14610c7c578063df8079e914610c91578063edc1a5b014610ca6578063f45fd80b14610cbb576103ce565b8063c81b1662116100dc578063c81b166214610ba7578063c8509d8114610bbc578063d61b9b9314610c41578063d7ecfcb614610885576103ce565b8063b88a802f14610b2d578063baaafd3b14610b42578063bf8546ca14610b57578063c2117d8214610b92576103ce565b80639dc0926211610185578063aad5606311610154578063aad5606314610a23578063ab51bb9614610a38578063ac43175114610a4d578063b14315df14610b18576103ce565b80639dc09262146109bb578063a1a11bf5146109d0578063a78abc16146109e5578063aa82dce114610a0e576103ce565b80637e434d54116101c15780637e434d541461090c578063831d65d11461092157806392b888a41461065f57806396713da9146109a6576103ce565b8063718a8aa81461089a57806375aca593146108af57806375d47a0a146108e25780637942fd05146108f7576103ce565b8063413d9c3a116102e25780635d17c8bd116102755780636bd8f804116102445780636bd8f804146108075780636e47b4821461083d5780636fb7f7eb1461085257806370fd5bad14610885576103ce565b80635d17c8bd146107b35780635d499b1b146107c857806362b171d2146107dd57806369b635b6146107f2576103ce565b80634d99dd16116102b15780634d99dd161461074857806351b4dce31461077457806351e8067214610789578063552aaf931461079e576103ce565b8063413d9c3a146106dd57806343756e5c146106f2578063493279b1146107075780634bf6c88214610733576103ce565b8063151817e31161035a578063333ad3e711610329578063333ad3e71461069e57806334c43354146106b35780633dffc3871461065f5780633fdfa7e4146106c8576103ce565b8063151817e31461063457806317c9efb01461065f57806328087028146106745780632fdeb11114610689576103ce565b80630c795715116103965780630c795715146104c15780630e2374a5146104d65780631182b8751461050757806311fe9ec614610601576103ce565b8063026e402b146103d35780630298599214610401578063047636d1146104285780630bee7a6714610493576103ce565b366103ce57005b600080fd5b6103ff600480360360408110156103e957600080fd5b506001600160a01b038135169060200135610d3f565b005b34801561040d57600080fd5b50610416610d7c565b60408051918252519081900360200190f35b34801561043457600080fd5b5061045b6004803603602081101561044b57600080fd5b50356001600160a01b0316610d82565b6040518082606080838360005b83811015610480578181015183820152602001610468565b5050505090500191505060405180910390f35b34801561049f57600080fd5b506104a8610dd6565b6040805163ffffffff9092168252519081900360200190f35b3480156104cd57600080fd5b50610416610ddb565b3480156104e257600080fd5b506104eb610de1565b604080516001600160a01b039092168252519081900360200190f35b34801561051357600080fd5b5061058c6004803603604081101561052a57600080fd5b60ff8235169190810190604081016020820135600160201b81111561054e57600080fd5b82018360208201111561056057600080fd5b803590602001918460018302840111600160201b8311171561058157600080fd5b509092509050610de7565b6040805160208082528351818301528351919283929083019185019080838360005b838110156105c65781810151838201526020016105ae565b50505050905090810190601f1680156105f35780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561060d57600080fd5b506104166004803603602081101561062457600080fd5b50356001600160a01b0316610fa3565b34801561064057600080fd5b50610649610fbe565b6040805160ff9092168252519081900360200190f35b34801561066b57600080fd5b50610649610fc3565b34801561068057600080fd5b506104eb610fc8565b34801561069557600080fd5b50610416610fce565b3480156106aa57600080fd5b506104a8610fd4565b3480156106bf57600080fd5b50610416610fd9565b3480156106d457600080fd5b50610649610fe4565b3480156106e957600080fd5b50610416610fe9565b3480156106fe57600080fd5b506104eb610ff0565b34801561071357600080fd5b5061071c610ff6565b6040805161ffff9092168252519081900360200190f35b34801561073f57600080fd5b50610649610ffc565b6103ff6004803603604081101561075e57600080fd5b506001600160a01b038135169060200135611001565b34801561078057600080fd5b506104eb61162e565b34801561079557600080fd5b506104eb611634565b3480156107aa57600080fd5b5061064961163a565b3480156107bf57600080fd5b5061041661163f565b3480156107d457600080fd5b50610416611645565b3480156107e957600080fd5b5061041661164e565b3480156107fe57600080fd5b506104166117ee565b6103ff6004803603606081101561081d57600080fd5b506001600160a01b03813581169160208101359091169060400135610d3f565b34801561084957600080fd5b506104eb6117f4565b34801561085e57600080fd5b506104166004803603602081101561087557600080fd5b50356001600160a01b03166117fa565b34801561089157600080fd5b50610649611815565b3480156108a657600080fd5b5061064961181a565b3480156108bb57600080fd5b50610416600480360360208110156108d257600080fd5b50356001600160a01b031661181f565b3480156108ee57600080fd5b506104eb61183a565b34801561090357600080fd5b50610649611840565b34801561091857600080fd5b506104eb611845565b34801561092d57600080fd5b506103ff6004803603604081101561094457600080fd5b60ff8235169190810190604081016020820135600160201b81111561096857600080fd5b82018360208201111561097a57600080fd5b803590602001918460018302840111600160201b8311171561099b57600080fd5b50909250905061184b565b3480156109b257600080fd5b50610649611b13565b3480156109c757600080fd5b506104eb611b18565b3480156109dc57600080fd5b506104eb611b1e565b3480156109f157600080fd5b506109fa611b24565b604080519115158252519081900360200190f35b348015610a1a57600080fd5b506104eb611b2d565b348015610a2f57600080fd5b506104eb611b33565b348015610a4457600080fd5b506104a861163a565b348015610a5957600080fd5b506103ff60048036036040811015610a7057600080fd5b810190602081018135600160201b811115610a8a57600080fd5b820183602082011115610a9c57600080fd5b803590602001918460018302840111600160201b83111715610abd57600080fd5b919390929091602081019035600160201b811115610ada57600080fd5b820183602082011115610aec57600080fd5b803590602001918460018302840111600160201b83111715610b0d57600080fd5b509092509050611b39565b348015610b2457600080fd5b506106496122cb565b348015610b3957600080fd5b506104166122d0565b348015610b4e57600080fd5b5061041661246d565b348015610b6357600080fd5b5061041660048036036040811015610b7a57600080fd5b506001600160a01b0381358116916020013516612478565b348015610b9e57600080fd5b506104166124a5565b348015610bb357600080fd5b506104eb6124ab565b348015610bc857600080fd5b506103ff60048036036040811015610bdf57600080fd5b60ff8235169190810190604081016020820135600160201b811115610c0357600080fd5b820183602082011115610c1557600080fd5b803590602001918460018302840111600160201b83111715610c3657600080fd5b5090925090506124b1565b348015610c4d57600080fd5b5061041660048036036040811015610c6457600080fd5b506001600160a01b03813581169160200135166126d4565b348015610c8857600080fd5b506104eb6126ff565b348015610c9d57600080fd5b506104eb612705565b348015610cb257600080fd5b5061041661270b565b348015610cc757600080fd5b5061041660048036036060811015610cde57600080fd5b506001600160a01b038135811691602081013582169160409091013516612718565b348015610d0c57600080fd5b506104eb61274d565b348015610d2157600080fd5b50610416612753565b348015610d3657600080fd5b506104eb612759565b6040805162461bcd60e51b815260206004820152600d60248201526c1b9bdd081cdd5c1c1bdc9d1959609a1b604482015290519081900360640190fd5b60035481565b610d8a614694565b610d92614694565b6001600160a01b0383166000818152600b60209081526040808320548552838352600c82528083205485830152928252600d9052819020549082015290505b919050565b606481565b6108fc81565b61200181565b60603361200014610e295760405162461bcd60e51b815260040180806020018281038252602f815260200180614877602f913960400191505060405180910390fd5b60005460ff16610e6c576638d7ea4c6800006001908155662386f26fc1000060025568056bc75e2d631000006003556108fc6011556000805460ff191690911790555b610e746146b2565b610ebb610eb685858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061275f92505050565b612784565b90506000610ed0610ecb836127ce565b61281c565b90506000606060ff831660041415610ef557610eeb846128d3565b9092509050610f4c565b60ff831660051415610f0a57610eeb84612ab3565b6040805162461bcd60e51b8152602060048201526012602482015271756e6b6e6f776e206576656e74207479706560701b604482015290519081900360640190fd5b63ffffffff821615610f98576040805163ffffffff84168152905160ff8516917f391d6e5ea6ab6c49b9a0abb1782cae5def8d711f973b00c729658c0b2a80b31b919081900360200190a25b979650505050505050565b6001600160a01b031660009081526006602052604090205490565b600581565b600181565b61200581565b60015481565b606581565b662386f26fc1000081565b600381565b620a8c0081565b61100181565b6102ca81565b600881565b60105460ff166002141561104d576040805162461bcd60e51b815260206004820152600e60248201526d4e6f2072652d656e7472616e637960901b604482015290519081900360640190fd5b6010805460ff19166002179055806402540be400340615801561107557506402540be4008106155b6110c6576040805162461bcd60e51b815260206004820152601c60248201527f707265636973696f6e206c6f737320696e20636f6e76657273696f6e00000000604482015290519081900360640190fd5b60005460ff16611109576638d7ea4c6800006001908155662386f26fc1000060025568056bc75e2d631000006003556108fc6011556000805460ff191690911790555b600154341015611157576040805162461bcd60e51b81526020600482015260146024820152736e6f7420656e6f7567682072656c61792066656560601b604482015290519081900360640190fd5b600354821015611212573360009081526005602090815260408083206001600160a01b038716845290915290205482146111c9576040805162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a5908185b5bdd5b9d60921b604482015290519081900360640190fd5b6002548211611212576040805162461bcd60e51b815260206004820152601060248201526f6e6f7420656e6f7567682066756e647360801b604482015290519081900360640190fd5b3360009081526007602090815260408083206001600160a01b038716845290915290205442101561128a576040805162461bcd60e51b815260206004820152601a60248201527f70656e64696e6720756e64656c65676174696f6e206578697374000000000000604482015290519081900360640190fd5b604080518082018252601081526f6e6f7420656e6f7567682066756e647360801b602080830191909152336000908152600582528381206001600160a01b0388168252909152918220546112e591859063ffffffff612ccf16565b9050801561132d57600254811161132d5760405162461bcd60e51b81526004018080602001828103825260258152602001806148526025913960400191505060405180910390fd5b6000611344846402540be40063ffffffff612d6616565b600254909150349060009061136090839063ffffffff612daf16565b6040805160038082526080820190925291925060609190816020015b606081526020019060019003908161137c57905050905061139c33612df1565b816000815181106113a957fe5b60200260200101819052506113c6886001600160a01b0316612df1565b816001815181106113d357fe5b60200260200101819052506113e784612e14565b816002815181106113f457fe5b60200260200101819052506060611414600261140f84612e27565b612eb1565b8051602080830191909120600f80546000908152600a845260408082209390935581546001908101909255338152600c909352912080549091019055905061146542620a8c0063ffffffff612f3716565b3360009081526007602090815260408083206001600160a01b038e16845290915290205561200063f7a251d76010836114a9876402540be40063ffffffff612d6616565b6040518463ffffffff1660e01b8152600401808460ff1660ff16815260200180602001838152602001828103825284818151815260200191508051906020019080838360005b838110156115075781810151838201526020016114ef565b50505050905090810190601f1680156115345780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b15801561155557600080fd5b505af1158015611569573d6000803e3d6000fd5b5050604051611004925085156108fc02915085906000818181858888f1935050505015801561159c573d6000803e3d6000fd5b506002546040516110029180156108fc02916000818181858888f193505050501580156115cd573d6000803e3d6000fd5b50604080518981526020810185905281516001600160a01b038c169233927fdf0b6ac27f3f3bb31cee3dab0f4fe40cc19c6a3f8daaec52e06b261e58a12519929081900390910190a350506010805460ff1916600117905550505050505050565b61200681565b61200081565b600081565b60025481565b6402540be40081565b60105460009060ff166002141561169d576040805162461bcd60e51b815260206004820152600e60248201526d4e6f2072652d656e7472616e637960901b604482015290519081900360640190fd5b506010805460ff191660021790553360009081526008602052604090205480611704576040805162461bcd60e51b81526020600482015260146024820152736e6f20756e64656c6567617465642066756e647360601b604482015290519081900360640190fd5b336000818152600860205260408082208290556011549051919291849084818181858888f193505050503d806000811461175a576040519150601f19603f3d011682016040523d82523d6000602084013e61175f565b606091505b50509050806117a7576040805162461bcd60e51b815260206004820152600f60248201526e1d1c985b9cd9995c8819985a5b1959608a1b604482015290519081900360640190fd5b60408051838152905133917fc712d133b8d448221aaed2198ed1f0db6dfc860fb01bc3a630916fe6cbef946f919081900360200190a2506010805460ff1916600117905590565b60035490565b61100581565b6001600160a01b031660009081526004602052604090205490565b600281565b601081565b6001600160a01b031660009081526008602052604090205490565b61100881565b600b81565b61200381565b336120001461188b5760405162461bcd60e51b815260040180806020018281038252602f815260200180614877602f913960400191505060405180910390fd5b60005460ff166118ce576638d7ea4c6800006001908155662386f26fc1000060025568056bc75e2d631000006003556108fc6011556000805460ff191690911790555b6118d66146b2565b611918610eb684848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061275f92505050565b905060008060606000805b61192c86612f91565b15611997578061194957611942610ecb876127ce565b945061198f565b80600114156119655761195e610ecb876127ce565b935061198f565b806002141561198a5761197f61197a876127ce565b612fb2565b92506001915061198f565b611997565b600101611923565b816119dd576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b6119e683613022565b611a29576040805162461bcd60e51b815260206004820152600f60248201526e0eee4dedcce40e0c2c6d640d0c2e6d608b1b604482015290519081900360640190fd5b611a35610eb68461275f565b95506000611a45610ecb886127ce565b9050611a4f6146b2565b611a5888612f91565b15611a7b57611a74610eb6611a6f61197a8b6127ce565b61275f565b9050611abc565b6040805162461bcd60e51b8152602060048201526011602482015270656d7074792061636b207061636b61676560781b604482015290519081900360640190fd5b60ff821660011415611ad857611ad3818888613076565b611b06565b60ff821660021415611aef57611ad381888861342d565b60ff821660031415610f0a57611ad38188886136fa565b5050505050505050505050565b600981565b61100781565b61100681565b60005460ff1681565b61200281565b61300081565b60005460ff16611b90576040805162461bcd60e51b815260206004820152601960248201527f74686520636f6e7472616374206e6f7420696e69742079657400000000000000604482015290519081900360640190fd5b3361100714611bd05760405162461bcd60e51b815260040180806020018281038252602e8152602001806147c8602e913960400191505060405180910390fd5b611c3184848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600a81526972656c6179657246656560b01b60208201529150613a5f9050565b15611d975760208114611c8b576040805162461bcd60e51b815260206004820152601d60248201527f6c656e677468206f662072656c61796572466565206d69736d61746368000000604482015290519081900360640190fd5b604080516020601f8401819004810282018101909252828152600091611cc991858580838501838280828437600092019190915250613b4692505050565b90506003548110611d0b5760405162461bcd60e51b815260040180806020018281038252602e8152602001806147f6602e913960400191505060405180910390fd5b6002548111611d4b5760405162461bcd60e51b815260040180806020018281038252602e815260200180614824602e913960400191505060405180910390fd5b6402540be400810615611d8f5760405162461bcd60e51b815260040180806020018281038252602c81526020018061479c602c913960400191505060405180910390fd5b600155612239565b611dfb84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600d81526c62534352656c6179657246656560981b60208201529150613a5f9050565b15611f5d5760208114611e55576040805162461bcd60e51b815260206004820181905260248201527f6c656e677468206f662062534352656c61796572466565206d69736d61746368604482015290519081900360640190fd5b604080516020601f8401819004810282018101909252828152600091611e9391858580838501838280828437600092019190915250613b4692505050565b905080611ed15760405162461bcd60e51b81526004018080602001828103825260228152602001806148a66022913960400191505060405180910390fd5b6001548110611f115760405162461bcd60e51b815260040180806020018281038252602e81526020018061471c602e913960400191505060405180910390fd5b6402540be400810615611f555760405162461bcd60e51b815260040180806020018281038252602f8152602001806146ed602f913960400191505060405180910390fd5b600255612239565b611fc184848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600d81526c36b4b72232b632b3b0ba34b7b760991b60208201529150613a5f9050565b156120a3576020811461201b576040805162461bcd60e51b815260206004820181905260248201527f6c656e677468206f66206d696e44656c65676174696f6e206d69736d61746368604482015290519081900360640190fd5b604080516020601f840181900481028201810190925282815260009161205991858580838501838280828437600092019190915250613b4692505050565b9050600154811161209b5760405162461bcd60e51b815260040180806020018281038252603181526020018061474a6031913960400191505060405180910390fd5b600355612239565b61210584848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600b81526a7472616e7366657247617360a81b60208201529150613a5f9050565b156121fc576020811461215f576040805162461bcd60e51b815260206004820152601e60248201527f6c656e677468206f66207472616e73666572476173206d69736d617463680000604482015290519081900360640190fd5b604080516020601f840181900481028201810190925282815260009161219d91858580838501838280828437600092019190915250613b4692505050565b9050600081116121f4576040805162461bcd60e51b815260206004820152601e60248201527f746865207472616e736665724761732063616e6e6f74206265207a65726f0000604482015290519081900360640190fd5b601155612239565b6040805162461bcd60e51b815260206004820152600d60248201526c756e6b6e6f776e20706172616d60981b604482015290519081900360640190fd5b7f6cdb0ac70ab7f2e2d035cca5be60d89906f2dede7648ddbd7402189c1eeed17a848484846040518080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600083820152604051601f909101601f19169092018290039850909650505050505050a150505050565b600481565b60105460009060ff166002141561231f576040805162461bcd60e51b815260206004820152600e60248201526d4e6f2072652d656e7472616e637960901b604482015290519081900360640190fd5b506010805460ff191660021790553360009081526006602052604090205480612383576040805162461bcd60e51b81526020600482015260116024820152701b9bc81c195b991a5b99c81c995dd85c99607a1b604482015290519081900360640190fd5b336000818152600660205260408082208290556011549051919291849084818181858888f193505050503d80600081146123d9576040519150601f19603f3d011682016040523d82523d6000602084013e6123de565b606091505b5050905080612426576040805162461bcd60e51b815260206004820152600f60248201526e1d1c985b9cd9995c8819985a5b1959608a1b604482015290519081900360640190fd5b60408051838152905133917f83b78188b13346b2ffb484da70d42ee27de7fbf9f2bd8045269e10ed643ccd76919081900360200190a2506010805460ff1916600117905590565b6638d7ea4c68000081565b6001600160a01b038083166000908152600760209081526040808320938516835292905220545b92915050565b60015490565b61100281565b33612000146124f15760405162461bcd60e51b815260040180806020018281038252602f815260200180614877602f913960400191505060405180910390fd5b60005460ff16612534576638d7ea4c6800006001908155662386f26fc1000060025568056bc75e2d631000006003556108fc6011556000805460ff191690911790555b61257382828080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061302292505050565b6125b6576040805162461bcd60e51b815260206004820152600f60248201526e0eee4dedcce40e0c2c6d640d0c2e6d608b1b604482015290519081900360640190fd5b6125be6146b2565b612600610eb684848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061275f92505050565b90506000612610610ecb836127ce565b905061261a6146b2565b61262383612f91565b156126415761263a610eb6611a6f61197a866127ce565b9050612687565b6040805162461bcd60e51b8152602060048201526016602482015275656d707479206661696c2061636b207061636b61676560501b604482015290519081900360640190fd5b60ff8216600114156126a15761269c81613b4b565b6126cb565b60ff8216600214156126b65761269c81613d65565b60ff821660031415610f0a5761269c81613e8f565b5050505b505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b61100381565b61200481565b68056bc75e2d6310000081565b6001600160a01b0392831660009081526009602090815260408083209486168352938152838220929094168152925290205490565b61100081565b60115481565b61100481565b6127676146d2565b506040805180820190915281518152602082810190820152919050565b61278c6146b2565b61279582613ff4565b61279e57600080fd5b60006127ad836020015161402e565b60208085015160408051808201909152868152920190820152915050919050565b6127d66146d2565b6127df82612f91565b6127e857600080fd5b602082015160006127f882614091565b80830160209586015260408051808201909152908152938401919091525090919050565b80516000901580159061283157508151602110155b61283a57600080fd5b6000612849836020015161402e565b905080836000015110156128a4576040805162461bcd60e51b815260206004820152601a60248201527f6c656e677468206973206c657373207468616e206f6666736574000000000000604482015290519081900360640190fd5b8251602080850151830180519284900392918310156128ca57826020036101000a820491505b50949350505050565b600060606000806000805b6128e787612f91565b156129395782612909576129026128fd886127ce565b6141c4565b915061292e565b82600114156129295761291e610ecb886127ce565b90506001935061292e565b612939565b8260010192506128de565b8361297f576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b60006110046001600160a01b031663727be1f8836040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b1580156129c957600080fd5b505af11580156129dd573d6000803e3d6000fd5b505050506040513d60208110156129f357600080fd5b5051905080612a1857612a0a6004848460656141de565b965096505050505050612aae565b6001600160a01b038316600090815260066020526040902054612a41908363ffffffff612f3716565b6001600160a01b038416600081815260066020908152604091829020939093558051858152905191927f7cc266c7b444f808013fa187f7b904d470a051a6564e78f482aa496581ba4bf892918290030190a260408051600080825260208201909252909750955050505050505b915091565b6000606060008060008060005b612ac988612f91565b15612b325783612ae657612adf6128fd896127ce565b9250612b27565b8360011415612b0257612afb6128fd896127ce565b9150612b27565b8360021415612b2257612b17610ecb896127ce565b905060019450612b27565b612b32565b836001019350612ac0565b84612b78576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b60006110046001600160a01b031663727be1f8836040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b158015612bc257600080fd5b505af1158015612bd6573d6000803e3d6000fd5b505050506040513d6020811015612bec57600080fd5b5051905080612c1257612c036005858460656141de565b97509750505050505050612aae565b6001600160a01b038085166000818152600760209081526040808320948816835293815283822082905591815260089091522054612c56908363ffffffff612f3716565b6001600160a01b0380861660008181526008602090815260409182902094909455805186815290519287169391927f35a799836f74fac7eccf5c73902823b970543d2274d3b93d8da3d37a255772a2929181900390910190a3604080516000808252602082019092529098509650505050505050915091565b60008184841115612d5e5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612d23578181015183820152602001612d0b565b50505050905090810190601f168015612d505780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000612da883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506142da565b9392505050565b6000612da883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612ccf565b60408051600560a21b8318601482015260348101909152606090612da88161433f565b606061249f612e2283614395565b61433f565b6060815160001415612e485750604080516000815260208101909152610dd1565b606082600081518110612e5757fe5b602002602001015190506000600190505b8351811015612e9857612e8e82858381518110612e8157fe5b602002602001015161447b565b9150600101612e68565b50612da8612eab825160c060ff166144f8565b8261447b565b6040805160028082526060828101909352829190816020015b6060815260200190600190039081612eca579050509050612eed8460ff16612e14565b81600081518110612efa57fe5b6020026020010181905250612f0e8361433f565b81600181518110612f1b57fe5b6020026020010181905250612f2f81612e27565b949350505050565b600082820183811015612da8576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000612f9b6146d2565b505080518051602091820151919092015191011190565b8051606090612fc057600080fd5b6000612fcf836020015161402e565b83516040805191839003808352601f19601f8201168301602001909152919250606090828015613006576020820181803683370190505b50905060008160200190506128ca8487602001510182856145f0565b8051602080830191909120600e546000908152600a909252604082205480821461305157600092505050610dd1565b5050600e80546000908152600a60205260408120558054600190810190915592915050565b60008060008060005b61308888612f91565b156130f157836130a55761309e6128fd896127ce565b92506130e6565b83600114156130c1576130ba6128fd896127ce565b91506130e6565b83600214156130e1576130d6610ecb896127ce565b9050600194506130e6565b6130f1565b83600101935061307f565b84613137576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b600061314e826402540be40063ffffffff61463b16565b6001600160a01b0385166000908152600b602052604090208054600019019055905060ff8816600114156132945760ff8716156131c1576040805162461bcd60e51b815260206004820152600c60248201526b77726f6e672073746174757360a01b604482015290519081900360640190fd5b6001600160a01b0384166000908152600460205260409020546131ea908263ffffffff612f3716565b6001600160a01b0380861660009081526004602090815260408083209490945560058152838220928716825291909152205461322c908263ffffffff612f3716565b6001600160a01b038086166000818152600560209081526040808320948916808452948252918290209490945580518581529051929391927f9a57c81564ab02642f34fd87e41baa9b074c18342cec3b7268b62bf752018fd1929181900390910190a3613422565b60ff88166133e6576001600160a01b0384166000908152600860205260409020546132c5908263ffffffff612f3716565b6001600160a01b0385166000908152600860209081526040808320939093558251630e4f7c3f60e31b81526004810185905292516110049363727be1f89360248083019493928390030190829087803b15801561332157600080fd5b505af1158015613335573d6000803e3d6000fd5b505050506040513d602081101561334b57600080fd5b5051613394576040805162461bcd60e51b81526020600482015260136024820152721dda5d1a191c985dc8189b988819985a5b1959606a1b604482015290519081900360640190fd5b6040805182815260ff8916602082015281516001600160a01b0380871693908816927fcbd481ae600289fad8c0484d07ce0ffe4f010d7c844ecfdeaf2a13fead52886e929081900390910190a3613422565b6040805162461bcd60e51b815260206004820152600c60248201526b77726f6e672073746174757360a01b604482015290519081900360640190fd5b505050505050505050565b60008060008060005b61343f88612f91565b156134a8578361345c576134556128fd896127ce565b925061349d565b8360011415613478576134716128fd896127ce565b915061349d565b83600214156134985761348d610ecb896127ce565b90506001945061349d565b6134a8565b836001019350613436565b846134ee576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b6000613505826402540be40063ffffffff61463b16565b6001600160a01b0385166000908152600c602052604090208054600019019055905060ff8816600114156136845760ff871615613578576040805162461bcd60e51b815260206004820152600c60248201526b77726f6e672073746174757360a01b604482015290519081900360640190fd5b6001600160a01b0384166000908152600460205260409020546135a1908263ffffffff612daf16565b6001600160a01b038086166000908152600460209081526040808320949094556005815283822092871682529190915220546135e3908263ffffffff612daf16565b6001600160a01b0380861660009081526005602090815260408083209388168352929052205561361c42620a8c0063ffffffff612f3716565b6001600160a01b038086166000818152600760209081526040808320948916808452948252918290209490945580518581529051929391927fd6f878a5bcbbe79a64e6418bb0d56aaa20b9a60587d45749819df88dfc7c3c44929181900390910190a3613422565b60ff88166133e6576001600160a01b03808516600081815260076020908152604080832094881680845294825280832092909255815185815260ff8c169181019190915281517f4417d10c1e33efa83a770b8d4f47176e78c08c1298d534901ad3b16bb585fa2e929181900390910190a3613422565b6000806000806000805b61370d89612f91565b15613792578461372a576137236128fd8a6127ce565b9350613787565b84600114156137465761373f6128fd8a6127ce565b9250613787565b84600214156137625761375b6128fd8a6127ce565b9150613787565b846003141561378257613777610ecb8a6127ce565b905060019550613787565b613792565b846001019450613704565b856137d8576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b60006137ef826402540be40063ffffffff61463b16565b6001600160a01b0386166000908152600d602052604090208054600019019055905060ff8916600114156139c25760ff881615613862576040805162461bcd60e51b815260206004820152600c60248201526b77726f6e672073746174757360a01b604482015290519081900360640190fd5b6001600160a01b03808616600090815260056020908152604080832093881683529290522054613898908263ffffffff612daf16565b6001600160a01b038681166000908152600560209081526040808320898516845290915280822093909355908516815220546138d49082612f37565b6001600160a01b0380871660009081526005602090815260408083209388168352929052205561390d42620a8c0063ffffffff612f3716565b6001600160a01b038087166000908152600960209081526040808320898516845282528083209388168352929052205561395042620a8c0063ffffffff612f3716565b6001600160a01b038087166000818152600960209081526040808320898616808552908352818420958b1680855295835292819020959095558451868152945191947f78bffae3f8c6691ac7fc1a3bff800cb2d612f5ad9ae5b0444cfe2eb15c189e18929081900390910190a4613a53565b60ff89166133e6576001600160a01b038581166000818152600960209081526040808320898616808552818452828520968a16808652968452828520859055908352818420818552835281842093909355805186815260ff8e169281019290925280519293927fb93bee5c59f85ede6b074a99f4ffcd3e3fc0d5c3d8156de331de89a49e0ce77c9281900390910190a45b50505050505050505050565b6000816040516020018082805190602001908083835b60208310613a945780518252601f199092019160209182019101613a75565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405280519060200120836040516020018082805190602001908083835b60208310613b025780518252601f199092019160209182019101613ae3565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040528051906020012014905092915050565b015190565b60008060008060005b613b5d86612f91565b15613bc65783613b7a57613b736128fd876127ce565b9250613bbb565b8360011415613b9657613b8f6128fd876127ce565b9150613bbb565b8360021415613bb657613bab610ecb876127ce565b905060019450613bbb565b613bc6565b836001019350613b54565b84613c0c576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b6000613c23826402540be40063ffffffff61463b16565b6001600160a01b0385166000908152600b6020908152604080832080546000190190556008909152902054909150613c61908263ffffffff612f3716565b6001600160a01b0385166000908152600860209081526040808320939093558251630e4f7c3f60e31b81526004810185905292516110049363727be1f89360248083019493928390030190829087803b158015613cbd57600080fd5b505af1158015613cd1573d6000803e3d6000fd5b505050506040513d6020811015613ce757600080fd5b5051613d30576040805162461bcd60e51b81526020600482015260136024820152721dda5d1a191c985dc8189b988819985a5b1959606a1b604482015290519081900360640190fd5b6040516001907ff83de021914a4585482db5ca47d520a5657165b443fa2c7ef8ed4635f054da9b90600090a250505050505050565b60008060008060005b613d7786612f91565b15613de05783613d9457613d8d6128fd876127ce565b9250613dd5565b8360011415613db057613da96128fd876127ce565b9150613dd5565b8360021415613dd057613dc5610ecb876127ce565b905060019450613dd5565b613de0565b836001019350613d6e565b84613e26576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b6001600160a01b038084166000908152600c60209081526040808320805460001901905560078252808320938616835292905281812081905590516002917ff83de021914a4585482db5ca47d520a5657165b443fa2c7ef8ed4635f054da9b91a2505050505050565b6000806000806000805b613ea287612f91565b15613f275784613ebf57613eb86128fd886127ce565b9350613f1c565b8460011415613edb57613ed46128fd886127ce565b9250613f1c565b8460021415613ef757613ef06128fd886127ce565b9150613f1c565b8460031415613f1757613f0c610ecb886127ce565b905060019550613f1c565b613f27565b846001019450613e99565b85613f6d576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b6001600160a01b038481166000908152600d602090815260408083208054600019019055600982528083208785168085528184528285209588168552948352818420849055825280832093835292905281812081905590516003917ff83de021914a4585482db5ca47d520a5657165b443fa2c7ef8ed4635f054da9b91a250505050505050565b805160009061400557506000610dd1565b6020820151805160001a9060c082101561402457600092505050610dd1565b5060019392505050565b8051600090811a6080811015614048576000915050610dd1565b60b8811080614063575060c08110801590614063575060f881105b15614072576001915050610dd1565b60c08110156140865760b519019050610dd1565b60f519019050610dd1565b80516000908190811a60808110156140ac57600191506141bd565b60b88110156140c157607e19810191506141bd565b60c081101561413b57600060b78203600186019550806020036101000a865104915060018101820193505080831015614135576040805162461bcd60e51b81526020600482015260116024820152706164646974696f6e206f766572666c6f7760781b604482015290519081900360640190fd5b506141bd565b60f88110156141505760be19810191506141bd565b600060f78203600186019550806020036101000a8651049150600181018201935050808310156141bb576040805162461bcd60e51b81526020600482015260116024820152706164646974696f6e206f766572666c6f7760781b604482015290519081900360640190fd5b505b5092915050565b80516000906015146141d557600080fd5b61249f8261281c565b600060606141f7846402540be40063ffffffff612d6616565b60408051600480825260a0820190925291955060609190816020015b60608152602001906001900390816142135790505090506142368760ff16612e14565b8160008151811061424357fe5b6020026020010181905250614260866001600160a01b0316612df1565b8160018151811061426d57fe5b602002602001018190525061428185612e14565b8160028151811061428e57fe5b60200260200101819052506142a88463ffffffff16612e14565b816003815181106142b557fe5b602002602001018190525060606142cb82612e27565b94989497509395505050505050565b600081836143295760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315612d23578181015183820152602001612d0b565b50600083858161433557fe5b0495945050505050565b6060815160011480156143715750607f60f81b8260008151811061435f57fe5b01602001516001600160f81b03191611155b1561437d575080610dd1565b61249f61438f8351608060ff166144f8565b8361447b565b604080516020808252818301909252606091829190602082018180368337505050602081018490529050600067ffffffffffffffff1984166143d9575060186143fd565b6fffffffffffffffffffffffffffffffff1984166143f9575060106143fd565b5060005b60208110156144335781818151811061441257fe5b01602001516001600160f81b0319161561442b57614433565b6001016143fd565b60008160200390506060816040519080825280601f01601f191660200182016040528015614468576020820181803683370190505b5080830196909652508452509192915050565b6060806040519050835180825260208201818101602087015b818310156144ac578051835260209283019201614494565b50855184518101855292509050808201602086015b818310156144d95780518352602092830192016144c1565b508651929092011591909101601f01601f191660405250905092915050565b6060680100000000000000008310614548576040805162461bcd60e51b815260206004820152600e60248201526d696e70757420746f6f206c6f6e6760901b604482015290519081900360640190fd5b604080516001808252818301909252606091602082018180368337019050509050603784116145a25782840160f81b8160008151811061458457fe5b60200101906001600160f81b031916908160001a905350905061249f565b60606145ad85614395565b90508381510160370160f81b826000815181106145c657fe5b60200101906001600160f81b031916908160001a9053506145e7828261447b565b95945050505050565b806145fa576126cf565b5b6020811061461a578251825260209283019290910190601f19016145fb565b915181516020939093036101000a6000190180199091169216919091179052565b60008261464a5750600061249f565b8282028284828161465757fe5b0414612da85760405162461bcd60e51b815260040180806020018281038252602181526020018061477b6021913960400191505060405180910390fd5b60405180606001604052806003906020820280368337509192915050565b60405180604001604052806146c56146d2565b8152602001600081525090565b60405180604001604052806000815260200160008152509056fe7468652042534352656c61796572466565206d6f642074656e20646563696d616c73206d757374206265207a65726f7468652042534352656c61796572466565206d757374206265206c657373207468616e2072656c61796572466565746865206d696e44656c65676174696f6e206d7573742062652067726561746572207468616e2072656c61796572466565536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f777468652072656c61796572466565206d6f642074656e20646563696d616c73206d757374206265207a65726f746865206d6573736167652073656e646572206d75737420626520676f7665726e616e636520636f6e74726163747468652072656c61796572466565206d757374206265206c657373207468616e206d696e44656c65676174696f6e7468652072656c61796572466565206d757374206265206d6f7265207468616e2042534352656c61796572466565696e73756666696369656e742062616c616e636520616674657220756e64656c6567617465746865206d6573736167652073656e646572206d7573742062652063726f737320636861696e20636f6e74726163747468652042534352656c61796572466565206d757374206e6f74206265207a65726fa164736f6c6343000604000a", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/1abdfbf3aeb86909c2220b79bf92b87ddff64b54", + Code: "6080604052600436106103d25760003560e01c8063718a8aa8116101fd578063b88a802f11610118578063dc927faf116100ab578063f45fd80b1161007a578063f45fd80b14610cdb578063f9a2bbc714610d20578063fa03f79714610d35578063fc3e5908146106d3578063fd6a687914610d4a576103d9565b8063dc927faf14610c87578063df8079e914610c9c578063edc1a5b014610cb1578063f1fad10414610cc6576103d9565b8063c81b1662116100e7578063c81b166214610bb2578063c8509d8114610bc7578063d61b9b9314610c4c578063d7ecfcb614610890576103d9565b8063b88a802f14610b38578063baaafd3b14610b4d578063bf8546ca14610b62578063c2117d8214610b9d576103d9565b80639dc0926211610190578063aad560631161015f578063aad5606314610a2e578063ab51bb9614610a43578063ac43175114610a58578063b14315df14610b23576103d9565b80639dc09262146109c6578063a1a11bf5146109db578063a78abc16146109f0578063aa82dce114610a19576103d9565b80637e434d54116101cc5780637e434d5414610917578063831d65d11461092c57806392b888a41461066a57806396713da9146109b1576103d9565b8063718a8aa8146108a557806375aca593146108ba57806375d47a0a146108ed5780637942fd0514610902576103d9565b8063413d9c3a116102ed5780635d17c8bd116102805780636bd8f8041161024f5780636bd8f804146108125780636e47b482146108485780636fb7f7eb1461085d57806370fd5bad14610890576103d9565b80635d17c8bd146107be5780635d499b1b146107d357806362b171d2146107e857806369b635b6146107fd576103d9565b80634d99dd16116102bc5780634d99dd161461075357806351b4dce31461077f57806351e8067214610794578063552aaf93146107a9576103d9565b8063413d9c3a146106e857806343756e5c146106fd578063493279b1146107125780634bf6c8821461073e576103d9565b8063151817e311610365578063333ad3e711610334578063333ad3e7146106a957806334c43354146106be5780633dffc3871461066a5780633fdfa7e4146106d3576103d9565b8063151817e31461063f57806317c9efb01461066a578063280870281461067f5780632fdeb11114610694576103d9565b80630c795715116103a15780630c795715146104cc5780630e2374a5146104e15780631182b8751461051257806311fe9ec61461060c576103d9565b8063026e402b146103de578063029859921461040c578063047636d1146104335780630bee7a671461049e576103d9565b366103d957005b600080fd5b61040a600480360360408110156103f457600080fd5b506001600160a01b038135169060200135610d5f565b005b34801561041857600080fd5b50610421610d9c565b60408051918252519081900360200190f35b34801561043f57600080fd5b506104666004803603602081101561045657600080fd5b50356001600160a01b0316610da2565b6040518082606080838360005b8381101561048b578181015183820152602001610473565b5050505090500191505060405180910390f35b3480156104aa57600080fd5b506104b3610df6565b6040805163ffffffff9092168252519081900360200190f35b3480156104d857600080fd5b50610421610dfb565b3480156104ed57600080fd5b506104f6610e01565b604080516001600160a01b039092168252519081900360200190f35b34801561051e57600080fd5b506105976004803603604081101561053557600080fd5b60ff8235169190810190604081016020820135600160201b81111561055957600080fd5b82018360208201111561056b57600080fd5b803590602001918460018302840111600160201b8311171561058c57600080fd5b509092509050610e07565b6040805160208082528351818301528351919283929083019185019080838360005b838110156105d15781810151838201526020016105b9565b50505050905090810190601f1680156105fe5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561061857600080fd5b506104216004803603602081101561062f57600080fd5b50356001600160a01b0316610fc3565b34801561064b57600080fd5b50610654610fde565b6040805160ff9092168252519081900360200190f35b34801561067657600080fd5b50610654610fe3565b34801561068b57600080fd5b506104f6610fe8565b3480156106a057600080fd5b50610421610fee565b3480156106b557600080fd5b506104b3610ff4565b3480156106ca57600080fd5b50610421610ff9565b3480156106df57600080fd5b50610654611004565b3480156106f457600080fd5b50610421611009565b34801561070957600080fd5b506104f6611010565b34801561071e57600080fd5b50610727611016565b6040805161ffff9092168252519081900360200190f35b34801561074a57600080fd5b5061065461101c565b61040a6004803603604081101561076957600080fd5b506001600160a01b038135169060200135611021565b34801561078b57600080fd5b506104f661164e565b3480156107a057600080fd5b506104f6611654565b3480156107b557600080fd5b5061065461165a565b3480156107ca57600080fd5b5061042161165f565b3480156107df57600080fd5b50610421611665565b3480156107f457600080fd5b5061042161166e565b34801561080957600080fd5b5061042161180e565b61040a6004803603606081101561082857600080fd5b506001600160a01b03813581169160208101359091169060400135610d5f565b34801561085457600080fd5b506104f6611814565b34801561086957600080fd5b506104216004803603602081101561088057600080fd5b50356001600160a01b031661181a565b34801561089c57600080fd5b50610654611835565b3480156108b157600080fd5b5061065461183a565b3480156108c657600080fd5b50610421600480360360208110156108dd57600080fd5b50356001600160a01b031661183f565b3480156108f957600080fd5b506104f661185a565b34801561090e57600080fd5b50610654611860565b34801561092357600080fd5b506104f6611865565b34801561093857600080fd5b5061040a6004803603604081101561094f57600080fd5b60ff8235169190810190604081016020820135600160201b81111561097357600080fd5b82018360208201111561098557600080fd5b803590602001918460018302840111600160201b831117156109a657600080fd5b50909250905061186b565b3480156109bd57600080fd5b50610654611b33565b3480156109d257600080fd5b506104f6611b38565b3480156109e757600080fd5b506104f6611b3e565b3480156109fc57600080fd5b50610a05611b44565b604080519115158252519081900360200190f35b348015610a2557600080fd5b506104f6611b4d565b348015610a3a57600080fd5b506104f6611b53565b348015610a4f57600080fd5b506104b361165a565b348015610a6457600080fd5b5061040a60048036036040811015610a7b57600080fd5b810190602081018135600160201b811115610a9557600080fd5b820183602082011115610aa757600080fd5b803590602001918460018302840111600160201b83111715610ac857600080fd5b919390929091602081019035600160201b811115610ae557600080fd5b820183602082011115610af757600080fd5b803590602001918460018302840111600160201b83111715610b1857600080fd5b509092509050611b59565b348015610b2f57600080fd5b506106546122eb565b348015610b4457600080fd5b506104216122f0565b348015610b5957600080fd5b5061042161248d565b348015610b6e57600080fd5b5061042160048036036040811015610b8557600080fd5b506001600160a01b0381358116916020013516612498565b348015610ba957600080fd5b506104216124c5565b348015610bbe57600080fd5b506104f66124cb565b348015610bd357600080fd5b5061040a60048036036040811015610bea57600080fd5b60ff8235169190810190604081016020820135600160201b811115610c0e57600080fd5b820183602082011115610c2057600080fd5b803590602001918460018302840111600160201b83111715610c4157600080fd5b5090925090506124d1565b348015610c5857600080fd5b5061042160048036036040811015610c6f57600080fd5b506001600160a01b03813581169160200135166126f4565b348015610c9357600080fd5b506104f661271f565b348015610ca857600080fd5b506104f6612725565b348015610cbd57600080fd5b5061042161272b565b348015610cd257600080fd5b50610654612738565b348015610ce757600080fd5b5061042160048036036060811015610cfe57600080fd5b506001600160a01b03813581169160208101358216916040909101351661273d565b348015610d2c57600080fd5b506104f6612772565b348015610d4157600080fd5b50610421612778565b348015610d5657600080fd5b506104f661277e565b6040805162461bcd60e51b815260206004820152600d60248201526c1b9bdd081cdd5c1c1bdc9d1959609a1b604482015290519081900360640190fd5b60035481565b610daa6146b9565b610db26146b9565b6001600160a01b0383166000818152600b60209081526040808320548552838352600c82528083205485830152928252600d9052819020549082015290505b919050565b606481565b6108fc81565b61200181565b60603361200014610e495760405162461bcd60e51b815260040180806020018281038252602f81526020018061489c602f913960400191505060405180910390fd5b60005460ff16610e8c576638d7ea4c6800006001908155662386f26fc1000060025568056bc75e2d631000006003556108fc6011556000805460ff191690911790555b610e946146d7565b610edb610ed685858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061278492505050565b6127a9565b90506000610ef0610eeb836127f3565b612841565b90506000606060ff831660041415610f1557610f0b846128f8565b9092509050610f6c565b60ff831660051415610f2a57610f0b84612ad8565b6040805162461bcd60e51b8152602060048201526012602482015271756e6b6e6f776e206576656e74207479706560701b604482015290519081900360640190fd5b63ffffffff821615610fb8576040805163ffffffff84168152905160ff8516917f391d6e5ea6ab6c49b9a0abb1782cae5def8d711f973b00c729658c0b2a80b31b919081900360200190a25b979650505050505050565b6001600160a01b031660009081526006602052604090205490565b600581565b600181565b61200581565b60015481565b606581565b662386f26fc1000081565b600381565b620a8c0081565b61100181565b6102ca81565b600881565b60105460ff166002141561106d576040805162461bcd60e51b815260206004820152600e60248201526d4e6f2072652d656e7472616e637960901b604482015290519081900360640190fd5b6010805460ff19166002179055806402540be400340615801561109557506402540be4008106155b6110e6576040805162461bcd60e51b815260206004820152601c60248201527f707265636973696f6e206c6f737320696e20636f6e76657273696f6e00000000604482015290519081900360640190fd5b60005460ff16611129576638d7ea4c6800006001908155662386f26fc1000060025568056bc75e2d631000006003556108fc6011556000805460ff191690911790555b600154341015611177576040805162461bcd60e51b81526020600482015260146024820152736e6f7420656e6f7567682072656c61792066656560601b604482015290519081900360640190fd5b600354821015611232573360009081526005602090815260408083206001600160a01b038716845290915290205482146111e9576040805162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a5908185b5bdd5b9d60921b604482015290519081900360640190fd5b6002548211611232576040805162461bcd60e51b815260206004820152601060248201526f6e6f7420656e6f7567682066756e647360801b604482015290519081900360640190fd5b3360009081526007602090815260408083206001600160a01b03871684529091529020544210156112aa576040805162461bcd60e51b815260206004820152601a60248201527f70656e64696e6720756e64656c65676174696f6e206578697374000000000000604482015290519081900360640190fd5b604080518082018252601081526f6e6f7420656e6f7567682066756e647360801b602080830191909152336000908152600582528381206001600160a01b03881682529091529182205461130591859063ffffffff612cf416565b9050801561134d57600254811161134d5760405162461bcd60e51b81526004018080602001828103825260258152602001806148776025913960400191505060405180910390fd5b6000611364846402540be40063ffffffff612d8b16565b600254909150349060009061138090839063ffffffff612dd416565b6040805160038082526080820190925291925060609190816020015b606081526020019060019003908161139c5790505090506113bc33612e16565b816000815181106113c957fe5b60200260200101819052506113e6886001600160a01b0316612e16565b816001815181106113f357fe5b602002602001018190525061140784612e39565b8160028151811061141457fe5b60200260200101819052506060611434600261142f84612e4c565b612ed6565b8051602080830191909120600f80546000908152600a845260408082209390935581546001908101909255338152600c909352912080549091019055905061148542620a8c0063ffffffff612f5c16565b3360009081526007602090815260408083206001600160a01b038e16845290915290205561200063f7a251d76010836114c9876402540be40063ffffffff612d8b16565b6040518463ffffffff1660e01b8152600401808460ff1660ff16815260200180602001838152602001828103825284818151815260200191508051906020019080838360005b8381101561152757818101518382015260200161150f565b50505050905090810190601f1680156115545780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b15801561157557600080fd5b505af1158015611589573d6000803e3d6000fd5b5050604051611004925085156108fc02915085906000818181858888f193505050501580156115bc573d6000803e3d6000fd5b506002546040516110029180156108fc02916000818181858888f193505050501580156115ed573d6000803e3d6000fd5b50604080518981526020810185905281516001600160a01b038c169233927fdf0b6ac27f3f3bb31cee3dab0f4fe40cc19c6a3f8daaec52e06b261e58a12519929081900390910190a350506010805460ff1916600117905550505050505050565b61200681565b61200081565b600081565b60025481565b6402540be40081565b60105460009060ff16600214156116bd576040805162461bcd60e51b815260206004820152600e60248201526d4e6f2072652d656e7472616e637960901b604482015290519081900360640190fd5b506010805460ff191660021790553360009081526008602052604090205480611724576040805162461bcd60e51b81526020600482015260146024820152736e6f20756e64656c6567617465642066756e647360601b604482015290519081900360640190fd5b336000818152600860205260408082208290556011549051919291849084818181858888f193505050503d806000811461177a576040519150601f19603f3d011682016040523d82523d6000602084013e61177f565b606091505b50509050806117c7576040805162461bcd60e51b815260206004820152600f60248201526e1d1c985b9cd9995c8819985a5b1959608a1b604482015290519081900360640190fd5b60408051838152905133917fc712d133b8d448221aaed2198ed1f0db6dfc860fb01bc3a630916fe6cbef946f919081900360200190a2506010805460ff1916600117905590565b60035490565b61100581565b6001600160a01b031660009081526004602052604090205490565b600281565b601081565b6001600160a01b031660009081526008602052604090205490565b61100881565b600b81565b61200381565b33612000146118ab5760405162461bcd60e51b815260040180806020018281038252602f81526020018061489c602f913960400191505060405180910390fd5b60005460ff166118ee576638d7ea4c6800006001908155662386f26fc1000060025568056bc75e2d631000006003556108fc6011556000805460ff191690911790555b6118f66146d7565b611938610ed684848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061278492505050565b905060008060606000805b61194c86612fb6565b156119b7578061196957611962610eeb876127f3565b94506119af565b80600114156119855761197e610eeb876127f3565b93506119af565b80600214156119aa5761199f61199a876127f3565b612fd7565b9250600191506119af565b6119b7565b600101611943565b816119fd576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b611a0683613047565b611a49576040805162461bcd60e51b815260206004820152600f60248201526e0eee4dedcce40e0c2c6d640d0c2e6d608b1b604482015290519081900360640190fd5b611a55610ed684612784565b95506000611a65610eeb886127f3565b9050611a6f6146d7565b611a7888612fb6565b15611a9b57611a94610ed6611a8f61199a8b6127f3565b612784565b9050611adc565b6040805162461bcd60e51b8152602060048201526011602482015270656d7074792061636b207061636b61676560781b604482015290519081900360640190fd5b60ff821660011415611af857611af381888861309b565b611b26565b60ff821660021415611b0f57611af3818888613452565b60ff821660031415610f2a57611af381888861371f565b5050505050505050505050565b600981565b61100781565b61100681565b60005460ff1681565b61200281565b61300081565b60005460ff16611bb0576040805162461bcd60e51b815260206004820152601960248201527f74686520636f6e7472616374206e6f7420696e69742079657400000000000000604482015290519081900360640190fd5b3361100714611bf05760405162461bcd60e51b815260040180806020018281038252602e8152602001806147ed602e913960400191505060405180910390fd5b611c5184848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600a81526972656c6179657246656560b01b60208201529150613a849050565b15611db75760208114611cab576040805162461bcd60e51b815260206004820152601d60248201527f6c656e677468206f662072656c61796572466565206d69736d61746368000000604482015290519081900360640190fd5b604080516020601f8401819004810282018101909252828152600091611ce991858580838501838280828437600092019190915250613b6b92505050565b90506003548110611d2b5760405162461bcd60e51b815260040180806020018281038252602e81526020018061481b602e913960400191505060405180910390fd5b6002548111611d6b5760405162461bcd60e51b815260040180806020018281038252602e815260200180614849602e913960400191505060405180910390fd5b6402540be400810615611daf5760405162461bcd60e51b815260040180806020018281038252602c8152602001806147c1602c913960400191505060405180910390fd5b600155612259565b611e1b84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600d81526c62534352656c6179657246656560981b60208201529150613a849050565b15611f7d5760208114611e75576040805162461bcd60e51b815260206004820181905260248201527f6c656e677468206f662062534352656c61796572466565206d69736d61746368604482015290519081900360640190fd5b604080516020601f8401819004810282018101909252828152600091611eb391858580838501838280828437600092019190915250613b6b92505050565b905080611ef15760405162461bcd60e51b81526004018080602001828103825260228152602001806148cb6022913960400191505060405180910390fd5b6001548110611f315760405162461bcd60e51b815260040180806020018281038252602e815260200180614741602e913960400191505060405180910390fd5b6402540be400810615611f755760405162461bcd60e51b815260040180806020018281038252602f815260200180614712602f913960400191505060405180910390fd5b600255612259565b611fe184848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600d81526c36b4b72232b632b3b0ba34b7b760991b60208201529150613a849050565b156120c3576020811461203b576040805162461bcd60e51b815260206004820181905260248201527f6c656e677468206f66206d696e44656c65676174696f6e206d69736d61746368604482015290519081900360640190fd5b604080516020601f840181900481028201810190925282815260009161207991858580838501838280828437600092019190915250613b6b92505050565b905060015481116120bb5760405162461bcd60e51b815260040180806020018281038252603181526020018061476f6031913960400191505060405180910390fd5b600355612259565b61212584848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600b81526a7472616e7366657247617360a81b60208201529150613a849050565b1561221c576020811461217f576040805162461bcd60e51b815260206004820152601e60248201527f6c656e677468206f66207472616e73666572476173206d69736d617463680000604482015290519081900360640190fd5b604080516020601f84018190048102820181019092528281526000916121bd91858580838501838280828437600092019190915250613b6b92505050565b905060008111612214576040805162461bcd60e51b815260206004820152601e60248201527f746865207472616e736665724761732063616e6e6f74206265207a65726f0000604482015290519081900360640190fd5b601155612259565b6040805162461bcd60e51b815260206004820152600d60248201526c756e6b6e6f776e20706172616d60981b604482015290519081900360640190fd5b7f6cdb0ac70ab7f2e2d035cca5be60d89906f2dede7648ddbd7402189c1eeed17a848484846040518080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600083820152604051601f909101601f19169092018290039850909650505050505050a150505050565b600481565b60105460009060ff166002141561233f576040805162461bcd60e51b815260206004820152600e60248201526d4e6f2072652d656e7472616e637960901b604482015290519081900360640190fd5b506010805460ff1916600217905533600090815260066020526040902054806123a3576040805162461bcd60e51b81526020600482015260116024820152701b9bc81c195b991a5b99c81c995dd85c99607a1b604482015290519081900360640190fd5b336000818152600660205260408082208290556011549051919291849084818181858888f193505050503d80600081146123f9576040519150601f19603f3d011682016040523d82523d6000602084013e6123fe565b606091505b5050905080612446576040805162461bcd60e51b815260206004820152600f60248201526e1d1c985b9cd9995c8819985a5b1959608a1b604482015290519081900360640190fd5b60408051838152905133917f83b78188b13346b2ffb484da70d42ee27de7fbf9f2bd8045269e10ed643ccd76919081900360200190a2506010805460ff1916600117905590565b6638d7ea4c68000081565b6001600160a01b038083166000908152600760209081526040808320938516835292905220545b92915050565b60015490565b61100281565b33612000146125115760405162461bcd60e51b815260040180806020018281038252602f81526020018061489c602f913960400191505060405180910390fd5b60005460ff16612554576638d7ea4c6800006001908155662386f26fc1000060025568056bc75e2d631000006003556108fc6011556000805460ff191690911790555b61259382828080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061304792505050565b6125d6576040805162461bcd60e51b815260206004820152600f60248201526e0eee4dedcce40e0c2c6d640d0c2e6d608b1b604482015290519081900360640190fd5b6125de6146d7565b612620610ed684848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061278492505050565b90506000612630610eeb836127f3565b905061263a6146d7565b61264383612fb6565b156126615761265a610ed6611a8f61199a866127f3565b90506126a7565b6040805162461bcd60e51b8152602060048201526016602482015275656d707479206661696c2061636b207061636b61676560501b604482015290519081900360640190fd5b60ff8216600114156126c1576126bc81613b70565b6126eb565b60ff8216600214156126d6576126bc81613d8a565b60ff821660031415610f2a576126bc81613eb4565b5050505b505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b61100381565b61200481565b68056bc75e2d6310000081565b601181565b6001600160a01b0392831660009081526009602090815260408083209486168352938152838220929094168152925290205490565b61100081565b60115481565b61100481565b61278c6146f7565b506040805180820190915281518152602082810190820152919050565b6127b16146d7565b6127ba82614019565b6127c357600080fd5b60006127d28360200151614053565b60208085015160408051808201909152868152920190820152915050919050565b6127fb6146f7565b61280482612fb6565b61280d57600080fd5b6020820151600061281d826140b6565b80830160209586015260408051808201909152908152938401919091525090919050565b80516000901580159061285657508151602110155b61285f57600080fd5b600061286e8360200151614053565b905080836000015110156128c9576040805162461bcd60e51b815260206004820152601a60248201527f6c656e677468206973206c657373207468616e206f6666736574000000000000604482015290519081900360640190fd5b8251602080850151830180519284900392918310156128ef57826020036101000a820491505b50949350505050565b600060606000806000805b61290c87612fb6565b1561295e578261292e57612927612922886127f3565b6141e9565b9150612953565b826001141561294e57612943610eeb886127f3565b905060019350612953565b61295e565b826001019250612903565b836129a4576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b60006110046001600160a01b031663727be1f8836040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b1580156129ee57600080fd5b505af1158015612a02573d6000803e3d6000fd5b505050506040513d6020811015612a1857600080fd5b5051905080612a3d57612a2f600484846065614203565b965096505050505050612ad3565b6001600160a01b038316600090815260066020526040902054612a66908363ffffffff612f5c16565b6001600160a01b038416600081815260066020908152604091829020939093558051858152905191927f7cc266c7b444f808013fa187f7b904d470a051a6564e78f482aa496581ba4bf892918290030190a260408051600080825260208201909252909750955050505050505b915091565b6000606060008060008060005b612aee88612fb6565b15612b575783612b0b57612b04612922896127f3565b9250612b4c565b8360011415612b2757612b20612922896127f3565b9150612b4c565b8360021415612b4757612b3c610eeb896127f3565b905060019450612b4c565b612b57565b836001019350612ae5565b84612b9d576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b60006110046001600160a01b031663727be1f8836040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b158015612be757600080fd5b505af1158015612bfb573d6000803e3d6000fd5b505050506040513d6020811015612c1157600080fd5b5051905080612c3757612c28600585846065614203565b97509750505050505050612ad3565b6001600160a01b038085166000818152600760209081526040808320948816835293815283822082905591815260089091522054612c7b908363ffffffff612f5c16565b6001600160a01b0380861660008181526008602090815260409182902094909455805186815290519287169391927f35a799836f74fac7eccf5c73902823b970543d2274d3b93d8da3d37a255772a2929181900390910190a3604080516000808252602082019092529098509650505050505050915091565b60008184841115612d835760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612d48578181015183820152602001612d30565b50505050905090810190601f168015612d755780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000612dcd83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506142ff565b9392505050565b6000612dcd83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612cf4565b60408051600560a21b8318601482015260348101909152606090612dcd81614364565b60606124bf612e47836143ba565b614364565b6060815160001415612e6d5750604080516000815260208101909152610df1565b606082600081518110612e7c57fe5b602002602001015190506000600190505b8351811015612ebd57612eb382858381518110612ea657fe5b60200260200101516144a0565b9150600101612e8d565b50612dcd612ed0825160c060ff1661451d565b826144a0565b6040805160028082526060828101909352829190816020015b6060815260200190600190039081612eef579050509050612f128460ff16612e39565b81600081518110612f1f57fe5b6020026020010181905250612f3383614364565b81600181518110612f4057fe5b6020026020010181905250612f5481612e4c565b949350505050565b600082820183811015612dcd576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000612fc06146f7565b505080518051602091820151919092015191011190565b8051606090612fe557600080fd5b6000612ff48360200151614053565b83516040805191839003808352601f19601f820116830160200190915291925060609082801561302b576020820181803683370190505b50905060008160200190506128ef848760200151018285614615565b8051602080830191909120600e546000908152600a909252604082205480821461307657600092505050610df1565b5050600e80546000908152600a60205260408120558054600190810190915592915050565b60008060008060005b6130ad88612fb6565b1561311657836130ca576130c3612922896127f3565b925061310b565b83600114156130e6576130df612922896127f3565b915061310b565b8360021415613106576130fb610eeb896127f3565b90506001945061310b565b613116565b8360010193506130a4565b8461315c576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b6000613173826402540be40063ffffffff61466016565b6001600160a01b0385166000908152600b602052604090208054600019019055905060ff8816600114156132b95760ff8716156131e6576040805162461bcd60e51b815260206004820152600c60248201526b77726f6e672073746174757360a01b604482015290519081900360640190fd5b6001600160a01b03841660009081526004602052604090205461320f908263ffffffff612f5c16565b6001600160a01b03808616600090815260046020908152604080832094909455600581528382209287168252919091522054613251908263ffffffff612f5c16565b6001600160a01b038086166000818152600560209081526040808320948916808452948252918290209490945580518581529051929391927f9a57c81564ab02642f34fd87e41baa9b074c18342cec3b7268b62bf752018fd1929181900390910190a3613447565b60ff881661340b576001600160a01b0384166000908152600860205260409020546132ea908263ffffffff612f5c16565b6001600160a01b0385166000908152600860209081526040808320939093558251630e4f7c3f60e31b81526004810185905292516110049363727be1f89360248083019493928390030190829087803b15801561334657600080fd5b505af115801561335a573d6000803e3d6000fd5b505050506040513d602081101561337057600080fd5b50516133b9576040805162461bcd60e51b81526020600482015260136024820152721dda5d1a191c985dc8189b988819985a5b1959606a1b604482015290519081900360640190fd5b6040805182815260ff8916602082015281516001600160a01b0380871693908816927fcbd481ae600289fad8c0484d07ce0ffe4f010d7c844ecfdeaf2a13fead52886e929081900390910190a3613447565b6040805162461bcd60e51b815260206004820152600c60248201526b77726f6e672073746174757360a01b604482015290519081900360640190fd5b505050505050505050565b60008060008060005b61346488612fb6565b156134cd57836134815761347a612922896127f3565b92506134c2565b836001141561349d57613496612922896127f3565b91506134c2565b83600214156134bd576134b2610eeb896127f3565b9050600194506134c2565b6134cd565b83600101935061345b565b84613513576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b600061352a826402540be40063ffffffff61466016565b6001600160a01b0385166000908152600c602052604090208054600019019055905060ff8816600114156136a95760ff87161561359d576040805162461bcd60e51b815260206004820152600c60248201526b77726f6e672073746174757360a01b604482015290519081900360640190fd5b6001600160a01b0384166000908152600460205260409020546135c6908263ffffffff612dd416565b6001600160a01b03808616600090815260046020908152604080832094909455600581528382209287168252919091522054613608908263ffffffff612dd416565b6001600160a01b0380861660009081526005602090815260408083209388168352929052205561364142620a8c0063ffffffff612f5c16565b6001600160a01b038086166000818152600760209081526040808320948916808452948252918290209490945580518581529051929391927fd6f878a5bcbbe79a64e6418bb0d56aaa20b9a60587d45749819df88dfc7c3c44929181900390910190a3613447565b60ff881661340b576001600160a01b03808516600081815260076020908152604080832094881680845294825280832092909255815185815260ff8c169181019190915281517f4417d10c1e33efa83a770b8d4f47176e78c08c1298d534901ad3b16bb585fa2e929181900390910190a3613447565b6000806000806000805b61373289612fb6565b156137b7578461374f576137486129228a6127f3565b93506137ac565b846001141561376b576137646129228a6127f3565b92506137ac565b8460021415613787576137806129228a6127f3565b91506137ac565b84600314156137a75761379c610eeb8a6127f3565b9050600195506137ac565b6137b7565b846001019450613729565b856137fd576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b6000613814826402540be40063ffffffff61466016565b6001600160a01b0386166000908152600d602052604090208054600019019055905060ff8916600114156139e75760ff881615613887576040805162461bcd60e51b815260206004820152600c60248201526b77726f6e672073746174757360a01b604482015290519081900360640190fd5b6001600160a01b038086166000908152600560209081526040808320938816835292905220546138bd908263ffffffff612dd416565b6001600160a01b038681166000908152600560209081526040808320898516845290915280822093909355908516815220546138f99082612f5c565b6001600160a01b0380871660009081526005602090815260408083209388168352929052205561393242620a8c0063ffffffff612f5c16565b6001600160a01b038087166000908152600960209081526040808320898516845282528083209388168352929052205561397542620a8c0063ffffffff612f5c16565b6001600160a01b038087166000818152600960209081526040808320898616808552908352818420958b1680855295835292819020959095558451868152945191947f78bffae3f8c6691ac7fc1a3bff800cb2d612f5ad9ae5b0444cfe2eb15c189e18929081900390910190a4613a78565b60ff891661340b576001600160a01b038581166000818152600960209081526040808320898616808552818452828520968a16808652968452828520859055908352818420818552835281842093909355805186815260ff8e169281019290925280519293927fb93bee5c59f85ede6b074a99f4ffcd3e3fc0d5c3d8156de331de89a49e0ce77c9281900390910190a45b50505050505050505050565b6000816040516020018082805190602001908083835b60208310613ab95780518252601f199092019160209182019101613a9a565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405280519060200120836040516020018082805190602001908083835b60208310613b275780518252601f199092019160209182019101613b08565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040528051906020012014905092915050565b015190565b60008060008060005b613b8286612fb6565b15613beb5783613b9f57613b98612922876127f3565b9250613be0565b8360011415613bbb57613bb4612922876127f3565b9150613be0565b8360021415613bdb57613bd0610eeb876127f3565b905060019450613be0565b613beb565b836001019350613b79565b84613c31576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b6000613c48826402540be40063ffffffff61466016565b6001600160a01b0385166000908152600b6020908152604080832080546000190190556008909152902054909150613c86908263ffffffff612f5c16565b6001600160a01b0385166000908152600860209081526040808320939093558251630e4f7c3f60e31b81526004810185905292516110049363727be1f89360248083019493928390030190829087803b158015613ce257600080fd5b505af1158015613cf6573d6000803e3d6000fd5b505050506040513d6020811015613d0c57600080fd5b5051613d55576040805162461bcd60e51b81526020600482015260136024820152721dda5d1a191c985dc8189b988819985a5b1959606a1b604482015290519081900360640190fd5b6040516001907ff83de021914a4585482db5ca47d520a5657165b443fa2c7ef8ed4635f054da9b90600090a250505050505050565b60008060008060005b613d9c86612fb6565b15613e055783613db957613db2612922876127f3565b9250613dfa565b8360011415613dd557613dce612922876127f3565b9150613dfa565b8360021415613df557613dea610eeb876127f3565b905060019450613dfa565b613e05565b836001019350613d93565b84613e4b576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b6001600160a01b038084166000908152600c60209081526040808320805460001901905560078252808320938616835292905281812081905590516002917ff83de021914a4585482db5ca47d520a5657165b443fa2c7ef8ed4635f054da9b91a2505050505050565b6000806000806000805b613ec787612fb6565b15613f4c5784613ee457613edd612922886127f3565b9350613f41565b8460011415613f0057613ef9612922886127f3565b9250613f41565b8460021415613f1c57613f15612922886127f3565b9150613f41565b8460031415613f3c57613f31610eeb886127f3565b905060019550613f41565b613f4c565b846001019450613ebe565b85613f92576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b6001600160a01b038481166000908152600d602090815260408083208054600019019055600982528083208785168085528184528285209588168552948352818420849055825280832093835292905281812081905590516003917ff83de021914a4585482db5ca47d520a5657165b443fa2c7ef8ed4635f054da9b91a250505050505050565b805160009061402a57506000610df1565b6020820151805160001a9060c082101561404957600092505050610df1565b5060019392505050565b8051600090811a608081101561406d576000915050610df1565b60b8811080614088575060c08110801590614088575060f881105b15614097576001915050610df1565b60c08110156140ab5760b519019050610df1565b60f519019050610df1565b80516000908190811a60808110156140d157600191506141e2565b60b88110156140e657607e19810191506141e2565b60c081101561416057600060b78203600186019550806020036101000a86510491506001810182019350508083101561415a576040805162461bcd60e51b81526020600482015260116024820152706164646974696f6e206f766572666c6f7760781b604482015290519081900360640190fd5b506141e2565b60f88110156141755760be19810191506141e2565b600060f78203600186019550806020036101000a8651049150600181018201935050808310156141e0576040805162461bcd60e51b81526020600482015260116024820152706164646974696f6e206f766572666c6f7760781b604482015290519081900360640190fd5b505b5092915050565b80516000906015146141fa57600080fd5b6124bf82612841565b6000606061421c846402540be40063ffffffff612d8b16565b60408051600480825260a0820190925291955060609190816020015b606081526020019060019003908161423857905050905061425b8760ff16612e39565b8160008151811061426857fe5b6020026020010181905250614285866001600160a01b0316612e16565b8160018151811061429257fe5b60200260200101819052506142a685612e39565b816002815181106142b357fe5b60200260200101819052506142cd8463ffffffff16612e39565b816003815181106142da57fe5b602002602001018190525060606142f082612e4c565b94989497509395505050505050565b6000818361434e5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315612d48578181015183820152602001612d30565b50600083858161435a57fe5b0495945050505050565b6060815160011480156143965750607f60f81b8260008151811061438457fe5b01602001516001600160f81b03191611155b156143a2575080610df1565b6124bf6143b48351608060ff1661451d565b836144a0565b604080516020808252818301909252606091829190602082018180368337505050602081018490529050600067ffffffffffffffff1984166143fe57506018614422565b6fffffffffffffffffffffffffffffffff19841661441e57506010614422565b5060005b60208110156144585781818151811061443757fe5b01602001516001600160f81b0319161561445057614458565b600101614422565b60008160200390506060816040519080825280601f01601f19166020018201604052801561448d576020820181803683370190505b5080830196909652508452509192915050565b6060806040519050835180825260208201818101602087015b818310156144d15780518352602092830192016144b9565b50855184518101855292509050808201602086015b818310156144fe5780518352602092830192016144e6565b508651929092011591909101601f01601f191660405250905092915050565b606068010000000000000000831061456d576040805162461bcd60e51b815260206004820152600e60248201526d696e70757420746f6f206c6f6e6760901b604482015290519081900360640190fd5b604080516001808252818301909252606091602082018180368337019050509050603784116145c75782840160f81b816000815181106145a957fe5b60200101906001600160f81b031916908160001a90535090506124bf565b60606145d2856143ba565b90508381510160370160f81b826000815181106145eb57fe5b60200101906001600160f81b031916908160001a90535061460c82826144a0565b95945050505050565b8061461f576126ef565b5b6020811061463f578251825260209283019290910190601f1901614620565b915181516020939093036101000a6000190180199091169216919091179052565b60008261466f575060006124bf565b8282028284828161467c57fe5b0414612dcd5760405162461bcd60e51b81526004018080602001828103825260218152602001806147a06021913960400191505060405180910390fd5b60405180606001604052806003906020820280368337509192915050565b60405180604001604052806146ea6146f7565b8152602001600081525090565b60405180604001604052806000815260200160008152509056fe7468652042534352656c61796572466565206d6f642074656e20646563696d616c73206d757374206265207a65726f7468652042534352656c61796572466565206d757374206265206c657373207468616e2072656c61796572466565746865206d696e44656c65676174696f6e206d7573742062652067726561746572207468616e2072656c61796572466565536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f777468652072656c61796572466565206d6f642074656e20646563696d616c73206d757374206265207a65726f746865206d6573736167652073656e646572206d75737420626520676f7665726e616e636520636f6e74726163747468652072656c61796572466565206d757374206265206c657373207468616e206d696e44656c65676174696f6e7468652072656c61796572466565206d757374206265206d6f7265207468616e2042534352656c61796572466565696e73756666696369656e742062616c616e636520616674657220756e64656c6567617465746865206d6573736167652073656e646572206d7573742062652063726f737320636861696e20636f6e74726163747468652042534352656c61796572466565206d757374206e6f74206265207a65726fa164736f6c6343000604000a", }, { ContractAddr: common.HexToAddress(StakeHubContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/cfc0bd1127186a917ddc38fd38d22903034d3f0b", - Code: "608060405260043610620003265760003560e01c80638a4d3fa811620001b1578063d6ca429d11620000ee578063e992aaf511620000a1578063f80a34021162000078578063f80a34021462000a1a578063fb50b31f1462000a3f578063fc0c5ff11462000a64578063ff69ab611462000a7c57600080fd5b8063e992aaf514620009ae578063efdbf0e114620009c6578063f1f74d841462000a0257600080fd5b8063d6ca429d14620008fa578063d7c2dfc8146200091f578063d8ca511f1462000944578063daacdb66146200095c578063de88700b1462000974578063e8f67c3b146200099657600080fd5b8063b187bd261162000164578063c38fbec8116200013b578063c38fbec8146200086c578063c473318f1462000891578063cbb04d9d14620008a9578063d115a20614620008e257600080fd5b8063b187bd26146200080f578063baa7199e146200082f578063bdceadf3146200085457600080fd5b80638a4d3fa814620007375780638cd22b221462000755578063982ef0a7146200077a578063a43569b31462000791578063aad3ec9614620007c5578063ac43175114620007ea57600080fd5b80634d99dd161162000280578063663706d3116200023357806376e7d6d6116200020a57806376e7d6d614620006b55780638129fc1c14620006cd5780638456cb5914620006e557806386d5450614620006fd57600080fd5b8063663706d314620006075780636ec01b27146200063857806375cc7d89146200069057600080fd5b80634d99dd1614620005325780634e6fd6c4146200055757806359491871146200056f5780635e7cc1c9146200059457806363a036b514620005b957806364028fbd14620005f057600080fd5b80633840998811620002d9578063384099881462000441578063417c73a71462000459578063449ecfe6146200047e57806345211bfd14620004a35780634838d16514620004c85780634a49ac4c146200050d57600080fd5b8063046f7da2146200034d5780630661806e1462000365578063092193ab14620003905780630e9fbf5114620003a757806317b4f35314620003cc5780631fa8882b146200042a57600080fd5b3662000348576000546301000000900460ff166001146200034657600080fd5b005b600080fd5b3480156200035a57600080fd5b506200034662000a94565b3480156200037257600080fd5b506200037d60025481565b6040519081526020015b60405180910390f35b62000346620003a136600462007042565b62000af5565b348015620003b457600080fd5b5062000346620003c6366004620070ad565b6200107b565b348015620003d957600080fd5b5062000411620003eb366004620071d3565b80516020818301810180516011825292820191909301209152546001600160a01b031681565b6040516001600160a01b03909116815260200162000387565b3480156200043757600080fd5b506200037d603c81565b3480156200044e57600080fd5b506200037d60035481565b3480156200046657600080fd5b50620003466200047836600462007042565b62001378565b3480156200048b57600080fd5b50620003466200049d36600462007042565b620013c8565b348015620004b057600080fd5b5062000346620004c236600462007042565b6200157b565b348015620004d557600080fd5b50620004fc620004e736600462007042565b601a6020526000908152604090205460ff1681565b604051901515815260200162000387565b3480156200051a57600080fd5b50620003466200052c36600462007042565b62001756565b3480156200053f57600080fd5b50620003466200055136600462007220565b620017a3565b3480156200056457600080fd5b506200041161dead81565b3480156200057c57600080fd5b50620003466200058e36600462007265565b62001dc0565b348015620005a157600080fd5b5062000346620005b3366004620072d3565b62002ba7565b348015620005c657600080fd5b50620005de620005d8366004620072f3565b62002dad565b604051620003879493929190620073b0565b62000346620006013660046200746c565b6200343f565b3480156200061457600080fd5b506200037d6200062636600462007042565b60106020526000908152604090205481565b3480156200064557600080fd5b506200065d6200065736600462007042565b62003a14565b6040805182516001600160401b039081168252602080850151821690830152928201519092169082015260600162000387565b3480156200069d57600080fd5b5062000346620006af36600462007042565b62003abe565b348015620006c257600080fd5b506200037d60095481565b348015620006da57600080fd5b506200034662003c90565b348015620006f257600080fd5b506200034662003fa6565b3480156200070a57600080fd5b50620004116200071c36600462007042565b600f602052600090815260409020546001600160a01b031681565b3480156200074457600080fd5b506200037d670de0b6b3a764000081565b3480156200076257600080fd5b506200037d6200077436600462007220565b6200400c565b620003466200078b36600462007544565b620040c5565b3480156200079e57600080fd5b50620007b6620007b036600462007042565b62004761565b6040516200038791906200757e565b348015620007d257600080fd5b5062000346620007e436600462007220565b62004a4e565b348015620007f757600080fd5b50620003466200080936600462007604565b62004abb565b3480156200081c57600080fd5b5060005462010000900460ff16620004fc565b3480156200083c57600080fd5b50620003466200084e366004620076bd565b6200592a565b3480156200086157600080fd5b506200037d60085481565b3480156200087957600080fd5b50620003466200088b36600462007042565b62005af7565b3480156200089e57600080fd5b506200037d60045481565b348015620008b657600080fd5b50620008ce620008c836600462007042565b62005d8a565b604051620003879695949392919062007719565b348015620008ef57600080fd5b506200037d61271081565b3480156200090757600080fd5b50620003466200091936600462007786565b620061fd565b3480156200092c57600080fd5b50620003466200093e3660046200786f565b620063ff565b3480156200095157600080fd5b506200037d60075481565b3480156200096957600080fd5b506200037d60155481565b3480156200098157600080fd5b5060195462000411906001600160a01b031681565b348015620009a357600080fd5b506200037d60015481565b348015620009bb57600080fd5b506200037d60065481565b348015620009d357600080fd5b506200037d620009e5366004620071d3565b805160208183018101805160128252928201919093012091525481565b34801562000a0f57600080fd5b506200037d600a5481565b34801562000a2757600080fd5b506200037d62000a3936600462007220565b620064f5565b34801562000a4c57600080fd5b506200034662000a5e36600462007604565b62006566565b34801562000a7157600080fd5b506200037d60055481565b34801562000a8957600080fd5b506200037d60165481565b6019546001600160a01b0316331462000ac05760405163f2771a9960e01b815260040160405180910390fd5b6000805462ff0000191681556040517f62451d457bc659158be6e6247f56ec1df424a5c7597f71c20c2bc44e0965c8f99190a1565b336110001462000b2157604051630f22c43960e41b815261100060048201526024015b60405180910390fd5b6001600160a01b038082166000908152600f60209081526040808320548416808452600d835281842082516101608101845281548716815260018201548716948101949094526002810154909516918301919091526003840154606083015260048401805491949160808401919062000b9a90620078d5565b80601f016020809104026020016040519081016040528092919081815260200182805462000bc890620078d5565b801562000c195780601f1062000bed5761010080835404028352916020019162000c19565b820191906000526020600020905b81548152906001019060200180831162000bfb57829003601f168201915b505050505081526020016005820160405180608001604052908160008201805462000c4490620078d5565b80601f016020809104026020016040519081016040528092919081815260200182805462000c7290620078d5565b801562000cc35780601f1062000c975761010080835404028352916020019162000cc3565b820191906000526020600020905b81548152906001019060200180831162000ca557829003601f168201915b5050505050815260200160018201805462000cde90620078d5565b80601f016020809104026020016040519081016040528092919081815260200182805462000d0c90620078d5565b801562000d5d5780601f1062000d315761010080835404028352916020019162000d5d565b820191906000526020600020905b81548152906001019060200180831162000d3f57829003601f168201915b5050505050815260200160028201805462000d7890620078d5565b80601f016020809104026020016040519081016040528092919081815260200182805462000da690620078d5565b801562000df75780601f1062000dcb5761010080835404028352916020019162000df7565b820191906000526020600020905b81548152906001019060200180831162000dd957829003601f168201915b5050505050815260200160038201805462000e1290620078d5565b80601f016020809104026020016040519081016040528092919081815260200182805462000e4090620078d5565b801562000e915780601f1062000e655761010080835404028352916020019162000e91565b820191906000526020600020905b81548152906001019060200180831162000e7357829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152805161028081019182905260a09092019190600d84019060149082845b81548152602001906001019080831162000f1d575050509190925250505060408101519091506001600160a01b0316158062000f5a57508060e001515b1562000fcb57816001600160a01b03167ffc8bff675087dd2da069cc3fb517b9ed001e19750c0865241a5542dba1ba170d60405162000fbe9060208082526011908201527024a72b20a624a22fab20a624a220aa27a960791b604082015260600190565b60405180910390a2505050565b60408181015160c0830151519151632f303ebb60e11b81526001600160401b0390921660048301526001600160a01b031690635e607d769034906024016000604051808303818588803b1580156200102257600080fd5b505af115801562001037573d6000803e3d6000fd5b5050505050816001600160a01b03167fe34918ff1c7084970068b53fd71ad6d8b04e9f15d3886cbf006443e6cdc52ea63460405162000fbe91815260200190565b50565b3361100114620010a357604051630f22c43960e41b8152611001600482015260240162000b18565b600060118383604051620010b99291906200790b565b908152604051908190036020019020546001600160a01b03169050620010e1600b82620067ad565b620010ff5760405163fdf4600b60e01b815260040160405180910390fd5b6001600160a01b0381166000908152600d602052604081209062001125603c4262007931565b60165460008281526017602052604090205491925011620011595760405163bd52fcdb60e01b815260040160405180910390fd5b60008181526017602052604081208054600192906200117a90849062007954565b90915550506040516012906200119490879087906200790b565b908152602001604051809103902054600014158015620011e3575042603c60128787604051620011c69291906200790b565b908152602001604051809103902054620011e1919062007954565b105b156200120257604051631898eb6b60e01b815260040160405180910390fd5b60008062001212856002620067d0565b91509150816200123557604051631b919bb160e11b815260040160405180910390fd5b600284015460085460405163045bc4d160e41b815260048101919091526000916001600160a01b0316906345bc4d10906024016020604051808303816000875af115801562001288573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620012ae91906200796a565b9050620012bc85836200685a565b856001600160a01b03167f6e9a2ee7aee95665e3a774a212eb11441b217e3e4656ab9563793094689aabb283836002604051620012fc9392919062007984565b60405180910390a26002850154604051633041949b60e01b815261200591633041949b916200133a916001600160a01b0316908a90600401620079bf565b600060405180830381600087803b1580156200135557600080fd5b505af11580156200136a573d6000803e3d6000fd5b505050505050505050505050565b6019546001600160a01b03163314620013a45760405163f2771a9960e01b815260040160405180910390fd5b6001600160a01b03166000908152601a60205260409020805460ff19166001179055565b60005462010000900460ff1615620013f35760405163d7485e8f60e01b815260040160405180910390fd5b8062001401600b82620067ad565b6200141f5760405163fdf4600b60e01b815260040160405180910390fd5b6001600160a01b0382166000908152600d60205260409020600a81015460ff166200145d57604051634b6b857d60e01b815260040160405180910390fd5b6002805490820154604051630913db4760e01b81526001600160a01b03868116600483015290911690630913db4790602401602060405180830381865afa158015620014ad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620014d391906200796a565b1015620014f3576040516317b204bf60e11b815260040160405180910390fd5b4281600b01541115620015195760405163170cb76760e21b815260040160405180910390fd5b600a8101805460ff1916905560158054600191906000906200153d908490620079d9565b90915550506040516001600160a01b038416907f9390b453426557da5ebdc31f19a37753ca04addf656d32f35232211bb2af3f1990600090a2505050565b60005462010000900460ff1615620015a65760405163d7485e8f60e01b815260040160405180910390fd5b336000908152601a602052604090205460ff1615620015d85760405163b1d02c3d60e01b815260040160405180910390fd5b33620015e6600b82620067ad565b620016045760405163fdf4600b60e01b815260040160405180910390fd5b6001600160a01b0382166200162c57604051636520611b60e11b815260040160405180910390fd5b6001600160a01b038281166000908152600f6020526040902054161515806200166d57506001600160a01b03821660009081526013602052604090205460ff165b156200168c57604051631e6f587560e11b815260040160405180910390fd5b336000818152600d60205260409020600c8101544290620016b090603c9062007954565b1115620016d057604051631f92cdbd60e11b815260040160405180910390fd5b80546001600160a01b039081166000908152601060209081526040808320429081905585548986166001600160a01b031991821681178855600c880192909255818552600f9093528184208054958816959093168517909255519092917f6e4e747ca35203f16401c69805c7dd52fff67ef60b0ebc5c7fe16890530f223591a350505050565b6019546001600160a01b03163314620017825760405163f2771a9960e01b815260040160405180910390fd5b6001600160a01b03166000908152601a60205260409020805460ff19169055565b60005462010000900460ff1615620017ce5760405163d7485e8f60e01b815260040160405180910390fd5b336000908152601a602052604090205460ff1615620018005760405163b1d02c3d60e01b815260040160405180910390fd5b816200180e600b82620067ad565b6200182c5760405163fdf4600b60e01b815260040160405180910390fd5b816000036200184e57604051639811e0c760e01b815260040160405180910390fd5b6001600160a01b038084166000908152600d602090815260408083208151610160810183528154861681526001820154861693810193909352600281015490941690820152600383015460608201526004830180543394916080840191620018b690620078d5565b80601f0160208091040260200160405190810160405280929190818152602001828054620018e490620078d5565b8015620019355780601f10620019095761010080835404028352916020019162001935565b820191906000526020600020905b8154815290600101906020018083116200191757829003601f168201915b50505050508152602001600582016040518060800160405290816000820180546200196090620078d5565b80601f01602080910402602001604051908101604052809291908181526020018280546200198e90620078d5565b8015620019df5780601f10620019b357610100808354040283529160200191620019df565b820191906000526020600020905b815481529060010190602001808311620019c157829003601f168201915b50505050508152602001600182018054620019fa90620078d5565b80601f016020809104026020016040519081016040528092919081815260200182805462001a2890620078d5565b801562001a795780601f1062001a4d5761010080835404028352916020019162001a79565b820191906000526020600020905b81548152906001019060200180831162001a5b57829003601f168201915b5050505050815260200160028201805462001a9490620078d5565b80601f016020809104026020016040519081016040528092919081815260200182805462001ac290620078d5565b801562001b135780601f1062001ae75761010080835404028352916020019162001b13565b820191906000526020600020905b81548152906001019060200180831162001af557829003601f168201915b5050505050815260200160038201805462001b2e90620078d5565b80601f016020809104026020016040519081016040528092919081815260200182805462001b5c90620078d5565b801562001bad5780601f1062001b815761010080835404028352916020019162001bad565b820191906000526020600020905b81548152906001019060200180831162001b8f57829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152805161028081019182905260a09092019190600d84019060149082845b81548152602001906001019080831162001c39575050509190925250505060408082015190516326ccee8b60e11b81526001600160a01b0385811660048301526024820188905292935060009290911690634d99dd16906044016020604051808303816000875af115801562001cb3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001cd991906200796a565b9050826001600160a01b0316866001600160a01b03167f3aace7340547de7b9156593a7652dc07ee900cea3fd8f82cb6c9d38b40829802878460405162001d2a929190918252602082015260400190565b60405180910390a3856001600160a01b0316836001600160a01b03160362001d575762001d57866200694f565b6040808301519051633041949b60e01b815261200591633041949b9162001d8491908790600401620079bf565b600060405180830381600087803b15801562001d9f57600080fd5b505af115801562001db4573d6000803e3d6000fd5b50505050505050505050565b60005462010000900460ff161562001deb5760405163d7485e8f60e01b815260040160405180910390fd5b336000908152601a602052604090205460ff161562001e1d5760405163b1d02c3d60e01b815260040160405180910390fd5b8362001e2b600b82620067ad565b62001e495760405163fdf4600b60e01b815260040160405180910390fd5b8362001e57600b82620067ad565b62001e755760405163fdf4600b60e01b815260040160405180910390fd5b8360000362001e9757604051639811e0c760e01b815260040160405180910390fd5b846001600160a01b0316866001600160a01b03160362001eca5760405163f0e3e62960e01b815260040160405180910390fd5b6001600160a01b038087166000908152600d60209081526040808320815161016081018352815486168152600182015486169381019390935260028101549094169082015260038301546060820152600483018054339491608084019162001f3290620078d5565b80601f016020809104026020016040519081016040528092919081815260200182805462001f6090620078d5565b801562001fb15780601f1062001f855761010080835404028352916020019162001fb1565b820191906000526020600020905b81548152906001019060200180831162001f9357829003601f168201915b505050505081526020016005820160405180608001604052908160008201805462001fdc90620078d5565b80601f01602080910402602001604051908101604052809291908181526020018280546200200a90620078d5565b80156200205b5780601f106200202f576101008083540402835291602001916200205b565b820191906000526020600020905b8154815290600101906020018083116200203d57829003601f168201915b505050505081526020016001820180546200207690620078d5565b80601f0160208091040260200160405190810160405280929190818152602001828054620020a490620078d5565b8015620020f55780601f10620020c957610100808354040283529160200191620020f5565b820191906000526020600020905b815481529060010190602001808311620020d757829003601f168201915b505050505081526020016002820180546200211090620078d5565b80601f01602080910402602001604051908101604052809291908181526020018280546200213e90620078d5565b80156200218f5780601f1062002163576101008083540402835291602001916200218f565b820191906000526020600020905b8154815290600101906020018083116200217157829003601f168201915b50505050508152602001600382018054620021aa90620078d5565b80601f0160208091040260200160405190810160405280929190818152602001828054620021d890620078d5565b8015620022295780601f10620021fd5761010080835404028352916020019162002229565b820191906000526020600020905b8154815290600101906020018083116200220b57829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152805161028081019182905260a09092019190600d84019060149082845b815481526020019060010190808311620022b557505050919092525050506001600160a01b038089166000908152600d60209081526040808320815161016081018352815486168152600182015486169381019390935260028101549094169082015260038301546060820152600483018054949550919390929160808401916200234090620078d5565b80601f01602080910402602001604051908101604052809291908181526020018280546200236e90620078d5565b8015620023bf5780601f106200239357610100808354040283529160200191620023bf565b820191906000526020600020905b815481529060010190602001808311620023a157829003601f168201915b5050505050815260200160058201604051806080016040529081600082018054620023ea90620078d5565b80601f01602080910402602001604051908101604052809291908181526020018280546200241890620078d5565b8015620024695780601f106200243d5761010080835404028352916020019162002469565b820191906000526020600020905b8154815290600101906020018083116200244b57829003601f168201915b505050505081526020016001820180546200248490620078d5565b80601f0160208091040260200160405190810160405280929190818152602001828054620024b290620078d5565b8015620025035780601f10620024d75761010080835404028352916020019162002503565b820191906000526020600020905b815481529060010190602001808311620024e557829003601f168201915b505050505081526020016002820180546200251e90620078d5565b80601f01602080910402602001604051908101604052809291908181526020018280546200254c90620078d5565b80156200259d5780601f1062002571576101008083540402835291602001916200259d565b820191906000526020600020905b8154815290600101906020018083116200257f57829003601f168201915b50505050508152602001600382018054620025b890620078d5565b80601f0160208091040260200160405190810160405280929190818152602001828054620025e690620078d5565b8015620026375780601f106200260b5761010080835404028352916020019162002637565b820191906000526020600020905b8154815290600101906020018083116200261957829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152805161028081019182905260a09092019190600d84019060149082845b815481526020019060010190808311620026c35750505050508152505090508060e001518015620027065750876001600160a01b0316836001600160a01b031614155b156200272557604051636468920360e01b815260040160405180910390fd5b6000805463ff0000001916630100000017815560408381015190516352e82ce560e11b81526001600160a01b038681166004830152602482018b90529091169063a5d059ca906044016020604051808303816000875af11580156200278e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620027b491906200796a565b9050600354811015620027da5760405163dc6f0bdd60e01b815260040160405180910390fd5b896001600160a01b0316846001600160a01b03161480156200286f57506002546040808501519051630913db4760e01b81526001600160a01b038d8116600483015290911690630913db4790602401602060405180830381865afa15801562002847573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200286d91906200796a565b105b156200288e576040516317b204bf60e11b815260040160405180910390fd5b600061271060065483620028a39190620079ef565b620028af919062007931565b9050600083604001516001600160a01b03168260405160006040518083038185875af1925050503d806000811462002904576040519150601f19603f3d011682016040523d82523d6000602084013e62002909565b606091505b50509050806200292c576040516312171d8360e31b815260040160405180910390fd5b620029388284620079d9565b60408086015190516317066a5760e21b81526001600160a01b03898116600483015292955060009290911690635c19a95c90869060240160206040518083038185885af11580156200298e573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190620029b591906200796a565b905060008060036101000a81548160ff021916908360ff160217905550866001600160a01b03168c6001600160a01b03168e6001600160a01b03167ffdac6e81913996d95abcc289e90f2d8bd235487ce6fe6f821e7d21002a1915b48e858960405162002a35939291909283526020830191909152604082015260600190565b60405180910390a460408051600280825260608201835260009260208301908036833701905050905086604001518160008151811062002a795762002a7962007a09565b60200260200101906001600160a01b031690816001600160a01b03168152505085604001518160018151811062002ab45762002ab462007a09565b6001600160a01b0390921660209283029190910190910152604051634484077560e01b81526120059063448407759062002af59084908c9060040162007a1f565b600060405180830381600087803b15801562002b1057600080fd5b505af115801562002b25573d6000803e3d6000fd5b505050508a1562002b97576120056001600160a01b031663e5ed5b1e898f6040518363ffffffff1660e01b815260040162002b62929190620079bf565b600060405180830381600087803b15801562002b7d57600080fd5b505af115801562002b92573d6000803e3d6000fd5b505050505b5050505050505050505050505050565b60005462010000900460ff161562002bd25760405163d7485e8f60e01b815260040160405180910390fd5b336000908152601a602052604090205460ff161562002c045760405163b1d02c3d60e01b815260040160405180910390fd5b3362002c12600b82620067ad565b62002c305760405163fdf4600b60e01b815260040160405180910390fd5b336000818152600d60205260409020600c810154429062002c5490603c9062007954565b111562002c7457604051631f92cdbd60e11b815260040160405180910390fd5b60098101546001600160401b03600160401b9091048116908516111562002cae5760405163dc81db8560e01b815260040160405180910390fd5b60098101546000906001600160401b03908116908616101562002cec57600982015462002ce69086906001600160401b031662007a4b565b62002d06565b600982015462002d06906001600160401b03168662007a4b565b60098301546001600160401b039182169250600160801b90041681111562002d415760405163dc81db8560e01b815260040160405180910390fd5b60098201805467ffffffffffffffff19166001600160401b03871690811790915542600c8401556040519081526001600160a01b038416907f78cdd96edf59e09cfd4d26ef6ef6c92d166effe6a40970c54821206d541932cb9060200160405180910390a25050505050565b6060806060600062002dc0600b62006a68565b9050808610156200343657841562002dd9578462002ddb565b805b945060008562002dec8884620079d9565b1162002e045762002dfe8783620079d9565b62002e06565b855b9050806001600160401b0381111562002e235762002e23620070f2565b60405190808252806020026020018201604052801562002e4d578160200160208202803683370190505b509450806001600160401b0381111562002e6b5762002e6b620070f2565b60405190808252806020026020018201604052801562002e95578160200160208202803683370190505b509350806001600160401b0381111562002eb35762002eb3620070f2565b60405190808252806020026020018201604052801562002ee857816020015b606081526020019060019003908162002ed25790505b50925060005b818110156200343357600062002f1262002f09838b62007954565b600b9062006a73565b6001600160a01b038082166000908152600d602090815260408083208151610160810183528154861681526001820154861693810193909352600281015490941690820152600383015460608201526004830180549495509193909291608084019162002f7f90620078d5565b80601f016020809104026020016040519081016040528092919081815260200182805462002fad90620078d5565b801562002ffe5780601f1062002fd25761010080835404028352916020019162002ffe565b820191906000526020600020905b81548152906001019060200180831162002fe057829003601f168201915b50505050508152602001600582016040518060800160405290816000820180546200302990620078d5565b80601f01602080910402602001604051908101604052809291908181526020018280546200305790620078d5565b8015620030a85780601f106200307c57610100808354040283529160200191620030a8565b820191906000526020600020905b8154815290600101906020018083116200308a57829003601f168201915b50505050508152602001600182018054620030c390620078d5565b80601f0160208091040260200160405190810160405280929190818152602001828054620030f190620078d5565b8015620031425780601f10620031165761010080835404028352916020019162003142565b820191906000526020600020905b8154815290600101906020018083116200312457829003601f168201915b505050505081526020016002820180546200315d90620078d5565b80601f01602080910402602001604051908101604052809291908181526020018280546200318b90620078d5565b8015620031dc5780601f10620031b057610100808354040283529160200191620031dc565b820191906000526020600020905b815481529060010190602001808311620031be57829003601f168201915b50505050508152602001600382018054620031f790620078d5565b80601f01602080910402602001604051908101604052809291908181526020018280546200322590620078d5565b8015620032765780601f106200324a5761010080835404028352916020019162003276565b820191906000526020600020905b8154815290600101906020018083116200325857829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152805161028081019182905260a09092019190600d84019060149082845b8154815260200190600101908083116200330257505050505081525050905080600001518884815181106200333b576200333b62007a09565b60200260200101906001600160a01b031690816001600160a01b0316815250508060e00151620033d45780604001516001600160a01b03166315d1f8986040518163ffffffff1660e01b8152600401602060405180830381865afa158015620033a8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620033ce91906200796a565b620033d7565b60005b878481518110620033ec57620033ec62007a09565b602002602001018181525050806080015186848151811062003412576200341262007a09565b60200260200101819052505050806200342b9062007a75565b905062002eee565b50505b92959194509250565b60005462010000900460ff16156200346a5760405163d7485e8f60e01b815260040160405180910390fd5b336000908152601a602052604090205460ff16156200349c5760405163b1d02c3d60e01b815260040160405180910390fd5b33620034aa600b82620067ad565b15620034c957604051635f28f62b60e01b815260040160405180910390fd5b6001600160a01b038881166000908152600f6020526040902054161515806200350a57506001600160a01b03881660009081526013602052604090205460ff165b156200352957604051631e6f587560e11b815260040160405180910390fd5b60006001600160a01b031660118888604051620035489291906200790b565b908152604051908190036020019020546001600160a01b0316141580620035925750601487876040516200357e9291906200790b565b9081526040519081900360200190205460ff165b15620035b1576040516311fdb94760e01b815260040160405180910390fd5b6000620035bf838062007a91565b604051602001620035d29291906200790b565b60408051601f1981840301815291815281516020928301206000818152600e90935291205490915060ff16156200361c5760405163c0bf414360e01b815260040160405180910390fd5b60025434906200363690670de0b6b3a76400009062007954565b81101562003657576040516317b204bf60e11b815260040160405180910390fd5b6001600160a01b038a166200367f57604051636520611b60e11b815260040160405180910390fd5b611388620036946040870160208801620072d3565b6001600160401b03161180620036da5750620036b76040860160208701620072d3565b6001600160401b0316620036cf6020870187620072d3565b6001600160401b0316115b80620037195750620036f36040860160208701620072d3565b6001600160401b03166200370e6060870160408801620072d3565b6001600160401b0316115b15620037385760405163dc81db8560e01b815260040160405180910390fd5b6200378362003748858062007a91565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525062006a8192505050565b620037a157604051635dba5ad760e01b815260040160405180910390fd5b620037af8989898962006c23565b620037cd57604051631647e3cb60e11b815260040160405180910390fd5b60006200381b84620037e0878062007a91565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525062006d5092505050565b90506200382a600b8562006e1a565b506000838152600e60209081526040808320805460ff191660019081179091556001600160a01b03808916808652600d9094529190932080548f83166001600160a01b031991821617825593810180548516909317909255600282018054918516919093161790915542600382015560048101620038aa8b8d8362007b39565b508560058201620038bc828262007c01565b5087905060098201620038d0828262007d3a565b505042600c8201556001600160a01b038c81166000908152600f60205260409081902080546001600160a01b031916928816929092179091555185906011906200391e908e908e906200790b565b908152602001604051809103902060006101000a8154816001600160a01b0302191690836001600160a01b03160217905550816001600160a01b0316856001600160a01b03168d6001600160a01b03167faecd9fb95e79c75a3a1de93362c6be5fe6ab65770d8614be583884161cd8228d8e8e604051620039a192919062007e0a565b60405180910390a4604051633041949b60e01b815261200590633041949b90620039d29085908990600401620079bf565b600060405180830381600087803b158015620039ed57600080fd5b505af115801562003a02573d6000803e3d6000fd5b50505050505050505050505050505050565b60408051606081018252600080825260208201819052918101919091528162003a3f600b82620067ad565b62003a5d5760405163fdf4600b60e01b815260040160405180910390fd5b6001600160a01b0383166000908152600d602090815260409182902082516060810184526009909101546001600160401b038082168352600160401b8204811693830193909352600160801b90049091169181019190915291505b50919050565b336110011462003ae657604051630f22c43960e41b8152611001600482015260240162000b18565b6001600160a01b038082166000908152600f60205260409020541662003b0e600b82620067ad565b62003b2c5760405163fdf4600b60e01b815260040160405180910390fd5b6001600160a01b038181166000908152600d60205260408082206002810154600754925163045bc4d160e41b81526004810193909352909316906345bc4d10906024016020604051808303816000875af115801562003b8f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003bb591906200796a565b905060006009544262003bc9919062007954565b905062003bd783826200685a565b836001600160a01b03167f6e9a2ee7aee95665e3a774a212eb11441b217e3e4656ab9563793094689aabb28284600160405162003c179392919062007984565b60405180910390a26002830154604051633041949b60e01b815261200591633041949b9162003c55916001600160a01b0316908890600401620079bf565b600060405180830381600087803b15801562003c7057600080fd5b505af115801562003c85573d6000803e3d6000fd5b505050505050505050565b600054610100900460ff161580801562003cb15750600054600160ff909116105b8062003ccd5750303b15801562003ccd575060005460ff166001145b62003d325760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840162000b18565b6000805460ff19166001179055801562003d56576000805461ff0019166101001790555b33411462003d775760405163022d8c9560e31b815260040160405180910390fd5b3a1562003d97576040516383f1b1d360e01b815260040160405180910390fd5b611388600155686c6b935b8bbd4000006002908155670de0b6b3a7640000600355601d600455607860058190556006829055678ac7230489e80000600755680ad78ebc5ac620000060085560095560b4600a556016556040805160c0810190915260a08082526060918291620090c7602083013980602001905181019062003e20919062007e46565b9150604051806101e001604052806101c08152602001620091676101c0913980602001905181019062003e54919062007eea565b905060005b825181101562003ec35760016013600085848151811062003e7e5762003e7e62007a09565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905562003ebb8162007a75565b905062003e59565b5060005b815181101562003f34576001601483838151811062003eea5762003eea62007a09565b602002602001015160405162003f01919062007fe7565b908152604051908190036020019020805491151560ff1990921691909117905562003f2c8162007a75565b905062003ec7565b5050601980546001600160a01b03191673df87f0e2b8519ea2dd4abd8b639cdd628497ed2517905550801562001078576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b6019546001600160a01b0316331462003fd25760405163f2771a9960e01b815260040160405180910390fd5b6000805462ff00001916620100001781556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e7529190a1565b60006200401b600b84620067ad565b620040395760405163fdf4600b60e01b815260040160405180910390fd5b6001600160a01b038381166000908152600d602052604090819020600201549051636bbf224960e01b815260048101859052911690636bbf2249906024015b602060405180830381865afa15801562004096573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620040bc91906200796a565b90505b92915050565b60005462010000900460ff1615620040f05760405163d7485e8f60e01b815260040160405180910390fd5b336000908152601a602052604090205460ff1615620041225760405163b1d02c3d60e01b815260040160405180910390fd5b8162004130600b82620067ad565b6200414e5760405163fdf4600b60e01b815260040160405180910390fd5b6003543490811015620041745760405163dc6f0bdd60e01b815260040160405180910390fd5b6001600160a01b038085166000908152600d602090815260408083208151610160810183528154861681526001820154861693810193909352600281015490941690820152600383015460608201526004830180543394916080840191620041dc90620078d5565b80601f01602080910402602001604051908101604052809291908181526020018280546200420a90620078d5565b80156200425b5780601f106200422f576101008083540402835291602001916200425b565b820191906000526020600020905b8154815290600101906020018083116200423d57829003601f168201915b50505050508152602001600582016040518060800160405290816000820180546200428690620078d5565b80601f0160208091040260200160405190810160405280929190818152602001828054620042b490620078d5565b8015620043055780601f10620042d95761010080835404028352916020019162004305565b820191906000526020600020905b815481529060010190602001808311620042e757829003601f168201915b505050505081526020016001820180546200432090620078d5565b80601f01602080910402602001604051908101604052809291908181526020018280546200434e90620078d5565b80156200439f5780601f1062004373576101008083540402835291602001916200439f565b820191906000526020600020905b8154815290600101906020018083116200438157829003601f168201915b50505050508152602001600282018054620043ba90620078d5565b80601f0160208091040260200160405190810160405280929190818152602001828054620043e890620078d5565b8015620044395780601f106200440d5761010080835404028352916020019162004439565b820191906000526020600020905b8154815290600101906020018083116200441b57829003601f168201915b505050505081526020016003820180546200445490620078d5565b80601f01602080910402602001604051908101604052809291908181526020018280546200448290620078d5565b8015620044d35780601f10620044a757610100808354040283529160200191620044d3565b820191906000526020600020905b815481529060010190602001808311620044b557829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152805161028081019182905260a09092019190600d84019060149082845b8154815260200190600101908083116200455f5750505050508152505090508060e001518015620045a25750856001600160a01b0316826001600160a01b031614155b15620045c157604051636468920360e01b815260040160405180910390fd5b60408082015190516317066a5760e21b81526001600160a01b0384811660048301526000921690635c19a95c90869060240160206040518083038185885af115801562004612573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906200463991906200796a565b9050826001600160a01b0316876001600160a01b03167f24d7bda8602b916d64417f0dbfe2e2e88ec9b1157bd9f596dfdb91ba26624e0483876040516200468a929190918252602082015260400190565b60405180910390a36040808301519051633041949b60e01b815261200591633041949b91620046bf91908790600401620079bf565b600060405180830381600087803b158015620046da57600080fd5b505af1158015620046ef573d6000803e3d6000fd5b50505050851562004758576040516372f6ad8f60e11b81526120059063e5ed5b1e90620047239086908b90600401620079bf565b600060405180830381600087803b1580156200473e57600080fd5b505af115801562004753573d6000803e3d6000fd5b505050505b50505050505050565b6200478d6040518060800160405280606081526020016060815260200160608152602001606081525090565b816200479b600b82620067ad565b620047b95760405163fdf4600b60e01b815260040160405180910390fd5b6001600160a01b0383166000908152600d602052604090819020815160808101909252600501805482908290620047f090620078d5565b80601f01602080910402602001604051908101604052809291908181526020018280546200481e90620078d5565b80156200486f5780601f1062004843576101008083540402835291602001916200486f565b820191906000526020600020905b8154815290600101906020018083116200485157829003601f168201915b505050505081526020016001820180546200488a90620078d5565b80601f0160208091040260200160405190810160405280929190818152602001828054620048b890620078d5565b8015620049095780601f10620048dd5761010080835404028352916020019162004909565b820191906000526020600020905b815481529060010190602001808311620048eb57829003601f168201915b505050505081526020016002820180546200492490620078d5565b80601f01602080910402602001604051908101604052809291908181526020018280546200495290620078d5565b8015620049a35780601f106200497757610100808354040283529160200191620049a3565b820191906000526020600020905b8154815290600101906020018083116200498557829003601f168201915b50505050508152602001600382018054620049be90620078d5565b80601f0160208091040260200160405190810160405280929190818152602001828054620049ec90620078d5565b801562004a3d5780601f1062004a115761010080835404028352916020019162004a3d565b820191906000526020600020905b81548152906001019060200180831162004a1f57829003601f168201915b505050505081525050915050919050565b60005462010000900460ff161562004a795760405163d7485e8f60e01b815260040160405180910390fd5b336000908152601a602052604090205460ff161562004aab5760405163b1d02c3d60e01b815260040160405180910390fd5b62004ab7828262006e31565b5050565b336110071462004ae357604051630f22c43960e41b8152611007600482015260240162000b18565b62004b506040518060400160405280601081526020016f1d1c985b9cd9995c91d85cd31a5b5a5d60821b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062006f3d9050565b1562004bfe576020811462004b825783838383604051630a5a604160e01b815260040162000b18949392919062008005565b604080516020601f840181900481028201810190925282815260009162004bc591858580838501838280828437600092019190915250929392505062006f9a9050565b90506108fc81101562004bf55784848484604051630a5a604160e01b815260040162000b18949392919062008005565b600155620058e5565b62004c6f6040518060400160405280601481526020017336b4b729b2b6332232b632b3b0ba34b7b721272160611b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062006f3d9050565b1562004d24576020811462004ca15783838383604051630a5a604160e01b815260040162000b18949392919062008005565b604080516020601f840181900481028201810190925282815260009162004ce491858580838501838280828437600092019190915250929392505062006f9a9050565b9050683635c9adc5dea0000081101562004d1b5784848484604051630a5a604160e01b815260040162000b18949392919062008005565b600255620058e5565b62004d97604051806040016040528060168152602001756d696e44656c65676174696f6e424e424368616e676560501b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062006f3d9050565b1562004e4b576020811462004dc95783838383604051630a5a604160e01b815260040162000b18949392919062008005565b604080516020601f840181900481028201810190925282815260009162004e0c91858580838501838280828437600092019190915250929392505062006f9a9050565b905067016345785d8a000081101562004e425784848484604051630a5a604160e01b815260040162000b18949392919062008005565b600355620058e5565b62004ebc604051806040016040528060148152602001736d6178456c656374656456616c696461746f727360601b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062006f3d9050565b1562004f76576020811462004eee5783838383604051630a5a604160e01b815260040162000b18949392919062008005565b604080516020601f840181900481028201810190925282815260009162004f3191858580838501838280828437600092019190915250929392505062006f9a9050565b9050600181108062004f4457506101f481115b1562004f6d5784848484604051630a5a604160e01b815260040162000b18949392919062008005565b600455620058e5565b62004fdf6040518060400160405280600c81526020016b1d5b989bdb9914195c9a5bd960a21b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062006f3d9050565b156200508e5760208114620050115783838383604051630a5a604160e01b815260040162000b18949392919062008005565b604080516020601f84018190048102820181019092528281526000916200505491858580838501838280828437600092019190915250929392505062006f9a9050565b90506203f480811015620050855784848484604051630a5a604160e01b815260040162000b18949392919062008005565b600555620058e5565b620050fc60405180604001604052806011815260200170726564656c65676174654665655261746560781b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062006f3d9050565b15620051a957602081146200512e5783838383604051630a5a604160e01b815260040162000b18949392919062008005565b604080516020601f84018190048102820181019092528281526000916200517191858580838501838280828437600092019190915250929392505062006f9a9050565b90506064811115620051a05784848484604051630a5a604160e01b815260040162000b18949392919062008005565b600655620058e5565b6200521960405180604001604052806013815260200172191bdddb9d1a5b5954db185cda105b5bdd5b9d606a1b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062006f3d9050565b15620052da57602081146200524b5783838383604051630a5a604160e01b815260040162000b18949392919062008005565b604080516020601f84018190048102820181019092528281526000916200528e91858580838501838280828437600092019190915250929392505062006f9a9050565b9050674563918244f40000811080620052a8575060085481115b15620052d15784848484604051630a5a604160e01b815260040162000b18949392919062008005565b600755620058e5565b620053486040518060400160405280601181526020017019995b1bdb9e54db185cda105b5bdd5b9d607a1b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062006f3d9050565b156200540b57602081146200537a5783838383604051630a5a604160e01b815260040162000b18949392919062008005565b604080516020601f8401819004810282018101909252828152600091620053bd91858580838501838280828437600092019190915250929392505062006f9a9050565b905068056bc75e2d63100000811080620053d957506007548111155b15620054025784848484604051630a5a604160e01b815260040162000b18949392919062008005565b600855620058e5565b620054786040518060400160405280601081526020016f646f776e74696d654a61696c54696d6560801b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062006f3d9050565b15620055355760208114620054aa5783838383604051630a5a604160e01b815260040162000b18949392919062008005565b604080516020601f8401819004810282018101909252828152600091620054ed91858580838501838280828437600092019190915250929392505062006f9a9050565b90506202a300811080620055035750600a548110155b156200552c5784848484604051630a5a604160e01b815260040162000b18949392919062008005565b600955620058e5565b620055a06040518060400160405280600e81526020016d66656c6f6e794a61696c54696d6560901b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062006f3d9050565b156200565d5760208114620055d25783838383604051630a5a604160e01b815260040162000b18949392919062008005565b604080516020601f84018190048102820181019092528281526000916200561591858580838501838280828437600092019190915250929392505062006f9a9050565b9050620d2f008110806200562b57506009548111155b15620056545784848484604051630a5a604160e01b815260040162000b18949392919062008005565b600a55620058e5565b620056d76040518060400160405280601c81526020017f6d617846656c6f6e794265747765656e42726561746865426c6f636b0000000081525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062006f3d9050565b15620057835760208114620057095783838383604051630a5a604160e01b815260040162000b18949392919062008005565b604080516020601f84018190048102820181019092528281526000916200574c91858580838501838280828437600092019190915250929392505062006f9a9050565b9050806000036200577a5784848484604051630a5a604160e01b815260040162000b18949392919062008005565b601655620058e5565b620057ee6040518060400160405280600e81526020016d30b9b9b2ba283937ba32b1ba37b960911b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062006f3d9050565b15620058c25760148114620058205783838383604051630a5a604160e01b815260040162000b18949392919062008005565b600062005868601484848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062006f9a9050565b90506001600160a01b0381166200589c5784848484604051630a5a604160e01b815260040162000b18949392919062008005565b601980546001600160a01b0319166001600160a01b0392909216919091179055620058e5565b838383836040516325ee20d560e21b815260040162000b18949392919062008005565b7ff1ce9b2cbf50eeb05769a29e2543fd350cab46894a7dd9978a12d534bb20e633848484846040516200591c949392919062008005565b60405180910390a150505050565b60005462010000900460ff1615620059555760405163d7485e8f60e01b815260040160405180910390fd5b336000908152601a602052604090205460ff1615620059875760405163b1d02c3d60e01b815260040160405180910390fd5b816000816001600160401b03811115620059a557620059a5620070f2565b604051908082528060200260200182016040528015620059cf578160200160208202803683370190505b5090506000805b8381101562005acd5762005a18878783818110620059f857620059f862007a09565b905060200201602081019062005a0f919062007042565b600b90620067ad565b62005a365760405163fdf4600b60e01b815260040160405180910390fd5b600d600088888481811062005a4f5762005a4f62007a09565b905060200201602081019062005a66919062007042565b6001600160a01b039081168252602082019290925260400160002060020154845191169250829084908390811062005aa25762005aa262007a09565b6001600160a01b039092166020928302919091019091015262005ac58162007a75565b9050620059d6565b50604051634484077560e01b81526120059063448407759062001d84908590889060040162007a1f565b336110011462005b1f57604051630f22c43960e41b8152611001600482015260240162000b18565b6001600160a01b038082166000908152600f60205260409020541662005b47600b82620067ad565b62005b655760405163fdf4600b60e01b815260040160405180910390fd5b6001600160a01b0381166000908152600d602052604081209062005b8b603c4262007931565b6016546000828152601760205260409020549192501162005bbf5760405163bd52fcdb60e01b815260040160405180910390fd5b600081815260176020526040812080546001929062005be090849062007954565b90915550506001600160a01b0384166000908152601060205260409020541580159062005c3357506001600160a01b038416600090815260106020526040902054429062005c3190603c9062007954565b105b1562005c52576040516330abb81d60e21b815260040160405180910390fd5b60008062005c62856000620067d0565b915091508162005c8557604051631b919bb160e11b815260040160405180910390fd5b600284015460085460405163045bc4d160e41b815260048101919091526000916001600160a01b0316906345bc4d10906024016020604051808303816000875af115801562005cd8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005cfe91906200796a565b905062005d0c85836200685a565b856001600160a01b03167f6e9a2ee7aee95665e3a774a212eb11441b217e3e4656ab9563793094689aabb28383600060405162005d4c9392919062007984565b60405180910390a26002850154604051633041949b60e01b815261200591633041949b9162004723916001600160a01b0316908a90600401620079bf565b60008080606081808662005da0600b82620067ad565b62005dbe5760405163fdf4600b60e01b815260040160405180910390fd5b6001600160a01b038089166000908152600d602090815260408083208151610160810183528154861681526001820154861693810193909352600281015490941690820152600383015460608201526004830180549293919260808401919062005e2890620078d5565b80601f016020809104026020016040519081016040528092919081815260200182805462005e5690620078d5565b801562005ea75780601f1062005e7b5761010080835404028352916020019162005ea7565b820191906000526020600020905b81548152906001019060200180831162005e8957829003601f168201915b505050505081526020016005820160405180608001604052908160008201805462005ed290620078d5565b80601f016020809104026020016040519081016040528092919081815260200182805462005f0090620078d5565b801562005f515780601f1062005f255761010080835404028352916020019162005f51565b820191906000526020600020905b81548152906001019060200180831162005f3357829003601f168201915b5050505050815260200160018201805462005f6c90620078d5565b80601f016020809104026020016040519081016040528092919081815260200182805462005f9a90620078d5565b801562005feb5780601f1062005fbf5761010080835404028352916020019162005feb565b820191906000526020600020905b81548152906001019060200180831162005fcd57829003601f168201915b505050505081526020016002820180546200600690620078d5565b80601f01602080910402602001604051908101604052809291908181526020018280546200603490620078d5565b8015620060855780601f10620060595761010080835404028352916020019162006085565b820191906000526020600020905b8154815290600101906020018083116200606757829003601f168201915b50505050508152602001600382018054620060a090620078d5565b80601f0160208091040260200160405190810160405280929190818152602001828054620060ce90620078d5565b80156200611f5780601f10620060f3576101008083540402835291602001916200611f565b820191906000526020600020905b8154815290600101906020018083116200610157829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152805161028081019182905260a09092019190600d84019060149082845b815481526020019060010190808311620061ab57505050919092525050815160408301516060840151608085015160e086015161010090960151939f929e50909c509a50929850965090945050505050565b60005462010000900460ff1615620062285760405163d7485e8f60e01b815260040160405180910390fd5b336000908152601a602052604090205460ff16156200625a5760405163b1d02c3d60e01b815260040160405180910390fd5b3362006268600b82620067ad565b620062865760405163fdf4600b60e01b815260040160405180910390fd5b336000818152600d60205260409020600c8101544290620062aa90603c9062007954565b1115620062ca57604051631f92cdbd60e11b815260040160405180910390fd5b600581018054620062db90620078d5565b80601f01602080910402602001604051908101604052809291908181526020018280546200630990620078d5565b80156200635a5780601f106200632e576101008083540402835291602001916200635a565b820191906000526020600020905b8154815290600101906020018083116200633c57829003601f168201915b505050828752508591600584019150819062006377908262008030565b50602082015160018201906200638e908262008030565b5060408201516002820190620063a5908262008030565b5060608201516003820190620063bc908262008030565b505042600c830155506040516001600160a01b038316907f85d6366b336ade7f106987ec7a8eac1e8799e508aeab045a39d2f63e0dc969d990600090a250505050565b60005462010000900460ff16156200642a5760405163d7485e8f60e01b815260040160405180910390fd5b336000908152601a602052604090205460ff16156200645c5760405163b1d02c3d60e01b815260040160405180910390fd5b8281146200647d576040516341abc80160e01b815260040160405180910390fd5b60005b83811015620064ee57620064db858583818110620064a257620064a262007a09565b9050602002016020810190620064b9919062007042565b848484818110620064ce57620064ce62007a09565b9050602002013562006e31565b620064e68162007a75565b905062006480565b5050505050565b600062006504600b84620067ad565b620065225760405163fdf4600b60e01b815260040160405180910390fd5b6001600160a01b038381166000908152600d60205260409081902060020154905163aa1966cd60e01b81526004810185905291169063aa1966cd9060240162004078565b60005462010000900460ff1615620065915760405163d7485e8f60e01b815260040160405180910390fd5b336000908152601a602052604090205460ff1615620065c35760405163b1d02c3d60e01b815260040160405180910390fd5b33620065d1600b82620067ad565b620065ef5760405163fdf4600b60e01b815260040160405180910390fd5b620065fd8585858562006c23565b6200661b57604051631647e3cb60e11b815260040160405180910390fd5b60006001600160a01b0316601186866040516200663a9291906200790b565b908152604051908190036020019020546001600160a01b031614158062006684575060148585604051620066709291906200790b565b9081526040519081900360200190205460ff165b15620066a3576040516311fdb94760e01b815260040160405180910390fd5b336000818152600d60205260409020600c8101544290620066c790603c9062007954565b1115620066e757604051631f92cdbd60e11b815260040160405180910390fd5b42601282600401604051620066fd9190620080f8565b90815260405190819003602001902055600481016200671e87898362007b39565b5042600c82015560405182906011906200673c908a908a906200790b565b90815260405190819003602001812080546001600160a01b039384166001600160a01b0319909116179055908316907f783156582145bd0ff7924fae6953ba054cf1233eb60739a200ddb10de068ff0d906200679c908a908a9062007e0a565b60405180910390a250505050505050565b6001600160a01b03811660009081526001830160205260408120541515620040bc565b60008060008484604051602001620067ea92919062008176565b60408051601f19818403018152918152815160209283012060008181526018909352912054909150428111156200682a5760008093509350505062006853565b600a5462006839904262007954565b600092835260186020526040909220829055506001925090505b9250929050565b600060016200686a600b62006a68565b620068769190620079d9565b6015541080159150620068c25760018301546040516001600160a01b03909116907f2afdc18061ac21cff7d9f11527ab9c8dec6fabd4edf6f894ed634bebd6a20d4590600090a2505050565b82600b0154821115620068d757600b83018290555b600a83015460ff166200694a57600a8301805460ff19166001908117909155601580546000906200690a90849062007954565b909155505060018301546040516001600160a01b03909116907f4905ac32602da3fb8b4b7b00c285e5fc4c6c2308cc908b4a1e4e9625a29c90a390600090a25b505050565b6001600160a01b0381166000908152600d60205260409020600a81015460ff161562006979575050565b6002805490820154604051630913db4760e01b81526001600160a01b03858116600483015290911690630913db4790602401602060405180830381865afa158015620069c9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620069ef91906200796a565b101562004ab75762006a04816009546200685a565b80546040516372c4db0f60e11b81526001600160a01b0390911660048201526110009063e589b61e90602401600060405180830381600087803b15801562006a4b57600080fd5b505af115801562006a60573d6000803e3d6000fd5b505050505050565b6000620040bf825490565b6000620040bc838362006f9f565b60008082905060038151108062006a99575060098151115b1562006aa85750600092915050565b60418160008151811062006ac05762006ac062007a09565b016020015160f81c108062006af25750605a8160008151811062006ae85762006ae862007a09565b016020015160f81c115b1562006b015750600092915050565b60015b815181101562006c1957603082828151811062006b255762006b2562007a09565b016020015160f81c108062006b565750603982828151811062006b4c5762006b4c62007a09565b016020015160f81c115b801562006ba65750604182828151811062006b755762006b7562007a09565b016020015160f81c108062006ba65750605a82828151811062006b9c5762006b9c62007a09565b016020015160f81c115b801562006bf65750606182828151811062006bc55762006bc562007a09565b016020015160f81c108062006bf65750607a82828151811062006bec5762006bec62007a09565b016020015160f81c115b1562006c06575060009392505050565b62006c118162007a75565b905062006b04565b5060019392505050565b600060308414158062006c37575060608214155b1562006c465750600062006d48565b600085854660405160200162006c5f93929190620081c0565b60408051808303601f1901815282825280516020918201208184528383019092529092506000919060208201818036833701905050905081602082015260008186868a8a60405160200162006cb9959493929190620081d2565b60408051808303601f190181526001808452838301909252925060009190602082018180368337019050509050815160016020830182602086016066600019fa62006d0357600080fd5b5060008160008151811062006d1c5762006d1c62007a09565b016020015160f81c90506001811462006d3e5760009550505050505062006d48565b6001955050505050505b949350505050565b60008061200361dead60405162006d67906200701e565b6001600160a01b03928316815291166020820152606060408201819052600090820152608001604051809103906000f08015801562006daa573d6000803e3d6000fd5b509050806001600160a01b031663f399e22e3486866040518463ffffffff1660e01b815260040162006dde9291906200820a565b6000604051808303818588803b15801562006df857600080fd5b505af115801562006e0d573d6000803e3d6000fd5b5093979650505050505050565b6000620040bc836001600160a01b03841662006fcc565b8162006e3f600b82620067ad565b62006e5d5760405163fdf4600b60e01b815260040160405180910390fd5b6001600160a01b038381166000908152600d6020526040808220600201549051635569f64b60e11b8152336004820152602481018690529192169063aad3ec96906044016020604051808303816000875af115801562006ec1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062006ee791906200796a565b9050336001600160a01b0316846001600160a01b03167ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926838360405162006f2f91815260200190565b60405180910390a350505050565b60008160405160200162006f52919062007fe7565b604051602081830303815290604052805190602001208360405160200162006f7b919062007fe7565b6040516020818303038152906040528051906020012014905092915050565b015190565b600082600001828154811062006fb95762006fb962007a09565b9060005260206000200154905092915050565b60008181526001830160205260408120546200701557508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155620040bf565b506000620040bf565b610e96806200823183390190565b6001600160a01b03811681146200107857600080fd5b6000602082840312156200705557600080fd5b813562007062816200702c565b9392505050565b60008083601f8401126200707c57600080fd5b5081356001600160401b038111156200709457600080fd5b6020830191508360208285010111156200685357600080fd5b60008060208385031215620070c157600080fd5b82356001600160401b03811115620070d857600080fd5b620070e68582860162007069565b90969095509350505050565b634e487b7160e01b600052604160045260246000fd5b604051608081016001600160401b03811182821017156200712d576200712d620070f2565b60405290565b604051601f8201601f191681016001600160401b03811182821017156200715e576200715e620070f2565b604052919050565b60006001600160401b03821115620071825762007182620070f2565b50601f01601f191660200190565b6000620071a7620071a18462007166565b62007133565b9050828152838383011115620071bc57600080fd5b828260208301376000602084830101529392505050565b600060208284031215620071e657600080fd5b81356001600160401b03811115620071fd57600080fd5b8201601f810184136200720f57600080fd5b62006d488482356020840162007190565b600080604083850312156200723457600080fd5b823562007241816200702c565b946020939093013593505050565b803580151581146200726057600080fd5b919050565b600080600080608085870312156200727c57600080fd5b843562007289816200702c565b935060208501356200729b816200702c565b925060408501359150620072b2606086016200724f565b905092959194509250565b6001600160401b03811681146200107857600080fd5b600060208284031215620072e657600080fd5b81356200706281620072bd565b600080604083850312156200730757600080fd5b50508035926020909101359150565b600081518084526020808501945080840160005b83811015620073515781516001600160a01b0316875295820195908201906001016200732a565b509495945050505050565b60005b83811015620073795781810151838201526020016200735f565b50506000910152565b600081518084526200739c8160208601602086016200735c565b601f01601f19169290920160200192915050565b608081526000620073c5608083018762007316565b82810360208481019190915286518083528782019282019060005b81811015620073fe57845183529383019391830191600101620073e0565b5050848103604086015286518082528282019350600581901b8201830183890160005b838110156200745357601f198584030187526200744083835162007382565b9686019692509085019060010162007421565b5050809550505050505082606083015295945050505050565b600080600080600080600087890360e08112156200748957600080fd5b883562007496816200702c565b975060208901356001600160401b0380821115620074b357600080fd5b620074c18c838d0162007069565b909950975060408b0135915080821115620074db57600080fd5b620074e98c838d0162007069565b90975095508591506060605f19840112156200750457600080fd5b60608b01945060c08b01359250808311156200751f57600080fd5b505088016080818b0312156200753457600080fd5b8091505092959891949750929550565b600080604083850312156200755857600080fd5b823562007565816200702c565b915062007575602084016200724f565b90509250929050565b6020815260008251608060208401526200759c60a084018262007382565b90506020840151601f1980858403016040860152620075bc838362007382565b92506040860151915080858403016060860152620075db838362007382565b9250606086015191508085840301608086015250620075fb828262007382565b95945050505050565b600080600080604085870312156200761b57600080fd5b84356001600160401b03808211156200763357600080fd5b620076418883890162007069565b909650945060208701359150808211156200765b57600080fd5b506200766a8782880162007069565b95989497509550505050565b60008083601f8401126200768957600080fd5b5081356001600160401b03811115620076a157600080fd5b6020830191508360208260051b85010111156200685357600080fd5b600080600060408486031215620076d357600080fd5b83356001600160401b03811115620076ea57600080fd5b620076f88682870162007676565b90945092505060208401356200770e816200702c565b809150509250925092565b6001600160a01b038781168252861660208201526040810185905260c0606082018190526000906200774e9083018662007382565b93151560808301525060a00152949350505050565b600082601f8301126200777557600080fd5b620040bc8383356020850162007190565b6000602082840312156200779957600080fd5b81356001600160401b0380821115620077b157600080fd5b9083019060808286031215620077c657600080fd5b620077d062007108565b823582811115620077e057600080fd5b620077ee8782860162007763565b8252506020830135828111156200780457600080fd5b620078128782860162007763565b6020830152506040830135828111156200782b57600080fd5b620078398782860162007763565b6040830152506060830135828111156200785257600080fd5b620078608782860162007763565b60608301525095945050505050565b600080600080604085870312156200788657600080fd5b84356001600160401b03808211156200789e57600080fd5b620078ac8883890162007676565b90965094506020870135915080821115620078c657600080fd5b506200766a8782880162007676565b600181811c90821680620078ea57607f821691505b60208210810362003ab857634e487b7160e01b600052602260045260246000fd5b8183823760009101908152919050565b634e487b7160e01b600052601160045260246000fd5b6000826200794f57634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115620040bf57620040bf6200791b565b6000602082840312156200797d57600080fd5b5051919050565b838152602081018390526060810160038310620079b157634e487b7160e01b600052602160045260246000fd5b826040830152949350505050565b6001600160a01b0392831681529116602082015260400190565b81810381811115620040bf57620040bf6200791b565b8082028115828204841417620040bf57620040bf6200791b565b634e487b7160e01b600052603260045260246000fd5b60408152600062007a34604083018562007316565b905060018060a01b03831660208301529392505050565b6001600160401b0382811682821603908082111562007a6e5762007a6e6200791b565b5092915050565b60006001820162007a8a5762007a8a6200791b565b5060010190565b6000808335601e1984360301811262007aa957600080fd5b8301803591506001600160401b0382111562007ac457600080fd5b6020019150368190038213156200685357600080fd5b601f8211156200694a57600081815260208120601f850160051c8101602086101562007b035750805b601f850160051c820191505b8181101562006a605782815560010162007b0f565b600019600383901b1c191660019190911b1790565b6001600160401b0383111562007b535762007b53620070f2565b62007b6b8362007b648354620078d5565b8362007ada565b6000601f84116001811462007b9e576000851562007b895750838201355b62007b95868262007b24565b845550620064ee565b600083815260209020601f19861690835b8281101562007bd1578685013582556020948501946001909201910162007baf565b508682101562007bef5760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b62007c0d828362007a91565b6001600160401b0381111562007c275762007c27620070f2565b62007c3f8162007c388554620078d5565b8562007ada565b6000601f82116001811462007c72576000831562007c5d5750838201355b62007c69848262007b24565b86555062007ccf565b600085815260209020601f19841690835b8281101562007ca5578685013582556020948501946001909201910162007c83565b508482101562007cc35760001960f88660031b161c19848701351681555b505060018360011b0185555b5050505062007ce2602083018362007a91565b62007cf281836001860162007b39565b505062007d03604083018362007a91565b62007d1381836002860162007b39565b505062007d24606083018362007a91565b62007d3481836003860162007b39565b50505050565b813562007d4781620072bd565b6001600160401b03811690508154816001600160401b03198216178355602084013562007d7481620072bd565b6fffffffffffffffff0000000000000000604091821b166fffffffffffffffffffffffffffffffff1983168417811785559085013562007db481620072bd565b6001600160c01b0319929092169092179190911760809190911b67ffffffffffffffff60801b1617905550565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60208152600062006d4860208301848662007de1565b60006001600160401b0382111562007e3c5762007e3c620070f2565b5060051b60200190565b6000602080838503121562007e5a57600080fd5b82516001600160401b0381111562007e7157600080fd5b8301601f8101851362007e8357600080fd5b805162007e94620071a18262007e20565b81815260059190911b8201830190838101908783111562007eb457600080fd5b928401925b8284101562007edf57835162007ecf816200702c565b8252928401929084019062007eb9565b979650505050505050565b6000602080838503121562007efe57600080fd5b82516001600160401b038082111562007f1657600080fd5b818501915085601f83011262007f2b57600080fd5b815162007f3c620071a18262007e20565b81815260059190911b8301840190848101908883111562007f5c57600080fd5b8585015b8381101562007fda5780518581111562007f7a5760008081fd5b8601603f81018b1362007f8d5760008081fd5b87810151604062007fa2620071a18362007166565b8281528d8284860101111562007fb85760008081fd5b62007fc9838c83018487016200735c565b865250505091860191860162007f60565b5098975050505050505050565b6000825162007ffb8184602087016200735c565b9190910192915050565b6040815260006200801b60408301868862007de1565b828103602084015262007edf81858762007de1565b81516001600160401b038111156200804c576200804c620070f2565b62008064816200805d8454620078d5565b8462007ada565b602080601f831160018114620080985760008415620080835750858301515b6200808f858262007b24565b86555062006a60565b600085815260208120601f198616915b82811015620080c957888601518255948401946001909101908401620080a8565b5085821015620080e85787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60008083546200810881620078d5565b6001828116801562008123576001811462008139576200816a565b60ff19841687528215158302870194506200816a565b8760005260208060002060005b85811015620081615781548a82015290840190820162008146565b50505082870194505b50929695505050505050565b6bffffffffffffffffffffffff198360601b168152600060038310620081ac57634e487b7160e01b600052602160045260246000fd5b5060f89190911b6014820152601501919050565b82848237909101908152602001919050565b60008651620081e6818460208b016200735c565b82018587823760009086019081528385823760009301928352509095945050505050565b6001600160a01b038316815260406020820181905260009062006d48908301846200738256fe608060405260405162000e9638038062000e96833981016040819052620000269162000497565b828162000036828260006200004d565b50620000449050826200008a565b505050620005ca565b6200005883620000e5565b600082511180620000665750805b1562000085576200008383836200012760201b620001691760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f620000b562000156565b604080516001600160a01b03928316815291841660208301520160405180910390a1620000e2816200018f565b50565b620000f08162000244565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606200014f838360405180606001604052806027815260200162000e6f60279139620002f8565b9392505050565b60006200018060008051602062000e4f83398151915260001b6200037760201b620001951760201c565b546001600160a01b0316919050565b6001600160a01b038116620001fa5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b806200022360008051602062000e4f83398151915260001b6200037760201b620001951760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6200025a816200037a60201b620001981760201c565b620002be5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401620001f1565b80620002237f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b6200037760201b620001951760201c565b6060600080856001600160a01b03168560405162000317919062000577565b600060405180830381855af49150503d806000811462000354576040519150601f19603f3d011682016040523d82523d6000602084013e62000359565b606091505b5090925090506200036d8683838762000389565b9695505050505050565b90565b6001600160a01b03163b151590565b60608315620003fd578251600003620003f5576001600160a01b0385163b620003f55760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401620001f1565b508162000409565b62000409838362000411565b949350505050565b815115620004225781518083602001fd5b8060405162461bcd60e51b8152600401620001f1919062000595565b80516001600160a01b03811681146200045657600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200048e57818101518382015260200162000474565b50506000910152565b600080600060608486031215620004ad57600080fd5b620004b8846200043e565b9250620004c8602085016200043e565b60408501519092506001600160401b0380821115620004e657600080fd5b818601915086601f830112620004fb57600080fd5b8151818111156200051057620005106200045b565b604051601f8201601f19908116603f011681019083821181831017156200053b576200053b6200045b565b816040528281528960208487010111156200055557600080fd5b6200056883602083016020880162000471565b80955050505050509250925092565b600082516200058b81846020870162000471565b9190910192915050565b6020815260008251806020840152620005b681604085016020870162000471565b601f01601f19169190910160400192915050565b61087580620005da6000396000f3fe60806040523661001357610011610017565b005b6100115b61001f6101a7565b6001600160a01b0316330361015f5760606001600160e01b0319600035166364d3180d60e11b810161005a576100536101da565b9150610157565b63587086bd60e11b6001600160e01b031982160161007a57610053610231565b63070d7c6960e41b6001600160e01b031982160161009a57610053610277565b621eb96f60e61b6001600160e01b03198216016100b9576100536102a8565b63a39f25e560e01b6001600160e01b03198216016100d9576100536102e8565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101676102fc565b565b606061018e83836040518060600160405280602781526020016108426027913961030c565b9392505050565b90565b6001600160a01b03163b151590565b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101e4610384565b60006101f33660048184610695565b81019061020091906106db565b905061021d8160405180602001604052806000815250600061038f565b505060408051602081019091526000815290565b60606000806102433660048184610695565b810190610250919061070c565b915091506102608282600161038f565b604051806020016040528060008152509250505090565b6060610281610384565b60006102903660048184610695565b81019061029d91906106db565b905061021d816103bb565b60606102b2610384565b60006102bc6101a7565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102f2610384565b60006102bc610412565b610167610307610412565b610421565b6060600080856001600160a01b03168560405161032991906107f2565b600060405180830381855af49150503d8060008114610364576040519150601f19603f3d011682016040523d82523d6000602084013e610369565b606091505b509150915061037a86838387610445565b9695505050505050565b341561016757600080fd5b610398836104c6565b6000825111806103a55750805b156103b6576103b48383610169565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103e46101a7565b604080516001600160a01b03928316815291841660208301520160405180910390a161040f81610506565b50565b600061041c6105af565b905090565b3660008037600080366000845af43d6000803e808015610440573d6000f35b3d6000fd5b606083156104b45782516000036104ad576001600160a01b0385163b6104ad5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014e565b50816104be565b6104be83836105d7565b949350505050565b6104cf81610601565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b03811661056b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014e565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101cb565b8151156105e75781518083602001fd5b8060405162461bcd60e51b815260040161014e919061080e565b6001600160a01b0381163b61066e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014e565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61058e565b600080858511156106a557600080fd5b838611156106b257600080fd5b5050820193919092039150565b80356001600160a01b03811681146106d657600080fd5b919050565b6000602082840312156106ed57600080fd5b61018e826106bf565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561071f57600080fd5b610728836106bf565b9150602083013567ffffffffffffffff8082111561074557600080fd5b818501915085601f83011261075957600080fd5b81358181111561076b5761076b6106f6565b604051601f8201601f19908116603f01168101908382118183101715610793576107936106f6565b816040528281528860208487010111156107ac57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60005b838110156107e95781810151838201526020016107d1565b50506000910152565b600082516108048184602087016107ce565b9190910192915050565b602081526000825180602084015261082d8160408501602087016107ce565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000ab53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c656400000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000003000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c80000000000000000000000003c44cdddb6a900fa2b585dd299e03d12fa4293bc00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000030b86b3146bdd2200b1dbdb1cea5e40d3451c028cbb4fb03b1826f7f2d82bee76bbd5cd68a74a16a7eceea093fd5826b9200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003087ce273bb9b51fd69e50de7a8d9a99cfb3b1a5c6a7b85f6673d137a5a2ce7df3d6ee4e6d579a142d58b0606c4a7a1c27000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030a33ac14980d85c0d154c5909ebf7a11d455f54beb4d5d0dc1d8b3670b9c4a6b6c450ee3d623ecc48026f09ed1f0b5c1200000000000000000000000000000000a164736f6c6343000811000a", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/1abdfbf3aeb86909c2220b79bf92b87ddff64b54", + Code: "608060405260043610620003c35760003560e01c80638a4d3fa811620001f7578063d115a2061162000117578063e992aaf511620000ad578063f80a34021162000078578063f80a34021462000b87578063fb50b31f1462000bac578063fc0c5ff11462000bd1578063ff69ab611462000be957600080fd5b8063e992aaf51462000b04578063efdbf0e11462000b1c578063f1f74d841462000b58578063f1fad1041462000b7057600080fd5b8063d8ca511f11620000ee578063d8ca511f1462000a9a578063daacdb661462000ab2578063de88700b1462000aca578063e8f67c3b1462000aec57600080fd5b8063d115a2061462000a38578063d6ca429d1462000a50578063d7c2dfc81462000a7557600080fd5b8063baa7199e116200018d578063c38fbec81162000164578063c38fbec814620009c2578063c473318f14620009e7578063c8509d8114620007e0578063cbb04d9d14620009ff57600080fd5b8063baa7199e146200094f578063bdceadf31462000974578063bff02e20146200098c57600080fd5b8063a43569b311620001ce578063a43569b314620008b1578063aad3ec9614620008e5578063ac431751146200090a578063b187bd26146200092f57600080fd5b80638a4d3fa814620008575780638cd22b221462000875578063982ef0a7146200089a57600080fd5b80634d99dd1611620002e35780636ec01b2711620002795780638129fc1c11620002505780638129fc1c14620007c8578063831d65d114620007e05780638456cb59146200080557806386d54506146200081d57600080fd5b80636ec01b27146200073357806375cc7d89146200078b57806376e7d6d614620007b057600080fd5b80635e7cc1c911620002ba5780635e7cc1c9146200068f57806363a036b514620006b457806364028fbd14620006eb578063663706d3146200070257600080fd5b80634d99dd16146200062d5780634e6fd6c4146200065257806359491871146200066a57600080fd5b806338409988116200035957806345211bfd116200033057806345211bfd14620005745780634838d16514620005995780634a49ac4c14620005de5780634bf6c882146200060357600080fd5b8063384099881462000512578063417c73a7146200052a578063449ecfe6146200054f57600080fd5b80630e9fbf51116200039a5780630e9fbf5114620004445780631182b875146200046957806317b4f353146200049d5780631fa8882b14620004fb57600080fd5b8063046f7da214620003ea5780630661806e1462000402578063092193ab146200042d57600080fd5b36620003e5576000546301000000900460ff16600114620003e357600080fd5b005b600080fd5b348015620003f757600080fd5b50620003e362000c01565b3480156200040f57600080fd5b506200041a60025481565b6040519081526020015b60405180910390f35b620003e36200043e3660046200838e565b62000c62565b3480156200045157600080fd5b50620003e362000463366004620083f2565b620011e8565b3480156200047657600080fd5b506200048e6200048836600462008437565b620014e5565b604051620004249190620084ea565b348015620004aa57600080fd5b50620004e2620004bc366004620085e0565b80516020818301810180516011825292820191909301209152546001600160a01b031681565b6040516001600160a01b03909116815260200162000424565b3480156200050857600080fd5b506200041a603c81565b3480156200051f57600080fd5b506200041a60035481565b3480156200053757600080fd5b50620003e3620005493660046200838e565b620017ce565b3480156200055c57600080fd5b50620003e36200056e3660046200838e565b6200181e565b3480156200058157600080fd5b50620003e3620005933660046200838e565b620019d1565b348015620005a657600080fd5b50620005cd620005b83660046200838e565b601a6020526000908152604090205460ff1681565b604051901515815260200162000424565b348015620005eb57600080fd5b50620003e3620005fd3660046200838e565b62001bac565b3480156200061057600080fd5b506200061a600881565b60405160ff909116815260200162000424565b3480156200063a57600080fd5b50620003e36200064c3660046200862d565b62001bf9565b3480156200065f57600080fd5b50620004e261dead81565b3480156200067757600080fd5b50620003e3620006893660046200866b565b62002216565b3480156200069c57600080fd5b50620003e3620006ae366004620086db565b62002ffd565b348015620006c157600080fd5b50620006d9620006d3366004620086fb565b62003203565b60405162000424949392919062008764565b620003e3620006fc36600462008820565b62003895565b3480156200070f57600080fd5b506200041a620007213660046200838e565b60106020526000908152604090205481565b3480156200074057600080fd5b5062000758620007523660046200838e565b62003eb0565b6040805182516001600160401b039081168252602080850151821690830152928201519092169082015260600162000424565b3480156200079857600080fd5b50620003e3620007aa3660046200838e565b62003f5a565b348015620007bd57600080fd5b506200041a60095481565b348015620007d557600080fd5b50620003e36200412c565b348015620007ed57600080fd5b50620003e3620007ff36600462008437565b62004442565b3480156200081257600080fd5b50620003e3620044ac565b3480156200082a57600080fd5b50620004e26200083c3660046200838e565b600f602052600090815260409020546001600160a01b031681565b3480156200086457600080fd5b506200041a670de0b6b3a764000081565b3480156200088257600080fd5b506200041a620008943660046200862d565b62004512565b620003e3620008ab366004620088f8565b620045cb565b348015620008be57600080fd5b50620008d6620008d03660046200838e565b62004c67565b60405162000424919062008936565b348015620008f257600080fd5b50620003e3620009043660046200862d565b62004f54565b3480156200091757600080fd5b50620003e362000929366004620089bc565b62004fc1565b3480156200093c57600080fd5b5060005462010000900460ff16620005cd565b3480156200095c57600080fd5b50620003e36200096e36600462008a75565b62005e30565b3480156200098157600080fd5b506200041a60085481565b3480156200099957600080fd5b50620009b1620009ab366004620086fb565b62005ffd565b604051620004249392919062008ad1565b348015620009cf57600080fd5b50620003e3620009e13660046200838e565b620061d9565b348015620009f457600080fd5b506200041a60045481565b34801562000a0c57600080fd5b5062000a2462000a1e3660046200838e565b6200646c565b604051620004249695949392919062008b0b565b34801562000a4557600080fd5b506200041a61271081565b34801562000a5d57600080fd5b50620003e362000a6f36600462008b78565b620068df565b34801562000a8257600080fd5b50620003e362000a9436600462008c61565b62006ae1565b34801562000aa757600080fd5b506200041a60075481565b34801562000abf57600080fd5b506200041a60155481565b34801562000ad757600080fd5b50601954620004e2906001600160a01b031681565b34801562000af957600080fd5b506200041a60015481565b34801562000b1157600080fd5b506200041a60065481565b34801562000b2957600080fd5b506200041a62000b3b366004620085e0565b805160208183018101805160128252928201919093012091525481565b34801562000b6557600080fd5b506200041a600a5481565b34801562000b7d57600080fd5b506200061a601181565b34801562000b9457600080fd5b506200041a62000ba63660046200862d565b62006bd7565b34801562000bb957600080fd5b50620003e362000bcb366004620089bc565b62006c48565b34801562000bde57600080fd5b506200041a60055481565b34801562000bf657600080fd5b506200041a60165481565b6019546001600160a01b0316331462000c2d5760405163f2771a9960e01b815260040160405180910390fd5b6000805462ff0000191681556040517f62451d457bc659158be6e6247f56ec1df424a5c7597f71c20c2bc44e0965c8f99190a1565b336110001462000c8e57604051630f22c43960e41b815261100060048201526024015b60405180910390fd5b6001600160a01b038082166000908152600f60209081526040808320548416808452600d835281842082516101608101845281548716815260018201548716948101949094526002810154909516918301919091526003840154606083015260048401805491949160808401919062000d079062008cc7565b80601f016020809104026020016040519081016040528092919081815260200182805462000d359062008cc7565b801562000d865780601f1062000d5a5761010080835404028352916020019162000d86565b820191906000526020600020905b81548152906001019060200180831162000d6857829003601f168201915b505050505081526020016005820160405180608001604052908160008201805462000db19062008cc7565b80601f016020809104026020016040519081016040528092919081815260200182805462000ddf9062008cc7565b801562000e305780601f1062000e045761010080835404028352916020019162000e30565b820191906000526020600020905b81548152906001019060200180831162000e1257829003601f168201915b5050505050815260200160018201805462000e4b9062008cc7565b80601f016020809104026020016040519081016040528092919081815260200182805462000e799062008cc7565b801562000eca5780601f1062000e9e5761010080835404028352916020019162000eca565b820191906000526020600020905b81548152906001019060200180831162000eac57829003601f168201915b5050505050815260200160028201805462000ee59062008cc7565b80601f016020809104026020016040519081016040528092919081815260200182805462000f139062008cc7565b801562000f645780601f1062000f385761010080835404028352916020019162000f64565b820191906000526020600020905b81548152906001019060200180831162000f4657829003601f168201915b5050505050815260200160038201805462000f7f9062008cc7565b80601f016020809104026020016040519081016040528092919081815260200182805462000fad9062008cc7565b801562000ffe5780601f1062000fd25761010080835404028352916020019162000ffe565b820191906000526020600020905b81548152906001019060200180831162000fe057829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152805161028081019182905260a09092019190600d84019060149082845b8154815260200190600101908083116200108a575050509190925250505060408101519091506001600160a01b03161580620010c757508060e001515b156200113857816001600160a01b03167ffc8bff675087dd2da069cc3fb517b9ed001e19750c0865241a5542dba1ba170d6040516200112b9060208082526011908201527024a72b20a624a22fab20a624a220aa27a960791b604082015260600190565b60405180910390a2505050565b60408181015160c0830151519151632f303ebb60e11b81526001600160401b0390921660048301526001600160a01b031690635e607d769034906024016000604051808303818588803b1580156200118f57600080fd5b505af1158015620011a4573d6000803e3d6000fd5b5050505050816001600160a01b03167fe34918ff1c7084970068b53fd71ad6d8b04e9f15d3886cbf006443e6cdc52ea6346040516200112b91815260200190565b50565b33611001146200121057604051630f22c43960e41b8152611001600482015260240162000c85565b6000601183836040516200122692919062008cfd565b908152604051908190036020019020546001600160a01b031690506200124e600b8262006e8f565b6200126c5760405163fdf4600b60e01b815260040160405180910390fd5b6001600160a01b0381166000908152600d602052604081209062001292603c4262008d23565b60165460008281526017602052604090205491925011620012c65760405163bd52fcdb60e01b815260040160405180910390fd5b6000818152601760205260408120805460019290620012e790849062008d46565b909155505060405160129062001301908790879062008cfd565b90815260200160405180910390205460001415801562001350575042603c601287876040516200133392919062008cfd565b9081526020016040518091039020546200134e919062008d46565b105b156200136f57604051631898eb6b60e01b815260040160405180910390fd5b6000806200137f85600262006eb2565b9150915081620013a257604051631b919bb160e11b815260040160405180910390fd5b600284015460085460405163045bc4d160e41b815260048101919091526000916001600160a01b0316906345bc4d10906024016020604051808303816000875af1158015620013f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200141b919062008d5c565b905062001429858362006f3c565b856001600160a01b03167f6e9a2ee7aee95665e3a774a212eb11441b217e3e4656ab9563793094689aabb283836002604051620014699392919062008d8c565b60405180910390a26002850154604051633041949b60e01b815261200591633041949b91620014a7916001600160a01b0316908a9060040162008dbb565b600060405180830381600087803b158015620014c257600080fd5b505af1158015620014d7573d6000803e3d6000fd5b505050505050505050505050565b606033612000146200150f57604051630f22c43960e41b8152612000600482015260240162000c85565b6000806200155385858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250620070a392505050565b9150915080620015765760405163035ede3560e21b815260040160405180910390fd5b81606001516000036200159c5750506040805160008152602081019091529050620017c7565b6000805463ff00000019166301000000178155606083015160405163e04c83a760e01b81526110049163e04c83a791620015dd919060040190815260200190565b6020604051808303816000875af1158015620015fd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001623919062008dd5565b905080620016d55782602001516001600160a01b031683600001516001600160a01b03167fa9084c89a291b43bc984e045671d394974730a159b9a826b577bb148ab504c3a856060015160016040516200167f92919062008df5565b60405180910390a36000805463ff00000019169055604080516020601f8801819004810282018101909252868152908790879081908401838280828437600092019190915250929650620017c795505050505050565b6000805463ff00000019168155620016ed8462007206565b9050600081600581111562001706576200170662008d76565b03620017285750506040805160008152602081019091529250620017c7915050565b83602001516001600160a01b031684600001516001600160a01b03167fa9084c89a291b43bc984e045671d394974730a159b9a826b577bb148ab504c3a8660600151846040516200177b92919062008df5565b60405180910390a386868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929750620017c79650505050505050565b9392505050565b6019546001600160a01b03163314620017fa5760405163f2771a9960e01b815260040160405180910390fd5b6001600160a01b03166000908152601a60205260409020805460ff19166001179055565b60005462010000900460ff1615620018495760405163d7485e8f60e01b815260040160405180910390fd5b8062001857600b8262006e8f565b620018755760405163fdf4600b60e01b815260040160405180910390fd5b6001600160a01b0382166000908152600d60205260409020600a81015460ff16620018b357604051634b6b857d60e01b815260040160405180910390fd5b6002805490820154604051630913db4760e01b81526001600160a01b03868116600483015290911690630913db4790602401602060405180830381865afa15801562001903573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001929919062008d5c565b101562001949576040516317b204bf60e11b815260040160405180910390fd5b4281600b015411156200196f5760405163170cb76760e21b815260040160405180910390fd5b600a8101805460ff1916905560158054600191906000906200199390849062008e1c565b90915550506040516001600160a01b038416907f9390b453426557da5ebdc31f19a37753ca04addf656d32f35232211bb2af3f1990600090a2505050565b60005462010000900460ff1615620019fc5760405163d7485e8f60e01b815260040160405180910390fd5b336000908152601a602052604090205460ff161562001a2e5760405163b1d02c3d60e01b815260040160405180910390fd5b3362001a3c600b8262006e8f565b62001a5a5760405163fdf4600b60e01b815260040160405180910390fd5b6001600160a01b03821662001a8257604051636520611b60e11b815260040160405180910390fd5b6001600160a01b038281166000908152600f60205260409020541615158062001ac357506001600160a01b03821660009081526013602052604090205460ff165b1562001ae257604051631e6f587560e11b815260040160405180910390fd5b336000818152600d60205260409020600c810154429062001b0690603c9062008d46565b111562001b2657604051631f92cdbd60e11b815260040160405180910390fd5b80546001600160a01b039081166000908152601060209081526040808320429081905585548986166001600160a01b031991821681178855600c880192909255818552600f9093528184208054958816959093168517909255519092917f6e4e747ca35203f16401c69805c7dd52fff67ef60b0ebc5c7fe16890530f223591a350505050565b6019546001600160a01b0316331462001bd85760405163f2771a9960e01b815260040160405180910390fd5b6001600160a01b03166000908152601a60205260409020805460ff19169055565b60005462010000900460ff161562001c245760405163d7485e8f60e01b815260040160405180910390fd5b336000908152601a602052604090205460ff161562001c565760405163b1d02c3d60e01b815260040160405180910390fd5b8162001c64600b8262006e8f565b62001c825760405163fdf4600b60e01b815260040160405180910390fd5b8160000362001ca457604051639811e0c760e01b815260040160405180910390fd5b6001600160a01b038084166000908152600d60209081526040808320815161016081018352815486168152600182015486169381019390935260028101549094169082015260038301546060820152600483018054339491608084019162001d0c9062008cc7565b80601f016020809104026020016040519081016040528092919081815260200182805462001d3a9062008cc7565b801562001d8b5780601f1062001d5f5761010080835404028352916020019162001d8b565b820191906000526020600020905b81548152906001019060200180831162001d6d57829003601f168201915b505050505081526020016005820160405180608001604052908160008201805462001db69062008cc7565b80601f016020809104026020016040519081016040528092919081815260200182805462001de49062008cc7565b801562001e355780601f1062001e095761010080835404028352916020019162001e35565b820191906000526020600020905b81548152906001019060200180831162001e1757829003601f168201915b5050505050815260200160018201805462001e509062008cc7565b80601f016020809104026020016040519081016040528092919081815260200182805462001e7e9062008cc7565b801562001ecf5780601f1062001ea35761010080835404028352916020019162001ecf565b820191906000526020600020905b81548152906001019060200180831162001eb157829003601f168201915b5050505050815260200160028201805462001eea9062008cc7565b80601f016020809104026020016040519081016040528092919081815260200182805462001f189062008cc7565b801562001f695780601f1062001f3d5761010080835404028352916020019162001f69565b820191906000526020600020905b81548152906001019060200180831162001f4b57829003601f168201915b5050505050815260200160038201805462001f849062008cc7565b80601f016020809104026020016040519081016040528092919081815260200182805462001fb29062008cc7565b8015620020035780601f1062001fd75761010080835404028352916020019162002003565b820191906000526020600020905b81548152906001019060200180831162001fe557829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152805161028081019182905260a09092019190600d84019060149082845b8154815260200190600101908083116200208f575050509190925250505060408082015190516326ccee8b60e11b81526001600160a01b0385811660048301526024820188905292935060009290911690634d99dd16906044016020604051808303816000875af115801562002109573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200212f919062008d5c565b9050826001600160a01b0316866001600160a01b03167f3aace7340547de7b9156593a7652dc07ee900cea3fd8f82cb6c9d38b40829802878460405162002180929190918252602082015260400190565b60405180910390a3856001600160a01b0316836001600160a01b031603620021ad57620021ad8662007849565b6040808301519051633041949b60e01b815261200591633041949b91620021da9190879060040162008dbb565b600060405180830381600087803b158015620021f557600080fd5b505af11580156200220a573d6000803e3d6000fd5b50505050505050505050565b60005462010000900460ff1615620022415760405163d7485e8f60e01b815260040160405180910390fd5b336000908152601a602052604090205460ff1615620022735760405163b1d02c3d60e01b815260040160405180910390fd5b8362002281600b8262006e8f565b6200229f5760405163fdf4600b60e01b815260040160405180910390fd5b83620022ad600b8262006e8f565b620022cb5760405163fdf4600b60e01b815260040160405180910390fd5b83600003620022ed57604051639811e0c760e01b815260040160405180910390fd5b846001600160a01b0316866001600160a01b031603620023205760405163f0e3e62960e01b815260040160405180910390fd5b6001600160a01b038087166000908152600d602090815260408083208151610160810183528154861681526001820154861693810193909352600281015490941690820152600383015460608201526004830180543394916080840191620023889062008cc7565b80601f0160208091040260200160405190810160405280929190818152602001828054620023b69062008cc7565b8015620024075780601f10620023db5761010080835404028352916020019162002407565b820191906000526020600020905b815481529060010190602001808311620023e957829003601f168201915b5050505050815260200160058201604051806080016040529081600082018054620024329062008cc7565b80601f0160208091040260200160405190810160405280929190818152602001828054620024609062008cc7565b8015620024b15780601f106200248557610100808354040283529160200191620024b1565b820191906000526020600020905b8154815290600101906020018083116200249357829003601f168201915b50505050508152602001600182018054620024cc9062008cc7565b80601f0160208091040260200160405190810160405280929190818152602001828054620024fa9062008cc7565b80156200254b5780601f106200251f576101008083540402835291602001916200254b565b820191906000526020600020905b8154815290600101906020018083116200252d57829003601f168201915b50505050508152602001600282018054620025669062008cc7565b80601f0160208091040260200160405190810160405280929190818152602001828054620025949062008cc7565b8015620025e55780601f10620025b957610100808354040283529160200191620025e5565b820191906000526020600020905b815481529060010190602001808311620025c757829003601f168201915b50505050508152602001600382018054620026009062008cc7565b80601f01602080910402602001604051908101604052809291908181526020018280546200262e9062008cc7565b80156200267f5780601f1062002653576101008083540402835291602001916200267f565b820191906000526020600020905b8154815290600101906020018083116200266157829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152805161028081019182905260a09092019190600d84019060149082845b8154815260200190600101908083116200270b57505050919092525050506001600160a01b038089166000908152600d6020908152604080832081516101608101835281548616815260018201548616938101939093526002810154909416908201526003830154606082015260048301805494955091939092916080840191620027969062008cc7565b80601f0160208091040260200160405190810160405280929190818152602001828054620027c49062008cc7565b8015620028155780601f10620027e95761010080835404028352916020019162002815565b820191906000526020600020905b815481529060010190602001808311620027f757829003601f168201915b5050505050815260200160058201604051806080016040529081600082018054620028409062008cc7565b80601f01602080910402602001604051908101604052809291908181526020018280546200286e9062008cc7565b8015620028bf5780601f106200289357610100808354040283529160200191620028bf565b820191906000526020600020905b815481529060010190602001808311620028a157829003601f168201915b50505050508152602001600182018054620028da9062008cc7565b80601f0160208091040260200160405190810160405280929190818152602001828054620029089062008cc7565b8015620029595780601f106200292d5761010080835404028352916020019162002959565b820191906000526020600020905b8154815290600101906020018083116200293b57829003601f168201915b50505050508152602001600282018054620029749062008cc7565b80601f0160208091040260200160405190810160405280929190818152602001828054620029a29062008cc7565b8015620029f35780601f10620029c757610100808354040283529160200191620029f3565b820191906000526020600020905b815481529060010190602001808311620029d557829003601f168201915b5050505050815260200160038201805462002a0e9062008cc7565b80601f016020809104026020016040519081016040528092919081815260200182805462002a3c9062008cc7565b801562002a8d5780601f1062002a615761010080835404028352916020019162002a8d565b820191906000526020600020905b81548152906001019060200180831162002a6f57829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152805161028081019182905260a09092019190600d84019060149082845b81548152602001906001019080831162002b195750505050508152505090508060e00151801562002b5c5750876001600160a01b0316836001600160a01b031614155b1562002b7b57604051636468920360e01b815260040160405180910390fd5b6000805463ff0000001916630100000017815560408381015190516352e82ce560e11b81526001600160a01b038681166004830152602482018b90529091169063a5d059ca906044016020604051808303816000875af115801562002be4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002c0a919062008d5c565b905060035481101562002c305760405163dc6f0bdd60e01b815260040160405180910390fd5b896001600160a01b0316846001600160a01b031614801562002cc557506002546040808501519051630913db4760e01b81526001600160a01b038d8116600483015290911690630913db4790602401602060405180830381865afa15801562002c9d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002cc3919062008d5c565b105b1562002ce4576040516317b204bf60e11b815260040160405180910390fd5b60006127106006548362002cf9919062008e32565b62002d05919062008d23565b9050600083604001516001600160a01b03168260405160006040518083038185875af1925050503d806000811462002d5a576040519150601f19603f3d011682016040523d82523d6000602084013e62002d5f565b606091505b505090508062002d82576040516312171d8360e31b815260040160405180910390fd5b62002d8e828462008e1c565b60408086015190516317066a5760e21b81526001600160a01b03898116600483015292955060009290911690635c19a95c90869060240160206040518083038185885af115801562002de4573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019062002e0b919062008d5c565b905060008060036101000a81548160ff021916908360ff160217905550866001600160a01b03168c6001600160a01b03168e6001600160a01b03167ffdac6e81913996d95abcc289e90f2d8bd235487ce6fe6f821e7d21002a1915b48e858960405162002e8b939291909283526020830191909152604082015260600190565b60405180910390a460408051600280825260608201835260009260208301908036833701905050905086604001518160008151811062002ecf5762002ecf62008e4c565b60200260200101906001600160a01b031690816001600160a01b03168152505085604001518160018151811062002f0a5762002f0a62008e4c565b6001600160a01b0390921660209283029190910190910152604051634484077560e01b81526120059063448407759062002f4b9084908c9060040162008e62565b600060405180830381600087803b15801562002f6657600080fd5b505af115801562002f7b573d6000803e3d6000fd5b505050508a1562002fed576120056001600160a01b031663e5ed5b1e898f6040518363ffffffff1660e01b815260040162002fb892919062008dbb565b600060405180830381600087803b15801562002fd357600080fd5b505af115801562002fe8573d6000803e3d6000fd5b505050505b5050505050505050505050505050565b60005462010000900460ff1615620030285760405163d7485e8f60e01b815260040160405180910390fd5b336000908152601a602052604090205460ff16156200305a5760405163b1d02c3d60e01b815260040160405180910390fd5b3362003068600b8262006e8f565b620030865760405163fdf4600b60e01b815260040160405180910390fd5b336000818152600d60205260409020600c8101544290620030aa90603c9062008d46565b1115620030ca57604051631f92cdbd60e11b815260040160405180910390fd5b60098101546001600160401b03600160401b90910481169085161115620031045760405163dc81db8560e01b815260040160405180910390fd5b60098101546000906001600160401b039081169086161015620031425760098201546200313c9086906001600160401b031662008e8e565b6200315c565b60098201546200315c906001600160401b03168662008e8e565b60098301546001600160401b039182169250600160801b900416811115620031975760405163dc81db8560e01b815260040160405180910390fd5b60098201805467ffffffffffffffff19166001600160401b03871690811790915542600c8401556040519081526001600160a01b038416907f78cdd96edf59e09cfd4d26ef6ef6c92d166effe6a40970c54821206d541932cb9060200160405180910390a25050505050565b6060806060600062003216600b620079c2565b9050808610156200388c5784156200322f578462003231565b805b945060008562003242888462008e1c565b116200325a5762003254878362008e1c565b6200325c565b855b9050806001600160401b03811115620032795762003279620084ff565b604051908082528060200260200182016040528015620032a3578160200160208202803683370190505b509450806001600160401b03811115620032c157620032c1620084ff565b604051908082528060200260200182016040528015620032eb578160200160208202803683370190505b509350806001600160401b03811115620033095762003309620084ff565b6040519080825280602002602001820160405280156200333e57816020015b6060815260200190600190039081620033285790505b50925060005b8181101562003889576000620033686200335f838b62008d46565b600b90620079cd565b6001600160a01b038082166000908152600d6020908152604080832081516101608101835281548616815260018201548616938101939093526002810154909416908201526003830154606082015260048301805494955091939092916080840191620033d59062008cc7565b80601f0160208091040260200160405190810160405280929190818152602001828054620034039062008cc7565b8015620034545780601f10620034285761010080835404028352916020019162003454565b820191906000526020600020905b8154815290600101906020018083116200343657829003601f168201915b50505050508152602001600582016040518060800160405290816000820180546200347f9062008cc7565b80601f0160208091040260200160405190810160405280929190818152602001828054620034ad9062008cc7565b8015620034fe5780601f10620034d257610100808354040283529160200191620034fe565b820191906000526020600020905b815481529060010190602001808311620034e057829003601f168201915b50505050508152602001600182018054620035199062008cc7565b80601f0160208091040260200160405190810160405280929190818152602001828054620035479062008cc7565b8015620035985780601f106200356c5761010080835404028352916020019162003598565b820191906000526020600020905b8154815290600101906020018083116200357a57829003601f168201915b50505050508152602001600282018054620035b39062008cc7565b80601f0160208091040260200160405190810160405280929190818152602001828054620035e19062008cc7565b8015620036325780601f10620036065761010080835404028352916020019162003632565b820191906000526020600020905b8154815290600101906020018083116200361457829003601f168201915b505050505081526020016003820180546200364d9062008cc7565b80601f01602080910402602001604051908101604052809291908181526020018280546200367b9062008cc7565b8015620036cc5780601f10620036a057610100808354040283529160200191620036cc565b820191906000526020600020905b815481529060010190602001808311620036ae57829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152805161028081019182905260a09092019190600d84019060149082845b81548152602001906001019080831162003758575050505050815250509050806000015188848151811062003791576200379162008e4c565b60200260200101906001600160a01b031690816001600160a01b0316815250508060e001516200382a5780604001516001600160a01b03166315d1f8986040518163ffffffff1660e01b8152600401602060405180830381865afa158015620037fe573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003824919062008d5c565b6200382d565b60005b87848151811062003842576200384262008e4c565b602002602001018181525050806080015186848151811062003868576200386862008e4c565b6020026020010181905250505080620038819062008eb1565b905062003344565b50505b92959194509250565b60005462010000900460ff1615620038c05760405163d7485e8f60e01b815260040160405180910390fd5b336000908152601a602052604090205460ff1615620038f25760405163b1d02c3d60e01b815260040160405180910390fd5b3362003900600b8262006e8f565b156200391f57604051635f28f62b60e01b815260040160405180910390fd5b6001600160a01b038881166000908152600f6020526040902054161515806200396057506001600160a01b03881660009081526013602052604090205460ff165b156200397f57604051631e6f587560e11b815260040160405180910390fd5b60006001600160a01b0316601188886040516200399e92919062008cfd565b908152604051908190036020019020546001600160a01b0316141580620039e8575060148787604051620039d492919062008cfd565b9081526040519081900360200190205460ff165b1562003a07576040516311fdb94760e01b815260040160405180910390fd5b600062003a15838062008ecd565b60405160200162003a2892919062008cfd565b60408051601f1981840301815291815281516020928301206000818152600e90935291205490915060ff161562003a725760405163c0bf414360e01b815260040160405180910390fd5b600254349062003a8c90670de0b6b3a76400009062008d46565b81101562003aad576040516317b204bf60e11b815260040160405180910390fd5b6001600160a01b038a1662003ad557604051636520611b60e11b815260040160405180910390fd5b61138862003aea6040870160208801620086db565b6001600160401b0316118062003b30575062003b0d6040860160208701620086db565b6001600160401b031662003b256020870187620086db565b6001600160401b0316115b8062003b6f575062003b496040860160208701620086db565b6001600160401b031662003b646060870160408801620086db565b6001600160401b0316115b1562003b8e5760405163dc81db8560e01b815260040160405180910390fd5b62003bd962003b9e858062008ecd565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250620079db92505050565b62003bf757604051635dba5ad760e01b815260040160405180910390fd5b62003c058989898962007b7d565b62003c2357604051631647e3cb60e11b815260040160405180910390fd5b600062003c718462003c36878062008ecd565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525062007caa92505050565b905062003c80600b8562007d74565b506000838152600e60209081526040808320805460ff191660019081179091556001600160a01b03808916808652600d9094529190932080548f83166001600160a01b03199182161782559381018054851690931790925560028201805491851691909316179091554260038201556004810162003d008b8d8362008f75565b50856005820162003d1282826200903d565b508790506009820162003d26828262009176565b505042600c8201556001600160a01b038c81166000908152600f60205260409081902080546001600160a01b0319169288169290921790915551859060119062003d74908e908e9062008cfd565b908152602001604051809103902060006101000a8154816001600160a01b0302191690836001600160a01b03160217905550816001600160a01b0316856001600160a01b03168d6001600160a01b03167faecd9fb95e79c75a3a1de93362c6be5fe6ab65770d8614be583884161cd8228d8e8e60405162003df792919062009246565b60405180910390a460408051848152602081018590526001600160a01b0387169182917f24d7bda8602b916d64417f0dbfe2e2e88ec9b1157bd9f596dfdb91ba26624e04910160405180910390a3604051633041949b60e01b815261200590633041949b9062003e6e908590899060040162008dbb565b600060405180830381600087803b15801562003e8957600080fd5b505af115801562003e9e573d6000803e3d6000fd5b50505050505050505050505050505050565b60408051606081018252600080825260208201819052918101919091528162003edb600b8262006e8f565b62003ef95760405163fdf4600b60e01b815260040160405180910390fd5b6001600160a01b0383166000908152600d602090815260409182902082516060810184526009909101546001600160401b038082168352600160401b8204811693830193909352600160801b90049091169181019190915291505b50919050565b336110011462003f8257604051630f22c43960e41b8152611001600482015260240162000c85565b6001600160a01b038082166000908152600f60205260409020541662003faa600b8262006e8f565b62003fc85760405163fdf4600b60e01b815260040160405180910390fd5b6001600160a01b038181166000908152600d60205260408082206002810154600754925163045bc4d160e41b81526004810193909352909316906345bc4d10906024016020604051808303816000875af11580156200402b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004051919062008d5c565b905060006009544262004065919062008d46565b905062004073838262006f3c565b836001600160a01b03167f6e9a2ee7aee95665e3a774a212eb11441b217e3e4656ab9563793094689aabb282846001604051620040b39392919062008d8c565b60405180910390a26002830154604051633041949b60e01b815261200591633041949b91620040f1916001600160a01b031690889060040162008dbb565b600060405180830381600087803b1580156200410c57600080fd5b505af115801562004121573d6000803e3d6000fd5b505050505050505050565b600054610100900460ff16158080156200414d5750600054600160ff909116105b80620041695750303b15801562004169575060005460ff166001145b620041ce5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840162000c85565b6000805460ff191660011790558015620041f2576000805461ff0019166101001790555b334114620042135760405163022d8c9560e31b815260040160405180910390fd5b3a1562004233576040516383f1b1d360e01b815260040160405180910390fd5b611388600155686c6b935b8bbd4000006002908155670de0b6b3a7640000600355602d600455607860058190556006829055678ac7230489e80000600755680ad78ebc5ac620000060085560095560b4600a556016556040805160c0810190915260a080825260609182916200a5326020830139806020019051810190620042bc919062009282565b9150604051806101e001604052806101c081526020016200a5d26101c09139806020019051810190620042f0919062009326565b905060005b82518110156200435f576001601360008584815181106200431a576200431a62008e4c565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055620043578162008eb1565b9050620042f5565b5060005b8151811015620043d0576001601483838151811062004386576200438662008e4c565b60200260200101516040516200439d919062009423565b908152604051908190036020019020805491151560ff19909216919091179055620043c88162008eb1565b905062004363565b5050601980546001600160a01b03191673df87f0e2b8519ea2dd4abd8b639cdd628497ed25179055508015620011e5576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b33612000146200446a57604051630f22c43960e41b8152612000600482015260240162000c85565b7f41ce201247b6ceb957dcdb217d0b8acb50b9ea0e12af9af4f5e7f389021016058383836040516200449f9392919062009441565b60405180910390a1505050565b6019546001600160a01b03163314620044d85760405163f2771a9960e01b815260040160405180910390fd5b6000805462ff00001916620100001781556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e7529190a1565b600062004521600b8462006e8f565b6200453f5760405163fdf4600b60e01b815260040160405180910390fd5b6001600160a01b038381166000908152600d602052604090819020600201549051636bbf224960e01b815260048101859052911690636bbf2249906024015b602060405180830381865afa1580156200459c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620045c2919062008d5c565b90505b92915050565b60005462010000900460ff1615620045f65760405163d7485e8f60e01b815260040160405180910390fd5b336000908152601a602052604090205460ff1615620046285760405163b1d02c3d60e01b815260040160405180910390fd5b8162004636600b8262006e8f565b620046545760405163fdf4600b60e01b815260040160405180910390fd5b60035434908110156200467a5760405163dc6f0bdd60e01b815260040160405180910390fd5b6001600160a01b038085166000908152600d602090815260408083208151610160810183528154861681526001820154861693810193909352600281015490941690820152600383015460608201526004830180543394916080840191620046e29062008cc7565b80601f0160208091040260200160405190810160405280929190818152602001828054620047109062008cc7565b8015620047615780601f10620047355761010080835404028352916020019162004761565b820191906000526020600020905b8154815290600101906020018083116200474357829003601f168201915b50505050508152602001600582016040518060800160405290816000820180546200478c9062008cc7565b80601f0160208091040260200160405190810160405280929190818152602001828054620047ba9062008cc7565b80156200480b5780601f10620047df576101008083540402835291602001916200480b565b820191906000526020600020905b815481529060010190602001808311620047ed57829003601f168201915b50505050508152602001600182018054620048269062008cc7565b80601f0160208091040260200160405190810160405280929190818152602001828054620048549062008cc7565b8015620048a55780601f106200487957610100808354040283529160200191620048a5565b820191906000526020600020905b8154815290600101906020018083116200488757829003601f168201915b50505050508152602001600282018054620048c09062008cc7565b80601f0160208091040260200160405190810160405280929190818152602001828054620048ee9062008cc7565b80156200493f5780601f1062004913576101008083540402835291602001916200493f565b820191906000526020600020905b8154815290600101906020018083116200492157829003601f168201915b505050505081526020016003820180546200495a9062008cc7565b80601f0160208091040260200160405190810160405280929190818152602001828054620049889062008cc7565b8015620049d95780601f10620049ad57610100808354040283529160200191620049d9565b820191906000526020600020905b815481529060010190602001808311620049bb57829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152805161028081019182905260a09092019190600d84019060149082845b81548152602001906001019080831162004a655750505050508152505090508060e00151801562004aa85750856001600160a01b0316826001600160a01b031614155b1562004ac757604051636468920360e01b815260040160405180910390fd5b60408082015190516317066a5760e21b81526001600160a01b0384811660048301526000921690635c19a95c90869060240160206040518083038185885af115801562004b18573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019062004b3f919062008d5c565b9050826001600160a01b0316876001600160a01b03167f24d7bda8602b916d64417f0dbfe2e2e88ec9b1157bd9f596dfdb91ba26624e04838760405162004b90929190918252602082015260400190565b60405180910390a36040808301519051633041949b60e01b815261200591633041949b9162004bc59190879060040162008dbb565b600060405180830381600087803b15801562004be057600080fd5b505af115801562004bf5573d6000803e3d6000fd5b50505050851562004c5e576040516372f6ad8f60e11b81526120059063e5ed5b1e9062004c299086908b9060040162008dbb565b600060405180830381600087803b15801562004c4457600080fd5b505af115801562004c59573d6000803e3d6000fd5b505050505b50505050505050565b62004c936040518060800160405280606081526020016060815260200160608152602001606081525090565b8162004ca1600b8262006e8f565b62004cbf5760405163fdf4600b60e01b815260040160405180910390fd5b6001600160a01b0383166000908152600d60205260409081902081516080810190925260050180548290829062004cf69062008cc7565b80601f016020809104026020016040519081016040528092919081815260200182805462004d249062008cc7565b801562004d755780601f1062004d495761010080835404028352916020019162004d75565b820191906000526020600020905b81548152906001019060200180831162004d5757829003601f168201915b5050505050815260200160018201805462004d909062008cc7565b80601f016020809104026020016040519081016040528092919081815260200182805462004dbe9062008cc7565b801562004e0f5780601f1062004de35761010080835404028352916020019162004e0f565b820191906000526020600020905b81548152906001019060200180831162004df157829003601f168201915b5050505050815260200160028201805462004e2a9062008cc7565b80601f016020809104026020016040519081016040528092919081815260200182805462004e589062008cc7565b801562004ea95780601f1062004e7d5761010080835404028352916020019162004ea9565b820191906000526020600020905b81548152906001019060200180831162004e8b57829003601f168201915b5050505050815260200160038201805462004ec49062008cc7565b80601f016020809104026020016040519081016040528092919081815260200182805462004ef29062008cc7565b801562004f435780601f1062004f175761010080835404028352916020019162004f43565b820191906000526020600020905b81548152906001019060200180831162004f2557829003601f168201915b505050505081525050915050919050565b60005462010000900460ff161562004f7f5760405163d7485e8f60e01b815260040160405180910390fd5b336000908152601a602052604090205460ff161562004fb15760405163b1d02c3d60e01b815260040160405180910390fd5b62004fbd828262007d8b565b5050565b336110071462004fe957604051630f22c43960e41b8152611007600482015260240162000c85565b620050566040518060400160405280601081526020016f1d1c985b9cd9995c91d85cd31a5b5a5d60821b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062007e979050565b15620051045760208114620050885783838383604051630a5a604160e01b815260040162000c85949392919062009460565b604080516020601f8401819004810282018101909252828152600091620050cb91858580838501838280828437600092019190915250929392505062007ef49050565b90506108fc811015620050fb5784848484604051630a5a604160e01b815260040162000c85949392919062009460565b60015562005deb565b620051756040518060400160405280601481526020017336b4b729b2b6332232b632b3b0ba34b7b721272160611b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062007e979050565b156200522a5760208114620051a75783838383604051630a5a604160e01b815260040162000c85949392919062009460565b604080516020601f8401819004810282018101909252828152600091620051ea91858580838501838280828437600092019190915250929392505062007ef49050565b9050683635c9adc5dea00000811015620052215784848484604051630a5a604160e01b815260040162000c85949392919062009460565b60025562005deb565b6200529d604051806040016040528060168152602001756d696e44656c65676174696f6e424e424368616e676560501b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062007e979050565b15620053515760208114620052cf5783838383604051630a5a604160e01b815260040162000c85949392919062009460565b604080516020601f84018190048102820181019092528281526000916200531291858580838501838280828437600092019190915250929392505062007ef49050565b905067016345785d8a0000811015620053485784848484604051630a5a604160e01b815260040162000c85949392919062009460565b60035562005deb565b620053c2604051806040016040528060148152602001736d6178456c656374656456616c696461746f727360601b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062007e979050565b156200547c5760208114620053f45783838383604051630a5a604160e01b815260040162000c85949392919062009460565b604080516020601f84018190048102820181019092528281526000916200543791858580838501838280828437600092019190915250929392505062007ef49050565b905060018110806200544a57506101f481115b15620054735784848484604051630a5a604160e01b815260040162000c85949392919062009460565b60045562005deb565b620054e56040518060400160405280600c81526020016b1d5b989bdb9914195c9a5bd960a21b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062007e979050565b15620055945760208114620055175783838383604051630a5a604160e01b815260040162000c85949392919062009460565b604080516020601f84018190048102820181019092528281526000916200555a91858580838501838280828437600092019190915250929392505062007ef49050565b90506203f4808110156200558b5784848484604051630a5a604160e01b815260040162000c85949392919062009460565b60055562005deb565b6200560260405180604001604052806011815260200170726564656c65676174654665655261746560781b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062007e979050565b15620056af5760208114620056345783838383604051630a5a604160e01b815260040162000c85949392919062009460565b604080516020601f84018190048102820181019092528281526000916200567791858580838501838280828437600092019190915250929392505062007ef49050565b90506064811115620056a65784848484604051630a5a604160e01b815260040162000c85949392919062009460565b60065562005deb565b6200571f60405180604001604052806013815260200172191bdddb9d1a5b5954db185cda105b5bdd5b9d606a1b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062007e979050565b15620057e05760208114620057515783838383604051630a5a604160e01b815260040162000c85949392919062009460565b604080516020601f84018190048102820181019092528281526000916200579491858580838501838280828437600092019190915250929392505062007ef49050565b9050674563918244f40000811080620057ae575060085481115b15620057d75784848484604051630a5a604160e01b815260040162000c85949392919062009460565b60075562005deb565b6200584e6040518060400160405280601181526020017019995b1bdb9e54db185cda105b5bdd5b9d607a1b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062007e979050565b15620059115760208114620058805783838383604051630a5a604160e01b815260040162000c85949392919062009460565b604080516020601f8401819004810282018101909252828152600091620058c391858580838501838280828437600092019190915250929392505062007ef49050565b905068056bc75e2d63100000811080620058df57506007548111155b15620059085784848484604051630a5a604160e01b815260040162000c85949392919062009460565b60085562005deb565b6200597e6040518060400160405280601081526020016f646f776e74696d654a61696c54696d6560801b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062007e979050565b1562005a3b5760208114620059b05783838383604051630a5a604160e01b815260040162000c85949392919062009460565b604080516020601f8401819004810282018101909252828152600091620059f391858580838501838280828437600092019190915250929392505062007ef49050565b90506202a30081108062005a095750600a548110155b1562005a325784848484604051630a5a604160e01b815260040162000c85949392919062009460565b60095562005deb565b62005aa66040518060400160405280600e81526020016d66656c6f6e794a61696c54696d6560901b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062007e979050565b1562005b63576020811462005ad85783838383604051630a5a604160e01b815260040162000c85949392919062009460565b604080516020601f840181900481028201810190925282815260009162005b1b91858580838501838280828437600092019190915250929392505062007ef49050565b9050620d2f0081108062005b3157506009548111155b1562005b5a5784848484604051630a5a604160e01b815260040162000c85949392919062009460565b600a5562005deb565b62005bdd6040518060400160405280601c81526020017f6d617846656c6f6e794265747765656e42726561746865426c6f636b0000000081525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062007e979050565b1562005c89576020811462005c0f5783838383604051630a5a604160e01b815260040162000c85949392919062009460565b604080516020601f840181900481028201810190925282815260009162005c5291858580838501838280828437600092019190915250929392505062007ef49050565b90508060000362005c805784848484604051630a5a604160e01b815260040162000c85949392919062009460565b60165562005deb565b62005cf46040518060400160405280600e81526020016d30b9b9b2ba283937ba32b1ba37b960911b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062007e979050565b1562005dc8576014811462005d265783838383604051630a5a604160e01b815260040162000c85949392919062009460565b600062005d6e601484848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062007ef49050565b90506001600160a01b03811662005da25784848484604051630a5a604160e01b815260040162000c85949392919062009460565b601980546001600160a01b0319166001600160a01b039290921691909117905562005deb565b838383836040516325ee20d560e21b815260040162000c85949392919062009460565b7ff1ce9b2cbf50eeb05769a29e2543fd350cab46894a7dd9978a12d534bb20e6338484848460405162005e22949392919062009460565b60405180910390a150505050565b60005462010000900460ff161562005e5b5760405163d7485e8f60e01b815260040160405180910390fd5b336000908152601a602052604090205460ff161562005e8d5760405163b1d02c3d60e01b815260040160405180910390fd5b816000816001600160401b0381111562005eab5762005eab620084ff565b60405190808252806020026020018201604052801562005ed5578160200160208202803683370190505b5090506000805b8381101562005fd35762005f1e87878381811062005efe5762005efe62008e4c565b905060200201602081019062005f1591906200838e565b600b9062006e8f565b62005f3c5760405163fdf4600b60e01b815260040160405180910390fd5b600d600088888481811062005f555762005f5562008e4c565b905060200201602081019062005f6c91906200838e565b6001600160a01b039081168252602082019290925260400160002060020154845191169250829084908390811062005fa85762005fa862008e4c565b6001600160a01b039092166020928302919091019091015262005fcb8162008eb1565b905062005edc565b50604051634484077560e01b815261200590634484077590620021da908590889060040162008e62565b60608060006200600e600b620079c2565b905080851015620061d257831562006027578362006029565b805b93506000846200603a878462008e1c565b1162006052576200604c868362008e1c565b62006054565b845b9050806001600160401b03811115620060715762006071620084ff565b6040519080825280602002602001820160405280156200609b578160200160208202803683370190505b509350806001600160401b03811115620060b957620060b9620084ff565b604051908082528060200260200182016040528015620060e3578160200160208202803683370190505b50925060005b81811015620061cf57620061026200335f828962008d46565b85828151811062006117576200611762008e4c565b60200260200101906001600160a01b031690816001600160a01b031681525050600d600086838151811062006150576200615062008e4c565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060020160009054906101000a90046001600160a01b0316848281518110620061a457620061a462008e4c565b6001600160a01b0390921660209283029190910190910152620061c78162008eb1565b9050620060e9565b50505b9250925092565b33611001146200620157604051630f22c43960e41b8152611001600482015260240162000c85565b6001600160a01b038082166000908152600f60205260409020541662006229600b8262006e8f565b620062475760405163fdf4600b60e01b815260040160405180910390fd5b6001600160a01b0381166000908152600d60205260408120906200626d603c4262008d23565b60165460008281526017602052604090205491925011620062a15760405163bd52fcdb60e01b815260040160405180910390fd5b6000818152601760205260408120805460019290620062c290849062008d46565b90915550506001600160a01b038416600090815260106020526040902054158015906200631557506001600160a01b03841660009081526010602052604090205442906200631390603c9062008d46565b105b1562006334576040516330abb81d60e21b815260040160405180910390fd5b6000806200634485600062006eb2565b91509150816200636757604051631b919bb160e11b815260040160405180910390fd5b600284015460085460405163045bc4d160e41b815260048101919091526000916001600160a01b0316906345bc4d10906024016020604051808303816000875af1158015620063ba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620063e0919062008d5c565b9050620063ee858362006f3c565b856001600160a01b03167f6e9a2ee7aee95665e3a774a212eb11441b217e3e4656ab9563793094689aabb2838360006040516200642e9392919062008d8c565b60405180910390a26002850154604051633041949b60e01b815261200591633041949b9162004c29916001600160a01b0316908a9060040162008dbb565b60008080606081808662006482600b8262006e8f565b620064a05760405163fdf4600b60e01b815260040160405180910390fd5b6001600160a01b038089166000908152600d60209081526040808320815161016081018352815486168152600182015486169381019390935260028101549094169082015260038301546060820152600483018054929391926080840191906200650a9062008cc7565b80601f0160208091040260200160405190810160405280929190818152602001828054620065389062008cc7565b8015620065895780601f106200655d5761010080835404028352916020019162006589565b820191906000526020600020905b8154815290600101906020018083116200656b57829003601f168201915b5050505050815260200160058201604051806080016040529081600082018054620065b49062008cc7565b80601f0160208091040260200160405190810160405280929190818152602001828054620065e29062008cc7565b8015620066335780601f10620066075761010080835404028352916020019162006633565b820191906000526020600020905b8154815290600101906020018083116200661557829003601f168201915b505050505081526020016001820180546200664e9062008cc7565b80601f01602080910402602001604051908101604052809291908181526020018280546200667c9062008cc7565b8015620066cd5780601f10620066a157610100808354040283529160200191620066cd565b820191906000526020600020905b815481529060010190602001808311620066af57829003601f168201915b50505050508152602001600282018054620066e89062008cc7565b80601f0160208091040260200160405190810160405280929190818152602001828054620067169062008cc7565b8015620067675780601f106200673b5761010080835404028352916020019162006767565b820191906000526020600020905b8154815290600101906020018083116200674957829003601f168201915b50505050508152602001600382018054620067829062008cc7565b80601f0160208091040260200160405190810160405280929190818152602001828054620067b09062008cc7565b8015620068015780601f10620067d55761010080835404028352916020019162006801565b820191906000526020600020905b815481529060010190602001808311620067e357829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152805161028081019182905260a09092019190600d84019060149082845b8154815260200190600101908083116200688d57505050919092525050815160408301516060840151608085015160e086015161010090960151939f929e50909c509a50929850965090945050505050565b60005462010000900460ff16156200690a5760405163d7485e8f60e01b815260040160405180910390fd5b336000908152601a602052604090205460ff16156200693c5760405163b1d02c3d60e01b815260040160405180910390fd5b336200694a600b8262006e8f565b620069685760405163fdf4600b60e01b815260040160405180910390fd5b336000818152600d60205260409020600c81015442906200698c90603c9062008d46565b1115620069ac57604051631f92cdbd60e11b815260040160405180910390fd5b600581018054620069bd9062008cc7565b80601f0160208091040260200160405190810160405280929190818152602001828054620069eb9062008cc7565b801562006a3c5780601f1062006a105761010080835404028352916020019162006a3c565b820191906000526020600020905b81548152906001019060200180831162006a1e57829003601f168201915b505050828752508591600584019150819062006a5990826200948b565b506020820151600182019062006a7090826200948b565b506040820151600282019062006a8790826200948b565b506060820151600382019062006a9e90826200948b565b505042600c830155506040516001600160a01b038316907f85d6366b336ade7f106987ec7a8eac1e8799e508aeab045a39d2f63e0dc969d990600090a250505050565b60005462010000900460ff161562006b0c5760405163d7485e8f60e01b815260040160405180910390fd5b336000908152601a602052604090205460ff161562006b3e5760405163b1d02c3d60e01b815260040160405180910390fd5b82811462006b5f576040516341abc80160e01b815260040160405180910390fd5b60005b8381101562006bd05762006bbd85858381811062006b845762006b8462008e4c565b905060200201602081019062006b9b91906200838e565b84848481811062006bb05762006bb062008e4c565b9050602002013562007d8b565b62006bc88162008eb1565b905062006b62565b5050505050565b600062006be6600b8462006e8f565b62006c045760405163fdf4600b60e01b815260040160405180910390fd5b6001600160a01b038381166000908152600d60205260409081902060020154905163aa1966cd60e01b81526004810185905291169063aa1966cd906024016200457e565b60005462010000900460ff161562006c735760405163d7485e8f60e01b815260040160405180910390fd5b336000908152601a602052604090205460ff161562006ca55760405163b1d02c3d60e01b815260040160405180910390fd5b3362006cb3600b8262006e8f565b62006cd15760405163fdf4600b60e01b815260040160405180910390fd5b62006cdf8585858562007b7d565b62006cfd57604051631647e3cb60e11b815260040160405180910390fd5b60006001600160a01b03166011868660405162006d1c92919062008cfd565b908152604051908190036020019020546001600160a01b031614158062006d6657506014858560405162006d5292919062008cfd565b9081526040519081900360200190205460ff165b1562006d85576040516311fdb94760e01b815260040160405180910390fd5b336000818152600d60205260409020600c810154429062006da990603c9062008d46565b111562006dc957604051631f92cdbd60e11b815260040160405180910390fd5b4260128260040160405162006ddf919062009553565b908152604051908190036020019020556004810162006e0087898362008f75565b5042600c820155604051829060119062006e1e908a908a9062008cfd565b90815260405190819003602001812080546001600160a01b039384166001600160a01b0319909116179055908316907f783156582145bd0ff7924fae6953ba054cf1233eb60739a200ddb10de068ff0d9062006e7e908a908a9062009246565b60405180910390a250505050505050565b6001600160a01b03811660009081526001830160205260408120541515620045c2565b6000806000848460405160200162006ecc929190620095d1565b60408051601f198184030181529181528151602092830120600081815260189093529120549091504281111562006f0c5760008093509350505062006f35565b600a5462006f1b904262008d46565b600092835260186020526040909220829055506001925090505b9250929050565b6000600162006f4c600b620079c2565b62006f58919062008e1c565b6015541080159150620070165760405163d31f968d60e01b81526110006004820152600860248201526120009063d31f968d90604401602060405180830381865afa15801562006fac573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062006fd2919062008dd5565b620070165760018301546040516001600160a01b03909116907f2afdc18061ac21cff7d9f11527ab9c8dec6fabd4edf6f894ed634bebd6a20d4590600090a2505050565b82600b01548211156200702b57600b83018290555b600a83015460ff166200709e57600a8301805460ff19166001908117909155601580546000906200705e90849062008d46565b909155505060018301546040516001600160a01b03909116907f4905ac32602da3fb8b4b7b00c285e5fc4c6c2308cc908b4a1e4e9625a29c90a390600090a25b505050565b60408051608080820183526000808352602080840182905283850182905260608085018390528551938401865282845283820183905283860183905283018290528451808601865282815281018290528451808601909552855185528581019085015291928290620071159062007ef9565b90506000805b620071268362007f6c565b15620071f957806000036200715b576200714a620071448462007f92565b62007ff6565b6001600160a01b03168452620071e6565b80600103620071875762007173620071448462007f92565b6001600160a01b03166020850152620071e6565b80600203620071b3576200719f620071448462007f92565b6001600160a01b03166040850152620071e6565b80600303620071e057620071d1620071cb8462007f92565b6200800e565b606085015260019150620071e6565b620071f9565b620071f18162008eb1565b90506200711b565b5091959194509092505050565b6000805462010000900460ff1615620072325760405163d7485e8f60e01b815260040160405180910390fd5b6020808301516001600160a01b03166000908152601a909152604090205460ff16806200726a575060208201516001600160a01b0316155b156200727857506002919050565b81516200728890600b9062006e8f565b6200729557506003919050565b81516001600160a01b039081166000908152600d6020908152604080832081516101608101835281548616815260018201548616938101939093526002810154909416908201526003830154606082015260048301805492939192608084019190620073019062008cc7565b80601f01602080910402602001604051908101604052809291908181526020018280546200732f9062008cc7565b8015620073805780601f10620073545761010080835404028352916020019162007380565b820191906000526020600020905b8154815290600101906020018083116200736257829003601f168201915b5050505050815260200160058201604051806080016040529081600082018054620073ab9062008cc7565b80601f0160208091040260200160405190810160405280929190818152602001828054620073d99062008cc7565b80156200742a5780601f10620073fe576101008083540402835291602001916200742a565b820191906000526020600020905b8154815290600101906020018083116200740c57829003601f168201915b50505050508152602001600182018054620074459062008cc7565b80601f0160208091040260200160405190810160405280929190818152602001828054620074739062008cc7565b8015620074c45780601f106200749857610100808354040283529160200191620074c4565b820191906000526020600020905b815481529060010190602001808311620074a657829003601f168201915b50505050508152602001600282018054620074df9062008cc7565b80601f01602080910402602001604051908101604052809291908181526020018280546200750d9062008cc7565b80156200755e5780601f1062007532576101008083540402835291602001916200755e565b820191906000526020600020905b8154815290600101906020018083116200754057829003601f168201915b50505050508152602001600382018054620075799062008cc7565b80601f0160208091040260200160405190810160405280929190818152602001828054620075a79062008cc7565b8015620075f85780601f10620075cc57610100808354040283529160200191620075f8565b820191906000526020600020905b815481529060010190602001808311620075da57829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152805161028081019182905260a09092019190600d84019060149082845b815481526020019060010190808311620076845750505050508152505090508060e001518015620076cf575082600001516001600160a01b031683602001516001600160a01b031614155b15620076de5750600492915050565b8260600151471015620076f45750600592915050565b6040808201516060850151602086015192516317066a5760e21b81526001600160a01b03938416600482015260009390921691635c19a95c919060240160206040518083038185885af115801562007750573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019062007777919062008d5c565b905083602001516001600160a01b031684600001516001600160a01b03167f24d7bda8602b916d64417f0dbfe2e2e88ec9b1157bd9f596dfdb91ba26624e04838760600151604051620077d4929190918252602082015260400190565b60405180910390a383602001516001600160a01b031684600001516001600160a01b03167f607b17598da6bdca05650a2fc08bd2bc8e38c3236806a0fa8e0daabc1d6cb1d883876060015160405162007837929190918252602082015260400190565b60405180910390a35060009392505050565b6001600160a01b0381166000908152600d60205260409020600a81015460ff161562007873575050565b6002805490820154604051630913db4760e01b81526001600160a01b03858116600483015290911690630913db4790602401602060405180830381865afa158015620078c3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620078e9919062008d5c565b101562004fbd57620078fe8160095462006f3c565b8054604051631507fdb760e11b81526001600160a01b03909116600482015261100090632a0ffb6e90602401600060405180830381600087803b1580156200794557600080fd5b505af11580156200795a573d6000803e3d6000fd5b505082546040516335409f7f60e01b81526001600160a01b03909116600482015261100092506335409f7f9150602401600060405180830381600087803b158015620079a557600080fd5b505af1158015620079ba573d6000803e3d6000fd5b505050505050565b6000620045c5825490565b6000620045c28383620080e6565b600080829050600381511080620079f3575060098151115b1562007a025750600092915050565b60418160008151811062007a1a5762007a1a62008e4c565b016020015160f81c108062007a4c5750605a8160008151811062007a425762007a4262008e4c565b016020015160f81c115b1562007a5b5750600092915050565b60015b815181101562007b7357603082828151811062007a7f5762007a7f62008e4c565b016020015160f81c108062007ab05750603982828151811062007aa65762007aa662008e4c565b016020015160f81c115b801562007b005750604182828151811062007acf5762007acf62008e4c565b016020015160f81c108062007b005750605a82828151811062007af65762007af662008e4c565b016020015160f81c115b801562007b505750606182828151811062007b1f5762007b1f62008e4c565b016020015160f81c108062007b505750607a82828151811062007b465762007b4662008e4c565b016020015160f81c115b1562007b60575060009392505050565b62007b6b8162008eb1565b905062007a5e565b5060019392505050565b600060308414158062007b91575060608214155b1562007ba05750600062007ca2565b600085854660405160200162007bb9939291906200960f565b60408051808303601f1901815282825280516020918201208184528383019092529092506000919060208201818036833701905050905081602082015260008186868a8a60405160200162007c1395949392919062009621565b60408051808303601f190181526001808452838301909252925060009190602082018180368337019050509050815160016020830182602086016066600019fa62007c5d57600080fd5b5060008160008151811062007c765762007c7662008e4c565b016020015160f81c90506001811462007c985760009550505050505062007ca2565b6001955050505050505b949350505050565b60008061200361dead60405162007cc1906200836a565b6001600160a01b03928316815291166020820152606060408201819052600090820152608001604051809103906000f08015801562007d04573d6000803e3d6000fd5b509050806001600160a01b031663f399e22e3486866040518463ffffffff1660e01b815260040162007d3892919062009659565b6000604051808303818588803b15801562007d5257600080fd5b505af115801562007d67573d6000803e3d6000fd5b5093979650505050505050565b6000620045c2836001600160a01b03841662008113565b8162007d99600b8262006e8f565b62007db75760405163fdf4600b60e01b815260040160405180910390fd5b6001600160a01b038381166000908152600d6020526040808220600201549051635569f64b60e11b8152336004820152602481018690529192169063aad3ec96906044016020604051808303816000875af115801562007e1b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062007e41919062008d5c565b9050336001600160a01b0316846001600160a01b03167ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926838360405162007e8991815260200190565b60405180910390a350505050565b60008160405160200162007eac919062009423565b604051602081830303815290604052805190602001208360405160200162007ed5919062009423565b6040516020818303038152906040528051906020012014905092915050565b015190565b604080516080810182526000918101828152606082018390528152602081019190915262007f278262008165565b62007f3157600080fd5b600062007f42836020015162008198565b836020015162007f53919062008d46565b6040805180820190915293845260208401525090919050565b8051805160208201516000929162007f849162008d46565b836020015110915050919050565b604080518082019091526000808252602082015262007fb18262007f6c565b62007fbb57600080fd5b6020820151600062007fcd8262008220565b905062007fdb818362008d46565b60209485015260408051808201909152908152928301525090565b80516000906015146200800857600080fd5b620045c5825b8051600090158015906200802457508151602110155b6200802e57600080fd5b60006200803f836020015162008198565b90508083600001511015620080975760405162461bcd60e51b815260206004820152601a60248201527f6c656e677468206973206c657373207468616e206f6666736574000000000000604482015260640162000c85565b8251600090620080a990839062008e1c565b9050600080838660200151620080c0919062008d46565b9050805191506020831015620080dd57826020036101000a820491505b50949350505050565b600082600001828154811062008100576200810062008e4c565b9060005260206000200154905092915050565b60008181526001830160205260408120546200815c57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155620045c5565b506000620045c5565b805160009081036200817957506000919050565b6020820151805160001a9060c082101562007b73575060009392505050565b8051600090811a6080811015620081b25750600092915050565b60b8811080620081cf575060c08110801590620081cf575060f881105b15620081de5750600192915050565b60c08110156200821257620081f6600160b86200967f565b620082059060ff168262008e1c565b620017c790600162008d46565b620081f6600160f86200967f565b80516000908190811a60808110156200823d576001915062008363565b60b881101562008269576200825460808262008e1c565b6200826190600162008d46565b915062008363565b60c0811015620082e257600060b78203600186019550806020036101000a865104915060018101820193505080831015620082db5760405162461bcd60e51b81526020600482015260116024820152706164646974696f6e206f766572666c6f7760781b604482015260640162000c85565b5062008363565b60f8811015620082f9576200825460c08262008e1c565b600060f78203600186019550806020036101000a865104915060018101820193505080831015620083615760405162461bcd60e51b81526020600482015260116024820152706164646974696f6e206f766572666c6f7760781b604482015260640162000c85565b505b5092915050565b610e96806200969c83390190565b6001600160a01b0381168114620011e557600080fd5b600060208284031215620083a157600080fd5b8135620017c78162008378565b60008083601f840112620083c157600080fd5b5081356001600160401b03811115620083d957600080fd5b60208301915083602082850101111562006f3557600080fd5b600080602083850312156200840657600080fd5b82356001600160401b038111156200841d57600080fd5b6200842b85828601620083ae565b90969095509350505050565b6000806000604084860312156200844d57600080fd5b833560ff811681146200845f57600080fd5b925060208401356001600160401b038111156200847b57600080fd5b6200848986828701620083ae565b9497909650939450505050565b60005b83811015620084b357818101518382015260200162008499565b50506000910152565b60008151808452620084d681602086016020860162008496565b601f01601f19169290920160200192915050565b602081526000620045c26020830184620084bc565b634e487b7160e01b600052604160045260246000fd5b604051608081016001600160401b03811182821017156200853a576200853a620084ff565b60405290565b604051601f8201601f191681016001600160401b03811182821017156200856b576200856b620084ff565b604052919050565b60006001600160401b038211156200858f576200858f620084ff565b50601f01601f191660200190565b6000620085b4620085ae8462008573565b62008540565b9050828152838383011115620085c957600080fd5b828260208301376000602084830101529392505050565b600060208284031215620085f357600080fd5b81356001600160401b038111156200860a57600080fd5b8201601f810184136200861c57600080fd5b62007ca2848235602084016200859d565b600080604083850312156200864157600080fd5b82356200864e8162008378565b946020939093013593505050565b8015158114620011e557600080fd5b600080600080608085870312156200868257600080fd5b84356200868f8162008378565b93506020850135620086a18162008378565b9250604085013591506060850135620086ba816200865c565b939692955090935050565b6001600160401b0381168114620011e557600080fd5b600060208284031215620086ee57600080fd5b8135620017c781620086c5565b600080604083850312156200870f57600080fd5b50508035926020909101359150565b600081518084526020808501945080840160005b83811015620087595781516001600160a01b03168752958201959082019060010162008732565b509495945050505050565b6080815260006200877960808301876200871e565b82810360208481019190915286518083528782019282019060005b81811015620087b25784518352938301939183019160010162008794565b5050848103604086015286518082528282019350600581901b8201830183890160005b838110156200880757601f19858403018752620087f4838351620084bc565b96860196925090850190600101620087d5565b5050809550505050505082606083015295945050505050565b600080600080600080600087890360e08112156200883d57600080fd5b88356200884a8162008378565b975060208901356001600160401b03808211156200886757600080fd5b620088758c838d01620083ae565b909950975060408b01359150808211156200888f57600080fd5b6200889d8c838d01620083ae565b90975095508591506060605f1984011215620088b857600080fd5b60608b01945060c08b0135925080831115620088d357600080fd5b505088016080818b031215620088e857600080fd5b8091505092959891949750929550565b600080604083850312156200890c57600080fd5b8235620089198162008378565b915060208301356200892b816200865c565b809150509250929050565b6020815260008251608060208401526200895460a0840182620084bc565b90506020840151601f1980858403016040860152620089748383620084bc565b92506040860151915080858403016060860152620089938383620084bc565b9250606086015191508085840301608086015250620089b38282620084bc565b95945050505050565b60008060008060408587031215620089d357600080fd5b84356001600160401b0380821115620089eb57600080fd5b620089f988838901620083ae565b9096509450602087013591508082111562008a1357600080fd5b5062008a2287828801620083ae565b95989497509550505050565b60008083601f84011262008a4157600080fd5b5081356001600160401b0381111562008a5957600080fd5b6020830191508360208260051b850101111562006f3557600080fd5b60008060006040848603121562008a8b57600080fd5b83356001600160401b0381111562008aa257600080fd5b62008ab08682870162008a2e565b909450925050602084013562008ac68162008378565b809150509250925092565b60608152600062008ae660608301866200871e565b828103602084015262008afa81866200871e565b915050826040830152949350505050565b6001600160a01b038781168252861660208201526040810185905260c06060820181905260009062008b4090830186620084bc565b93151560808301525060a00152949350505050565b600082601f83011262008b6757600080fd5b620045c2838335602085016200859d565b60006020828403121562008b8b57600080fd5b81356001600160401b038082111562008ba357600080fd5b908301906080828603121562008bb857600080fd5b62008bc262008515565b82358281111562008bd257600080fd5b62008be08782860162008b55565b82525060208301358281111562008bf657600080fd5b62008c048782860162008b55565b60208301525060408301358281111562008c1d57600080fd5b62008c2b8782860162008b55565b60408301525060608301358281111562008c4457600080fd5b62008c528782860162008b55565b60608301525095945050505050565b6000806000806040858703121562008c7857600080fd5b84356001600160401b038082111562008c9057600080fd5b62008c9e8883890162008a2e565b9096509450602087013591508082111562008cb857600080fd5b5062008a228782880162008a2e565b600181811c9082168062008cdc57607f821691505b60208210810362003f5457634e487b7160e01b600052602260045260246000fd5b8183823760009101908152919050565b634e487b7160e01b600052601160045260246000fd5b60008262008d4157634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115620045c557620045c562008d0d565b60006020828403121562008d6f57600080fd5b5051919050565b634e487b7160e01b600052602160045260246000fd5b83815260208101839052606081016003831062008dad5762008dad62008d76565b826040830152949350505050565b6001600160a01b0392831681529116602082015260400190565b60006020828403121562008de857600080fd5b8151620017c7816200865c565b828152604081016006831062008e0f5762008e0f62008d76565b8260208301529392505050565b81810381811115620045c557620045c562008d0d565b8082028115828204841417620045c557620045c562008d0d565b634e487b7160e01b600052603260045260246000fd5b60408152600062008e7760408301856200871e565b905060018060a01b03831660208301529392505050565b6001600160401b0382811682821603908082111562008363576200836362008d0d565b60006001820162008ec65762008ec662008d0d565b5060010190565b6000808335601e1984360301811262008ee557600080fd5b8301803591506001600160401b0382111562008f0057600080fd5b60200191503681900382131562006f3557600080fd5b601f8211156200709e57600081815260208120601f850160051c8101602086101562008f3f5750805b601f850160051c820191505b81811015620079ba5782815560010162008f4b565b600019600383901b1c191660019190911b1790565b6001600160401b0383111562008f8f5762008f8f620084ff565b62008fa78362008fa0835462008cc7565b8362008f16565b6000601f84116001811462008fda576000851562008fc55750838201355b62008fd1868262008f60565b84555062006bd0565b600083815260209020601f19861690835b828110156200900d578685013582556020948501946001909201910162008feb565b50868210156200902b5760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b62009049828362008ecd565b6001600160401b03811115620090635762009063620084ff565b6200907b8162009074855462008cc7565b8562008f16565b6000601f821160018114620090ae5760008315620090995750838201355b620090a5848262008f60565b8655506200910b565b600085815260209020601f19841690835b82811015620090e15786850135825560209485019460019092019101620090bf565b5084821015620090ff5760001960f88660031b161c19848701351681555b505060018360011b0185555b505050506200911e602083018362008ecd565b6200912e81836001860162008f75565b50506200913f604083018362008ecd565b6200914f81836002860162008f75565b505062009160606083018362008ecd565b6200917081836003860162008f75565b50505050565b81356200918381620086c5565b6001600160401b03811690508154816001600160401b031982161783556020840135620091b081620086c5565b6fffffffffffffffff0000000000000000604091821b166fffffffffffffffffffffffffffffffff19831684178117855590850135620091f081620086c5565b6001600160c01b0319929092169092179190911760809190911b67ffffffffffffffff60801b1617905550565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60208152600062007ca26020830184866200921d565b60006001600160401b03821115620092785762009278620084ff565b5060051b60200190565b600060208083850312156200929657600080fd5b82516001600160401b03811115620092ad57600080fd5b8301601f81018513620092bf57600080fd5b8051620092d0620085ae826200925c565b81815260059190911b82018301908381019087831115620092f057600080fd5b928401925b828410156200931b5783516200930b8162008378565b82529284019290840190620092f5565b979650505050505050565b600060208083850312156200933a57600080fd5b82516001600160401b03808211156200935257600080fd5b818501915085601f8301126200936757600080fd5b815162009378620085ae826200925c565b81815260059190911b830184019084810190888311156200939857600080fd5b8585015b838110156200941657805185811115620093b65760008081fd5b8601603f81018b13620093c95760008081fd5b878101516040620093de620085ae8362008573565b8281528d82848601011115620093f45760008081fd5b62009405838c830184870162008496565b86525050509186019186016200939c565b5098975050505050505050565b600082516200943781846020870162008496565b9190910192915050565b60ff84168152604060208201526000620089b36040830184866200921d565b604081526000620094766040830186886200921d565b82810360208401526200931b8185876200921d565b81516001600160401b03811115620094a757620094a7620084ff565b620094bf81620094b8845462008cc7565b8462008f16565b602080601f831160018114620094f35760008415620094de5750858301515b620094ea858262008f60565b865550620079ba565b600085815260208120601f198616915b82811015620095245788860151825594840194600190910190840162009503565b5085821015620095435787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000808354620095638162008cc7565b600182811680156200957e57600181146200959457620095c5565b60ff1984168752821515830287019450620095c5565b8760005260208060002060005b85811015620095bc5781548a820152908401908201620095a1565b50505082870194505b50929695505050505050565b6bffffffffffffffffffffffff198360601b168152600060038310620095fb57620095fb62008d76565b5060f89190911b6014820152601501919050565b82848237909101908152602001919050565b6000865162009635818460208b0162008496565b82018587823760009086019081528385823760009301928352509095945050505050565b6001600160a01b038316815260406020820181905260009062007ca290830184620084bc565b60ff8281168282160390811115620045c557620045c562008d0d56fe608060405260405162000e9638038062000e96833981016040819052620000269162000497565b828162000036828260006200004d565b50620000449050826200008a565b505050620005ca565b6200005883620000e5565b600082511180620000665750805b1562000085576200008383836200012760201b620001691760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f620000b562000156565b604080516001600160a01b03928316815291841660208301520160405180910390a1620000e2816200018f565b50565b620000f08162000244565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606200014f838360405180606001604052806027815260200162000e6f60279139620002f8565b9392505050565b60006200018060008051602062000e4f83398151915260001b6200037760201b620001951760201c565b546001600160a01b0316919050565b6001600160a01b038116620001fa5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b806200022360008051602062000e4f83398151915260001b6200037760201b620001951760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6200025a816200037a60201b620001981760201c565b620002be5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401620001f1565b80620002237f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b6200037760201b620001951760201c565b6060600080856001600160a01b03168560405162000317919062000577565b600060405180830381855af49150503d806000811462000354576040519150601f19603f3d011682016040523d82523d6000602084013e62000359565b606091505b5090925090506200036d8683838762000389565b9695505050505050565b90565b6001600160a01b03163b151590565b60608315620003fd578251600003620003f5576001600160a01b0385163b620003f55760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401620001f1565b508162000409565b62000409838362000411565b949350505050565b815115620004225781518083602001fd5b8060405162461bcd60e51b8152600401620001f1919062000595565b80516001600160a01b03811681146200045657600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200048e57818101518382015260200162000474565b50506000910152565b600080600060608486031215620004ad57600080fd5b620004b8846200043e565b9250620004c8602085016200043e565b60408501519092506001600160401b0380821115620004e657600080fd5b818601915086601f830112620004fb57600080fd5b8151818111156200051057620005106200045b565b604051601f8201601f19908116603f011681019083821181831017156200053b576200053b6200045b565b816040528281528960208487010111156200055557600080fd5b6200056883602083016020880162000471565b80955050505050509250925092565b600082516200058b81846020870162000471565b9190910192915050565b6020815260008251806020840152620005b681604085016020870162000471565b601f01601f19169190910160400192915050565b61087580620005da6000396000f3fe60806040523661001357610011610017565b005b6100115b61001f6101a7565b6001600160a01b0316330361015f5760606001600160e01b0319600035166364d3180d60e11b810161005a576100536101da565b9150610157565b63587086bd60e11b6001600160e01b031982160161007a57610053610231565b63070d7c6960e41b6001600160e01b031982160161009a57610053610277565b621eb96f60e61b6001600160e01b03198216016100b9576100536102a8565b63a39f25e560e01b6001600160e01b03198216016100d9576100536102e8565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101676102fc565b565b606061018e83836040518060600160405280602781526020016108426027913961030c565b9392505050565b90565b6001600160a01b03163b151590565b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101e4610384565b60006101f33660048184610695565b81019061020091906106db565b905061021d8160405180602001604052806000815250600061038f565b505060408051602081019091526000815290565b60606000806102433660048184610695565b810190610250919061070c565b915091506102608282600161038f565b604051806020016040528060008152509250505090565b6060610281610384565b60006102903660048184610695565b81019061029d91906106db565b905061021d816103bb565b60606102b2610384565b60006102bc6101a7565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102f2610384565b60006102bc610412565b610167610307610412565b610421565b6060600080856001600160a01b03168560405161032991906107f2565b600060405180830381855af49150503d8060008114610364576040519150601f19603f3d011682016040523d82523d6000602084013e610369565b606091505b509150915061037a86838387610445565b9695505050505050565b341561016757600080fd5b610398836104c6565b6000825111806103a55750805b156103b6576103b48383610169565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103e46101a7565b604080516001600160a01b03928316815291841660208301520160405180910390a161040f81610506565b50565b600061041c6105af565b905090565b3660008037600080366000845af43d6000803e808015610440573d6000f35b3d6000fd5b606083156104b45782516000036104ad576001600160a01b0385163b6104ad5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014e565b50816104be565b6104be83836105d7565b949350505050565b6104cf81610601565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b03811661056b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014e565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101cb565b8151156105e75781518083602001fd5b8060405162461bcd60e51b815260040161014e919061080e565b6001600160a01b0381163b61066e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014e565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61058e565b600080858511156106a557600080fd5b838611156106b257600080fd5b5050820193919092039150565b80356001600160a01b03811681146106d657600080fd5b919050565b6000602082840312156106ed57600080fd5b61018e826106bf565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561071f57600080fd5b610728836106bf565b9150602083013567ffffffffffffffff8082111561074557600080fd5b818501915085601f83011261075957600080fd5b81358181111561076b5761076b6106f6565b604051601f8201601f19908116603f01168101908382118183101715610793576107936106f6565b816040528281528860208487010111156107ac57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60005b838110156107e95781810151838201526020016107d1565b50506000910152565b600082516108048184602087016107ce565b9190910192915050565b602081526000825180602084015261082d8160408501602087016107ce565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000ab53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c656400000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000003000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c80000000000000000000000003c44cdddb6a900fa2b585dd299e03d12fa4293bc00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000030b86b3146bdd2200b1dbdb1cea5e40d3451c028cbb4fb03b1826f7f2d82bee76bbd5cd68a74a16a7eceea093fd5826b9200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003087ce273bb9b51fd69e50de7a8d9a99cfb3b1a5c6a7b85f6673d137a5a2ce7df3d6ee4e6d579a142d58b0606c4a7a1c27000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030a33ac14980d85c0d154c5909ebf7a11d455f54beb4d5d0dc1d8b3670b9c4a6b6c450ee3d623ecc48026f09ed1f0b5c1200000000000000000000000000000000a164736f6c6343000811000a", }, { ContractAddr: common.HexToAddress(StakeCreditContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/cfc0bd1127186a917ddc38fd38d22903034d3f0b", - Code: "6080604052600436106101d15760003560e01c8063647df759116100f7578063a9059cbb11610095578063c2cde2b211610064578063c2cde2b21461063c578063d241c1ea1461065c578063dd62ed3e1461069e578063f399e22e146106be57600080fd5b8063a9059cbb146105af578063a9664feb146105cf578063aa1966cd146105ef578063aad3ec961461061c57600080fd5b806391faf0b4116100d157806391faf0b41461053a57806395d89b411461055a578063a457c2d71461056f578063a5d059ca1461058f57600080fd5b8063647df759146104b75780636bbf2249146104d757806370a082311461050457600080fd5b80632f2d448a1161016f57806345bc4d101161013e57806345bc4d101461044f5780634d99dd161461046f5780635c19a95c1461048f5780635e607d76146104a257600080fd5b80632f2d448a146103bb578063313ce567146103db57806339509351146103f75780633a5381b51461041757600080fd5b8063095ea7b3116101ab578063095ea7b31461034057806315d1f8981461037057806318160ddd1461038657806323b872dd1461039b57600080fd5b8063038c0023146102cb57806306fdde03146102fe5780630913db471461032057600080fd5b366102c657336120021461020157604051630f22c43960e41b815261200260048201526024015b60405180910390fd5b60006120026001600160a01b0316631fa8882b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610243573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102679190611d46565b6102719042611d75565b6098546000828152609d6020908152604080832093909355609c9052908120805492935034929091906102a5908490611d97565b9250508190555034609860008282546102be9190611d97565b925050819055005b600080fd5b3480156102d757600080fd5b506102eb6102e6366004611dc2565b6106d1565b6040519081526020015b60405180910390f35b34801561030a57600080fd5b50610313610701565b6040516102f59190611de6565b34801561032c57600080fd5b506102eb61033b366004611dc2565b610793565b34801561034c57600080fd5b5061036061035b366004611e34565b6107b5565b60405190151581526020016102f5565b34801561037c57600080fd5b506102eb60985481565b34801561039257600080fd5b506067546102eb565b3480156103a757600080fd5b506103606103b6366004611e60565b6107cd565b3480156103c757600080fd5b506102eb6103d6366004611dc2565b6107f1565b3480156103e757600080fd5b50604051601281526020016102f5565b34801561040357600080fd5b50610360610412366004611e34565b6108b6565b34801561042357600080fd5b50609754610437906001600160a01b031681565b6040516001600160a01b0390911681526020016102f5565b34801561045b57600080fd5b506102eb61046a366004611ea1565b6108d8565b34801561047b57600080fd5b506102eb61048a366004611e34565b6109cb565b6102eb61049d366004611dc2565b610be2565b6104b56104b0366004611eba565b610c35565b005b3480156104c357600080fd5b506102eb6104d2366004611ea1565b610da8565b3480156104e357600080fd5b506102eb6104f2366004611ea1565b609d6020526000908152604090205481565b34801561051057600080fd5b506102eb61051f366004611dc2565b6001600160a01b031660009081526065602052604090205490565b34801561054657600080fd5b506102eb610555366004611ea1565b610de7565b34801561056657600080fd5b50610313610e22565b34801561057b57600080fd5b5061036061058a366004611e34565b610e31565b34801561059b57600080fd5b506102eb6105aa366004611e34565b610eac565b3480156105bb57600080fd5b506103606105ca366004611e34565b610fad565b3480156105db57600080fd5b506102eb6105ea366004611e34565b610fbb565b3480156105fb57600080fd5b506102eb61060a366004611ea1565b609c6020526000908152604090205481565b34801561062857600080fd5b506102eb610637366004611e34565b6110e4565b34801561064857600080fd5b506102eb610657366004611dc2565b611387565b34801561066857600080fd5b5061067c610677366004611e34565b6113a5565b60408051825181526020808401519082015291810151908201526060016102f5565b3480156106aa57600080fd5b506102eb6106b9366004611ee4565b611428565b6104b56106cc366004611f1d565b611453565b6001600160a01b0381166000908152609a6020526040812054600f81810b600160801b909204900b035b92915050565b60606068805461071090611fa2565b80601f016020809104026020016040519081016040528092919081815260200182805461073c90611fa2565b80156107895780601f1061075e57610100808354040283529160200191610789565b820191906000526020600020905b81548152906001019060200180831161076c57829003601f168201915b5050505050905090565b6001600160a01b0381166000908152606560205260408120546106fb90610de7565b6000336107c3818585611601565b5060019392505050565b6000336107db85828561161a565b6107e685858561168e565b506001949350505050565b6001600160a01b0381166000908152609a6020526040812054600f81810b600160801b909204900b0381805b828110156108ae576001600160a01b0385166000908152609a6020526040812061084790836116a7565b6000818152609960209081526040918290208251606081018452815481526001820154928101929092526002015491810182905291925042106108945761088d84611fd6565b935061089b565b50506108ae565b5050806108a790611fd6565b905061081d565b509392505050565b6000336107c38185856108c98383611428565b6108d39190611d97565b611601565b6000336120021461090057604051630f22c43960e41b815261200260048201526024016101f8565b6097546001600160a01b03166000908152606560205260408120549061092584610da8565b90508181116109345780610936565b815b609754909150600090610952906001600160a01b031683611718565b6040519091506000906110029083908381818185875af1925050503d8060008114610999576040519150601f19603f3d011682016040523d82523d6000602084013e61099e565b606091505b50509050806109c0576040516312171d8360e31b815260040160405180910390fd5b50925050505b919050565b600033612002146109f357604051630f22c43960e41b815261200260048201526024016101f8565b81600003610a1457604051631f2a200560e01b815260040160405180910390fd5b6001600160a01b038316600090815260656020526040902054821115610a4d57604051631e9acf1760e31b815260040160405180910390fd5b610a578383611718565b905060006120026001600160a01b031663fc0c5ff16040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a9b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610abf9190611d46565b610ac99042611d97565b6040805160608101825285815260208101859052908101829052909150600085610af28161174d565b60405160609290921b6bffffffffffffffffffffffff19166020830152603482015260540160408051601f1981840301815291815281516020928301206000818152609990935291205490915015610b5d5760405163b19e911560e01b815260040160405180910390fd5b600081815260996020908152604080832085518155828601516001820155818601516002909101556001600160a01b0389168352609a9091529020610bd990828154600160801b90819004600f0b6000818152600180860160205260409091209390935583546001600160801b03908116939091011602179055565b50505092915050565b60003361200214610c0a57604051630f22c43960e41b815261200260048201526024016101f8565b34600003610c2b57604051631f2a200560e01b815260040160405180910390fd5b6106fb8234611775565b3361200214610c5b57604051630f22c43960e41b815261200260048201526024016101f8565b346000612710610c7567ffffffffffffffff851684611fef565b610c7f9190611d75565b90506000610c8d8284612006565b905060006120026001600160a01b0316631fa8882b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cd1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cf59190611d46565b610cff9042611d75565b6098546000828152609d6020908152604080832093909355609c905290812080549293508492909190610d33908490611d97565b925050819055508160986000828254610d4c9190611d97565b9091555050609754610d67906001600160a01b031684611775565b5060408051838152602081018590527ffb0e1482d62102ab9594f69d4c6d693749e3e2bf1c21af272f5456b2d5a4f6b5910160405180910390a15050505050565b6000609854600003610dcd576040516307b76ce760e51b815260040160405180910390fd5b609854606754610ddd9084611fef565b6106fb9190611d75565b6000610df260675490565b600003610e1257604051632fe8dae960e01b815260040160405180910390fd5b606754609854610ddd9084611fef565b60606069805461071090611fa2565b60003381610e3f8286611428565b905083811015610e9f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016101f8565b6107e68286868403611601565b60003361200214610ed457604051630f22c43960e41b815261200260048201526024016101f8565b81600003610ef557604051631f2a200560e01b815260040160405180910390fd5b6001600160a01b038316600090815260656020526040902054821115610f2e57604051631e9acf1760e31b815260040160405180910390fd5b610f388383611718565b6040519091506000906120029083908381818185875af1925050503d8060008114610f7f576040519150601f19603f3d011682016040523d82523d6000602084013e610f84565b606091505b5050905080610fa6576040516312171d8360e31b815260040160405180910390fd5b5092915050565b6000336107c381858561168e565b6001600160a01b0382166000908152609a6020526040812054600f81810b600160801b909204900b03600003610ff3575060006106fb565b81158061102757506001600160a01b0383166000908152609a6020526040902054600f81810b600160801b909204900b0382115b611031578161105b565b6001600160a01b0383166000908152609a6020526040902054600f81810b600160801b909204900b035b91506000805b838110156108ae576001600160a01b0385166000908152609a6020526040812061108b90836116a7565b600081815260996020908152604091829020825160608101845281548152600182015492810183905260029091015492810192909252919250906110cf9085611d97565b93505050806110dd90611fd6565b9050611061565b6000336120021461110c57604051630f22c43960e41b815261200260048201526024016101f8565b61111461179e565b6001600160a01b0383166000908152609a6020526040902054600f81810b600160801b909204900b0360000361115d5760405163ad41893760e01b815260040160405180910390fd5b81158061119157506001600160a01b0383166000908152609a6020526040902054600f81810b600160801b909204900b0382115b61119b57816111c5565b6001600160a01b0383166000908152609a6020526040902054600f81810b600160801b909204900b035b915060005b821561127b576001600160a01b0384166000908152609a602052604081206111f1906117f7565b6000818152609960209081526040918290208251606081018452815481526001820154928101929092526002015491810182905291925042101561123657505061127b565b6001600160a01b0386166000908152609a602052604090206112579061184b565b5060208101516112679084611d97565b925061127285612019565b945050506111ca565b8060000361129c576040516303cd8e0960e21b815260040160405180910390fd5b60006120026001600160a01b031663e8f67c3b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113029190611d46565b90506000856001600160a01b03168284604051600060405180830381858888f193505050503d8060008114611353576040519150601f19603f3d011682016040523d82523d6000602084013e611358565b606091505b505090508061137a576040516312171d8360e31b815260040160405180910390fd5b50506001805590506106fb565b6001600160a01b0381166000908152609b60205260408120546106fb565b6113c960405180606001604052806000815260200160008152602001600081525090565b6001600160a01b0383166000908152609a602052604081206113eb90846116a7565b6000908152609960209081526040918290208251606081018452815481526001820154928101929092526002015491810191909152949350505050565b6001600160a01b03918216600090815260666020908152604080832093909416825291909152205490565b600054610100900460ff16158080156114735750600054600160ff909116105b8061148d5750303b15801561148d575060005460ff166001145b6114f05760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016101f8565b6000805460ff191660011790558015611513576000805461ff0019166101001790555b336120021461153957604051630f22c43960e41b815261200260048201526024016101f8565b6000838360405160200161154e929190612030565b604051602081830303815290604052905060008484604051602001611574929190612060565b604051602081830303815290604052905061158f82826118ca565b609780546001600160a01b0319166001600160a01b0388161790556115b33461190f565b505080156115fb576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b604051632028747160e01b815260040160405180910390fd5b60006116268484611428565b905060001981146115fb57818110156116815760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016101f8565b6115fb8484848403611601565b604051638cd22d1960e01b815260040160405180910390fd5b6000806116ca6116b684611a7f565b85546116c59190600f0b61207e565b611aed565b8454909150600160801b9004600f90810b9082900b126116fd57604051632d0483c560e21b815260040160405180910390fd5b600f0b60009081526001939093016020525050604090205490565b600061172382610de7565b905061172f8383611b51565b80609860008282546117419190612006565b90915550909392505050565b6001600160a01b0381166000908152609b602052604090208054600181018255905b50919050565b600061178082610da8565b905061178c8382611c85565b81609860008282546117419190611d97565b6002600154036117f05760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016101f8565b6002600155565b60006118128254600f81810b600160801b909204900b131590565b1561183057604051631ed9509560e11b815260040160405180910390fd5b508054600f0b60009081526001909101602052604090205490565b60006118668254600f81810b600160801b909204900b131590565b1561188457604051631ed9509560e11b815260040160405180910390fd5b508054600f0b6000818152600180840160205260408220805492905583546fffffffffffffffffffffffffffffffff191692016001600160801b03169190911790915590565b600054610100900460ff166118f15760405162461bcd60e51b81526004016101f8906120a6565b60686118fd8382612155565b50606961190a8282612155565b505050565b600054610100900460ff166119365760405162461bcd60e51b81526004016101f8906120a6565b60006120026001600160a01b0316638a4d3fa86040518163ffffffff1660e01b8152600401602060405180830381865afa158015611978573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061199c9190611d46565b905080821115806119b657506097546001600160a01b0316155b806119c2575060675415155b156119e057604051632163e6b960e21b815260040160405180910390fd5b60006120026001600160a01b0316634e6fd6c46040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a469190612215565b9050611a528183611c85565b6000611a5e8385612006565b609754909150611a77906001600160a01b031682611c85565b505050609855565b60006001600160ff1b03821115611ae95760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b60648201526084016101f8565b5090565b80600f81900b81146109c65760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20316044820152663238206269747360c81b60648201526084016101f8565b6001600160a01b038216611bb15760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016101f8565b6001600160a01b03821660009081526065602052604090205481811015611c255760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016101f8565b6001600160a01b03831660008181526065602090815260408083208686039055606780548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b6001600160a01b038216611cdb5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016101f8565b8060676000828254611ced9190611d97565b90915550506001600160a01b0382166000818152606560209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b600060208284031215611d5857600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b600082611d9257634e487b7160e01b600052601260045260246000fd5b500490565b808201808211156106fb576106fb611d5f565b6001600160a01b0381168114611dbf57600080fd5b50565b600060208284031215611dd457600080fd5b8135611ddf81611daa565b9392505050565b600060208083528351808285015260005b81811015611e1357858101830151858201604001528201611df7565b506000604082860101526040601f19601f8301168501019250505092915050565b60008060408385031215611e4757600080fd5b8235611e5281611daa565b946020939093013593505050565b600080600060608486031215611e7557600080fd5b8335611e8081611daa565b92506020840135611e9081611daa565b929592945050506040919091013590565b600060208284031215611eb357600080fd5b5035919050565b600060208284031215611ecc57600080fd5b813567ffffffffffffffff81168114611ddf57600080fd5b60008060408385031215611ef757600080fd5b8235611f0281611daa565b91506020830135611f1281611daa565b809150509250929050565b600080600060408486031215611f3257600080fd5b8335611f3d81611daa565b9250602084013567ffffffffffffffff80821115611f5a57600080fd5b818601915086601f830112611f6e57600080fd5b813581811115611f7d57600080fd5b876020828501011115611f8f57600080fd5b6020830194508093505050509250925092565b600181811c90821680611fb657607f821691505b60208210810361176f57634e487b7160e01b600052602260045260246000fd5b600060018201611fe857611fe8611d5f565b5060010190565b80820281158282048414176106fb576106fb611d5f565b818103818111156106fb576106fb611d5f565b60008161202857612028611d5f565b506000190190565b65029ba30b5b2960d51b815281836006830137660810dc99591a5d60ca1b91016006810191909152600d01919050565b611cdd60f21b81528183600283013760009101600201908152919050565b808201828112600083128015821682158216171561209e5761209e611d5f565b505092915050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b634e487b7160e01b600052604160045260246000fd5b601f82111561190a57600081815260208120601f850160051c8101602086101561212e5750805b601f850160051c820191505b8181101561214d5782815560010161213a565b505050505050565b815167ffffffffffffffff81111561216f5761216f6120f1565b6121838161217d8454611fa2565b84612107565b602080601f8311600181146121b857600084156121a05750858301515b600019600386901b1c1916600185901b17855561214d565b600085815260208120601f198616915b828110156121e7578886015182559484019460019091019084016121c8565b50858210156122055787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006020828403121561222757600080fd5b8151611ddf81611daa56fea164736f6c6343000811000a", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/1abdfbf3aeb86909c2220b79bf92b87ddff64b54", + Code: "6080604052600436106101e75760003560e01c8063647df75911610102578063a9664feb11610095578063d241c1ea11610064578063d241c1ea1461068d578063dd62ed3e146106cf578063f1fad104146106ef578063f399e22e1461070457600080fd5b8063a9664feb14610600578063aa1966cd14610620578063aad3ec961461064d578063c2cde2b21461066d57600080fd5b806395d89b41116100d157806395d89b411461058b578063a457c2d7146105a0578063a5d059ca146105c0578063a9059cbb146105e057600080fd5b8063647df759146104e85780636bbf22491461050857806370a082311461053557806391faf0b41461056b57600080fd5b8063313ce5671161017a5780634bf6c882116101495780634bf6c8821461048b5780634d99dd16146104a05780635c19a95c146104c05780635e607d76146104d357600080fd5b8063313ce567146103f157806339509351146104135780633a5381b51461043357806345bc4d101461046b57600080fd5b806315d1f898116101b657806315d1f8981461038657806318160ddd1461039c57806323b872dd146103b15780632f2d448a146103d157600080fd5b8063038c0023146102e157806306fdde03146103145780630913db4714610336578063095ea7b31461035657600080fd5b366102dc57336120021461021757604051630f22c43960e41b815261200260048201526024015b60405180910390fd5b60006120026001600160a01b0316631fa8882b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610259573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061027d9190611d8c565b6102879042611dbb565b6098546000828152609d6020908152604080832093909355609c9052908120805492935034929091906102bb908490611ddd565b9250508190555034609860008282546102d49190611ddd565b925050819055005b600080fd5b3480156102ed57600080fd5b506103016102fc366004611e08565b610717565b6040519081526020015b60405180910390f35b34801561032057600080fd5b50610329610747565b60405161030b9190611e2c565b34801561034257600080fd5b50610301610351366004611e08565b6107d9565b34801561036257600080fd5b50610376610371366004611e7a565b6107fb565b604051901515815260200161030b565b34801561039257600080fd5b5061030160985481565b3480156103a857600080fd5b50606754610301565b3480156103bd57600080fd5b506103766103cc366004611ea6565b610813565b3480156103dd57600080fd5b506103016103ec366004611e08565b610837565b3480156103fd57600080fd5b5060125b60405160ff909116815260200161030b565b34801561041f57600080fd5b5061037661042e366004611e7a565b6108fc565b34801561043f57600080fd5b50609754610453906001600160a01b031681565b6040516001600160a01b03909116815260200161030b565b34801561047757600080fd5b50610301610486366004611ee7565b61091e565b34801561049757600080fd5b50610401600881565b3480156104ac57600080fd5b506103016104bb366004611e7a565b610a11565b6103016104ce366004611e08565b610c28565b6104e66104e1366004611f00565b610c7b565b005b3480156104f457600080fd5b50610301610503366004611ee7565b610dee565b34801561051457600080fd5b50610301610523366004611ee7565b609d6020526000908152604090205481565b34801561054157600080fd5b50610301610550366004611e08565b6001600160a01b031660009081526065602052604090205490565b34801561057757600080fd5b50610301610586366004611ee7565b610e2d565b34801561059757600080fd5b50610329610e68565b3480156105ac57600080fd5b506103766105bb366004611e7a565b610e77565b3480156105cc57600080fd5b506103016105db366004611e7a565b610ef2565b3480156105ec57600080fd5b506103766105fb366004611e7a565b610ff3565b34801561060c57600080fd5b5061030161061b366004611e7a565b611001565b34801561062c57600080fd5b5061030161063b366004611ee7565b609c6020526000908152604090205481565b34801561065957600080fd5b50610301610668366004611e7a565b61112a565b34801561067957600080fd5b50610301610688366004611e08565b6113cd565b34801561069957600080fd5b506106ad6106a8366004611e7a565b6113eb565b604080518251815260208084015190820152918101519082015260600161030b565b3480156106db57600080fd5b506103016106ea366004611f2a565b61146e565b3480156106fb57600080fd5b50610401601181565b6104e6610712366004611f63565b611499565b6001600160a01b0381166000908152609a6020526040812054600f81810b600160801b909204900b035b92915050565b60606068805461075690611fe8565b80601f016020809104026020016040519081016040528092919081815260200182805461078290611fe8565b80156107cf5780601f106107a4576101008083540402835291602001916107cf565b820191906000526020600020905b8154815290600101906020018083116107b257829003601f168201915b5050505050905090565b6001600160a01b03811660009081526065602052604081205461074190610e2d565b600033610809818585611647565b5060019392505050565b600033610821858285611660565b61082c8585856116d4565b506001949350505050565b6001600160a01b0381166000908152609a6020526040812054600f81810b600160801b909204900b0381805b828110156108f4576001600160a01b0385166000908152609a6020526040812061088d90836116ed565b6000818152609960209081526040918290208251606081018452815481526001820154928101929092526002015491810182905291925042106108da576108d38461201c565b93506108e1565b50506108f4565b5050806108ed9061201c565b9050610863565b509392505050565b60003361080981858561090f838361146e565b6109199190611ddd565b611647565b6000336120021461094657604051630f22c43960e41b8152612002600482015260240161020e565b6097546001600160a01b03166000908152606560205260408120549061096b84610dee565b905081811161097a578061097c565b815b609754909150600090610998906001600160a01b03168361175e565b6040519091506000906110029083908381818185875af1925050503d80600081146109df576040519150601f19603f3d011682016040523d82523d6000602084013e6109e4565b606091505b5050905080610a06576040516312171d8360e31b815260040160405180910390fd5b50925050505b919050565b60003361200214610a3957604051630f22c43960e41b8152612002600482015260240161020e565b81600003610a5a57604051631f2a200560e01b815260040160405180910390fd5b6001600160a01b038316600090815260656020526040902054821115610a9357604051631e9acf1760e31b815260040160405180910390fd5b610a9d838361175e565b905060006120026001600160a01b031663fc0c5ff16040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ae1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b059190611d8c565b610b0f9042611ddd565b6040805160608101825285815260208101859052908101829052909150600085610b3881611793565b60405160609290921b6bffffffffffffffffffffffff19166020830152603482015260540160408051601f1981840301815291815281516020928301206000818152609990935291205490915015610ba35760405163b19e911560e01b815260040160405180910390fd5b600081815260996020908152604080832085518155828601516001820155818601516002909101556001600160a01b0389168352609a9091529020610c1f90828154600160801b90819004600f0b6000818152600180860160205260409091209390935583546001600160801b03908116939091011602179055565b50505092915050565b60003361200214610c5057604051630f22c43960e41b8152612002600482015260240161020e565b34600003610c7157604051631f2a200560e01b815260040160405180910390fd5b61074182346117bb565b3361200214610ca157604051630f22c43960e41b8152612002600482015260240161020e565b346000612710610cbb67ffffffffffffffff851684612035565b610cc59190611dbb565b90506000610cd3828461204c565b905060006120026001600160a01b0316631fa8882b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d3b9190611d8c565b610d459042611dbb565b6098546000828152609d6020908152604080832093909355609c905290812080549293508492909190610d79908490611ddd565b925050819055508160986000828254610d929190611ddd565b9091555050609754610dad906001600160a01b0316846117bb565b5060408051838152602081018590527ffb0e1482d62102ab9594f69d4c6d693749e3e2bf1c21af272f5456b2d5a4f6b5910160405180910390a15050505050565b6000609854600003610e13576040516307b76ce760e51b815260040160405180910390fd5b609854606754610e239084612035565b6107419190611dbb565b6000610e3860675490565b600003610e5857604051632fe8dae960e01b815260040160405180910390fd5b606754609854610e239084612035565b60606069805461075690611fe8565b60003381610e85828661146e565b905083811015610ee55760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161020e565b61082c8286868403611647565b60003361200214610f1a57604051630f22c43960e41b8152612002600482015260240161020e565b81600003610f3b57604051631f2a200560e01b815260040160405180910390fd5b6001600160a01b038316600090815260656020526040902054821115610f7457604051631e9acf1760e31b815260040160405180910390fd5b610f7e838361175e565b6040519091506000906120029083908381818185875af1925050503d8060008114610fc5576040519150601f19603f3d011682016040523d82523d6000602084013e610fca565b606091505b5050905080610fec576040516312171d8360e31b815260040160405180910390fd5b5092915050565b6000336108098185856116d4565b6001600160a01b0382166000908152609a6020526040812054600f81810b600160801b909204900b0360000361103957506000610741565b81158061106d57506001600160a01b0383166000908152609a6020526040902054600f81810b600160801b909204900b0382115b61107757816110a1565b6001600160a01b0383166000908152609a6020526040902054600f81810b600160801b909204900b035b91506000805b838110156108f4576001600160a01b0385166000908152609a602052604081206110d190836116ed565b600081815260996020908152604091829020825160608101845281548152600182015492810183905260029091015492810192909252919250906111159085611ddd565b93505050806111239061201c565b90506110a7565b6000336120021461115257604051630f22c43960e41b8152612002600482015260240161020e565b61115a6117e4565b6001600160a01b0383166000908152609a6020526040902054600f81810b600160801b909204900b036000036111a35760405163ad41893760e01b815260040160405180910390fd5b8115806111d757506001600160a01b0383166000908152609a6020526040902054600f81810b600160801b909204900b0382115b6111e1578161120b565b6001600160a01b0383166000908152609a6020526040902054600f81810b600160801b909204900b035b915060005b82156112c1576001600160a01b0384166000908152609a602052604081206112379061183d565b6000818152609960209081526040918290208251606081018452815481526001820154928101929092526002015491810182905291925042101561127c5750506112c1565b6001600160a01b0386166000908152609a6020526040902061129d90611891565b5060208101516112ad9084611ddd565b92506112b88561205f565b94505050611210565b806000036112e2576040516303cd8e0960e21b815260040160405180910390fd5b60006120026001600160a01b031663e8f67c3b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611324573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113489190611d8c565b90506000856001600160a01b03168284604051600060405180830381858888f193505050503d8060008114611399576040519150601f19603f3d011682016040523d82523d6000602084013e61139e565b606091505b50509050806113c0576040516312171d8360e31b815260040160405180910390fd5b5050600180559050610741565b6001600160a01b0381166000908152609b6020526040812054610741565b61140f60405180606001604052806000815260200160008152602001600081525090565b6001600160a01b0383166000908152609a6020526040812061143190846116ed565b6000908152609960209081526040918290208251606081018452815481526001820154928101929092526002015491810191909152949350505050565b6001600160a01b03918216600090815260666020908152604080832093909416825291909152205490565b600054610100900460ff16158080156114b95750600054600160ff909116105b806114d35750303b1580156114d3575060005460ff166001145b6115365760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161020e565b6000805460ff191660011790558015611559576000805461ff0019166101001790555b336120021461157f57604051630f22c43960e41b8152612002600482015260240161020e565b60008383604051602001611594929190612076565b6040516020818303038152906040529050600084846040516020016115ba9291906120a6565b60405160208183030381529060405290506115d58282611910565b609780546001600160a01b0319166001600160a01b0388161790556115f934611955565b50508015611641576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b604051632028747160e01b815260040160405180910390fd5b600061166c848461146e565b9050600019811461164157818110156116c75760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161020e565b6116418484848403611647565b604051638cd22d1960e01b815260040160405180910390fd5b6000806117106116fc84611ac5565b855461170b9190600f0b6120c4565b611b33565b8454909150600160801b9004600f90810b9082900b1261174357604051632d0483c560e21b815260040160405180910390fd5b600f0b60009081526001939093016020525050604090205490565b600061176982610e2d565b90506117758383611b97565b8060986000828254611787919061204c565b90915550909392505050565b6001600160a01b0381166000908152609b602052604090208054600181018255905b50919050565b60006117c682610dee565b90506117d28382611ccb565b81609860008282546117879190611ddd565b6002600154036118365760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161020e565b6002600155565b60006118588254600f81810b600160801b909204900b131590565b1561187657604051631ed9509560e11b815260040160405180910390fd5b508054600f0b60009081526001909101602052604090205490565b60006118ac8254600f81810b600160801b909204900b131590565b156118ca57604051631ed9509560e11b815260040160405180910390fd5b508054600f0b6000818152600180840160205260408220805492905583546fffffffffffffffffffffffffffffffff191692016001600160801b03169190911790915590565b600054610100900460ff166119375760405162461bcd60e51b815260040161020e906120ec565b6068611943838261219b565b506069611950828261219b565b505050565b600054610100900460ff1661197c5760405162461bcd60e51b815260040161020e906120ec565b60006120026001600160a01b0316638a4d3fa86040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119e29190611d8c565b905080821115806119fc57506097546001600160a01b0316155b80611a08575060675415155b15611a2657604051632163e6b960e21b815260040160405180910390fd5b60006120026001600160a01b0316634e6fd6c46040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a8c919061225b565b9050611a988183611ccb565b6000611aa4838561204c565b609754909150611abd906001600160a01b031682611ccb565b505050609855565b60006001600160ff1b03821115611b2f5760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b606482015260840161020e565b5090565b80600f81900b8114610a0c5760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20316044820152663238206269747360c81b606482015260840161020e565b6001600160a01b038216611bf75760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161020e565b6001600160a01b03821660009081526065602052604090205481811015611c6b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161020e565b6001600160a01b03831660008181526065602090815260408083208686039055606780548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b6001600160a01b038216611d215760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161020e565b8060676000828254611d339190611ddd565b90915550506001600160a01b0382166000818152606560209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b600060208284031215611d9e57600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b600082611dd857634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111561074157610741611da5565b6001600160a01b0381168114611e0557600080fd5b50565b600060208284031215611e1a57600080fd5b8135611e2581611df0565b9392505050565b600060208083528351808285015260005b81811015611e5957858101830151858201604001528201611e3d565b506000604082860101526040601f19601f8301168501019250505092915050565b60008060408385031215611e8d57600080fd5b8235611e9881611df0565b946020939093013593505050565b600080600060608486031215611ebb57600080fd5b8335611ec681611df0565b92506020840135611ed681611df0565b929592945050506040919091013590565b600060208284031215611ef957600080fd5b5035919050565b600060208284031215611f1257600080fd5b813567ffffffffffffffff81168114611e2557600080fd5b60008060408385031215611f3d57600080fd5b8235611f4881611df0565b91506020830135611f5881611df0565b809150509250929050565b600080600060408486031215611f7857600080fd5b8335611f8381611df0565b9250602084013567ffffffffffffffff80821115611fa057600080fd5b818601915086601f830112611fb457600080fd5b813581811115611fc357600080fd5b876020828501011115611fd557600080fd5b6020830194508093505050509250925092565b600181811c90821680611ffc57607f821691505b6020821081036117b557634e487b7160e01b600052602260045260246000fd5b60006001820161202e5761202e611da5565b5060010190565b808202811582820484141761074157610741611da5565b8181038181111561074157610741611da5565b60008161206e5761206e611da5565b506000190190565b65029ba30b5b2960d51b815281836006830137660810dc99591a5d60ca1b91016006810191909152600d01919050565b611cdd60f21b81528183600283013760009101600201908152919050565b80820182811260008312801582168215821617156120e4576120e4611da5565b505092915050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b634e487b7160e01b600052604160045260246000fd5b601f82111561195057600081815260208120601f850160051c810160208610156121745750805b601f850160051c820191505b8181101561219357828155600101612180565b505050505050565b815167ffffffffffffffff8111156121b5576121b5612137565b6121c9816121c38454611fe8565b8461214d565b602080601f8311600181146121fe57600084156121e65750858301515b600019600386901b1c1916600185901b178555612193565b600085815260208120601f198616915b8281101561222d5788860151825594840194600190910190840161220e565b508582101561224b5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006020828403121561226d57600080fd5b8151611e2581611df056fea164736f6c6343000811000a", }, { ContractAddr: common.HexToAddress(GovernorContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/cfc0bd1127186a917ddc38fd38d22903034d3f0b", - Code: "6080604052600436106103bc5760003560e01c80637b3c71d3116101f2578063c28bc2fa1161010d578063e23a9a52116100a0578063f23a6e611161006f578063f23a6e6114610d73578063f8ce560a14610d9f578063fc0c546a14610dbf578063fe0d94c114610de057600080fd5b8063e23a9a5214610c48578063ea0217cf14610d13578063eb9019d414610d33578063ece40cc114610d5357600080fd5b8063da95691a116100dc578063da95691a14610b8e578063dd4e2ba514610bae578063ddf0b00914610bf4578063deaaa7cc14610c1457600080fd5b8063c28bc2fa14610b1c578063c59057e414610b2f578063d07f91e914610b4f578063d33219b414610b6f57600080fd5b8063a7713a7011610185578063b58131b011610154578063b58131b014610aa0578063bc197c8114610ab5578063c01f9e3714610ae1578063c170ec0b14610b0157600080fd5b8063a7713a7014610a2b578063a890c91014610a40578063ab58fb8e14610a60578063ac43175114610a8057600080fd5b806384b0196e116101c157806384b0196e146109a357806391ddadf4146109cb57806397c3d334146109f75780639a802a6d14610a0b57600080fd5b80637b3c71d3146109395780637d5e81e2146109595780638129fc1c146109795780638456cb591461098e57600080fd5b806332b8113e116102e2578063533ddd14116102755780635f398a14116102445780635f398a14146108b257806360c4247f146108d257806363d42b38146108f257806370b0f6601461091957600080fd5b8063533ddd141461081757806354fd4d501461084857806356781388146108725780635c975abb1461089257600080fd5b806340e58ee5116102b157806340e58ee5146107775780634385963214610797578063452115d6146107e25780634bf5d7e91461080257600080fd5b806332b8113e146106eb5780633932abb1146107145780633bccf4fd1461072a5780633e4f49e61461074a57600080fd5b8063143489d01161035a5780632656227d116103295780632656227d1461063d5780632d63f693146106505780632fe3e26114610687578063328dd982146106bb57600080fd5b8063143489d01461056e578063150b7a02146105c4578063160cbed71461060857806324bc1a641461062857600080fd5b8063034201811161039657806303420181146104f7578063046f7da21461051757806306f3f9e61461052c57806306fdde031461054c57600080fd5b8063013cf08b1461042c57806301ffc9a7146104a757806302a251a3146104d757600080fd5b3661042757306103ca610df3565b6001600160a01b0316146104255760405162461bcd60e51b815260206004820152601f60248201527f476f7665726e6f723a206d7573742073656e6420746f206578656375746f720060448201526064015b60405180910390fd5b005b600080fd5b34801561043857600080fd5b5061044c610447366004615646565b610e0d565b604080519a8b526001600160a01b0390991660208b0152978901969096526060880194909452608087019290925260a086015260c085015260e084015215156101008301521515610120820152610140015b60405180910390f35b3480156104b357600080fd5b506104c76104c236600461565f565b610ec8565b604051901515815260200161049e565b3480156104e357600080fd5b50610162545b60405190815260200161049e565b34801561050357600080fd5b506104e96105123660046157a5565b610ed9565b34801561052357600080fd5b50610425610fd1565b34801561053857600080fd5b50610425610547366004615646565b61103a565b34801561055857600080fd5b506105616110c5565b60405161049e919061589b565b34801561057a57600080fd5b506105ac610589366004615646565b60009081526101306020526040902054600160401b90046001600160a01b031690565b6040516001600160a01b03909116815260200161049e565b3480156105d057600080fd5b506105ef6105df3660046158c3565b630a85bd0160e11b949350505050565b6040516001600160e01b0319909116815260200161049e565b34801561061457600080fd5b506104e9610623366004615a9a565b611158565b34801561063457600080fd5b506104e961135d565b6104e961064b366004615a9a565b611383565b34801561065c57600080fd5b506104e961066b366004615646565b600090815261013060205260409020546001600160401b031690565b34801561069357600080fd5b506104e97fb3b3f3b703cd84ce352197dcff232b1b5d3cfb2025ce47cf04742d0651f1af8881565b3480156106c757600080fd5b506106db6106d6366004615646565b611476565b60405161049e9493929190615bf2565b3480156106f757600080fd5b5061025c546040516001600160401b03909116815260200161049e565b34801561072057600080fd5b50610161546104e9565b34801561073657600080fd5b506104e9610745366004615c3f565b611708565b34801561075657600080fd5b5061076a610765366004615646565b61177e565b60405161049e9190615ca3565b34801561078357600080fd5b50610425610792366004615646565b611789565b3480156107a357600080fd5b506104c76107b2366004615ccb565b6000828152610193602090815260408083206001600160a01b038516845260080190915290205460ff1692915050565b3480156107ee57600080fd5b506104e96107fd366004615a9a565b6117b4565b34801561080e57600080fd5b506105616117cb565b34801561082357600080fd5b506104c7610832366004615cfb565b61028e6020526000908152604090205460ff1681565b34801561085457600080fd5b506040805180820190915260018152603160f81b6020820152610561565b34801561087e57600080fd5b506104e961088d366004615d18565b611878565b34801561089e57600080fd5b5061028f546104c790610100900460ff1681565b3480156108be57600080fd5b506104e96108cd366004615d44565b6118a1565b3480156108de57600080fd5b506104e96108ed366004615646565b6118eb565b3480156108fe57600080fd5b5061028f546105ac906201000090046001600160a01b031681565b34801561092557600080fd5b50610425610934366004615646565b6119a0565b34801561094557600080fd5b506104e9610954366004615dc7565b611a28565b34801561096557600080fd5b506104e9610974366004615e20565b611a7a565b34801561098557600080fd5b50610425611b0a565b34801561099a57600080fd5b50610425611d48565b3480156109af57600080fd5b506109b8611db5565b60405161049e9796959493929190615ec0565b3480156109d757600080fd5b506109e0611e53565b60405165ffffffffffff909116815260200161049e565b348015610a0357600080fd5b5060646104e9565b348015610a1757600080fd5b506104e9610a26366004615f22565b611ec7565b348015610a3757600080fd5b506104e9611ede565b348015610a4c57600080fd5b50610425610a5b366004615cfb565b611f0b565b348015610a6c57600080fd5b506104e9610a7b366004615646565b611f93565b348015610a8c57600080fd5b50610425610a9b366004615f7a565b61202f565b348015610aac57600080fd5b506104e961260e565b348015610ac157600080fd5b506105ef610ad0366004615fd9565b63bc197c8160e01b95945050505050565b348015610aed57600080fd5b506104e9610afc366004615646565b61261a565b348015610b0d57600080fd5b5061028f546104c79060ff1681565b610425610b2a36600461606c565b612625565b348015610b3b57600080fd5b506104e9610b4a366004615a9a565b612735565b348015610b5b57600080fd5b50610425610b6a3660046160af565b61276f565b348015610b7b57600080fd5b506101f8546001600160a01b03166105ac565b348015610b9a57600080fd5b506104e9610ba93660046160d8565b6127f7565b348015610bba57600080fd5b5060408051808201909152601a81527f737570706f72743d627261766f2671756f72756d3d627261766f0000000000006020820152610561565b348015610c0057600080fd5b50610425610c0f366004615646565b61287e565b348015610c2057600080fd5b506104e97f150214d74d59b7d1e90c73fc22ef3d991dd0a76b046543d4d80ab92d2a50328f81565b348015610c5457600080fd5b50610ce3610c63366004615ccb565b6040805160608101825260008082526020820181905291810191909152506000918252610193602090815260408084206001600160a01b0393909316845260089092018152918190208151606081018352905460ff8082161515835261010082041693820193909352620100009092046001600160601b03169082015290565b6040805182511515815260208084015160ff1690820152918101516001600160601b03169082015260600161049e565b348015610d1f57600080fd5b50610425610d2e366004615646565b6128a1565b348015610d3f57600080fd5b506104e9610d4e366004616179565b612929565b348015610d5f57600080fd5b50610425610d6e366004615646565b61294a565b348015610d7f57600080fd5b506105ef610d8e3660046161a5565b63f23a6e6160e01b95945050505050565b348015610dab57600080fd5b506104e9610dba366004615646565b6129d2565b348015610dcb57600080fd5b506101c5546105ac906001600160a01b031681565b610425610dee366004615646565b612a61565b6000610e086101f8546001600160a01b031690565b905090565b8060008080808080808080610e218a611f93565b60008c815261013060205260409020549098506001600160401b03169650610e488b61261a565b60008c81526101936020526040812080546005820154600683015460078401546001600160a01b039093169e50949a509850929650919450610e898d61177e565b90506002816007811115610e9f57610e9f615c8d565b1493506007816007811115610eb657610eb6615c8d565b14925050509193959799509193959799565b6000610ed382612a84565b92915050565b600080610f7d610f757fb3b3f3b703cd84ce352197dcff232b1b5d3cfb2025ce47cf04742d0651f1af888c8c8c8c604051610f1592919061620d565b60405180910390208b80519060200120604051602001610f5a959493929190948552602085019390935260ff9190911660408401526060830152608082015260a00190565b60405160208183030381529060405280519060200120612aa9565b868686612ad6565b9050610fc38a828b8b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508d9250612af4915050565b9a9950505050505050505050565b61028f546201000090046001600160a01b0316331461100357604051631431806f60e11b815260040160405180910390fd5b61028f805461ff00191690556040517f62451d457bc659158be6e6247f56ec1df424a5c7597f71c20c2bc44e0965c8f990600090a1565b611042610df3565b6001600160a01b0316336001600160a01b0316146110725760405162461bcd60e51b815260040161041c9061621d565b3061107b610df3565b6001600160a01b0316146110b9576000803660405161109b92919061620d565b604051809103902090505b806110b2610131612b03565b036110a657505b6110c281612b82565b50565b606061012f80546110d590616254565b80601f016020809104026020016040519081016040528092919081815260200182805461110190616254565b801561114e5780601f106111235761010080835404028352916020019161114e565b820191906000526020600020905b81548152906001019060200180831161113157829003601f168201915b5050505050905090565b60008061116786868686612735565b905060046111748261177e565b600781111561118557611185615c8d565b146111a25760405162461bcd60e51b815260040161041c9061628e565b6101f8546040805163793d064960e11b815290516000926001600160a01b03169163f27a0c929160048083019260209291908290030181865afa1580156111ed573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061121191906162cf565b6101f85460405163b1c5f42760e01b81529192506001600160a01b03169063b1c5f4279061124c908a908a908a906000908b906004016162e8565b602060405180830381865afa158015611269573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061128d91906162cf565b60008381526101f96020526040808220929092556101f85491516308f2a0bb60e41b81526001600160a01b0390921691638f2a0bb0916112da918b918b918b91908b908990600401616336565b600060405180830381600087803b1580156112f457600080fd5b505af1158015611308573d6000803e3d6000fd5b505050507f9a2e42fd6722813d69113e7d0079d3d940171428df7373df9c7f7617cfda289282824261133a91906163a4565b604080519283526020830191909152015b60405180910390a15095945050505050565b6000610e08600161136c611e53565b61137691906163b7565b65ffffffffffff166129d2565b60008061139286868686612735565b9050600061139f8261177e565b905060048160078111156113b5576113b5615c8d565b14806113d2575060058160078111156113d0576113d0615c8d565b145b6113ee5760405162461bcd60e51b815260040161041c9061628e565b6000828152610130602052604090819020600201805460ff19166001179055517f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f9061143d9084815260200190565b60405180910390a16114528288888888612cf3565b61145f8288888888612d94565b61146c8288888888612e45565b5095945050505050565b60608060608060006101936000878152602001908152602001600020905080600101816002018260030183600401838054806020026020016040519081016040528092919081815260200182805480156114f957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116114db575b505050505093508280548060200260200160405190810160405280929190818152602001828054801561154b57602002820191906000526020600020905b815481526020019060010190808311611537575b5050505050925081805480602002602001604051908101604052809291908181526020016000905b8282101561161f57838290600052602060002001805461159290616254565b80601f01602080910402602001604051908101604052809291908181526020018280546115be90616254565b801561160b5780601f106115e05761010080835404028352916020019161160b565b820191906000526020600020905b8154815290600101906020018083116115ee57829003601f168201915b505050505081526020019060010190611573565b50505050915080805480602002602001604051908101604052809291908181526020016000905b828210156116f257838290600052602060002001805461166590616254565b80601f016020809104026020016040519081016040528092919081815260200182805461169190616254565b80156116de5780601f106116b3576101008083540402835291602001916116de565b820191906000526020600020905b8154815290600101906020018083116116c157829003601f168201915b505050505081526020019060010190611646565b5050505090509450945094509450509193509193565b604080517f150214d74d59b7d1e90c73fc22ef3d991dd0a76b046543d4d80ab92d2a50328f602082015290810186905260ff85166060820152600090819061175690610f7590608001610f5a565b905061177387828860405180602001604052806000815250612e80565b979650505050505050565b6000610ed382612ea3565b60008060008061179885612ff0565b93509350935093506117ac848484846117b4565b505050505050565b60006117c285858585613281565b95945050505050565b6101c55460408051634bf5d7e960e01b815290516060926001600160a01b031691634bf5d7e99160048083019260009291908290030181865afa92505050801561183757506040513d6000823e601f3d908101601f1916820160405261183491908101906163dd565b60015b611873575060408051808201909152601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c74000000602082015290565b919050565b60008033905061189984828560405180602001604052806000815250612e80565b949350505050565b60008033905061177387828888888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a9250612af4915050565b61022b5460009080820361190457505061022a54919050565b600061022b61191460018461644a565b815481106119245761192461645d565b60009182526020918290206040805180820190915291015463ffffffff8116808352600160201b9091046001600160e01b0316928201929092529150841061197a57602001516001600160e01b03169392505050565b61198f6119868561334c565b61022b906133b5565b6001600160e01b0316949350505050565b6119a8610df3565b6001600160a01b0316336001600160a01b0316146119d85760405162461bcd60e51b815260040161041c9061621d565b306119e1610df3565b6001600160a01b031614611a1f5760008036604051611a0192919061620d565b604051809103902090505b80611a18610131612b03565b03611a0c57505b6110c281613468565b600080339050611a7086828787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612e8092505050565b9695505050505050565b6000611a846134ab565b60005b8551811015611afd5761028e6000878381518110611aa757611aa761645d565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16611aeb57604051630b094f2760e31b815260040160405180910390fd5b80611af581616473565b915050611a87565b506117c285858585613556565b600054610100900460ff1615808015611b2a5750600054600160ff909116105b80611b445750303b158015611b44575060005460ff166001145b611ba75760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161041c565b6000805460ff191660011790558015611bca576000805461ff0019166101001790555b334114611bea5760405163022d8c9560e31b815260040160405180910390fd5b3a15611c09576040516383f1b1d360e01b815260040160405180910390fd5b611c356040518060400160405280600b81526020016a2129a1a3b7bb32b93737b960a91b8152506135be565b611c5f611c446001603c6164a2565b611c50600160786164a2565b68056bc75e2d63100000613615565b611c6761364c565b611c72612005613673565b611c7d6120066136a3565b611c87600a6136d3565b611c9b611c966001603c6164a2565b613703565b61100760005261028e6020527f4cdb1a6c4b56f62f27f7202d75e865c2405f138cb32ec45019c0f2ca8f91e472805460ff1916600117905561028f805475df87f0e2b8519ea2dd4abd8b639cdd628497ed25000062010000600160b01b031990911617905580156110c2576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b61028f546201000090046001600160a01b03163314611d7a57604051631431806f60e11b815260040160405180910390fd5b61028f805461ff0019166101001790556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e75290600090a1565b6000606080600080600060606065546000801b148015611dd55750606654155b611e195760405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b604482015260640161041c565b611e21613733565b611e29613742565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b6101c554604080516324776b7d60e21b815290516000926001600160a01b0316916391ddadf49160048083019260209291908290030181865afa925050508015611eba575060408051601f3d908101601f19168201909252611eb7918101906164c4565b60015b61187357610e0843613751565b6000611ed48484846137b8565b90505b9392505050565b61022b5460009015611f0357611ef561022b61382f565b6001600160e01b0316905090565b5061022a5490565b611f13610df3565b6001600160a01b0316336001600160a01b031614611f435760405162461bcd60e51b815260040161041c9061621d565b30611f4c610df3565b6001600160a01b031614611f8a5760008036604051611f6c92919061620d565b604051809103902090505b80611f83610131612b03565b03611f7757505b6110c28161385f565b6101f85460008281526101f9602052604080822054905163d45c443560e01b81526004810191909152909182916001600160a01b039091169063d45c443590602401602060405180830381865afa158015611ff2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061201691906162cf565b9050806001146120265780611ed7565b60009392505050565b336110071461205557604051630f22c43960e41b8152611007600482015260240161041c565b6120bb6040518060400160405280600b81526020016a766f74696e6744656c617960a81b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506138ca9050565b1561216457602081146120e95783838383604051630a5a604160e01b815260040161041c9493929190616515565b604080516020601f840181900481028201810190925282815260009161212a9185858083850183828082843760009201919091525092939250506139239050565b9050806000036121555784848484604051630a5a604160e01b815260040161041c9493929190616515565b61215e81613468565b506125cb565b6121cb6040518060400160405280600c81526020016b1d9bdd1a5b99d4195c9a5bd960a21b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506138ca9050565b1561226e57602081146121f95783838383604051630a5a604160e01b815260040161041c9493929190616515565b604080516020601f840181900481028201810190925282815260009161223a9185858083850183828082843760009201919091525092939250506139239050565b9050806000036122655784848484604051630a5a604160e01b815260040161041c9493929190616515565b61215e81613928565b6122da604051806040016040528060118152602001701c1c9bdc1bdcd85b151a1c995cda1bdb19607a1b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506138ca9050565b1561237d57602081146123085783838383604051630a5a604160e01b815260040161041c9493929190616515565b604080516020601f84018190048102820181019092528281526000916123499185858083850183828082843760009201919091525092939250506139239050565b9050806000036123745784848484604051630a5a604160e01b815260040161041c9493929190616515565b61215e816139cb565b6123e76040518060400160405280600f81526020016e38bab7b93ab6a73ab6b2b930ba37b960891b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506138ca9050565b1561248a57602081146124155783838383604051630a5a604160e01b815260040161041c9493929190616515565b604080516020601f84018190048102820181019092528281526000916124569185858083850183828082843760009201919091525092939250506139239050565b9050806000036124815784848484604051630a5a604160e01b815260040161041c9493929190616515565b61215e81612b82565b6124f9604051806040016040528060148152602001736d696e506572696f64416674657251756f72756d60601b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506138ca9050565b156125aa57600881146125275783838383604051630a5a604160e01b815260040161041c9493929190616515565b600061256d600884848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506139239050565b9050806001600160401b03166000036125a15784848484604051630a5a604160e01b815260040161041c9493929190616515565b61215e81613a0e565b838383836040516325ee20d560e21b815260040161041c9493929190616515565b7ff1ce9b2cbf50eeb05769a29e2543fd350cab46894a7dd9978a12d534bb20e633848484846040516126009493929190616515565b60405180910390a150505050565b6000610e086101635490565b6000610ed382613a7a565b61262d610df3565b6001600160a01b0316336001600160a01b03161461265d5760405162461bcd60e51b815260040161041c9061621d565b30612666610df3565b6001600160a01b0316146126a4576000803660405161268692919061620d565b604051809103902090505b8061269d610131612b03565b0361269157505b600080856001600160a01b03168585856040516126c292919061620d565b60006040518083038185875af1925050503d80600081146126ff576040519150601f19603f3d011682016040523d82523d6000602084013e612704565b606091505b509150915061272c82826040518060600160405280602881526020016168c560289139613ab8565b50505050505050565b60008484848460405160200161274e949392919061653c565b60408051601f19818403018152919052805160209091012095945050505050565b612777610df3565b6001600160a01b0316336001600160a01b0316146127a75760405162461bcd60e51b815260040161041c9061621d565b306127b0610df3565b6001600160a01b0316146127ee57600080366040516127d092919061620d565b604051809103902090505b806127e7610131612b03565b036127db57505b6110c281613a0e565b6000825184511461285b5760405162461bcd60e51b815260206004820152602860248201527f476f7665726e6f72427261766f3a20696e76616c6964207369676e61747572656044820152670e640d8cadccee8d60c31b606482015260840161041c565b612869338787878787613ad1565b611a7086866128788787613b8f565b85611a7a565b60008060008061288d85612ff0565b93509350935093506117ac84848484611158565b6128a9610df3565b6001600160a01b0316336001600160a01b0316146128d95760405162461bcd60e51b815260040161041c9061621d565b306128e2610df3565b6001600160a01b031614612920576000803660405161290292919061620d565b604051809103902090505b80612919610131612b03565b0361290d57505b6110c281613928565b6000611ed7838361294560408051602081019091526000815290565b6137b8565b612952610df3565b6001600160a01b0316336001600160a01b0316146129825760405162461bcd60e51b815260040161041c9061621d565b3061298b610df3565b6001600160a01b0316146129c957600080366040516129ab92919061620d565b604051809103902090505b806129c2610131612b03565b036129b657505b6110c2816139cb565b600060646129df836118eb565b6101c554604051632394e7a360e21b8152600481018690526001600160a01b0390911690638e539e8c90602401602060405180830381865afa158015612a29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a4d91906162cf565b612a579190616587565b610ed391906164a2565b600080600080612a7085612ff0565b93509350935093506117ac84848484611383565b60006001600160e01b03198216636e665ced60e01b1480610ed35750610ed382613cc1565b6000610ed3612ab6613d5d565b8360405161190160f01b8152600281019290925260228201526042902090565b6000806000612ae787878787613d67565b9150915061146c81613e2b565b6000611a708686868686613f75565b6000612b1e8254600f81810b600160801b909204900b131590565b15612b3c57604051631ed9509560e11b815260040160405180910390fd5b508054600f0b6000818152600180840160205260408220805492905583546fffffffffffffffffffffffffffffffff191692016001600160801b03169190911790915590565b6064811115612c055760405162461bcd60e51b815260206004820152604360248201527f476f7665726e6f72566f74657351756f72756d4672616374696f6e3a2071756f60448201527f72756d4e756d657261746f72206f7665722071756f72756d44656e6f6d696e616064820152623a37b960e91b608482015260a40161041c565b6000612c0f611ede565b90508015801590612c21575061022b54155b15612c8657604080518082019091526000815261022b9060208101612c4584614078565b6001600160e01b039081169091528254600181018455600093845260209384902083519490930151909116600160201b0263ffffffff909316929092179101555b612cb4612ca1612c94611e53565b65ffffffffffff1661334c565b612caa84614078565b61022b91906140e1565b505060408051828152602081018490527f0553476bf02ef2726e8ce5ced78d63e26e602e4a2257b1f559418e24b4633997910160405180910390a15050565b30612cfc610df3565b6001600160a01b031614612d8d5760005b84518110156117ac57306001600160a01b0316858281518110612d3257612d3261645d565b60200260200101516001600160a01b031603612d7d57612d7d838281518110612d5d57612d5d61645d565b6020026020010151805190602001206101316140fc90919063ffffffff16565b612d8681616473565b9050612d0d565b5050505050565b61028f54610100900460ff1615612dbe5760405163e96776bf60e01b815260040160405180910390fd5b60005b8451811015612e375761028e6000868381518110612de157612de161645d565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16612e2557604051630b094f2760e31b815260040160405180910390fd5b80612e2f81616473565b915050612dc1565b50612d8d8585858585614138565b30612e4e610df3565b6001600160a01b031614612d8d5761013154600f81810b600160801b909204900b1315612d8d57600061013155612d8d565b60006117c285858585612e9e60408051602081019091526000815290565b612af4565b600080612eaf836141ad565b90506004816007811115612ec557612ec5615c8d565b14612ed05792915050565b60008381526101f9602052604090205480612eec575092915050565b6101f854604051632ab0f52960e01b8152600481018390526001600160a01b0390911690632ab0f52990602401602060405180830381865afa158015612f36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f5a919061659e565b15612f69575060079392505050565b6101f854604051632c258a9f60e11b8152600481018390526001600160a01b039091169063584b153e90602401602060405180830381865afa158015612fb3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fd7919061659e565b15612fe6575060059392505050565b5060029392505050565b60608060606000806101936000878152602001908152602001600020905080600101816002016131c283600301805480602002602001604051908101604052809291908181526020016000905b828210156130e957838290600052602060002001805461305c90616254565b80601f016020809104026020016040519081016040528092919081815260200182805461308890616254565b80156130d55780601f106130aa576101008083540402835291602001916130d5565b820191906000526020600020905b8154815290600101906020018083116130b857829003601f168201915b50505050508152602001906001019061303d565b50505060048601805460408051602080840282018101909252828152935060009084015b828210156131b957838290600052602060002001805461312c90616254565b80601f016020809104026020016040519081016040528092919081815260200182805461315890616254565b80156131a55780601f1061317a576101008083540402835291602001916131a5565b820191906000526020600020905b81548152906001019060200180831161318857829003601f168201915b50505050508152602001906001019061310d565b50505050613b8f565b600984015483546040805160208084028201810190925282815291869183018282801561321857602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116131fa575b505050505093508280548060200260200160405190810160405280929190818152602001828054801561326a57602002820191906000526020600020905b815481526020019060010190808311613256575b505050505092509450945094509450509193509193565b60008061329086868686612735565b600081815261019360205260409020549091506001600160a01b0316338114806132e457506132bd61260e565b6132e28260016132cb611e53565b6132d591906163b7565b65ffffffffffff16612929565b105b6133405760405162461bcd60e51b815260206004820152602760248201527f476f7665726e6f72427261766f3a2070726f706f7365722061626f76652074686044820152661c995cda1bdb1960ca1b606482015260840161041c565b611773878787876142e5565b600063ffffffff8211156133b15760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201526532206269747360d01b606482015260840161041c565b5090565b8154600090818160058111156134125760006133d0846142f3565b6133da908561644a565b60008881526020902090915081015463ffffffff908116908716101561340257809150613410565b61340d8160016163a4565b92505b505b6000613420878785856143db565b9050801561345b576134458761343760018461644a565b600091825260209091200190565b54600160201b90046001600160e01b0316611773565b6000979650505050505050565b6101615460408051918252602082018390527fc565b045403dc03c2eea82b81a0465edad9e2e7fc4d97e11421c209da93d7a93910160405180910390a161016155565b61028f5460ff16613554576a084595161401484a0000006120056001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613502573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061352691906162cf565b1015613545576040516311b6707f60e01b815260040160405180910390fd5b61028f805460ff191660011790555b565b60006135b233868686516001600160401b03811115613577576135776156e2565b6040519080825280602002602001820160405280156135aa57816020015b60608152602001906001900390816135955790505b508787613ad1565b6117c285858585614431565b600054610100900460ff166135e55760405162461bcd60e51b815260040161041c906165c0565b61360c816136076040805180820190915260018152603160f81b602082015290565b614810565b6110c28161485f565b600054610100900460ff1661363c5760405162461bcd60e51b815260040161041c906165c0565b613647838383614897565b505050565b600054610100900460ff166135545760405162461bcd60e51b815260040161041c906165c0565b600054610100900460ff1661369a5760405162461bcd60e51b815260040161041c906165c0565b6110c2816148d9565b600054610100900460ff166136ca5760405162461bcd60e51b815260040161041c906165c0565b6110c281614923565b600054610100900460ff166136fa5760405162461bcd60e51b815260040161041c906165c0565b6110c28161494a565b600054610100900460ff1661372a5760405162461bcd60e51b815260040161041c906165c0565b6110c281614971565b6060606780546110d590616254565b6060606880546110d590616254565b600065ffffffffffff8211156133b15760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203460448201526538206269747360d01b606482015260840161041c565b6101c554604051630748d63560e31b81526001600160a01b038581166004830152602482018590526000921690633a46b1a890604401602060405180830381865afa15801561380b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ed491906162cf565b80546000908015612026576138498361343760018461644a565b54600160201b90046001600160e01b0316611ed7565b6101f854604080516001600160a01b03928316815291831660208301527f08f74ea46ef7894f65eabfb5e6e695de773a000b47c529ab559178069b226401910160405180910390a16101f880546001600160a01b0319166001600160a01b0392909216919091179055565b6000816040516020016138dd919061660b565b6040516020818303038152906040528051906020012083604051602001613904919061660b565b6040516020818303038152906040528051906020012014905092915050565b015190565b600081116139885760405162461bcd60e51b815260206004820152602760248201527f476f7665726e6f7253657474696e67733a20766f74696e6720706572696f6420604482015266746f6f206c6f7760c81b606482015260840161041c565b6101625460408051918252602082018390527f7e3f7f0708a84de9203036abaa450dccc85ad5ff52f78c170f3edb55cf5e8828910160405180910390a161016255565b6101635460408051918252602082018390527fccb45da8d5717e6c4544694297c4ba5cf151d455c9bb0ed4fc7a38411bc05461910160405180910390a161016355565b61025c54604080516001600160401b03928316815291831660208301527f7ca4ac117ed3cdce75c1161d8207c440389b1a15d69d096831664657c07dafc2910160405180910390a161025c805467ffffffffffffffff19166001600160401b0392909216919091179055565b60008181526101306020526040812060010154610ed3906001600160401b0316600084815261025d60205260409020546001600160401b0316614998565b60608315613ac7575081611ed7565b611ed783836149ae565b805160208201206000613aef8787613ae98888613b8f565b85612735565b600081815261019360205260409020600981015491925090613b845780546001600160a01b0319166001600160a01b038a161781558751613b3990600183019060208b019061547d565b508651613b4f90600283019060208a01906154de565b508551613b659060038301906020890190615519565b508451613b7b906004830190602088019061556b565b50600981018390555b505050505050505050565b6060600082516001600160401b03811115613bac57613bac6156e2565b604051908082528060200260200182016040528015613bdf57816020015b6060815260200190600190039081613bca5790505b50905060005b8151811015613cb957848181518110613c0057613c0061645d565b602002602001015151600014613c7057848181518110613c2257613c2261645d565b602002602001015180519060200120848281518110613c4357613c4361645d565b6020026020010151604051602001613c5c929190616627565b604051602081830303815290604052613c8b565b838181518110613c8257613c8261645d565b60200260200101515b828281518110613c9d57613c9d61645d565b602002602001018190525080613cb290616473565b9050613be5565b509392505050565b600063288ace0360e11b6318df743f60e31b63bf26d89760e01b6379dd796f60e01b6001600160e01b03198616821480613d0757506001600160e01b0319868116908216145b80613d1e57506001600160e01b0319868116908516145b80613d3957506001600160e01b03198616630271189760e51b145b80611a7057506301ffc9a760e01b6001600160e01b03198716149695505050505050565b6000610e086149d8565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115613d9e5750600090506003613e22565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015613df2573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116613e1b57600060019250925050613e22565b9150600090505b94509492505050565b6000816004811115613e3f57613e3f615c8d565b03613e475750565b6001816004811115613e5b57613e5b615c8d565b03613ea85760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640161041c565b6002816004811115613ebc57613ebc615c8d565b03613f095760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161041c565b6003816004811115613f1d57613f1d615c8d565b036110c25760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b606482015260840161041c565b600080613f858787878787614a4c565b600088815261025d60205260409020549091506001600160401b0316158015613fb25750613fb287614ba2565b15611a70576000613fcc61025c546001600160401b031690565b613fd4611e53565b65ffffffffffff16613fe69190616658565b9050613ff18861261a565b816001600160401b03161115614040576040516001600160401b038216815288907f541f725fb9f7c98a30cc9c0ff32fbb14358cd7159c847a3aa20a2bdc442ba5119060200160405180910390a25b600088815261025d60205260409020805467ffffffffffffffff19166001600160401b03929092169190911790559695505050505050565b60006001600160e01b038211156133b15760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20326044820152663234206269747360c81b606482015260840161041c565b6000806140ef858585614be2565b915091505b935093915050565b8154600160801b90819004600f0b6000818152600180860160205260409091209390935583546001600160801b03908116939091011602179055565b6101f85460405163e38335e560e01b81526001600160a01b039091169063e38335e59034906141749088908890889060009089906004016162e8565b6000604051808303818588803b15801561418d57600080fd5b505af11580156141a1573d6000803e3d6000fd5b50505050505050505050565b600081815261013060205260408120600281015460ff16156141d25750600792915050565b6002810154610100900460ff16156141ed5750600292915050565b600083815261013060205260408120546001600160401b0316908190036142565760405162461bcd60e51b815260206004820152601d60248201527f476f7665726e6f723a20756e6b6e6f776e2070726f706f73616c206964000000604482015260640161041c565b6000614260611e53565b65ffffffffffff16905080821061427c57506000949350505050565b60006142878661261a565b905081811061429c5750600195945050505050565b6142a586614ba2565b80156142c857506000868152610193602052604090206006810154600590910154115b156142d95750600495945050505050565b50600395945050505050565b60006117c285858585614d81565b60008160000361430557506000919050565b6000600161431284614e37565b901c6001901b9050600181848161432b5761432b61648c565b048201901c905060018184816143435761434361648c565b048201901c9050600181848161435b5761435b61648c565b048201901c905060018184816143735761437361648c565b048201901c9050600181848161438b5761438b61648c565b048201901c905060018184816143a3576143a361648c565b048201901c905060018184816143bb576143bb61648c565b048201901c9050611ed7818285816143d5576143d561648c565b04614ecb565b60005b81831015613cb95760006143f28484614eda565b60008781526020902090915063ffffffff86169082015463ffffffff16111561441d5780925061442b565b6144288160016163a4565b93505b506143de565b60003361443e8184614ef5565b61448a5760405162461bcd60e51b815260206004820152601d60248201527f476f7665726e6f723a2070726f706f7365722072657374726963746564000000604482015260640161041c565b6000614494611e53565b65ffffffffffff1690506144a661260e565b6144b583610d4e60018561644a565b101561451d5760405162461bcd60e51b815260206004820152603160248201527f476f7665726e6f723a2070726f706f73657220766f7465732062656c6f7720706044820152701c9bdc1bdcd85b081d1a1c995cda1bdb19607a1b606482015260840161041c565b60006145328888888880519060200120612735565b905086518851146145555760405162461bcd60e51b815260040161041c90616678565b85518851146145765760405162461bcd60e51b815260040161041c90616678565b60008851116145c75760405162461bcd60e51b815260206004820152601860248201527f476f7665726e6f723a20656d7074792070726f706f73616c0000000000000000604482015260640161041c565b600081815261013060205260409020546001600160401b0316156146375760405162461bcd60e51b815260206004820152602160248201527f476f7665726e6f723a2070726f706f73616c20616c72656164792065786973746044820152607360f81b606482015260840161041c565b60006146436101615490565b61464d90846163a4565b9050600061465b6101625490565b61466590836163a4565b90506040518060e0016040528061467b84614fe6565b6001600160401b031681526001600160a01b0387166020820152600060408201526060016146a883614fe6565b6001600160401b03908116825260006020808401829052604080850183905260609485018390528883526101308252918290208551815492870151878501519186166001600160e01b031990941693909317600160401b6001600160a01b039094168402176001600160e01b0316600160e01b60e09290921c91909102178155938501516080860151908416921c0217600183015560a08301516002909201805460c09094015161ffff1990941692151561ff00191692909217610100931515939093029290921790558a517f7d84a6263ae0d98d3329bd7b46bb4e8d6f98cd35a7adb45c274c8b7fd5ebd5e091859188918e918e918111156147ad576147ad6156e2565b6040519080825280602002602001820160405280156147e057816020015b60608152602001906001900390816147cb5790505b508d88888f6040516147fa999897969594939291906166b9565b60405180910390a1509098975050505050505050565b600054610100900460ff166148375760405162461bcd60e51b815260040161041c906165c0565b60676148438382616797565b5060686148508282616797565b50506000606581905560665550565b600054610100900460ff166148865760405162461bcd60e51b815260040161041c906165c0565b61012f6148938282616797565b5050565b600054610100900460ff166148be5760405162461bcd60e51b815260040161041c906165c0565b6148c783613468565b6148d082613928565b613647816139cb565b600054610100900460ff166149005760405162461bcd60e51b815260040161041c906165c0565b6101c580546001600160a01b0319166001600160a01b0392909216919091179055565b600054610100900460ff16611f8a5760405162461bcd60e51b815260040161041c906165c0565b600054610100900460ff166110b95760405162461bcd60e51b815260040161041c906165c0565b600054610100900460ff166127ee5760405162461bcd60e51b815260040161041c906165c0565b60008183116149a75781611ed7565b5090919050565b8151156149be5781518083602001fd5b8060405162461bcd60e51b815260040161041c919061589b565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f614a0361504e565b614a0b6150a7565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b6000858152610130602052604081206001614a668861177e565b6007811115614a7757614a77615c8d565b14614ad05760405162461bcd60e51b815260206004820152602360248201527f476f7665726e6f723a20766f7465206e6f742063757272656e746c792061637460448201526269766560e81b606482015260840161041c565b8054600090614aea9088906001600160401b0316866137b8565b9050614af988888884886150d8565b8351600003614b4e57866001600160a01b03167fb8e138887d0aa13bab447e82de9d5c1777041ecd21ca36ba824ff1e6c07ddda489888489604051614b419493929190616856565b60405180910390a2611773565b866001600160a01b03167fe2babfbac5889a709b63bb7f598b324e08bc5a4fb9ec647fb3cbc9ec07eb87128988848989604051614b8f95949392919061687e565b60405180910390a2979650505050505050565b6000818152610193602052604081206005810154614bd9610dba85600090815261013060205260409020546001600160401b031690565b11159392505050565b825460009081908015614d28576000614c008761343760018561644a565b60408051808201909152905463ffffffff808216808452600160201b9092046001600160e01b031660208401529192509087161015614c815760405162461bcd60e51b815260206004820152601b60248201527f436865636b706f696e743a2064656372656173696e67206b6579730000000000604482015260640161041c565b805163ffffffff808816911603614cc95784614ca28861343760018661644a565b80546001600160e01b0392909216600160201b0263ffffffff909216919091179055614d18565b6040805180820190915263ffffffff80881682526001600160e01b0380881660208085019182528b54600181018d5560008d81529190912094519151909216600160201b029216919091179101555b6020015192508391506140f49050565b50506040805180820190915263ffffffff80851682526001600160e01b0380851660208085019182528854600181018a5560008a815291822095519251909316600160201b0291909316179201919091559050816140f4565b600080614d9086868686615276565b60008181526101f96020526040902054909150156117c2576101f85460008281526101f960205260409081902054905163c4d252f560e01b81526001600160a01b039092169163c4d252f591614dec9160040190815260200190565b600060405180830381600087803b158015614e0657600080fd5b505af1158015614e1a573d6000803e3d6000fd5b50505060008281526101f960205260408120555095945050505050565b600080608083901c15614e4c57608092831c92015b604083901c15614e5e57604092831c92015b602083901c15614e7057602092831c92015b601083901c15614e8257601092831c92015b600883901c15614e9457600892831c92015b600483901c15614ea657600492831c92015b600283901c15614eb857600292831c92015b600183901c15610ed35760010192915050565b60008183106149a75781611ed7565b6000614ee960028484186164a2565b611ed7908484166163a4565b80516000906034811015614f0d576001915050610ed3565b82810160131901516001600160a01b031981166b046e0e4dee0dee6cae47a60f60a31b14614f4057600192505050610ed3565b600080614f4e60288561644a565b90505b83811015614fc557600080614f85888481518110614f7157614f7161645d565b01602001516001600160f81b031916615383565b9150915081614f9d5760019650505050505050610ed3565b8060ff166004856001600160a01b0316901b179350505080614fbe90616473565b9050614f51565b50856001600160a01b0316816001600160a01b031614935050505092915050565b60006001600160401b038211156133b15760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203660448201526534206269747360d01b606482015260840161041c565b600080615059613733565b805190915015615070578051602090910120919050565b606554801561507f5792915050565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4709250505090565b6000806150b2613742565b8051909150156150c9578051602090910120919050565b606654801561507f5792915050565b6000858152610193602090815260408083206001600160a01b038816845260088101909252909120805460ff16156151685760405162461bcd60e51b815260206004820152602d60248201527f476f7665726e6f72436f6d7061746962696c697479427261766f3a20766f746560448201526c08185b1c9958591e4818d85cdd609a1b606482015260840161041c565b805460ff86166101000261ffff1990911617600117815561518884615415565b81546001600160601b039190911662010000026dffffffffffffffffffffffff00001990911617815560ff85166151d857838260060160008282546151cd91906163a4565b9091555061272c9050565b60001960ff8616016151f857838260050160008282546151cd91906163a4565b60011960ff86160161521857838260070160008282546151cd91906163a4565b60405162461bcd60e51b815260206004820152602d60248201527f476f7665726e6f72436f6d7061746962696c697479427261766f3a20696e766160448201526c6c696420766f7465207479706560981b606482015260840161041c565b60008061528586868686612735565b905060006152928261177e565b905060028160078111156152a8576152a8615c8d565b141580156152c8575060068160078111156152c5576152c5615c8d565b14155b80156152e6575060078160078111156152e3576152e3615c8d565b14155b6153325760405162461bcd60e51b815260206004820152601d60248201527f476f7665726e6f723a2070726f706f73616c206e6f7420616374697665000000604482015260640161041c565b6000828152610130602052604090819020600201805461ff001916610100179055517f789cf55be980739dad1d0699b93b58e806b51c9d96619bfa8fe0a28abaa7b30c9061134b9084815260200190565b60008060f883901c602f8111801561539e5750603a8160ff16105b156153b357600194602f199091019350915050565b8060ff1660401080156153c9575060478160ff16105b156153de576001946036199091019350915050565b8060ff1660601080156153f4575060678160ff16105b15615409576001946056199091019350915050565b50600093849350915050565b60006001600160601b038211156133b15760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203960448201526536206269747360d01b606482015260840161041c565b8280548282559060005260206000209081019282156154d2579160200282015b828111156154d257825182546001600160a01b0319166001600160a01b0390911617825560209092019160019091019061549d565b506133b19291506155bd565b8280548282559060005260206000209081019282156154d2579160200282015b828111156154d25782518255916020019190600101906154fe565b82805482825590600052602060002090810192821561555f579160200282015b8281111561555f578251829061554f9082616797565b5091602001919060010190615539565b506133b19291506155d2565b8280548282559060005260206000209081019282156155b1579160200282015b828111156155b157825182906155a19082616797565b509160200191906001019061558b565b506133b19291506155ef565b5b808211156133b157600081556001016155be565b808211156133b15760006155e6828261560c565b506001016155d2565b808211156133b1576000615603828261560c565b506001016155ef565b50805461561890616254565b6000825580601f10615628575050565b601f0160209004906000526020600020908101906110c291906155bd565b60006020828403121561565857600080fd5b5035919050565b60006020828403121561567157600080fd5b81356001600160e01b031981168114611ed757600080fd5b803560ff8116811461187357600080fd5b60008083601f8401126156ac57600080fd5b5081356001600160401b038111156156c357600080fd5b6020830191508360208285010111156156db57600080fd5b9250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715615720576157206156e2565b604052919050565b60006001600160401b03821115615741576157416156e2565b50601f01601f191660200190565b600082601f83011261576057600080fd5b813561577361576e82615728565b6156f8565b81815284602083860101111561578857600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060008060008060e0898b0312156157c157600080fd5b883597506157d160208a01615689565b965060408901356001600160401b03808211156157ed57600080fd5b6157f98c838d0161569a565b909850965060608b013591508082111561581257600080fd5b5061581f8b828c0161574f565b94505061582e60808a01615689565b925060a0890135915060c089013590509295985092959890939650565b60005b8381101561586657818101518382015260200161584e565b50506000910152565b6000815180845261588781602086016020860161584b565b601f01601f19169290920160200192915050565b602081526000611ed7602083018461586f565b6001600160a01b03811681146110c257600080fd5b600080600080608085870312156158d957600080fd5b84356158e4816158ae565b935060208501356158f4816158ae565b92506040850135915060608501356001600160401b0381111561591657600080fd5b6159228782880161574f565b91505092959194509250565b60006001600160401b03821115615947576159476156e2565b5060051b60200190565b600082601f83011261596257600080fd5b8135602061597261576e8361592e565b82815260059290921b8401810191818101908684111561599157600080fd5b8286015b848110156159b55780356159a8816158ae565b8352918301918301615995565b509695505050505050565b600082601f8301126159d157600080fd5b813560206159e161576e8361592e565b82815260059290921b84018101918181019086841115615a0057600080fd5b8286015b848110156159b55780358352918301918301615a04565b600082601f830112615a2c57600080fd5b81356020615a3c61576e8361592e565b82815260059290921b84018101918181019086841115615a5b57600080fd5b8286015b848110156159b55780356001600160401b03811115615a7e5760008081fd5b615a8c8986838b010161574f565b845250918301918301615a5f565b60008060008060808587031215615ab057600080fd5b84356001600160401b0380821115615ac757600080fd5b615ad388838901615951565b95506020870135915080821115615ae957600080fd5b615af5888389016159c0565b94506040870135915080821115615b0b57600080fd5b50615b1887828801615a1b565b949793965093946060013593505050565b600081518084526020808501945080840160005b83811015615b625781516001600160a01b031687529582019590820190600101615b3d565b509495945050505050565b600081518084526020808501945080840160005b83811015615b6257815187529582019590820190600101615b81565b600081518084526020808501808196508360051b8101915082860160005b85811015615be5578284038952615bd384835161586f565b98850198935090840190600101615bbb565b5091979650505050505050565b608081526000615c056080830187615b29565b8281036020840152615c178187615b6d565b90508281036040840152615c2b8186615b9d565b905082810360608401526117738185615b9d565b600080600080600060a08688031215615c5757600080fd5b85359450615c6760208701615689565b9350615c7560408701615689565b94979396509394606081013594506080013592915050565b634e487b7160e01b600052602160045260246000fd5b6020810160088310615cc557634e487b7160e01b600052602160045260246000fd5b91905290565b60008060408385031215615cde57600080fd5b823591506020830135615cf0816158ae565b809150509250929050565b600060208284031215615d0d57600080fd5b8135611ed7816158ae565b60008060408385031215615d2b57600080fd5b82359150615d3b60208401615689565b90509250929050565b600080600080600060808688031215615d5c57600080fd5b85359450615d6c60208701615689565b935060408601356001600160401b0380821115615d8857600080fd5b615d9489838a0161569a565b90955093506060880135915080821115615dad57600080fd5b50615dba8882890161574f565b9150509295509295909350565b60008060008060608587031215615ddd57600080fd5b84359350615ded60208601615689565b925060408501356001600160401b03811115615e0857600080fd5b615e148782880161569a565b95989497509550505050565b60008060008060808587031215615e3657600080fd5b84356001600160401b0380821115615e4d57600080fd5b615e5988838901615951565b95506020870135915080821115615e6f57600080fd5b615e7b888389016159c0565b94506040870135915080821115615e9157600080fd5b615e9d88838901615a1b565b93506060870135915080821115615eb357600080fd5b506159228782880161574f565b60ff60f81b8816815260e060208201526000615edf60e083018961586f565b8281036040840152615ef1818961586f565b606084018890526001600160a01b038716608085015260a0840186905283810360c08501529050610fc38185615b6d565b600080600060608486031215615f3757600080fd5b8335615f42816158ae565b92506020840135915060408401356001600160401b03811115615f6457600080fd5b615f708682870161574f565b9150509250925092565b60008060008060408587031215615f9057600080fd5b84356001600160401b0380821115615fa757600080fd5b615fb38883890161569a565b90965094506020870135915080821115615fcc57600080fd5b50615e148782880161569a565b600080600080600060a08688031215615ff157600080fd5b8535615ffc816158ae565b9450602086013561600c816158ae565b935060408601356001600160401b038082111561602857600080fd5b61603489838a016159c0565b9450606088013591508082111561604a57600080fd5b61605689838a016159c0565b93506080880135915080821115615dad57600080fd5b6000806000806060858703121561608257600080fd5b843561608d816158ae565b93506020850135925060408501356001600160401b03811115615e0857600080fd5b6000602082840312156160c157600080fd5b81356001600160401b0381168114611ed757600080fd5b600080600080600060a086880312156160f057600080fd5b85356001600160401b038082111561610757600080fd5b61611389838a01615951565b9650602088013591508082111561612957600080fd5b61613589838a016159c0565b9550604088013591508082111561614b57600080fd5b61615789838a01615a1b565b9450606088013591508082111561616d57600080fd5b61605689838a01615a1b565b6000806040838503121561618c57600080fd5b8235616197816158ae565b946020939093013593505050565b600080600080600060a086880312156161bd57600080fd5b85356161c8816158ae565b945060208601356161d8816158ae565b9350604086013592506060860135915060808601356001600160401b0381111561620157600080fd5b615dba8882890161574f565b8183823760009101908152919050565b60208082526018908201527f476f7665726e6f723a206f6e6c79476f7665726e616e63650000000000000000604082015260600190565b600181811c9082168061626857607f821691505b60208210810361628857634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526021908201527f476f7665726e6f723a2070726f706f73616c206e6f74207375636365737366756040820152601b60fa1b606082015260800190565b6000602082840312156162e157600080fd5b5051919050565b60a0815260006162fb60a0830188615b29565b828103602084015261630d8188615b6d565b905082810360408401526163218187615b9d565b60608401959095525050608001529392505050565b60c08152600061634960c0830189615b29565b828103602084015261635b8189615b6d565b9050828103604084015261636f8188615b9d565b60608401969096525050608081019290925260a0909101529392505050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610ed357610ed361638e565b65ffffffffffff8281168282160390808211156163d6576163d661638e565b5092915050565b6000602082840312156163ef57600080fd5b81516001600160401b0381111561640557600080fd5b8201601f8101841361641657600080fd5b805161642461576e82615728565b81815285602083850101111561643957600080fd5b6117c282602083016020860161584b565b81810381811115610ed357610ed361638e565b634e487b7160e01b600052603260045260246000fd5b6000600182016164855761648561638e565b5060010190565b634e487b7160e01b600052601260045260246000fd5b6000826164bf57634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156164d657600080fd5b815165ffffffffffff81168114611ed757600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6040815260006165296040830186886164ec565b82810360208401526117738185876164ec565b60808152600061654f6080830187615b29565b82810360208401526165618187615b6d565b905082810360408401526165758186615b9d565b91505082606083015295945050505050565b8082028115828204841417610ed357610ed361638e565b6000602082840312156165b057600080fd5b81518015158114611ed757600080fd5b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6000825161661d81846020870161584b565b9190910192915050565b6001600160e01b031983168152815160009061664a81600485016020870161584b565b919091016004019392505050565b6001600160401b038181168382160190808211156163d6576163d661638e565b60208082526021908201527f476f7665726e6f723a20696e76616c69642070726f706f73616c206c656e67746040820152600d60fb1b606082015260800190565b8981526001600160a01b0389166020820152610120604082018190526000906166e48382018b615b29565b905082810360608401526166f8818a615b6d565b9050828103608084015261670c8189615b9d565b905082810360a08401526167208188615b9d565b90508560c08401528460e0840152828103610100840152616741818561586f565b9c9b505050505050505050505050565b601f82111561364757600081815260208120601f850160051c810160208610156167785750805b601f850160051c820191505b818110156117ac57828155600101616784565b81516001600160401b038111156167b0576167b06156e2565b6167c4816167be8454616254565b84616751565b602080601f8311600181146167f957600084156167e15750858301515b600019600386901b1c1916600185901b1785556117ac565b600085815260208120601f198616915b8281101561682857888601518255948401946001909101908401616809565b50858210156168465787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b84815260ff84166020820152826040820152608060608201526000611a70608083018461586f565b85815260ff8516602082015283604082015260a0606082015260006168a660a083018561586f565b82810360808401526168b8818561586f565b9897505050505050505056fe476f7665726e6f723a2072656c617920726576657274656420776974686f7574206d657373616765a164736f6c6343000811000a", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/1abdfbf3aeb86909c2220b79bf92b87ddff64b54", + Code: "6080604052600436106103d25760003560e01c80637b3c71d3116101fd578063c28bc2fa11610118578063e23a9a52116100ab578063f1fad1041161007a578063f1fad10414610db0578063f23a6e6114610dc5578063f8ce560a14610df1578063fc0c546a14610e11578063fe0d94c114610e3257600080fd5b8063e23a9a5214610c85578063ea0217cf14610d50578063eb9019d414610d70578063ece40cc114610d9057600080fd5b8063da95691a116100e7578063da95691a14610bcb578063dd4e2ba514610beb578063ddf0b00914610c31578063deaaa7cc14610c5157600080fd5b8063c28bc2fa14610b59578063c59057e414610b6c578063d07f91e914610b8c578063d33219b414610bac57600080fd5b8063a7713a7011610190578063b58131b01161015f578063b58131b014610add578063bc197c8114610af2578063c01f9e3714610b1e578063c170ec0b14610b3e57600080fd5b8063a7713a7014610a68578063a890c91014610a7d578063ab58fb8e14610a9d578063ac43175114610abd57600080fd5b806384b0196e116101cc57806384b0196e146109e057806391ddadf414610a0857806397c3d33414610a345780639a802a6d14610a4857600080fd5b80637b3c71d3146109765780637d5e81e2146109965780638129fc1c146109b65780638456cb59146109cb57600080fd5b80633932abb1116102ed578063533ddd14116102805780635f398a141161024f5780635f398a14146108ef57806360c4247f1461090f57806363d42b381461092f57806370b0f6601461095657600080fd5b8063533ddd141461085457806354fd4d501461088557806356781388146108af5780635c975abb146108cf57600080fd5b806343859632116102bc57806343859632146107ad578063452115d6146107f85780634bf5d7e9146108185780634bf6c8821461082d57600080fd5b80633932abb11461072a5780633bccf4fd146107405780633e4f49e61461076057806340e58ee51461078d57600080fd5b8063150b7a02116103655780632d63f693116103345780632d63f693146106665780632fe3e2611461069d578063328dd982146106d157806332b8113e1461070157600080fd5b8063150b7a02146105da578063160cbed71461061e57806324bc1a641461063e5780632656227d1461065357600080fd5b8063046f7da2116103a1578063046f7da21461052d57806306f3f9e61461054257806306fdde0314610562578063143489d01461058457600080fd5b8063013cf08b1461044257806301ffc9a7146104bd57806302a251a3146104ed578063034201811461050d57600080fd5b3661043d57306103e0610e45565b6001600160a01b03161461043b5760405162461bcd60e51b815260206004820152601f60248201527f476f7665726e6f723a206d7573742073656e6420746f206578656375746f720060448201526064015b60405180910390fd5b005b600080fd5b34801561044e57600080fd5b5061046261045d3660046156d1565b610e5f565b604080519a8b526001600160a01b0390991660208b0152978901969096526060880194909452608087019290925260a086015260c085015260e084015215156101008301521515610120820152610140015b60405180910390f35b3480156104c957600080fd5b506104dd6104d83660046156ea565b610f1a565b60405190151581526020016104b4565b3480156104f957600080fd5b50610162545b6040519081526020016104b4565b34801561051957600080fd5b506104ff610528366004615830565b610f2b565b34801561053957600080fd5b5061043b611023565b34801561054e57600080fd5b5061043b61055d3660046156d1565b61108c565b34801561056e57600080fd5b50610577611117565b6040516104b49190615926565b34801561059057600080fd5b506105c261059f3660046156d1565b60009081526101306020526040902054600160401b90046001600160a01b031690565b6040516001600160a01b0390911681526020016104b4565b3480156105e657600080fd5b506106056105f536600461594e565b630a85bd0160e11b949350505050565b6040516001600160e01b031990911681526020016104b4565b34801561062a57600080fd5b506104ff610639366004615b25565b6111aa565b34801561064a57600080fd5b506104ff6111ec565b6104ff610661366004615b25565b611212565b34801561067257600080fd5b506104ff6106813660046156d1565b600090815261013060205260409020546001600160401b031690565b3480156106a957600080fd5b506104ff7fb3b3f3b703cd84ce352197dcff232b1b5d3cfb2025ce47cf04742d0651f1af8881565b3480156106dd57600080fd5b506106f16106ec3660046156d1565b611305565b6040516104b49493929190615c7d565b34801561070d57600080fd5b5061025c546040516001600160401b0390911681526020016104b4565b34801561073657600080fd5b50610161546104ff565b34801561074c57600080fd5b506104ff61075b366004615cca565b611597565b34801561076c57600080fd5b5061078061077b3660046156d1565b61160d565b6040516104b49190615d2e565b34801561079957600080fd5b5061043b6107a83660046156d1565b611618565b3480156107b957600080fd5b506104dd6107c8366004615d56565b6000828152610193602090815260408083206001600160a01b038516845260080190915290205460ff1692915050565b34801561080457600080fd5b506104ff610813366004615b25565b611643565b34801561082457600080fd5b50610577611651565b34801561083957600080fd5b50610842600881565b60405160ff90911681526020016104b4565b34801561086057600080fd5b506104dd61086f366004615d86565b61028e6020526000908152604090205460ff1681565b34801561089157600080fd5b506040805180820190915260018152603160f81b6020820152610577565b3480156108bb57600080fd5b506104ff6108ca366004615da3565b6116fe565b3480156108db57600080fd5b5061028f546104dd90610100900460ff1681565b3480156108fb57600080fd5b506104ff61090a366004615dcf565b611727565b34801561091b57600080fd5b506104ff61092a3660046156d1565b611771565b34801561093b57600080fd5b5061028f546105c2906201000090046001600160a01b031681565b34801561096257600080fd5b5061043b6109713660046156d1565b611826565b34801561098257600080fd5b506104ff610991366004615e52565b6118ae565b3480156109a257600080fd5b506104ff6109b1366004615eab565b611900565b3480156109c257600080fd5b5061043b611990565b3480156109d757600080fd5b5061043b611bce565b3480156109ec57600080fd5b506109f5611c3b565b6040516104b49796959493929190615f4b565b348015610a1457600080fd5b50610a1d611cd9565b60405165ffffffffffff90911681526020016104b4565b348015610a4057600080fd5b5060646104ff565b348015610a5457600080fd5b506104ff610a63366004615fad565b611d4d565b348015610a7457600080fd5b506104ff611d64565b348015610a8957600080fd5b5061043b610a98366004615d86565b611d91565b348015610aa957600080fd5b506104ff610ab83660046156d1565b611e19565b348015610ac957600080fd5b5061043b610ad8366004616005565b611eb5565b348015610ae957600080fd5b506104ff612494565b348015610afe57600080fd5b50610605610b0d366004616064565b63bc197c8160e01b95945050505050565b348015610b2a57600080fd5b506104ff610b393660046156d1565b6124a0565b348015610b4a57600080fd5b5061028f546104dd9060ff1681565b61043b610b673660046160f7565b6124ab565b348015610b7857600080fd5b506104ff610b87366004615b25565b6125bb565b348015610b9857600080fd5b5061043b610ba736600461613a565b6125f5565b348015610bb857600080fd5b506101f8546001600160a01b03166105c2565b348015610bd757600080fd5b506104ff610be6366004616163565b61267d565b348015610bf757600080fd5b5060408051808201909152601a81527f737570706f72743d627261766f2671756f72756d3d627261766f0000000000006020820152610577565b348015610c3d57600080fd5b5061043b610c4c3660046156d1565b612704565b348015610c5d57600080fd5b506104ff7f150214d74d59b7d1e90c73fc22ef3d991dd0a76b046543d4d80ab92d2a50328f81565b348015610c9157600080fd5b50610d20610ca0366004615d56565b6040805160608101825260008082526020820181905291810191909152506000918252610193602090815260408084206001600160a01b0393909316845260089092018152918190208151606081018352905460ff8082161515835261010082041693820193909352620100009092046001600160601b03169082015290565b6040805182511515815260208084015160ff1690820152918101516001600160601b0316908201526060016104b4565b348015610d5c57600080fd5b5061043b610d6b3660046156d1565b612727565b348015610d7c57600080fd5b506104ff610d8b366004616204565b6127af565b348015610d9c57600080fd5b5061043b610dab3660046156d1565b6127d0565b348015610dbc57600080fd5b50610842601181565b348015610dd157600080fd5b50610605610de0366004616230565b63f23a6e6160e01b95945050505050565b348015610dfd57600080fd5b506104ff610e0c3660046156d1565b612858565b348015610e1d57600080fd5b506101c5546105c2906001600160a01b031681565b61043b610e403660046156d1565b6128e7565b6000610e5a6101f8546001600160a01b031690565b905090565b8060008080808080808080610e738a611e19565b60008c815261013060205260409020549098506001600160401b03169650610e9a8b6124a0565b60008c81526101936020526040812080546005820154600683015460078401546001600160a01b039093169e50949a509850929650919450610edb8d61160d565b90506002816007811115610ef157610ef1615d18565b1493506007816007811115610f0857610f08615d18565b14925050509193959799509193959799565b6000610f258261290a565b92915050565b600080610fcf610fc77fb3b3f3b703cd84ce352197dcff232b1b5d3cfb2025ce47cf04742d0651f1af888c8c8c8c604051610f67929190616298565b60405180910390208b80519060200120604051602001610fac959493929190948552602085019390935260ff9190911660408401526060830152608082015260a00190565b6040516020818303038152906040528051906020012061292f565b86868661295c565b90506110158a828b8b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508d925061297a915050565b9a9950505050505050505050565b61028f546201000090046001600160a01b0316331461105557604051631431806f60e11b815260040160405180910390fd5b61028f805461ff00191690556040517f62451d457bc659158be6e6247f56ec1df424a5c7597f71c20c2bc44e0965c8f990600090a1565b611094610e45565b6001600160a01b0316336001600160a01b0316146110c45760405162461bcd60e51b8152600401610432906162a8565b306110cd610e45565b6001600160a01b03161461110b57600080366040516110ed929190616298565b604051809103902090505b80611104610131612989565b036110f857505b61111481612a08565b50565b606061012f8054611127906162df565b80601f0160208091040260200160405190810160405280929190818152602001828054611153906162df565b80156111a05780601f10611175576101008083540402835291602001916111a0565b820191906000526020600020905b81548152906001019060200180831161118357829003601f168201915b5050505050905090565b61028f54600090610100900460ff16156111d75760405163e96776bf60e01b815260040160405180910390fd5b6111e385858585612b79565b95945050505050565b6000610e5a60016111fb611cd9565b611205919061632f565b65ffffffffffff16612858565b600080611221868686866125bb565b9050600061122e8261160d565b9050600481600781111561124457611244615d18565b14806112615750600581600781111561125f5761125f615d18565b145b61127d5760405162461bcd60e51b815260040161043290616355565b6000828152610130602052604090819020600201805460ff19166001179055517f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f906112cc9084815260200190565b60405180910390a16112e18288888888612d7e565b6112ee8288888888612e1f565b6112fb8288888888612ed0565b5095945050505050565b606080606080600061019360008781526020019081526020016000209050806001018160020182600301836004018380548060200260200160405190810160405280929190818152602001828054801561138857602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161136a575b50505050509350828054806020026020016040519081016040528092919081815260200182805480156113da57602002820191906000526020600020905b8154815260200190600101908083116113c6575b5050505050925081805480602002602001604051908101604052809291908181526020016000905b828210156114ae578382906000526020600020018054611421906162df565b80601f016020809104026020016040519081016040528092919081815260200182805461144d906162df565b801561149a5780601f1061146f5761010080835404028352916020019161149a565b820191906000526020600020905b81548152906001019060200180831161147d57829003601f168201915b505050505081526020019060010190611402565b50505050915080805480602002602001604051908101604052809291908181526020016000905b828210156115815783829060005260206000200180546114f4906162df565b80601f0160208091040260200160405190810160405280929190818152602001828054611520906162df565b801561156d5780601f106115425761010080835404028352916020019161156d565b820191906000526020600020905b81548152906001019060200180831161155057829003601f168201915b5050505050815260200190600101906114d5565b5050505090509450945094509450509193509193565b604080517f150214d74d59b7d1e90c73fc22ef3d991dd0a76b046543d4d80ab92d2a50328f602082015290810186905260ff8516606082015260009081906115e590610fc790608001610fac565b905061160287828860405180602001604052806000815250612f0b565b979650505050505050565b6000610f2582612f2e565b6000806000806116278561307b565b935093509350935061163b84848484611643565b505050505050565b60006111e38585858561330c565b6101c55460408051634bf5d7e960e01b815290516060926001600160a01b031691634bf5d7e99160048083019260009291908290030181865afa9250505080156116bd57506040513d6000823e601f3d908101601f191682016040526116ba9190810190616396565b60015b6116f9575060408051808201909152601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c74000000602082015290565b919050565b60008033905061171f84828560405180602001604052806000815250612f0b565b949350505050565b60008033905061160287828888888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a925061297a915050565b61022b5460009080820361178a57505061022a54919050565b600061022b61179a600184616403565b815481106117aa576117aa616416565b60009182526020918290206040805180820190915291015463ffffffff8116808352600160201b9091046001600160e01b0316928201929092529150841061180057602001516001600160e01b03169392505050565b61181561180c856133d7565b61022b90613440565b6001600160e01b0316949350505050565b61182e610e45565b6001600160a01b0316336001600160a01b03161461185e5760405162461bcd60e51b8152600401610432906162a8565b30611867610e45565b6001600160a01b0316146118a55760008036604051611887929190616298565b604051809103902090505b8061189e610131612989565b0361189257505b611114816134f3565b6000803390506118f686828787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612f0b92505050565b9695505050505050565b600061190a613536565b60005b85518110156119835761028e600087838151811061192d5761192d616416565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff1661197157604051630b094f2760e31b815260040160405180910390fd5b8061197b8161642c565b91505061190d565b506111e3858585856135e1565b600054610100900460ff16158080156119b05750600054600160ff909116105b806119ca5750303b1580156119ca575060005460ff166001145b611a2d5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610432565b6000805460ff191660011790558015611a50576000805461ff0019166101001790555b334114611a705760405163022d8c9560e31b815260040160405180910390fd5b3a15611a8f576040516383f1b1d360e01b815260040160405180910390fd5b611abb6040518060400160405280600b81526020016a2129a1a3b7bb32b93737b960a91b815250613649565b611ae5611aca6003603c61645b565b611ad66003607861645b565b68056bc75e2d631000006136a0565b611aed6136d7565b611af86120056136fe565b611b0361200661372e565b611b0d600a61375e565b611b21611b1c6003603c61645b565b61378e565b61100760005261028e6020527f4cdb1a6c4b56f62f27f7202d75e865c2405f138cb32ec45019c0f2ca8f91e472805460ff1916600117905561028f805475df87f0e2b8519ea2dd4abd8b639cdd628497ed25000062010000600160b01b03199091161790558015611114576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b61028f546201000090046001600160a01b03163314611c0057604051631431806f60e11b815260040160405180910390fd5b61028f805461ff0019166101001790556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e75290600090a1565b6000606080600080600060606065546000801b148015611c5b5750606654155b611c9f5760405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b6044820152606401610432565b611ca76137be565b611caf6137cd565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b6101c554604080516324776b7d60e21b815290516000926001600160a01b0316916391ddadf49160048083019260209291908290030181865afa925050508015611d40575060408051601f3d908101601f19168201909252611d3d9181019061647d565b60015b6116f957610e5a436137dc565b6000611d5a848484613843565b90505b9392505050565b61022b5460009015611d8957611d7b61022b6138ba565b6001600160e01b0316905090565b5061022a5490565b611d99610e45565b6001600160a01b0316336001600160a01b031614611dc95760405162461bcd60e51b8152600401610432906162a8565b30611dd2610e45565b6001600160a01b031614611e105760008036604051611df2929190616298565b604051809103902090505b80611e09610131612989565b03611dfd57505b611114816138ea565b6101f85460008281526101f9602052604080822054905163d45c443560e01b81526004810191909152909182916001600160a01b039091169063d45c443590602401602060405180830381865afa158015611e78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e9c91906164a5565b905080600114611eac5780611d5d565b60009392505050565b3361100714611edb57604051630f22c43960e41b81526110076004820152602401610432565b611f416040518060400160405280600b81526020016a766f74696e6744656c617960a81b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506139559050565b15611fea5760208114611f6f5783838383604051630a5a604160e01b815260040161043294939291906164e7565b604080516020601f8401819004810282018101909252828152600091611fb09185858083850183828082843760009201919091525092939250506139ae9050565b905080600003611fdb5784848484604051630a5a604160e01b815260040161043294939291906164e7565b611fe4816134f3565b50612451565b6120516040518060400160405280600c81526020016b1d9bdd1a5b99d4195c9a5bd960a21b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506139559050565b156120f4576020811461207f5783838383604051630a5a604160e01b815260040161043294939291906164e7565b604080516020601f84018190048102820181019092528281526000916120c09185858083850183828082843760009201919091525092939250506139ae9050565b9050806000036120eb5784848484604051630a5a604160e01b815260040161043294939291906164e7565b611fe4816139b3565b612160604051806040016040528060118152602001701c1c9bdc1bdcd85b151a1c995cda1bdb19607a1b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506139559050565b15612203576020811461218e5783838383604051630a5a604160e01b815260040161043294939291906164e7565b604080516020601f84018190048102820181019092528281526000916121cf9185858083850183828082843760009201919091525092939250506139ae9050565b9050806000036121fa5784848484604051630a5a604160e01b815260040161043294939291906164e7565b611fe481613a56565b61226d6040518060400160405280600f81526020016e38bab7b93ab6a73ab6b2b930ba37b960891b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506139559050565b15612310576020811461229b5783838383604051630a5a604160e01b815260040161043294939291906164e7565b604080516020601f84018190048102820181019092528281526000916122dc9185858083850183828082843760009201919091525092939250506139ae9050565b9050806000036123075784848484604051630a5a604160e01b815260040161043294939291906164e7565b611fe481612a08565b61237f604051806040016040528060148152602001736d696e506572696f64416674657251756f72756d60601b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506139559050565b1561243057600881146123ad5783838383604051630a5a604160e01b815260040161043294939291906164e7565b60006123f3600884848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506139ae9050565b9050806001600160401b03166000036124275784848484604051630a5a604160e01b815260040161043294939291906164e7565b611fe481613a99565b838383836040516325ee20d560e21b815260040161043294939291906164e7565b7ff1ce9b2cbf50eeb05769a29e2543fd350cab46894a7dd9978a12d534bb20e6338484848460405161248694939291906164e7565b60405180910390a150505050565b6000610e5a6101635490565b6000610f2582613b05565b6124b3610e45565b6001600160a01b0316336001600160a01b0316146124e35760405162461bcd60e51b8152600401610432906162a8565b306124ec610e45565b6001600160a01b03161461252a576000803660405161250c929190616298565b604051809103902090505b80612523610131612989565b0361251757505b600080856001600160a01b0316858585604051612548929190616298565b60006040518083038185875af1925050503d8060008114612585576040519150601f19603f3d011682016040523d82523d6000602084013e61258a565b606091505b50915091506125b2828260405180606001604052806028815260200161695060289139613b43565b50505050505050565b6000848484846040516020016125d4949392919061650e565b60408051601f19818403018152919052805160209091012095945050505050565b6125fd610e45565b6001600160a01b0316336001600160a01b03161461262d5760405162461bcd60e51b8152600401610432906162a8565b30612636610e45565b6001600160a01b0316146126745760008036604051612656929190616298565b604051809103902090505b8061266d610131612989565b0361266157505b61111481613a99565b600082518451146126e15760405162461bcd60e51b815260206004820152602860248201527f476f7665726e6f72427261766f3a20696e76616c6964207369676e61747572656044820152670e640d8cadccee8d60c31b6064820152608401610432565b6126ef338787878787613b5c565b6118f686866126fe8787613c1a565b85611900565b6000806000806127138561307b565b935093509350935061163b848484846111aa565b61272f610e45565b6001600160a01b0316336001600160a01b03161461275f5760405162461bcd60e51b8152600401610432906162a8565b30612768610e45565b6001600160a01b0316146127a65760008036604051612788929190616298565b604051809103902090505b8061279f610131612989565b0361279357505b611114816139b3565b6000611d5d83836127cb60408051602081019091526000815290565b613843565b6127d8610e45565b6001600160a01b0316336001600160a01b0316146128085760405162461bcd60e51b8152600401610432906162a8565b30612811610e45565b6001600160a01b03161461284f5760008036604051612831929190616298565b604051809103902090505b80612848610131612989565b0361283c57505b61111481613a56565b6000606461286583611771565b6101c554604051632394e7a360e21b8152600481018690526001600160a01b0390911690638e539e8c90602401602060405180830381865afa1580156128af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128d391906164a5565b6128dd9190616559565b610f25919061645b565b6000806000806128f68561307b565b935093509350935061163b84848484611212565b60006001600160e01b03198216636e665ced60e01b1480610f255750610f2582613d4c565b6000610f2561293c613de8565b8360405161190160f01b8152600281019290925260228201526042902090565b600080600061296d87878787613df2565b915091506112fb81613eb6565b60006118f68686868686614000565b60006129a48254600f81810b600160801b909204900b131590565b156129c257604051631ed9509560e11b815260040160405180910390fd5b508054600f0b6000818152600180840160205260408220805492905583546fffffffffffffffffffffffffffffffff191692016001600160801b03169190911790915590565b6064811115612a8b5760405162461bcd60e51b815260206004820152604360248201527f476f7665726e6f72566f74657351756f72756d4672616374696f6e3a2071756f60448201527f72756d4e756d657261746f72206f7665722071756f72756d44656e6f6d696e616064820152623a37b960e91b608482015260a401610432565b6000612a95611d64565b90508015801590612aa7575061022b54155b15612b0c57604080518082019091526000815261022b9060208101612acb84614103565b6001600160e01b039081169091528254600181018455600093845260209384902083519490930151909116600160201b0263ffffffff909316929092179101555b612b3a612b27612b1a611cd9565b65ffffffffffff166133d7565b612b3084614103565b61022b919061416c565b505060408051828152602081018490527f0553476bf02ef2726e8ce5ced78d63e26e602e4a2257b1f559418e24b4633997910160405180910390a15050565b600080612b88868686866125bb565b90506004612b958261160d565b6007811115612ba657612ba6615d18565b14612bc35760405162461bcd60e51b815260040161043290616355565b6101f8546040805163793d064960e11b815290516000926001600160a01b03169163f27a0c929160048083019260209291908290030181865afa158015612c0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c3291906164a5565b6101f85460405163b1c5f42760e01b81529192506001600160a01b03169063b1c5f42790612c6d908a908a908a906000908b90600401616570565b602060405180830381865afa158015612c8a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cae91906164a5565b60008381526101f96020526040808220929092556101f85491516308f2a0bb60e41b81526001600160a01b0390921691638f2a0bb091612cfb918b918b918b91908b9089906004016165be565b600060405180830381600087803b158015612d1557600080fd5b505af1158015612d29573d6000803e3d6000fd5b505050507f9a2e42fd6722813d69113e7d0079d3d940171428df7373df9c7f7617cfda2892828242612d5b9190616616565b604080519283526020830191909152015b60405180910390a15095945050505050565b30612d87610e45565b6001600160a01b031614612e185760005b845181101561163b57306001600160a01b0316858281518110612dbd57612dbd616416565b60200260200101516001600160a01b031603612e0857612e08838281518110612de857612de8616416565b60200260200101518051906020012061013161418790919063ffffffff16565b612e118161642c565b9050612d98565b5050505050565b61028f54610100900460ff1615612e495760405163e96776bf60e01b815260040160405180910390fd5b60005b8451811015612ec25761028e6000868381518110612e6c57612e6c616416565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16612eb057604051630b094f2760e31b815260040160405180910390fd5b80612eba8161642c565b915050612e4c565b50612e1885858585856141c3565b30612ed9610e45565b6001600160a01b031614612e185761013154600f81810b600160801b909204900b1315612e1857600061013155612e18565b60006111e385858585612f2960408051602081019091526000815290565b61297a565b600080612f3a83614238565b90506004816007811115612f5057612f50615d18565b14612f5b5792915050565b60008381526101f9602052604090205480612f77575092915050565b6101f854604051632ab0f52960e01b8152600481018390526001600160a01b0390911690632ab0f52990602401602060405180830381865afa158015612fc1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fe59190616629565b15612ff4575060079392505050565b6101f854604051632c258a9f60e11b8152600481018390526001600160a01b039091169063584b153e90602401602060405180830381865afa15801561303e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130629190616629565b15613071575060059392505050565b5060029392505050565b606080606060008061019360008781526020019081526020016000209050806001018160020161324d83600301805480602002602001604051908101604052809291908181526020016000905b828210156131745783829060005260206000200180546130e7906162df565b80601f0160208091040260200160405190810160405280929190818152602001828054613113906162df565b80156131605780601f1061313557610100808354040283529160200191613160565b820191906000526020600020905b81548152906001019060200180831161314357829003601f168201915b5050505050815260200190600101906130c8565b50505060048601805460408051602080840282018101909252828152935060009084015b828210156132445783829060005260206000200180546131b7906162df565b80601f01602080910402602001604051908101604052809291908181526020018280546131e3906162df565b80156132305780601f1061320557610100808354040283529160200191613230565b820191906000526020600020905b81548152906001019060200180831161321357829003601f168201915b505050505081526020019060010190613198565b50505050613c1a565b60098401548354604080516020808402820181019092528281529186918301828280156132a357602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311613285575b50505050509350828054806020026020016040519081016040528092919081815260200182805480156132f557602002820191906000526020600020905b8154815260200190600101908083116132e1575b505050505092509450945094509450509193509193565b60008061331b868686866125bb565b600081815261019360205260409020549091506001600160a01b03163381148061336f5750613348612494565b61336d826001613356611cd9565b613360919061632f565b65ffffffffffff166127af565b105b6133cb5760405162461bcd60e51b815260206004820152602760248201527f476f7665726e6f72427261766f3a2070726f706f7365722061626f76652074686044820152661c995cda1bdb1960ca1b6064820152608401610432565b61160287878787614370565b600063ffffffff82111561343c5760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201526532206269747360d01b6064820152608401610432565b5090565b81546000908181600581111561349d57600061345b8461437e565b6134659085616403565b60008881526020902090915081015463ffffffff908116908716101561348d5780915061349b565b613498816001616616565b92505b505b60006134ab87878585614466565b905080156134e6576134d0876134c2600184616403565b600091825260209091200190565b54600160201b90046001600160e01b0316611602565b6000979650505050505050565b6101615460408051918252602082018390527fc565b045403dc03c2eea82b81a0465edad9e2e7fc4d97e11421c209da93d7a93910160405180910390a161016155565b61028f5460ff166135df576a084595161401484a0000006120056001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561358d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135b191906164a5565b10156135d0576040516311b6707f60e01b815260040160405180910390fd5b61028f805460ff191660011790555b565b600061363d33868686516001600160401b038111156136025761360261576d565b60405190808252806020026020018201604052801561363557816020015b60608152602001906001900390816136205790505b508787613b5c565b6111e3858585856144bc565b600054610100900460ff166136705760405162461bcd60e51b81526004016104329061664b565b613697816136926040805180820190915260018152603160f81b602082015290565b61489b565b611114816148ea565b600054610100900460ff166136c75760405162461bcd60e51b81526004016104329061664b565b6136d2838383614922565b505050565b600054610100900460ff166135df5760405162461bcd60e51b81526004016104329061664b565b600054610100900460ff166137255760405162461bcd60e51b81526004016104329061664b565b61111481614964565b600054610100900460ff166137555760405162461bcd60e51b81526004016104329061664b565b611114816149ae565b600054610100900460ff166137855760405162461bcd60e51b81526004016104329061664b565b611114816149d5565b600054610100900460ff166137b55760405162461bcd60e51b81526004016104329061664b565b611114816149fc565b606060678054611127906162df565b606060688054611127906162df565b600065ffffffffffff82111561343c5760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203460448201526538206269747360d01b6064820152608401610432565b6101c554604051630748d63560e31b81526001600160a01b038581166004830152602482018590526000921690633a46b1a890604401602060405180830381865afa158015613896573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d5a91906164a5565b80546000908015611eac576138d4836134c2600184616403565b54600160201b90046001600160e01b0316611d5d565b6101f854604080516001600160a01b03928316815291831660208301527f08f74ea46ef7894f65eabfb5e6e695de773a000b47c529ab559178069b226401910160405180910390a16101f880546001600160a01b0319166001600160a01b0392909216919091179055565b6000816040516020016139689190616696565b604051602081830303815290604052805190602001208360405160200161398f9190616696565b6040516020818303038152906040528051906020012014905092915050565b015190565b60008111613a135760405162461bcd60e51b815260206004820152602760248201527f476f7665726e6f7253657474696e67733a20766f74696e6720706572696f6420604482015266746f6f206c6f7760c81b6064820152608401610432565b6101625460408051918252602082018390527f7e3f7f0708a84de9203036abaa450dccc85ad5ff52f78c170f3edb55cf5e8828910160405180910390a161016255565b6101635460408051918252602082018390527fccb45da8d5717e6c4544694297c4ba5cf151d455c9bb0ed4fc7a38411bc05461910160405180910390a161016355565b61025c54604080516001600160401b03928316815291831660208301527f7ca4ac117ed3cdce75c1161d8207c440389b1a15d69d096831664657c07dafc2910160405180910390a161025c805467ffffffffffffffff19166001600160401b0392909216919091179055565b60008181526101306020526040812060010154610f25906001600160401b0316600084815261025d60205260409020546001600160401b0316614a23565b60608315613b52575081611d5d565b611d5d8383614a39565b805160208201206000613b7a8787613b748888613c1a565b856125bb565b600081815261019360205260409020600981015491925090613c0f5780546001600160a01b0319166001600160a01b038a161781558751613bc490600183019060208b0190615508565b508651613bda90600283019060208a0190615569565b508551613bf090600383019060208901906155a4565b508451613c0690600483019060208801906155f6565b50600981018390555b505050505050505050565b6060600082516001600160401b03811115613c3757613c3761576d565b604051908082528060200260200182016040528015613c6a57816020015b6060815260200190600190039081613c555790505b50905060005b8151811015613d4457848181518110613c8b57613c8b616416565b602002602001015151600014613cfb57848181518110613cad57613cad616416565b602002602001015180519060200120848281518110613cce57613cce616416565b6020026020010151604051602001613ce79291906166b2565b604051602081830303815290604052613d16565b838181518110613d0d57613d0d616416565b60200260200101515b828281518110613d2857613d28616416565b602002602001018190525080613d3d9061642c565b9050613c70565b509392505050565b600063288ace0360e11b6318df743f60e31b63bf26d89760e01b6379dd796f60e01b6001600160e01b03198616821480613d9257506001600160e01b0319868116908216145b80613da957506001600160e01b0319868116908516145b80613dc457506001600160e01b03198616630271189760e51b145b806118f657506301ffc9a760e01b6001600160e01b03198716149695505050505050565b6000610e5a614a63565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115613e295750600090506003613ead565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015613e7d573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116613ea657600060019250925050613ead565b9150600090505b94509492505050565b6000816004811115613eca57613eca615d18565b03613ed25750565b6001816004811115613ee657613ee6615d18565b03613f335760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610432565b6002816004811115613f4757613f47615d18565b03613f945760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610432565b6003816004811115613fa857613fa8615d18565b036111145760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610432565b6000806140108787878787614ad7565b600088815261025d60205260409020549091506001600160401b031615801561403d575061403d87614c2d565b156118f657600061405761025c546001600160401b031690565b61405f611cd9565b65ffffffffffff1661407191906166e3565b905061407c886124a0565b816001600160401b031611156140cb576040516001600160401b038216815288907f541f725fb9f7c98a30cc9c0ff32fbb14358cd7159c847a3aa20a2bdc442ba5119060200160405180910390a25b600088815261025d60205260409020805467ffffffffffffffff19166001600160401b03929092169190911790559695505050505050565b60006001600160e01b0382111561343c5760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20326044820152663234206269747360c81b6064820152608401610432565b60008061417a858585614c6d565b915091505b935093915050565b8154600160801b90819004600f0b6000818152600180860160205260409091209390935583546001600160801b03908116939091011602179055565b6101f85460405163e38335e560e01b81526001600160a01b039091169063e38335e59034906141ff908890889088906000908990600401616570565b6000604051808303818588803b15801561421857600080fd5b505af115801561422c573d6000803e3d6000fd5b50505050505050505050565b600081815261013060205260408120600281015460ff161561425d5750600792915050565b6002810154610100900460ff16156142785750600292915050565b600083815261013060205260408120546001600160401b0316908190036142e15760405162461bcd60e51b815260206004820152601d60248201527f476f7665726e6f723a20756e6b6e6f776e2070726f706f73616c2069640000006044820152606401610432565b60006142eb611cd9565b65ffffffffffff16905080821061430757506000949350505050565b6000614312866124a0565b90508181106143275750600195945050505050565b61433086614c2d565b801561435357506000868152610193602052604090206006810154600590910154115b156143645750600495945050505050565b50600395945050505050565b60006111e385858585614e0c565b60008160000361439057506000919050565b6000600161439d84614ec2565b901c6001901b905060018184816143b6576143b6616445565b048201901c905060018184816143ce576143ce616445565b048201901c905060018184816143e6576143e6616445565b048201901c905060018184816143fe576143fe616445565b048201901c9050600181848161441657614416616445565b048201901c9050600181848161442e5761442e616445565b048201901c9050600181848161444657614446616445565b048201901c9050611d5d8182858161446057614460616445565b04614f56565b60005b81831015613d4457600061447d8484614f65565b60008781526020902090915063ffffffff86169082015463ffffffff1611156144a8578092506144b6565b6144b3816001616616565b93505b50614469565b6000336144c98184614f80565b6145155760405162461bcd60e51b815260206004820152601d60248201527f476f7665726e6f723a2070726f706f73657220726573747269637465640000006044820152606401610432565b600061451f611cd9565b65ffffffffffff169050614531612494565b61454083610d8b600185616403565b10156145a85760405162461bcd60e51b815260206004820152603160248201527f476f7665726e6f723a2070726f706f73657220766f7465732062656c6f7720706044820152701c9bdc1bdcd85b081d1a1c995cda1bdb19607a1b6064820152608401610432565b60006145bd88888888805190602001206125bb565b905086518851146145e05760405162461bcd60e51b815260040161043290616703565b85518851146146015760405162461bcd60e51b815260040161043290616703565b60008851116146525760405162461bcd60e51b815260206004820152601860248201527f476f7665726e6f723a20656d7074792070726f706f73616c00000000000000006044820152606401610432565b600081815261013060205260409020546001600160401b0316156146c25760405162461bcd60e51b815260206004820152602160248201527f476f7665726e6f723a2070726f706f73616c20616c72656164792065786973746044820152607360f81b6064820152608401610432565b60006146ce6101615490565b6146d89084616616565b905060006146e66101625490565b6146f09083616616565b90506040518060e0016040528061470684615071565b6001600160401b031681526001600160a01b03871660208201526000604082015260600161473383615071565b6001600160401b03908116825260006020808401829052604080850183905260609485018390528883526101308252918290208551815492870151878501519186166001600160e01b031990941693909317600160401b6001600160a01b039094168402176001600160e01b0316600160e01b60e09290921c91909102178155938501516080860151908416921c0217600183015560a08301516002909201805460c09094015161ffff1990941692151561ff00191692909217610100931515939093029290921790558a517f7d84a6263ae0d98d3329bd7b46bb4e8d6f98cd35a7adb45c274c8b7fd5ebd5e091859188918e918e918111156148385761483861576d565b60405190808252806020026020018201604052801561486b57816020015b60608152602001906001900390816148565790505b508d88888f60405161488599989796959493929190616744565b60405180910390a1509098975050505050505050565b600054610100900460ff166148c25760405162461bcd60e51b81526004016104329061664b565b60676148ce8382616822565b5060686148db8282616822565b50506000606581905560665550565b600054610100900460ff166149115760405162461bcd60e51b81526004016104329061664b565b61012f61491e8282616822565b5050565b600054610100900460ff166149495760405162461bcd60e51b81526004016104329061664b565b614952836134f3565b61495b826139b3565b6136d281613a56565b600054610100900460ff1661498b5760405162461bcd60e51b81526004016104329061664b565b6101c580546001600160a01b0319166001600160a01b0392909216919091179055565b600054610100900460ff16611e105760405162461bcd60e51b81526004016104329061664b565b600054610100900460ff1661110b5760405162461bcd60e51b81526004016104329061664b565b600054610100900460ff166126745760405162461bcd60e51b81526004016104329061664b565b6000818311614a325781611d5d565b5090919050565b815115614a495781518083602001fd5b8060405162461bcd60e51b81526004016104329190615926565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f614a8e6150d9565b614a96615132565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b6000858152610130602052604081206001614af18861160d565b6007811115614b0257614b02615d18565b14614b5b5760405162461bcd60e51b815260206004820152602360248201527f476f7665726e6f723a20766f7465206e6f742063757272656e746c792061637460448201526269766560e81b6064820152608401610432565b8054600090614b759088906001600160401b031686613843565b9050614b848888888488615163565b8351600003614bd957866001600160a01b03167fb8e138887d0aa13bab447e82de9d5c1777041ecd21ca36ba824ff1e6c07ddda489888489604051614bcc94939291906168e1565b60405180910390a2611602565b866001600160a01b03167fe2babfbac5889a709b63bb7f598b324e08bc5a4fb9ec647fb3cbc9ec07eb87128988848989604051614c1a959493929190616909565b60405180910390a2979650505050505050565b6000818152610193602052604081206005810154614c64610e0c85600090815261013060205260409020546001600160401b031690565b11159392505050565b825460009081908015614db3576000614c8b876134c2600185616403565b60408051808201909152905463ffffffff808216808452600160201b9092046001600160e01b031660208401529192509087161015614d0c5760405162461bcd60e51b815260206004820152601b60248201527f436865636b706f696e743a2064656372656173696e67206b65797300000000006044820152606401610432565b805163ffffffff808816911603614d545784614d2d886134c2600186616403565b80546001600160e01b0392909216600160201b0263ffffffff909216919091179055614da3565b6040805180820190915263ffffffff80881682526001600160e01b0380881660208085019182528b54600181018d5560008d81529190912094519151909216600160201b029216919091179101555b60200151925083915061417f9050565b50506040805180820190915263ffffffff80851682526001600160e01b0380851660208085019182528854600181018a5560008a815291822095519251909316600160201b02919093161792019190915590508161417f565b600080614e1b86868686615301565b60008181526101f96020526040902054909150156111e3576101f85460008281526101f960205260409081902054905163c4d252f560e01b81526001600160a01b039092169163c4d252f591614e779160040190815260200190565b600060405180830381600087803b158015614e9157600080fd5b505af1158015614ea5573d6000803e3d6000fd5b50505060008281526101f960205260408120555095945050505050565b600080608083901c15614ed757608092831c92015b604083901c15614ee957604092831c92015b602083901c15614efb57602092831c92015b601083901c15614f0d57601092831c92015b600883901c15614f1f57600892831c92015b600483901c15614f3157600492831c92015b600283901c15614f4357600292831c92015b600183901c15610f255760010192915050565b6000818310614a325781611d5d565b6000614f74600284841861645b565b611d5d90848416616616565b80516000906034811015614f98576001915050610f25565b82810160131901516001600160a01b031981166b046e0e4dee0dee6cae47a60f60a31b14614fcb57600192505050610f25565b600080614fd9602885616403565b90505b8381101561505057600080615010888481518110614ffc57614ffc616416565b01602001516001600160f81b03191661540e565b91509150816150285760019650505050505050610f25565b8060ff166004856001600160a01b0316901b1793505050806150499061642c565b9050614fdc565b50856001600160a01b0316816001600160a01b031614935050505092915050565b60006001600160401b0382111561343c5760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203660448201526534206269747360d01b6064820152608401610432565b6000806150e46137be565b8051909150156150fb578051602090910120919050565b606554801561510a5792915050565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4709250505090565b60008061513d6137cd565b805190915015615154578051602090910120919050565b606654801561510a5792915050565b6000858152610193602090815260408083206001600160a01b038816845260088101909252909120805460ff16156151f35760405162461bcd60e51b815260206004820152602d60248201527f476f7665726e6f72436f6d7061746962696c697479427261766f3a20766f746560448201526c08185b1c9958591e4818d85cdd609a1b6064820152608401610432565b805460ff86166101000261ffff19909116176001178155615213846154a0565b81546001600160601b039190911662010000026dffffffffffffffffffffffff00001990911617815560ff851661526357838260060160008282546152589190616616565b909155506125b29050565b60001960ff86160161528357838260050160008282546152589190616616565b60011960ff8616016152a357838260070160008282546152589190616616565b60405162461bcd60e51b815260206004820152602d60248201527f476f7665726e6f72436f6d7061746962696c697479427261766f3a20696e766160448201526c6c696420766f7465207479706560981b6064820152608401610432565b600080615310868686866125bb565b9050600061531d8261160d565b9050600281600781111561533357615333615d18565b141580156153535750600681600781111561535057615350615d18565b14155b80156153715750600781600781111561536e5761536e615d18565b14155b6153bd5760405162461bcd60e51b815260206004820152601d60248201527f476f7665726e6f723a2070726f706f73616c206e6f74206163746976650000006044820152606401610432565b6000828152610130602052604090819020600201805461ff001916610100179055517f789cf55be980739dad1d0699b93b58e806b51c9d96619bfa8fe0a28abaa7b30c90612d6c9084815260200190565b60008060f883901c602f811180156154295750603a8160ff16105b1561543e57600194602f199091019350915050565b8060ff166040108015615454575060478160ff16105b15615469576001946036199091019350915050565b8060ff16606010801561547f575060678160ff16105b15615494576001946056199091019350915050565b50600093849350915050565b60006001600160601b0382111561343c5760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203960448201526536206269747360d01b6064820152608401610432565b82805482825590600052602060002090810192821561555d579160200282015b8281111561555d57825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190615528565b5061343c929150615648565b82805482825590600052602060002090810192821561555d579160200282015b8281111561555d578251825591602001919060010190615589565b8280548282559060005260206000209081019282156155ea579160200282015b828111156155ea57825182906155da9082616822565b50916020019190600101906155c4565b5061343c92915061565d565b82805482825590600052602060002090810192821561563c579160200282015b8281111561563c578251829061562c9082616822565b5091602001919060010190615616565b5061343c92915061567a565b5b8082111561343c5760008155600101615649565b8082111561343c5760006156718282615697565b5060010161565d565b8082111561343c57600061568e8282615697565b5060010161567a565b5080546156a3906162df565b6000825580601f106156b3575050565b601f0160209004906000526020600020908101906111149190615648565b6000602082840312156156e357600080fd5b5035919050565b6000602082840312156156fc57600080fd5b81356001600160e01b031981168114611d5d57600080fd5b803560ff811681146116f957600080fd5b60008083601f84011261573757600080fd5b5081356001600160401b0381111561574e57600080fd5b60208301915083602082850101111561576657600080fd5b9250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156157ab576157ab61576d565b604052919050565b60006001600160401b038211156157cc576157cc61576d565b50601f01601f191660200190565b600082601f8301126157eb57600080fd5b81356157fe6157f9826157b3565b615783565b81815284602083860101111561581357600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060008060008060e0898b03121561584c57600080fd5b8835975061585c60208a01615714565b965060408901356001600160401b038082111561587857600080fd5b6158848c838d01615725565b909850965060608b013591508082111561589d57600080fd5b506158aa8b828c016157da565b9450506158b960808a01615714565b925060a0890135915060c089013590509295985092959890939650565b60005b838110156158f15781810151838201526020016158d9565b50506000910152565b600081518084526159128160208601602086016158d6565b601f01601f19169290920160200192915050565b602081526000611d5d60208301846158fa565b6001600160a01b038116811461111457600080fd5b6000806000806080858703121561596457600080fd5b843561596f81615939565b9350602085013561597f81615939565b92506040850135915060608501356001600160401b038111156159a157600080fd5b6159ad878288016157da565b91505092959194509250565b60006001600160401b038211156159d2576159d261576d565b5060051b60200190565b600082601f8301126159ed57600080fd5b813560206159fd6157f9836159b9565b82815260059290921b84018101918181019086841115615a1c57600080fd5b8286015b84811015615a40578035615a3381615939565b8352918301918301615a20565b509695505050505050565b600082601f830112615a5c57600080fd5b81356020615a6c6157f9836159b9565b82815260059290921b84018101918181019086841115615a8b57600080fd5b8286015b84811015615a405780358352918301918301615a8f565b600082601f830112615ab757600080fd5b81356020615ac76157f9836159b9565b82815260059290921b84018101918181019086841115615ae657600080fd5b8286015b84811015615a405780356001600160401b03811115615b095760008081fd5b615b178986838b01016157da565b845250918301918301615aea565b60008060008060808587031215615b3b57600080fd5b84356001600160401b0380821115615b5257600080fd5b615b5e888389016159dc565b95506020870135915080821115615b7457600080fd5b615b8088838901615a4b565b94506040870135915080821115615b9657600080fd5b50615ba387828801615aa6565b949793965093946060013593505050565b600081518084526020808501945080840160005b83811015615bed5781516001600160a01b031687529582019590820190600101615bc8565b509495945050505050565b600081518084526020808501945080840160005b83811015615bed57815187529582019590820190600101615c0c565b600081518084526020808501808196508360051b8101915082860160005b85811015615c70578284038952615c5e8483516158fa565b98850198935090840190600101615c46565b5091979650505050505050565b608081526000615c906080830187615bb4565b8281036020840152615ca28187615bf8565b90508281036040840152615cb68186615c28565b905082810360608401526116028185615c28565b600080600080600060a08688031215615ce257600080fd5b85359450615cf260208701615714565b9350615d0060408701615714565b94979396509394606081013594506080013592915050565b634e487b7160e01b600052602160045260246000fd5b6020810160088310615d5057634e487b7160e01b600052602160045260246000fd5b91905290565b60008060408385031215615d6957600080fd5b823591506020830135615d7b81615939565b809150509250929050565b600060208284031215615d9857600080fd5b8135611d5d81615939565b60008060408385031215615db657600080fd5b82359150615dc660208401615714565b90509250929050565b600080600080600060808688031215615de757600080fd5b85359450615df760208701615714565b935060408601356001600160401b0380821115615e1357600080fd5b615e1f89838a01615725565b90955093506060880135915080821115615e3857600080fd5b50615e45888289016157da565b9150509295509295909350565b60008060008060608587031215615e6857600080fd5b84359350615e7860208601615714565b925060408501356001600160401b03811115615e9357600080fd5b615e9f87828801615725565b95989497509550505050565b60008060008060808587031215615ec157600080fd5b84356001600160401b0380821115615ed857600080fd5b615ee4888389016159dc565b95506020870135915080821115615efa57600080fd5b615f0688838901615a4b565b94506040870135915080821115615f1c57600080fd5b615f2888838901615aa6565b93506060870135915080821115615f3e57600080fd5b506159ad878288016157da565b60ff60f81b8816815260e060208201526000615f6a60e08301896158fa565b8281036040840152615f7c81896158fa565b606084018890526001600160a01b038716608085015260a0840186905283810360c085015290506110158185615bf8565b600080600060608486031215615fc257600080fd5b8335615fcd81615939565b92506020840135915060408401356001600160401b03811115615fef57600080fd5b615ffb868287016157da565b9150509250925092565b6000806000806040858703121561601b57600080fd5b84356001600160401b038082111561603257600080fd5b61603e88838901615725565b9096509450602087013591508082111561605757600080fd5b50615e9f87828801615725565b600080600080600060a0868803121561607c57600080fd5b853561608781615939565b9450602086013561609781615939565b935060408601356001600160401b03808211156160b357600080fd5b6160bf89838a01615a4b565b945060608801359150808211156160d557600080fd5b6160e189838a01615a4b565b93506080880135915080821115615e3857600080fd5b6000806000806060858703121561610d57600080fd5b843561611881615939565b93506020850135925060408501356001600160401b03811115615e9357600080fd5b60006020828403121561614c57600080fd5b81356001600160401b0381168114611d5d57600080fd5b600080600080600060a0868803121561617b57600080fd5b85356001600160401b038082111561619257600080fd5b61619e89838a016159dc565b965060208801359150808211156161b457600080fd5b6161c089838a01615a4b565b955060408801359150808211156161d657600080fd5b6161e289838a01615aa6565b945060608801359150808211156161f857600080fd5b6160e189838a01615aa6565b6000806040838503121561621757600080fd5b823561622281615939565b946020939093013593505050565b600080600080600060a0868803121561624857600080fd5b853561625381615939565b9450602086013561626381615939565b9350604086013592506060860135915060808601356001600160401b0381111561628c57600080fd5b615e45888289016157da565b8183823760009101908152919050565b60208082526018908201527f476f7665726e6f723a206f6e6c79476f7665726e616e63650000000000000000604082015260600190565b600181811c908216806162f357607f821691505b60208210810361631357634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b65ffffffffffff82811682821603908082111561634e5761634e616319565b5092915050565b60208082526021908201527f476f7665726e6f723a2070726f706f73616c206e6f74207375636365737366756040820152601b60fa1b606082015260800190565b6000602082840312156163a857600080fd5b81516001600160401b038111156163be57600080fd5b8201601f810184136163cf57600080fd5b80516163dd6157f9826157b3565b8181528560208385010111156163f257600080fd5b6111e38260208301602086016158d6565b81810381811115610f2557610f25616319565b634e487b7160e01b600052603260045260246000fd5b60006001820161643e5761643e616319565b5060010190565b634e487b7160e01b600052601260045260246000fd5b60008261647857634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561648f57600080fd5b815165ffffffffffff81168114611d5d57600080fd5b6000602082840312156164b757600080fd5b5051919050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6040815260006164fb6040830186886164be565b82810360208401526116028185876164be565b6080815260006165216080830187615bb4565b82810360208401526165338187615bf8565b905082810360408401526165478186615c28565b91505082606083015295945050505050565b8082028115828204841417610f2557610f25616319565b60a08152600061658360a0830188615bb4565b82810360208401526165958188615bf8565b905082810360408401526165a98187615c28565b60608401959095525050608001529392505050565b60c0815260006165d160c0830189615bb4565b82810360208401526165e38189615bf8565b905082810360408401526165f78188615c28565b60608401969096525050608081019290925260a0909101529392505050565b80820180821115610f2557610f25616319565b60006020828403121561663b57600080fd5b81518015158114611d5d57600080fd5b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b600082516166a88184602087016158d6565b9190910192915050565b6001600160e01b03198316815281516000906166d58160048501602087016158d6565b919091016004019392505050565b6001600160401b0381811683821601908082111561634e5761634e616319565b60208082526021908201527f476f7665726e6f723a20696e76616c69642070726f706f73616c206c656e67746040820152600d60fb1b606082015260800190565b8981526001600160a01b03891660208201526101206040820181905260009061676f8382018b615bb4565b90508281036060840152616783818a615bf8565b905082810360808401526167978189615c28565b905082810360a08401526167ab8188615c28565b90508560c08401528460e08401528281036101008401526167cc81856158fa565b9c9b505050505050505050505050565b601f8211156136d257600081815260208120601f850160051c810160208610156168035750805b601f850160051c820191505b8181101561163b5782815560010161680f565b81516001600160401b0381111561683b5761683b61576d565b61684f8161684984546162df565b846167dc565b602080601f831160018114616884576000841561686c5750858301515b600019600386901b1c1916600185901b17855561163b565b600085815260208120601f198616915b828110156168b357888601518255948401946001909101908401616894565b50858210156168d15787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b84815260ff841660208201528260408201526080606082015260006118f660808301846158fa565b85815260ff8516602082015283604082015260a06060820152600061693160a08301856158fa565b828103608084015261694381856158fa565b9897505050505050505056fe476f7665726e6f723a2072656c617920726576657274656420776974686f7574206d657373616765a164736f6c6343000811000a", }, { ContractAddr: common.HexToAddress(GovTokenContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/cfc0bd1127186a917ddc38fd38d22903034d3f0b", - Code: "608060405234801561001057600080fd5b50600436106101f05760003560e01c806370a082311161010f5780639ab24eb0116100a2578063d505accf11610071578063d505accf1461047e578063dd62ed3e14610491578063e5ed5b1e146104a4578063f1127ed8146104b757600080fd5b80639ab24eb014610432578063a457c2d714610445578063a9059cbb14610458578063c3cda5201461046b57600080fd5b806384b0196e116100de57806384b0196e146103dd5780638e539e8c146103f857806391ddadf41461040b57806395d89b411461042a57600080fd5b806370a082311461038657806379cc6790146103af5780637ecebe00146103c25780638129fc1c146103d557600080fd5b806339509351116101875780634bf5d7e9116101565780634bf5d7e9146102ff578063587cde1e146103075780635c19a95c1461034b5780636fcfff451461035e57600080fd5b806339509351146102b35780633a46b1a8146102c657806342966c68146102d957806344840775146102ec57600080fd5b806323b872dd116101c357806323b872dd146102745780633041949b14610287578063313ce5671461029c5780633644e515146102ab57600080fd5b8063039c91fc146101f557806306fdde0314610234578063095ea7b31461024957806318160ddd1461026c575b600080fd5b610221610203366004612099565b61013060209081526000928352604080842090915290825290205481565b6040519081526020015b60405180910390f35b61023c6104f4565b60405161022b9190612112565b61025c610257366004612125565b610586565b604051901515815260200161022b565b603554610221565b61025c61028236600461214f565b6105a0565b61029a610295366004612099565b6105c4565b005b6040516012815260200161022b565b6102216105fd565b61025c6102c1366004612125565b61060c565b6102216102d4366004612125565b61062e565b61029a6102e736600461218b565b6106b3565b61029a6102fa3660046121a4565b6106c0565b61023c610739565b610333610315366004612228565b6001600160a01b03908116600090815260fe60205260409020541690565b6040516001600160a01b03909116815260200161022b565b61029a610359366004612228565b6107d1565b61037161036c366004612228565b6107db565b60405163ffffffff909116815260200161022b565b610221610394366004612228565b6001600160a01b031660009081526033602052604090205490565b61029a6103bd366004612125565b6107fd565b6102216103d0366004612228565b610812565b61029a610830565b6103e5610a10565b60405161022b9796959493929190612243565b61022161040636600461218b565b610aae565b610413610b16565b60405165ffffffffffff909116815260200161022b565b61023c610b21565b610221610440366004612228565b610b30565b61025c610453366004612125565b610bb2565b61025c610466366004612125565b610c2d565b61029a6104793660046122ea565b610c3b565b61029a61048c366004612342565b610d71565b61022161049f366004612099565b610ed5565b61029a6104b2366004612099565b610f00565b6104ca6104c53660046123ac565b610f30565b60408051825163ffffffff1681526020928301516001600160e01b0316928101929092520161022b565b606060368054610503906123ec565b80601f016020809104026020016040519081016040528092919081815260200182805461052f906123ec565b801561057c5780601f106105515761010080835404028352916020019161057c565b820191906000526020600020905b81548152906001019060200180831161055f57829003601f168201915b5050505050905090565b600033610594818585610fb4565b60019150505b92915050565b6000336105ae858285610fcd565b6105b9858585611047565b506001949350505050565b33612002146105ef57604051630f22c43960e41b815261200260048201526024015b60405180910390fd5b6105f98282611060565b5050565b6000610607611190565b905090565b60003361059481858561061f8383610ed5565b6106299190612436565b610fb4565b6000610638610b16565b65ffffffffffff16821061068a5760405162461bcd60e51b815260206004820152601960248201527804552433230566f7465733a20667574757265206c6f6f6b757603c1b60448201526064016105e6565b6001600160a01b038316600090815260ff602052604090206106ac908361119a565b9392505050565b6106bd3382611283565b50565b33612002146106e657604051630f22c43960e41b815261200260048201526024016105e6565b8160005b818110156107325761072285858381811061070757610707612449565b905060200201602081019061071c9190612228565b84611060565b61072b8161245f565b90506106ea565b5050505050565b606043610744610b16565b65ffffffffffff16146107995760405162461bcd60e51b815260206004820152601d60248201527f4552433230566f7465733a2062726f6b656e20636c6f636b206d6f646500000060448201526064016105e6565b5060408051808201909152601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c74000000602082015290565b6106bd338261128d565b6001600160a01b038116600090815260ff602052604081205461059a90611307565b610808823383610fcd565b6105f98282611283565b6001600160a01b038116600090815260cb602052604081205461059a565b600054610100900460ff16158080156108505750600054600160ff909116105b8061086a5750303b15801561086a575060005460ff166001145b6108cd5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016105e6565b6000805460ff1916600117905580156108f0576000805461ff0019166101001790555b3341146109105760405163022d8c9560e31b815260040160405180910390fd5b3a1561092f576040516383f1b1d360e01b815260040160405180910390fd5b610983604051806040016040528060148152602001732129a19023b7bb32b93730b731b2902a37b5b2b760611b8152506040518060400160405280600681526020016533b7bb21272160d11b815250611370565b61098b6113a1565b6109c0604051806040016040528060148152602001732129a19023b7bb32b93730b731b2902a37b5b2b760611b8152506113ca565b6109c86113a1565b80156106bd576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b6000606080600080600060606097546000801b148015610a305750609854155b610a745760405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b60448201526064016105e6565b610a7c611414565b610a84611423565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b6000610ab8610b16565b65ffffffffffff168210610b0a5760405162461bcd60e51b815260206004820152601960248201527804552433230566f7465733a20667574757265206c6f6f6b757603c1b60448201526064016105e6565b61059a6101008361119a565b600061060743611432565b606060378054610503906123ec565b6001600160a01b038116600090815260ff60205260408120548015610b9f576001600160a01b038316600090815260ff6020526040902080546000198301908110610b7d57610b7d612449565b60009182526020909120015464010000000090046001600160e01b0316610ba2565b60005b6001600160e01b03169392505050565b60003381610bc08286610ed5565b905083811015610c205760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016105e6565b6105b98286868403610fb4565b600033610594818585611047565b83421115610c8b5760405162461bcd60e51b815260206004820152601d60248201527f4552433230566f7465733a207369676e6174757265206578706972656400000060448201526064016105e6565b604080517fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60208201526001600160a01b038816918101919091526060810186905260808101859052600090610d0590610cfd9060a00160405160208183030381529060405280519060200120611499565b8585856114c6565b9050610d10816114ee565b8614610d5e5760405162461bcd60e51b815260206004820152601960248201527f4552433230566f7465733a20696e76616c6964206e6f6e63650000000000000060448201526064016105e6565b610d68818861128d565b50505050505050565b83421115610dc15760405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e6500000060448201526064016105e6565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9888888610df08c6114ee565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090506000610e4b82611499565b90506000610e5b828787876114c6565b9050896001600160a01b0316816001600160a01b031614610ebe5760405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e6174757265000060448201526064016105e6565b610ec98a8a8a610fb4565b50505050505050505050565b6001600160a01b03918216600090815260346020908152604080832093909416825291909152205490565b3361200214610f2657604051630f22c43960e41b815261200260048201526024016105e6565b6105f9828261128d565b60408051808201909152600080825260208201526001600160a01b038316600090815260ff60205260409020805463ffffffff8416908110610f7457610f74612449565b60009182526020918290206040805180820190915291015463ffffffff8116825264010000000090046001600160e01b0316918101919091529392505050565b604051632028747160e01b815260040160405180910390fd5b6000610fd98484610ed5565b9050600019811461104157818110156110345760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016105e6565b6110418484848403610fb4565b50505050565b604051638cd22d1960e01b815260040160405180910390fd5b604051630913db4760e01b81526001600160a01b03828116600483015260009190841690630913db4790602401602060405180830381865afa1580156110aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110ce919061248e565b6001600160a01b03808516600090815261013060209081526040808320938716835292905220549091508181101561114757600061110c82846124a7565b6001600160a01b0380871660009081526101306020908152604080832093891683529290522084905590506111418482611516565b50611041565b8181111561104157600061115b83836124a7565b6001600160a01b0380871660009081526101306020908152604080832093891683529290522084905590506107328482611283565b6000610607611520565b8154600090818160058111156111f45760006111b584611594565b6111bf90856124a7565b600088815260209020909150869082015463ffffffff1611156111e4578091506111f2565b6111ef816001612436565b92505b505b80821015611241576000611208838361167c565b600088815260209020909150869082015463ffffffff16111561122d5780915061123b565b611238816001612436565b92505b506111f4565b801561126d576000868152602090208101600019015464010000000090046001600160e01b0316611270565b60005b6001600160e01b03169695505050505050565b6105f98282611697565b6001600160a01b03828116600081815260fe6020818152604080842080546033845282862054949093528787166001600160a01b03198416811790915590519190951694919391928592917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a46110418284836116b0565b600063ffffffff82111561136c5760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201526532206269747360d01b60648201526084016105e6565b5090565b600054610100900460ff166113975760405162461bcd60e51b81526004016105e6906124ba565b6105f982826117ee565b600054610100900460ff166113c85760405162461bcd60e51b81526004016105e6906124ba565b565b600054610100900460ff166113f15760405162461bcd60e51b81526004016105e6906124ba565b6106bd81604051806040016040528060018152602001603160f81b81525061182e565b606060998054610503906123ec565b6060609a8054610503906123ec565b600065ffffffffffff82111561136c5760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203460448201526538206269747360d01b60648201526084016105e6565b600061059a6114a6611190565b8360405161190160f01b8152600281019290925260228201526042902090565b60008060006114d78787878761187d565b915091506114e481611941565b5095945050505050565b6001600160a01b038116600090815260cb602052604090208054600181018255905b50919050565b6105f98282611a8b565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f61154b611b16565b611553611b6f565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b6000816000036115a657506000919050565b600060016115b384611ba0565b901c6001901b905060018184816115cc576115cc612505565b048201901c905060018184816115e4576115e4612505565b048201901c905060018184816115fc576115fc612505565b048201901c9050600181848161161457611614612505565b048201901c9050600181848161162c5761162c612505565b048201901c9050600181848161164457611644612505565b048201901c9050600181848161165c5761165c612505565b048201901c90506106ac8182858161167657611676612505565b04611c34565b600061168b600284841861251b565b6106ac90848416612436565b6116a18282611c4a565b611041610100611d8583611d91565b816001600160a01b0316836001600160a01b0316141580156116d25750600081115b156117e9576001600160a01b03831615611760576001600160a01b038316600090815260ff60205260408120819061170d90611d8585611d91565b91509150846001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248383604051611755929190918252602082015260400190565b60405180910390a250505b6001600160a01b038216156117e9576001600160a01b038216600090815260ff60205260408120819061179690611f0685611d91565b91509150836001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72483836040516117de929190918252602082015260400190565b60405180910390a250505b505050565b600054610100900460ff166118155760405162461bcd60e51b81526004016105e6906124ba565b6036611821838261258b565b5060376117e9828261258b565b600054610100900460ff166118555760405162461bcd60e51b81526004016105e6906124ba565b6099611861838261258b565b50609a61186e828261258b565b50506000609781905560985550565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156118b45750600090506003611938565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611908573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661193157600060019250925050611938565b9150600090505b94509492505050565b60008160048111156119555761195561264b565b0361195d5750565b60018160048111156119715761197161264b565b036119be5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016105e6565b60028160048111156119d2576119d261264b565b03611a1f5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016105e6565b6003816004811115611a3357611a3361264b565b036106bd5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016105e6565b611a958282611f12565b6035546001600160e01b031015611b075760405162461bcd60e51b815260206004820152603060248201527f4552433230566f7465733a20746f74616c20737570706c79207269736b73206f60448201526f766572666c6f77696e6720766f74657360801b60648201526084016105e6565b611041610100611f0683611d91565b600080611b21611414565b805190915015611b38578051602090910120919050565b6097548015611b475792915050565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4709250505090565b600080611b7a611423565b805190915015611b91578051602090910120919050565b6098548015611b475792915050565b600080608083901c15611bb557608092831c92015b604083901c15611bc757604092831c92015b602083901c15611bd957602092831c92015b601083901c15611beb57601092831c92015b600883901c15611bfd57600892831c92015b600483901c15611c0f57600492831c92015b600283901c15611c2157600292831c92015b600183901c1561059a5760010192915050565b6000818310611c4357816106ac565b5090919050565b6001600160a01b038216611caa5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016105e6565b6001600160a01b03821660009081526033602052604090205481811015611d1e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016105e6565b6001600160a01b03831660008181526033602090815260408083208686039055603580548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36117e983600084611fd7565b60006106ac82846124a7565b82546000908190818115611dde5760008781526020902082016000190160408051808201909152905463ffffffff8116825264010000000090046001600160e01b03166020820152611df3565b60408051808201909152600080825260208201525b905080602001516001600160e01b03169350611e1384868863ffffffff16565b9250600082118015611e3d5750611e28610b16565b65ffffffffffff16816000015163ffffffff16145b15611e8257611e4b83611fe2565b60008881526020902083016000190180546001600160e01b03929092166401000000000263ffffffff909216919091179055611efc565b866040518060400160405280611ea6611e99610b16565b65ffffffffffff16611307565b63ffffffff168152602001611eba86611fe2565b6001600160e01b0390811690915282546001810184556000938452602093849020835194909301519091166401000000000263ffffffff909316929092179101555b5050935093915050565b60006106ac8284612436565b6001600160a01b038216611f685760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016105e6565b8060356000828254611f7a9190612436565b90915550506001600160a01b0382166000818152603360209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36105f9600083835b6117e983838361204b565b60006001600160e01b0382111561136c5760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20326044820152663234206269747360c81b60648201526084016105e6565b6001600160a01b03838116600090815260fe60205260408082205485841683529120546117e9929182169116836116b0565b80356001600160a01b038116811461209457600080fd5b919050565b600080604083850312156120ac57600080fd5b6120b58361207d565b91506120c36020840161207d565b90509250929050565b6000815180845260005b818110156120f2576020818501810151868301820152016120d6565b506000602082860101526020601f19601f83011685010191505092915050565b6020815260006106ac60208301846120cc565b6000806040838503121561213857600080fd5b6121418361207d565b946020939093013593505050565b60008060006060848603121561216457600080fd5b61216d8461207d565b925061217b6020850161207d565b9150604084013590509250925092565b60006020828403121561219d57600080fd5b5035919050565b6000806000604084860312156121b957600080fd5b833567ffffffffffffffff808211156121d157600080fd5b818601915086601f8301126121e557600080fd5b8135818111156121f457600080fd5b8760208260051b850101111561220957600080fd5b60209283019550935061221f918601905061207d565b90509250925092565b60006020828403121561223a57600080fd5b6106ac8261207d565b60ff60f81b881681526000602060e08184015261226360e084018a6120cc565b8381036040850152612275818a6120cc565b606085018990526001600160a01b038816608086015260a0850187905284810360c0860152855180825283870192509083019060005b818110156122c7578351835292840192918401916001016122ab565b50909c9b505050505050505050505050565b803560ff8116811461209457600080fd5b60008060008060008060c0878903121561230357600080fd5b61230c8761207d565b95506020870135945060408701359350612328606088016122d9565b92506080870135915060a087013590509295509295509295565b600080600080600080600060e0888a03121561235d57600080fd5b6123668861207d565b96506123746020890161207d565b95506040880135945060608801359350612390608089016122d9565b925060a0880135915060c0880135905092959891949750929550565b600080604083850312156123bf57600080fd5b6123c88361207d565b9150602083013563ffffffff811681146123e157600080fd5b809150509250929050565b600181811c9082168061240057607f821691505b60208210810361151057634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b8082018082111561059a5761059a612420565b634e487b7160e01b600052603260045260246000fd5b60006001820161247157612471612420565b5060010190565b634e487b7160e01b600052604160045260246000fd5b6000602082840312156124a057600080fd5b5051919050565b8181038181111561059a5761059a612420565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b634e487b7160e01b600052601260045260246000fd5b60008261253857634e487b7160e01b600052601260045260246000fd5b500490565b601f8211156117e957600081815260208120601f850160051c810160208610156125645750805b601f850160051c820191505b8181101561258357828155600101612570565b505050505050565b815167ffffffffffffffff8111156125a5576125a5612478565b6125b9816125b384546123ec565b8461253d565b602080601f8311600181146125ee57600084156125d65750858301515b600019600386901b1c1916600185901b178555612583565b600085815260208120601f198616915b8281101561261d578886015182559484019460019091019084016125fe565b508582101561263b5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052602160045260246000fdfea164736f6c6343000811000a", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/1abdfbf3aeb86909c2220b79bf92b87ddff64b54", + Code: "608060405234801561001057600080fd5b50600436106102065760003560e01c806370a082311161011a5780639ab24eb0116100ad578063d505accf1161007c578063d505accf146104a2578063dd62ed3e146104b5578063e5ed5b1e146104c8578063f1127ed8146104db578063f1fad1041461051857600080fd5b80639ab24eb014610456578063a457c2d714610469578063a9059cbb1461047c578063c3cda5201461048f57600080fd5b806384b0196e116100e957806384b0196e146104015780638e539e8c1461041c57806391ddadf41461042f57806395d89b411461044e57600080fd5b806370a08231146103aa57806379cc6790146103d35780637ecebe00146103e65780638129fc1c146103f957600080fd5b8063395093511161019d5780634bf5d7e91161016c5780634bf5d7e91461031b5780634bf6c88214610323578063587cde1e1461032b5780635c19a95c1461036f5780636fcfff451461038257600080fd5b806339509351146102cf5780633a46b1a8146102e257806342966c68146102f5578063448407751461030857600080fd5b806323b872dd116101d957806323b872dd1461028a5780633041949b1461029d578063313ce567146102b25780633644e515146102c757600080fd5b8063039c91fc1461020b57806306fdde031461024a578063095ea7b31461025f57806318160ddd14610282575b600080fd5b6102376102193660046120c5565b61013060209081526000928352604080842090915290825290205481565b6040519081526020015b60405180910390f35b610252610520565b604051610241919061213e565b61027261026d366004612151565b6105b2565b6040519015158152602001610241565b603554610237565b61027261029836600461217b565b6105cc565b6102b06102ab3660046120c5565b6105f0565b005b60125b60405160ff9091168152602001610241565b610237610629565b6102726102dd366004612151565b610638565b6102376102f0366004612151565b61065a565b6102b06103033660046121b7565b6106df565b6102b06103163660046121d0565b6106ec565b610252610765565b6102b5600881565b610357610339366004612254565b6001600160a01b03908116600090815260fe60205260409020541690565b6040516001600160a01b039091168152602001610241565b6102b061037d366004612254565b6107fd565b610395610390366004612254565b610807565b60405163ffffffff9091168152602001610241565b6102376103b8366004612254565b6001600160a01b031660009081526033602052604090205490565b6102b06103e1366004612151565b610829565b6102376103f4366004612254565b61083e565b6102b061085c565b610409610a3c565b604051610241979695949392919061226f565b61023761042a3660046121b7565b610ada565b610437610b42565b60405165ffffffffffff9091168152602001610241565b610252610b4d565b610237610464366004612254565b610b5c565b610272610477366004612151565b610bde565b61027261048a366004612151565b610c59565b6102b061049d366004612316565b610c67565b6102b06104b036600461236e565b610d9d565b6102376104c33660046120c5565b610f01565b6102b06104d63660046120c5565b610f2c565b6104ee6104e93660046123d8565b610f5c565b60408051825163ffffffff1681526020928301516001600160e01b03169281019290925201610241565b6102b5601181565b60606036805461052f90612418565b80601f016020809104026020016040519081016040528092919081815260200182805461055b90612418565b80156105a85780601f1061057d576101008083540402835291602001916105a8565b820191906000526020600020905b81548152906001019060200180831161058b57829003601f168201915b5050505050905090565b6000336105c0818585610fe0565b60019150505b92915050565b6000336105da858285610ff9565b6105e5858585611073565b506001949350505050565b336120021461061b57604051630f22c43960e41b815261200260048201526024015b60405180910390fd5b610625828261108c565b5050565b60006106336111bc565b905090565b6000336105c081858561064b8383610f01565b6106559190612462565b610fe0565b6000610664610b42565b65ffffffffffff1682106106b65760405162461bcd60e51b815260206004820152601960248201527804552433230566f7465733a20667574757265206c6f6f6b757603c1b6044820152606401610612565b6001600160a01b038316600090815260ff602052604090206106d890836111c6565b9392505050565b6106e933826112af565b50565b336120021461071257604051630f22c43960e41b81526120026004820152602401610612565b8160005b8181101561075e5761074e85858381811061073357610733612475565b90506020020160208101906107489190612254565b8461108c565b6107578161248b565b9050610716565b5050505050565b606043610770610b42565b65ffffffffffff16146107c55760405162461bcd60e51b815260206004820152601d60248201527f4552433230566f7465733a2062726f6b656e20636c6f636b206d6f64650000006044820152606401610612565b5060408051808201909152601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c74000000602082015290565b6106e933826112b9565b6001600160a01b038116600090815260ff60205260408120546105c690611333565b610834823383610ff9565b61062582826112af565b6001600160a01b038116600090815260cb60205260408120546105c6565b600054610100900460ff161580801561087c5750600054600160ff909116105b806108965750303b158015610896575060005460ff166001145b6108f95760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610612565b6000805460ff19166001179055801561091c576000805461ff0019166101001790555b33411461093c5760405163022d8c9560e31b815260040160405180910390fd5b3a1561095b576040516383f1b1d360e01b815260040160405180910390fd5b6109af604051806040016040528060148152602001732129a19023b7bb32b93730b731b2902a37b5b2b760611b8152506040518060400160405280600681526020016533b7bb21272160d11b81525061139c565b6109b76113cd565b6109ec604051806040016040528060148152602001732129a19023b7bb32b93730b731b2902a37b5b2b760611b8152506113f6565b6109f46113cd565b80156106e9576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b6000606080600080600060606097546000801b148015610a5c5750609854155b610aa05760405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b6044820152606401610612565b610aa8611440565b610ab061144f565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b6000610ae4610b42565b65ffffffffffff168210610b365760405162461bcd60e51b815260206004820152601960248201527804552433230566f7465733a20667574757265206c6f6f6b757603c1b6044820152606401610612565b6105c6610100836111c6565b60006106334361145e565b60606037805461052f90612418565b6001600160a01b038116600090815260ff60205260408120548015610bcb576001600160a01b038316600090815260ff6020526040902080546000198301908110610ba957610ba9612475565b60009182526020909120015464010000000090046001600160e01b0316610bce565b60005b6001600160e01b03169392505050565b60003381610bec8286610f01565b905083811015610c4c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610612565b6105e58286868403610fe0565b6000336105c0818585611073565b83421115610cb75760405162461bcd60e51b815260206004820152601d60248201527f4552433230566f7465733a207369676e617475726520657870697265640000006044820152606401610612565b604080517fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60208201526001600160a01b038816918101919091526060810186905260808101859052600090610d3190610d299060a001604051602081830303815290604052805190602001206114c5565b8585856114f2565b9050610d3c8161151a565b8614610d8a5760405162461bcd60e51b815260206004820152601960248201527f4552433230566f7465733a20696e76616c6964206e6f6e6365000000000000006044820152606401610612565b610d9481886112b9565b50505050505050565b83421115610ded5760405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606401610612565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9888888610e1c8c61151a565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090506000610e77826114c5565b90506000610e87828787876114f2565b9050896001600160a01b0316816001600160a01b031614610eea5760405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606401610612565b610ef58a8a8a610fe0565b50505050505050505050565b6001600160a01b03918216600090815260346020908152604080832093909416825291909152205490565b3361200214610f5257604051630f22c43960e41b81526120026004820152602401610612565b61062582826112b9565b60408051808201909152600080825260208201526001600160a01b038316600090815260ff60205260409020805463ffffffff8416908110610fa057610fa0612475565b60009182526020918290206040805180820190915291015463ffffffff8116825264010000000090046001600160e01b0316918101919091529392505050565b604051632028747160e01b815260040160405180910390fd5b60006110058484610f01565b9050600019811461106d57818110156110605760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610612565b61106d8484848403610fe0565b50505050565b604051638cd22d1960e01b815260040160405180910390fd5b604051630913db4760e01b81526001600160a01b03828116600483015260009190841690630913db4790602401602060405180830381865afa1580156110d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110fa91906124ba565b6001600160a01b03808516600090815261013060209081526040808320938716835292905220549091508181101561117357600061113882846124d3565b6001600160a01b03808716600090815261013060209081526040808320938916835292905220849055905061116d8482611542565b5061106d565b8181111561106d57600061118783836124d3565b6001600160a01b03808716600090815261013060209081526040808320938916835292905220849055905061075e84826112af565b600061063361154c565b8154600090818160058111156112205760006111e1846115c0565b6111eb90856124d3565b600088815260209020909150869082015463ffffffff1611156112105780915061121e565b61121b816001612462565b92505b505b8082101561126d57600061123483836116a8565b600088815260209020909150869082015463ffffffff16111561125957809150611267565b611264816001612462565b92505b50611220565b8015611299576000868152602090208101600019015464010000000090046001600160e01b031661129c565b60005b6001600160e01b03169695505050505050565b61062582826116c3565b6001600160a01b03828116600081815260fe6020818152604080842080546033845282862054949093528787166001600160a01b03198416811790915590519190951694919391928592917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a461106d8284836116dc565b600063ffffffff8211156113985760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201526532206269747360d01b6064820152608401610612565b5090565b600054610100900460ff166113c35760405162461bcd60e51b8152600401610612906124e6565b610625828261181a565b600054610100900460ff166113f45760405162461bcd60e51b8152600401610612906124e6565b565b600054610100900460ff1661141d5760405162461bcd60e51b8152600401610612906124e6565b6106e981604051806040016040528060018152602001603160f81b81525061185a565b60606099805461052f90612418565b6060609a805461052f90612418565b600065ffffffffffff8211156113985760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203460448201526538206269747360d01b6064820152608401610612565b60006105c66114d26111bc565b8360405161190160f01b8152600281019290925260228201526042902090565b6000806000611503878787876118a9565b915091506115108161196d565b5095945050505050565b6001600160a01b038116600090815260cb602052604090208054600181018255905b50919050565b6106258282611ab7565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f611577611b42565b61157f611b9b565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b6000816000036115d257506000919050565b600060016115df84611bcc565b901c6001901b905060018184816115f8576115f8612531565b048201901c9050600181848161161057611610612531565b048201901c9050600181848161162857611628612531565b048201901c9050600181848161164057611640612531565b048201901c9050600181848161165857611658612531565b048201901c9050600181848161167057611670612531565b048201901c9050600181848161168857611688612531565b048201901c90506106d8818285816116a2576116a2612531565b04611c60565b60006116b76002848418612547565b6106d890848416612462565b6116cd8282611c76565b61106d610100611db183611dbd565b816001600160a01b0316836001600160a01b0316141580156116fe5750600081115b15611815576001600160a01b0383161561178c576001600160a01b038316600090815260ff60205260408120819061173990611db185611dbd565b91509150846001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248383604051611781929190918252602082015260400190565b60405180910390a250505b6001600160a01b03821615611815576001600160a01b038216600090815260ff6020526040812081906117c290611f3285611dbd565b91509150836001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724838360405161180a929190918252602082015260400190565b60405180910390a250505b505050565b600054610100900460ff166118415760405162461bcd60e51b8152600401610612906124e6565b603661184d83826125b7565b50603761181582826125b7565b600054610100900460ff166118815760405162461bcd60e51b8152600401610612906124e6565b609961188d83826125b7565b50609a61189a82826125b7565b50506000609781905560985550565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156118e05750600090506003611964565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611934573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661195d57600060019250925050611964565b9150600090505b94509492505050565b600081600481111561198157611981612677565b036119895750565b600181600481111561199d5761199d612677565b036119ea5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610612565b60028160048111156119fe576119fe612677565b03611a4b5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610612565b6003816004811115611a5f57611a5f612677565b036106e95760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610612565b611ac18282611f3e565b6035546001600160e01b031015611b335760405162461bcd60e51b815260206004820152603060248201527f4552433230566f7465733a20746f74616c20737570706c79207269736b73206f60448201526f766572666c6f77696e6720766f74657360801b6064820152608401610612565b61106d610100611f3283611dbd565b600080611b4d611440565b805190915015611b64578051602090910120919050565b6097548015611b735792915050565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4709250505090565b600080611ba661144f565b805190915015611bbd578051602090910120919050565b6098548015611b735792915050565b600080608083901c15611be157608092831c92015b604083901c15611bf357604092831c92015b602083901c15611c0557602092831c92015b601083901c15611c1757601092831c92015b600883901c15611c2957600892831c92015b600483901c15611c3b57600492831c92015b600283901c15611c4d57600292831c92015b600183901c156105c65760010192915050565b6000818310611c6f57816106d8565b5090919050565b6001600160a01b038216611cd65760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610612565b6001600160a01b03821660009081526033602052604090205481811015611d4a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610612565b6001600160a01b03831660008181526033602090815260408083208686039055603580548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a361181583600084612003565b60006106d882846124d3565b82546000908190818115611e0a5760008781526020902082016000190160408051808201909152905463ffffffff8116825264010000000090046001600160e01b03166020820152611e1f565b60408051808201909152600080825260208201525b905080602001516001600160e01b03169350611e3f84868863ffffffff16565b9250600082118015611e695750611e54610b42565b65ffffffffffff16816000015163ffffffff16145b15611eae57611e778361200e565b60008881526020902083016000190180546001600160e01b03929092166401000000000263ffffffff909216919091179055611f28565b866040518060400160405280611ed2611ec5610b42565b65ffffffffffff16611333565b63ffffffff168152602001611ee68661200e565b6001600160e01b0390811690915282546001810184556000938452602093849020835194909301519091166401000000000263ffffffff909316929092179101555b5050935093915050565b60006106d88284612462565b6001600160a01b038216611f945760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610612565b8060356000828254611fa69190612462565b90915550506001600160a01b0382166000818152603360209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610625600083835b611815838383612077565b60006001600160e01b038211156113985760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20326044820152663234206269747360c81b6064820152608401610612565b6001600160a01b03838116600090815260fe6020526040808220548584168352912054611815929182169116836116dc565b80356001600160a01b03811681146120c057600080fd5b919050565b600080604083850312156120d857600080fd5b6120e1836120a9565b91506120ef602084016120a9565b90509250929050565b6000815180845260005b8181101561211e57602081850181015186830182015201612102565b506000602082860101526020601f19601f83011685010191505092915050565b6020815260006106d860208301846120f8565b6000806040838503121561216457600080fd5b61216d836120a9565b946020939093013593505050565b60008060006060848603121561219057600080fd5b612199846120a9565b92506121a7602085016120a9565b9150604084013590509250925092565b6000602082840312156121c957600080fd5b5035919050565b6000806000604084860312156121e557600080fd5b833567ffffffffffffffff808211156121fd57600080fd5b818601915086601f83011261221157600080fd5b81358181111561222057600080fd5b8760208260051b850101111561223557600080fd5b60209283019550935061224b91860190506120a9565b90509250925092565b60006020828403121561226657600080fd5b6106d8826120a9565b60ff60f81b881681526000602060e08184015261228f60e084018a6120f8565b83810360408501526122a1818a6120f8565b606085018990526001600160a01b038816608086015260a0850187905284810360c0860152855180825283870192509083019060005b818110156122f3578351835292840192918401916001016122d7565b50909c9b505050505050505050505050565b803560ff811681146120c057600080fd5b60008060008060008060c0878903121561232f57600080fd5b612338876120a9565b9550602087013594506040870135935061235460608801612305565b92506080870135915060a087013590509295509295509295565b600080600080600080600060e0888a03121561238957600080fd5b612392886120a9565b96506123a0602089016120a9565b955060408801359450606088013593506123bc60808901612305565b925060a0880135915060c0880135905092959891949750929550565b600080604083850312156123eb57600080fd5b6123f4836120a9565b9150602083013563ffffffff8116811461240d57600080fd5b809150509250929050565b600181811c9082168061242c57607f821691505b60208210810361153c57634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b808201808211156105c6576105c661244c565b634e487b7160e01b600052603260045260246000fd5b60006001820161249d5761249d61244c565b5060010190565b634e487b7160e01b600052604160045260246000fd5b6000602082840312156124cc57600080fd5b5051919050565b818103818111156105c6576105c661244c565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b634e487b7160e01b600052601260045260246000fd5b60008261256457634e487b7160e01b600052601260045260246000fd5b500490565b601f82111561181557600081815260208120601f850160051c810160208610156125905750805b601f850160051c820191505b818110156125af5782815560010161259c565b505050505050565b815167ffffffffffffffff8111156125d1576125d16124a4565b6125e5816125df8454612418565b84612569565b602080601f83116001811461261a57600084156126025750858301515b600019600386901b1c1916600185901b1785556125af565b600085815260208120601f198616915b828110156126495788860151825594840194600190910190840161262a565b50858210156126675787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052602160045260246000fdfea164736f6c6343000811000a", }, { ContractAddr: common.HexToAddress(TimelockContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/cfc0bd1127186a917ddc38fd38d22903034d3f0b", - Code: "6080604052600436106101d15760003560e01c80638129fc1c116100f7578063b1c5f42711610095578063d547741f11610064578063d547741f14610584578063e38335e5146105a4578063f23a6e61146105b7578063f27a0c92146105e357600080fd5b8063b1c5f427146104eb578063bc197c811461050b578063c4d252f514610537578063d45c44351461055757600080fd5b806391d14854116100d157806391d1485414610474578063a217fddf14610494578063ac431751146104a9578063b08e51c0146104c957600080fd5b80638129fc1c1461041d5780638f2a0bb0146104325780638f61f4f51461045257600080fd5b8063248a9ca31161016f57806336568abe1161013e57806336568abe1461039d578063584b153e146103bd57806364d62353146103dd5780638065657f146103fd57600080fd5b8063248a9ca3146102fd5780632ab0f5291461032d5780632f2ff15d1461035d57806331d507501461037d57600080fd5b80630d3cf6fc116101ab5780630d3cf6fc14610264578063134008d31461028657806313bc9f2014610299578063150b7a02146102b957600080fd5b806301d5062a146101dd57806301ffc9a7146101ff57806307bd02651461023457600080fd5b366101d857005b600080fd5b3480156101e957600080fd5b506101fd6101f8366004611a52565b6105f8565b005b34801561020b57600080fd5b5061021f61021a366004611ac6565b6106bc565b60405190151581526020015b60405180910390f35b34801561024057600080fd5b5061025660008051602061253983398151915281565b60405190815260200161022b565b34801561027057600080fd5b506102566000805160206124f983398151915281565b6101fd610294366004611af0565b6106e7565b3480156102a557600080fd5b5061021f6102b4366004611b5b565b61078a565b3480156102c557600080fd5b506102e46102d4366004611c29565b630a85bd0160e11b949350505050565b6040516001600160e01b0319909116815260200161022b565b34801561030957600080fd5b50610256610318366004611b5b565b60009081526065602052604090206001015490565b34801561033957600080fd5b5061021f610348366004611b5b565b60009081526097602052604090205460011490565b34801561036957600080fd5b506101fd610378366004611c90565b6107b0565b34801561038957600080fd5b5061021f610398366004611b5b565b6107da565b3480156103a957600080fd5b506101fd6103b8366004611c90565b6107f3565b3480156103c957600080fd5b5061021f6103d8366004611b5b565b610876565b3480156103e957600080fd5b506101fd6103f8366004611b5b565b61088d565b34801561040957600080fd5b50610256610418366004611af0565b610931565b34801561042957600080fd5b506101fd610970565b34801561043e57600080fd5b506101fd61044d366004611d00565b610b20565b34801561045e57600080fd5b5061025660008051602061251983398151915281565b34801561048057600080fd5b5061021f61048f366004611c90565b610ca1565b3480156104a057600080fd5b50610256600081565b3480156104b557600080fd5b506101fd6104c4366004611db1565b610ccc565b3480156104d557600080fd5b5061025660008051602061255983398151915281565b3480156104f757600080fd5b50610256610506366004611e1c565b610eb6565b34801561051757600080fd5b506102e4610526366004611f43565b63bc197c8160e01b95945050505050565b34801561054357600080fd5b506101fd610552366004611b5b565b610efb565b34801561056357600080fd5b50610256610572366004611b5b565b60009081526097602052604090205490565b34801561059057600080fd5b506101fd61059f366004611c90565b610fbe565b6101fd6105b2366004611e1c565b610fe3565b3480156105c357600080fd5b506102e46105d2366004611fec565b63f23a6e6160e01b95945050505050565b3480156105ef57600080fd5b50609854610256565b6000805160206125198339815191526106108161115b565b6000610620898989898989610931565b905061062c8184611165565b6000817f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8b8b8b8b8b8a60405161066896959493929190612079565b60405180910390a383156106b157807f20fda5fd27a1ea7bf5b9567f143ac5470bb059374a27e8f67cb44f946f6d0387856040516106a891815260200190565b60405180910390a25b505050505050505050565b60006001600160e01b03198216630271189760e51b14806106e157506106e182611254565b92915050565b600080516020612539833981519152610701816000610ca1565b61070f5761070f8133611289565b600061071f888888888888610931565b905061072b81856112e2565b6107378888888861137d565b6000817fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b588a8a8a8a60405161076f94939291906120b6565b60405180910390a361078081611450565b5050505050505050565b6000818152609760205260408120546001811180156107a95750428111155b9392505050565b6000828152606560205260409020600101546107cb8161115b565b6107d58383611489565b505050565b60008181526097602052604081205481905b1192915050565b6001600160a01b03811633146108685760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b610872828261150f565b5050565b6000818152609760205260408120546001906107ec565b3330146108f05760405162461bcd60e51b815260206004820152602b60248201527f54696d656c6f636b436f6e74726f6c6c65723a2063616c6c6572206d7573742060448201526a62652074696d656c6f636b60a81b606482015260840161085f565b60985460408051918252602082018390527f11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d5910160405180910390a1609855565b600086868686868660405160200161094e96959493929190612079565b6040516020818303038152906040528051906020012090509695505050505050565b600054610100900460ff16158080156109905750600054600160ff909116105b806109aa5750303b1580156109aa575060005460ff166001145b610a0d5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161085f565b6000805460ff191660011790558015610a30576000805461ff0019166101001790555b334114610a505760405163022d8c9560e31b815260040160405180910390fd5b3a15610a6f576040516383f1b1d360e01b815260040160405180910390fd5b6040805160018082528183019092526000916020808301908036833701905050905061200481600081518110610aa757610aa76120e8565b60200260200101906001600160a01b031690816001600160a01b031681525050610ad6603c8283612004611576565b508015610b1d576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b600080516020612519833981519152610b388161115b565b888714610b575760405162461bcd60e51b815260040161085f906120fe565b888514610b765760405162461bcd60e51b815260040161085f906120fe565b6000610b888b8b8b8b8b8b8b8b610eb6565b9050610b948184611165565b60005b8a811015610c525780827f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8e8e85818110610bd457610bd46120e8565b9050602002016020810190610be99190612141565b8d8d86818110610bfb57610bfb6120e8565b905060200201358c8c87818110610c1457610c146120e8565b9050602002810190610c26919061215c565b8c8b604051610c3a96959493929190612079565b60405180910390a3610c4b816121b8565b9050610b97565b508315610c9457807f20fda5fd27a1ea7bf5b9567f143ac5470bb059374a27e8f67cb44f946f6d038785604051610c8b91815260200190565b60405180910390a25b5050505050505050505050565b60009182526065602090815260408084206001600160a01b0393909316845291905290205460ff1690565b3361100714610cf257604051630f22c43960e41b8152611007600482015260240161085f565b610d55604051806040016040528060088152602001676d696e44656c617960c01b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506115af9050565b15610e525760208114610d835783838383604051630a5a604160e01b815260040161085f94939291906121d1565b604080516020601f8401819004810282018101909252828152600091610dc49185858083850183828082843760009201919091525092939250506116089050565b9050801580610dd557506212750081115b15610dfb5784848484604051630a5a604160e01b815260040161085f94939291906121d1565b6040516364d6235360e01b81526004810182905230906364d6235390602401600060405180830381600087803b158015610e3457600080fd5b505af1158015610e48573d6000803e3d6000fd5b5050505050610e73565b838383836040516325ee20d560e21b815260040161085f94939291906121d1565b7ff1ce9b2cbf50eeb05769a29e2543fd350cab46894a7dd9978a12d534bb20e63384848484604051610ea894939291906121d1565b60405180910390a150505050565b60008888888888888888604051602001610ed7989796959493929190612289565b60405160208183030381529060405280519060200120905098975050505050505050565b600080516020612559833981519152610f138161115b565b610f1c82610876565b610f825760405162461bcd60e51b815260206004820152603160248201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e2063616044820152701b9b9bdd0818994818d85b98d95b1b1959607a1b606482015260840161085f565b6000828152609760205260408082208290555183917fbaa1eb22f2a492ba1a5fea61b8df4d27c6c8b5f3971e63bb58fa14ff72eedb7091a25050565b600082815260656020526040902060010154610fd98161115b565b6107d5838361150f565b600080516020612539833981519152610ffd816000610ca1565b61100b5761100b8133611289565b87861461102a5760405162461bcd60e51b815260040161085f906120fe565b8784146110495760405162461bcd60e51b815260040161085f906120fe565b600061105b8a8a8a8a8a8a8a8a610eb6565b905061106781856112e2565b60005b898110156111455760008b8b83818110611086576110866120e8565b905060200201602081019061109b9190612141565b905060008a8a848181106110b1576110b16120e8565b9050602002013590503660008a8a868181106110cf576110cf6120e8565b90506020028101906110e1919061215c565b915091506110f18484848461137d565b84867fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b588686868660405161112894939291906120b6565b60405180910390a3505050508061113e906121b8565b905061106a565b5061114f81611450565b50505050505050505050565b610b1d8133611289565b61116e826107da565b156111d35760405162461bcd60e51b815260206004820152602f60248201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e20616c60448201526e1c9958591e481cd8da19591d5b1959608a1b606482015260840161085f565b6098548110156112345760405162461bcd60e51b815260206004820152602660248201527f54696d656c6f636b436f6e74726f6c6c65723a20696e73756666696369656e746044820152652064656c617960d01b606482015260840161085f565b61123e814261232a565b6000928352609760205260409092209190915550565b60006001600160e01b03198216637965db0b60e01b14806106e157506301ffc9a760e01b6001600160e01b03198316146106e1565b6112938282610ca1565b610872576112a08161160d565b6112ab83602061161f565b6040516020016112bc929190612361565b60408051601f198184030181529082905262461bcd60e51b825261085f916004016123d6565b6112eb8261078a565b6113075760405162461bcd60e51b815260040161085f90612409565b80158061132257506000818152609760205260409020546001145b6108725760405162461bcd60e51b815260206004820152602660248201527f54696d656c6f636b436f6e74726f6c6c65723a206d697373696e6720646570656044820152656e64656e637960d01b606482015260840161085f565b6000846001600160a01b031684848460405161139a929190612453565b60006040518083038185875af1925050503d80600081146113d7576040519150601f19603f3d011682016040523d82523d6000602084013e6113dc565b606091505b50509050806114495760405162461bcd60e51b815260206004820152603360248201527f54696d656c6f636b436f6e74726f6c6c65723a20756e6465726c79696e6720746044820152721c985b9cd858dd1a5bdb881c995d995c9d1959606a1b606482015260840161085f565b5050505050565b6114598161078a565b6114755760405162461bcd60e51b815260040161085f90612409565b600090815260976020526040902060019055565b6114938282610ca1565b6108725760008281526065602090815260408083206001600160a01b03851684529091529020805460ff191660011790556114cb3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6115198282610ca1565b156108725760008281526065602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b600054610100900460ff1661159d5760405162461bcd60e51b815260040161085f90612463565b6115a9848484846117ba565b50505050565b6000816040516020016115c291906124ae565b60405160208183030381529060405280519060200120836040516020016115e991906124ae565b6040516020818303038152906040528051906020012014905092915050565b015190565b60606106e16001600160a01b03831660145b6060600061162e8360026124ca565b61163990600261232a565b6001600160401b0381111561165057611650611b74565b6040519080825280601f01601f19166020018201604052801561167a576020820181803683370190505b509050600360fc1b81600081518110611695576116956120e8565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106116c4576116c46120e8565b60200101906001600160f81b031916908160001a90535060006116e88460026124ca565b6116f390600161232a565b90505b600181111561176b576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110611727576117276120e8565b1a60f81b82828151811061173d5761173d6120e8565b60200101906001600160f81b031916908160001a90535060049490941c93611764816124e1565b90506116f6565b5083156107a95760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161085f565b600054610100900460ff166117e15760405162461bcd60e51b815260040161085f90612463565b6117f96000805160206124f983398151915280611999565b61181f6000805160206125198339815191526000805160206124f9833981519152611999565b6118456000805160206125398339815191526000805160206124f9833981519152611999565b61186b6000805160206125598339815191526000805160206124f9833981519152611999565b6118836000805160206124f9833981519152306119e4565b6001600160a01b038116156118aa576118aa6000805160206124f9833981519152826119e4565b60005b835181101561191b576118e76000805160206125198339815191528583815181106118da576118da6120e8565b60200260200101516119e4565b61190b6000805160206125598339815191528583815181106118da576118da6120e8565b611914816121b8565b90506118ad565b5060005b825181101561195c5761194c6000805160206125398339815191528483815181106118da576118da6120e8565b611955816121b8565b905061191f565b5060988490556040805160008152602081018690527f11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d59101610ea8565b600082815260656020526040808220600101805490849055905190918391839186917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a4505050565b6108728282611489565b80356001600160a01b0381168114611a0557600080fd5b919050565b60008083601f840112611a1c57600080fd5b5081356001600160401b03811115611a3357600080fd5b602083019150836020828501011115611a4b57600080fd5b9250929050565b600080600080600080600060c0888a031215611a6d57600080fd5b611a76886119ee565b96506020880135955060408801356001600160401b03811115611a9857600080fd5b611aa48a828b01611a0a565b989b979a50986060810135976080820135975060a09091013595509350505050565b600060208284031215611ad857600080fd5b81356001600160e01b0319811681146107a957600080fd5b60008060008060008060a08789031215611b0957600080fd5b611b12876119ee565b95506020870135945060408701356001600160401b03811115611b3457600080fd5b611b4089828a01611a0a565b979a9699509760608101359660809091013595509350505050565b600060208284031215611b6d57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715611bb257611bb2611b74565b604052919050565b600082601f830112611bcb57600080fd5b81356001600160401b03811115611be457611be4611b74565b611bf7601f8201601f1916602001611b8a565b818152846020838601011115611c0c57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060808587031215611c3f57600080fd5b611c48856119ee565b9350611c56602086016119ee565b92506040850135915060608501356001600160401b03811115611c7857600080fd5b611c8487828801611bba565b91505092959194509250565b60008060408385031215611ca357600080fd5b82359150611cb3602084016119ee565b90509250929050565b60008083601f840112611cce57600080fd5b5081356001600160401b03811115611ce557600080fd5b6020830191508360208260051b8501011115611a4b57600080fd5b600080600080600080600080600060c08a8c031215611d1e57600080fd5b89356001600160401b0380821115611d3557600080fd5b611d418d838e01611cbc565b909b50995060208c0135915080821115611d5a57600080fd5b611d668d838e01611cbc565b909950975060408c0135915080821115611d7f57600080fd5b50611d8c8c828d01611cbc565b9a9d999c50979a969997986060880135976080810135975060a0013595509350505050565b60008060008060408587031215611dc757600080fd5b84356001600160401b0380821115611dde57600080fd5b611dea88838901611a0a565b90965094506020870135915080821115611e0357600080fd5b50611e1087828801611a0a565b95989497509550505050565b60008060008060008060008060a0898b031215611e3857600080fd5b88356001600160401b0380821115611e4f57600080fd5b611e5b8c838d01611cbc565b909a50985060208b0135915080821115611e7457600080fd5b611e808c838d01611cbc565b909850965060408b0135915080821115611e9957600080fd5b50611ea68b828c01611cbc565b999c989b509699959896976060870135966080013595509350505050565b600082601f830112611ed557600080fd5b813560206001600160401b03821115611ef057611ef0611b74565b8160051b611eff828201611b8a565b9283528481018201928281019087851115611f1957600080fd5b83870192505b84831015611f3857823582529183019190830190611f1f565b979650505050505050565b600080600080600060a08688031215611f5b57600080fd5b611f64866119ee565b9450611f72602087016119ee565b935060408601356001600160401b0380821115611f8e57600080fd5b611f9a89838a01611ec4565b94506060880135915080821115611fb057600080fd5b611fbc89838a01611ec4565b93506080880135915080821115611fd257600080fd5b50611fdf88828901611bba565b9150509295509295909350565b600080600080600060a0868803121561200457600080fd5b61200d866119ee565b945061201b602087016119ee565b9350604086013592506060860135915060808601356001600160401b0381111561204457600080fd5b611fdf88828901611bba565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60018060a01b038716815285602082015260a0604082015260006120a160a083018688612050565b60608301949094525060800152949350505050565b60018060a01b03851681528360208201526060604082015260006120de606083018486612050565b9695505050505050565b634e487b7160e01b600052603260045260246000fd5b60208082526023908201527f54696d656c6f636b436f6e74726f6c6c65723a206c656e677468206d69736d616040820152620e8c6d60eb1b606082015260800190565b60006020828403121561215357600080fd5b6107a9826119ee565b6000808335601e1984360301811261217357600080fd5b8301803591506001600160401b0382111561218d57600080fd5b602001915036819003821315611a4b57600080fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016121ca576121ca6121a2565b5060010190565b6040815260006121e5604083018688612050565b8281036020840152611f38818587612050565b81835260006020808501808196508560051b810191508460005b8781101561227c5782840389528135601e1988360301811261223357600080fd5b870185810190356001600160401b0381111561224e57600080fd5b80360382131561225d57600080fd5b612268868284612050565b9a87019a9550505090840190600101612212565b5091979650505050505050565b60a0808252810188905260008960c08301825b8b8110156122ca576001600160a01b036122b5846119ee565b1682526020928301929091019060010161229c565b5083810360208501528881526001600160fb1b038911156122ea57600080fd5b8860051b9150818a6020830137018281036020908101604085015261231290820187896121f8565b60608401959095525050608001529695505050505050565b808201808211156106e1576106e16121a2565b60005b83811015612358578181015183820152602001612340565b50506000910152565b7f416363657373436f6e74726f6c3a206163636f756e742000000000000000000081526000835161239981601785016020880161233d565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516123ca81602884016020880161233d565b01602801949350505050565b60208152600082518060208401526123f581604085016020870161233d565b601f01601f19169190910160400192915050565b6020808252602a908201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e206973604082015269206e6f7420726561647960b01b606082015260800190565b8183823760009101908152919050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b600082516124c081846020870161233d565b9190910192915050565b80820281158282048414176106e1576106e16121a2565b6000816124f0576124f06121a2565b50600019019056fe5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca5b09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc1d8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e63fd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f783a164736f6c6343000811000a", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/1abdfbf3aeb86909c2220b79bf92b87ddff64b54", + Code: "6080604052600436106101e75760003560e01c80638129fc1c11610102578063bc197c8111610095578063e38335e511610064578063e38335e5146105e1578063f1fad104146105f4578063f23a6e6114610609578063f27a0c921461063557600080fd5b8063bc197c8114610548578063c4d252f514610574578063d45c443514610594578063d547741f146105c157600080fd5b8063a217fddf116100d1578063a217fddf146104d1578063ac431751146104e6578063b08e51c014610506578063b1c5f4271461052857600080fd5b80638129fc1c1461045a5780638f2a0bb01461046f5780638f61f4f51461048f57806391d14854146104b157600080fd5b80632ab0f5291161017a5780634bf6c882116101495780634bf6c882146103d3578063584b153e146103fa57806364d623531461041a5780638065657f1461043a57600080fd5b80632ab0f529146103435780632f2ff15d1461037357806331d507501461039357806336568abe146103b357600080fd5b8063134008d3116101b6578063134008d31461029c57806313bc9f20146102af578063150b7a02146102cf578063248a9ca31461031357600080fd5b806301d5062a146101f357806301ffc9a71461021557806307bd02651461024a5780630d3cf6fc1461027a57600080fd5b366101ee57005b600080fd5b3480156101ff57600080fd5b5061021361020e366004611aa4565b61064a565b005b34801561022157600080fd5b50610235610230366004611b18565b61070e565b60405190151581526020015b60405180910390f35b34801561025657600080fd5b5061026c60008051602061258883398151915281565b604051908152602001610241565b34801561028657600080fd5b5061026c60008051602061254883398151915281565b6102136102aa366004611b42565b610739565b3480156102bb57600080fd5b506102356102ca366004611bad565b6107dc565b3480156102db57600080fd5b506102fa6102ea366004611c7b565b630a85bd0160e11b949350505050565b6040516001600160e01b03199091168152602001610241565b34801561031f57600080fd5b5061026c61032e366004611bad565b60009081526065602052604090206001015490565b34801561034f57600080fd5b5061023561035e366004611bad565b60009081526097602052604090205460011490565b34801561037f57600080fd5b5061021361038e366004611ce2565b610802565b34801561039f57600080fd5b506102356103ae366004611bad565b61082c565b3480156103bf57600080fd5b506102136103ce366004611ce2565b610845565b3480156103df57600080fd5b506103e8600881565b60405160ff9091168152602001610241565b34801561040657600080fd5b50610235610415366004611bad565b6108c8565b34801561042657600080fd5b50610213610435366004611bad565b6108df565b34801561044657600080fd5b5061026c610455366004611b42565b610983565b34801561046657600080fd5b506102136109c2565b34801561047b57600080fd5b5061021361048a366004611d52565b610b72565b34801561049b57600080fd5b5061026c60008051602061256883398151915281565b3480156104bd57600080fd5b506102356104cc366004611ce2565b610cf3565b3480156104dd57600080fd5b5061026c600081565b3480156104f257600080fd5b50610213610501366004611e03565b610d1e565b34801561051257600080fd5b5061026c6000805160206125a883398151915281565b34801561053457600080fd5b5061026c610543366004611e6e565b610f08565b34801561055457600080fd5b506102fa610563366004611f95565b63bc197c8160e01b95945050505050565b34801561058057600080fd5b5061021361058f366004611bad565b610f4d565b3480156105a057600080fd5b5061026c6105af366004611bad565b60009081526097602052604090205490565b3480156105cd57600080fd5b506102136105dc366004611ce2565b611010565b6102136105ef366004611e6e565b611035565b34801561060057600080fd5b506103e8601181565b34801561061557600080fd5b506102fa61062436600461203e565b63f23a6e6160e01b95945050505050565b34801561064157600080fd5b5060985461026c565b600080516020612568833981519152610662816111ad565b6000610672898989898989610983565b905061067e81846111b7565b6000817f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8b8b8b8b8b8a6040516106ba969594939291906120cb565b60405180910390a3831561070357807f20fda5fd27a1ea7bf5b9567f143ac5470bb059374a27e8f67cb44f946f6d0387856040516106fa91815260200190565b60405180910390a25b505050505050505050565b60006001600160e01b03198216630271189760e51b14806107335750610733826112a6565b92915050565b600080516020612588833981519152610753816000610cf3565b6107615761076181336112db565b6000610771888888888888610983565b905061077d8185611334565b610789888888886113cf565b6000817fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b588a8a8a8a6040516107c19493929190612108565b60405180910390a36107d2816114a2565b5050505050505050565b6000818152609760205260408120546001811180156107fb5750428111155b9392505050565b60008281526065602052604090206001015461081d816111ad565b61082783836114db565b505050565b60008181526097602052604081205481905b1192915050565b6001600160a01b03811633146108ba5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b6108c48282611561565b5050565b60008181526097602052604081205460019061083e565b3330146109425760405162461bcd60e51b815260206004820152602b60248201527f54696d656c6f636b436f6e74726f6c6c65723a2063616c6c6572206d7573742060448201526a62652074696d656c6f636b60a81b60648201526084016108b1565b60985460408051918252602082018390527f11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d5910160405180910390a1609855565b60008686868686866040516020016109a0969594939291906120cb565b6040516020818303038152906040528051906020012090509695505050505050565b600054610100900460ff16158080156109e25750600054600160ff909116105b806109fc5750303b1580156109fc575060005460ff166001145b610a5f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016108b1565b6000805460ff191660011790558015610a82576000805461ff0019166101001790555b334114610aa25760405163022d8c9560e31b815260040160405180910390fd5b3a15610ac1576040516383f1b1d360e01b815260040160405180910390fd5b6040805160018082528183019092526000916020808301908036833701905050905061200481600081518110610af957610af961213a565b60200260200101906001600160a01b031690816001600160a01b031681525050610b28603c82836120046115c8565b508015610b6f576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b600080516020612568833981519152610b8a816111ad565b888714610ba95760405162461bcd60e51b81526004016108b190612150565b888514610bc85760405162461bcd60e51b81526004016108b190612150565b6000610bda8b8b8b8b8b8b8b8b610f08565b9050610be681846111b7565b60005b8a811015610ca45780827f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8e8e85818110610c2657610c2661213a565b9050602002016020810190610c3b9190612193565b8d8d86818110610c4d57610c4d61213a565b905060200201358c8c87818110610c6657610c6661213a565b9050602002810190610c7891906121ae565b8c8b604051610c8c969594939291906120cb565b60405180910390a3610c9d8161220a565b9050610be9565b508315610ce657807f20fda5fd27a1ea7bf5b9567f143ac5470bb059374a27e8f67cb44f946f6d038785604051610cdd91815260200190565b60405180910390a25b5050505050505050505050565b60009182526065602090815260408084206001600160a01b0393909316845291905290205460ff1690565b3361100714610d4457604051630f22c43960e41b815261100760048201526024016108b1565b610da7604051806040016040528060088152602001676d696e44656c617960c01b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506116019050565b15610ea45760208114610dd55783838383604051630a5a604160e01b81526004016108b19493929190612223565b604080516020601f8401819004810282018101909252828152600091610e1691858580838501838280828437600092019190915250929392505061165a9050565b9050801580610e2757506212750081115b15610e4d5784848484604051630a5a604160e01b81526004016108b19493929190612223565b6040516364d6235360e01b81526004810182905230906364d6235390602401600060405180830381600087803b158015610e8657600080fd5b505af1158015610e9a573d6000803e3d6000fd5b5050505050610ec5565b838383836040516325ee20d560e21b81526004016108b19493929190612223565b7ff1ce9b2cbf50eeb05769a29e2543fd350cab46894a7dd9978a12d534bb20e63384848484604051610efa9493929190612223565b60405180910390a150505050565b60008888888888888888604051602001610f299897969594939291906122d8565b60405160208183030381529060405280519060200120905098975050505050505050565b6000805160206125a8833981519152610f65816111ad565b610f6e826108c8565b610fd45760405162461bcd60e51b815260206004820152603160248201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e2063616044820152701b9b9bdd0818994818d85b98d95b1b1959607a1b60648201526084016108b1565b6000828152609760205260408082208290555183917fbaa1eb22f2a492ba1a5fea61b8df4d27c6c8b5f3971e63bb58fa14ff72eedb7091a25050565b60008281526065602052604090206001015461102b816111ad565b6108278383611561565b60008051602061258883398151915261104f816000610cf3565b61105d5761105d81336112db565b87861461107c5760405162461bcd60e51b81526004016108b190612150565b87841461109b5760405162461bcd60e51b81526004016108b190612150565b60006110ad8a8a8a8a8a8a8a8a610f08565b90506110b98185611334565b60005b898110156111975760008b8b838181106110d8576110d861213a565b90506020020160208101906110ed9190612193565b905060008a8a848181106111035761110361213a565b9050602002013590503660008a8a868181106111215761112161213a565b905060200281019061113391906121ae565b91509150611143848484846113cf565b84867fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b588686868660405161117a9493929190612108565b60405180910390a350505050806111909061220a565b90506110bc565b506111a1816114a2565b50505050505050505050565b610b6f81336112db565b6111c08261082c565b156112255760405162461bcd60e51b815260206004820152602f60248201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e20616c60448201526e1c9958591e481cd8da19591d5b1959608a1b60648201526084016108b1565b6098548110156112865760405162461bcd60e51b815260206004820152602660248201527f54696d656c6f636b436f6e74726f6c6c65723a20696e73756666696369656e746044820152652064656c617960d01b60648201526084016108b1565b6112908142612379565b6000928352609760205260409092209190915550565b60006001600160e01b03198216637965db0b60e01b148061073357506301ffc9a760e01b6001600160e01b0319831614610733565b6112e58282610cf3565b6108c4576112f28161165f565b6112fd836020611671565b60405160200161130e9291906123b0565b60408051601f198184030181529082905262461bcd60e51b82526108b191600401612425565b61133d826107dc565b6113595760405162461bcd60e51b81526004016108b190612458565b80158061137457506000818152609760205260409020546001145b6108c45760405162461bcd60e51b815260206004820152602660248201527f54696d656c6f636b436f6e74726f6c6c65723a206d697373696e6720646570656044820152656e64656e637960d01b60648201526084016108b1565b6000846001600160a01b03168484846040516113ec9291906124a2565b60006040518083038185875af1925050503d8060008114611429576040519150601f19603f3d011682016040523d82523d6000602084013e61142e565b606091505b505090508061149b5760405162461bcd60e51b815260206004820152603360248201527f54696d656c6f636b436f6e74726f6c6c65723a20756e6465726c79696e6720746044820152721c985b9cd858dd1a5bdb881c995d995c9d1959606a1b60648201526084016108b1565b5050505050565b6114ab816107dc565b6114c75760405162461bcd60e51b81526004016108b190612458565b600090815260976020526040902060019055565b6114e58282610cf3565b6108c45760008281526065602090815260408083206001600160a01b03851684529091529020805460ff1916600117905561151d3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b61156b8282610cf3565b156108c45760008281526065602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b600054610100900460ff166115ef5760405162461bcd60e51b81526004016108b1906124b2565b6115fb8484848461180c565b50505050565b60008160405160200161161491906124fd565b604051602081830303815290604052805190602001208360405160200161163b91906124fd565b6040516020818303038152906040528051906020012014905092915050565b015190565b60606107336001600160a01b03831660145b60606000611680836002612519565b61168b906002612379565b6001600160401b038111156116a2576116a2611bc6565b6040519080825280601f01601f1916602001820160405280156116cc576020820181803683370190505b509050600360fc1b816000815181106116e7576116e761213a565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106117165761171661213a565b60200101906001600160f81b031916908160001a905350600061173a846002612519565b611745906001612379565b90505b60018111156117bd576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106117795761177961213a565b1a60f81b82828151811061178f5761178f61213a565b60200101906001600160f81b031916908160001a90535060049490941c936117b681612530565b9050611748565b5083156107fb5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016108b1565b600054610100900460ff166118335760405162461bcd60e51b81526004016108b1906124b2565b61184b600080516020612548833981519152806119eb565b6118716000805160206125688339815191526000805160206125488339815191526119eb565b6118976000805160206125888339815191526000805160206125488339815191526119eb565b6118bd6000805160206125a88339815191526000805160206125488339815191526119eb565b6118d560008051602061254883398151915230611a36565b6001600160a01b038116156118fc576118fc60008051602061254883398151915282611a36565b60005b835181101561196d5761193960008051602061256883398151915285838151811061192c5761192c61213a565b6020026020010151611a36565b61195d6000805160206125a883398151915285838151811061192c5761192c61213a565b6119668161220a565b90506118ff565b5060005b82518110156119ae5761199e60008051602061258883398151915284838151811061192c5761192c61213a565b6119a78161220a565b9050611971565b5060988490556040805160008152602081018690527f11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d59101610efa565b600082815260656020526040808220600101805490849055905190918391839186917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a4505050565b6108c482826114db565b80356001600160a01b0381168114611a5757600080fd5b919050565b60008083601f840112611a6e57600080fd5b5081356001600160401b03811115611a8557600080fd5b602083019150836020828501011115611a9d57600080fd5b9250929050565b600080600080600080600060c0888a031215611abf57600080fd5b611ac888611a40565b96506020880135955060408801356001600160401b03811115611aea57600080fd5b611af68a828b01611a5c565b989b979a50986060810135976080820135975060a09091013595509350505050565b600060208284031215611b2a57600080fd5b81356001600160e01b0319811681146107fb57600080fd5b60008060008060008060a08789031215611b5b57600080fd5b611b6487611a40565b95506020870135945060408701356001600160401b03811115611b8657600080fd5b611b9289828a01611a5c565b979a9699509760608101359660809091013595509350505050565b600060208284031215611bbf57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715611c0457611c04611bc6565b604052919050565b600082601f830112611c1d57600080fd5b81356001600160401b03811115611c3657611c36611bc6565b611c49601f8201601f1916602001611bdc565b818152846020838601011115611c5e57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060808587031215611c9157600080fd5b611c9a85611a40565b9350611ca860208601611a40565b92506040850135915060608501356001600160401b03811115611cca57600080fd5b611cd687828801611c0c565b91505092959194509250565b60008060408385031215611cf557600080fd5b82359150611d0560208401611a40565b90509250929050565b60008083601f840112611d2057600080fd5b5081356001600160401b03811115611d3757600080fd5b6020830191508360208260051b8501011115611a9d57600080fd5b600080600080600080600080600060c08a8c031215611d7057600080fd5b89356001600160401b0380821115611d8757600080fd5b611d938d838e01611d0e565b909b50995060208c0135915080821115611dac57600080fd5b611db88d838e01611d0e565b909950975060408c0135915080821115611dd157600080fd5b50611dde8c828d01611d0e565b9a9d999c50979a969997986060880135976080810135975060a0013595509350505050565b60008060008060408587031215611e1957600080fd5b84356001600160401b0380821115611e3057600080fd5b611e3c88838901611a5c565b90965094506020870135915080821115611e5557600080fd5b50611e6287828801611a5c565b95989497509550505050565b60008060008060008060008060a0898b031215611e8a57600080fd5b88356001600160401b0380821115611ea157600080fd5b611ead8c838d01611d0e565b909a50985060208b0135915080821115611ec657600080fd5b611ed28c838d01611d0e565b909850965060408b0135915080821115611eeb57600080fd5b50611ef88b828c01611d0e565b999c989b509699959896976060870135966080013595509350505050565b600082601f830112611f2757600080fd5b813560206001600160401b03821115611f4257611f42611bc6565b8160051b611f51828201611bdc565b9283528481018201928281019087851115611f6b57600080fd5b83870192505b84831015611f8a57823582529183019190830190611f71565b979650505050505050565b600080600080600060a08688031215611fad57600080fd5b611fb686611a40565b9450611fc460208701611a40565b935060408601356001600160401b0380821115611fe057600080fd5b611fec89838a01611f16565b9450606088013591508082111561200257600080fd5b61200e89838a01611f16565b9350608088013591508082111561202457600080fd5b5061203188828901611c0c565b9150509295509295909350565b600080600080600060a0868803121561205657600080fd5b61205f86611a40565b945061206d60208701611a40565b9350604086013592506060860135915060808601356001600160401b0381111561209657600080fd5b61203188828901611c0c565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60018060a01b038716815285602082015260a0604082015260006120f360a0830186886120a2565b60608301949094525060800152949350505050565b60018060a01b03851681528360208201526060604082015260006121306060830184866120a2565b9695505050505050565b634e487b7160e01b600052603260045260246000fd5b60208082526023908201527f54696d656c6f636b436f6e74726f6c6c65723a206c656e677468206d69736d616040820152620e8c6d60eb1b606082015260800190565b6000602082840312156121a557600080fd5b6107fb82611a40565b6000808335601e198436030181126121c557600080fd5b8301803591506001600160401b038211156121df57600080fd5b602001915036819003821315611a9d57600080fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161221c5761221c6121f4565b5060010190565b6040815260006122376040830186886120a2565b8281036020840152611f8a8185876120a2565b818352600060208085019450848460051b86018460005b878110156122cb5783830389528135601e1988360301811261228257600080fd5b870185810190356001600160401b0381111561229d57600080fd5b8036038213156122ac57600080fd5b6122b78582846120a2565b9a87019a9450505090840190600101612261565b5090979650505050505050565b60a0808252810188905260008960c08301825b8b811015612319576001600160a01b0361230484611a40565b168252602092830192909101906001016122eb565b5083810360208501528881526001600160fb1b0389111561233957600080fd5b8860051b9150818a60208301370182810360209081016040850152612361908201878961224a565b60608401959095525050608001529695505050505050565b80820180821115610733576107336121f4565b60005b838110156123a757818101518382015260200161238f565b50506000910152565b7f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008152600083516123e881601785016020880161238c565b7001034b99036b4b9b9b4b733903937b6329607d1b601791840191820152835161241981602884016020880161238c565b01602801949350505050565b602081526000825180602084015261244481604085016020870161238c565b601f01601f19169190910160400192915050565b6020808252602a908201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e206973604082015269206e6f7420726561647960b01b606082015260800190565b8183823760009101908152919050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6000825161250f81846020870161238c565b9190910192915050565b8082028115828204841417610733576107336121f4565b60008161253f5761253f6121f4565b50600019019056fe5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca5b09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc1d8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e63fd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f783a164736f6c6343000811000a", }, { ContractAddr: common.HexToAddress(TokenRecoverPortalContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/cfc0bd1127186a917ddc38fd38d22903034d3f0b", - Code: "608060405234801561001057600080fd5b50600436106100a95760003560e01c80639fcb5012116100715780639fcb50121461012f578063ac4317511461014c578063bfb5a6a11461015f578063de88700b14610172578063e33f8d321461019d578063e842426a146101c057600080fd5b8063046f7da2146100ae5780632eb4a7ab146100b8578063572c9980146100d457806374be2150146100e75780638456cb5914610127575b600080fd5b6100b66101d3565b005b6100c160345481565b6040519081526020015b60405180910390f35b6100b66100e23660046113c9565b610236565b61011a6040518060400160405280601481526020017342696e616e63652d436861696e2d47616e67657360601b81525081565b6040516100cb9190611429565b6100b66102c7565b60355461013c9060ff1681565b60405190151581526020016100cb565b6100b661015a36600461149e565b610330565b6100b661016d36600461154f565b610758565b603754610185906001600160a01b031681565b6040516001600160a01b0390911681526020016100cb565b61013c6101ab366004611629565b60009081526036602052604090205460ff1690565b603354610185906001600160a01b031681565b6037546001600160a01b031633146101fe5760405163f2771a9960e01b815260040160405180910390fd5b6037805460ff60a01b191690556040517f62451d457bc659158be6e6247f56ec1df424a5c7597f71c20c2bc44e0965c8f990600090a1565b6037546001600160a01b031633146102615760405163f2771a9960e01b815260040160405180910390fd5b604051638525db0360e01b8152600481018390526001600160a01b038216602482015261100490638525db0390604401600060405180830381600087803b1580156102ab57600080fd5b505af11580156102bf573d6000803e3d6000fd5b505050505050565b6037546001600160a01b031633146102f25760405163f2771a9960e01b815260040160405180910390fd5b6037805460ff60a01b1916600160a01b1790556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e75290600090a1565b336110071461035b57604051630f22c43960e41b815261100760048201526024015b60405180910390fd5b6103c56040518060400160405280600f81526020016e617070726f76616c4164647265737360881b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610a9a9050565b1561048f57601481146103f35783838383604051630a5a604160e01b8152600401610352949392919061166b565b6000610439601484848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610af49050565b90506001600160a01b03811661046a5784848484604051630a5a604160e01b8152600401610352949392919061166b565b603380546001600160a01b0319166001600160a01b0392909216919091179055610715565b6104f46040518060400160405280600a8152602001691b595c9adb19549bdbdd60b21b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610a9a9050565b156105c15760355460ff161561051d576040516379b3306f60e11b815260040160405180910390fd5b602081146105465783838383604051630a5a604160e01b8152600401610352949392919061166b565b604080516020601f840181900481028201810190925282815260009161058691858580838501838280828437600092019190915250869250610af9915050565b806105ac5784848484604051630a5a604160e01b8152600401610352949392919061166b565b6034556035805460ff19166001179055610715565b61062a6040518060400160405280600e81526020016d30b9b9b2ba283937ba32b1ba37b960911b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610a9a9050565b156106f457601481146106585783838383604051630a5a604160e01b8152600401610352949392919061166b565b600061069e601484848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610af49050565b90506001600160a01b0381166106cf5784848484604051630a5a604160e01b8152600401610352949392919061166b565b603780546001600160a01b0319166001600160a01b0392909216919091179055610715565b838383836040516325ee20d560e21b8152600401610352949392919061166b565b7ff1ce9b2cbf50eeb05769a29e2543fd350cab46894a7dd9978a12d534bb20e6338484848460405161074a949392919061166b565b60405180910390a150505050565b60355460ff1661077b57604051635740729760e01b815260040160405180910390fd5b60345461079b57604051635740729760e01b815260040160405180910390fd5b603754600160a01b900460ff16156107c65760405163c629ac8160e01b815260040160405180910390fd5b6107ce610b08565b600061085c89898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8d018190048102820181019092528b815292508b91508a9081908401838280828437600081840152601f19601f820116905080830192505050505050506108578e8e33610b61565b610c82565b90506000818c8c6040516020016108759392919061169d565b6040516020818303038152906040528051906020012090506108a68160009081526036602052604090205460ff1690565b156108c357604051623e493160e81b815260040160405180910390fd5b61096b3389898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8d018190048102820181019092528b815292508b91508a908190840183828082843760009201919091525050604080516020808c0282810182019093528b82528994509092508b918b91829190850190849080828437600092019190915250610d7692505050565b6109ac848480806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250506034549150849050610e81565b6109c9576040516309bde33960e01b815260040160405180910390fd5b60008181526036602052604090819020805460ff191660011790555163799758b960e01b8152600481018d9052336024820152604481018c90526110049063799758b990606401600060405180830381600087803b158015610a2a57600080fd5b505af1158015610a3e573d6000803e3d6000fd5b5050604080518f81523360208201529081018e90527f717c40d7a8dbe67bb6371e964c24423645711d1624980e1c74e6956fc21088059250606001905060405180910390a15050610a8e60018055565b50505050505050505050565b600081604051602001610aad91906116c4565b6040516020818303038152906040528051906020012083604051602001610ad491906116c4565b604051602081830303815290604052805190602001201490505b92915050565b015190565b91018082526020908101910152565b600260015403610b5a5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610352565b6002600155565b600060026040518060400160405280601481526020017342696e616e63652d436861696e2d47616e67657360601b815250610bbe85604051602001610ba891815260200190565b6040516020818303038152906040526000610e97565b6040516bffffffffffffffffffffffff19606087901b166020820152610bf7906034016040516020818303038152906040526001610e97565b610c0d88604051602001610ba891815260200190565b604051602001610c2094939291906116e0565b60408051601f1981840301815290829052610c3a916116c4565b602060405180830381855afa158015610c57573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610c7a919061180f565b949350505050565b60608351602114610ca657604051638152ea1b60e01b815260040160405180910390fd5b8251604014610cc857604051635e4bd79760e11b815260040160405180910390fd5b60408051608180825260c08201909252600091602082018180368337019050509050610cf8818660006021611069565b610d06818560216040611069565b610d358184604051602001610d1d91815260200190565b60405160208183030381529060405260616020611069565b604080516014808252818301909252600091602082018180368337019050509050815160148282856069600019fa610d6c57600080fd5b5095945050505050565b606060005b8251811015610dd45781838281518110610d9757610d9761183e565b6020026020010151604051602001610db0929190611854565b60405160208183030381529060405291508080610dcc9061188c565b915050610d7b565b5060006040518060400160405280601481526020017342696e616e63652d436861696e2d47616e67657360601b81525087878660345486604051602001610e20969594939291906118a5565b60408051601f1981840301815291905280516020909101206033549091506001600160a01b0316610e5182876110e0565b6001600160a01b031614610e78576040516356b00a4f60e11b815260040160405180910390fd5b50505050505050565b600082610e8e85846110fc565b14949350505050565b6060600083516002610ea99190611916565b67ffffffffffffffff811115610ec157610ec1611828565b6040519080825280601f01601f191660200182016040528015610eeb576020820181803683370190505b5060408051808201909152601081526f181899199a1a9b1b9c1cb0b131b232b360811b602082015290915060005b855181101561103157818251878381518110610f3757610f3761183e565b0160200151610f49919060f81c611943565b81518110610f5957610f5961183e565b01602001516001600160f81b03191683610f74836002611916565b81518110610f8457610f8461183e565b60200101906001600160f81b031916908160001a905350818251878381518110610fb057610fb061183e565b0160200151610fc2919060f81c611957565b81518110610fd257610fd261183e565b01602001516001600160f81b03191683610fed836002611916565b610ff890600161196b565b815181106110085761100861183e565b60200101906001600160f81b031916908160001a905350806110298161188c565b915050610f19565b5083156110615781604051602001611049919061197e565b60405160208183030381529060405292505050610aee565b509392505050565b60005b818110156110d9578381815181106110865761108661183e565b01602001516001600160f81b03191685846110a08161188c565b9550815181106110b2576110b261183e565b60200101906001600160f81b031916908160001a9053506110d28161188c565b905061106c565b5050505050565b60008060006110ef8585611141565b9150915061106181611186565b600081815b84518110156110615761112d828683815181106111205761112061183e565b60200260200101516112d3565b9150806111398161188c565b915050611101565b60008082516041036111775760208301516040840151606085015160001a61116b87828585611305565b9450945050505061117f565b506000905060025b9250929050565b600081600481111561119a5761119a6119a8565b036111a25750565b60018160048111156111b6576111b66119a8565b036112035760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610352565b6002816004811115611217576112176119a8565b036112645760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610352565b6003816004811115611278576112786119a8565b036112d05760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610352565b50565b60008183106112ef5760008281526020849052604090206112fe565b60008381526020839052604090205b9392505050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561133c57506000905060036113c0565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611390573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166113b9576000600192509250506113c0565b9150600090505b94509492505050565b600080604083850312156113dc57600080fd5b8235915060208301356001600160a01b03811681146113fa57600080fd5b809150509250929050565b60005b83811015611420578181015183820152602001611408565b50506000910152565b6020815260008251806020840152611448816040850160208701611405565b601f01601f19169190910160400192915050565b60008083601f84011261146e57600080fd5b50813567ffffffffffffffff81111561148657600080fd5b60208301915083602082850101111561117f57600080fd5b600080600080604085870312156114b457600080fd5b843567ffffffffffffffff808211156114cc57600080fd5b6114d88883890161145c565b909650945060208701359150808211156114f157600080fd5b506114fe8782880161145c565b95989497509550505050565b60008083601f84011261151c57600080fd5b50813567ffffffffffffffff81111561153457600080fd5b6020830191508360208260051b850101111561117f57600080fd5b60008060008060008060008060008060c08b8d03121561156e57600080fd5b8a35995060208b0135985060408b013567ffffffffffffffff8082111561159457600080fd5b6115a08e838f0161145c565b909a50985060608d01359150808211156115b957600080fd5b6115c58e838f0161145c565b909850965060808d01359150808211156115de57600080fd5b6115ea8e838f0161145c565b909650945060a08d013591508082111561160357600080fd5b506116108d828e0161150a565b915080935050809150509295989b9194979a5092959850565b60006020828403121561163b57600080fd5b5035919050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60408152600061167f604083018688611642565b8281036020840152611692818587611642565b979650505050505050565b600084516116af818460208901611405565b91909101928352506020820152604001919050565b600082516116d6818460208701611405565b9190910192915050565b7f7b226163636f756e745f6e756d626572223a2230222c22636861696e5f6964228152611d1160f11b602082015260008551611723816022850160208a01611405565b7f222c2264617461223a6e756c6c2c226d656d6f223a22222c226d736773223a5b6022918401918201526a3d9130b6b7bab73a111d1160a91b6042820152855161177481604d840160208a01611405565b6e1116113932b1b4b834b2b73a111d1160891b604d929091019182015284516117a481605c840160208901611405565b711116113a37b5b2b72fb9bcb6b137b6111d1160711b605c929091019182015283516117d781606e840160208801611405565b7f227d5d2c2273657175656e6365223a2230222c22736f75726365223a2230227d606e9290910191820152608e019695505050505050565b60006020828403121561182157600080fd5b5051919050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60008351611866818460208801611405565b9190910191825250602001919050565b634e487b7160e01b600052601160045260246000fd5b60006001820161189e5761189e611876565b5060010190565b600087516118b7818460208c01611405565b606088901b6bffffffffffffffffffffffff191690830190815286516118e4816014840160208b01611405565b0160148101869052603481018590528351611906816054840160208801611405565b0160540198975050505050505050565b8082028115828204841417610aee57610aee611876565b634e487b7160e01b600052601260045260246000fd5b6000826119525761195261192d565b500490565b6000826119665761196661192d565b500690565b80820180821115610aee57610aee611876565b61060f60f31b81526000825161199b816002850160208701611405565b9190910160020192915050565b634e487b7160e01b600052602160045260246000fdfea164736f6c6343000811000a", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/1abdfbf3aeb86909c2220b79bf92b87ddff64b54", + Code: "608060405234801561001057600080fd5b50600436106100cf5760003560e01c80639fcb50121161008c578063de88700b11610066578063de88700b146101b2578063e33f8d32146101dd578063e842426a14610200578063f1fad1041461021357600080fd5b80639fcb50121461016f578063ac4317511461018c578063bfb5a6a11461019f57600080fd5b8063046f7da2146100d45780632eb4a7ab146100de5780634bf6c882146100fa578063572c99801461011457806374be2150146101275780638456cb5914610167575b600080fd5b6100dc61021b565b005b6100e760345481565b6040519081526020015b60405180910390f35b610102600881565b60405160ff90911681526020016100f1565b6100dc61012236600461125e565b61027e565b61015a6040518060400160405280601481526020017342696e616e63652d436861696e2d47616e67657360601b81525081565b6040516100f191906112be565b6100dc61030f565b60355461017c9060ff1681565b60405190151581526020016100f1565b6100dc61019a36600461133a565b610378565b6100dc6101ad3660046113eb565b6107a3565b6037546101c5906001600160a01b031681565b6040516001600160a01b0390911681526020016100f1565b61017c6101eb3660046114c5565b60009081526036602052604090205460ff1690565b6033546101c5906001600160a01b031681565b610102601181565b6037546001600160a01b031633146102465760405163f2771a9960e01b815260040160405180910390fd5b6037805460ff60a01b191690556040517f62451d457bc659158be6e6247f56ec1df424a5c7597f71c20c2bc44e0965c8f990600090a1565b6037546001600160a01b031633146102a95760405163f2771a9960e01b815260040160405180910390fd5b604051638525db0360e01b8152600481018390526001600160a01b038216602482015261100490638525db0390604401600060405180830381600087803b1580156102f357600080fd5b505af1158015610307573d6000803e3d6000fd5b505050505050565b6037546001600160a01b0316331461033a5760405163f2771a9960e01b815260040160405180910390fd5b6037805460ff60a01b1916600160a01b1790556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e75290600090a1565b33611007146103a357604051630f22c43960e41b815261100760048201526024015b60405180910390fd5b61040d6040518060400160405280600f81526020016e617070726f76616c4164647265737360881b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610ae59050565b156104d7576014811461043b5783838383604051630a5a604160e01b815260040161039a9493929190611507565b6000610481601484848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610b3f9050565b90506001600160a01b0381166104b25784848484604051630a5a604160e01b815260040161039a9493929190611507565b603380546001600160a01b0319166001600160a01b0392909216919091179055610760565b61053c6040518060400160405280600a8152602001691b595c9adb19549bdbdd60b21b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610ae59050565b1561060c5760355460ff1615610565576040516379b3306f60e11b815260040160405180910390fd5b6020811461058e5783838383604051630a5a604160e01b815260040161039a9493929190611507565b604080516020601f84018190048102820181019092528281526000916105cf918585808385018382808284376000920191909152509293925050610b3f9050565b9050806105f75784848484604051630a5a604160e01b815260040161039a9493929190611507565b6034556035805460ff19166001179055610760565b6106756040518060400160405280600e81526020016d30b9b9b2ba283937ba32b1ba37b960911b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610ae59050565b1561073f57601481146106a35783838383604051630a5a604160e01b815260040161039a9493929190611507565b60006106e9601484848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610b3f9050565b90506001600160a01b03811661071a5784848484604051630a5a604160e01b815260040161039a9493929190611507565b603780546001600160a01b0319166001600160a01b0392909216919091179055610760565b838383836040516325ee20d560e21b815260040161039a9493929190611507565b7ff1ce9b2cbf50eeb05769a29e2543fd350cab46894a7dd9978a12d534bb20e633848484846040516107959493929190611507565b60405180910390a150505050565b60355460ff166107c657604051635740729760e01b815260040160405180910390fd5b6034546107e657604051635740729760e01b815260040160405180910390fd5b603754600160a01b900460ff16156108115760405163c629ac8160e01b815260040160405180910390fd5b610819610b44565b60006108a789898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8d018190048102820181019092528b815292508b91508a9081908401838280828437600081840152601f19601f820116905080830192505050505050506108a28e8e33610b9d565b610cbe565b90506000818c8c6040516020016108c093929190611539565b6040516020818303038152906040528051906020012090506108f18160009081526036602052604090205460ff1690565b1561090e57604051623e493160e81b815260040160405180910390fd5b6109b63389898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8d018190048102820181019092528b815292508b91508a908190840183828082843760009201919091525050604080516020808c0282810182019093528b82528994509092508b918b91829190850190849080828437600092019190915250610d9692505050565b6109f7848480806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250506034549150849050610ea1565b610a14576040516309bde33960e01b815260040160405180910390fd5b60008181526036602052604090819020805460ff191660011790555163799758b960e01b8152600481018d9052336024820152604481018c90526110049063799758b990606401600060405180830381600087803b158015610a7557600080fd5b505af1158015610a89573d6000803e3d6000fd5b5050604080518f81523360208201529081018e90527f717c40d7a8dbe67bb6371e964c24423645711d1624980e1c74e6956fc21088059250606001905060405180910390a15050610ad960018055565b50505050505050505050565b600081604051602001610af89190611560565b6040516020818303038152906040528051906020012083604051602001610b1f9190611560565b604051602081830303815290604052805190602001201490505b92915050565b015190565b600260015403610b965760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161039a565b6002600155565b600060026040518060400160405280601481526020017342696e616e63652d436861696e2d47616e67657360601b815250610bfa85604051602001610be491815260200190565b6040516020818303038152906040526000610eb7565b6040516bffffffffffffffffffffffff19606087901b166020820152610c33906034016040516020818303038152906040526001610eb7565b610c4988604051602001610be491815260200190565b604051602001610c5c949392919061157c565b60408051601f1981840301815290829052610c7691611560565b602060405180830381855afa158015610c93573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610cb691906116ab565b949350505050565b60608351602114610ce257604051638152ea1b60e01b815260040160405180910390fd5b8251604014610d0457604051635e4bd79760e11b815260040160405180910390fd5b6040805160208082528183019092526000916020820181803683370190505090508260208201526000858583604051602001610d42939291906116da565b60408051808303601f190181526014808452838301909252925060009190602082018180368337019050509050815160146020830182602086016069600019fa610d8b57600080fd5b509695505050505050565b606060005b8251811015610df45781838281518110610db757610db761171d565b6020026020010151604051602001610dd0929190611733565b60405160208183030381529060405291508080610dec9061176b565b915050610d9b565b5060006040518060400160405280601481526020017342696e616e63652d436861696e2d47616e67657360601b81525087878660345486604051602001610e4096959493929190611784565b60408051601f1981840301815291905280516020909101206033549091506001600160a01b0316610e718683611089565b6001600160a01b031614610e98576040516356b00a4f60e11b815260040160405180910390fd5b50505050505050565b600082610eae8584611123565b14949350505050565b6060600083516002610ec991906117f5565b67ffffffffffffffff811115610ee157610ee16116c4565b6040519080825280601f01601f191660200182016040528015610f0b576020820181803683370190505b5060408051808201909152601081526f181899199a1a9b1b9c1cb0b131b232b360811b602082015290915060005b855181101561105157818251878381518110610f5757610f5761171d565b0160200151610f69919060f81c611822565b81518110610f7957610f7961171d565b01602001516001600160f81b03191683610f948360026117f5565b81518110610fa457610fa461171d565b60200101906001600160f81b031916908160001a905350818251878381518110610fd057610fd061171d565b0160200151610fe2919060f81c611836565b81518110610ff257610ff261171d565b01602001516001600160f81b0319168361100d8360026117f5565b61101890600161184a565b815181106110285761102861171d565b60200101906001600160f81b031916908160001a905350806110498161176b565b915050610f39565b5083156110815781604051602001611069919061185d565b60405160208183030381529060405292505050610b39565b509392505050565b600082516041146110ad576040516356b00a4f60e11b815260040160405180910390fd5b60208301516040840151606085015160001a601b8110156110d6576110d3601b82611887565b90505b601b8160ff1610806110eb5750601c8160ff16115b15611109576040516356b00a4f60e11b815260040160405180910390fd5b600061111786838686611168565b50979650505050505050565b600081815b845181101561108157611154828683815181106111475761114761171d565b602002602001015161122c565b9150806111608161176b565b915050611128565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561119f5750600090506003611223565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156111f3573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661121c57600060019250925050611223565b9150600090505b94509492505050565b6000818310611248576000828152602084905260409020611257565b60008381526020839052604090205b9392505050565b6000806040838503121561127157600080fd5b8235915060208301356001600160a01b038116811461128f57600080fd5b809150509250929050565b60005b838110156112b557818101518382015260200161129d565b50506000910152565b60208152600082518060208401526112dd81604085016020870161129a565b601f01601f19169190910160400192915050565b60008083601f84011261130357600080fd5b50813567ffffffffffffffff81111561131b57600080fd5b60208301915083602082850101111561133357600080fd5b9250929050565b6000806000806040858703121561135057600080fd5b843567ffffffffffffffff8082111561136857600080fd5b611374888389016112f1565b9096509450602087013591508082111561138d57600080fd5b5061139a878288016112f1565b95989497509550505050565b60008083601f8401126113b857600080fd5b50813567ffffffffffffffff8111156113d057600080fd5b6020830191508360208260051b850101111561133357600080fd5b60008060008060008060008060008060c08b8d03121561140a57600080fd5b8a35995060208b0135985060408b013567ffffffffffffffff8082111561143057600080fd5b61143c8e838f016112f1565b909a50985060608d013591508082111561145557600080fd5b6114618e838f016112f1565b909850965060808d013591508082111561147a57600080fd5b6114868e838f016112f1565b909650945060a08d013591508082111561149f57600080fd5b506114ac8d828e016113a6565b915080935050809150509295989b9194979a5092959850565b6000602082840312156114d757600080fd5b5035919050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60408152600061151b6040830186886114de565b828103602084015261152e8185876114de565b979650505050505050565b6000845161154b81846020890161129a565b91909101928352506020820152604001919050565b6000825161157281846020870161129a565b9190910192915050565b7f7b226163636f756e745f6e756d626572223a2230222c22636861696e5f6964228152611d1160f11b6020820152600085516115bf816022850160208a0161129a565b7f222c2264617461223a6e756c6c2c226d656d6f223a22222c226d736773223a5b6022918401918201526a3d9130b6b7bab73a111d1160a91b6042820152855161161081604d840160208a0161129a565b6e1116113932b1b4b834b2b73a111d1160891b604d9290910191820152845161164081605c84016020890161129a565b711116113a37b5b2b72fb9bcb6b137b6111d1160711b605c9290910191820152835161167381606e84016020880161129a565b7f227d5d2c2273657175656e6365223a2230222c22736f75726365223a2230227d606e9290910191820152608e019695505050505050565b6000602082840312156116bd57600080fd5b5051919050565b634e487b7160e01b600052604160045260246000fd5b600084516116ec81846020890161129a565b84519083019061170081836020890161129a565b845191019061171381836020880161129a565b0195945050505050565b634e487b7160e01b600052603260045260246000fd5b6000835161174581846020880161129a565b9190910191825250602001919050565b634e487b7160e01b600052601160045260246000fd5b60006001820161177d5761177d611755565b5060010190565b60008751611796818460208c0161129a565b606088901b6bffffffffffffffffffffffff191690830190815286516117c3816014840160208b0161129a565b01601481018690526034810185905283516117e581605484016020880161129a565b0160540198975050505050505050565b8082028115828204841417610b3957610b39611755565b634e487b7160e01b600052601260045260246000fd5b6000826118315761183161180c565b500490565b6000826118455761184561180c565b500690565b80820180821115610b3957610b39611755565b61060f60f31b81526000825161187a81600285016020870161129a565b9190910160020192915050565b60ff8181168382160190811115610b3957610b3961175556fea164736f6c6343000811000a", }, }, } From e2e2ac750cb1d825172df1d345720d12b87a3776 Mon Sep 17 00:00:00 2001 From: Roshan <48975233+Pythonberg1997@users.noreply.github.com> Date: Mon, 8 Jan 2024 12:06:27 +0800 Subject: [PATCH 15/28] chore: fix lint issue (#2139) --- params/config.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/params/config.go b/params/config.go index 7da699661b..7d43c6e19f 100644 --- a/params/config.go +++ b/params/config.go @@ -464,8 +464,8 @@ type ChainConfig struct { // Fork scheduling was switched from blocks to timestamps here ShanghaiTime *uint64 `json:"shanghaiTime,omitempty"` // Shanghai switch time (nil = no fork, 0 = already on shanghai) - KeplerTime *uint64 `json:"keplerTime,omitempty"` // Kepler switch time (nil = no fork, 0 = already activated) - FeynmanTime *uint64 `json:"feynmanTime,omitempty"` // Feynman switch time (nil = no fork, 0 = already activated) + KeplerTime *uint64 `json:"keplerTime,omitempty"` // Kepler switch time (nil = no fork, 0 = already activated) + FeynmanTime *uint64 `json:"feynmanTime,omitempty"` // Feynman switch time (nil = no fork, 0 = already activated) CancunTime *uint64 `json:"cancunTime,omitempty"` // Cancun switch time (nil = no fork, 0 = already on cancun) PragueTime *uint64 `json:"pragueTime,omitempty"` // Prague switch time (nil = no fork, 0 = already on prague) VerkleTime *uint64 `json:"verkleTime,omitempty"` // Verkle switch time (nil = no fork, 0 = already on verkle) From 7ade1d2a5db7a3ac9cdd7149ab656d638f92574f Mon Sep 17 00:00:00 2001 From: Roshan <48975233+Pythonberg1997@users.noreply.github.com> Date: Mon, 15 Jan 2024 10:54:54 +0800 Subject: [PATCH 16/28] fix: compare headers' number in Big.Int rather than Uint64 (#2158) --- core/vm/contracts.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/vm/contracts.go b/core/vm/contracts.go index 736341be11..3fa2eb8b79 100644 --- a/core/vm/contracts.go +++ b/core/vm/contracts.go @@ -1430,7 +1430,7 @@ func (c *verifyDoubleSignEvidence) Run(input []byte) ([]byte, error) { } // basic check - if header1.Number.Uint64() != header2.Number.Uint64() { + if header1.Number.Cmp(header2.Number) != 0 { return nil, ErrExecutionReverted } if header1.ParentHash != header2.ParentHash { From 13f17f2970b50806f2b28f9e3886dece97bd9d4a Mon Sep 17 00:00:00 2001 From: Roshan <48975233+Pythonberg1997@users.noreply.github.com> Date: Mon, 22 Jan 2024 12:15:05 +0800 Subject: [PATCH 17/28] fix: adjusted the timing of `UpgradeBuildInSystemContract` (#2166) * fix: adjusted the timing of `UpgradeBuildInSystemContract` * fix review comments * fix review comments * fix review comments * fix review comments * add `UpgradeBuildInSystemContract` to `traceBlock` * add `UpgradeBuildInSystemContract` to `traceBlock` * add `UpgradeBuildInSystemContract` to all trace functions --- consensus/parlia/parlia.go | 27 ++++--- core/chain_makers.go | 6 +- core/state_processor.go | 7 +- eth/tracers/api.go | 142 +++++++++++++++++++++++++++++++------ miner/worker.go | 6 +- 5 files changed, 154 insertions(+), 34 deletions(-) diff --git a/consensus/parlia/parlia.go b/consensus/parlia/parlia.go index 6bba35f1a9..309129e201 100644 --- a/consensus/parlia/parlia.go +++ b/consensus/parlia/parlia.go @@ -1126,6 +1126,15 @@ func (p *Parlia) Finalize(chain consensus.ChainHeaderReader, header *types.Heade cx := chainContext{Chain: chain, parlia: p} + parent := chain.GetHeaderByHash(header.ParentHash) + if parent == nil { + return errors.New("parent not found") + } + + if p.chainConfig.IsFeynman(header.Number, header.Time) { + systemcontracts.UpgradeBuildInSystemContract(p.chainConfig, header.Number, parent.Time, header.Time, state) + } + // No block rewards in PoA, so the state remains as is and uncles are dropped if header.Number.Cmp(common.Big1) == 0 { err := p.initContract(state, header, cx, txs, receipts, systemTxs, usedGas, false) @@ -1168,10 +1177,6 @@ func (p *Parlia) Finalize(chain consensus.ChainHeaderReader, header *types.Heade } } - parent := chain.GetHeaderByHash(header.ParentHash) - if parent == nil { - return errors.New("parent not found") - } if p.chainConfig.IsOnFeynman(header.Number, parent.Time, header.Time) { err := p.initializeFeynmanContract(state, header, cx, txs, receipts, systemTxs, usedGas, false) if err != nil { @@ -1207,6 +1212,16 @@ func (p *Parlia) FinalizeAndAssemble(chain consensus.ChainHeaderReader, header * if receipts == nil { receipts = make([]*types.Receipt, 0) } + + parent := chain.GetHeaderByHash(header.ParentHash) + if parent == nil { + return nil, nil, errors.New("parent not found") + } + + if p.chainConfig.IsFeynman(header.Number, header.Time) { + systemcontracts.UpgradeBuildInSystemContract(p.chainConfig, header.Number, parent.Time, header.Time, state) + } + if header.Number.Cmp(common.Big1) == 0 { err := p.initContract(state, header, cx, &txs, &receipts, nil, &header.GasUsed, true) if err != nil { @@ -1251,10 +1266,6 @@ func (p *Parlia) FinalizeAndAssemble(chain consensus.ChainHeaderReader, header * } } - parent := chain.GetHeaderByHash(header.ParentHash) - if parent == nil { - return nil, nil, errors.New("parent not found") - } if p.chainConfig.IsOnFeynman(header.Number, parent.Time, header.Time) { err := p.initializeFeynmanContract(state, header, cx, &txs, &receipts, nil, &header.GasUsed, true) if err != nil { diff --git a/core/chain_makers.go b/core/chain_makers.go index cc17cd74cd..842ef75a08 100644 --- a/core/chain_makers.go +++ b/core/chain_makers.go @@ -308,7 +308,11 @@ func GenerateChain(config *params.ChainConfig, parent *types.Block, engine conse if config.DAOForkSupport && config.DAOForkBlock != nil && config.DAOForkBlock.Cmp(b.header.Number) == 0 { misc.ApplyDAOHardFork(statedb) } - systemcontracts.UpgradeBuildInSystemContract(config, b.header.Number, parent.Time(), b.header.Time, statedb) + + if !config.IsFeynman(b.header.Number, b.header.Time) { + systemcontracts.UpgradeBuildInSystemContract(config, b.header.Number, parent.Time(), b.header.Time, statedb) + } + // Execute any user modifications to the block if gen != nil { gen(i, b) diff --git a/core/state_processor.go b/core/state_processor.go index 25cb7df409..39ac9b529e 100644 --- a/core/state_processor.go +++ b/core/state_processor.go @@ -73,12 +73,15 @@ func (p *StateProcessor) Process(block *types.Block, statedb *state.StateDB, cfg if p.config.DAOForkSupport && p.config.DAOForkBlock != nil && p.config.DAOForkBlock.Cmp(block.Number()) == 0 { misc.ApplyDAOHardFork(statedb) } - // Handle upgrade build-in system contract code + lastBlock := p.bc.GetBlockByHash(block.ParentHash()) if lastBlock == nil { return statedb, nil, nil, 0, fmt.Errorf("could not get parent block") } - systemcontracts.UpgradeBuildInSystemContract(p.config, blockNumber, lastBlock.Time(), block.Time(), statedb) + if !p.config.IsFeynman(block.Number(), block.Time()) { + // Handle upgrade build-in system contract code + systemcontracts.UpgradeBuildInSystemContract(p.config, blockNumber, lastBlock.Time(), block.Time(), statedb) + } var ( context = NewEVMBlockContext(header, p.bc, nil) diff --git a/eth/tracers/api.go b/eth/tracers/api.go index b4f80a6b08..bfa8a38493 100644 --- a/eth/tracers/api.go +++ b/eth/tracers/api.go @@ -36,6 +36,7 @@ import ( "github.com/ethereum/go-ethereum/core" "github.com/ethereum/go-ethereum/core/rawdb" "github.com/ethereum/go-ethereum/core/state" + "github.com/ethereum/go-ethereum/core/systemcontracts" "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/core/vm" "github.com/ethereum/go-ethereum/eth/tracers/logger" @@ -522,12 +523,18 @@ func (api *API) IntermediateRoots(ctx context.Context, hash common.Hash, config } defer release() + // upgrade build-in system contract before tracing non-system tx if Feynman is not enabled + if !api.backend.ChainConfig().IsFeynman(block.Number(), block.Time()) { + systemcontracts.UpgradeBuildInSystemContract(api.backend.ChainConfig(), block.Number(), parent.Time(), block.Time(), statedb) + } + var ( roots []common.Hash signer = types.MakeSigner(api.backend.ChainConfig(), block.Number(), block.Time()) chainConfig = api.backend.ChainConfig() vmctx = core.NewEVMBlockContext(block.Header(), api.chainContext(ctx), nil) deleteEmptyObjects = chainConfig.IsEIP158(block.Number()) + beforeSystemTx = true ) for i, tx := range block.Transactions() { if err := ctx.Err(); err != nil { @@ -546,6 +553,11 @@ func (api *API) IntermediateRoots(ctx context.Context, hash common.Hash, config statedb.SetBalance(consensus.SystemAddress, big.NewInt(0)) statedb.AddBalance(vmctx.Coinbase, balance) } + + if beforeSystemTx && api.backend.ChainConfig().IsFeynman(block.Number(), block.Time()) { + systemcontracts.UpgradeBuildInSystemContract(api.backend.ChainConfig(), block.Number(), parent.Time(), block.Time(), statedb) + beforeSystemTx = false + } } } @@ -602,6 +614,11 @@ func (api *API) traceBlock(ctx context.Context, block *types.Block, config *Trac } defer release() + // upgrade build-in system contract before tracing non-system tx if Feynman is not enabled + if !api.backend.ChainConfig().IsFeynman(block.Number(), block.Time()) { + systemcontracts.UpgradeBuildInSystemContract(api.backend.ChainConfig(), block.Number(), parent.Time(), block.Time(), statedb) + } + // JS tracers have high overhead. In this case run a parallel // process that generates states in one thread and traces txes // in separate worker threads. @@ -610,18 +627,33 @@ func (api *API) traceBlock(ctx context.Context, block *types.Block, config *Trac return api.traceBlockParallel(ctx, block, statedb, config) } } + // Native tracers have low overhead var ( - txs = block.Transactions() - blockHash = block.Hash() - is158 = api.backend.ChainConfig().IsEIP158(block.Number()) - blockCtx = core.NewEVMBlockContext(block.Header(), api.chainContext(ctx), nil) - signer = types.MakeSigner(api.backend.ChainConfig(), block.Number(), block.Time()) - results = make([]*txTraceResult, len(txs)) + txs = block.Transactions() + blockHash = block.Hash() + is158 = api.backend.ChainConfig().IsEIP158(block.Number()) + blockCtx = core.NewEVMBlockContext(block.Header(), api.chainContext(ctx), nil) + signer = types.MakeSigner(api.backend.ChainConfig(), block.Number(), block.Time()) + results = make([]*txTraceResult, len(txs)) + beforeSystemTx = true ) for i, tx := range txs { + // upgrade build-in system contract before tracing system tx if Feynman is enabled + if posa, ok := api.backend.Engine().(consensus.PoSA); ok { + if isSystem, _ := posa.IsSystemTransaction(tx, block.Header()); isSystem { + if beforeSystemTx { + if api.backend.ChainConfig().IsFeynman(block.Number(), block.Time()) { + systemcontracts.UpgradeBuildInSystemContract(api.backend.ChainConfig(), block.Number(), parent.Time(), block.Time(), statedb) + } + beforeSystemTx = false + } + } + } + // Generate the next state snapshot fast without tracing msg, _ := core.TransactionToMessage(tx, signer, block.BaseFee()) + txctx := &Context{ BlockHash: blockHash, BlockNumber: block.Number(), @@ -682,10 +714,36 @@ func (api *API) traceBlockParallel(ctx context.Context, block *types.Block, stat }) } + // upgrade build-in system contract before tracing non-system tx if Feynman is not enabled + parent, err := api.blockByNumberAndHash(ctx, rpc.BlockNumber(block.NumberU64()-1), block.ParentHash()) + if err != nil { + return nil, err + } + if !api.backend.ChainConfig().IsFeynman(block.Number(), block.Time()) { + systemcontracts.UpgradeBuildInSystemContract(api.backend.ChainConfig(), block.Number(), parent.Time(), block.Time(), statedb) + } + // Feed the transactions into the tracers and return - var failed error + var ( + failed error + beforeSystemTx = true + ) txloop: for i, tx := range txs { + var isSystem bool + // upgrade build-in system contract before tracing system tx if Feynman is enabled + if posa, ok := api.backend.Engine().(consensus.PoSA); ok { + isSystem, _ = posa.IsSystemTransaction(tx, block.Header()) + if isSystem { + if beforeSystemTx { + if api.backend.ChainConfig().IsFeynman(block.Number(), block.Time()) { + systemcontracts.UpgradeBuildInSystemContract(api.backend.ChainConfig(), block.Number(), parent.Time(), block.Time(), statedb) + } + beforeSystemTx = false + } + } + } + // Send the trace task over for execution task := &txTraceTask{statedb: statedb.Copy(), index: i} select { @@ -697,13 +755,11 @@ txloop: // Generate the next state snapshot fast without tracing msg, _ := core.TransactionToMessage(tx, signer, block.BaseFee()) - if posa, ok := api.backend.Engine().(consensus.PoSA); ok { - if isSystem, _ := posa.IsSystemTransaction(tx, block.Header()); isSystem { - balance := statedb.GetBalance(consensus.SystemAddress) - if balance.Cmp(common.Big0) > 0 { - statedb.SetBalance(consensus.SystemAddress, big.NewInt(0)) - statedb.AddBalance(block.Header().Coinbase, balance) - } + if isSystem { + balance := statedb.GetBalance(consensus.SystemAddress) + if balance.Cmp(common.Big0) > 0 { + statedb.SetBalance(consensus.SystemAddress, big.NewInt(0)) + statedb.AddBalance(block.Header().Coinbase, balance) } } statedb.SetTxContext(tx.Hash(), i) @@ -754,6 +810,11 @@ func (api *API) standardTraceBlockToFile(ctx context.Context, block *types.Block } defer release() + // upgrade build-in system contract before tracing non-system tx if Feynman is not enabled + if !api.backend.ChainConfig().IsFeynman(block.Number(), block.Time()) { + systemcontracts.UpgradeBuildInSystemContract(api.backend.ChainConfig(), block.Number(), parent.Time(), block.Time(), statedb) + } + // Retrieve the tracing configurations, or use default values var ( logConfig logger.Config @@ -782,7 +843,23 @@ func (api *API) standardTraceBlockToFile(ctx context.Context, block *types.Block // Note: This copies the config, to not screw up the main config chainConfig, canon = overrideConfig(chainConfig, config.Overrides) } + + beforeSystemTx := true for i, tx := range block.Transactions() { + // upgrade build-in system contract before tracing system tx if Feynman is enabled + var isSystem bool + if posa, ok := api.backend.Engine().(consensus.PoSA); ok { + isSystem, _ = posa.IsSystemTransaction(tx, block.Header()) + if isSystem { + if beforeSystemTx { + if api.backend.ChainConfig().IsFeynman(block.Number(), block.Time()) { + systemcontracts.UpgradeBuildInSystemContract(api.backend.ChainConfig(), block.Number(), parent.Time(), block.Time(), statedb) + } + beforeSystemTx = false + } + } + } + // Prepare the transaction for un-traced execution var ( msg, _ = core.TransactionToMessage(tx, signer, block.BaseFee()) @@ -814,13 +891,11 @@ func (api *API) standardTraceBlockToFile(ctx context.Context, block *types.Block } // Execute the transaction and flush any traces to disk vmenv := vm.NewEVM(vmctx, txContext, statedb, chainConfig, vmConf) - if posa, ok := api.backend.Engine().(consensus.PoSA); ok { - if isSystem, _ := posa.IsSystemTransaction(tx, block.Header()); isSystem { - balance := statedb.GetBalance(consensus.SystemAddress) - if balance.Cmp(common.Big0) > 0 { - statedb.SetBalance(consensus.SystemAddress, big.NewInt(0)) - statedb.AddBalance(vmctx.Coinbase, balance) - } + if isSystem { + balance := statedb.GetBalance(consensus.SystemAddress) + if balance.Cmp(common.Big0) > 0 { + statedb.SetBalance(consensus.SystemAddress, big.NewInt(0)) + statedb.AddBalance(vmctx.Coinbase, balance) } } statedb.SetTxContext(tx.Hash(), i) @@ -887,6 +962,22 @@ func (api *API) TraceTransaction(ctx context.Context, hash common.Hash, config * } defer release() + parent, err := api.blockByNumberAndHash(ctx, rpc.BlockNumber(block.NumberU64()-1), block.ParentHash()) + if err != nil { + return nil, err + } + if !api.backend.ChainConfig().IsFeynman(block.Number(), block.Time()) { + // upgrade build-in system contract before trace if Feynman is not enabled + systemcontracts.UpgradeBuildInSystemContract(api.backend.ChainConfig(), block.Number(), parent.Time(), block.Time(), statedb) + } else { + // upgrade build-in system contract before trace system tx if Feynman is enabled + if posa, ok := api.backend.Engine().(consensus.PoSA); ok { + if isSystem, _ := posa.IsSystemTransaction(tx, block.Header()); isSystem { + systemcontracts.UpgradeBuildInSystemContract(api.backend.ChainConfig(), block.Number(), parent.Time(), block.Time(), statedb) + } + } + } + txctx := &Context{ BlockHash: blockHash, BlockNumber: block.Number(), @@ -934,6 +1025,15 @@ func (api *API) TraceCall(ctx context.Context, args ethapi.TransactionArgs, bloc } defer release() + // upgrade build-in system contract before tracing if Feynman is not enabled + parent, err := api.blockByNumberAndHash(ctx, rpc.BlockNumber(block.NumberU64()-1), block.ParentHash()) + if err != nil { + return nil, err + } + if !api.backend.ChainConfig().IsFeynman(block.Number(), block.Time()) { + systemcontracts.UpgradeBuildInSystemContract(api.backend.ChainConfig(), block.Number(), parent.Time(), block.Time(), statedb) + } + vmctx := core.NewEVMBlockContext(block.Header(), api.chainContext(ctx), nil) // Apply the customization rules if required. if config != nil { diff --git a/miner/worker.go b/miner/worker.go index 92cfeb7021..5b26fc6118 100644 --- a/miner/worker.go +++ b/miner/worker.go @@ -913,8 +913,10 @@ func (w *worker) prepareWork(genParams *generateParams) (*environment, error) { return nil, err } - // Handle upgrade build-in system contract code - systemcontracts.UpgradeBuildInSystemContract(w.chainConfig, header.Number, parent.Time, header.Time, env.state) + if !w.chainConfig.IsFeynman(header.Number, header.Time) { + // Handle upgrade build-in system contract code + systemcontracts.UpgradeBuildInSystemContract(w.chainConfig, header.Number, parent.Time, header.Time, env.state) + } return env, nil } From 65baf18031c0207bb6f71addb6372fdf4a7f8cbd Mon Sep 17 00:00:00 2001 From: Roshan <48975233+Pythonberg1997@users.noreply.github.com> Date: Mon, 22 Jan 2024 13:01:16 +0800 Subject: [PATCH 18/28] chore: update the contracts' byte code of Feynman upgrade (#2175) * chore: update the contracts' byte code of Feynman upgrade * add `OverrideFeynman` --- cmd/geth/config.go | 4 ++++ cmd/geth/main.go | 1 + cmd/utils/flags.go | 5 +++++ core/genesis.go | 4 ++++ core/systemcontracts/upgrade.go | 12 ++++++------ eth/backend.go | 4 ++++ eth/ethconfig/config.go | 3 +++ params/config.go | 4 +--- 8 files changed, 28 insertions(+), 9 deletions(-) diff --git a/cmd/geth/config.go b/cmd/geth/config.go index f83441d510..dfde11a00e 100644 --- a/cmd/geth/config.go +++ b/cmd/geth/config.go @@ -198,6 +198,10 @@ func makeFullNode(ctx *cli.Context) (*node.Node, ethapi.Backend) { v := ctx.Uint64(utils.OverrideVerkle.Name) cfg.Eth.OverrideVerkle = &v } + if ctx.IsSet(utils.OverrideFeynman.Name) { + v := ctx.Uint64(utils.OverrideFeynman.Name) + cfg.Eth.OverrideFeynman = &v + } backend, _ := utils.RegisterEthService(stack, &cfg.Eth) // Configure log filter RPC API. diff --git a/cmd/geth/main.go b/cmd/geth/main.go index 11acc9b3c6..6435d71cac 100644 --- a/cmd/geth/main.go +++ b/cmd/geth/main.go @@ -74,6 +74,7 @@ var ( utils.OverrideKepler, utils.OverrideCancun, utils.OverrideVerkle, + utils.OverrideFeynman, utils.EnablePersonal, utils.TxPoolLocalsFlag, utils.TxPoolNoLocalsFlag, diff --git a/cmd/utils/flags.go b/cmd/utils/flags.go index c882b00da8..a4be4f78ac 100644 --- a/cmd/utils/flags.go +++ b/cmd/utils/flags.go @@ -315,6 +315,11 @@ var ( Usage: "Manually specify the Verkle fork timestamp, overriding the bundled setting", Category: flags.EthCategory, } + OverrideFeynman = &cli.Uint64Flag{ + Name: "override.feynman", + Usage: "Manually specify the Feynman fork timestamp, overriding the bundled setting", + Category: flags.EthCategory, + } SyncModeFlag = &flags.TextMarshalerFlag{ Name: "syncmode", Usage: `Blockchain sync mode ("snap" or "full")`, diff --git a/core/genesis.go b/core/genesis.go index 48625a8b75..e743e987ef 100644 --- a/core/genesis.go +++ b/core/genesis.go @@ -280,6 +280,7 @@ type ChainOverrides struct { OverrideKepler *uint64 OverrideCancun *uint64 OverrideVerkle *uint64 + OverrideFeynman *uint64 } // SetupGenesisBlock writes or updates the genesis block in db. @@ -317,6 +318,9 @@ func SetupGenesisBlockWithOverride(db ethdb.Database, triedb *trie.Database, gen if overrides != nil && overrides.OverrideVerkle != nil { config.VerkleTime = overrides.OverrideVerkle } + if overrides != nil && overrides.OverrideFeynman != nil { + config.FeynmanTime = overrides.OverrideFeynman + } } } // Just commit the new block if there is no stored genesis block. diff --git a/core/systemcontracts/upgrade.go b/core/systemcontracts/upgrade.go index 3a0c8c5103..0837c4fe8e 100644 --- a/core/systemcontracts/upgrade.go +++ b/core/systemcontracts/upgrade.go @@ -651,17 +651,17 @@ func init() { { ContractAddr: common.HexToAddress(ValidatorContract), CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/1abdfbf3aeb86909c2220b79bf92b87ddff64b54", - Code: "6080604052600436106104fb5760003560e01c806388b32f111161028c578063c6d339451161015a578063e40716a1116100cc578063f92eb86b11610085578063f92eb86b14610d2d578063f9a2bbc714610d42578063fc3e590814610d57578063fccc281314610d6c578063fd4ad81f14610d81578063fd6a687914610db057610502565b8063e40716a114610c9b578063ea321e4914610cb0578063eb57e20214610cd0578063eda5868c14610cf0578063f1fad10414610d05578063f340fa0114610d1a57610502565b8063d86222d51161011e578063d86222d514610c1d578063daacdb6614610c32578063dc927faf14610c47578063df8079e914610c5c578063e086c7b114610c71578063e1c7392a14610c8657610502565b8063c6d3394514610bbe578063c81b166214610bd3578063c8509d811461098d578063ce910b0c14610be8578063d68fb56a14610c0857610502565b8063a78abc16116101fe578063ad3c9da6116101b7578063ad3c9da614610b3d578063aef198a914610b5d578063b7ab4db514610b72578063b8cf4ef114610b94578063bf9f4995146106fe578063c466689d14610ba957610502565b8063a78abc1614610ab4578063aa82dce114610ac9578063aad5606314610ade578063aaf5eb6814610af3578063ab51bb9614610b08578063ac43175114610b1d57610502565b806396713da91161025057806396713da914610a365780639dc0926214610a4b5780639fe0f81614610a60578063a0dc275814610a75578063a1a11bf514610a8a578063a5422d5c14610a9f57610502565b806388b32f11146109c25780638a7beb01146109d75780638b5ad0c9146109ec5780638d19a41014610a015780639369d7de14610a2157610502565b806351b4dce3116103c957806370fd5bad1161033b5780637e434d54116102f45780637e434d541461094e57806381650b6214610963578063820dcaa814610978578063831d65d11461098d578063853230aa1461090f57806386249882146109ad57610502565b806370fd5bad146108d0578063718a8aa8146108e557806375d47a0a146108fa57806378dfed4a1461090f5780637942fd05146109245780637a84ca2a1461093957610502565b80635d77156c1161038d5780635d77156c1461082a5780635de1e22c1461083f57806360eba4fe1461085457806362b72cf5146108745780636969a25c146108895780636e47b482146108bb57610502565b806351b4dce3146107ab57806351e80672146107c057806355614fcc146107d5578063565c56b3146107f55780635667515a1461081557610502565b8063300c35671161046d57806343756e5c1161042657806343756e5c1461072057806345cf9daf14610735578063493279b11461074a5780634bf6c8821461076c5780634df6e0c3146107815780635192c82c1461079657610502565b8063300c35671461065b578063321d398a1461067b5780633365af3a1461069b57806335409f7f146106bb5780633b071dcc146106db5780633dffc387146106fe57610502565b8063152ad3b8116104bf578063152ad3b8146105ba5780631e4c1524146105dc5780631ff18069146105fc578063219f22d51461061157806328087028146106265780632a0ffb6e1461063b57610502565b806304c4fec61461050757806307a568471461051e5780630bee7a67146105495780630e2374a51461056b5780631182b8751461058d57610502565b3661050257005b600080fd5b34801561051357600080fd5b5061051c610dc5565b005b34801561052a57600080fd5b50610533610e37565b6040516105409190618cd1565b60405180910390f35b34801561055557600080fd5b5061055e610e3d565b6040516105409190618cfb565b34801561057757600080fd5b50610580610e42565b6040516105409190617fe4565b34801561059957600080fd5b506105ad6105a8366004617eca565b610e48565b6040516105409190618177565b3480156105c657600080fd5b506105cf611144565b604051610540919061816c565b3480156105e857600080fd5b5061051c6105f7366004617cd8565b61114d565b34801561060857600080fd5b50610533611804565b34801561061d57600080fd5b5061055e61180a565b34801561063257600080fd5b5061058061180f565b34801561064757600080fd5b5061051c610656366004617c38565b611815565b34801561066757600080fd5b5061051c610676366004617c70565b6118c2565b34801561068757600080fd5b506105cf610696366004617e77565b611c0b565b3480156106a757600080fd5b506105cf6106b6366004617e77565b611cda565b3480156106c757600080fd5b5061051c6106d6366004617c38565b611d8b565b3480156106e757600080fd5b506106f0611ef0565b604051610540929190618082565b34801561070a57600080fd5b506107136121cc565b6040516105409190618d0c565b34801561072c57600080fd5b506105806121d1565b34801561074157600080fd5b506105336121d7565b34801561075657600080fd5b5061075f6121dd565b6040516105409190618cc2565b34801561077857600080fd5b506107136121e3565b34801561078d57600080fd5b506106f06121e8565b3480156107a257600080fd5b50610533612366565b3480156107b757600080fd5b5061058061236c565b3480156107cc57600080fd5b50610580612372565b3480156107e157600080fd5b506105cf6107f0366004617c38565b612378565b34801561080157600080fd5b50610533610810366004617c38565b6123ad565b34801561082157600080fd5b506107136123fe565b34801561083657600080fd5b5061055e612403565b34801561084b57600080fd5b50610533612408565b34801561086057600080fd5b506105ad61086f366004617e77565b61240e565b34801561088057600080fd5b506105336124b4565b34801561089557600080fd5b506108a96108a4366004617e77565b6124ba565b60405161054096959493929190618011565b3480156108c757600080fd5b5061058061251e565b3480156108dc57600080fd5b50610713612524565b3480156108f157600080fd5b50610713612529565b34801561090657600080fd5b5061058061252e565b34801561091b57600080fd5b50610533612534565b34801561093057600080fd5b5061071361253a565b34801561094557600080fd5b5061053361253f565b34801561095a57600080fd5b50610580612545565b34801561096f57600080fd5b5061055e61254b565b34801561098457600080fd5b50610533612550565b34801561099957600080fd5b5061051c6109a8366004617eca565b612556565b3480156109b957600080fd5b506105336125b7565b3480156109ce57600080fd5b506105336125bd565b3480156109e357600080fd5b506105cf6125c3565b3480156109f857600080fd5b506105336125cc565b348015610a0d57600080fd5b50610533610a1c366004617c38565b6125d2565b348015610a2d57600080fd5b5061051c612612565b348015610a4257600080fd5b50610713612726565b348015610a5757600080fd5b5061058061272b565b348015610a6c57600080fd5b50610533612731565b348015610a8157600080fd5b50610533612736565b348015610a9657600080fd5b5061058061273b565b348015610aab57600080fd5b506105ad612741565b348015610ac057600080fd5b506105cf61275d565b348015610ad557600080fd5b50610580612766565b348015610aea57600080fd5b5061058061276c565b348015610aff57600080fd5b50610533612772565b348015610b1457600080fd5b5061055e6123fe565b348015610b2957600080fd5b5061051c610b38366004617e1b565b61277b565b348015610b4957600080fd5b50610533610b58366004617c38565b613014565b348015610b6957600080fd5b50610533613026565b348015610b7e57600080fd5b50610b87613033565b604051610540919061806f565b348015610ba057600080fd5b5061053361311f565b348015610bb557600080fd5b50610533613124565b348015610bca57600080fd5b50610533612524565b348015610bdf57600080fd5b5061058061312a565b348015610bf457600080fd5b506105ad610c03366004617e77565b613130565b348015610c1457600080fd5b5061053361313d565b348015610c2957600080fd5b5061053361317c565b348015610c3e57600080fd5b50610533613188565b348015610c5357600080fd5b5061058061318e565b348015610c6857600080fd5b50610580613194565b348015610c7d57600080fd5b50610533610e3d565b348015610c9257600080fd5b5061051c61319a565b348015610ca757600080fd5b5061053361342b565b348015610cbc57600080fd5b506105cf610ccb366004617ddc565b613431565b348015610cdc57600080fd5b5061051c610ceb366004617c38565b6135b7565b348015610cfc57600080fd5b5061055e6136bb565b348015610d1157600080fd5b506107136136c0565b61051c610d28366004617c38565b6136c5565b348015610d3957600080fd5b50610533613a44565b348015610d4e57600080fd5b50610580613a4a565b348015610d6357600080fd5b50610713612731565b348015610d7857600080fd5b50610580613a50565b348015610d8d57600080fd5b50610da1610d9c366004617e77565b613a56565b60405161054093929190618cda565b348015610dbc57600080fd5b50610580613b18565b6000610dd0336125d2565b9050600b8181548110610ddf57fe5b600091825260209091206001601690920201015460ff16610e1b5760405162461bcd60e51b8152600401610e12906188dd565b60405180910390fd5b6000610e2561313d565b9050610e32338383613b1e565b505050565b60095481565b606481565b61200181565b60005460609060ff16610e6d5760405162461bcd60e51b8152600401610e129061839e565b600b54610f2b57610e7c6177e4565b60015460005b81811015610f2757600b80546001810182556000919091528351600080516020618dde8339815191526016909202918201908155602080860151600080516020618e1e8339815191528401805460ff1916911515919091179055604086015180518794610f0393600080516020618dfe833981519152909101920190617813565b506060820151610f19906003830190601361788d565b505050806001019050610e82565b5050505b610f336178ba565b6000610f7485858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250613def92505050565b9150915080610f9057610f876064613fab565b9250505061113d565b815160009060ff16610fb557610fae8360200151846040015161400c565b9050611109565b825160ff166001141561110557826020015151600114610ffa57600080516020618dbe833981519152604051610fea90618796565b60405180910390a1506067611100565b6000836020015160008151811061100d57fe5b602090810291909101810151516001600160a01b0381166000908152600490925260409091205490915080158061106e575060018082038154811061104e57fe5b9060005260206000209060040201600201601c9054906101000a900460ff165b156110ac576040516001600160a01b038316907fe209c46bebf57cf265d5d9009a00870e256d9150f3ed5281ab9d9eb3cec6e4be90600090a26110f9565b60006110bb83600184036151ce565b9050806110f7576040516001600160a01b038416907fe209c46bebf57cf265d5d9009a00870e256d9150f3ed5281ab9d9eb3cec6e4be90600090a25b505b6000925050505b611109565b5060655b63ffffffff811661112e575050604080516000815260208101909152915061113d9050565b61113781613fab565b93505050505b9392505050565b60075460ff1681565b33411461116c5760405162461bcd60e51b8152600401610e1290618b2d565b3a1561118a5760405162461bcd60e51b8152600401610e129061881c565b82516040805182815260208084028201019091526060908280156111c857816020015b6111b56178de565b8152602001906001900390816111ad5790505b50905060005b82811015611272576040518060c001604052808783815181106111ed57fe5b60200260200101516001600160a01b0316815260200160006001600160a01b0316815260200160006001600160a01b0316815260200186838151811061122f57fe5b60200260200101516001600160401b03168152602001600015158152602001600081525082828151811061125f57fe5b60209081029190910101526001016111ce565b5060405163d31f968d60e01b81526120009063d31f968d9061129d9061100090600890600401618053565b60206040518083038186803b1580156112b557600080fd5b505afa1580156112c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ed9190617dbc565b156115d95780516015548181111561138f57815b8181101561138d57601580548061131457fe5b60008281526020812060046000199093019283020180546001600160a01b0319908116825560018201805490911690556002810180546001600160e81b0319169055600301559055601680548061136757fe5b6001900381819060005260206000200160006113839190617913565b9055600101611301565b505b60005b828110156115cf578181106114b75760158482815181106113af57fe5b602090810291909101810151825460018181018555600094855293839020825160049092020180546001600160a01b039283166001600160a01b0319918216178255938301519481018054958316958516959095179094556040820151600285018054606085015160808601511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b199590961692909716919091179290921692909217169290921790915560a00151600390910155855160169087908390811061147f57fe5b602090810291909101810151825460018101845560009384529282902081516114b19491909101929190910190617813565b506115c7565b8381815181106114c357fe5b6020026020010151601582815481106114d857fe5b6000918252602091829020835160049092020180546001600160a01b039283166001600160a01b0319918216178255928401516001820180549184169185169190911790556040840151600282018054606087015160808801511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b1995909716929097169190911792909216939093171692909217905560a090910151600390910155855186908290811061159357fe5b6020026020010151601682815481106115a857fe5b9060005260206000200190805190602001906115c5929190617813565b505b600101611392565b5050505050610e32565b6060806115e68386615581565b9150915060005b6001548110156116f4576001818154811061160457fe5b9060005260206000209060040201600301546000146116ec576120026001600160a01b031663092193ab6001838154811061163b57fe5b9060005260206000209060040201600301546001848154811061165a57fe5b60009182526020909120600491820201546040516001600160e01b031960e086901b168152611695926001600160a01b039092169101617fe4565b6000604051808303818588803b1580156116ae57600080fd5b505af11580156116c2573d6000803e3d6000fd5b50505050506000600182815481106116d657fe5b9060005260206000209060040201600301819055505b6001016115ed565b504715611762577f6ecc855f9440a9282c90913bbc91619fd44f5ec0b462af28d127b116f130aa4d4760405161172a9190618cd1565b60405180910390a1604051611002904780156108fc02916000818181858888f19350505050158015611760573d6000803e3d6000fd5b505b6000600381905560055581511561177d5761177d82826157ba565b6110016001600160a01b031663fc4333cd6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156117ba57600080fd5b505af11580156117ce573d6000803e3d6000fd5b50506040517fedd8d7296956dd970ab4de3f2fc03be2b0ffc615d20cd4c72c6e44f928630ebf925060009150a150505050505050565b60035481565b606881565b61200581565b33612002146118365760405162461bcd60e51b8152600401610e1290618c8b565b60005b6015548110156118be57816001600160a01b03166015828154811061185a57fe5b60009182526020909120600490910201546001600160a01b031614156118b65760016015828154811061188957fe5b9060005260206000209060040201600201601c6101000a81548160ff0219169083151502179055506118be565b600101611839565b5050565b3341146118e15760405162461bcd60e51b8152600401610e1290618b2d565b60105443116119025760405162461bcd60e51b8152600401610e1290618531565b3a156119205760405162461bcd60e51b8152600401610e129061881c565b60005460ff166119425760405162461bcd60e51b8152600401610e129061839e565b60006110023168056bc75e2d63100000811115611979576119728168056bc75e2d6310000063ffffffff615f9d16565b9150611980565b5050611c01565b6040516309a99b4f60e41b815261100290639a99b4f0906119a79030908690600401617ff8565b602060405180830381600087803b1580156119c157600080fd5b505af11580156119d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119f99190617e8f565b915081611a07575050611c01565b6000805b84811015611a3557858582818110611a1f57fe5b9050602002013582019150806001019050611a0b565b5080611a4357505050611c01565b6000806000805b89811015611bf95784898983818110611a5f57fe5b90506020020135880281611a6f57fe5b0493508a8a82818110611a7e57fe5b9050602002016020810190611a939190617c38565b6001600160a01b03811660009081526004602052604090205490935091508115611baf576000600180840381548110611ac857fe5b9060005260206000209060040201905080600201601c9054906101000a900460ff1615611b3557836001600160a01b03167fb9c75cbbfde137c4281689580799ef5f52144e78858f776a5979b2b212137d8586604051611b289190618cd1565b60405180910390a2611ba9565b600354611b48908663ffffffff615fdf16565b6003908155810154611b60908663ffffffff615fdf16565b60038201556040516001600160a01b038516907fcb0aad6cf9cd03bdf6137e359f541c42f38b39f007cae8e89e88aa7d8c6617b290611ba0908890618cd1565b60405180910390a25b50611bf1565b826001600160a01b03167fb9c75cbbfde137c4281689580799ef5f52144e78858f776a5979b2b212137d8585604051611be89190618cd1565b60405180910390a25b600101611a4a565b505050505050505b5050436010555050565b6001546000908210611c1f57506000611cd5565b60006001600160a01b031660018381548110611c3757fe5b60009182526020909120600490910201546001600160a01b03161480611c6757506008541580611c675750600a54155b80611c76575060085460095410155b80611c875750611c8582611cda565b155b80611cb057506000600b8381548110611c9c57fe5b906000526020600020906016020160000154115b80611cc457506001611cc0613033565b5111155b15611cd157506000611cd5565b5060015b919050565b6001546000908210611cee57506000611cd5565b600b548210611d2b5760018281548110611d0457fe5b9060005260206000209060040201600201601c9054906101000a900460ff16159050611cd5565b60018281548110611d3857fe5b9060005260206000209060040201600201601c9054906101000a900460ff16158015611d855750600b8281548110611d6c57fe5b600091825260209091206001601690920201015460ff16155b92915050565b600b54611e4957611d9a6177e4565b60015460005b81811015611e4557600b80546001810182556000919091528351600080516020618dde8339815191526016909202918201908155602080860151600080516020618e1e8339815191528401805460ff1916911515919091179055604086015180518794611e2193600080516020618dfe833981519152909101920190617813565b506060820151611e37906003830190601361788d565b505050806001019050611da0565b5050505b336110011480611e5a575033612002145b611e765760405162461bcd60e51b8152600401610e12906183d5565b6001600160a01b03811660009081526004602052604090205480611e9a5750611eed565b6001810390506000600b8281548110611eaf57fe5b600091825260209091206001601690920201015460ff169050611ed283836151ce565b8015611edb5750805b15610e32576009805460001901905550505b50565b60015460609081906000805b82811015611f435760018181548110611f1157fe5b9060005260206000209060040201600201601c9054906101000a900460ff16611f3b576001909101905b600101611efc565b50606081604051908082528060200260200182016040528015611f70578160200160208202803683370190505b509050606082604051908082528060200260200182016040528015611fa957816020015b6060815260200190600190039081611f945790505b50600b54600094509091508414156121245760005b8481101561211e5760018181548110611fd357fe5b9060005260206000209060040201600201601c9054906101000a900460ff16612116576001818154811061200357fe5b600091825260209091206004909102015483516001600160a01b039091169084908690811061202e57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050600b818154811061205b57fe5b600091825260209182902060026016909202018101805460408051601f6000196101006001861615020190931694909404918201859004850284018501905280835291929091908301828280156120f35780601f106120c8576101008083540402835291602001916120f3565b820191906000526020600020905b8154815290600101906020018083116120d657829003601f168201915b505050505082858151811061210457fe5b60209081029190910101526001909301925b600101611fbe565b506121c0565b60005b848110156121be576001818154811061213c57fe5b9060005260206000209060040201600201601c9054906101000a900460ff166121b6576001818154811061216c57fe5b600091825260209091206004909102015483516001600160a01b039091169084908690811061219757fe5b6001600160a01b03909216602092830291909101909101526001909301925b600101612127565b505b909450925050505b9091565b600181565b61100181565b60085481565b6102ca81565b600881565b600e54600c546060918291806121fc575060155b6060612206613033565b9050606061221382616004565b90508282511161222a5790945092506121c8915050565b8383835103101561223c578282510393505b8315612272576014430461225883838388880360008a8a616172565b6122708383838888038989038a8b8b8b510301616172565b505b60608360405190808252806020026020018201604052801561229e578160200160208202803683370190505b5090506060846040519080825280602002602001820160405280156122d757816020015b60608152602001906001900390816122c25790505b50905060005b85811015612358578481815181106122f157fe5b602002602001015183828151811061230557fe5b60200260200101906001600160a01b031690816001600160a01b03168152505083818151811061233157fe5b602002602001015182828151811061234557fe5b60209081029190910101526001016122dd565b509096509450505050509091565b60065481565b61200681565b61200081565b6001600160a01b038116600090815260046020526040812054806123a0576000915050611cd5565b6000190161113d81611cda565b6001600160a01b038116600090815260046020526040812054806123d5576000915050611cd5565b6001808203815481106123e457fe5b906000526020600020906004020160030154915050919050565b600081565b606781565b600f5481565b6012818154811061241b57fe5b600091825260209182902001805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152935090918301828280156124ac5780601f10612481576101008083540402835291602001916124ac565b820191906000526020600020905b81548152906001019060200180831161248f57829003601f168201915b505050505081565b60105481565b600181815481106124c757fe5b600091825260209091206004909102018054600182015460028301546003909301546001600160a01b0392831694509082169291821691600160a01b81046001600160401b031691600160e01b90910460ff169086565b61100581565b600281565b601081565b61100881565b6103e881565b600b81565b600c5481565b61200381565b606681565b61271081565b33612000146125775760405162461bcd60e51b8152600401610e1290618ade565b7f41ce201247b6ceb957dcdb217d0b8acb50b9ea0e12af9af4f5e7f389021016058383836040516125aa93929190618d1a565b60405180910390a1505050565b60025481565b60115481565b60145460ff1681565b600a5481565b6001600160a01b038116600090815260046020526040812054806126085760405162461bcd60e51b8152600401610e1290618a66565b6000190192915050565b600b546126d0576126216177e4565b60015460005b818110156126cc57600b80546001810182556000919091528351600080516020618dde8339815191526016909202918201908155602080860151600080516020618e1e8339815191528401805460ff19169115159190911790556040860151805187946126a893600080516020618dfe833981519152909101920190617813565b5060608201516126be906003830190601361788d565b505050806001019050612627565b5050505b6008546126dd5760036008555b600a546126ea576002600a555b60006126f5336125d2565b905061270081611c0b565b61271c5760405162461bcd60e51b8152600401610e1290618753565b611eed33826162c9565b600981565b61100781565b600381565b601481565b61100681565b6040518060a0016040528060788152602001618e3e6078913981565b60005460ff1681565b61200281565b61300081565b6402540be40081565b60005460ff1661279d5760405162461bcd60e51b8152600401610e129061839e565b33611007146127be5760405162461bcd60e51b8152600401610e129061884a565b61282884848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080518082019091526013815272065787069726554696d655365636f6e6447617606c1b602082015291506163619050565b156128c5576020811461284d5760405162461bcd60e51b8152600401610e1290618a20565b604080516020601f840181900481028201810190925282815260009161288b918585808385018382808284376000920191909152506163ba92505050565b9050606481101580156128a15750620186a08111155b6128bd5760405162461bcd60e51b8152600401610e1290618643565b600255612fd1565b61292584848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260098152686275726e526174696f60b81b602082015291506163619050565b156129b8576020811461294a5760405162461bcd60e51b8152600401610e12906181bc565b604080516020601f8401819004810282018101909252828152600091612988918585808385018382808284376000920191909152506163ba92505050565b9050612710600f54820111156129b05760405162461bcd60e51b8152600401610e12906181f3565b600655612fd1565b612a2284848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260138152726d61784e756d4f664d61696e7461696e696e6760681b602082015291506163619050565b15612abc5760208114612a475760405162461bcd60e51b8152600401610e129061825b565b604080516020601f8401819004810282018101909252828152600091612a85918585808385018382808284376000920191909152506163ba92505050565b600c5490915080612a94575060155b808210612ab35760405162461bcd60e51b8152600401610e129061859b565b50600855612fd1565b612b2584848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260128152716d61696e7461696e536c6173685363616c6560701b602082015291506163619050565b15612bbe5760208114612b4a5760405162461bcd60e51b8152600401610e1290618324565b604080516020601f8401819004810282018101909252828152600091612b88918585808385018382808284376000920191909152506163ba92505050565b9050600081118015612b9a5750600a81105b612bb65760405162461bcd60e51b8152600401610e1290618bbe565b600a55612fd1565b612c3284848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601981527f6d61784e756d4f66576f726b696e6743616e6469646174657300000000000000602082015291506163619050565b15612cc15760208114612c575760405162461bcd60e51b8152600401610e12906182d8565b604080516020601f8401819004810282018101909252828152600091612c95918585808385018382808284376000920191909152506163ba92505050565b9050600d54811115612cb95760405162461bcd60e51b8152600401610e12906186b9565b600e55612fd1565b612d2a84848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260128152716d61784e756d4f6643616e6469646174657360701b602082015291506163619050565b15612dac5760208114612d4f5760405162461bcd60e51b8152600401610e1290618898565b604080516020601f8401819004810282018101909252828152600091612d8d918585808385018382808284376000920191909152506163ba92505050565b600d819055600e54909150811015612da657600d54600e555b50612fd1565b612e1084848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600d81526c6e756d4f66436162696e65747360981b602082015291506163619050565b15612ebe5760208114612e355760405162461bcd60e51b8152600401610e1290618369565b604080516020601f8401819004810282018101909252828152600091612e73918585808385018382808284376000920191909152506163ba92505050565b905060008111612e955760405162461bcd60e51b8152600401610e1290618443565b6064811115612eb65760405162461bcd60e51b8152600401610e129061848b565b600c55612fd1565b612f2684848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601181527073797374656d526577617264526174696f60781b602082015291506163619050565b15612fb95760208114612f4b5760405162461bcd60e51b8152600401610e1290618b7a565b604080516020601f8401819004810282018101909252828152600091612f89918585808385018382808284376000920191909152506163ba92505050565b905061271060065482011115612fb15760405162461bcd60e51b8152600401610e1290618981565b600f55612fd1565b60405162461bcd60e51b8152600401610e1290618c1b565b7f6cdb0ac70ab7f2e2d035cca5be60d89906f2dede7648ddbd7402189c1eeed17a84848484604051613006949392919061818a565b60405180910390a150505050565b60046020526000908152604090205481565b68056bc75e2d6310000081565b6001546060906000805b828110156130625761304e81611cda565b1561305a578160010191505b60010161303d565b5060608160405190808252806020026020018201604052801561308f578160200160208202803683370190505b5090506000915060005b83811015613116576130aa81611cda565b1561310e57600181815481106130bc57fe5b600091825260209091206004909102015482516001600160a01b03909116908390859081106130e757fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508260010192505b600101613099565b50925050505b90565b601581565b61027181565b61100281565b6013818154811061241b57fe5b6000613147613033565b519050600080600c541161315c576015613160565b600c545b90508082111561316e578091505b8161317857600191505b5090565b67016345785d8a000081565b60055481565b61100381565b61200481565b60005460ff16156131bd5760405162461bcd60e51b8152600401610e129061894a565b6131c56178ba565b60006131e86040518060a0016040528060788152602001618e3e60789139613def565b91509150806132095760405162461bcd60e51b8152600401610e1290618a9d565b6132116177e4565b60005b83602001515181101561341257600b80546001810182556000919091528251600080516020618dde8339815191526016909202918201908155602080850151600080516020618e1e8339815191528401805460ff191691151591909117905560408501518051869461329a93600080516020618dfe833981519152909101920190617813565b5060608201516132b0906003830190601361788d565b505050836040015181815181106132c357fe5b6020026020010151600b82815481106132d857fe5b906000526020600020906016020160020190805190602001906132fc929190617813565b5060018460200151828151811061330f57fe5b60209081029190910181015182546001818101855560009485528385208351600493840290910180546001600160a01b039283166001600160a01b03199182161782558587015182850180549185169183169190911790556040860151600283018054606089015160808a01511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b199590981692909516919091179290921694909417161790915560a0909301516003909301929092559187015180519185019391859081106133e557fe5b602090810291909101810151516001600160a01b0316825281019190915260400160002055600101613214565b50506103e860025550506000805460ff19166001179055565b600d5481565b601354600090815b8181101561353a5761352285858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060138054909250859150811061348a57fe5b600091825260209182902001805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156135185780601f106134ed57610100808354040283529160200191613518565b820191906000526020600020905b8154815290600101906020018083116134fb57829003601f168201915b50505050506163bf565b1561353257600192505050611d85565b600101613439565b5060125460005b818110156135ab5761359286868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060128054909250859150811061348a57fe5b156135a35760019350505050611d85565b600101613541565b50600095945050505050565b33611001146135d85760405162461bcd60e51b8152600401610e1290618c42565b600b54613696576135e76177e4565b60015460005b8181101561369257600b80546001810182556000919091528351600080516020618dde8339815191526016909202918201908155602080860151600080516020618e1e8339815191528401805460ff191691151591909117905560408601518051879461366e93600080516020618dfe833981519152909101920190617813565b506060820151613684906003830190601361788d565b5050508060010190506135ed565b5050505b60006136a182616423565b90506136ac81611c0b565b156118be576118be82826162c9565b606581565b601181565b3341146136e45760405162461bcd60e51b8152600401610e1290618b2d565b60005460ff166137065760405162461bcd60e51b8152600401610e129061839e565b600034116137265760405162461bcd60e51b8152600401610e129061868a565b3a156137445760405162461bcd60e51b8152600401610e129061881c565b6001600160a01b03811660009081526004602052604090205460145434919060ff1661378457610271600f556103e86006556014805460ff191660011790555b60008211801561379657506000600f54115b156138485760006137c46127106137b8600f54346165c690919063ffffffff16565b9063ffffffff61660016565b90508015613846576040516110029082156108fc029083906000818181858888f193505050501580156137fb573d6000803e3d6000fd5b507f6ecc855f9440a9282c90913bbc91619fd44f5ec0b462af28d127b116f130aa4d8160405161382b9190618cd1565b60405180910390a1613843838263ffffffff615f9d16565b92505b505b60008211801561385a57506000600654115b1561390057600061387c6127106137b8600654346165c690919063ffffffff16565b905080156138fe5760405161dead9082156108fc029083906000818181858888f193505050501580156138b3573d6000803e3d6000fd5b507f627059660ea01c4733a328effb2294d2f86905bf806da763a89cee254de8bee5816040516138e39190618cd1565b60405180910390a16138fb838263ffffffff615f9d16565b92505b505b80156139fe57600060018083038154811061391757fe5b9060005260206000209060040201905080600201601c9054906101000a900460ff161561398457836001600160a01b03167ff177e5d6c5764d79c32883ed824111d9b13f5668cf6ab1cc12dd36791dd955b4846040516139779190618cd1565b60405180910390a26139f8565b600354613997908463ffffffff615fdf16565b60039081558101546139af908463ffffffff615fdf16565b60038201556040516001600160a01b038516907f93a090ecc682c002995fad3c85b30c5651d7fd29b0be5da9d784a3302aedc055906139ef908690618cd1565b60405180910390a25b50610e32565b826001600160a01b03167ff177e5d6c5764d79c32883ed824111d9b13f5668cf6ab1cc12dd36791dd955b483604051613a379190618cd1565b60405180910390a2505050565b600e5481565b61100081565b61dead81565b600b8181548110613a6357fe5b6000918252602091829020601691909102018054600180830154600280850180546040805161010096831615969096026000190190911692909204601f810188900488028501880190925281845293965060ff90911694919291830182828015613b0e5780601f10613ae357610100808354040283529160200191613b0e565b820191906000526020600020905b815481529060010190602001808311613af157829003601f168201915b5050505050905083565b61100481565b6000600a5460001480613b2f575081155b80613b3a5750600954155b15613b475750600061113d565b60096000815460019003919050819055506000613b92600a546137b8856137b8600b8981548110613b7457fe5b6000918252602090912060169091020154439063ffffffff615f9d16565b90506000600b8581548110613ba357fe5b906000526020600020906016020160010160006101000a81548160ff0219169083151502179055506000806110016001600160a01b0316638256ace66040518163ffffffff1660e01b8152600401604080518083038186803b158015613c0857600080fd5b505afa158015613c1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c409190617ea7565b9150915060009350808310613d9f57613c5987876151ce565b5060405163436aa28360e11b8152600090612002906386d5450690613c82908b90600401617fe4565b60206040518083038186803b158015613c9a57600080fd5b505afa158015613cae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613cd29190617c54565b6001600160a01b031614613d3e576040516313d13bdb60e31b815261100190639e89ded890613d07908a908790600401617ff8565b600060405180830381600087803b158015613d2157600080fd5b505af1158015613d35573d6000803e3d6000fd5b50505050613d96565b6040516305bfb49960e41b815261100190635bfb499090613d63908a90600401617fe4565b600060405180830381600087803b158015613d7d57600080fd5b505af1158015613d91573d6000803e3d6000fd5b505050505b60019350613db1565b818310613db157613daf87616423565b505b6040516001600160a01b038816907fb9d38178dc641ff1817967a63c9078cbcd955a9f1fcd75e0e3636de615d44d3b90600090a25050509392505050565b613df76178ba565b6000613e016178ba565b613e09617957565b613e1a613e1586616642565b616667565b90506000805b613e29836166b1565b15613f9d5780613e4e57613e44613e3f846166d2565b616720565b60ff168452613f95565b8060011415613f90576060613e6a613e65856166d2565b6167a0565b90508051604051908082528060200260200182016040528015613ea757816020015b613e946178de565b815260200190600190039081613e8c5790505b5085602001819052508051604051908082528060200260200182016040528015613ee557816020015b6060815260200190600190039081613ed05790505b50604086015260005b8151811015613f8557613eff6178de565b60606000613f1f858581518110613f1257fe5b6020026020010151616871565b92509250925080613f3f578860009a509a50505050505050505050613fa6565b8289602001518581518110613f5057fe5b60200260200101819052508189604001518581518110613f6c57fe5b6020026020010181905250505050806001019050613eee565b506001925050613f95565b613f9d565b600101613e20565b50919350909150505b915091565b604080516001808252818301909252606091829190816020015b6060815260200190600190039081613fc5579050509050613feb8363ffffffff1661698b565b81600081518110613ff857fe5b602002602001018190525061113d8161699e565b600060648351111561404357600080516020618dbe833981519152604051614033906184e8565b60405180910390a1506066611d85565b60005b83518110156140e15760005b818110156140d85784818151811061406657fe5b6020026020010151600001516001600160a01b031685838151811061408757fe5b6020026020010151600001516001600160a01b031614156140d057600080516020618dbe8339815191526040516140bd906185f8565b60405180910390a1606692505050611d85565b600101614052565b50600101614046565b5060608060606015805480602002602001604051908101604052809291908181526020016000905b828210156141935760008481526020908190206040805160c0810182526004860290920180546001600160a01b039081168452600180830154821685870152600283015491821693850193909352600160a01b81046001600160401b03166060850152600160e01b900460ff16151560808401526003015460a08301529083529092019101614109565b50505050905060606016805480602002602001604051908101604052809291908181526020016000905b828210156142685760008481526020908190208301805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156142545780601f1061422957610100808354040283529160200191614254565b820191906000526020600020905b81548152906001019060200180831161423757829003601f168201915b5050505050815260200190600101906141bd565b50505050905060005b82518110156142c55782818151811061428657fe5b6020026020010151606001516003028382815181106142a157fe5b60209081029190910101516001600160401b03909116606090910152600101614271565b506060806142d589898686616a28565b915091506142e38282615581565b60015460408051828152602080840282010190915292985090965060009550859450925060609150828015614322578160200160208202803683370190505b50905060005b828110156144b35760006001600160a01b03166120026001600160a01b03166386d545066001848154811061435957fe5b60009182526020909120600491820201546040516001600160e01b031960e085901b168152614394926001600160a01b039092169101617fe4565b60206040518083038186803b1580156143ac57600080fd5b505afa1580156143c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143e49190617c54565b6001600160a01b03161461444657600182828151811061440057fe5b602002602001019060ff16908160ff16815250506001818154811061442157fe5b906000526020600020906004020160030154600014614441578360010193505b6144ab565b67016345785d8a00006001828154811061445c57fe5b9060005260206000209060040201600301541061447e578460010194506144ab565b6001818154811061448b57fe5b9060005260206000209060040201600301546000146144ab578360010193505b600101614328565b506060846040519080825280602002602001820160405280156144e0578160200160208202803683370190505b50905060608560405190808252806020026020018201604052801561450f578160200160208202803683370190505b50905060608660405190808252806020026020018201604052801561453e578160200160208202803683370190505b50905060608760405190808252806020026020018201604052801561456d578160200160208202803683370190505b509050600060608860405190808252806020026020018201604052801561459e578160200160208202803683370190505b5090506060896040519080825280602002602001820160405280156145cd578160200160208202803683370190505b50905060009a506000995060006110046001600160a01b031663149d14d96040518163ffffffff1660e01b815260040160206040518083038186803b15801561461557600080fd5b505afa158015614629573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061464d9190617e8f565b905067016345785d8a000081111561469957600080516020618dbe83398151915260405161467a90618909565b60405180910390a160689e505050505050505050505050505050611d85565b60005b8a811015614a2d578981815181106146b057fe5b602002602001015160ff16600114156147a657600181815481106146d057fe5b9060005260206000209060040201600301546000146147a157600181815481106146f657fe5b600091825260209091206004909102015484516001600160a01b039091169085908e90811061472157fe5b60200260200101906001600160a01b031690816001600160a01b0316815250506001818154811061474e57fe5b906000526020600020906004020160030154838d8151811061476c57fe5b60200260200101818152505060018a8d8151811061478657fe5b602002602001019060ff16908160ff16815250508b6001019b505b614a25565b67016345785d8a0000600182815481106147bc57fe5b9060005260206000209060040201600301541061494157600181815481106147e057fe5b906000526020600020906004020160020160009054906101000a90046001600160a01b0316898e8151811061481157fe5b60200260200101906001600160a01b031690816001600160a01b03168152505060006402540be4006001838154811061484657fe5b9060005260206000209060040201600301548161485f57fe5b066001838154811061486d57fe5b9060005260206000209060040201600301540390506148958382615f9d90919063ffffffff16565b898f815181106148a157fe5b602002602001018181525050600182815481106148ba57fe5b906000526020600020906004020160010160009054906101000a90046001600160a01b0316878f815181106148eb57fe5b60200260200101906001600160a01b031690816001600160a01b03168152505081888f8151811061491857fe5b6020908102919091010152614933868263ffffffff615fdf16565b95508d6001019d5050614a25565b6001818154811061494e57fe5b906000526020600020906004020160030154600014614a25576001818154811061497457fe5b906000526020600020906004020160010160009054906101000a90046001600160a01b0316848d815181106149a557fe5b60200260200101906001600160a01b031690816001600160a01b031681525050600181815481106149d257fe5b906000526020600020906004020160030154838d815181106149f057fe5b60200260200101818152505060008a8d81518110614a0a57fe5b602002602001019060ff16908160ff16815250508b6001019b505b60010161469c565b5060008415614ca3576002546040516303702b2960e51b815261100491636e056520918891614a67918e918e918d914201906004016180f2565b6020604051808303818588803b158015614a8057600080fd5b505af193505050508015614ab1575060408051601f3d908101601f19168201909252614aae91810190617dbc565b60015b614c28576040516000815260443d1015614acd57506000614b68565b60046000803e60005160e01c6308c379a08114614aee576000915050614b68565b60043d036004833e81513d60248201116001600160401b0382111715614b1957600092505050614b68565b80830180516001600160401b03811115614b3a576000945050505050614b68565b8060208301013d8601811115614b5857600095505050505050614b68565b601f01601f191660405250925050505b80614b735750614bb5565b60019150857fa7cdeed7d0db45e3219a6e5d60838824c16f1d39991fcfe3f963029c844bf28082604051614ba79190618177565b60405180910390a250614c23565b3d808015614bdf576040519150601f19603f3d011682016040523d82523d6000602084013e614be4565b606091505b5060019150857fbfa884552dd8921b6ce90bfe906952ae5b3b29be0cc1a951d4f62697635a3a4582604051614c199190618177565b60405180910390a2505b614ca3565b8015614c6a577fa217d08e65f80c73121cd9db834d81652d544bfbf452f6d04922b16c90a37b7086604051614c5d9190618cd1565b60405180910390a1614ca1565b857fa7cdeed7d0db45e3219a6e5d60838824c16f1d39991fcfe3f963029c844bf280604051614c98906182a1565b60405180910390a25b505b8015614e595760005b8751811015614e57576000888281518110614cc357fe5b60200260200101519050600060018281548110614cdc57fe5b60009182526020909120600160049092020181015481546001600160a01b03909116916108fc9185908110614d0d57fe5b9060005260206000209060040201600301549081150290604051600060405180830381858888f1935050505090508015614dc95760018281548110614d4e57fe5b60009182526020909120600160049092020181015481546001600160a01b03909116917f6c61d60f69a7beb3e1c80db7f39f37b208537cbb19da3174511b477812b2fc7d9185908110614d9d57fe5b906000526020600020906004020160030154604051614dbc9190618cd1565b60405180910390a2614e4d565b60018281548110614dd657fe5b60009182526020909120600160049092020181015481546001600160a01b03909116917f25d0ce7d2f0cec669a8c17efe49d195c13455bb8872b65fa610ac7f53fe4ca7d9185908110614e2557fe5b906000526020600020906004020160030154604051614e449190618cd1565b60405180910390a25b5050600101614cac565b505b83511561504f5760005b845181101561504d578a8181518110614e7857fe5b602002602001015160ff1660011415614f17576120026001600160a01b031663092193ab858381518110614ea857fe5b6020026020010151878481518110614ebc57fe5b60200260200101516040518363ffffffff1660e01b8152600401614ee09190617fe4565b6000604051808303818588803b158015614ef957600080fd5b505af1158015614f0d573d6000803e3d6000fd5b5050505050615045565b6000858281518110614f2557fe5b60200260200101516001600160a01b03166108fc868481518110614f4557fe5b60200260200101519081150290604051600060405180830381858888f1935050505090508015614fdb57858281518110614f7b57fe5b60200260200101516001600160a01b03167f6c61d60f69a7beb3e1c80db7f39f37b208537cbb19da3174511b477812b2fc7d868481518110614fb957fe5b6020026020010151604051614fce9190618cd1565b60405180910390a2615043565b858281518110614fe757fe5b60200260200101516001600160a01b03167f25d0ce7d2f0cec669a8c17efe49d195c13455bb8872b65fa610ac7f53fe4ca7d86848151811061502557fe5b602002602001015160405161503a9190618cd1565b60405180910390a25b505b600101614e63565b505b5050505050505050505050505060005b6001548110156150bc576001818154811061507657fe5b9060005260206000209060040201600301546000146150b45760006001828154811061509e57fe5b9060005260206000209060040201600301819055505b60010161505f565b50471561512a577f6ecc855f9440a9282c90913bbc91619fd44f5ec0b462af28d127b116f130aa4d476040516150f29190618cd1565b60405180910390a1604051611002904780156108fc02916000818181858888f19350505050158015615128573d6000803e3d6000fd5b505b600060038190556005558151156151455761514582826157ba565b6110016001600160a01b031663fc4333cd6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561518257600080fd5b505af1158015615196573d6000803e3d6000fd5b50506040517fedd8d7296956dd970ab4de3f2fc03be2b0ffc615d20cd4c72c6e44f928630ebf925060009150a1506000949350505050565b600080600183815481106151de57fe5b90600052602060002090600402016003015490506000600180805490500390506001615208613033565b511161523d5760006001858154811061521d57fe5b906000526020600020906004020160030181905550600092505050611d85565b846001600160a01b03167f3b6f9ef90462b512a1293ecec018670bf7b7f1876fb727590a8a6d7643130a70836040516152769190618cd1565b60405180910390a26001600160a01b038516600090815260046020526040812055835b6001546000190181101561546357600181600101815481106152b757fe5b9060005260206000209060040201600182815481106152d257fe5b60009182526020909120825460049092020180546001600160a01b03199081166001600160a01b0393841617825560018085015481840180548416918616919091179055600280860180549185018054909416919095161780835584546001600160401b03600160a01b91829004160267ffffffffffffffff60a01b1990911617808355935460ff600160e01b918290041615150260ff60e01b19909416939093179055600392830154920191909155600b80549091830190811061539357fe5b9060005260206000209060160201600b82815481106153ae57fe5b600091825260209091208254601690920201908155600180830154818301805460ff909216151560ff1990921691909117905560028084018054615405938386019390821615610100026000190190911604617977565b50615418600382810190840160136179ec565b5090505080600101600460006001848154811061543157fe5b600091825260208083206004909202909101546001600160a01b03168352820192909252604001902055600101615299565b50600180548061546f57fe5b60008281526020812060046000199093019283020180546001600160a01b0319908116825560018201805490911690556002810180546001600160e81b0319169055600301559055600b8054806154c257fe5b60008281526020812060166000199093019283020181815560018101805460ff19169055906154f46002830182617913565b615502600383016000617a16565b50509055600081838161551157fe5b04905080156155755760015460005b8181101561557257826001828154811061553657fe5b906000526020600020906004020160030154016001828154811061555657fe5b6000918252602090912060036004909202010155600101615520565b50505b50600195945050505050565b60608060008080808061559261313d565b6001549091505b80156156a057600181039250600b83815481106155b257fe5b600091825260209091206001601690920201015460ff166155d257615697565b600183815481106155df57fe5b60009182526020909120600490910201546001600160a01b03169450615606858484613b1e565b9350831580615619575060018a51038610155b1561562357615697565b60005b8a5181101561569557856001600160a01b03168b828151811061564557fe5b6020026020010151600001516001600160a01b0316141561568d5760018b828151811061566e57fe5b6020908102919091010151901515608090910152600190960195615695565b600101615626565b505b60001901615599565b50848951036040519080825280602002602001820160405280156156de57816020015b6156cb6178de565b8152602001906001900390816156c35790505b5096508489510360405190808252806020026020018201604052801561571857816020015b60608152602001906001900390816157035790505b5095506000915060005b89518110156157ac5789818151811061573757fe5b6020026020010151608001516157a45789818151811061575357fe5b602002602001015188848151811061576757fe5b602002602001018190525088818151811061577e57fe5b602002602001015187848151811061579257fe5b60200260200101819052508260010192505b600101615722565b5050505050505b9250929050565b600154825160005b828110156158d75760016157d46178de565b600183815481106157e157fe5b600091825260208083206040805160c08101825260049490940290910180546001600160a01b0390811685526001820154811693850193909352600281015492831691840191909152600160a01b82046001600160401b03166060840152600160e01b90910460ff16151560808301526003015460a082015291505b848110156158ab5787818151811061587157fe5b6020026020010151600001516001600160a01b031682600001516001600160a01b031614156158a357600092506158ab565b60010161585d565b5081156158cd5780516001600160a01b03166000908152600460205260408120555b50506001016157c2565b508082111561599657805b828110156159945760018054806158f557fe5b60008281526020812060046000199093019283020180546001600160a01b0319908116825560018201805490911690556002810180546001600160e81b0319169055600301559055600b80548061594857fe5b60008281526020812060166000199093019283020181815560018101805460ff191690559061597a6002830182617913565b615988600383016000617a16565b505090556001016158e2565b505b60008183106159a557816159a7565b825b905060005b81811015615d3f57615a598682815181106159c357fe5b6020026020010151600183815481106159d857fe5b60009182526020918290206040805160c08101825260049390930290910180546001600160a01b0390811684526001820154811694840194909452600281015493841691830191909152600160a01b83046001600160401b03166060830152600160e01b90920460ff161515608082015260039091015460a0820152616df4565b615c0d578060010160046000888481518110615a7157fe5b6020026020010151600001516001600160a01b03166001600160a01b0316815260200190815260200160002081905550858181518110615aad57fe5b602002602001015160018281548110615ac257fe5b6000918252602091829020835160049092020180546001600160a01b039283166001600160a01b0319918216178255928401516001820180549184169185169190911790556040840151600282018054606087015160808801511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b1995909716929097169190911792909216939093171692909217905560a0909101516003909101558451859082908110615b7d57fe5b6020026020010151600b8281548110615b9257fe5b90600052602060002090601602016002019080519060200190615bb6929190617813565b506000600b8281548110615bc657fe5b60009182526020822060169190910201600101805460ff191692151592909217909155600b805483908110615bf757fe5b6000918252602090912060169091020155615d37565b615c9e858281518110615c1c57fe5b6020026020010151600b8381548110615c3157fe5b600091825260209182902060026016909202018101805460408051601f6000196101006001861615020190931694909404918201859004850284018501905280835291929091908301828280156135185780601f106134ed57610100808354040283529160200191613518565b615ce957848181518110615cae57fe5b6020026020010151600b8281548110615cc357fe5b90600052602060002090601602016002019080519060200190615ce7929190617813565b505b858181518110615cf557fe5b60200260200101516080015160018281548110615d0e57fe5b9060005260206000209060040201600201601c6101000a81548160ff0219169083151502179055505b6001016159ac565b5082821115615f1757615d506177e4565b835b83811015615f1457858181518110615d6657fe5b602002602001015182604001819052506001878281518110615d8457fe5b6020908102919091018101518254600181810185556000948552838520835160049093020180546001600160a01b039384166001600160a01b0319918216178255848601518284018054918616918316919091179055604080860151600284018054606089015160808a01511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b1995909a1692909616919091179290921696909617169190911790935560a090930151600390930192909255600b8054928301815590935284516016909102600080516020618dde833981519152810191825585830151600080516020618e1e8339815191528201805491151560ff1990921691909117905592850151805186949293615eba93600080516020618dfe83398151915201920190617813565b506060820151615ed0906003830190601361788d565b5050508060010160046000898481518110615ee757fe5b602090810291909101810151516001600160a01b0316825281019190915260400160002055600101615d52565b50505b615f1f616e75565b615f2761705d565b6000600981905560015493505b83811015615f95576000600b8281548110615f4b57fe5b60009182526020822060169190910201600101805460ff191692151592909217909155600b805483908110615f7c57fe5b6000918252602090912060169091020155600101615f34565b505050505050565b600061113d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061724b565b60008282018381101561113d5760405162461bcd60e51b8152600401610e129061840c565b60015481516040805182815260208084028201019091526060929190839082801561604357816020015b606081526020019060019003908161602e5790505b50600b54909150831461605a579250611cd5915050565b60005b8281101561616957600b60016004600089858151811061607957fe5b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000205403815481106160ad57fe5b600091825260209182902060026016909202018101805460408051601f6000196101006001861615020190931694909404918201859004850284018501905280835291929091908301828280156161455780601f1061611a57610100808354040283529160200191616145565b820191906000526020600020905b81548152906001019060200180831161612857829003601f168201915b505050505082828151811061615657fe5b602090810291909101015260010161605d565b50949350505050565b60005b828110156162bf5760008287838801604051602001616195929190617fd6565b6040516020818303038152906040528051906020012060001c816161b557fe5b069050808501828701146162b657600089838801815181106161d357fe5b60200260200101519050606089848901815181106161ed57fe5b602002602001015190508a8388018151811061620557fe5b60200260200101518b858a018151811061621b57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050818b8489018151811061624a57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050898388018151811061627857fe5b60200260200101518a858a018151811061628e57fe5b6020026020010181905250808a848901815181106162a857fe5b602002602001018190525050505b50600101616175565b5050505050505050565b600980546001908101909155600b8054839081106162e357fe5b906000526020600020906016020160010160006101000a81548160ff02191690831515021790555043600b828154811061631957fe5b600091825260208220601690910201919091556040516001600160a01b038416917ff62981a567ec3cec866c6fa93c55bcdf841d6292d18b8d522ececa769375d82d91a25050565b6000816040516020016163749190617fba565b604051602081830303815290604052805190602001208360405160200161639b9190617fba565b6040516020818303038152906040528051906020012014905092915050565b015190565b8151815160009160019181148083146163db5760009250616419565b600160208701838101602088015b6002848385100114156164145780518351146164085760009650600093505b602092830192016163e9565b505050505b5090949350505050565b6001600160a01b0381166000908152600460205260408120548061644c57506000199050611cd5565b60018103905060006001828154811061646157fe5b906000526020600020906004020160030154905060006001838154811061648457fe5b6000918252602090912060036004909202010155600154604051600019909101906001600160a01b038616907f8cd4e147d8af98a9e3b6724021b8bf6aed2e5dac71c38f2dce8161b82585b25d906164dd908590618cd1565b60405180910390a2806164f557829350505050611cd5565b600081838161650057fe5b04905080156165bc5760005b8481101561655e57816001828154811061652257fe5b906000526020600020906004020160030154016001828154811061654257fe5b600091825260209091206003600490920201015560010161650c565b50600180549085015b818110156165b957826001828154811061657d57fe5b906000526020600020906004020160030154016001828154811061659d57fe5b6000918252602090912060036004909202010155600101616567565b50505b5091949350505050565b6000826165d557506000611d85565b828202828482816165e257fe5b041461113d5760405162461bcd60e51b8152600401610e12906187db565b600061113d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250617277565b61664a617a25565b506040805180820190915281518152602082810190820152919050565b61666f617957565b616678826172ae565b61668157600080fd5b600061669083602001516172e8565b60208085015160408051808201909152868152920190820152915050919050565b60006166bb617a25565b505080518051602091820151919092015191011190565b6166da617a25565b6166e3826166b1565b6166ec57600080fd5b602082015160006166fc8261734b565b80830160209586015260408051808201909152908152938401919091525090919050565b80516000901580159061673557508151602110155b61673e57600080fd5b600061674d83602001516172e8565b905080836000015110156167735760405162461bcd60e51b8152600401610e12906189e9565b82516020808501518301805192849003929183101561616957506020919091036101000a90049392505050565b60606167ab826172ae565b6167b457600080fd5b60006167bf8361742c565b90506060816040519080825280602002602001820160405280156167fd57816020015b6167ea617a25565b8152602001906001900390816167e25790505b509050600061680f85602001516172e8565b60208601510190506000805b848110156168665761682c8361734b565b915060405180604001604052808381526020018481525084828151811061684f57fe5b60209081029190910101529181019160010161681b565b509195945050505050565b6168796178de565b606060006168856178de565b606061688f617957565b61689887616667565b90506000805b6168a7836166b1565b1561697c57806168d2576168c26168bd846166d2565b617488565b6001600160a01b03168552616974565b80600114156168fa576168e76168bd846166d2565b6001600160a01b03166020860152616974565b80600214156169225761690f6168bd846166d2565b6001600160a01b03166040860152616974565b806003141561694e57616937613e3f846166d2565b6001600160401b0316606086015260019150616974565b806004141561696f57616968616963846166d2565b6174a2565b9350616974565b61697c565b60010161689e565b50929791965091945092505050565b6060611d8561699983617512565b6175f8565b60608151600014156169bf5750604080516000815260208101909152611cd5565b6060826000815181106169ce57fe5b602002602001015190506000600190505b8351811015616a0f57616a05828583815181106169f857fe5b602002602001015161764a565b91506001016169df565b5061113d616a22825160c060ff166176c7565b8261764a565b60608060006120026001600160a01b031663c473318f6040518163ffffffff1660e01b815260040160206040518083038186803b158015616a6857600080fd5b505afa158015616a7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190616aa09190617e8f565b90508085518851011015616ab5575083518651015b606081604051908082528060200260200182016040528015616af157816020015b616ade6178de565b815260200190600190039081616ad65790505b509050606082604051908082528060200260200182016040528015616b2a57816020015b6060815260200190600190039081616b155790505b50905060008060005b8b51831080616b425750895182105b8015616b4d57508581105b15616de2578b51831415616bbd57898281518110616b6757fe5b6020026020010151858281518110616b7b57fe5b6020026020010181905250888281518110616b9257fe5b6020026020010151848281518110616ba657fe5b602090810291909101015260019182019101616b33565b8951821415616c28578b8381518110616bd257fe5b6020026020010151858281518110616be657fe5b60200260200101819052508a8381518110616bfd57fe5b6020026020010151848281518110616c1157fe5b602090810291909101015260019283019201616b33565b898281518110616c3457fe5b6020026020010151606001516001600160401b03168c8481518110616c5557fe5b6020026020010151606001516001600160401b03161115616cd1578b8381518110616c7c57fe5b6020026020010151858281518110616c9057fe5b60200260200101819052508a8381518110616ca757fe5b6020026020010151848281518110616cbb57fe5b6020026020010181905250826001019250616dda565b898281518110616cdd57fe5b6020026020010151606001516001600160401b03168c8481518110616cfe57fe5b6020026020010151606001516001600160401b03161015616d7a57898281518110616d2557fe5b6020026020010151858281518110616d3957fe5b6020026020010181905250888281518110616d5057fe5b6020026020010151848281518110616d6457fe5b6020026020010181905250816001019150616dda565b898281518110616d8657fe5b6020026020010151600001516001600160a01b03168c8481518110616da757fe5b6020026020010151600001516001600160a01b03161015616dce578b8381518110616c7c57fe5b898281518110616b6757fe5b600101616b33565b50929a91995090975050505050505050565b805182516000916001600160a01b039182169116148015616e2e575081602001516001600160a01b031683602001516001600160a01b0316145b8015616e53575081604001516001600160a01b031683604001516001600160a01b0316145b801561113d5750506060908101519101516001600160401b0390811691161490565b60125460135480821115616ec057805b82811015616ebe576012805480616e9857fe5b600190038181906000526020600020016000616eb49190617913565b9055600101616e85565b505b6000818310616ecf5781616ed1565b825b905060005b81811015616fe957616f8e60128281548110616eee57fe5b600091825260209182902001805460408051601f6002600019610100600187161502019094169390930492830185900485028101850190915281815292830182828015616f7c5780601f10616f5157610100808354040283529160200191616f7c565b820191906000526020600020905b815481529060010190602001808311616f5f57829003601f168201915b50505050506013838154811061348a57fe5b616fe15760138181548110616f9f57fe5b9060005260206000200160128281548110616fb657fe5b906000526020600020019080546001816001161561010002031660029004616fdf929190617977565b505b600101616ed6565b5082821115610e3257825b828110156170575760126013828154811061700b57fe5b600091825260208083208454600181810187559585529190932092909101805461704e949390920192909160026101009282161592909202600019011604617977565b50600101616ff4565b50505050565b601354600b54808211156170a857805b828110156170a657601380548061708057fe5b60019003818190600052602060002001600061709c9190617913565b905560010161706d565b505b60008183106170b757816170b9565b825b905060005b818110156171d857617176601382815481106170d657fe5b600091825260209182902001805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156171645780601f1061713957610100808354040283529160200191617164565b820191906000526020600020905b81548152906001019060200180831161714757829003601f168201915b5050505050600b8381548110615c3157fe5b6171d057600b818154811061718757fe5b9060005260206000209060160201600201601382815481106171a557fe5b9060005260206000200190805460018160011615610100020316600290046171ce929190617977565b505b6001016170be565b5082821115610e3257825b82811015617057576013600b82815481106171fa57fe5b60009182526020808320845460018082018755958552919093206016929092029092016002908101805461724295939094019390926000199082161561010002011604617977565b506001016171e3565b6000818484111561726f5760405162461bcd60e51b8152600401610e129190618177565b505050900390565b600081836172985760405162461bcd60e51b8152600401610e129190618177565b5060008385816172a457fe5b0495945050505050565b80516000906172bf57506000611cd5565b6020820151805160001a9060c08210156172de57600092505050611cd5565b5060019392505050565b8051600090811a6080811015617302576000915050611cd5565b60b881108061731d575060c0811080159061731d575060f881105b1561732c576001915050611cd5565b60c08110156173405760b519019050611cd5565b60f519019050611cd5565b80516000908190811a60808110156173665760019150617425565b60b881101561737b57607e1981019150617425565b60c08110156173cc57600060b78203600186019550806020036101000a8651049150600181018201935050808310156173c65760405162461bcd60e51b8152600401610e1290618728565b50617425565b60f88110156173e15760be1981019150617425565b600060f78203600186019550806020036101000a8651049150600181018201935050808310156174235760405162461bcd60e51b8152600401610e1290618728565b505b5092915050565b805160009061743d57506000611cd5565b6000809050600061745184602001516172e8565b602085015185519181019250015b8082101561747f576174708261734b565b8201915082600101925061745f565b50909392505050565b805160009060151461749957600080fd5b611d8582616720565b80516060906174b057600080fd5b60006174bf83602001516172e8565b83516040805191839003808352601f19601f82011683016020019091529192506060908280156174f6576020820181803683370190505b5090506000816020019050616169848760200151018285617799565b604080516020808252818301909252606091829190602082018180368337505050602081018490529050600067ffffffffffffffff1984166175565750601861757a565b6fffffffffffffffffffffffffffffffff1984166175765750601061757a565b5060005b60208110156175b05781818151811061758f57fe5b01602001516001600160f81b031916156175a8576175b0565b60010161757a565b60008160200390506060816040519080825280601f01601f1916602001820160405280156175e5576020820181803683370190505b5080830196909652508452509192915050565b60608151600114801561762a5750607f60f81b8260008151811061761857fe5b01602001516001600160f81b03191611155b15617636575080611cd5565b611d856176488351608060ff166176c7565b835b6060806040519050835180825260208201818101602087015b8183101561767b578051835260209283019201617663565b50855184518101855292509050808201602086015b818310156176a8578051835260209283019201617690565b508651929092011591909101601f01601f191660405250905092915050565b60606801000000000000000083106176f15760405162461bcd60e51b8152600401610e1290618573565b6040805160018082528183019092526060916020820181803683370190505090506037841161774b5782840160f81b8160008151811061772d57fe5b60200101906001600160f81b031916908160001a9053509050611d85565b606061775685617512565b90508381510160370160f81b8260008151811061776f57fe5b60200101906001600160f81b031916908160001a905350617790828261764a565b95945050505050565b806177a357610e32565b5b602081106177c3578251825260209283019290910190601f19016177a4565b915181516020939093036101000a6000190180199091169216919091179052565b6040518060800160405280600081526020016000151581526020016060815260200161780e617a3f565b905290565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061785457805160ff1916838001178555617881565b82800160010185558215617881579182015b82811115617881578251825591602001919060010190617866565b50613178929150617a5e565b82601381019282156178815791602002820182811115617881578251825591602001919060010190617866565b6040518060600160405280600060ff16815260200160608152602001606081525090565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a081019190915290565b50805460018160011615610100020316600290046000825580601f106179395750611eed565b601f016020900490600052602060002090810190611eed9190617a5e565b604051806040016040528061796a617a25565b8152602001600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106179b05780548555617881565b8280016001018555821561788157600052602060002091601f016020900482015b828111156178815782548255916001019190600101906179d1565b826013810192821561788157918201828111156178815782548255916001019190600101906179d1565b50611eed906013810190617a5e565b604051806040016040528060008152602001600081525090565b6040518061026001604052806013906020820280368337509192915050565b61311c91905b808211156131785760008155600101617a64565b8035611d8581618da8565b60008083601f840112617a94578182fd5b5081356001600160401b03811115617aaa578182fd5b60208301915083602080830285010111156157b357600080fd5b6000601f8381840112617ad5578182fd5b8235617ae8617ae382618d5d565b618d37565b818152925060208084019085810160005b84811015617b7a578135880189603f820112617b1457600080fd5b838101356001600160401b03811115617b2c57600080fd5b617b3d818901601f19168601618d37565b81815260408c81848601011115617b5357600080fd5b82818501888401375060009181018601919091528552509282019290820190600101617af9565b50505050505092915050565b600082601f830112617b96578081fd5b8135617ba4617ae382618d5d565b818152915060208083019084810181840286018201871015617bc557600080fd5b6000805b85811015617b7a5782356001600160401b0381168114617be7578283fd5b85529383019391830191600101617bc9565b60008083601f840112617c0a578182fd5b5081356001600160401b03811115617c20578182fd5b6020830191508360208285010111156157b357600080fd5b600060208284031215617c49578081fd5b813561113d81618da8565b600060208284031215617c65578081fd5b815161113d81618da8565b60008060008060408587031215617c85578283fd5b84356001600160401b0380821115617c9b578485fd5b617ca788838901617a83565b90965094506020870135915080821115617cbf578384fd5b50617ccc87828801617a83565b95989497509550505050565b600080600060608486031215617cec578283fd5b83356001600160401b0380821115617d02578485fd5b81860187601f820112617d13578586fd5b80359250617d23617ae384618d5d565b80848252602080830192508084018b828389028701011115617d4357898afd5b8994505b86851015617d6d57617d598c82617a78565b845260019490940193928101928101617d47565b509097508801359350505080821115617d84578384fd5b617d9087838801617b86565b93506040860135915080821115617da5578283fd5b50617db286828701617ac4565b9150509250925092565b600060208284031215617dcd578081fd5b8151801515811461113d578182fd5b60008060208385031215617dee578182fd5b82356001600160401b03811115617e03578283fd5b617e0f85828601617bf9565b90969095509350505050565b60008060008060408587031215617e30578384fd5b84356001600160401b0380821115617e46578586fd5b617e5288838901617bf9565b90965094506020870135915080821115617e6a578384fd5b50617ccc87828801617bf9565b600060208284031215617e88578081fd5b5035919050565b600060208284031215617ea0578081fd5b5051919050565b60008060408385031215617eb9578182fd5b505080516020909101519092909150565b600080600060408486031215617ede578081fd5b833560ff81168114617eee578182fd5b925060208401356001600160401b03811115617f08578182fd5b617f1486828701617bf9565b9497909650939450505050565b6000815180845260208085019450808401835b83811015617f595781516001600160a01b031687529582019590820190600101617f34565b509495945050505050565b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b60008151808452617fa6816020860160208601618d7c565b601f01601f19169290920160200192915050565b60008251617fcc818460208701618d7c565b9190910192915050565b918252602082015260400190565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b03968716815294861660208601529290941660408401526001600160401b03166060830152911515608082015260a081019190915260c00190565b6001600160a01b0392909216825260ff16602082015260400190565b60006020825261113d6020830184617f21565b6000604082526180956040830185617f21565b602083820381850152818551808452828401915082838202850101838801865b838110156180e357601f198784030185526180d1838351617f8e565b948601949250908501906001016180b5565b50909998505050505050505050565b6000608082526181056080830187617f21565b828103602084810191909152865180835287820192820190845b8181101561813b5784518352938301939183019160010161811f565b5050848103604086015261814f8188617f21565b93505050506001600160401b038316606083015295945050505050565b901515815260200190565b60006020825261113d6020830184617f8e565b60006040825261819e604083018688617f64565b82810360208401526181b1818587617f64565b979650505050505050565b6020808252601c908201527f6c656e677468206f66206275726e526174696f206d69736d6174636800000000604082015260600190565b60208082526042908201527f746865206275726e526174696f20706c75732073797374656d5265776172645260408201527f6174696f206d757374206265206e6f2067726561746572207468616e20313030606082015261030360f41b608082015260a00190565b60208082526026908201527f6c656e677468206f66206d61784e756d4f664d61696e7461696e696e67206d696040820152650e6dac2e8c6d60d31b606082015260800190565b6020808252601b908201527f6261746368207472616e736665722072657475726e2066616c73650000000000604082015260600190565b6020808252602c908201527f6c656e677468206f66206d61784e756d4f66576f726b696e6743616e6469646160408201526b0e8cae640dad2e6dac2e8c6d60a31b606082015260800190565b60208082526025908201527f6c656e677468206f66206d61696e7461696e536c6173685363616c65206d69736040820152640dac2e8c6d60db1b606082015260800190565b6020808252818101527f6c656e677468206f66206e756d4f66436162696e657473206d69736d61746368604082015260600190565b60208082526019908201527f74686520636f6e7472616374206e6f7420696e69742079657400000000000000604082015260600190565b6020808252601f908201527f6f6e6c7920736c617368206f72207374616b6548756220636f6e747261637400604082015260600190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b60208082526028908201527f746865206e756d4f66436162696e657473206d75737420626520677265617465604082015267072207468616e20360c41b606082015260800190565b60208082526039908201527f746865206e756d4f66436162696e657473206d757374206265206c657373207460408201527f68616e204d41585f4e554d5f4f465f56414c494441544f525300000000000000606082015260800190565b60208082526029908201527f746865206e756d626572206f662076616c696461746f727320657863656564206040820152681d1a19481b1a5b5a5d60ba1b606082015260800190565b60208082526022908201527f63616e206e6f7420646f207468697320747769636520696e206f6e6520626c6f604082015261636b60f01b606082015260800190565b6020808252600e908201526d696e70757420746f6f206c6f6e6760901b604082015260600190565b60208082526037908201527f746865206d61784e756d4f664d61696e7461696e696e67206d7573742062652060408201527f6c657373207468616e206e756d4f66436162696e657473000000000000000000606082015260800190565b6020808252602b908201527f6475706c696361746520636f6e73656e7375732061646472657373206f66207660408201526a185b1a59185d1bdc94d95d60aa1b606082015260800190565b60208082526027908201527f7468652065787069726554696d655365636f6e64476170206973206f7574206f604082015266662072616e676560c81b606082015260800190565b6020808252601590820152746465706f7369742076616c7565206973207a65726f60581b604082015260600190565b60208082526049908201527f746865206d61784e756d4f66576f726b696e6743616e64696461746573206d7560408201527f7374206265206e6f742067726561746572207468616e206d61784e756d4f6643606082015268616e6469646174657360b81b608082015260a00190565b6020808252601190820152706164646974696f6e206f766572666c6f7760781b604082015260600190565b60208082526023908201527f63616e206e6f7420656e7465722054656d706f72617279204d61696e74656e616040820152626e636560e81b606082015260800190565b60208082526025908201527f6c656e677468206f66206a61696c2076616c696461746f7273206d757374206260408201526465206f6e6560d81b606082015260800190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252601490820152736761737072696365206973206e6f74207a65726f60601b604082015260600190565b6020808252602e908201527f746865206d6573736167652073656e646572206d75737420626520676f76657260408201526d1b985b98d94818dbdb9d1c9858dd60921b606082015260800190565b60208082526025908201527f6c656e677468206f66206d61784e756d4f6643616e64696461746573206d69736040820152640dac2e8c6d60db1b606082015260800190565b6020808252601290820152716e6f7420696e206d61696e74656e616e636560701b604082015260600190565b60208082526021908201527f666565206973206c6172676572207468616e2044555354595f494e434f4d494e6040820152604760f81b606082015260800190565b60208082526019908201527f74686520636f6e747261637420616c726561647920696e697400000000000000604082015260600190565b60208082526042908201527f7468652073797374656d526577617264526174696f20706c7573206275726e5260408201527f6174696f206d757374206265206e6f2067726561746572207468616e20313030606082015261030360f41b608082015260a00190565b6020808252601a908201527f6c656e677468206973206c657373207468616e206f6666736574000000000000604082015260600190565b60208082526026908201527f6c656e677468206f662065787069726554696d655365636f6e64476170206d696040820152650e6dac2e8c6d60d31b606082015260800190565b60208082526017908201527f6f6e6c792063757272656e742076616c696461746f7273000000000000000000604082015260600190565b60208082526021908201527f6661696c656420746f20706172736520696e69742076616c696461746f7253656040820152601d60fa1b606082015260800190565b6020808252602f908201527f746865206d6573736167652073656e646572206d7573742062652063726f737360408201526e0818da185a5b8818dbdb9d1c9858dd608a1b606082015260800190565b6020808252602d908201527f746865206d6573736167652073656e646572206d75737420626520746865206260408201526c3637b1b590383937b23ab1b2b960991b606082015260800190565b60208082526024908201527f6c656e677468206f662073797374656d526577617264526174696f206d69736d6040820152630c2e8c6d60e31b606082015260800190565b6020808252603e908201527f746865206d61696e7461696e536c6173685363616c65206d757374206265206760408201527f726561746572207468616e203020616e64206c657373207468616e2031300000606082015260800190565b6020808252600d908201526c756e6b6e6f776e20706172616d60981b604082015260600190565b60208082526029908201527f746865206d6573736167652073656e646572206d75737420626520736c6173686040820152680818dbdb9d1c9858dd60ba1b606082015260800190565b6020808252601f908201527f746865206d73672073656e646572206d757374206265207374616b6548756200604082015260600190565b61ffff91909116815260200190565b90815260200190565b60008482528315156020830152606060408301526177906060830184617f8e565b63ffffffff91909116815260200190565b60ff91909116815260200190565b600060ff8516825260406020830152617790604083018486617f64565b6040518181016001600160401b0381118282101715618d5557600080fd5b604052919050565b60006001600160401b03821115618d72578081fd5b5060209081020190565b60005b83811015618d97578181015183820152602001618d7f565b838111156170575750506000910152565b6001600160a01b0381168114611eed57600080fdfe70e72399380dcfb0338abc03dc8d47f9f470ada8e769c9a78d644ea97385ecb20175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db90175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01dbb0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01dbaf87680f873f871949fb29aac15b9a4b7f17c3385939b007540f4d791949fb29aac15b9a4b7f17c3385939b007540f4d791949fb29aac15b9a4b7f17c3385939b007540f4d79164b085e6972fc98cd3c81d64d40e325acfed44365b97a7567a27939c14dbc7512ddcf54cb1284eb637cfa308ae4e00cb5588a164736f6c6343000604000a", + Code: "6080604052600436106104fb5760003560e01c806388b32f111161028c578063c6d339451161015a578063e40716a1116100cc578063f92eb86b11610085578063f92eb86b14610d2d578063f9a2bbc714610d42578063fc3e590814610d57578063fccc281314610d6c578063fd4ad81f14610d81578063fd6a687914610db057610502565b8063e40716a114610c9b578063ea321e4914610cb0578063eb57e20214610cd0578063eda5868c14610cf0578063f1fad10414610d05578063f340fa0114610d1a57610502565b8063d86222d51161011e578063d86222d514610c1d578063daacdb6614610c32578063dc927faf14610c47578063df8079e914610c5c578063e086c7b114610c71578063e1c7392a14610c8657610502565b8063c6d3394514610bbe578063c81b166214610bd3578063c8509d811461098d578063ce910b0c14610be8578063d68fb56a14610c0857610502565b8063a78abc16116101fe578063ad3c9da6116101b7578063ad3c9da614610b3d578063aef198a914610b5d578063b7ab4db514610b72578063b8cf4ef114610b94578063bf9f4995146106fe578063c466689d14610ba957610502565b8063a78abc1614610ab4578063aa82dce114610ac9578063aad5606314610ade578063aaf5eb6814610af3578063ab51bb9614610b08578063ac43175114610b1d57610502565b806396713da91161025057806396713da914610a365780639dc0926214610a4b5780639fe0f81614610a60578063a0dc275814610a75578063a1a11bf514610a8a578063a5422d5c14610a9f57610502565b806388b32f11146109c25780638a7beb01146109d75780638b5ad0c9146109ec5780638d19a41014610a015780639369d7de14610a2157610502565b806351b4dce3116103c957806370fd5bad1161033b5780637e434d54116102f45780637e434d541461094e57806381650b6214610963578063820dcaa814610978578063831d65d11461098d578063853230aa1461090f57806386249882146109ad57610502565b806370fd5bad146108d0578063718a8aa8146108e557806375d47a0a146108fa57806378dfed4a1461090f5780637942fd05146109245780637a84ca2a1461093957610502565b80635d77156c1161038d5780635d77156c1461082a5780635de1e22c1461083f57806360eba4fe1461085457806362b72cf5146108745780636969a25c146108895780636e47b482146108bb57610502565b806351b4dce3146107ab57806351e80672146107c057806355614fcc146107d5578063565c56b3146107f55780635667515a1461081557610502565b8063300c35671161046d57806343756e5c1161042657806343756e5c1461072057806345cf9daf14610735578063493279b11461074a5780634bf6c8821461076c5780634df6e0c3146107815780635192c82c1461079657610502565b8063300c35671461065b578063321d398a1461067b5780633365af3a1461069b57806335409f7f146106bb5780633b071dcc146106db5780633dffc387146106fe57610502565b8063152ad3b8116104bf578063152ad3b8146105ba5780631e4c1524146105dc5780631ff18069146105fc578063219f22d51461061157806328087028146106265780632a0ffb6e1461063b57610502565b806304c4fec61461050757806307a568471461051e5780630bee7a67146105495780630e2374a51461056b5780631182b8751461058d57610502565b3661050257005b600080fd5b34801561051357600080fd5b5061051c610dc5565b005b34801561052a57600080fd5b50610533610e37565b6040516105409190618d16565b60405180910390f35b34801561055557600080fd5b5061055e610e3d565b6040516105409190618d40565b34801561057757600080fd5b50610580610e42565b6040516105409190618029565b34801561059957600080fd5b506105ad6105a8366004617f0f565b610e48565b60405161054091906181bc565b3480156105c657600080fd5b506105cf611144565b60405161054091906181b1565b3480156105e857600080fd5b5061051c6105f7366004617d1d565b61114d565b34801561060857600080fd5b5061053361183b565b34801561061d57600080fd5b5061055e611841565b34801561063257600080fd5b50610580611846565b34801561064757600080fd5b5061051c610656366004617c7d565b61184c565b34801561066757600080fd5b5061051c610676366004617cb5565b6118f9565b34801561068757600080fd5b506105cf610696366004617ebc565b611c42565b3480156106a757600080fd5b506105cf6106b6366004617ebc565b611d11565b3480156106c757600080fd5b5061051c6106d6366004617c7d565b611dc2565b3480156106e757600080fd5b506106f0611f27565b6040516105409291906180c7565b34801561070a57600080fd5b50610713612203565b6040516105409190618d51565b34801561072c57600080fd5b50610580612208565b34801561074157600080fd5b5061053361220e565b34801561075657600080fd5b5061075f612214565b6040516105409190618d07565b34801561077857600080fd5b5061071361221a565b34801561078d57600080fd5b506106f061221f565b3480156107a257600080fd5b506105336123ab565b3480156107b757600080fd5b506105806123b1565b3480156107cc57600080fd5b506105806123b7565b3480156107e157600080fd5b506105cf6107f0366004617c7d565b6123bd565b34801561080157600080fd5b50610533610810366004617c7d565b6123f2565b34801561082157600080fd5b50610713612443565b34801561083657600080fd5b5061055e612448565b34801561084b57600080fd5b5061053361244d565b34801561086057600080fd5b506105ad61086f366004617ebc565b612453565b34801561088057600080fd5b506105336124f9565b34801561089557600080fd5b506108a96108a4366004617ebc565b6124ff565b60405161054096959493929190618056565b3480156108c757600080fd5b50610580612563565b3480156108dc57600080fd5b50610713612569565b3480156108f157600080fd5b5061071361256e565b34801561090657600080fd5b50610580612573565b34801561091b57600080fd5b50610533612579565b34801561093057600080fd5b5061071361257f565b34801561094557600080fd5b50610533612584565b34801561095a57600080fd5b5061058061258a565b34801561096f57600080fd5b5061055e612590565b34801561098457600080fd5b50610533612595565b34801561099957600080fd5b5061051c6109a8366004617f0f565b61259b565b3480156109b957600080fd5b506105336125fc565b3480156109ce57600080fd5b50610533612602565b3480156109e357600080fd5b506105cf612608565b3480156109f857600080fd5b50610533612611565b348015610a0d57600080fd5b50610533610a1c366004617c7d565b612617565b348015610a2d57600080fd5b5061051c612657565b348015610a4257600080fd5b5061071361276b565b348015610a5757600080fd5b50610580612770565b348015610a6c57600080fd5b50610533612776565b348015610a8157600080fd5b5061053361277b565b348015610a9657600080fd5b50610580612780565b348015610aab57600080fd5b506105ad612786565b348015610ac057600080fd5b506105cf6127a2565b348015610ad557600080fd5b506105806127ab565b348015610aea57600080fd5b506105806127b1565b348015610aff57600080fd5b506105336127b7565b348015610b1457600080fd5b5061055e612443565b348015610b2957600080fd5b5061051c610b38366004617e60565b6127c0565b348015610b4957600080fd5b50610533610b58366004617c7d565b613059565b348015610b6957600080fd5b5061053361306b565b348015610b7e57600080fd5b50610b87613078565b60405161054091906180b4565b348015610ba057600080fd5b50610533613164565b348015610bb557600080fd5b50610533613169565b348015610bca57600080fd5b50610533612569565b348015610bdf57600080fd5b5061058061316f565b348015610bf457600080fd5b506105ad610c03366004617ebc565b613175565b348015610c1457600080fd5b50610533613182565b348015610c2957600080fd5b506105336131c1565b348015610c3e57600080fd5b506105336131cd565b348015610c5357600080fd5b506105806131d3565b348015610c6857600080fd5b506105806131d9565b348015610c7d57600080fd5b50610533610e3d565b348015610c9257600080fd5b5061051c6131df565b348015610ca757600080fd5b50610533613470565b348015610cbc57600080fd5b506105cf610ccb366004617e21565b613476565b348015610cdc57600080fd5b5061051c610ceb366004617c7d565b6135fc565b348015610cfc57600080fd5b5061055e613700565b348015610d1157600080fd5b50610713613705565b61051c610d28366004617c7d565b61370a565b348015610d3957600080fd5b50610533613a89565b348015610d4e57600080fd5b50610580613a8f565b348015610d6357600080fd5b50610713612776565b348015610d7857600080fd5b50610580613a95565b348015610d8d57600080fd5b50610da1610d9c366004617ebc565b613a9b565b60405161054093929190618d1f565b348015610dbc57600080fd5b50610580613b5d565b6000610dd033612617565b9050600b8181548110610ddf57fe5b600091825260209091206001601690920201015460ff16610e1b5760405162461bcd60e51b8152600401610e1290618922565b60405180910390fd5b6000610e25613182565b9050610e32338383613b63565b505050565b60095481565b606481565b61200181565b60005460609060ff16610e6d5760405162461bcd60e51b8152600401610e12906183e3565b600b54610f2b57610e7c617829565b60015460005b81811015610f2757600b80546001810182556000919091528351600080516020618e238339815191526016909202918201908155602080860151600080516020618e638339815191528401805460ff1916911515919091179055604086015180518794610f0393600080516020618e43833981519152909101920190617858565b506060820151610f1990600383019060136178d2565b505050806001019050610e82565b5050505b610f336178ff565b6000610f7485858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250613e3492505050565b9150915080610f9057610f876064613ff0565b9250505061113d565b815160009060ff16610fb557610fae83602001518460400151614051565b9050611109565b825160ff166001141561110557826020015151600114610ffa57600080516020618e03833981519152604051610fea906187db565b60405180910390a1506067611100565b6000836020015160008151811061100d57fe5b602090810291909101810151516001600160a01b0381166000908152600490925260409091205490915080158061106e575060018082038154811061104e57fe5b9060005260206000209060040201600201601c9054906101000a900460ff165b156110ac576040516001600160a01b038316907fe209c46bebf57cf265d5d9009a00870e256d9150f3ed5281ab9d9eb3cec6e4be90600090a26110f9565b60006110bb8360018403615213565b9050806110f7576040516001600160a01b038416907fe209c46bebf57cf265d5d9009a00870e256d9150f3ed5281ab9d9eb3cec6e4be90600090a25b505b6000925050505b611109565b5060655b63ffffffff811661112e575050604080516000815260208101909152915061113d9050565b61113781613ff0565b93505050505b9392505050565b60075460ff1681565b33411461116c5760405162461bcd60e51b8152600401610e1290618b72565b3a1561118a5760405162461bcd60e51b8152600401610e1290618861565b82516040805182815260208084028201019091526060908280156111c857816020015b6111b5617923565b8152602001906001900390816111ad5790505b50905060005b82811015611272576040518060c001604052808783815181106111ed57fe5b60200260200101516001600160a01b0316815260200160006001600160a01b0316815260200160006001600160a01b0316815260200186838151811061122f57fe5b60200260200101516001600160401b03168152602001600015158152602001600081525082828151811061125f57fe5b60209081029190910101526001016111ce565b5060405163d31f968d60e01b81526120009063d31f968d9061129d9061100090600890600401618098565b60206040518083038186803b1580156112b557600080fd5b505afa1580156112c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ed9190617e01565b156116105780516015548181111561138f57815b8181101561138d57601580548061131457fe5b60008281526020812060046000199093019283020180546001600160a01b0319908116825560018201805490911690556002810180546001600160e81b0319169055600301559055601680548061136757fe5b6001900381819060005260206000200160006113839190617958565b9055600101611301565b505b60005b828110156115cf578181106114b75760158482815181106113af57fe5b602090810291909101810151825460018181018555600094855293839020825160049092020180546001600160a01b039283166001600160a01b0319918216178255938301519481018054958316958516959095179094556040820151600285018054606085015160808601511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b199590961692909716919091179290921692909217169290921790915560a00151600390910155855160169087908390811061147f57fe5b602090810291909101810151825460018101845560009384529282902081516114b19491909101929190910190617858565b506115c7565b8381815181106114c357fe5b6020026020010151601582815481106114d857fe5b6000918252602091829020835160049092020180546001600160a01b039283166001600160a01b0319918216178255928401516001820180549184169185169190911790556040840151600282018054606087015160808801511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b1995909716929097169190911792909216939093171692909217905560a090910151600390910155855186908290811061159357fe5b6020026020010151601682815481106115a857fe5b9060005260206000200190805190602001906115c5929190617858565b505b600101611392565b507fb8e726330a0dad1cf3d04e925663b17e391f1ed547d79b7f4e5f344119b44246826040516115ff9190618d16565b60405180910390a150505050610e32565b60608061161d83866155c6565b9150915060005b60015481101561172b576001818154811061163b57fe5b906000526020600020906004020160030154600014611723576120026001600160a01b031663092193ab6001838154811061167257fe5b9060005260206000209060040201600301546001848154811061169157fe5b60009182526020909120600491820201546040516001600160e01b031960e086901b1681526116cc926001600160a01b039092169101618029565b6000604051808303818588803b1580156116e557600080fd5b505af11580156116f9573d6000803e3d6000fd5b505050505060006001828154811061170d57fe5b9060005260206000209060040201600301819055505b600101611624565b504715611799577f6ecc855f9440a9282c90913bbc91619fd44f5ec0b462af28d127b116f130aa4d476040516117619190618d16565b60405180910390a1604051611002904780156108fc02916000818181858888f19350505050158015611797573d6000803e3d6000fd5b505b600060038190556005558151156117b4576117b482826157ff565b6110016001600160a01b031663fc4333cd6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156117f157600080fd5b505af1158015611805573d6000803e3d6000fd5b50506040517fedd8d7296956dd970ab4de3f2fc03be2b0ffc615d20cd4c72c6e44f928630ebf925060009150a150505050505050565b60035481565b606881565b61200581565b336120021461186d5760405162461bcd60e51b8152600401610e1290618cd0565b60005b6015548110156118f557816001600160a01b03166015828154811061189157fe5b60009182526020909120600490910201546001600160a01b031614156118ed576001601582815481106118c057fe5b9060005260206000209060040201600201601c6101000a81548160ff0219169083151502179055506118f5565b600101611870565b5050565b3341146119185760405162461bcd60e51b8152600401610e1290618b72565b60105443116119395760405162461bcd60e51b8152600401610e1290618576565b3a156119575760405162461bcd60e51b8152600401610e1290618861565b60005460ff166119795760405162461bcd60e51b8152600401610e12906183e3565b60006110023168056bc75e2d631000008111156119b0576119a98168056bc75e2d6310000063ffffffff615fe216565b91506119b7565b5050611c38565b6040516309a99b4f60e41b815261100290639a99b4f0906119de903090869060040161803d565b602060405180830381600087803b1580156119f857600080fd5b505af1158015611a0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a309190617ed4565b915081611a3e575050611c38565b6000805b84811015611a6c57858582818110611a5657fe5b9050602002013582019150806001019050611a42565b5080611a7a57505050611c38565b6000806000805b89811015611c305784898983818110611a9657fe5b90506020020135880281611aa657fe5b0493508a8a82818110611ab557fe5b9050602002016020810190611aca9190617c7d565b6001600160a01b03811660009081526004602052604090205490935091508115611be6576000600180840381548110611aff57fe5b9060005260206000209060040201905080600201601c9054906101000a900460ff1615611b6c57836001600160a01b03167fb9c75cbbfde137c4281689580799ef5f52144e78858f776a5979b2b212137d8586604051611b5f9190618d16565b60405180910390a2611be0565b600354611b7f908663ffffffff61602416565b6003908155810154611b97908663ffffffff61602416565b60038201556040516001600160a01b038516907fcb0aad6cf9cd03bdf6137e359f541c42f38b39f007cae8e89e88aa7d8c6617b290611bd7908890618d16565b60405180910390a25b50611c28565b826001600160a01b03167fb9c75cbbfde137c4281689580799ef5f52144e78858f776a5979b2b212137d8585604051611c1f9190618d16565b60405180910390a25b600101611a81565b505050505050505b5050436010555050565b6001546000908210611c5657506000611d0c565b60006001600160a01b031660018381548110611c6e57fe5b60009182526020909120600490910201546001600160a01b03161480611c9e57506008541580611c9e5750600a54155b80611cad575060085460095410155b80611cbe5750611cbc82611d11565b155b80611ce757506000600b8381548110611cd357fe5b906000526020600020906016020160000154115b80611cfb57506001611cf7613078565b5111155b15611d0857506000611d0c565b5060015b919050565b6001546000908210611d2557506000611d0c565b600b548210611d625760018281548110611d3b57fe5b9060005260206000209060040201600201601c9054906101000a900460ff16159050611d0c565b60018281548110611d6f57fe5b9060005260206000209060040201600201601c9054906101000a900460ff16158015611dbc5750600b8281548110611da357fe5b600091825260209091206001601690920201015460ff16155b92915050565b600b54611e8057611dd1617829565b60015460005b81811015611e7c57600b80546001810182556000919091528351600080516020618e238339815191526016909202918201908155602080860151600080516020618e638339815191528401805460ff1916911515919091179055604086015180518794611e5893600080516020618e43833981519152909101920190617858565b506060820151611e6e90600383019060136178d2565b505050806001019050611dd7565b5050505b336110011480611e91575033612002145b611ead5760405162461bcd60e51b8152600401610e129061841a565b6001600160a01b03811660009081526004602052604090205480611ed15750611f24565b6001810390506000600b8281548110611ee657fe5b600091825260209091206001601690920201015460ff169050611f098383615213565b8015611f125750805b15610e32576009805460001901905550505b50565b60015460609081906000805b82811015611f7a5760018181548110611f4857fe5b9060005260206000209060040201600201601c9054906101000a900460ff16611f72576001909101905b600101611f33565b50606081604051908082528060200260200182016040528015611fa7578160200160208202803683370190505b509050606082604051908082528060200260200182016040528015611fe057816020015b6060815260200190600190039081611fcb5790505b50600b546000945090915084141561215b5760005b84811015612155576001818154811061200a57fe5b9060005260206000209060040201600201601c9054906101000a900460ff1661214d576001818154811061203a57fe5b600091825260209091206004909102015483516001600160a01b039091169084908690811061206557fe5b60200260200101906001600160a01b031690816001600160a01b031681525050600b818154811061209257fe5b600091825260209182902060026016909202018101805460408051601f60001961010060018616150201909316949094049182018590048502840185019052808352919290919083018282801561212a5780601f106120ff5761010080835404028352916020019161212a565b820191906000526020600020905b81548152906001019060200180831161210d57829003601f168201915b505050505082858151811061213b57fe5b60209081029190910101526001909301925b600101611ff5565b506121f7565b60005b848110156121f5576001818154811061217357fe5b9060005260206000209060040201600201601c9054906101000a900460ff166121ed57600181815481106121a357fe5b600091825260209091206004909102015483516001600160a01b03909116908490869081106121ce57fe5b6001600160a01b03909216602092830291909101909101526001909301925b60010161215e565b505b909450925050505b9091565b600181565b61100181565b60085481565b6102ca81565b600881565b6060806000600e549050600080600c541161223b57601561223f565b600c545b9050606061224b613078565b9050606061225882616049565b90508282511161226f5790945092506121ff915050565b83838351031015612281578282510393505b83156122b7576014430461229d83838388880360008a8a6161b7565b6122b58383838888038989038a8b8b8b5103016161b7565b505b6060836040519080825280602002602001820160405280156122e3578160200160208202803683370190505b50905060608460405190808252806020026020018201604052801561231c57816020015b60608152602001906001900390816123075790505b50905060005b8581101561239d5784818151811061233657fe5b602002602001015183828151811061234a57fe5b60200260200101906001600160a01b031690816001600160a01b03168152505083818151811061237657fe5b602002602001015182828151811061238a57fe5b6020908102919091010152600101612322565b509096509450505050509091565b60065481565b61200681565b61200081565b6001600160a01b038116600090815260046020526040812054806123e5576000915050611d0c565b6000190161113d81611d11565b6001600160a01b0381166000908152600460205260408120548061241a576000915050611d0c565b60018082038154811061242957fe5b906000526020600020906004020160030154915050919050565b600081565b606781565b600f5481565b6012818154811061246057fe5b600091825260209182902001805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152935090918301828280156124f15780601f106124c6576101008083540402835291602001916124f1565b820191906000526020600020905b8154815290600101906020018083116124d457829003601f168201915b505050505081565b60105481565b6001818154811061250c57fe5b600091825260209091206004909102018054600182015460028301546003909301546001600160a01b0392831694509082169291821691600160a01b81046001600160401b031691600160e01b90910460ff169086565b61100581565b600281565b601081565b61100881565b6103e881565b600b81565b600c5481565b61200381565b606681565b61271081565b33612000146125bc5760405162461bcd60e51b8152600401610e1290618b23565b7f41ce201247b6ceb957dcdb217d0b8acb50b9ea0e12af9af4f5e7f389021016058383836040516125ef93929190618d5f565b60405180910390a1505050565b60025481565b60115481565b60145460ff1681565b600a5481565b6001600160a01b0381166000908152600460205260408120548061264d5760405162461bcd60e51b8152600401610e1290618aab565b6000190192915050565b600b5461271557612666617829565b60015460005b8181101561271157600b80546001810182556000919091528351600080516020618e238339815191526016909202918201908155602080860151600080516020618e638339815191528401805460ff19169115159190911790556040860151805187946126ed93600080516020618e43833981519152909101920190617858565b50606082015161270390600383019060136178d2565b50505080600101905061266c565b5050505b6008546127225760036008555b600a5461272f576002600a555b600061273a33612617565b905061274581611c42565b6127615760405162461bcd60e51b8152600401610e1290618798565b611f24338261630e565b600981565b61100781565b600381565b601481565b61100681565b6040518060a0016040528060788152602001618e836078913981565b60005460ff1681565b61200281565b61300081565b6402540be40081565b60005460ff166127e25760405162461bcd60e51b8152600401610e12906183e3565b33611007146128035760405162461bcd60e51b8152600401610e129061888f565b61286d84848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080518082019091526013815272065787069726554696d655365636f6e6447617606c1b602082015291506163a69050565b1561290a57602081146128925760405162461bcd60e51b8152600401610e1290618a65565b604080516020601f84018190048102820181019092528281526000916128d0918585808385018382808284376000920191909152506163ff92505050565b9050606481101580156128e65750620186a08111155b6129025760405162461bcd60e51b8152600401610e1290618688565b600255613016565b61296a84848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260098152686275726e526174696f60b81b602082015291506163a69050565b156129fd576020811461298f5760405162461bcd60e51b8152600401610e1290618201565b604080516020601f84018190048102820181019092528281526000916129cd918585808385018382808284376000920191909152506163ff92505050565b9050612710600f54820111156129f55760405162461bcd60e51b8152600401610e1290618238565b600655613016565b612a6784848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260138152726d61784e756d4f664d61696e7461696e696e6760681b602082015291506163a69050565b15612b015760208114612a8c5760405162461bcd60e51b8152600401610e12906182a0565b604080516020601f8401819004810282018101909252828152600091612aca918585808385018382808284376000920191909152506163ff92505050565b600c5490915080612ad9575060155b808210612af85760405162461bcd60e51b8152600401610e12906185e0565b50600855613016565b612b6a84848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260128152716d61696e7461696e536c6173685363616c6560701b602082015291506163a69050565b15612c035760208114612b8f5760405162461bcd60e51b8152600401610e1290618369565b604080516020601f8401819004810282018101909252828152600091612bcd918585808385018382808284376000920191909152506163ff92505050565b9050600081118015612bdf5750600a81105b612bfb5760405162461bcd60e51b8152600401610e1290618c03565b600a55613016565b612c7784848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601981527f6d61784e756d4f66576f726b696e6743616e6469646174657300000000000000602082015291506163a69050565b15612d065760208114612c9c5760405162461bcd60e51b8152600401610e129061831d565b604080516020601f8401819004810282018101909252828152600091612cda918585808385018382808284376000920191909152506163ff92505050565b9050600d54811115612cfe5760405162461bcd60e51b8152600401610e12906186fe565b600e55613016565b612d6f84848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260128152716d61784e756d4f6643616e6469646174657360701b602082015291506163a69050565b15612df15760208114612d945760405162461bcd60e51b8152600401610e12906188dd565b604080516020601f8401819004810282018101909252828152600091612dd2918585808385018382808284376000920191909152506163ff92505050565b600d819055600e54909150811015612deb57600d54600e555b50613016565b612e5584848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600d81526c6e756d4f66436162696e65747360981b602082015291506163a69050565b15612f035760208114612e7a5760405162461bcd60e51b8152600401610e12906183ae565b604080516020601f8401819004810282018101909252828152600091612eb8918585808385018382808284376000920191909152506163ff92505050565b905060008111612eda5760405162461bcd60e51b8152600401610e1290618488565b6064811115612efb5760405162461bcd60e51b8152600401610e12906184d0565b600c55613016565b612f6b84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601181527073797374656d526577617264526174696f60781b602082015291506163a69050565b15612ffe5760208114612f905760405162461bcd60e51b8152600401610e1290618bbf565b604080516020601f8401819004810282018101909252828152600091612fce918585808385018382808284376000920191909152506163ff92505050565b905061271060065482011115612ff65760405162461bcd60e51b8152600401610e12906189c6565b600f55613016565b60405162461bcd60e51b8152600401610e1290618c60565b7f6cdb0ac70ab7f2e2d035cca5be60d89906f2dede7648ddbd7402189c1eeed17a8484848460405161304b94939291906181cf565b60405180910390a150505050565b60046020526000908152604090205481565b68056bc75e2d6310000081565b6001546060906000805b828110156130a75761309381611d11565b1561309f578160010191505b600101613082565b506060816040519080825280602002602001820160405280156130d4578160200160208202803683370190505b5090506000915060005b8381101561315b576130ef81611d11565b15613153576001818154811061310157fe5b600091825260209091206004909102015482516001600160a01b039091169083908590811061312c57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508260010192505b6001016130de565b50925050505b90565b601581565b61027181565b61100281565b6013818154811061246057fe5b600061318c613078565b519050600080600c54116131a15760156131a5565b600c545b9050808211156131b3578091505b816131bd57600191505b5090565b67016345785d8a000081565b60055481565b61100381565b61200481565b60005460ff16156132025760405162461bcd60e51b8152600401610e129061898f565b61320a6178ff565b600061322d6040518060a0016040528060788152602001618e8360789139613e34565b915091508061324e5760405162461bcd60e51b8152600401610e1290618ae2565b613256617829565b60005b83602001515181101561345757600b80546001810182556000919091528251600080516020618e238339815191526016909202918201908155602080850151600080516020618e638339815191528401805460ff19169115159190911790556040850151805186946132df93600080516020618e43833981519152909101920190617858565b5060608201516132f590600383019060136178d2565b5050508360400151818151811061330857fe5b6020026020010151600b828154811061331d57fe5b90600052602060002090601602016002019080519060200190613341929190617858565b5060018460200151828151811061335457fe5b60209081029190910181015182546001818101855560009485528385208351600493840290910180546001600160a01b039283166001600160a01b03199182161782558587015182850180549185169183169190911790556040860151600283018054606089015160808a01511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b199590981692909516919091179290921694909417161790915560a09093015160039093019290925591870151805191850193918590811061342a57fe5b602090810291909101810151516001600160a01b0316825281019190915260400160002055600101613259565b50506103e860025550506000805460ff19166001179055565b600d5481565b601354600090815b8181101561357f5761356785858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506013805490925085915081106134cf57fe5b600091825260209182902001805460408051601f600260001961010060018716150201909416939093049283018590048502810185019091528181529283018282801561355d5780601f106135325761010080835404028352916020019161355d565b820191906000526020600020905b81548152906001019060200180831161354057829003601f168201915b5050505050616404565b1561357757600192505050611dbc565b60010161347e565b5060125460005b818110156135f0576135d786868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506012805490925085915081106134cf57fe5b156135e85760019350505050611dbc565b600101613586565b50600095945050505050565b336110011461361d5760405162461bcd60e51b8152600401610e1290618c87565b600b546136db5761362c617829565b60015460005b818110156136d757600b80546001810182556000919091528351600080516020618e238339815191526016909202918201908155602080860151600080516020618e638339815191528401805460ff19169115159190911790556040860151805187946136b393600080516020618e43833981519152909101920190617858565b5060608201516136c990600383019060136178d2565b505050806001019050613632565b5050505b60006136e682616468565b90506136f181611c42565b156118f5576118f5828261630e565b606581565b601181565b3341146137295760405162461bcd60e51b8152600401610e1290618b72565b60005460ff1661374b5760405162461bcd60e51b8152600401610e12906183e3565b6000341161376b5760405162461bcd60e51b8152600401610e12906186cf565b3a156137895760405162461bcd60e51b8152600401610e1290618861565b6001600160a01b03811660009081526004602052604090205460145434919060ff166137c957610271600f556103e86006556014805460ff191660011790555b6000821180156137db57506000600f54115b1561388d5760006138096127106137fd600f543461660b90919063ffffffff16565b9063ffffffff61664516565b9050801561388b576040516110029082156108fc029083906000818181858888f19350505050158015613840573d6000803e3d6000fd5b507f6ecc855f9440a9282c90913bbc91619fd44f5ec0b462af28d127b116f130aa4d816040516138709190618d16565b60405180910390a1613888838263ffffffff615fe216565b92505b505b60008211801561389f57506000600654115b156139455760006138c16127106137fd6006543461660b90919063ffffffff16565b905080156139435760405161dead9082156108fc029083906000818181858888f193505050501580156138f8573d6000803e3d6000fd5b507f627059660ea01c4733a328effb2294d2f86905bf806da763a89cee254de8bee5816040516139289190618d16565b60405180910390a1613940838263ffffffff615fe216565b92505b505b8015613a4357600060018083038154811061395c57fe5b9060005260206000209060040201905080600201601c9054906101000a900460ff16156139c957836001600160a01b03167ff177e5d6c5764d79c32883ed824111d9b13f5668cf6ab1cc12dd36791dd955b4846040516139bc9190618d16565b60405180910390a2613a3d565b6003546139dc908463ffffffff61602416565b60039081558101546139f4908463ffffffff61602416565b60038201556040516001600160a01b038516907f93a090ecc682c002995fad3c85b30c5651d7fd29b0be5da9d784a3302aedc05590613a34908690618d16565b60405180910390a25b50610e32565b826001600160a01b03167ff177e5d6c5764d79c32883ed824111d9b13f5668cf6ab1cc12dd36791dd955b483604051613a7c9190618d16565b60405180910390a2505050565b600e5481565b61100081565b61dead81565b600b8181548110613aa857fe5b6000918252602091829020601691909102018054600180830154600280850180546040805161010096831615969096026000190190911692909204601f810188900488028501880190925281845293965060ff90911694919291830182828015613b535780601f10613b2857610100808354040283529160200191613b53565b820191906000526020600020905b815481529060010190602001808311613b3657829003601f168201915b5050505050905083565b61100481565b6000600a5460001480613b74575081155b80613b7f5750600954155b15613b8c5750600061113d565b60096000815460019003919050819055506000613bd7600a546137fd856137fd600b8981548110613bb957fe5b6000918252602090912060169091020154439063ffffffff615fe216565b90506000600b8581548110613be857fe5b906000526020600020906016020160010160006101000a81548160ff0219169083151502179055506000806110016001600160a01b0316638256ace66040518163ffffffff1660e01b8152600401604080518083038186803b158015613c4d57600080fd5b505afa158015613c61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c859190617eec565b9150915060009350808310613de457613c9e8787615213565b5060405163436aa28360e11b8152600090612002906386d5450690613cc7908b90600401618029565b60206040518083038186803b158015613cdf57600080fd5b505afa158015613cf3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d179190617c99565b6001600160a01b031614613d83576040516313d13bdb60e31b815261100190639e89ded890613d4c908a90879060040161803d565b600060405180830381600087803b158015613d6657600080fd5b505af1158015613d7a573d6000803e3d6000fd5b50505050613ddb565b6040516305bfb49960e41b815261100190635bfb499090613da8908a90600401618029565b600060405180830381600087803b158015613dc257600080fd5b505af1158015613dd6573d6000803e3d6000fd5b505050505b60019350613df6565b818310613df657613df487616468565b505b6040516001600160a01b038816907fb9d38178dc641ff1817967a63c9078cbcd955a9f1fcd75e0e3636de615d44d3b90600090a25050509392505050565b613e3c6178ff565b6000613e466178ff565b613e4e61799c565b613e5f613e5a86616687565b6166ac565b90506000805b613e6e836166f6565b15613fe25780613e9357613e89613e8484616717565b616765565b60ff168452613fda565b8060011415613fd5576060613eaf613eaa85616717565b6167e5565b90508051604051908082528060200260200182016040528015613eec57816020015b613ed9617923565b815260200190600190039081613ed15790505b5085602001819052508051604051908082528060200260200182016040528015613f2a57816020015b6060815260200190600190039081613f155790505b50604086015260005b8151811015613fca57613f44617923565b60606000613f64858581518110613f5757fe5b60200260200101516168b6565b92509250925080613f84578860009a509a50505050505050505050613feb565b8289602001518581518110613f9557fe5b60200260200101819052508189604001518581518110613fb157fe5b6020026020010181905250505050806001019050613f33565b506001925050613fda565b613fe2565b600101613e65565b50919350909150505b915091565b604080516001808252818301909252606091829190816020015b606081526020019060019003908161400a5790505090506140308363ffffffff166169d0565b8160008151811061403d57fe5b602002602001018190525061113d816169e3565b600060648351111561408857600080516020618e038339815191526040516140789061852d565b60405180910390a1506066611dbc565b60005b83518110156141265760005b8181101561411d578481815181106140ab57fe5b6020026020010151600001516001600160a01b03168583815181106140cc57fe5b6020026020010151600001516001600160a01b0316141561411557600080516020618e038339815191526040516141029061863d565b60405180910390a1606692505050611dbc565b600101614097565b5060010161408b565b5060608060606015805480602002602001604051908101604052809291908181526020016000905b828210156141d85760008481526020908190206040805160c0810182526004860290920180546001600160a01b039081168452600180830154821685870152600283015491821693850193909352600160a01b81046001600160401b03166060850152600160e01b900460ff16151560808401526003015460a0830152908352909201910161414e565b50505050905060606016805480602002602001604051908101604052809291908181526020016000905b828210156142ad5760008481526020908190208301805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156142995780601f1061426e57610100808354040283529160200191614299565b820191906000526020600020905b81548152906001019060200180831161427c57829003601f168201915b505050505081526020019060010190614202565b50505050905060005b825181101561430a578281815181106142cb57fe5b6020026020010151606001516003028382815181106142e657fe5b60209081029190910101516001600160401b039091166060909101526001016142b6565b5060608061431a89898686616a6d565b9150915061432882826155c6565b60015460408051828152602080840282010190915292985090965060009550859450925060609150828015614367578160200160208202803683370190505b50905060005b828110156144f85760006001600160a01b03166120026001600160a01b03166386d545066001848154811061439e57fe5b60009182526020909120600491820201546040516001600160e01b031960e085901b1681526143d9926001600160a01b039092169101618029565b60206040518083038186803b1580156143f157600080fd5b505afa158015614405573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144299190617c99565b6001600160a01b03161461448b57600182828151811061444557fe5b602002602001019060ff16908160ff16815250506001818154811061446657fe5b906000526020600020906004020160030154600014614486578360010193505b6144f0565b67016345785d8a0000600182815481106144a157fe5b906000526020600020906004020160030154106144c3578460010194506144f0565b600181815481106144d057fe5b9060005260206000209060040201600301546000146144f0578360010193505b60010161436d565b50606084604051908082528060200260200182016040528015614525578160200160208202803683370190505b509050606085604051908082528060200260200182016040528015614554578160200160208202803683370190505b509050606086604051908082528060200260200182016040528015614583578160200160208202803683370190505b5090506060876040519080825280602002602001820160405280156145b2578160200160208202803683370190505b50905060006060886040519080825280602002602001820160405280156145e3578160200160208202803683370190505b509050606089604051908082528060200260200182016040528015614612578160200160208202803683370190505b50905060009a506000995060006110046001600160a01b031663149d14d96040518163ffffffff1660e01b815260040160206040518083038186803b15801561465a57600080fd5b505afa15801561466e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906146929190617ed4565b905067016345785d8a00008111156146de57600080516020618e038339815191526040516146bf9061894e565b60405180910390a160689e505050505050505050505050505050611dbc565b60005b8a811015614a72578981815181106146f557fe5b602002602001015160ff16600114156147eb576001818154811061471557fe5b9060005260206000209060040201600301546000146147e6576001818154811061473b57fe5b600091825260209091206004909102015484516001600160a01b039091169085908e90811061476657fe5b60200260200101906001600160a01b031690816001600160a01b0316815250506001818154811061479357fe5b906000526020600020906004020160030154838d815181106147b157fe5b60200260200101818152505060018a8d815181106147cb57fe5b602002602001019060ff16908160ff16815250508b6001019b505b614a6a565b67016345785d8a00006001828154811061480157fe5b90600052602060002090600402016003015410614986576001818154811061482557fe5b906000526020600020906004020160020160009054906101000a90046001600160a01b0316898e8151811061485657fe5b60200260200101906001600160a01b031690816001600160a01b03168152505060006402540be4006001838154811061488b57fe5b906000526020600020906004020160030154816148a457fe5b06600183815481106148b257fe5b9060005260206000209060040201600301540390506148da8382615fe290919063ffffffff16565b898f815181106148e657fe5b602002602001018181525050600182815481106148ff57fe5b906000526020600020906004020160010160009054906101000a90046001600160a01b0316878f8151811061493057fe5b60200260200101906001600160a01b031690816001600160a01b03168152505081888f8151811061495d57fe5b6020908102919091010152614978868263ffffffff61602416565b95508d6001019d5050614a6a565b6001818154811061499357fe5b906000526020600020906004020160030154600014614a6a57600181815481106149b957fe5b906000526020600020906004020160010160009054906101000a90046001600160a01b0316848d815181106149ea57fe5b60200260200101906001600160a01b031690816001600160a01b03168152505060018181548110614a1757fe5b906000526020600020906004020160030154838d81518110614a3557fe5b60200260200101818152505060008a8d81518110614a4f57fe5b602002602001019060ff16908160ff16815250508b6001019b505b6001016146e1565b5060008415614ce8576002546040516303702b2960e51b815261100491636e056520918891614aac918e918e918d91420190600401618137565b6020604051808303818588803b158015614ac557600080fd5b505af193505050508015614af6575060408051601f3d908101601f19168201909252614af391810190617e01565b60015b614c6d576040516000815260443d1015614b1257506000614bad565b60046000803e60005160e01c6308c379a08114614b33576000915050614bad565b60043d036004833e81513d60248201116001600160401b0382111715614b5e57600092505050614bad565b80830180516001600160401b03811115614b7f576000945050505050614bad565b8060208301013d8601811115614b9d57600095505050505050614bad565b601f01601f191660405250925050505b80614bb85750614bfa565b60019150857fa7cdeed7d0db45e3219a6e5d60838824c16f1d39991fcfe3f963029c844bf28082604051614bec91906181bc565b60405180910390a250614c68565b3d808015614c24576040519150601f19603f3d011682016040523d82523d6000602084013e614c29565b606091505b5060019150857fbfa884552dd8921b6ce90bfe906952ae5b3b29be0cc1a951d4f62697635a3a4582604051614c5e91906181bc565b60405180910390a2505b614ce8565b8015614caf577fa217d08e65f80c73121cd9db834d81652d544bfbf452f6d04922b16c90a37b7086604051614ca29190618d16565b60405180910390a1614ce6565b857fa7cdeed7d0db45e3219a6e5d60838824c16f1d39991fcfe3f963029c844bf280604051614cdd906182e6565b60405180910390a25b505b8015614e9e5760005b8751811015614e9c576000888281518110614d0857fe5b60200260200101519050600060018281548110614d2157fe5b60009182526020909120600160049092020181015481546001600160a01b03909116916108fc9185908110614d5257fe5b9060005260206000209060040201600301549081150290604051600060405180830381858888f1935050505090508015614e0e5760018281548110614d9357fe5b60009182526020909120600160049092020181015481546001600160a01b03909116917f6c61d60f69a7beb3e1c80db7f39f37b208537cbb19da3174511b477812b2fc7d9185908110614de257fe5b906000526020600020906004020160030154604051614e019190618d16565b60405180910390a2614e92565b60018281548110614e1b57fe5b60009182526020909120600160049092020181015481546001600160a01b03909116917f25d0ce7d2f0cec669a8c17efe49d195c13455bb8872b65fa610ac7f53fe4ca7d9185908110614e6a57fe5b906000526020600020906004020160030154604051614e899190618d16565b60405180910390a25b5050600101614cf1565b505b8351156150945760005b8451811015615092578a8181518110614ebd57fe5b602002602001015160ff1660011415614f5c576120026001600160a01b031663092193ab858381518110614eed57fe5b6020026020010151878481518110614f0157fe5b60200260200101516040518363ffffffff1660e01b8152600401614f259190618029565b6000604051808303818588803b158015614f3e57600080fd5b505af1158015614f52573d6000803e3d6000fd5b505050505061508a565b6000858281518110614f6a57fe5b60200260200101516001600160a01b03166108fc868481518110614f8a57fe5b60200260200101519081150290604051600060405180830381858888f193505050509050801561502057858281518110614fc057fe5b60200260200101516001600160a01b03167f6c61d60f69a7beb3e1c80db7f39f37b208537cbb19da3174511b477812b2fc7d868481518110614ffe57fe5b60200260200101516040516150139190618d16565b60405180910390a2615088565b85828151811061502c57fe5b60200260200101516001600160a01b03167f25d0ce7d2f0cec669a8c17efe49d195c13455bb8872b65fa610ac7f53fe4ca7d86848151811061506a57fe5b602002602001015160405161507f9190618d16565b60405180910390a25b505b600101614ea8565b505b5050505050505050505050505060005b60015481101561510157600181815481106150bb57fe5b9060005260206000209060040201600301546000146150f9576000600182815481106150e357fe5b9060005260206000209060040201600301819055505b6001016150a4565b50471561516f577f6ecc855f9440a9282c90913bbc91619fd44f5ec0b462af28d127b116f130aa4d476040516151379190618d16565b60405180910390a1604051611002904780156108fc02916000818181858888f1935050505015801561516d573d6000803e3d6000fd5b505b6000600381905560055581511561518a5761518a82826157ff565b6110016001600160a01b031663fc4333cd6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156151c757600080fd5b505af11580156151db573d6000803e3d6000fd5b50506040517fedd8d7296956dd970ab4de3f2fc03be2b0ffc615d20cd4c72c6e44f928630ebf925060009150a1506000949350505050565b6000806001838154811061522357fe5b9060005260206000209060040201600301549050600060018080549050039050600161524d613078565b51116152825760006001858154811061526257fe5b906000526020600020906004020160030181905550600092505050611dbc565b846001600160a01b03167f3b6f9ef90462b512a1293ecec018670bf7b7f1876fb727590a8a6d7643130a70836040516152bb9190618d16565b60405180910390a26001600160a01b038516600090815260046020526040812055835b600154600019018110156154a857600181600101815481106152fc57fe5b90600052602060002090600402016001828154811061531757fe5b60009182526020909120825460049092020180546001600160a01b03199081166001600160a01b0393841617825560018085015481840180548416918616919091179055600280860180549185018054909416919095161780835584546001600160401b03600160a01b91829004160267ffffffffffffffff60a01b1990911617808355935460ff600160e01b918290041615150260ff60e01b19909416939093179055600392830154920191909155600b8054909183019081106153d857fe5b9060005260206000209060160201600b82815481106153f357fe5b600091825260209091208254601690920201908155600180830154818301805460ff909216151560ff199092169190911790556002808401805461544a9383860193908216156101000260001901909116046179bc565b5061545d60038281019084016013617a31565b5090505080600101600460006001848154811061547657fe5b600091825260208083206004909202909101546001600160a01b031683528201929092526040019020556001016152de565b5060018054806154b457fe5b60008281526020812060046000199093019283020180546001600160a01b0319908116825560018201805490911690556002810180546001600160e81b0319169055600301559055600b80548061550757fe5b60008281526020812060166000199093019283020181815560018101805460ff19169055906155396002830182617958565b615547600383016000617a5b565b50509055600081838161555657fe5b04905080156155ba5760015460005b818110156155b757826001828154811061557b57fe5b906000526020600020906004020160030154016001828154811061559b57fe5b6000918252602090912060036004909202010155600101615565565b50505b50600195945050505050565b6060806000808080806155d7613182565b6001549091505b80156156e557600181039250600b83815481106155f757fe5b600091825260209091206001601690920201015460ff16615617576156dc565b6001838154811061562457fe5b60009182526020909120600490910201546001600160a01b0316945061564b858484613b63565b935083158061565e575060018a51038610155b15615668576156dc565b60005b8a518110156156da57856001600160a01b03168b828151811061568a57fe5b6020026020010151600001516001600160a01b031614156156d25760018b82815181106156b357fe5b60209081029190910101519015156080909101526001909601956156da565b60010161566b565b505b600019016155de565b508489510360405190808252806020026020018201604052801561572357816020015b615710617923565b8152602001906001900390816157085790505b5096508489510360405190808252806020026020018201604052801561575d57816020015b60608152602001906001900390816157485790505b5095506000915060005b89518110156157f15789818151811061577c57fe5b6020026020010151608001516157e95789818151811061579857fe5b60200260200101518884815181106157ac57fe5b60200260200101819052508881815181106157c357fe5b60200260200101518784815181106157d757fe5b60200260200101819052508260010192505b600101615767565b5050505050505b9250929050565b600154825160005b8281101561591c576001615819617923565b6001838154811061582657fe5b600091825260208083206040805160c08101825260049490940290910180546001600160a01b0390811685526001820154811693850193909352600281015492831691840191909152600160a01b82046001600160401b03166060840152600160e01b90910460ff16151560808301526003015460a082015291505b848110156158f0578781815181106158b657fe5b6020026020010151600001516001600160a01b031682600001516001600160a01b031614156158e857600092506158f0565b6001016158a2565b5081156159125780516001600160a01b03166000908152600460205260408120555b5050600101615807565b50808211156159db57805b828110156159d957600180548061593a57fe5b60008281526020812060046000199093019283020180546001600160a01b0319908116825560018201805490911690556002810180546001600160e81b0319169055600301559055600b80548061598d57fe5b60008281526020812060166000199093019283020181815560018101805460ff19169055906159bf6002830182617958565b6159cd600383016000617a5b565b50509055600101615927565b505b60008183106159ea57816159ec565b825b905060005b81811015615d8457615a9e868281518110615a0857fe5b602002602001015160018381548110615a1d57fe5b60009182526020918290206040805160c08101825260049390930290910180546001600160a01b0390811684526001820154811694840194909452600281015493841691830191909152600160a01b83046001600160401b03166060830152600160e01b90920460ff161515608082015260039091015460a0820152616e39565b615c52578060010160046000888481518110615ab657fe5b6020026020010151600001516001600160a01b03166001600160a01b0316815260200190815260200160002081905550858181518110615af257fe5b602002602001015160018281548110615b0757fe5b6000918252602091829020835160049092020180546001600160a01b039283166001600160a01b0319918216178255928401516001820180549184169185169190911790556040840151600282018054606087015160808801511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b1995909716929097169190911792909216939093171692909217905560a0909101516003909101558451859082908110615bc257fe5b6020026020010151600b8281548110615bd757fe5b90600052602060002090601602016002019080519060200190615bfb929190617858565b506000600b8281548110615c0b57fe5b60009182526020822060169190910201600101805460ff191692151592909217909155600b805483908110615c3c57fe5b6000918252602090912060169091020155615d7c565b615ce3858281518110615c6157fe5b6020026020010151600b8381548110615c7657fe5b600091825260209182902060026016909202018101805460408051601f60001961010060018616150201909316949094049182018590048502840185019052808352919290919083018282801561355d5780601f106135325761010080835404028352916020019161355d565b615d2e57848181518110615cf357fe5b6020026020010151600b8281548110615d0857fe5b90600052602060002090601602016002019080519060200190615d2c929190617858565b505b858181518110615d3a57fe5b60200260200101516080015160018281548110615d5357fe5b9060005260206000209060040201600201601c6101000a81548160ff0219169083151502179055505b6001016159f1565b5082821115615f5c57615d95617829565b835b83811015615f5957858181518110615dab57fe5b602002602001015182604001819052506001878281518110615dc957fe5b6020908102919091018101518254600181810185556000948552838520835160049093020180546001600160a01b039384166001600160a01b0319918216178255848601518284018054918616918316919091179055604080860151600284018054606089015160808a01511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b1995909a1692909616919091179290921696909617169190911790935560a090930151600390930192909255600b8054928301815590935284516016909102600080516020618e23833981519152810191825585830151600080516020618e638339815191528201805491151560ff1990921691909117905592850151805186949293615eff93600080516020618e4383398151915201920190617858565b506060820151615f1590600383019060136178d2565b5050508060010160046000898481518110615f2c57fe5b602090810291909101810151516001600160a01b0316825281019190915260400160002055600101615d97565b50505b615f64616eba565b615f6c6170a2565b6000600981905560015493505b83811015615fda576000600b8281548110615f9057fe5b60009182526020822060169190910201600101805460ff191692151592909217909155600b805483908110615fc157fe5b6000918252602090912060169091020155600101615f79565b505050505050565b600061113d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250617290565b60008282018381101561113d5760405162461bcd60e51b8152600401610e1290618451565b60015481516040805182815260208084028201019091526060929190839082801561608857816020015b60608152602001906001900390816160735790505b50600b54909150831461609f579250611d0c915050565b60005b828110156161ae57600b6001600460008985815181106160be57fe5b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000205403815481106160f257fe5b600091825260209182902060026016909202018101805460408051601f60001961010060018616150201909316949094049182018590048502840185019052808352919290919083018282801561618a5780601f1061615f5761010080835404028352916020019161618a565b820191906000526020600020905b81548152906001019060200180831161616d57829003601f168201915b505050505082828151811061619b57fe5b60209081029190910101526001016160a2565b50949350505050565b60005b8281101561630457600082878388016040516020016161da92919061801b565b6040516020818303038152906040528051906020012060001c816161fa57fe5b069050808501828701146162fb576000898388018151811061621857fe5b602002602001015190506060898489018151811061623257fe5b602002602001015190508a8388018151811061624a57fe5b60200260200101518b858a018151811061626057fe5b60200260200101906001600160a01b031690816001600160a01b031681525050818b8489018151811061628f57fe5b60200260200101906001600160a01b031690816001600160a01b03168152505089838801815181106162bd57fe5b60200260200101518a858a01815181106162d357fe5b6020026020010181905250808a848901815181106162ed57fe5b602002602001018190525050505b506001016161ba565b5050505050505050565b600980546001908101909155600b80548390811061632857fe5b906000526020600020906016020160010160006101000a81548160ff02191690831515021790555043600b828154811061635e57fe5b600091825260208220601690910201919091556040516001600160a01b038416917ff62981a567ec3cec866c6fa93c55bcdf841d6292d18b8d522ececa769375d82d91a25050565b6000816040516020016163b99190617fff565b60405160208183030381529060405280519060200120836040516020016163e09190617fff565b6040516020818303038152906040528051906020012014905092915050565b015190565b815181516000916001918114808314616420576000925061645e565b600160208701838101602088015b60028483851001141561645957805183511461644d5760009650600093505b6020928301920161642e565b505050505b5090949350505050565b6001600160a01b0381166000908152600460205260408120548061649157506000199050611d0c565b6001810390506000600182815481106164a657fe5b90600052602060002090600402016003015490506000600183815481106164c957fe5b6000918252602090912060036004909202010155600154604051600019909101906001600160a01b038616907f8cd4e147d8af98a9e3b6724021b8bf6aed2e5dac71c38f2dce8161b82585b25d90616522908590618d16565b60405180910390a28061653a57829350505050611d0c565b600081838161654557fe5b04905080156166015760005b848110156165a357816001828154811061656757fe5b906000526020600020906004020160030154016001828154811061658757fe5b6000918252602090912060036004909202010155600101616551565b50600180549085015b818110156165fe5782600182815481106165c257fe5b90600052602060002090600402016003015401600182815481106165e257fe5b60009182526020909120600360049092020101556001016165ac565b50505b5091949350505050565b60008261661a57506000611dbc565b8282028284828161662757fe5b041461113d5760405162461bcd60e51b8152600401610e1290618820565b600061113d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506172bc565b61668f617a6a565b506040805180820190915281518152602082810190820152919050565b6166b461799c565b6166bd826172f3565b6166c657600080fd5b60006166d5836020015161732d565b60208085015160408051808201909152868152920190820152915050919050565b6000616700617a6a565b505080518051602091820151919092015191011190565b61671f617a6a565b616728826166f6565b61673157600080fd5b6020820151600061674182617390565b80830160209586015260408051808201909152908152938401919091525090919050565b80516000901580159061677a57508151602110155b61678357600080fd5b6000616792836020015161732d565b905080836000015110156167b85760405162461bcd60e51b8152600401610e1290618a2e565b8251602080850151830180519284900392918310156161ae57506020919091036101000a90049392505050565b60606167f0826172f3565b6167f957600080fd5b600061680483617471565b905060608160405190808252806020026020018201604052801561684257816020015b61682f617a6a565b8152602001906001900390816168275790505b5090506000616854856020015161732d565b60208601510190506000805b848110156168ab5761687183617390565b915060405180604001604052808381526020018481525084828151811061689457fe5b602090810291909101015291810191600101616860565b509195945050505050565b6168be617923565b606060006168ca617923565b60606168d461799c565b6168dd876166ac565b90506000805b6168ec836166f6565b156169c157806169175761690761690284616717565b6174cd565b6001600160a01b031685526169b9565b806001141561693f5761692c61690284616717565b6001600160a01b031660208601526169b9565b80600214156169675761695461690284616717565b6001600160a01b031660408601526169b9565b80600314156169935761697c613e8484616717565b6001600160401b03166060860152600191506169b9565b80600414156169b4576169ad6169a884616717565b6174e7565b93506169b9565b6169c1565b6001016168e3565b50929791965091945092505050565b6060611dbc6169de83617557565b61763d565b6060815160001415616a045750604080516000815260208101909152611d0c565b606082600081518110616a1357fe5b602002602001015190506000600190505b8351811015616a5457616a4a82858381518110616a3d57fe5b602002602001015161768f565b9150600101616a24565b5061113d616a67825160c060ff1661770c565b8261768f565b60608060006120026001600160a01b031663c473318f6040518163ffffffff1660e01b815260040160206040518083038186803b158015616aad57600080fd5b505afa158015616ac1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190616ae59190617ed4565b90508085518851011015616afa575083518651015b606081604051908082528060200260200182016040528015616b3657816020015b616b23617923565b815260200190600190039081616b1b5790505b509050606082604051908082528060200260200182016040528015616b6f57816020015b6060815260200190600190039081616b5a5790505b50905060008060005b8b51831080616b875750895182105b8015616b9257508581105b15616e27578b51831415616c0257898281518110616bac57fe5b6020026020010151858281518110616bc057fe5b6020026020010181905250888281518110616bd757fe5b6020026020010151848281518110616beb57fe5b602090810291909101015260019182019101616b78565b8951821415616c6d578b8381518110616c1757fe5b6020026020010151858281518110616c2b57fe5b60200260200101819052508a8381518110616c4257fe5b6020026020010151848281518110616c5657fe5b602090810291909101015260019283019201616b78565b898281518110616c7957fe5b6020026020010151606001516001600160401b03168c8481518110616c9a57fe5b6020026020010151606001516001600160401b03161115616d16578b8381518110616cc157fe5b6020026020010151858281518110616cd557fe5b60200260200101819052508a8381518110616cec57fe5b6020026020010151848281518110616d0057fe5b6020026020010181905250826001019250616e1f565b898281518110616d2257fe5b6020026020010151606001516001600160401b03168c8481518110616d4357fe5b6020026020010151606001516001600160401b03161015616dbf57898281518110616d6a57fe5b6020026020010151858281518110616d7e57fe5b6020026020010181905250888281518110616d9557fe5b6020026020010151848281518110616da957fe5b6020026020010181905250816001019150616e1f565b898281518110616dcb57fe5b6020026020010151600001516001600160a01b03168c8481518110616dec57fe5b6020026020010151600001516001600160a01b03161015616e13578b8381518110616cc157fe5b898281518110616bac57fe5b600101616b78565b50929a91995090975050505050505050565b805182516000916001600160a01b039182169116148015616e73575081602001516001600160a01b031683602001516001600160a01b0316145b8015616e98575081604001516001600160a01b031683604001516001600160a01b0316145b801561113d5750506060908101519101516001600160401b0390811691161490565b60125460135480821115616f0557805b82811015616f03576012805480616edd57fe5b600190038181906000526020600020016000616ef99190617958565b9055600101616eca565b505b6000818310616f145781616f16565b825b905060005b8181101561702e57616fd360128281548110616f3357fe5b600091825260209182902001805460408051601f6002600019610100600187161502019094169390930492830185900485028101850190915281815292830182828015616fc15780601f10616f9657610100808354040283529160200191616fc1565b820191906000526020600020905b815481529060010190602001808311616fa457829003601f168201915b5050505050601383815481106134cf57fe5b6170265760138181548110616fe457fe5b9060005260206000200160128281548110616ffb57fe5b9060005260206000200190805460018160011615610100020316600290046170249291906179bc565b505b600101616f1b565b5082821115610e3257825b8281101561709c5760126013828154811061705057fe5b60009182526020808320845460018181018755958552919093209290910180546170939493909201929091600261010092821615929092026000190116046179bc565b50600101617039565b50505050565b601354600b54808211156170ed57805b828110156170eb5760138054806170c557fe5b6001900381819060005260206000200160006170e19190617958565b90556001016170b2565b505b60008183106170fc57816170fe565b825b905060005b8181101561721d576171bb6013828154811061711b57fe5b600091825260209182902001805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156171a95780601f1061717e576101008083540402835291602001916171a9565b820191906000526020600020905b81548152906001019060200180831161718c57829003601f168201915b5050505050600b8381548110615c7657fe5b61721557600b81815481106171cc57fe5b9060005260206000209060160201600201601382815481106171ea57fe5b9060005260206000200190805460018160011615610100020316600290046172139291906179bc565b505b600101617103565b5082821115610e3257825b8281101561709c576013600b828154811061723f57fe5b600091825260208083208454600180820187559585529190932060169290920290920160029081018054617287959390940193909260001990821615610100020116046179bc565b50600101617228565b600081848411156172b45760405162461bcd60e51b8152600401610e1291906181bc565b505050900390565b600081836172dd5760405162461bcd60e51b8152600401610e1291906181bc565b5060008385816172e957fe5b0495945050505050565b805160009061730457506000611d0c565b6020820151805160001a9060c082101561732357600092505050611d0c565b5060019392505050565b8051600090811a6080811015617347576000915050611d0c565b60b8811080617362575060c08110801590617362575060f881105b15617371576001915050611d0c565b60c08110156173855760b519019050611d0c565b60f519019050611d0c565b80516000908190811a60808110156173ab576001915061746a565b60b88110156173c057607e198101915061746a565b60c081101561741157600060b78203600186019550806020036101000a86510491506001810182019350508083101561740b5760405162461bcd60e51b8152600401610e129061876d565b5061746a565b60f88110156174265760be198101915061746a565b600060f78203600186019550806020036101000a8651049150600181018201935050808310156174685760405162461bcd60e51b8152600401610e129061876d565b505b5092915050565b805160009061748257506000611d0c565b60008090506000617496846020015161732d565b602085015185519181019250015b808210156174c4576174b582617390565b820191508260010192506174a4565b50909392505050565b80516000906015146174de57600080fd5b611dbc82616765565b80516060906174f557600080fd5b6000617504836020015161732d565b83516040805191839003808352601f19601f820116830160200190915291925060609082801561753b576020820181803683370190505b50905060008160200190506161ae8487602001510182856177de565b604080516020808252818301909252606091829190602082018180368337505050602081018490529050600067ffffffffffffffff19841661759b575060186175bf565b6fffffffffffffffffffffffffffffffff1984166175bb575060106175bf565b5060005b60208110156175f5578181815181106175d457fe5b01602001516001600160f81b031916156175ed576175f5565b6001016175bf565b60008160200390506060816040519080825280601f01601f19166020018201604052801561762a576020820181803683370190505b5080830196909652508452509192915050565b60608151600114801561766f5750607f60f81b8260008151811061765d57fe5b01602001516001600160f81b03191611155b1561767b575080611d0c565b611dbc61768d8351608060ff1661770c565b835b6060806040519050835180825260208201818101602087015b818310156176c05780518352602092830192016176a8565b50855184518101855292509050808201602086015b818310156176ed5780518352602092830192016176d5565b508651929092011591909101601f01601f191660405250905092915050565b60606801000000000000000083106177365760405162461bcd60e51b8152600401610e12906185b8565b604080516001808252818301909252606091602082018180368337019050509050603784116177905782840160f81b8160008151811061777257fe5b60200101906001600160f81b031916908160001a9053509050611dbc565b606061779b85617557565b90508381510160370160f81b826000815181106177b457fe5b60200101906001600160f81b031916908160001a9053506177d5828261768f565b95945050505050565b806177e857610e32565b5b60208110617808578251825260209283019290910190601f19016177e9565b915181516020939093036101000a6000190180199091169216919091179052565b60405180608001604052806000815260200160001515815260200160608152602001617853617a84565b905290565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061789957805160ff19168380011785556178c6565b828001600101855582156178c6579182015b828111156178c65782518255916020019190600101906178ab565b506131bd929150617aa3565b82601381019282156178c657916020028201828111156178c65782518255916020019190600101906178ab565b6040518060600160405280600060ff16815260200160608152602001606081525090565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a081019190915290565b50805460018160011615610100020316600290046000825580601f1061797e5750611f24565b601f016020900490600052602060002090810190611f249190617aa3565b60405180604001604052806179af617a6a565b8152602001600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106179f557805485556178c6565b828001600101855582156178c657600052602060002091601f016020900482015b828111156178c6578254825591600101919060010190617a16565b82601381019282156178c657918201828111156178c6578254825591600101919060010190617a16565b50611f24906013810190617aa3565b604051806040016040528060008152602001600081525090565b6040518061026001604052806013906020820280368337509192915050565b61316191905b808211156131bd5760008155600101617aa9565b8035611dbc81618ded565b60008083601f840112617ad9578182fd5b5081356001600160401b03811115617aef578182fd5b60208301915083602080830285010111156157f857600080fd5b6000601f8381840112617b1a578182fd5b8235617b2d617b2882618da2565b618d7c565b818152925060208084019085810160005b84811015617bbf578135880189603f820112617b5957600080fd5b838101356001600160401b03811115617b7157600080fd5b617b82818901601f19168601618d7c565b81815260408c81848601011115617b9857600080fd5b82818501888401375060009181018601919091528552509282019290820190600101617b3e565b50505050505092915050565b600082601f830112617bdb578081fd5b8135617be9617b2882618da2565b818152915060208083019084810181840286018201871015617c0a57600080fd5b6000805b85811015617bbf5782356001600160401b0381168114617c2c578283fd5b85529383019391830191600101617c0e565b60008083601f840112617c4f578182fd5b5081356001600160401b03811115617c65578182fd5b6020830191508360208285010111156157f857600080fd5b600060208284031215617c8e578081fd5b813561113d81618ded565b600060208284031215617caa578081fd5b815161113d81618ded565b60008060008060408587031215617cca578283fd5b84356001600160401b0380821115617ce0578485fd5b617cec88838901617ac8565b90965094506020870135915080821115617d04578384fd5b50617d1187828801617ac8565b95989497509550505050565b600080600060608486031215617d31578283fd5b83356001600160401b0380821115617d47578485fd5b81860187601f820112617d58578586fd5b80359250617d68617b2884618da2565b80848252602080830192508084018b828389028701011115617d8857898afd5b8994505b86851015617db257617d9e8c82617abd565b845260019490940193928101928101617d8c565b509097508801359350505080821115617dc9578384fd5b617dd587838801617bcb565b93506040860135915080821115617dea578283fd5b50617df786828701617b09565b9150509250925092565b600060208284031215617e12578081fd5b8151801515811461113d578182fd5b60008060208385031215617e33578182fd5b82356001600160401b03811115617e48578283fd5b617e5485828601617c3e565b90969095509350505050565b60008060008060408587031215617e75578384fd5b84356001600160401b0380821115617e8b578586fd5b617e9788838901617c3e565b90965094506020870135915080821115617eaf578384fd5b50617d1187828801617c3e565b600060208284031215617ecd578081fd5b5035919050565b600060208284031215617ee5578081fd5b5051919050565b60008060408385031215617efe578182fd5b505080516020909101519092909150565b600080600060408486031215617f23578081fd5b833560ff81168114617f33578182fd5b925060208401356001600160401b03811115617f4d578182fd5b617f5986828701617c3e565b9497909650939450505050565b6000815180845260208085019450808401835b83811015617f9e5781516001600160a01b031687529582019590820190600101617f79565b509495945050505050565b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b60008151808452617feb816020860160208601618dc1565b601f01601f19169290920160200192915050565b60008251618011818460208701618dc1565b9190910192915050565b918252602082015260400190565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b03968716815294861660208601529290941660408401526001600160401b03166060830152911515608082015260a081019190915260c00190565b6001600160a01b0392909216825260ff16602082015260400190565b60006020825261113d6020830184617f66565b6000604082526180da6040830185617f66565b602083820381850152818551808452828401915082838202850101838801865b8381101561812857601f19878403018552618116838351617fd3565b948601949250908501906001016180fa565b50909998505050505050505050565b60006080825261814a6080830187617f66565b828103602084810191909152865180835287820192820190845b8181101561818057845183529383019391830191600101618164565b505084810360408601526181948188617f66565b93505050506001600160401b038316606083015295945050505050565b901515815260200190565b60006020825261113d6020830184617fd3565b6000604082526181e3604083018688617fa9565b82810360208401526181f6818587617fa9565b979650505050505050565b6020808252601c908201527f6c656e677468206f66206275726e526174696f206d69736d6174636800000000604082015260600190565b60208082526042908201527f746865206275726e526174696f20706c75732073797374656d5265776172645260408201527f6174696f206d757374206265206e6f2067726561746572207468616e20313030606082015261030360f41b608082015260a00190565b60208082526026908201527f6c656e677468206f66206d61784e756d4f664d61696e7461696e696e67206d696040820152650e6dac2e8c6d60d31b606082015260800190565b6020808252601b908201527f6261746368207472616e736665722072657475726e2066616c73650000000000604082015260600190565b6020808252602c908201527f6c656e677468206f66206d61784e756d4f66576f726b696e6743616e6469646160408201526b0e8cae640dad2e6dac2e8c6d60a31b606082015260800190565b60208082526025908201527f6c656e677468206f66206d61696e7461696e536c6173685363616c65206d69736040820152640dac2e8c6d60db1b606082015260800190565b6020808252818101527f6c656e677468206f66206e756d4f66436162696e657473206d69736d61746368604082015260600190565b60208082526019908201527f74686520636f6e7472616374206e6f7420696e69742079657400000000000000604082015260600190565b6020808252601f908201527f6f6e6c7920736c617368206f72207374616b6548756220636f6e747261637400604082015260600190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b60208082526028908201527f746865206e756d4f66436162696e657473206d75737420626520677265617465604082015267072207468616e20360c41b606082015260800190565b60208082526039908201527f746865206e756d4f66436162696e657473206d757374206265206c657373207460408201527f68616e204d41585f4e554d5f4f465f56414c494441544f525300000000000000606082015260800190565b60208082526029908201527f746865206e756d626572206f662076616c696461746f727320657863656564206040820152681d1a19481b1a5b5a5d60ba1b606082015260800190565b60208082526022908201527f63616e206e6f7420646f207468697320747769636520696e206f6e6520626c6f604082015261636b60f01b606082015260800190565b6020808252600e908201526d696e70757420746f6f206c6f6e6760901b604082015260600190565b60208082526037908201527f746865206d61784e756d4f664d61696e7461696e696e67206d7573742062652060408201527f6c657373207468616e206e756d4f66436162696e657473000000000000000000606082015260800190565b6020808252602b908201527f6475706c696361746520636f6e73656e7375732061646472657373206f66207660408201526a185b1a59185d1bdc94d95d60aa1b606082015260800190565b60208082526027908201527f7468652065787069726554696d655365636f6e64476170206973206f7574206f604082015266662072616e676560c81b606082015260800190565b6020808252601590820152746465706f7369742076616c7565206973207a65726f60581b604082015260600190565b60208082526049908201527f746865206d61784e756d4f66576f726b696e6743616e64696461746573206d7560408201527f7374206265206e6f742067726561746572207468616e206d61784e756d4f6643606082015268616e6469646174657360b81b608082015260a00190565b6020808252601190820152706164646974696f6e206f766572666c6f7760781b604082015260600190565b60208082526023908201527f63616e206e6f7420656e7465722054656d706f72617279204d61696e74656e616040820152626e636560e81b606082015260800190565b60208082526025908201527f6c656e677468206f66206a61696c2076616c696461746f7273206d757374206260408201526465206f6e6560d81b606082015260800190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252601490820152736761737072696365206973206e6f74207a65726f60601b604082015260600190565b6020808252602e908201527f746865206d6573736167652073656e646572206d75737420626520676f76657260408201526d1b985b98d94818dbdb9d1c9858dd60921b606082015260800190565b60208082526025908201527f6c656e677468206f66206d61784e756d4f6643616e64696461746573206d69736040820152640dac2e8c6d60db1b606082015260800190565b6020808252601290820152716e6f7420696e206d61696e74656e616e636560701b604082015260600190565b60208082526021908201527f666565206973206c6172676572207468616e2044555354595f494e434f4d494e6040820152604760f81b606082015260800190565b60208082526019908201527f74686520636f6e747261637420616c726561647920696e697400000000000000604082015260600190565b60208082526042908201527f7468652073797374656d526577617264526174696f20706c7573206275726e5260408201527f6174696f206d757374206265206e6f2067726561746572207468616e20313030606082015261030360f41b608082015260a00190565b6020808252601a908201527f6c656e677468206973206c657373207468616e206f6666736574000000000000604082015260600190565b60208082526026908201527f6c656e677468206f662065787069726554696d655365636f6e64476170206d696040820152650e6dac2e8c6d60d31b606082015260800190565b60208082526017908201527f6f6e6c792063757272656e742076616c696461746f7273000000000000000000604082015260600190565b60208082526021908201527f6661696c656420746f20706172736520696e69742076616c696461746f7253656040820152601d60fa1b606082015260800190565b6020808252602f908201527f746865206d6573736167652073656e646572206d7573742062652063726f737360408201526e0818da185a5b8818dbdb9d1c9858dd608a1b606082015260800190565b6020808252602d908201527f746865206d6573736167652073656e646572206d75737420626520746865206260408201526c3637b1b590383937b23ab1b2b960991b606082015260800190565b60208082526024908201527f6c656e677468206f662073797374656d526577617264526174696f206d69736d6040820152630c2e8c6d60e31b606082015260800190565b6020808252603e908201527f746865206d61696e7461696e536c6173685363616c65206d757374206265206760408201527f726561746572207468616e203020616e64206c657373207468616e2031300000606082015260800190565b6020808252600d908201526c756e6b6e6f776e20706172616d60981b604082015260600190565b60208082526029908201527f746865206d6573736167652073656e646572206d75737420626520736c6173686040820152680818dbdb9d1c9858dd60ba1b606082015260800190565b6020808252601f908201527f746865206d73672073656e646572206d757374206265207374616b6548756200604082015260600190565b61ffff91909116815260200190565b90815260200190565b60008482528315156020830152606060408301526177d56060830184617fd3565b63ffffffff91909116815260200190565b60ff91909116815260200190565b600060ff85168252604060208301526177d5604083018486617fa9565b6040518181016001600160401b0381118282101715618d9a57600080fd5b604052919050565b60006001600160401b03821115618db7578081fd5b5060209081020190565b60005b83811015618ddc578181015183820152602001618dc4565b8381111561709c5750506000910152565b6001600160a01b0381168114611f2457600080fdfe70e72399380dcfb0338abc03dc8d47f9f470ada8e769c9a78d644ea97385ecb20175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db90175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01dbb0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01dbaf87680f873f871949fb29aac15b9a4b7f17c3385939b007540f4d791949fb29aac15b9a4b7f17c3385939b007540f4d791949fb29aac15b9a4b7f17c3385939b007540f4d79164b085e6972fc98cd3c81d64d40e325acfed44365b97a7567a27939c14dbc7512ddcf54cb1284eb637cfa308ae4e00cb5588a164736f6c6343000604000a", }, { ContractAddr: common.HexToAddress(SlashContract), CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/1abdfbf3aeb86909c2220b79bf92b87ddff64b54", - Code: "0x608060405234801561001057600080fd5b506004361061035d5760003560e01c80637e434d54116101d3578063c80d4b8f11610104578063df8079e9116100a2578063f9a2bbc71161007c578063f9a2bbc714610601578063fc3e590814610609578063fc4333cd14610611578063fd6a6879146106195761035d565b8063df8079e9146105e9578063e1c7392a146105f1578063f1fad104146105f95761035d565b8063c96be4cb116100de578063c96be4cb146105b3578063cc844b73146105c6578063dc927faf146105d9578063dcc6f156146105e15761035d565b8063c80d4b8f14610590578063c81b166214610598578063c8509d81146105a05761035d565b8063a1a11bf511610171578063aad560631161014b578063aad5606314610565578063ab51bb961461056d578063ac0af62914610575578063ac4317511461057d5761035d565b8063a1a11bf51461054d578063a78abc1614610555578063aa82dce11461055d5761035d565b806396713da9116101ad57806396713da9146105225780639dc092621461052a5780639e89ded8146105325780639f804f5f146105455761035d565b80637e434d54146104ff5780638256ace614610507578063831d65d11461050f5761035d565b8063493279b1116102ad57806362b72cf51161024b578063718a8aa811610225578063718a8aa8146104df57806375d47a0a146104e75780637912a65d146104ef5780637942fd05146104f75761035d565b806362b72cf5146104c75780636e47b482146104cf57806370fd5bad146104d75761035d565b806351b4dce31161028757806351b4dce31461049c57806351e80672146104a4578063567a372d146104ac5780635bfb4990146104b45761035d565b8063493279b1146104775780634bf6c8821461048c57806350055f90146104945761035d565b8063280870281161031a57806337c8dab9116102f457806337c8dab914610431578063389f4f71146104525780633dffc3871461045a57806343756e5c1461046f5761035d565b806328087028146104015780633306ccca1461040957806335aa2e441461041e5761035d565b80630bee7a67146103625780630e2374a5146103805780631182b8751461039557806322d1e80b146103b557806323bac5a2146103ca57806327962118146103ec575b600080fd5b61036a610621565b6040516103779190613d3b565b60405180910390f35b610388610626565b6040516103779190613519565b6103a86103a336600461344f565b61062c565b6040516103779190613551565b6103bd610692565b6040516103779190613546565b6103dd6103d8366004613166565b61069b565b60405161037793929190613d23565b6103ff6103fa3660046132ac565b6106be565b005b610388610a13565b610411610a19565b6040516103779190613ceb565b61038861042c36600461341f565b610a1e565b61044461043f366004613166565b610a45565b604051610377929190613d15565b610411610a9c565b610462610aa2565b6040516103779190613d4c565b610388610aa7565b61047f610aad565b6040516103779190613cdc565b610462610ab3565b610411610ab8565b610388610abe565b610388610ac4565b610411610aca565b6103ff6104c2366004613166565b610ad0565b610411610b7b565b610388610b81565b610462610b87565b610462610b8c565b610388610b91565b610411610b97565b610462610b9c565b610388610ba1565b610444610ba7565b6103ff61051d36600461344f565b610bb1565b610462610cc4565b610388610cc9565b6103ff61054036600461319e565b610ccf565b610411610cfe565b610388610d04565b6103bd610d0a565b610388610d13565b610388610d19565b61036a610d1f565b610411610d24565b6103ff61058b366004613303565b610d29565b6104116112c5565b6103886112ca565b6103ff6105ae36600461344f565b6112d0565b6103ff6105c1366004613166565b611341565b6103ff6105d436600461336c565b6117c2565b610388611da0565b610411611da6565b610388611dab565b6103ff611db1565b610462611dfe565b610388611e03565b610462611e09565b6103ff611e0e565b610388612257565b606481565b61200181565b606033612000146106585760405162461bcd60e51b815260040161064f90613b7f565b60405180910390fd5b60005460ff1661067a5760405162461bcd60e51b815260040161064f90613625565b60405162461bcd60e51b815260040161064f90613c70565b60075460ff1681565b600260208190526000918252604090912080546001820154919092015460ff1683565b60005460ff166106e05760405162461bcd60e51b815260040161064f90613625565b6006546106ed5760146006555b6008546106fa57603c6008555b81511580159061070a5750805115155b6107265760405162461bcd60e51b815260040161064f90613add565b60408051600380825260808201909252606091816020015b606081526020019060019003908161073e5790505090506107606102ca61225d565b8160008151811061076d57fe5b602002602001018190525061078183612278565b8160018151811061078e57fe5b60200260200101819052506107a282612278565b816002815181106107af57fe5b602002602001018190525060606107c5826122ce565b60408051603480825260608281019093529293509091602082018180368337019050509050815160346020830182602086016068600019fa61080657600080fd5b506014810151603482015160405163436aa28360e11b8152600090612002906386d5450690610839908690600401613519565b60206040518083038186803b15801561085157600080fd5b505afa158015610865573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108899190613182565b6001600160a01b031614156108b05760405162461bcd60e51b815260040161064f906135f5565b43600854820110156108d45760405162461bcd60e51b815260040161064f90613596565b604051631871f7d960e31b81526120029063c38fbec8906108f9908590600401613519565b600060405180830381600087803b15801561091357600080fd5b505af1158015610927573d6000803e3d6000fd5b50506040516335409f7f60e01b815261100092506335409f7f9150610950908590600401613519565b600060405180830381600087803b15801561096a57600080fd5b505af115801561097e573d6000803e3d6000fd5b50506006546040516309a99b4f60e41b815260646110028031909302049350909150639a99b4f0906109b6903390859060040161352d565b602060405180830381600087803b1580156109d057600080fd5b505af11580156109e4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a089190613437565b505050505050505050565b61200581565b603c81565b60018181548110610a2b57fe5b6000918252602090912001546001600160a01b0316905081565b600080610a50612f4d565b5050506001600160a01b0316600090815260026020818152604092839020835160608101855281548082526001830154938201849052919093015460ff16151592909301919091529091565b60055481565b600181565b61100181565b6102ca81565b600881565b60065481565b61200681565b61200081565b60045481565b3361100014610af15760405162461bcd60e51b815260040161064f90613868565b60005460ff16610b135760405162461bcd60e51b815260040161064f90613625565b61200063f7a251d7600b610b268461235f565b60006040518463ffffffff1660e01b8152600401610b4693929190613d5a565b600060405180830381600087803b158015610b6057600080fd5b505af1158015610b74573d6000803e3d6000fd5b5050505050565b60035481565b61100581565b600281565b601081565b61100881565b600581565b600b81565b61200381565b6004546005549091565b3361200014610bd25760405162461bcd60e51b815260040161064f90613b7f565b60005460ff16610bf45760405162461bcd60e51b815260040161064f90613625565b610bfc612f70565b6000610c3d84848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061242992505050565b915091508015610c845781516040517f7f0956d47419b9525356e7111652b653b530ec6f5096dccc04589bc38e62996791610c7791613d3b565b60405180910390a1610b74565b81516040517f7d45f62d17443dd4547bca8a8112c60e2385669318dc300ec61a5d2492f262e791610cb491613d3b565b60405180910390a150505b505050565b600981565b61100781565b3361100014610cf05760405162461bcd60e51b815260040161064f90613868565b610cfa82826124a9565b5050565b60085481565b61100681565b60005460ff1681565b61200281565b61300081565b600081565b600481565b60005460ff16610d4b5760405162461bcd60e51b815260040161064f90613625565b3361100714610d6c5760405162461bcd60e51b815260040161064f906139cc565b610dd784848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260148152731b5a5cd9195b59585b9bdc951a1c995cda1bdb1960621b602082015291506126809050565b15610e725760208114610dfc5760405162461bcd60e51b815260040161064f906137f4565b604080516020601f8401819004810282018101909252828152600091610e3a918585808385018382808284376000920191909152506126da92505050565b905060018110158015610e4e575060055481105b610e6a5760405162461bcd60e51b815260040161064f90613b3a565b600455611282565b610ed884848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600f81526e19995b1bdb9e551a1c995cda1bdb19608a1b602082015291506126809050565b15610f745760208114610efd5760405162461bcd60e51b815260040161064f90613a1a565b604080516020601f8401819004810282018101909252828152600091610f3b918585808385018382808284376000920191909152506126da92505050565b90506103e88111158015610f50575060045481115b610f6c5760405162461bcd60e51b815260040161064f906136de565b600555611282565b610fe184848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601681527566656c6f6e79536c617368526577617264526174696f60501b602082015291506126809050565b1561107b57602081146110065760405162461bcd60e51b815260040161064f90613954565b604080516020601f8401819004810282018101909252828152600091611044918585808385018382808284376000920191909152506126da92505050565b9050600a81101580156110575750606481105b6110735760405162461bcd60e51b815260040161064f90613a5c565b600655611282565b6110ef84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601881527f656e61626c654d616c6963696f7573566f7465536c6173680000000000000000602082015291506126809050565b1561116657602081146111145760405162461bcd60e51b815260040161064f90613713565b604080516020601f840181900481028201810190925282815261115091908484808385018382808284376000920191909152506126df92505050565b6007805460ff1916911515919091179055611282565b6111cd84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601081526f66656c6f6e79536c61736853636f706560801b602082015291506126809050565b1561126a57602081146111f25760405162461bcd60e51b815260040161064f906138e3565b604080516020601f8401819004810282018101909252828152600091611230918585808385018382808284376000920191909152506126da92505050565b905061708081101580156112465750620d2f0081105b6112625760405162461bcd60e51b815260040161064f9061365c565b600855611282565b60405162461bcd60e51b815260040161064f90613c1b565b7f6cdb0ac70ab7f2e2d035cca5be60d89906f2dede7648ddbd7402189c1eeed17a848484846040516112b79493929190613564565b60405180910390a150505050565b600a81565b61100281565b33612000146112f15760405162461bcd60e51b815260040161064f90613b7f565b60005460ff166113135760405162461bcd60e51b815260040161064f90613625565b6040517f07db600eebe2ac176be8dcebad61858c245a4961bb32ca2aa3d159b09aa0810e90600090a1505050565b3341146113605760405162461bcd60e51b815260040161064f90613bce565b60005460ff166113825760405162461bcd60e51b815260040161064f90613625565b60035443116113a35760405162461bcd60e51b815260040161064f90613ca7565b3a156113c15760405162461bcd60e51b815260040161064f90613926565b60405163155853f360e21b8152611000906355614fcc906113e6908490600401613519565b60206040518083038186803b1580156113fe57600080fd5b505afa158015611412573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611436919061328c565b61143f576117bb565b611447612f4d565b506001600160a01b0381166000908152600260208181526040928390208351606081018552815481526001820154928101929092529091015460ff1615801592820192909252906114a25760208101805160010190526114fb565b60016040820181905260208201819052805480820182556000919091527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180546001600160a01b0319166001600160a01b0384161790555b43815260055460208201518161150d57fe5b066116e957600060208201526040516335409f7f60e01b8152611000906335409f7f9061153e908590600401613519565b600060405180830381600087803b15801561155857600080fd5b505af115801561156c573d6000803e3d6000fd5b505060405163436aa28360e11b81526000925061200291506386d5450690611598908690600401613519565b60206040518083038186803b1580156115b057600080fd5b505afa1580156115c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115e89190613182565b6001600160a01b031614611609576116048282602001516124a9565b6116e4565b61200063f7a251d7600b61161c8561235f565b60006040518463ffffffff1660e01b815260040161163c93929190613d5a565b600060405180830381600087803b15801561165657600080fd5b505af1925050508015611667575060015b6116e4573d808015611695576040519150601f19603f3d011682016040523d82523d6000602084013e61169a565b606091505b50826001600160a01b03167fd7bc86ff5d08c8ab043edec743302aba2520e6635172a428bc956721db9e2d1c8360200151836040516116da929190613cf4565b60405180910390a2505b611755565b6004548160200151816116f857fe5b06611755576040516375abf10160e11b81526110009063eb57e20290611722908590600401613519565b600060405180830381600087803b15801561173c57600080fd5b505af1158015611750573d6000803e3d6000fd5b505050505b6001600160a01b0382166000818152600260208181526040808420865181559186015160018301558581015191909201805460ff1916911515919091179055517fddb6012116e51abf5436d956a4f0ebd927e92c576ff96d7918290c8782291e3e9190a2505b5043600355565b60005460ff166117e45760405162461bcd60e51b815260040161064f90613625565b60075460ff166118065760405162461bcd60e51b815260040161064f906135c0565b6006546118135760146006555b60085461182057603c6008555b60085481516040015143910111801561184457504360085482602001516040015101115b6118605760405162461bcd60e51b815260040161064f90613c42565b80602001516020015181600001516020015114801561188e5750806020015160600151816000015160600151145b156118ab5760405162461bcd60e51b815260040161064f9061383b565b8051604081015190511080156118ca5750602081015160408101519051105b6118e65760405162461bcd60e51b815260040161064f906137bd565b60208101515181515110801561190b5750806000015160400151816020015160400151105b8061193657508051516020820151511080156119365750806020015160400151816000015160400151105b806119505750806020015160400151816000015160400151145b61196c5760405162461bcd60e51b815260040161064f906136a7565b604080820151905163ea321e4960e01b81526110009163ea321e49916119959190600401613551565b60206040518083038186803b1580156119ad57600080fd5b505afa1580156119c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119e5919061328c565b611a015760405162461bcd60e51b815260040161064f9061399d565b611a1381600001518260400151612707565b8015611a2c5750611a2c81602001518260400151612707565b611a485760405162461bcd60e51b815260040161064f9061375e565b6060806110006001600160a01b0316633b071dcc6040518163ffffffff1660e01b815260040160006040518083038186803b158015611a8657600080fd5b505afa158015611a9a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611ac291908101906131c9565b9150915060005b8151811015611bff57611af3828281518110611ae157fe5b602002602001015185604001516128df565b15611bf7576006546040516309a99b4f60e41b815260646110028031909302049190639a99b4f090611b2b903390859060040161352d565b602060405180830381600087803b158015611b4557600080fd5b505af1158015611b59573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b7d9190613437565b506110006001600160a01b03166335409f7f858481518110611b9b57fe5b60200260200101516040518263ffffffff1660e01b8152600401611bbf9190613519565b600060405180830381600087803b158015611bd957600080fd5b505af1158015611bed573d6000803e3d6000fd5b5050505050611bff565b600101611ac9565b5060408084015190516317b4f35360e01b8152600091612002916317b4f35391611c2b91600401613551565b60206040518083038186803b158015611c4357600080fd5b505afa158015611c57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c7b9190613182565b6001600160a01b031614611ce9576040808401519051630e9fbf5160e01b815261200291630e9fbf5191611cb29190600401613551565b600060405180830381600087803b158015611ccc57600080fd5b505af1158015611ce0573d6000803e3d6000fd5b50505050610cbf565b6120006001600160a01b031663f7a251d7600b611d098660400151612943565b60006040518463ffffffff1660e01b8152600401611d2993929190613d5a565b600060405180830381600087803b158015611d4357600080fd5b505af1158015611d57573d6000803e3d6000fd5b505050506000611d6c8460400151600061297e565b60405190915081907f7b78aadacff901d8b63d0dba4f86283d4db8aef27f9ed70413dd860f1c9532b690600090a250505050565b61100381565b601481565b61200481565b60005460ff1615611dd45760405162461bcd60e51b815260040161064f90613aa6565b60056004819055600a905560078054600160ff199182168117909255600080549091169091179055565b601181565b61100081565b600381565b3361100014611e2f5760405162461bcd60e51b815260040161064f90613868565b60005460ff16611e515760405162461bcd60e51b815260040161064f90613625565b600154611e5d57612255565b600154600090600019015b808211612229576000805b82841015611f8c57611e83612f4d565b6002600060018781548110611e9457fe5b60009182526020808320909101546001600160a01b0316835282810193909352604091820190208151606081018352815481526001820154938101939093526002015460ff161515908201526005549091506004900481602001511115611f7657600460055481611f0157fe5b04816020015103816020018181525050806002600060018881548110611f2357fe5b6000918252602080832091909101546001600160a01b0316835282810193909352604091820190208351815591830151600183015591909101516002909101805460ff1916911515919091179055611f80565b6001925050611f8c565b50836001019350611e73565b82841161212357611f9b612f4d565b6002600060018681548110611fac57fe5b60009182526020808320909101546001600160a01b0316835282810193909352604091820190208151606081018352815481526001820154938101939093526002015460ff1615159082015260055490915060049004816020015111156120945760046005548161201957fe5b0481602001510381602001818152505080600260006001878154811061203b57fe5b6000918252602080832091909101546001600160a01b03168352828101939093526040918201902083518155918301516001808401919091559201516002909101805460ff191691151591909117905591506121239050565b60026000600186815481106120a557fe5b60009182526020808320909101546001600160a01b031683528201929092526040018120818155600181810192909255600201805460ff191690558054806120e957fe5b600082815260209020810160001990810180546001600160a01b0319169055019055836121165750612123565b5060001990920191611f8c565b81801561212d5750805b1561220c57600260006001868154811061214357fe5b60009182526020808320909101546001600160a01b031683528201929092526040018120818155600181810192909255600201805460ff1916905580548490811061218a57fe5b600091825260209091200154600180546001600160a01b0390921691869081106121b057fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060018054806121e957fe5b600082815260209020810160001990810180546001600160a01b03191690550190555b82612218575050612229565b505060019091019060001901611e68565b6040517fcfdb3b6ccaeccbdc68be3c59c840e3b3c90f0a7c491f5fff1cf56cfda200dd9c90600090a150505b565b61100481565b606061227061226b8361299a565b612278565b90505b919050565b6060815160011480156122aa5750607f60f81b8260008151811061229857fe5b01602001516001600160f81b03191611155b156122b6575080612273565b6122706122c88351608060ff16612a80565b83612b52565b60608151600014156122ef5750604080516000815260208101909152612273565b6060826000815181106122fe57fe5b602002602001015190506000600190505b835181101561233f576123358285838151811061232857fe5b6020026020010151612b52565b915060010161230f565b50612358612352825160c060ff16612a80565b82612b52565b9392505050565b60408051600480825260a08201909252606091829190816020015b606081526020019060019003908161237a5790505090506123a3836001600160a01b0316612bcf565b816000815181106123b057fe5b60200260200101819052506123c44361225d565b816001815181106123d157fe5b60209081029190910101526123e76102ca61225d565b816002815181106123f457fe5b60200260200101819052506124084261225d565b8160038151811061241557fe5b6020026020010181905250612358816122ce565b612431612f70565b600061243b612f70565b612443612f82565b61245461244f86612bf2565b612c17565b90506000805b61246383612c61565b1561249c578061248f5761247e61247984612c82565b612cd0565b63ffffffff16845260019150612494565b61249c565b60010161245a565b5091935090915050915091565b6040516375cc7d8960e01b8152612002906375cc7d89906124ce908590600401613519565b600060405180830381600087803b1580156124e857600080fd5b505af19250505080156124f9575060015b610cfa576040516000815260443d1015612515575060006125b2565b60046000803e60005160e01c6308c379a081146125365760009150506125b2565b60043d036004833e81513d602482011167ffffffffffffffff82111715612562576000925050506125b2565b808301805167ffffffffffffffff8111156125845760009450505050506125b2565b8060208301013d86018111156125a2576000955050505050506125b2565b601f01601f191660405250925050505b806125bd5750612606565b826001600160a01b03167fd7bc86ff5d08c8ab043edec743302aba2520e6635172a428bc956721db9e2d1c83836040516125f8929190613cf4565b60405180910390a25061267b565b3d808015612630576040519150601f19603f3d011682016040523d82523d6000602084013e612635565b606091505b50826001600160a01b03167fd7bc86ff5d08c8ab043edec743302aba2520e6635172a428bc956721db9e2d1c8383604051612671929190613cf4565b60405180910390a2505b610cfa565b60008160405160200161269391906134fd565b60405160208183030381529060405280519060200120836040516020016126ba91906134fd565b604051602081830303815290604052805190602001201490505b92915050565b015190565b8082015160009060ff8116156126f95760019150816126ff565b60009150815b505092915050565b60408051600480825260a0820190925260009160609190816020015b6060815260200190600190039081612723575050604080516020808252818301909252919250606091908082018180368337019050509050612768856000015161225d565b8260008151811061277557fe5b60200260200101819052506127906020866020015183612d52565b61279981612278565b826001815181106127a657fe5b60200260200101819052506127be856040015161225d565b826002815181106127cb57fe5b60200260200101819052506127e66020866060015183612d52565b6127ef81612278565b826003815181106127fc57fe5b60200260200101819052506128226020612815846122ce565b8051906020012083612d52565b6040805160b080825260e08201909252606091602082018180368337019050509050612852818360006020612d62565b61286481876080015160206060612d62565b612872818660806030612d62565b604080516001808252818301909252606091602082018180368337019050509050815160016020830182602086016066600019fa6128af57600080fd5b5060016128bd826000612db5565b60ff16146128d25760009450505050506126d4565b5060019695505050505050565b8151815160009160019181148083146128fb5760009250612939565b600160208701838101602088015b6002848385100114156129345780518351146129285760009650600093505b60209283019201612909565b505050505b5090949350505050565b60408051600480825260a08201909252606091829190816020015b606081526020019060019003908161295e5790505090506123a383612278565b6000816020018351101561299157600080fd5b50016020015190565b604080516020808252818301909252606091829190602082018180368337505050602081018490529050600067ffffffffffffffff1984166129de57506018612a02565b6fffffffffffffffffffffffffffffffff1984166129fe57506010612a02565b5060005b6020811015612a3857818181518110612a1757fe5b01602001516001600160f81b03191615612a3057612a38565b600101612a02565b60008160200390506060816040519080825280601f01601f191660200182016040528015612a6d576020820181803683370190505b5080830196909652508452509192915050565b6060680100000000000000008310612aaa5760405162461bcd60e51b815260040161064f90613795565b60408051600180825281830190925260609160208201818036833701905050905060378411612b045782840160f81b81600081518110612ae657fe5b60200101906001600160f81b031916908160001a90535090506126d4565b6060612b0f8561299a565b90508381510160370160f81b82600081518110612b2857fe5b60200101906001600160f81b031916908160001a905350612b498282612b52565b95945050505050565b6060806040519050835180825260208201818101602087015b81831015612b83578051835260209283019201612b6b565b50855184518101855292509050808201602086015b81831015612bb0578051835260209283019201612b98565b508651929092011591909101601f01601f191660405250905092915050565b60408051600560a21b831860148201526034810190915260609061235881612278565b612bfa612fa2565b506040805180820190915281518152602082810190820152919050565b612c1f612f82565b612c2882612dd1565b612c3157600080fd5b6000612c408360200151612e0b565b60208085015160408051808201909152868152920190820152915050919050565b6000612c6b612fa2565b505080518051602091820151919092015191011190565b612c8a612fa2565b612c9382612c61565b612c9c57600080fd5b60208201516000612cac82612e6e565b80830160209586015260408051808201909152908152938401919091525090919050565b805160009015801590612ce557508151602110155b612cee57600080fd5b6000612cfd8360200151612e0b565b90508083600001511015612d235760405162461bcd60e51b815260040161064f90613b03565b825160208085015183018051928490039291831015612d4957826020036101000a820491505b50949350505050565b9091018181526020918201910152565b60005b81811015610b7457838181518110612d7957fe5b602001015160f81c60f81b858480600101955081518110612d9657fe5b60200101906001600160f81b031916908160001a905350600101612d65565b60008160010183511015612dc857600080fd5b50016001015190565b8051600090612de257506000612273565b6020820151805160001a9060c0821015612e0157600092505050612273565b5060019392505050565b8051600090811a6080811015612e25576000915050612273565b60b8811080612e40575060c08110801590612e40575060f881105b15612e4f576001915050612273565b60c0811015612e635760b519019050612273565b60f519019050612273565b80516000908190811a6080811015612e895760019150612f46565b60b8811015612e9e57607e1981019150612f46565b60c0811015612eef57600060b78203600186019550806020036101000a865104915060018101820193505080831015612ee95760405162461bcd60e51b815260040161064f906138b8565b50612f46565b60f8811015612f045760be1981019150612f46565b600060f78203600186019550806020036101000a8651049150600181018201935050808310156126ff5760405162461bcd60e51b815260040161064f906138b8565b5092915050565b604051806060016040528060008152602001600081526020016000151581525090565b60408051602081019091526000815290565b6040518060400160405280612f95612fa2565b8152602001600081525090565b604051806040016040528060008152602001600081525090565b600082601f830112612fcc578081fd5b8151612fdf612fda82613dad565b613d86565b818152915060208083019084810160005b84811015613055578151870188603f82011261300b57600080fd5b8381015161301b612fda82613dcd565b81815260408b8184860101111561303157600080fd5b61304083888401838701613df1565b50865250509282019290820190600101612ff0565b505050505092915050565b60008083601f840112613071578182fd5b50813567ffffffffffffffff811115613088578182fd5b6020830191508360208285010111156130a057600080fd5b9250929050565b600082601f8301126130b7578081fd5b81356130c5612fda82613dcd565b91508082528360208285010111156130dc57600080fd5b8060208401602084013760009082016020015292915050565b600060a08284031215613106578081fd5b61311060a0613d86565b905081358152602082013560208201526040820135604082015260608201356060820152608082013567ffffffffffffffff81111561314e57600080fd5b61315a848285016130a7565b60808301525092915050565b600060208284031215613177578081fd5b813561235881613e21565b600060208284031215613193578081fd5b815161235881613e21565b600080604083850312156131b0578081fd5b82356131bb81613e21565b946020939093013593505050565b600080604083850312156131db578182fd5b825167ffffffffffffffff808211156131f2578384fd5b81850186601f820112613203578485fd5b80519250613213612fda84613dad565b80848252602080830192508084018a828389028701011115613233578889fd5b8894505b8685101561325e57805161324a81613e21565b845260019490940193928101928101613237565b508801519096509350505080821115613275578283fd5b5061328285828601612fbc565b9150509250929050565b60006020828403121561329d578081fd5b81518015158114612358578182fd5b600080604083850312156132be578182fd5b823567ffffffffffffffff808211156132d5578384fd5b6132e1868387016130a7565b935060208501359150808211156132f6578283fd5b50613282858286016130a7565b60008060008060408587031215613318578182fd5b843567ffffffffffffffff8082111561332f578384fd5b61333b88838901613060565b90965094506020870135915080821115613353578384fd5b5061336087828801613060565b95989497509550505050565b60006020828403121561337d578081fd5b813567ffffffffffffffff80821115613394578283fd5b818401606081870312156133a6578384fd5b6133b06060613d86565b92508035828111156133c0578485fd5b6133cc878284016130f5565b8452506020810135828111156133e0578485fd5b6133ec878284016130f5565b602085015250604081013582811115613403578485fd5b61340f878284016130a7565b6040850152509195945050505050565b600060208284031215613430578081fd5b5035919050565b600060208284031215613448578081fd5b5051919050565b600080600060408486031215613463578081fd5b833560ff81168114613473578182fd5b9250602084013567ffffffffffffffff81111561348e578182fd5b61349a86828701613060565b9497909650939450505050565b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b600081518084526134e9816020860160208601613df1565b601f01601f19169290920160200192915050565b6000825161350f818460208701613df1565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b901515815260200190565b60006020825261235860208301846134d1565b6000604082526135786040830186886134a7565b828103602084015261358b8185876134a7565b979650505050505050565b60208082526010908201526f195d9a59195b98d9481d1bdbc81bdb1960821b604082015260600190565b6020808252818101527f6d616c6963696f757320766f746520736c617368206e6f7420656e61626c6564604082015260600190565b6020808252601690820152751d985b1a59185d1bdc881b9bdd081b5a59dc985d195960521b604082015260600190565b60208082526019908201527f74686520636f6e7472616374206e6f7420696e69742079657400000000000000604082015260600190565b6020808252602b908201527f746865206d616c6963696f757320766f746520736c6173682073636f7065206f60408201526a7574206f662072616e676560a81b606082015260800190565b6020808252601a908201527f6e6f2076696f6c6174696f6e206f6620766f74652072756c6573000000000000604082015260600190565b6020808252818101527f7468652066656c6f6e795468726573686f6c64206f7574206f662072616e6765604082015260600190565b6020808252602b908201527f6c656e677468206f6620656e61626c654d616c6963696f7573566f7465536c6160408201526a0e6d040dad2e6dac2e8c6d60ab1b606082015260800190565b60208082526017908201527f766572696679207369676e6174757265206661696c6564000000000000000000604082015260600190565b6020808252600e908201526d696e70757420746f6f206c6f6e6760901b604082015260600190565b60208082526019908201527f7372634e756d20626967676572207468616e207461724e756d00000000000000604082015260600190565b60208082526027908201527f6c656e677468206f66206d697364656d65616e6f725468726573686f6c64206d6040820152660d2e6dac2e8c6d60cb1b606082015260800190565b60208082526013908201527274776f206964656e746963616c20766f74657360681b604082015260600190565b60208082526030908201527f746865206d6573736167652073656e646572206d7573742062652076616c696460408201526f185d1bdc94d95d0818dbdb9d1c9858dd60821b606082015260800190565b6020808252601190820152706164646974696f6e206f766572666c6f7760781b604082015260600190565b60208082526023908201527f6c656e677468206f662066656c6f6e79536c61736853636f7065206d69736d616040820152620e8c6d60eb1b606082015260800190565b6020808252601490820152736761737072696365206973206e6f74207a65726f60601b604082015260600190565b60208082526029908201527f6c656e677468206f662066656c6f6e79536c617368526577617264526174696f604082015268040dad2e6dac2e8c6d60bb1b606082015260800190565b6020808252601590820152741d9bdd195059191c881a5cc81b9bdd08199bdd5b99605a1b604082015260600190565b6020808252602e908201527f746865206d6573736167652073656e646572206d75737420626520676f76657260408201526d1b985b98d94818dbdb9d1c9858dd60921b606082015260800190565b60208082526022908201527f6c656e677468206f662066656c6f6e795468726573686f6c64206d69736d61746040820152610c6d60f31b606082015260800190565b6020808252602a908201527f7468652066656c6f6e7920736c6173682072657761726420726174696f206f7560408201526974206f662072616e676560b01b606082015260800190565b60208082526019908201527f74686520636f6e747261637420616c726561647920696e697400000000000000604082015260600190565b6020808252600c908201526b32b6b83a3c903432b0b232b960a11b604082015260600190565b6020808252601a908201527f6c656e677468206973206c657373207468616e206f6666736574000000000000604082015260600190565b60208082526025908201527f746865206d697364656d65616e6f725468726573686f6c64206f7574206f662060408201526472616e676560d81b606082015260800190565b6020808252602f908201527f746865206d6573736167652073656e646572206d7573742062652063726f737360408201526e0818da185a5b8818dbdb9d1c9858dd608a1b606082015260800190565b6020808252602d908201527f746865206d6573736167652073656e646572206d75737420626520746865206260408201526c3637b1b590383937b23ab1b2b960991b606082015260800190565b6020808252600d908201526c756e6b6e6f776e20706172616d60981b604082015260600190565b6020808252601490820152731d185c99d95d08189b1bd8dac81d1bdbc81bdb1960621b604082015260600190565b6020808252601e908201527f7265636569766520756e65787065637465642073796e207061636b6167650000604082015260600190565b6020808252818101527f63616e206e6f7420736c61736820747769636520696e206f6e6520626c6f636b604082015260600190565b61ffff91909116815260200190565b90815260200190565b600083825260406020830152613d0d60408301846134d1565b949350505050565b918252602082015260400190565b92835260208301919091521515604082015260600190565b63ffffffff91909116815260200190565b60ff91909116815260200190565b600060ff8516825260606020830152613d7660608301856134d1565b9050826040830152949350505050565b60405181810167ffffffffffffffff81118282101715613da557600080fd5b604052919050565b600067ffffffffffffffff821115613dc3578081fd5b5060209081020190565b600067ffffffffffffffff821115613de3578081fd5b50601f01601f191660200190565b60005b83811015613e0c578181015183820152602001613df4565b83811115613e1b576000848401525b50505050565b6001600160a01b0381168114613e3657600080fd5b5056fea164736f6c6343000604000a", + Code: "608060405234801561001057600080fd5b506004361061035d5760003560e01c80637e434d54116101d3578063c80d4b8f11610104578063df8079e9116100a2578063f9a2bbc71161007c578063f9a2bbc714610601578063fc3e590814610609578063fc4333cd14610611578063fd6a6879146106195761035d565b8063df8079e9146105e9578063e1c7392a146105f1578063f1fad104146105f95761035d565b8063c96be4cb116100de578063c96be4cb146105b3578063cc844b73146105c6578063dc927faf146105d9578063dcc6f156146105e15761035d565b8063c80d4b8f14610590578063c81b166214610598578063c8509d81146105a05761035d565b8063a1a11bf511610171578063aad560631161014b578063aad5606314610565578063ab51bb961461056d578063ac0af62914610575578063ac4317511461057d5761035d565b8063a1a11bf51461054d578063a78abc1614610555578063aa82dce11461055d5761035d565b806396713da9116101ad57806396713da9146105225780639dc092621461052a5780639e89ded8146105325780639f804f5f146105455761035d565b80637e434d54146104ff5780638256ace614610507578063831d65d11461050f5761035d565b8063493279b1116102ad57806362b72cf51161024b578063718a8aa811610225578063718a8aa8146104df57806375d47a0a146104e75780637912a65d146104ef5780637942fd05146104f75761035d565b806362b72cf5146104c75780636e47b482146104cf57806370fd5bad146104d75761035d565b806351b4dce31161028757806351b4dce31461049c57806351e80672146104a4578063567a372d146104ac5780635bfb4990146104b45761035d565b8063493279b1146104775780634bf6c8821461048c57806350055f90146104945761035d565b8063280870281161031a57806337c8dab9116102f457806337c8dab914610431578063389f4f71146104525780633dffc3871461045a57806343756e5c1461046f5761035d565b806328087028146104015780633306ccca1461040957806335aa2e441461041e5761035d565b80630bee7a67146103625780630e2374a5146103805780631182b8751461039557806322d1e80b146103b557806323bac5a2146103ca57806327962118146103ec575b600080fd5b61036a610621565b6040516103779190613d3b565b60405180910390f35b610388610626565b6040516103779190613519565b6103a86103a336600461344f565b61062c565b6040516103779190613551565b6103bd610692565b6040516103779190613546565b6103dd6103d8366004613166565b61069b565b60405161037793929190613d23565b6103ff6103fa3660046132ac565b6106be565b005b610388610a13565b610411610a19565b6040516103779190613ceb565b61038861042c36600461341f565b610a1e565b61044461043f366004613166565b610a45565b604051610377929190613d15565b610411610a9c565b610462610aa2565b6040516103779190613d4c565b610388610aa7565b61047f610aad565b6040516103779190613cdc565b610462610ab3565b610411610ab8565b610388610abe565b610388610ac4565b610411610aca565b6103ff6104c2366004613166565b610ad0565b610411610b7b565b610388610b81565b610462610b87565b610462610b8c565b610388610b91565b610411610b97565b610462610b9c565b610388610ba1565b610444610ba7565b6103ff61051d36600461344f565b610bb1565b610462610cc4565b610388610cc9565b6103ff61054036600461319e565b610ccf565b610411610cfe565b610388610d04565b6103bd610d0a565b610388610d13565b610388610d19565b61036a610d1f565b610411610d24565b6103ff61058b366004613303565b610d29565b6104116112c5565b6103886112ca565b6103ff6105ae36600461344f565b6112d0565b6103ff6105c1366004613166565b611341565b6103ff6105d436600461336c565b6117c2565b610388611da0565b610411611da6565b610388611dab565b6103ff611db1565b610462611dfe565b610388611e03565b610462611e09565b6103ff611e0e565b610388612257565b606481565b61200181565b606033612000146106585760405162461bcd60e51b815260040161064f90613b7f565b60405180910390fd5b60005460ff1661067a5760405162461bcd60e51b815260040161064f90613625565b60405162461bcd60e51b815260040161064f90613c70565b60075460ff1681565b600260208190526000918252604090912080546001820154919092015460ff1683565b60005460ff166106e05760405162461bcd60e51b815260040161064f90613625565b6006546106ed5760146006555b6008546106fa57603c6008555b81511580159061070a5750805115155b6107265760405162461bcd60e51b815260040161064f90613add565b60408051600380825260808201909252606091816020015b606081526020019060019003908161073e5790505090506107606102ca61225d565b8160008151811061076d57fe5b602002602001018190525061078183612278565b8160018151811061078e57fe5b60200260200101819052506107a282612278565b816002815181106107af57fe5b602002602001018190525060606107c5826122ce565b60408051603480825260608281019093529293509091602082018180368337019050509050815160346020830182602086016068600019fa61080657600080fd5b506014810151603482015160405163436aa28360e11b8152600090612002906386d5450690610839908690600401613519565b60206040518083038186803b15801561085157600080fd5b505afa158015610865573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108899190613182565b6001600160a01b031614156108b05760405162461bcd60e51b815260040161064f906135f5565b43600854820110156108d45760405162461bcd60e51b815260040161064f90613596565b604051631871f7d960e31b81526120029063c38fbec8906108f9908590600401613519565b600060405180830381600087803b15801561091357600080fd5b505af1158015610927573d6000803e3d6000fd5b50506040516335409f7f60e01b815261100092506335409f7f9150610950908590600401613519565b600060405180830381600087803b15801561096a57600080fd5b505af115801561097e573d6000803e3d6000fd5b50506006546040516309a99b4f60e41b815260646110028031909302049350909150639a99b4f0906109b6903390859060040161352d565b602060405180830381600087803b1580156109d057600080fd5b505af11580156109e4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a089190613437565b505050505050505050565b61200581565b603c81565b60018181548110610a2b57fe5b6000918252602090912001546001600160a01b0316905081565b600080610a50612f4d565b5050506001600160a01b0316600090815260026020818152604092839020835160608101855281548082526001830154938201849052919093015460ff16151592909301919091529091565b60055481565b600181565b61100181565b6102ca81565b600881565b60065481565b61200681565b61200081565b60045481565b3361100014610af15760405162461bcd60e51b815260040161064f90613868565b60005460ff16610b135760405162461bcd60e51b815260040161064f90613625565b61200063f7a251d7600b610b268461235f565b60006040518463ffffffff1660e01b8152600401610b4693929190613d5a565b600060405180830381600087803b158015610b6057600080fd5b505af1158015610b74573d6000803e3d6000fd5b5050505050565b60035481565b61100581565b600281565b601081565b61100881565b600581565b600b81565b61200381565b6004546005549091565b3361200014610bd25760405162461bcd60e51b815260040161064f90613b7f565b60005460ff16610bf45760405162461bcd60e51b815260040161064f90613625565b610bfc612f70565b6000610c3d84848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061242992505050565b915091508015610c845781516040517f7f0956d47419b9525356e7111652b653b530ec6f5096dccc04589bc38e62996791610c7791613d3b565b60405180910390a1610b74565b81516040517f7d45f62d17443dd4547bca8a8112c60e2385669318dc300ec61a5d2492f262e791610cb491613d3b565b60405180910390a150505b505050565b600981565b61100781565b3361100014610cf05760405162461bcd60e51b815260040161064f90613868565b610cfa82826124a9565b5050565b60085481565b61100681565b60005460ff1681565b61200281565b61300081565b600081565b600481565b60005460ff16610d4b5760405162461bcd60e51b815260040161064f90613625565b3361100714610d6c5760405162461bcd60e51b815260040161064f906139cc565b610dd784848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260148152731b5a5cd9195b59585b9bdc951a1c995cda1bdb1960621b602082015291506126809050565b15610e725760208114610dfc5760405162461bcd60e51b815260040161064f906137f4565b604080516020601f8401819004810282018101909252828152600091610e3a918585808385018382808284376000920191909152506126da92505050565b905060018110158015610e4e575060055481105b610e6a5760405162461bcd60e51b815260040161064f90613b3a565b600455611282565b610ed884848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600f81526e19995b1bdb9e551a1c995cda1bdb19608a1b602082015291506126809050565b15610f745760208114610efd5760405162461bcd60e51b815260040161064f90613a1a565b604080516020601f8401819004810282018101909252828152600091610f3b918585808385018382808284376000920191909152506126da92505050565b90506103e88111158015610f50575060045481115b610f6c5760405162461bcd60e51b815260040161064f906136de565b600555611282565b610fe184848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601681527566656c6f6e79536c617368526577617264526174696f60501b602082015291506126809050565b1561107b57602081146110065760405162461bcd60e51b815260040161064f90613954565b604080516020601f8401819004810282018101909252828152600091611044918585808385018382808284376000920191909152506126da92505050565b9050600a81101580156110575750606481105b6110735760405162461bcd60e51b815260040161064f90613a5c565b600655611282565b6110ef84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601881527f656e61626c654d616c6963696f7573566f7465536c6173680000000000000000602082015291506126809050565b1561116657602081146111145760405162461bcd60e51b815260040161064f90613713565b604080516020601f840181900481028201810190925282815261115091908484808385018382808284376000920191909152506126df92505050565b6007805460ff1916911515919091179055611282565b6111cd84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601081526f66656c6f6e79536c61736853636f706560801b602082015291506126809050565b1561126a57602081146111f25760405162461bcd60e51b815260040161064f906138e3565b604080516020601f8401819004810282018101909252828152600091611230918585808385018382808284376000920191909152506126da92505050565b905061708081101580156112465750620d2f0081105b6112625760405162461bcd60e51b815260040161064f9061365c565b600855611282565b60405162461bcd60e51b815260040161064f90613c1b565b7f6cdb0ac70ab7f2e2d035cca5be60d89906f2dede7648ddbd7402189c1eeed17a848484846040516112b79493929190613564565b60405180910390a150505050565b600a81565b61100281565b33612000146112f15760405162461bcd60e51b815260040161064f90613b7f565b60005460ff166113135760405162461bcd60e51b815260040161064f90613625565b6040517f07db600eebe2ac176be8dcebad61858c245a4961bb32ca2aa3d159b09aa0810e90600090a1505050565b3341146113605760405162461bcd60e51b815260040161064f90613bce565b60005460ff166113825760405162461bcd60e51b815260040161064f90613625565b60035443116113a35760405162461bcd60e51b815260040161064f90613ca7565b3a156113c15760405162461bcd60e51b815260040161064f90613926565b60405163155853f360e21b8152611000906355614fcc906113e6908490600401613519565b60206040518083038186803b1580156113fe57600080fd5b505afa158015611412573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611436919061328c565b61143f576117bb565b611447612f4d565b506001600160a01b0381166000908152600260208181526040928390208351606081018552815481526001820154928101929092529091015460ff1615801592820192909252906114a25760208101805160010190526114fb565b60016040820181905260208201819052805480820182556000919091527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180546001600160a01b0319166001600160a01b0384161790555b43815260055460208201518161150d57fe5b066116e957600060208201526040516335409f7f60e01b8152611000906335409f7f9061153e908590600401613519565b600060405180830381600087803b15801561155857600080fd5b505af115801561156c573d6000803e3d6000fd5b505060405163436aa28360e11b81526000925061200291506386d5450690611598908690600401613519565b60206040518083038186803b1580156115b057600080fd5b505afa1580156115c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115e89190613182565b6001600160a01b031614611609576116048282602001516124a9565b6116e4565b61200063f7a251d7600b61161c8561235f565b60006040518463ffffffff1660e01b815260040161163c93929190613d5a565b600060405180830381600087803b15801561165657600080fd5b505af1925050508015611667575060015b6116e4573d808015611695576040519150601f19603f3d011682016040523d82523d6000602084013e61169a565b606091505b50826001600160a01b03167fd7bc86ff5d08c8ab043edec743302aba2520e6635172a428bc956721db9e2d1c8360200151836040516116da929190613cf4565b60405180910390a2505b611755565b6004548160200151816116f857fe5b06611755576040516375abf10160e11b81526110009063eb57e20290611722908590600401613519565b600060405180830381600087803b15801561173c57600080fd5b505af1158015611750573d6000803e3d6000fd5b505050505b6001600160a01b0382166000818152600260208181526040808420865181559186015160018301558581015191909201805460ff1916911515919091179055517fddb6012116e51abf5436d956a4f0ebd927e92c576ff96d7918290c8782291e3e9190a2505b5043600355565b60005460ff166117e45760405162461bcd60e51b815260040161064f90613625565b60075460ff166118065760405162461bcd60e51b815260040161064f906135c0565b6006546118135760146006555b60085461182057603c6008555b60085481516040015143910111801561184457504360085482602001516040015101115b6118605760405162461bcd60e51b815260040161064f90613c42565b80602001516020015181600001516020015114801561188e5750806020015160600151816000015160600151145b156118ab5760405162461bcd60e51b815260040161064f9061383b565b8051604081015190511080156118ca5750602081015160408101519051105b6118e65760405162461bcd60e51b815260040161064f906137bd565b60208101515181515110801561190b5750806000015160400151816020015160400151105b8061193657508051516020820151511080156119365750806020015160400151816000015160400151105b806119505750806020015160400151816000015160400151145b61196c5760405162461bcd60e51b815260040161064f906136a7565b604080820151905163ea321e4960e01b81526110009163ea321e49916119959190600401613551565b60206040518083038186803b1580156119ad57600080fd5b505afa1580156119c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119e5919061328c565b611a015760405162461bcd60e51b815260040161064f9061399d565b611a1381600001518260400151612707565b8015611a2c5750611a2c81602001518260400151612707565b611a485760405162461bcd60e51b815260040161064f9061375e565b6060806110006001600160a01b0316633b071dcc6040518163ffffffff1660e01b815260040160006040518083038186803b158015611a8657600080fd5b505afa158015611a9a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611ac291908101906131c9565b9150915060005b8151811015611bff57611af3828281518110611ae157fe5b602002602001015185604001516128df565b15611bf7576006546040516309a99b4f60e41b815260646110028031909302049190639a99b4f090611b2b903390859060040161352d565b602060405180830381600087803b158015611b4557600080fd5b505af1158015611b59573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b7d9190613437565b506110006001600160a01b03166335409f7f858481518110611b9b57fe5b60200260200101516040518263ffffffff1660e01b8152600401611bbf9190613519565b600060405180830381600087803b158015611bd957600080fd5b505af1158015611bed573d6000803e3d6000fd5b5050505050611bff565b600101611ac9565b5060408084015190516317b4f35360e01b8152600091612002916317b4f35391611c2b91600401613551565b60206040518083038186803b158015611c4357600080fd5b505afa158015611c57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c7b9190613182565b6001600160a01b031614611ce9576040808401519051630e9fbf5160e01b815261200291630e9fbf5191611cb29190600401613551565b600060405180830381600087803b158015611ccc57600080fd5b505af1158015611ce0573d6000803e3d6000fd5b50505050610cbf565b6120006001600160a01b031663f7a251d7600b611d098660400151612943565b60006040518463ffffffff1660e01b8152600401611d2993929190613d5a565b600060405180830381600087803b158015611d4357600080fd5b505af1158015611d57573d6000803e3d6000fd5b505050506000611d6c8460400151600061297e565b60405190915081907f7b78aadacff901d8b63d0dba4f86283d4db8aef27f9ed70413dd860f1c9532b690600090a250505050565b61100381565b601481565b61200481565b60005460ff1615611dd45760405162461bcd60e51b815260040161064f90613aa6565b60056004819055600a905560078054600160ff199182168117909255600080549091169091179055565b601181565b61100081565b600381565b3361100014611e2f5760405162461bcd60e51b815260040161064f90613868565b60005460ff16611e515760405162461bcd60e51b815260040161064f90613625565b600154611e5d57612255565b600154600090600019015b808211612229576000805b82841015611f8c57611e83612f4d565b6002600060018781548110611e9457fe5b60009182526020808320909101546001600160a01b0316835282810193909352604091820190208151606081018352815481526001820154938101939093526002015460ff161515908201526005549091506004900481602001511115611f7657600460055481611f0157fe5b04816020015103816020018181525050806002600060018881548110611f2357fe5b6000918252602080832091909101546001600160a01b0316835282810193909352604091820190208351815591830151600183015591909101516002909101805460ff1916911515919091179055611f80565b6001925050611f8c565b50836001019350611e73565b82841161212357611f9b612f4d565b6002600060018681548110611fac57fe5b60009182526020808320909101546001600160a01b0316835282810193909352604091820190208151606081018352815481526001820154938101939093526002015460ff1615159082015260055490915060049004816020015111156120945760046005548161201957fe5b0481602001510381602001818152505080600260006001878154811061203b57fe5b6000918252602080832091909101546001600160a01b03168352828101939093526040918201902083518155918301516001808401919091559201516002909101805460ff191691151591909117905591506121239050565b60026000600186815481106120a557fe5b60009182526020808320909101546001600160a01b031683528201929092526040018120818155600181810192909255600201805460ff191690558054806120e957fe5b600082815260209020810160001990810180546001600160a01b0319169055019055836121165750612123565b5060001990920191611f8c565b81801561212d5750805b1561220c57600260006001868154811061214357fe5b60009182526020808320909101546001600160a01b031683528201929092526040018120818155600181810192909255600201805460ff1916905580548490811061218a57fe5b600091825260209091200154600180546001600160a01b0390921691869081106121b057fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060018054806121e957fe5b600082815260209020810160001990810180546001600160a01b03191690550190555b82612218575050612229565b505060019091019060001901611e68565b6040517fcfdb3b6ccaeccbdc68be3c59c840e3b3c90f0a7c491f5fff1cf56cfda200dd9c90600090a150505b565b61100481565b606061227061226b8361299a565b612278565b90505b919050565b6060815160011480156122aa5750607f60f81b8260008151811061229857fe5b01602001516001600160f81b03191611155b156122b6575080612273565b6122706122c88351608060ff16612a80565b83612b52565b60608151600014156122ef5750604080516000815260208101909152612273565b6060826000815181106122fe57fe5b602002602001015190506000600190505b835181101561233f576123358285838151811061232857fe5b6020026020010151612b52565b915060010161230f565b50612358612352825160c060ff16612a80565b82612b52565b9392505050565b60408051600480825260a08201909252606091829190816020015b606081526020019060019003908161237a5790505090506123a3836001600160a01b0316612bcf565b816000815181106123b057fe5b60200260200101819052506123c44361225d565b816001815181106123d157fe5b60209081029190910101526123e76102ca61225d565b816002815181106123f457fe5b60200260200101819052506124084261225d565b8160038151811061241557fe5b6020026020010181905250612358816122ce565b612431612f70565b600061243b612f70565b612443612f82565b61245461244f86612bf2565b612c17565b90506000805b61246383612c61565b1561249c578061248f5761247e61247984612c82565b612cd0565b63ffffffff16845260019150612494565b61249c565b60010161245a565b5091935090915050915091565b6040516375cc7d8960e01b8152612002906375cc7d89906124ce908590600401613519565b600060405180830381600087803b1580156124e857600080fd5b505af19250505080156124f9575060015b610cfa576040516000815260443d1015612515575060006125b2565b60046000803e60005160e01c6308c379a081146125365760009150506125b2565b60043d036004833e81513d602482011167ffffffffffffffff82111715612562576000925050506125b2565b808301805167ffffffffffffffff8111156125845760009450505050506125b2565b8060208301013d86018111156125a2576000955050505050506125b2565b601f01601f191660405250925050505b806125bd5750612606565b826001600160a01b03167fd7bc86ff5d08c8ab043edec743302aba2520e6635172a428bc956721db9e2d1c83836040516125f8929190613cf4565b60405180910390a25061267b565b3d808015612630576040519150601f19603f3d011682016040523d82523d6000602084013e612635565b606091505b50826001600160a01b03167fd7bc86ff5d08c8ab043edec743302aba2520e6635172a428bc956721db9e2d1c8383604051612671929190613cf4565b60405180910390a2505b610cfa565b60008160405160200161269391906134fd565b60405160208183030381529060405280519060200120836040516020016126ba91906134fd565b604051602081830303815290604052805190602001201490505b92915050565b015190565b8082015160009060ff8116156126f95760019150816126ff565b60009150815b505092915050565b60408051600480825260a0820190925260009160609190816020015b6060815260200190600190039081612723575050604080516020808252818301909252919250606091908082018180368337019050509050612768856000015161225d565b8260008151811061277557fe5b60200260200101819052506127906020866020015183612d52565b61279981612278565b826001815181106127a657fe5b60200260200101819052506127be856040015161225d565b826002815181106127cb57fe5b60200260200101819052506127e66020866060015183612d52565b6127ef81612278565b826003815181106127fc57fe5b60200260200101819052506128226020612815846122ce565b8051906020012083612d52565b6040805160b080825260e08201909252606091602082018180368337019050509050612852818360006020612d62565b61286481876080015160206060612d62565b612872818660806030612d62565b604080516001808252818301909252606091602082018180368337019050509050815160016020830182602086016066600019fa6128af57600080fd5b5060016128bd826000612db5565b60ff16146128d25760009450505050506126d4565b5060019695505050505050565b8151815160009160019181148083146128fb5760009250612939565b600160208701838101602088015b6002848385100114156129345780518351146129285760009650600093505b60209283019201612909565b505050505b5090949350505050565b60408051600480825260a08201909252606091829190816020015b606081526020019060019003908161295e5790505090506123a383612278565b6000816020018351101561299157600080fd5b50016020015190565b604080516020808252818301909252606091829190602082018180368337505050602081018490529050600067ffffffffffffffff1984166129de57506018612a02565b6fffffffffffffffffffffffffffffffff1984166129fe57506010612a02565b5060005b6020811015612a3857818181518110612a1757fe5b01602001516001600160f81b03191615612a3057612a38565b600101612a02565b60008160200390506060816040519080825280601f01601f191660200182016040528015612a6d576020820181803683370190505b5080830196909652508452509192915050565b6060680100000000000000008310612aaa5760405162461bcd60e51b815260040161064f90613795565b60408051600180825281830190925260609160208201818036833701905050905060378411612b045782840160f81b81600081518110612ae657fe5b60200101906001600160f81b031916908160001a90535090506126d4565b6060612b0f8561299a565b90508381510160370160f81b82600081518110612b2857fe5b60200101906001600160f81b031916908160001a905350612b498282612b52565b95945050505050565b6060806040519050835180825260208201818101602087015b81831015612b83578051835260209283019201612b6b565b50855184518101855292509050808201602086015b81831015612bb0578051835260209283019201612b98565b508651929092011591909101601f01601f191660405250905092915050565b60408051600560a21b831860148201526034810190915260609061235881612278565b612bfa612fa2565b506040805180820190915281518152602082810190820152919050565b612c1f612f82565b612c2882612dd1565b612c3157600080fd5b6000612c408360200151612e0b565b60208085015160408051808201909152868152920190820152915050919050565b6000612c6b612fa2565b505080518051602091820151919092015191011190565b612c8a612fa2565b612c9382612c61565b612c9c57600080fd5b60208201516000612cac82612e6e565b80830160209586015260408051808201909152908152938401919091525090919050565b805160009015801590612ce557508151602110155b612cee57600080fd5b6000612cfd8360200151612e0b565b90508083600001511015612d235760405162461bcd60e51b815260040161064f90613b03565b825160208085015183018051928490039291831015612d4957826020036101000a820491505b50949350505050565b9091018181526020918201910152565b60005b81811015610b7457838181518110612d7957fe5b602001015160f81c60f81b858480600101955081518110612d9657fe5b60200101906001600160f81b031916908160001a905350600101612d65565b60008160010183511015612dc857600080fd5b50016001015190565b8051600090612de257506000612273565b6020820151805160001a9060c0821015612e0157600092505050612273565b5060019392505050565b8051600090811a6080811015612e25576000915050612273565b60b8811080612e40575060c08110801590612e40575060f881105b15612e4f576001915050612273565b60c0811015612e635760b519019050612273565b60f519019050612273565b80516000908190811a6080811015612e895760019150612f46565b60b8811015612e9e57607e1981019150612f46565b60c0811015612eef57600060b78203600186019550806020036101000a865104915060018101820193505080831015612ee95760405162461bcd60e51b815260040161064f906138b8565b50612f46565b60f8811015612f045760be1981019150612f46565b600060f78203600186019550806020036101000a8651049150600181018201935050808310156126ff5760405162461bcd60e51b815260040161064f906138b8565b5092915050565b604051806060016040528060008152602001600081526020016000151581525090565b60408051602081019091526000815290565b6040518060400160405280612f95612fa2565b8152602001600081525090565b604051806040016040528060008152602001600081525090565b600082601f830112612fcc578081fd5b8151612fdf612fda82613dad565b613d86565b818152915060208083019084810160005b84811015613055578151870188603f82011261300b57600080fd5b8381015161301b612fda82613dcd565b81815260408b8184860101111561303157600080fd5b61304083888401838701613df1565b50865250509282019290820190600101612ff0565b505050505092915050565b60008083601f840112613071578182fd5b50813567ffffffffffffffff811115613088578182fd5b6020830191508360208285010111156130a057600080fd5b9250929050565b600082601f8301126130b7578081fd5b81356130c5612fda82613dcd565b91508082528360208285010111156130dc57600080fd5b8060208401602084013760009082016020015292915050565b600060a08284031215613106578081fd5b61311060a0613d86565b905081358152602082013560208201526040820135604082015260608201356060820152608082013567ffffffffffffffff81111561314e57600080fd5b61315a848285016130a7565b60808301525092915050565b600060208284031215613177578081fd5b813561235881613e21565b600060208284031215613193578081fd5b815161235881613e21565b600080604083850312156131b0578081fd5b82356131bb81613e21565b946020939093013593505050565b600080604083850312156131db578182fd5b825167ffffffffffffffff808211156131f2578384fd5b81850186601f820112613203578485fd5b80519250613213612fda84613dad565b80848252602080830192508084018a828389028701011115613233578889fd5b8894505b8685101561325e57805161324a81613e21565b845260019490940193928101928101613237565b508801519096509350505080821115613275578283fd5b5061328285828601612fbc565b9150509250929050565b60006020828403121561329d578081fd5b81518015158114612358578182fd5b600080604083850312156132be578182fd5b823567ffffffffffffffff808211156132d5578384fd5b6132e1868387016130a7565b935060208501359150808211156132f6578283fd5b50613282858286016130a7565b60008060008060408587031215613318578182fd5b843567ffffffffffffffff8082111561332f578384fd5b61333b88838901613060565b90965094506020870135915080821115613353578384fd5b5061336087828801613060565b95989497509550505050565b60006020828403121561337d578081fd5b813567ffffffffffffffff80821115613394578283fd5b818401606081870312156133a6578384fd5b6133b06060613d86565b92508035828111156133c0578485fd5b6133cc878284016130f5565b8452506020810135828111156133e0578485fd5b6133ec878284016130f5565b602085015250604081013582811115613403578485fd5b61340f878284016130a7565b6040850152509195945050505050565b600060208284031215613430578081fd5b5035919050565b600060208284031215613448578081fd5b5051919050565b600080600060408486031215613463578081fd5b833560ff81168114613473578182fd5b9250602084013567ffffffffffffffff81111561348e578182fd5b61349a86828701613060565b9497909650939450505050565b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b600081518084526134e9816020860160208601613df1565b601f01601f19169290920160200192915050565b6000825161350f818460208701613df1565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b901515815260200190565b60006020825261235860208301846134d1565b6000604082526135786040830186886134a7565b828103602084015261358b8185876134a7565b979650505050505050565b60208082526010908201526f195d9a59195b98d9481d1bdbc81bdb1960821b604082015260600190565b6020808252818101527f6d616c6963696f757320766f746520736c617368206e6f7420656e61626c6564604082015260600190565b6020808252601690820152751d985b1a59185d1bdc881b9bdd081b5a59dc985d195960521b604082015260600190565b60208082526019908201527f74686520636f6e7472616374206e6f7420696e69742079657400000000000000604082015260600190565b6020808252602b908201527f746865206d616c6963696f757320766f746520736c6173682073636f7065206f60408201526a7574206f662072616e676560a81b606082015260800190565b6020808252601a908201527f6e6f2076696f6c6174696f6e206f6620766f74652072756c6573000000000000604082015260600190565b6020808252818101527f7468652066656c6f6e795468726573686f6c64206f7574206f662072616e6765604082015260600190565b6020808252602b908201527f6c656e677468206f6620656e61626c654d616c6963696f7573566f7465536c6160408201526a0e6d040dad2e6dac2e8c6d60ab1b606082015260800190565b60208082526017908201527f766572696679207369676e6174757265206661696c6564000000000000000000604082015260600190565b6020808252600e908201526d696e70757420746f6f206c6f6e6760901b604082015260600190565b60208082526019908201527f7372634e756d20626967676572207468616e207461724e756d00000000000000604082015260600190565b60208082526027908201527f6c656e677468206f66206d697364656d65616e6f725468726573686f6c64206d6040820152660d2e6dac2e8c6d60cb1b606082015260800190565b60208082526013908201527274776f206964656e746963616c20766f74657360681b604082015260600190565b60208082526030908201527f746865206d6573736167652073656e646572206d7573742062652076616c696460408201526f185d1bdc94d95d0818dbdb9d1c9858dd60821b606082015260800190565b6020808252601190820152706164646974696f6e206f766572666c6f7760781b604082015260600190565b60208082526023908201527f6c656e677468206f662066656c6f6e79536c61736853636f7065206d69736d616040820152620e8c6d60eb1b606082015260800190565b6020808252601490820152736761737072696365206973206e6f74207a65726f60601b604082015260600190565b60208082526029908201527f6c656e677468206f662066656c6f6e79536c617368526577617264526174696f604082015268040dad2e6dac2e8c6d60bb1b606082015260800190565b6020808252601590820152741d9bdd195059191c881a5cc81b9bdd08199bdd5b99605a1b604082015260600190565b6020808252602e908201527f746865206d6573736167652073656e646572206d75737420626520676f76657260408201526d1b985b98d94818dbdb9d1c9858dd60921b606082015260800190565b60208082526022908201527f6c656e677468206f662066656c6f6e795468726573686f6c64206d69736d61746040820152610c6d60f31b606082015260800190565b6020808252602a908201527f7468652066656c6f6e7920736c6173682072657761726420726174696f206f7560408201526974206f662072616e676560b01b606082015260800190565b60208082526019908201527f74686520636f6e747261637420616c726561647920696e697400000000000000604082015260600190565b6020808252600c908201526b32b6b83a3c903432b0b232b960a11b604082015260600190565b6020808252601a908201527f6c656e677468206973206c657373207468616e206f6666736574000000000000604082015260600190565b60208082526025908201527f746865206d697364656d65616e6f725468726573686f6c64206f7574206f662060408201526472616e676560d81b606082015260800190565b6020808252602f908201527f746865206d6573736167652073656e646572206d7573742062652063726f737360408201526e0818da185a5b8818dbdb9d1c9858dd608a1b606082015260800190565b6020808252602d908201527f746865206d6573736167652073656e646572206d75737420626520746865206260408201526c3637b1b590383937b23ab1b2b960991b606082015260800190565b6020808252600d908201526c756e6b6e6f776e20706172616d60981b604082015260600190565b6020808252601490820152731d185c99d95d08189b1bd8dac81d1bdbc81bdb1960621b604082015260600190565b6020808252601e908201527f7265636569766520756e65787065637465642073796e207061636b6167650000604082015260600190565b6020808252818101527f63616e206e6f7420736c61736820747769636520696e206f6e6520626c6f636b604082015260600190565b61ffff91909116815260200190565b90815260200190565b600083825260406020830152613d0d60408301846134d1565b949350505050565b918252602082015260400190565b92835260208301919091521515604082015260600190565b63ffffffff91909116815260200190565b60ff91909116815260200190565b600060ff8516825260606020830152613d7660608301856134d1565b9050826040830152949350505050565b60405181810167ffffffffffffffff81118282101715613da557600080fd5b604052919050565b600067ffffffffffffffff821115613dc3578081fd5b5060209081020190565b600067ffffffffffffffff821115613de3578081fd5b50601f01601f191660200190565b60005b83811015613e0c578181015183820152602001613df4565b83811115613e1b576000848401525b50505050565b6001600160a01b0381168114613e3657600080fd5b5056fea164736f6c6343000604000a", }, { ContractAddr: common.HexToAddress(TokenHubContract), CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/1abdfbf3aeb86909c2220b79bf92b87ddff64b54", - Code: "6080604052600436106104405760003560e01c80639509b98011610234578063c81b16621161012e578063ebf71d53116100b6578063fb063e8f1161007a578063fb063e8f146110d3578063fc1a598f146110e8578063fc3e590814610cca578063fd6a68791461111b578063ff9c0027146108a057610488565b8063ebf71d531461106a578063f01484721461107f578063f1fad10414611094578063f9a2bbc7146110a9578063fa9e9159146110be57610488565b8063dc927faf116100fd578063dc927faf14610fce578063df8079e914610fe3578063e04c83a714610ff8578063e1c7392a14611022578063e8f35cea1461103757610488565b8063c81b166214610ef9578063c8509d8114610f0e578063cf41984414610f93578063d9e6dae91461080d57610488565b8063aa7415f5116101bc578063b99328c511610180578063b99328c514610e30578063b9fd21e314610e69578063ba35ead614610e7e578063bbface1f14610e93578063bd46646114610ec657610488565b8063aa7415f514610cdf578063aa82dce114610d26578063aad5606314610d3b578063ab51bb9614610d50578063ac43175114610d6557610488565b80639dc09262116102035780639dc0926214610c76578063a1a11bf514610c8b578063a496fba214610ca0578063a78abc1614610cb5578063a7c9f02d14610cca57610488565b80639509b98014610bda57806396713da914610c135780639a854bbd14610c285780639a99b4f014610c3d57610488565b806359b9278911610345578063727be1f8116102cd578063831d65d111610291578063831d65d114610ac85780638525db0314610b4d5780638b87b21f146107625780638eff336c14610b8657806393ab703f14610bc557610488565b8063727be1f814610a2057806375d47a0a14610a4a5780637942fd0514610a5f578063799758b914610a745780637e434d5414610ab357610488565b80636e056520116103145780636e056520146108b55780636e47b482146109e157806370fd5bad146108a0578063718a8aa8146109f657806371d3086314610a0b57610488565b806359b92789146108615780635d499b1b1461088b578063613684751461080d57806366dea52a146108a057610488565b80633fd8b02f116103c85780634a3acdf4116103975780634a3acdf4146107f85780634bf6c8821461080d57806350432d321461082257806351b4dce31461083757806351e806721461084c57610488565b80633fd8b02f1461078d57806343756e5c146107a257806343a368b9146107b7578063493279b1146107cc57610488565b8063149d14d91161040f578063149d14d91461062157806328087028146106485780632ae454831461065d5780633d713223146106b15780633dffc3871461076257610488565b80630bee7a671461048d5780630e2374a5146104bb5780631182b875146104ec57806312234582146105e657610488565b36610488573415610486576040805133815234602082015281517f6c98249d85d88c3753a04a22230f595e4dc8d3dc86c34af35deeeedc861b89db929181900390910190a15b005b600080fd5b34801561049957600080fd5b506104a2611130565b6040805163ffffffff9092168252519081900360200190f35b3480156104c757600080fd5b506104d0611135565b604080516001600160a01b039092168252519081900360200190f35b3480156104f857600080fd5b506105716004803603604081101561050f57600080fd5b60ff8235169190810190604081016020820135600160201b81111561053357600080fd5b82018360208201111561054557600080fd5b803590602001918460018302840111600160201b8311171561056657600080fd5b50909250905061113b565b6040805160208082528351818301528351919283929083019185019080838360005b838110156105ab578181015183820152602001610593565b50505050905090810190601f1680156105d85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156105f257600080fd5b506104866004803603604081101561060957600080fd5b506001600160a01b0381358116916020013516611269565b34801561062d57600080fd5b50610636611363565b60408051918252519081900360200190f35b34801561065457600080fd5b506104d0611369565b34801561066957600080fd5b506106986004803603604081101561068057600080fd5b506001600160a01b038135811691602001351661136f565b6040805192835260208301919091528051918290030190f35b3480156106bd57600080fd5b506104d0600480360360208110156106d457600080fd5b810190602081018135600160201b8111156106ee57600080fd5b82018360208201111561070057600080fd5b803590602001918460018302840111600160201b8311171561072157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611393945050505050565b34801561076e57600080fd5b506107776113b7565b6040805160ff9092168252519081900360200190f35b34801561079957600080fd5b506106366113bc565b3480156107ae57600080fd5b506104d06113c2565b3480156107c357600080fd5b506106366113c8565b3480156107d857600080fd5b506107e16113d4565b6040805161ffff9092168252519081900360200190f35b34801561080457600080fd5b506106366113da565b34801561081957600080fd5b506107776113e0565b34801561082e57600080fd5b506106366113e5565b34801561084357600080fd5b506104d06113f0565b34801561085857600080fd5b506104d06113f6565b34801561086d57600080fd5b506104d06004803603602081101561088457600080fd5b50356113fc565b34801561089757600080fd5b50610636611417565b3480156108ac57600080fd5b50610777611420565b6109cd600480360360808110156108cb57600080fd5b810190602081018135600160201b8111156108e557600080fd5b8201836020820111156108f757600080fd5b803590602001918460208302840111600160201b8311171561091857600080fd5b919390929091602081019035600160201b81111561093557600080fd5b82018360208201111561094757600080fd5b803590602001918460208302840111600160201b8311171561096857600080fd5b919390929091602081019035600160201b81111561098557600080fd5b82018360208201111561099757600080fd5b803590602001918460208302840111600160201b831117156109b857600080fd5b91935091503567ffffffffffffffff16611425565b604080519115158252519081900360200190f35b3480156109ed57600080fd5b506104d06118fa565b348015610a0257600080fd5b50610777611900565b348015610a1757600080fd5b50610636611905565b348015610a2c57600080fd5b506109cd60048036036020811015610a4357600080fd5b503561190b565b348015610a5657600080fd5b506104d061198c565b348015610a6b57600080fd5b50610777611992565b348015610a8057600080fd5b5061048660048036036060811015610a9757600080fd5b508035906001600160a01b036020820135169060400135611997565b348015610abf57600080fd5b506104d0611c3d565b348015610ad457600080fd5b5061048660048036036040811015610aeb57600080fd5b60ff8235169190810190604081016020820135600160201b811115610b0f57600080fd5b820183602082011115610b2157600080fd5b803590602001918460018302840111600160201b83111715610b4257600080fd5b509092509050611c43565b348015610b5957600080fd5b5061048660048036036040811015610b7057600080fd5b50803590602001356001600160a01b0316611d8c565b348015610b9257600080fd5b5061048660048036036060811015610ba957600080fd5b508035906001600160a01b036020820135169060400135611ef5565b348015610bd157600080fd5b50610636611f7b565b348015610be657600080fd5b5061048660048036036040811015610bfd57600080fd5b506001600160a01b038135169060200135611f80565b348015610c1f57600080fd5b5061077761213d565b348015610c3457600080fd5b50610636612142565b348015610c4957600080fd5b5061063660048036036040811015610c6057600080fd5b506001600160a01b03813516906020013561214e565b348015610c8257600080fd5b506104d061228c565b348015610c9757600080fd5b506104d0612292565b348015610cac57600080fd5b50610777612298565b348015610cc157600080fd5b506109cd61229d565b348015610cd657600080fd5b506107776122a6565b6109cd60048036036080811015610cf557600080fd5b5080356001600160a01b03908116916020810135909116906040810135906060013567ffffffffffffffff166122ab565b348015610d3257600080fd5b506104d061296c565b348015610d4757600080fd5b506104d0612972565b348015610d5c57600080fd5b506104a2612298565b348015610d7157600080fd5b5061048660048036036040811015610d8857600080fd5b810190602081018135600160201b811115610da257600080fd5b820183602082011115610db457600080fd5b803590602001918460018302840111600160201b83111715610dd557600080fd5b919390929091602081019035600160201b811115610df257600080fd5b820183602082011115610e0457600080fd5b803590602001918460018302840111600160201b83111715610e2557600080fd5b509092509050612978565b348015610e3c57600080fd5b5061048660048036036040811015610e5357600080fd5b50803590602001356001600160a01b0316612e20565b348015610e7557600080fd5b50610636612ea0565b348015610e8a57600080fd5b50610636612eaa565b348015610e9f57600080fd5b5061063660048036036020811015610eb657600080fd5b50356001600160a01b0316612eb0565b348015610ed257600080fd5b5061063660048036036020811015610ee957600080fd5b50356001600160a01b0316612ec2565b348015610f0557600080fd5b506104d0612edd565b348015610f1a57600080fd5b5061048660048036036040811015610f3157600080fd5b60ff8235169190810190604081016020820135600160201b811115610f5557600080fd5b820183602082011115610f6757600080fd5b803590602001918460018302840111600160201b83111715610f8857600080fd5b509092509050612ee3565b348015610f9f57600080fd5b5061048660048036036040811015610fb657600080fd5b506001600160a01b0381358116916020013516612fb3565b348015610fda57600080fd5b506104d0613287565b348015610fef57600080fd5b506104d061328d565b34801561100457600080fd5b506109cd6004803603602081101561101b57600080fd5b5035613293565b34801561102e57600080fd5b50610486613333565b34801561104357600080fd5b506106366004803603602081101561105a57600080fd5b50356001600160a01b03166133d3565b34801561107657600080fd5b506107776133e5565b34801561108b57600080fd5b506107776133ea565b3480156110a057600080fd5b506107776133ef565b3480156110b557600080fd5b506104d06133f4565b3480156110ca57600080fd5b506106366133fa565b3480156110df57600080fd5b50610636613400565b3480156110f457600080fd5b506105716004803603602081101561110b57600080fd5b50356001600160a01b031661340e565b34801561112757600080fd5b506104d0613535565b606481565b61200181565b60005460609060ff16611183576040805162461bcd60e51b81526020600482015260196024820152600080516020615ce9833981519152604482015290519081900360640190fd5b33612000146111c35760405162461bcd60e51b815260040180806020018281038252602f815260200180615c97602f913960400191505060405180910390fd5b60ff8416600214156112155761120e83838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061353b92505050565b9050611262565b6040805162461bcd60e51b815260206004820152601860248201527f756e7265636f676e697a65642073796e207061636b6167650000000000000000604482015290519081900360640190fd5b9392505050565b33612000146112a95760405162461bcd60e51b815260040180806020018281038252602f815260200180615c97602f913960400191505060405180910390fd5b6001600160a01b0380831660009081526007602090815260408083209385168352929052208054611314576040805162461bcd60e51b815260206004820152601060248201526f1b9bc81b1bd8dad95908185b5bdd5b9d60821b604482015290519081900360640190fd5b8054600082556040805182815290516001600160a01b0380861692908716917f152fb15aa5d80f843e1e4bd5f2fc9161714f169945024decec7e84fb910fdd519181900360200190a350505050565b60015490565b61200581565b60076020908152600092835260408084209091529082529020805460019091015482565b6020818101516000908152600490915260409020546001600160a01b03165b919050565b600181565b60055481565b61100181565b670de0b6b3a764000081565b6102ca81565b61a8c081565b600881565b66071afd498d000081565b61200681565b61200081565b6000908152600460205260409020546001600160a01b031690565b6402540be40081565b600281565b6000805460ff1661146b576040805162461bcd60e51b81526020600482015260196024820152600080516020615ce9833981519152604482015290519081900360640190fd5b8685146114a95760405162461bcd60e51b815260040180806020018281038252603b815260200180615c5c603b913960400191505060405180910390fd5b8683146114e75760405162461bcd60e51b815260040180806020018281038252603f815260200180615b2f603f913960400191505060405180910390fd5b426078018267ffffffffffffffff1610156115335760405162461bcd60e51b81526004018080602001828103825260248152602001806159f46024913960400191505060405180910390fd5b6402540be4003406156115775760405162461bcd60e51b8152600401808060200182810382526040815260200180615d5f6040913960400191505060405180910390fd5b604080518681526020808802820101909152859060009081906060908480156115aa578160200160208202803683370190505b50905060005b84811015611685576402540be4008b8b838181106115ca57fe5b90506020020135816115d857fe5b06156116155760405162461bcd60e51b815260040180806020018281038252603c815260200180615b6e603c913960400191505060405180910390fd5b61163a8b8b8381811061162457fe5b905060200201358561365f90919063ffffffff16565b93506116666402540be4008c8c8481811061165157fe5b905060200201356136b990919063ffffffff16565b82828151811061167257fe5b60209081029190910101526001016115b0565b506001546116aa9061169d908663ffffffff6136fb16565b849063ffffffff61365f16565b3410156116e85760405162461bcd60e51b8152600401808060200182810382526056815260200180615d096056913960600191505060405180910390fd5b6116f8348463ffffffff61375416565b91506117026157f8565b6040518060c001604052806221272160e91b60001b815260200160006001600160a01b031681526020018381526020018e8e808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152505050908252506040805160208c810282810182019093528c82529283019290918d918d91829185019084908082843760009201919091525050509082525067ffffffffffffffff8916602090910152905061200063f7a251d760036117c684613796565b6117db876402540be40063ffffffff6136b916565b6040518463ffffffff1660e01b8152600401808460ff1660ff16815260200180602001838152602001828103825284818151815260200191508051906020019080838360005b83811015611839578181015183820152602001611821565b50505050905090810190601f1680156118665780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b15801561188757600080fd5b505af115801561189b573d6000803e3d6000fd5b505060408051600081523360208201528082018890526060810187905290517f74eab09b0e53aefc23f2e1b16da593f95c2dd49c6f5a23720463d10d9c330b2a9350908190036080019150a15060019c9b505050505050505050505050565b61100581565b601081565b60015481565b6000336120011461194d5760405162461bcd60e51b81526004018080602001828103825260338152602001806159126033913960400191505060405180910390fd5b8115611984576040516120019083156108fc029084906000818181858888f19350505050158015611982573d6000803e3d6000fd5b505b506001919050565b61100881565b600b81565b60005460ff166119dc576040805162461bcd60e51b81526020600482015260196024820152600080516020615ce9833981519152604482015290519081900360640190fd5b3361300014611a1c5760405162461bcd60e51b815260040180806020018281038252602b815260200180615adf602b913960400191505060405180910390fd5b677ce66c50e2840000811115611a635760405162461bcd60e51b8152600401808060200182810382526035815260200180615a186035913960400191505060405180910390fd5b60006221272160e91b8414611bc4576000848152600460205260409020546001600160a01b031680611acd576040805162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a59081cde5b589bdb60921b604482015290519081900360640190fd5b6001600160a01b038116600090815260026020526040902054611af08482613a51565b604080516370a0823160e01b8152306004820152905191945084916001600160a01b038516916370a08231916024808301926020929190829003018186803b158015611b3b57600080fd5b505afa158015611b4f573d6000803e3d6000fd5b505050506040513d6020811015611b6557600080fd5b50511015611bb1576040805162461bcd60e51b8152602060048201526014602482015273696e73756666696369656e742062616c616e636560601b604482015290519081900360640190fd5b611bbd86838588613a91565b5050611c37565b611bd9826402540be40063ffffffff6136fb16565b905080471015611c27576040805162461bcd60e51b8152602060048201526014602482015273696e73756666696369656e742062616c616e636560601b604482015290519081900360640190fd5b6000611c3585828487613a91565b505b50505050565b61200381565b60005460ff16611c88576040805162461bcd60e51b81526020600482015260196024820152600080516020615ce9833981519152604482015290519081900360640190fd5b3361200014611cc85760405162461bcd60e51b815260040180806020018281038252602f815260200180615c97602f913960400191505060405180910390fd5b60ff831660031415611d1857611d1382828080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250613b2992505050565b611d87565b7f41ce201247b6ceb957dcdb217d0b8acb50b9ea0e12af9af4f5e7f38902101605838383604051808460ff1660ff168152602001806020018281038252848482818152602001925080828437600083820152604051601f909101601f1916909201829003965090945050505050a15b505050565b3361300014611dcc5760405162461bcd60e51b815260040180806020018281038252602b815260200180615adf602b913960400191505060405180910390fd5b60006221272160e91b8314611e3757506000828152600460205260409020546001600160a01b031680611e37576040805162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a59081cde5b589bdb60921b604482015290519081900360640190fd5b6001600160a01b0380821660009081526007602090815260408083209386168352929052208054611ea2576040805162461bcd60e51b815260206004820152601060248201526f1b9bc81b1bd8dad95908185b5bdd5b9d60821b604482015290519081900360640190fd5b8054600082556040805182815290516001600160a01b03808716929086169188917f8041a9a8704332594e2884f5e0f942281cdd7611854c365b4d0aa70b2295d6b6919081900360200190a45050505050565b3361100814611f355760405162461bcd60e51b8152600401808060200182810382526023815260200180615cc66023913960400191505060405180910390fd5b600083815260046020908152604080832080546001600160a01b039096166001600160a01b03199096168617905593825260038152838220949094556002909352912055565b603c81565b81806001600160a01b031663893d20e86040518163ffffffff1660e01b815260040160206040518083038186803b158015611fba57600080fd5b505afa158015611fce573d6000803e3d6000fd5b505050506040513d6020811015611fe457600080fd5b50516001600160a01b03163314612042576040805162461bcd60e51b815260206004820152601860248201527f6e6f74206f776e6572206f6620424550323020746f6b656e0000000000000000604482015290519081900360640190fd5b60008211612090576040805162461bcd60e51b81526020600482015260166024820152751e995c9bc81b1a5b5a5d081b9bdd08185b1b1bddd95960521b604482015290519081900360640190fd5b6001600160a01b0383166000908152600360205260409020546120e6576040805162461bcd60e51b81526020600482015260096024820152681b9bdd08189bdd5b9960ba1b604482015290519081900360640190fd5b6001600160a01b038316600081815260066020908152604091829020859055815185815291513393927f9df3a90730dbf23b5cc18dbbd5f4af3fa94a0dffb6ff6841f98a9a9a6ac626a892908290030190a3505050565b600981565b677ce66c50e284000081565b6000805460ff16612194576040805162461bcd60e51b81526020600482015260196024820152600080516020615ce9833981519152604482015290519081900360640190fd5b33611005146121d45760405162461bcd60e51b815260040180806020018281038252602f815260200180615945602f913960400191505060405180910390fd5b60004783106121e357476121e5565b825b9050670de0b6b3a7640000811115612201576000915050612286565b8015612283576040516001600160a01b0385169082156108fc029083906000818181858888f1935050505015801561223d573d6000803e3d6000fd5b50604080516001600160a01b03861681526020810183905281517ff8b71c64315fc33b2ead2adfa487955065152a8ac33d9d5193aafd7f45dc15a0929181900390910190a15b90505b92915050565b61100781565b61100681565b600081565b60005460ff1681565b600381565b6000805460ff166122f1576040805162461bcd60e51b81526020600482015260196024820152600080516020615ce9833981519152604482015290519081900360640190fd5b426078018267ffffffffffffffff16101561233d5760405162461bcd60e51b81526004018080602001828103825260248152602001806159f46024913960400191505060405180910390fd5b6402540be4003406156123815760405162461bcd60e51b8152600401808060200182810382526040815260200180615d5f6040913960400191505060405180910390fd5b600080806001600160a01b038816612460576001546123a790879063ffffffff61365f16565b3410156123e55760405162461bcd60e51b8152600401808060200182810382526061815260200180615a7e6061913960800191505060405180910390fd5b6402540be4008606156124295760405162461bcd60e51b815260040180806020018281038252603c815260200180615b6e603c913960400191505060405180910390fd5b612439348763ffffffff61375416565b9050612450866402540be40063ffffffff6136b916565b6221272160e91b93509150612703565b6001600160a01b0388166000908152600360205260409020549250826124b75760405162461bcd60e51b8152600401808060200182810382526031815260200180615a4d6031913960400191505060405180910390fd5b6001543410156124f85760405162461bcd60e51b815260040180806020018281038252603f815260200180615bcb603f913960400191505060405180910390fd5b506001600160a01b038716600090815260026020526040902054349060088111158061254357506008811180156125435750612541876007198301600a0a63ffffffff613b8516565b155b61257e5760405162461bcd60e51b815260040180806020018281038252603c815260200180615b6e603c913960400191505060405180910390fd5b6125888782613bc7565b925061259384613c00565b156125db576305f5e1008310156125db5760405162461bcd60e51b815260040180806020018281038252603a815260200180615996603a913960400191505060405180910390fd5b6008811015806125f557506008811080156125f557508683115b6126305760405162461bcd60e51b8152600401808060200182810382526025815260200180615b0a6025913960400191505060405180910390fd5b677ce66c50e28400008311156126775760405162461bcd60e51b8152600401808060200182810382526035815260200180615a186035913960400191505060405180910390fd5b604080516323b872dd60e01b81523360048201523060248201526044810189905290516001600160a01b038b16916323b872dd9160648083019260209291908290030181600087803b1580156126cc57600080fd5b505af11580156126e0573d6000803e3d6000fd5b505050506040513d60208110156126f657600080fd5b505161270157600080fd5b505b61270b6157f8565b6040805160c0810182528581526001600160a01b038b166020820152815160018082528184018452919283019181602001602082028036833750505081526040805160018082528183019092526020928301929091908083019080368337505050815260408051600180825281830190925260209283019290919080830190803683370190505081526020018767ffffffffffffffff1681525090508281604001516000815181106127b957fe5b6020026020010181815250508781606001516000815181106127d757fe5b60200260200101906001600160a01b031690816001600160a01b03168152505033816080015160008151811061280957fe5b6001600160a01b039092166020928302919091019091015261200063f7a251d7600361283484613796565b612849866402540be40063ffffffff6136b916565b6040518463ffffffff1660e01b8152600401808460ff1660ff16815260200180602001838152602001828103825284818151815260200191508051906020019080838360005b838110156128a757818101518382015260200161288f565b50505050905090810190601f1680156128d45780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b1580156128f557600080fd5b505af1158015612909573d6000803e3d6000fd5b5050604080516001600160a01b038d1681523360208201528082018b90526060810186905290517f74eab09b0e53aefc23f2e1b16da593f95c2dd49c6f5a23720463d10d9c330b2a9350908190036080019150a150600198975050505050505050565b61200281565b61300081565b33611007146129b85760405162461bcd60e51b815260040180806020018281038252602e815260200180615c0a602e913960400191505060405180910390fd5b60208114612a0d576040805162461bcd60e51b815260206004820152601b60248201527f65787065637465642076616c7565206c656e6774682069732033320000000000604482015290519081900360640190fd5b606084848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8801819004810282018101909252868152939450606093925086915085908190840183828082843760009201919091525050505060208301519091506772656c617946656560c01b811415612b15576020820151670de0b6b3a76400008111801590612abc57506402540be4008106155b612b0d576040805162461bcd60e51b815260206004820152601960248201527f7468652072656c6179466565206f7574206f662072616e676500000000000000604482015290519081900360640190fd5b600155612d8b565b612b8987878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601781527f6c617267655472616e736665724c6f636b506572696f6400000000000000000060208201529150613d069050565b15612c2557604080516020601f8701819004810282018101909252858152600091612bcc91888880838501838280828437600092019190915250613ded92505050565b905062093a80811115612c1d576040805162461bcd60e51b81526020600482015260146024820152736c6f636b20706572696f6420746f6f206c6f6e6760601b604482015290519081900360640190fd5b600555612d8b565b612c9187878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080518082019091526015815274189b9893185c99d9551c985b9cd9995c931a5b5a5d605a1b60208201529150613d069050565b15612d4e57604080516020601f8701819004810282018101909252858152600091612cd491888880838501838280828437600092019190915250613ded92505050565b905068056bc75e2d63100000811015612d1e5760405162461bcd60e51b81526004018080602001828103825260228152602001806159746022913960400191505060405180910390fd5b6000805260066020527f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f855612d8b565b6040805162461bcd60e51b815260206004820152600d60248201526c756e6b6e6f776e20706172616d60981b604482015290519081900360640190fd5b7f6cdb0ac70ab7f2e2d035cca5be60d89906f2dede7648ddbd7402189c1eeed17a878787876040518080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600083820152604051601f909101601f19169092018290039850909650505050505050a150505050505050565b3361100814612e605760405162461bcd60e51b8152600401808060200182810382526023815260200180615cc66023913960400191505060405180910390fd5b600091825260046020908152604080842080546001600160a01b03191690556001600160a01b039290921683526003815281832083905560029052812055565b6221272160e91b81565b61c35081565b60026020526000908152604090205481565b6001600160a01b031660009081526003602052604090205490565b61100281565b60005460ff16612f28576040805162461bcd60e51b81526020600482015260196024820152600080516020615ce9833981519152604482015290519081900360640190fd5b3361200014612f685760405162461bcd60e51b815260040180806020018281038252602f815260200180615c97602f913960400191505060405180910390fd5b60ff831660031415611d1857611d1382828080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250613df292505050565b60085460ff1660021415612fff576040805162461bcd60e51b815260206004820152600e60248201526d4e6f2072652d656e7472616e637960901b604482015290519081900360640190fd5b6008805460ff191660021790556001600160a01b0380831660009081526007602090815260408083209385168352929052208054613077576040805162461bcd60e51b815260206004820152601060248201526f1b9bc81b1bd8dad95908185b5bdd5b9d60821b604482015290519081900360640190fd5b80600101544210156130d0576040805162461bcd60e51b815260206004820152601760248201527f7374696c6c206f6e206c6f636b696e6720706572696f64000000000000000000604482015290519081900360640190fd5b805460008083556001600160a01b038516613143576040516001600160a01b038516906127109084906000818181858888f193505050503d8060008114613133576040519150601f19603f3d011682016040523d82523d6000602084013e613138565b606091505b5050809150506131d6565b846001600160a01b031663a9059cbb61c35086856040518463ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600088803b1580156131a657600080fd5b5087f11580156131ba573d6000803e3d6000fd5b50505050506040513d60208110156131d157600080fd5b505190505b80613228576040805162461bcd60e51b815260206004820152601e60248201527f776974686472617720756e6c6f636b656420746f6b656e206661696c65640000604482015290519081900360640190fd5b836001600160a01b0316856001600160a01b03167f832fc3e25f2b3e6fb0eb59419a73cba405f2a249fce75f7e31ea5a457a0323f1846040518082815260200191505060405180910390a350506008805460ff19166001179055505050565b61100381565b61200481565b600033612002146132eb576040805162461bcd60e51b815260206004820152601f60248201527f746865206d73672073656e646572206d757374206265207374616b6548756200604482015290519081900360640190fd5b81471061332b576040516120029083156108fc029084906000818181858888f19350505050158015613321573d6000803e3d6000fd5b50600190506113b2565b506000919050565b60005460ff161561338b576040805162461bcd60e51b815260206004820152601960248201527f74686520636f6e747261637420616c726561647920696e697400000000000000604482015290519081900360640190fd5b66071afd498d000060019081556000808052600260205260127fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b55805460ff19169091179055565b60066020526000908152604090205481565b600481565b600581565b601181565b61100081565b61271081565b69021e19e0c9bab240000081565b6001600160a01b03811660009081526003602090815260409182902054825182815280840190935260609290918391906020820181803683375050506020810183905290506000805b60208160ff16101561349e57828160ff168151811061347257fe5b01602001516001600160f81b0319161561349157816001019150613496565b61349e565b600101613457565b5060608160ff166040519080825280601f01601f1916602001820160405280156134cf576020820181803683370190505b50905060005b8260ff168160ff16101561352b57838160ff16815181106134f257fe5b602001015160f81c60f81b828260ff168151811061350c57fe5b60200101906001600160f81b031916908160001a9053506001016134d5565b5095945050505050565b61100481565b6060613545615844565b600061355084613ee9565b91509150806135a6576040805162461bcd60e51b815260206004820152601f60248201527f756e7265636f676e697a6564207472616e73666572496e207061636b61676500604482015290519081900360640190fd5b60006135b183614028565b905063ffffffff811615613645576040808401516020808601516001600160a01b031660009081526002909152918220546135ec9190613bc7565b90506135f6615879565b60405180608001604052808660000151815260200183815260200186608001516001600160a01b031681526020018463ffffffff1681525090506136398161438e565b955050505050506113b2565b505060408051600081526020810190915291506113b29050565b600082820183811015612283576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600061228383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061446a565b60008261370a57506000612286565b8282028284828161371757fe5b04146122835760405162461bcd60e51b8152600401808060200182810382526021815260200180615baa6021913960400191505060405180910390fd5b600061228383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061450c565b60408051600680825260e08201909252606091829190816020015b60608152602001906001900390816137b157505083519091506137d390614566565b816000815181106137e057fe5b602002602001018190525061380183602001516001600160a01b0316614579565b8160018151811061380e57fe5b60200260200101819052506000836040015151905060608160405190808252806020026020018201604052801561385957816020015b60608152602001906001900390816138445790505b50905060005b828110156138a6576138878660400151828151811061387a57fe5b6020026020010151614566565b82828151811061389357fe5b602090810291909101015260010161385f565b506138b08161459c565b836002815181106138bd57fe5b60200260200101819052506060826040519080825280602002602001820160405280156138fe57816020015b60608152602001906001900390816138e95790505b50905060005b83811015613954576139358760600151828151811061391f57fe5b60200260200101516001600160a01b0316614579565b82828151811061394157fe5b6020908102919091010152600101613904565b5061395e8161459c565b8460038151811061396b57fe5b60200260200101819052506060836040519080825280602002602001820160405280156139ac57816020015b60608152602001906001900390816139975790505b50905060005b848110156139ec576139cd8860800151828151811061391f57fe5b8282815181106139d957fe5b60209081029190910101526001016139b2565b506139f68161459c565b85600481518110613a0357fe5b6020026020010181905250613a258760a0015167ffffffffffffffff16614566565b85600581518110613a3257fe5b6020026020010181905250613a468561459c565b979650505050505050565b60006008821115613a7a57613a73836007198401600a0a63ffffffff6136fb16565b9050612286565b612283836008849003600a0a63ffffffff6136b916565b6001600160a01b0380841660009081526007602090815260408083209385168352929052208054613ac8908463ffffffff61365f16565b815542603c016001820181905560408051858152602081019290925280516001600160a01b03808616939088169289927f446d1aa056e7b903901f49880e9f252762c1b81dc4301cf28db6dae526497eaa9281900390910190a45050505050565b613b316158a0565b6000613b3c83614626565b9150915080613b7c5760405162461bcd60e51b8152600401808060200182810382526024815260200180615c386024913960400191505060405180910390fd5b611d87826147f1565b600061228383836040518060400160405280601881526020017f536166654d6174683a206d6f64756c6f206279207a65726f0000000000000000815250614c75565b60006008821115613be957613a73836007198401600a0a63ffffffff6136b916565b612283836008849003600a0a63ffffffff6136fb16565b604080516020808252818301909252600091606091906020820181803683375050506020810184905290506000805b60208160ff161015613c7657828160ff1681518110613c4a57fe5b01602001516001600160f81b03191615613c6957816001019150613c6e565b613c76565b600101613c2f565b50600760ff82161015613c8e576000925050506113b2565b816005820360ff1681518110613ca057fe5b6020910101516001600160f81b031916602d60f81b14613cc5576000925050506113b2565b816001820360ff1681518110613cd757fe5b6020910101516001600160f81b031916604d60f81b14613cfc576000925050506113b2565b5060019392505050565b6000816040516020018082805190602001908083835b60208310613d3b5780518252601f199092019160209182019101613d1c565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405280519060200120836040516020018082805190602001908083835b60208310613da95780518252601f199092019160209182019101613d8a565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040528051906020012014905092915050565b015190565b613dfa6157f8565b6000613e0583614cd7565b9150915080613e455760405162461bcd60e51b81526004018080602001828103825260248152602001806159d06024913960400191505060405180910390fd5b613e4d6158a0565b602080840180516001600160a01b0390811684526040808701518585015291511660009081526002909252812054905b846040015151811015613ece57613eab85604001518281518110613e9d57fe5b602002602001015183613a51565b85604001518281518110613ebb57fe5b6020908102919091010152600101613e7d565b506080840151604083015260056060830152611c35826147f1565b613ef1615844565b6000613efb615844565b613f036158d7565b613f14613f0f86614f3b565b614f60565b90506000805b613f2383614faa565b1561401b5780613f4557613f3e613f3984614fcb565b615019565b8452614013565b8060011415613f7257613f5f613f5a84614fcb565b6150d0565b6001600160a01b03166020850152614013565b8060021415613f9157613f87613f3984614fcb565b6040850152614013565b8060031415613fb957613fa6613f5a84614fcb565b6001600160a01b03166060850152614013565b8060041415613fe157613fce613f5a84614fcb565b6001600160a01b03166080850152614013565b806005141561400e57613ff6613f3984614fcb565b67ffffffffffffffff1660a085015260019150614013565b61401b565b600101613f1a565b5091935090915050915091565b60208101516000906001600160a01b031661416c578160a0015167ffffffffffffffff1642111561405b575060016113b2565b816040015147101561406f575060036113b2565b614078826150ea565b6140ed57606082015160408084015190516000926001600160a01b0316916127109184818181858888f193505050503d80600081146140d3576040519150601f19603f3d011682016040523d82523d6000602084013e6140d8565b606091505b50509050806140eb5750600490506113b2565b505b7f471eb9cc1ffe55ffadf15b32595415eb9d80f22e761d24bd6dffc607e1284d5982602001518360600151846040015160405180846001600160a01b03166001600160a01b03168152602001836001600160a01b03166001600160a01b03168152602001828152602001935050505060405180910390a15060006113b2565b8160a0015167ffffffffffffffff1642111561418a575060016113b2565b81516020808401516001600160a01b0316600090815260039091526040902054146141b7575060026113b2565b602080830151604080516370a0823160e01b815230600482015290516000936001600160a01b03909316926370a082319261c3509260248083019392829003018187803b15801561420757600080fd5b5086fa15801561421b573d6000803e3d6000fd5b50505050506040513d602081101561423257600080fd5b5051604084015190915081101561424d5750600390506113b2565b614256836150ea565b61430d57600083602001516001600160a01b031663a9059cbb61c350866060015187604001516040518463ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600088803b1580156142cb57600080fd5b5087f11580156142df573d6000803e3d6000fd5b50505050506040513d60208110156142f657600080fd5b505190508061430b5750600591506113b29050565b505b7f471eb9cc1ffe55ffadf15b32595415eb9d80f22e761d24bd6dffc607e1284d5983602001518460600151856040015160405180846001600160a01b03166001600160a01b03168152602001836001600160a01b03166001600160a01b03168152602001828152602001935050505060405180910390a150600090506113b2565b60408051600480825260a08201909252606091829190816020015b60608152602001906001900390816143a957505083519091506143cb90614566565b816000815181106143d857fe5b60200260200101819052506143f08360200151614566565b816001815181106143fd57fe5b602002602001018190525061441e83604001516001600160a01b0316614579565b8160028151811061442b57fe5b6020026020010181905250614449836060015163ffffffff16614566565b8160038151811061445657fe5b60200260200101819052506112628161459c565b600081836144f65760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156144bb5781810151838201526020016144a3565b50505050905090810190601f1680156144e85780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161450257fe5b0495945050505050565b6000818484111561455e5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156144bb5781810151838201526020016144a3565b505050900390565b606061228661457483615258565b61533e565b60408051600560a21b83186014820152603481019091526060906112628161533e565b60608151600014156145bd57506040805160008152602081019091526113b2565b6060826000815181106145cc57fe5b602002602001015190506000600190505b835181101561460d57614603828583815181106145f657fe5b6020026020010151615390565b91506001016145dd565b50611262614620825160c060ff1661540d565b82615390565b61462e6158a0565b60006146386158a0565b6146406158d7565b61464c613f0f86614f3b565b90506000805b61465b83614faa565b1561401b578061468157614671613f5a84614fcb565b6001600160a01b031684526147e9565b806001141561472257606061469d61469885614fcb565b615505565b905080516040519080825280602002602001820160405280156146ca578160200160208202803683370190505b50602086015260005b815181101561471b576146f88282815181106146eb57fe5b6020026020010151615019565b8660200151828151811061470857fe5b60209081029190910101526001016146d3565b50506147e9565b80600214156147c457606061473961469885614fcb565b90508051604051908082528060200260200182016040528015614766578160200160208202803683370190505b50604086015260005b815181101561471b5761479482828151811061478757fe5b60200260200101516150d0565b866040015182815181106147a457fe5b6001600160a01b039092166020928302919091019091015260010161476f565b806003141561400e576147d9613f3984614fcb565b63ffffffff166060850152600191505b600101614652565b80516001600160a01b0316614a1b5760005b816020015151811015614a155760008260400151828151811061482257fe5b60200260200101516001600160a01b03166127108460200151848151811061484657fe5b60209081029190910101516040516000818181858888f193505050503d806000811461488e576040519150601f19603f3d011682016040523d82523d6000602084013e614893565b606091505b5050905080614956577f203f9f67a785f4f81be4d48b109aa0c498d1bc8097ecc2627063f480cc5fe73e8360000151846040015184815181106148d257fe5b6020026020010151856020015185815181106148ea57fe5b6020026020010151866060015160405180856001600160a01b03166001600160a01b03168152602001846001600160a01b03166001600160a01b031681526020018381526020018263ffffffff1663ffffffff16815260200194505050505060405180910390a1614a0c565b7fd468d4fa5e8fb4adc119b29a983fd0785e04af5cb8b7a3a69a47270c54b6901a83600001518460400151848151811061498c57fe5b6020026020010151856020015185815181106149a457fe5b6020026020010151866060015160405180856001600160a01b03166001600160a01b03168152602001846001600160a01b03166001600160a01b031681526020018381526020018263ffffffff1663ffffffff16815260200194505050505060405180910390a15b50600101614803565b50614c72565b60005b816020015151811015614c7057600082600001516001600160a01b031663a9059cbb61c35085604001518581518110614a5357fe5b602002602001015186602001518681518110614a6b57fe5b60200260200101516040518463ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600088803b158015614ac257600080fd5b5087f1158015614ad6573d6000803e3d6000fd5b50505050506040513d6020811015614aed57600080fd5b505190508015614bb1577fd468d4fa5e8fb4adc119b29a983fd0785e04af5cb8b7a3a69a47270c54b6901a836000015184604001518481518110614b2d57fe5b602002602001015185602001518581518110614b4557fe5b6020026020010151866060015160405180856001600160a01b03166001600160a01b03168152602001846001600160a01b03166001600160a01b031681526020018381526020018263ffffffff1663ffffffff16815260200194505050505060405180910390a1614c67565b7f203f9f67a785f4f81be4d48b109aa0c498d1bc8097ecc2627063f480cc5fe73e836000015184604001518481518110614be757fe5b602002602001015185602001518581518110614bff57fe5b6020026020010151866060015160405180856001600160a01b03166001600160a01b03168152602001846001600160a01b03166001600160a01b031681526020018381526020018263ffffffff1663ffffffff16815260200194505050505060405180910390a15b50600101614a1e565b505b50565b60008183614cc45760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156144bb5781810151838201526020016144a3565b50828481614cce57fe5b06949350505050565b614cdf6157f8565b6000614ce96157f8565b614cf16158d7565b614cfd613f0f86614f3b565b90506000805b614d0c83614faa565b1561401b5780614d2957614d22613f3984614fcb565b8452614f33565b8060011415614d5157614d3e613f5a84614fcb565b6001600160a01b03166020850152614f33565b8060021415614de0576060614d6861469885614fcb565b90508051604051908082528060200260200182016040528015614d95578160200160208202803683370190505b50604086015260005b8151811015614dd957614db68282815181106146eb57fe5b86604001518281518110614dc657fe5b6020908102919091010152600101614d9e565b5050614f33565b8060031415614e75576060614df761469885614fcb565b90508051604051908082528060200260200182016040528015614e24578160200160208202803683370190505b50606086015260005b8151811015614dd957614e4582828151811061478757fe5b86606001518281518110614e5557fe5b6001600160a01b0390921660209283029190910190910152600101614e2d565b8060041415614f0a576060614e8c61469885614fcb565b90508051604051908082528060200260200182016040528015614eb9578160200160208202803683370190505b50608086015260005b8151811015614dd957614eda82828151811061478757fe5b86608001518281518110614eea57fe5b6001600160a01b0390921660209283029190910190910152600101614ec2565b806005141561400e57614f1f613f3984614fcb565b67ffffffffffffffff1660a0850152600191505b600101614d03565b614f436158f7565b506040805180820190915281518152602082810190820152919050565b614f686158d7565b614f71826155d6565b614f7a57600080fd5b6000614f898360200151615606565b60208085015160408051808201909152868152920190820152915050919050565b6000614fb46158f7565b505080518051602091820151919092015191011190565b614fd36158f7565b614fdc82614faa565b614fe557600080fd5b60208201516000614ff582615669565b80830160209586015260408051808201909152908152938401919091525090919050565b80516000901580159061502e57508151602110155b61503757600080fd5b60006150468360200151615606565b905080836000015110156150a1576040805162461bcd60e51b815260206004820152601a60248201527f6c656e677468206973206c657373207468616e206f6666736574000000000000604482015290519081900360640190fd5b8251602080850151830180519284900392918310156150c757826020036101000a820491505b50949350505050565b80516000906015146150e157600080fd5b61228682615019565b600080805260066020527f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f8541580156151235750600554155b156151655760008052600660205269021e19e0c9bab24000007f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f85561a8c06005555b6020808301516001600160a01b03166000908152600690915260409020548015806151935750808360400151105b156151a25760009150506113b2565b6020808401516001600160a01b0390811660009081526007835260408082206060880151909316825291909252908190209084015181546151e89163ffffffff61365f16565b8155600554420160018201819055606085015160208087015160408089015181519081529283019490945283516001600160a01b039384169493909116927f3fb83143cd331170da18fb1e8564d97e8ec39264b6ecb1ba248ea7596ab07258928290030190a35060019392505050565b604080516020808252818301909252606091829190602082018180368337505050602081018490529050600067ffffffffffffffff19841661529c575060186152c0565b6fffffffffffffffffffffffffffffffff1984166152bc575060106152c0565b5060005b60208110156152f6578181815181106152d557fe5b01602001516001600160f81b031916156152ee576152f6565b6001016152c0565b60008160200390506060816040519080825280601f01601f19166020018201604052801561532b576020820181803683370190505b5080830196909652508452509192915050565b6060815160011480156153705750607f60f81b8260008151811061535e57fe5b01602001516001600160f81b03191611155b1561537c5750806113b2565b61228661538e8351608060ff1661540d565b835b6060806040519050835180825260208201818101602087015b818310156153c15780518352602092830192016153a9565b50855184518101855292509050808201602086015b818310156153ee5780518352602092830192016153d6565b508651929092011591909101601f01601f191660405250905092915050565b606068010000000000000000831061545d576040805162461bcd60e51b815260206004820152600e60248201526d696e70757420746f6f206c6f6e6760901b604482015290519081900360640190fd5b604080516001808252818301909252606091602082018180368337019050509050603784116154b75782840160f81b8160008151811061549957fe5b60200101906001600160f81b031916908160001a9053509050612286565b60606154c285615258565b90508381510160370160f81b826000815181106154db57fe5b60200101906001600160f81b031916908160001a9053506154fc8282615390565b95945050505050565b6060615510826155d6565b61551957600080fd5b60006155248361579c565b905060608160405190808252806020026020018201604052801561556257816020015b61554f6158f7565b8152602001906001900390816155475790505b50905060006155748560200151615606565b60208601510190506000805b848110156155cb5761559183615669565b91506040518060400160405280838152602001848152508482815181106155b457fe5b602090810291909101015291810191600101615580565b509195945050505050565b80516000906155e7575060006113b2565b6020820151805160001a9060c0821015613cfc576000925050506113b2565b8051600090811a60808110156156205760009150506113b2565b60b881108061563b575060c0811080159061563b575060f881105b1561564a5760019150506113b2565b60c081101561565e5760b5190190506113b2565b60f5190190506113b2565b80516000908190811a60808110156156845760019150615795565b60b881101561569957607e1981019150615795565b60c081101561571357600060b78203600186019550806020036101000a86510491506001810182019350508083101561570d576040805162461bcd60e51b81526020600482015260116024820152706164646974696f6e206f766572666c6f7760781b604482015290519081900360640190fd5b50615795565b60f88110156157285760be1981019150615795565b600060f78203600186019550806020036101000a865104915060018101820193505080831015615793576040805162461bcd60e51b81526020600482015260116024820152706164646974696f6e206f766572666c6f7760781b604482015290519081900360640190fd5b505b5092915050565b80516000906157ad575060006113b2565b600080905060006157c18460200151615606565b602085015185519181019250015b808210156157ef576157e082615669565b820191508260010192506157cf565b50909392505050565b6040518060c001604052806000801916815260200160006001600160a01b03168152602001606081526020016060815260200160608152602001600067ffffffffffffffff1681525090565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a081019190915290565b60408051608081018252600080825260208201819052918101829052606081019190915290565b604051806080016040528060006001600160a01b031681526020016060815260200160608152602001600063ffffffff1681525090565b60405180604001604052806158ea6158f7565b8152602001600081525090565b60405180604001604052806000815260200160008152509056fe6f6e6c79207374616b696e672073797374656d20636f6e74726163742063616e2063616c6c20746869732066756e6374696f6e746865206d6573736167652073656e646572206d75737420626520696e63656e746976697a6520636f6e7472616374626e62206c61726765207472616e73666572206c696d697420746f6f20736d616c6c466f72206d696e69546f6b656e2c20746865207472616e7366657220616d6f756e74206d757374206e6f74206265206c657373207468616e2031756e7265636f676e697a6564207472616e736665724f75742073796e207061636b61676565787069726554696d65206d7573742062652074776f206d696e75746573206c61746572616d6f756e7420697320746f6f206c617267652c20657863656564206d6178696d756d206265703220746f6b656e20616d6f756e7474686520636f6e747261637420686173206e6f74206265656e20626f756e6420746f20616e79206265703220746f6b656e726563656976656420424e4220616d6f756e742073686f756c64206265206e6f206c657373207468616e207468652073756d206f66207472616e736665724f757420424e4220616d6f756e7420616e64206d696e696d756d2072656c6179466565746865206d73672073656e646572206d75737420626520746f6b656e207265636f76657220706f7274616c616d6f756e7420697320746f6f206c617267652c2075696e74323536206f766572666c6f774c656e677468206f6620726563697069656e74416464727320646f65736e277420657175616c20746f206c656e677468206f6620726566756e644164647273696e76616c6964207472616e7366657220616d6f756e743a20707265636973696f6e206c6f737320696e20616d6f756e7420636f6e76657273696f6e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77726563656976656420424e4220616d6f756e742073686f756c64206265206e6f206c657373207468616e20746865206d696e696d756d2072656c6179466565746865206d6573736167652073656e646572206d75737420626520676f7665726e616e636520636f6e7472616374756e7265636f676e697a6564207472616e736665724f75742061636b207061636b6167654c656e677468206f6620726563697069656e74416464727320646f65736e277420657175616c20746f206c656e677468206f6620616d6f756e7473746865206d6573736167652073656e646572206d7573742062652063726f737320636861696e20636f6e7472616374746865206d73672073656e646572206d75737420626520746f6b656e4d616e6167657274686520636f6e7472616374206e6f7420696e69742079657400000000000000726563656976656420424e4220616d6f756e742073686f756c64206265206e6f206c657373207468616e207468652073756d206f66207472616e7366657220424e4220616d6f756e7420616e642072656c6179466565696e76616c696420726563656976656420424e4220616d6f756e743a20707265636973696f6e206c6f737320696e20616d6f756e7420636f6e76657273696f6ea164736f6c6343000604000a", + Code: "6080604052600436106104405760003560e01c80639509b98011610234578063c81b16621161012e578063ebf71d53116100b6578063fb063e8f1161007a578063fb063e8f146110d3578063fc1a598f146110e8578063fc3e590814610cca578063fd6a68791461111b578063ff9c0027146108a057610488565b8063ebf71d531461106a578063f01484721461107f578063f1fad10414611094578063f9a2bbc7146110a9578063fa9e9159146110be57610488565b8063dc927faf116100fd578063dc927faf14610fce578063df8079e914610fe3578063e04c83a714610ff8578063e1c7392a14611022578063e8f35cea1461103757610488565b8063c81b166214610ef9578063c8509d8114610f0e578063cf41984414610f93578063d9e6dae91461080d57610488565b8063aa7415f5116101bc578063b99328c511610180578063b99328c514610e30578063b9fd21e314610e69578063ba35ead614610e7e578063bbface1f14610e93578063bd46646114610ec657610488565b8063aa7415f514610cdf578063aa82dce114610d26578063aad5606314610d3b578063ab51bb9614610d50578063ac43175114610d6557610488565b80639dc09262116102035780639dc0926214610c76578063a1a11bf514610c8b578063a496fba214610ca0578063a78abc1614610cb5578063a7c9f02d14610cca57610488565b80639509b98014610bda57806396713da914610c135780639a854bbd14610c285780639a99b4f014610c3d57610488565b806359b9278911610345578063727be1f8116102cd578063831d65d111610291578063831d65d114610ac85780638525db0314610b4d5780638b87b21f146107625780638eff336c14610b8657806393ab703f14610bc557610488565b8063727be1f814610a2057806375d47a0a14610a4a5780637942fd0514610a5f578063799758b914610a745780637e434d5414610ab357610488565b80636e056520116103145780636e056520146108b55780636e47b482146109e157806370fd5bad146108a0578063718a8aa8146109f657806371d3086314610a0b57610488565b806359b92789146108615780635d499b1b1461088b578063613684751461080d57806366dea52a146108a057610488565b80633fd8b02f116103c85780634a3acdf4116103975780634a3acdf4146107f85780634bf6c8821461080d57806350432d321461082257806351b4dce31461083757806351e806721461084c57610488565b80633fd8b02f1461078d57806343756e5c146107a257806343a368b9146107b7578063493279b1146107cc57610488565b8063149d14d91161040f578063149d14d91461062157806328087028146106485780632ae454831461065d5780633d713223146106b15780633dffc3871461076257610488565b80630bee7a671461048d5780630e2374a5146104bb5780631182b875146104ec57806312234582146105e657610488565b36610488573415610486576040805133815234602082015281517f6c98249d85d88c3753a04a22230f595e4dc8d3dc86c34af35deeeedc861b89db929181900390910190a15b005b600080fd5b34801561049957600080fd5b506104a2611130565b6040805163ffffffff9092168252519081900360200190f35b3480156104c757600080fd5b506104d0611135565b604080516001600160a01b039092168252519081900360200190f35b3480156104f857600080fd5b506105716004803603604081101561050f57600080fd5b60ff8235169190810190604081016020820135600160201b81111561053357600080fd5b82018360208201111561054557600080fd5b803590602001918460018302840111600160201b8311171561056657600080fd5b50909250905061113b565b6040805160208082528351818301528351919283929083019185019080838360005b838110156105ab578181015183820152602001610593565b50505050905090810190601f1680156105d85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156105f257600080fd5b506104866004803603604081101561060957600080fd5b506001600160a01b0381358116916020013516611269565b34801561062d57600080fd5b50610636611363565b60408051918252519081900360200190f35b34801561065457600080fd5b506104d0611369565b34801561066957600080fd5b506106986004803603604081101561068057600080fd5b506001600160a01b038135811691602001351661136f565b6040805192835260208301919091528051918290030190f35b3480156106bd57600080fd5b506104d0600480360360208110156106d457600080fd5b810190602081018135600160201b8111156106ee57600080fd5b82018360208201111561070057600080fd5b803590602001918460018302840111600160201b8311171561072157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611393945050505050565b34801561076e57600080fd5b506107776113b7565b6040805160ff9092168252519081900360200190f35b34801561079957600080fd5b506106366113bc565b3480156107ae57600080fd5b506104d06113c2565b3480156107c357600080fd5b506106366113c8565b3480156107d857600080fd5b506107e16113d4565b6040805161ffff9092168252519081900360200190f35b34801561080457600080fd5b506106366113da565b34801561081957600080fd5b506107776113e0565b34801561082e57600080fd5b506106366113e5565b34801561084357600080fd5b506104d06113f0565b34801561085857600080fd5b506104d06113f6565b34801561086d57600080fd5b506104d06004803603602081101561088457600080fd5b50356113fc565b34801561089757600080fd5b50610636611417565b3480156108ac57600080fd5b50610777611420565b6109cd600480360360808110156108cb57600080fd5b810190602081018135600160201b8111156108e557600080fd5b8201836020820111156108f757600080fd5b803590602001918460208302840111600160201b8311171561091857600080fd5b919390929091602081019035600160201b81111561093557600080fd5b82018360208201111561094757600080fd5b803590602001918460208302840111600160201b8311171561096857600080fd5b919390929091602081019035600160201b81111561098557600080fd5b82018360208201111561099757600080fd5b803590602001918460208302840111600160201b831117156109b857600080fd5b91935091503567ffffffffffffffff16611425565b604080519115158252519081900360200190f35b3480156109ed57600080fd5b506104d06118fa565b348015610a0257600080fd5b50610777611900565b348015610a1757600080fd5b50610636611905565b348015610a2c57600080fd5b506109cd60048036036020811015610a4357600080fd5b503561190b565b348015610a5657600080fd5b506104d061198c565b348015610a6b57600080fd5b50610777611992565b348015610a8057600080fd5b5061048660048036036060811015610a9757600080fd5b508035906001600160a01b036020820135169060400135611997565b348015610abf57600080fd5b506104d0611c3d565b348015610ad457600080fd5b5061048660048036036040811015610aeb57600080fd5b60ff8235169190810190604081016020820135600160201b811115610b0f57600080fd5b820183602082011115610b2157600080fd5b803590602001918460018302840111600160201b83111715610b4257600080fd5b509092509050611c43565b348015610b5957600080fd5b5061048660048036036040811015610b7057600080fd5b50803590602001356001600160a01b0316611d8c565b348015610b9257600080fd5b5061048660048036036060811015610ba957600080fd5b508035906001600160a01b036020820135169060400135611ef5565b348015610bd157600080fd5b50610636611f7b565b348015610be657600080fd5b5061048660048036036040811015610bfd57600080fd5b506001600160a01b038135169060200135611f80565b348015610c1f57600080fd5b5061077761213d565b348015610c3457600080fd5b50610636612142565b348015610c4957600080fd5b5061063660048036036040811015610c6057600080fd5b506001600160a01b03813516906020013561214e565b348015610c8257600080fd5b506104d061228c565b348015610c9757600080fd5b506104d0612292565b348015610cac57600080fd5b50610777612298565b348015610cc157600080fd5b506109cd61229d565b348015610cd657600080fd5b506107776122a6565b6109cd60048036036080811015610cf557600080fd5b5080356001600160a01b03908116916020810135909116906040810135906060013567ffffffffffffffff166122ab565b348015610d3257600080fd5b506104d061232b565b348015610d4757600080fd5b506104d0612331565b348015610d5c57600080fd5b506104a2612298565b348015610d7157600080fd5b5061048660048036036040811015610d8857600080fd5b810190602081018135600160201b811115610da257600080fd5b820183602082011115610db457600080fd5b803590602001918460018302840111600160201b83111715610dd557600080fd5b919390929091602081019035600160201b811115610df257600080fd5b820183602082011115610e0457600080fd5b803590602001918460018302840111600160201b83111715610e2557600080fd5b509092509050612337565b348015610e3c57600080fd5b5061048660048036036040811015610e5357600080fd5b50803590602001356001600160a01b03166127df565b348015610e7557600080fd5b5061063661285f565b348015610e8a57600080fd5b50610636612869565b348015610e9f57600080fd5b5061063660048036036020811015610eb657600080fd5b50356001600160a01b031661286f565b348015610ed257600080fd5b5061063660048036036020811015610ee957600080fd5b50356001600160a01b0316612881565b348015610f0557600080fd5b506104d061289c565b348015610f1a57600080fd5b5061048660048036036040811015610f3157600080fd5b60ff8235169190810190604081016020820135600160201b811115610f5557600080fd5b820183602082011115610f6757600080fd5b803590602001918460018302840111600160201b83111715610f8857600080fd5b5090925090506128a2565b348015610f9f57600080fd5b5061048660048036036040811015610fb657600080fd5b506001600160a01b0381358116916020013516612972565b348015610fda57600080fd5b506104d0612c46565b348015610fef57600080fd5b506104d0612c4c565b34801561100457600080fd5b506109cd6004803603602081101561101b57600080fd5b5035612c52565b34801561102e57600080fd5b50610486612cf2565b34801561104357600080fd5b506106366004803603602081101561105a57600080fd5b50356001600160a01b0316612d92565b34801561107657600080fd5b50610777612da4565b34801561108b57600080fd5b50610777612da9565b3480156110a057600080fd5b50610777612dae565b3480156110b557600080fd5b506104d0612db3565b3480156110ca57600080fd5b50610636612db9565b3480156110df57600080fd5b50610636612dbf565b3480156110f457600080fd5b506105716004803603602081101561110b57600080fd5b50356001600160a01b0316612dcd565b34801561112757600080fd5b506104d0612ef4565b606481565b61200181565b60005460609060ff16611183576040805162461bcd60e51b815260206004820152601960248201526000805160206153d8833981519152604482015290519081900360640190fd5b33612000146111c35760405162461bcd60e51b815260040180806020018281038252602f815260200180615386602f913960400191505060405180910390fd5b60ff8416600214156112155761120e83838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612efa92505050565b9050611262565b6040805162461bcd60e51b815260206004820152601860248201527f756e7265636f676e697a65642073796e207061636b6167650000000000000000604482015290519081900360640190fd5b9392505050565b33612000146112a95760405162461bcd60e51b815260040180806020018281038252602f815260200180615386602f913960400191505060405180910390fd5b6001600160a01b0380831660009081526007602090815260408083209385168352929052208054611314576040805162461bcd60e51b815260206004820152601060248201526f1b9bc81b1bd8dad95908185b5bdd5b9d60821b604482015290519081900360640190fd5b8054600082556040805182815290516001600160a01b0380861692908716917f152fb15aa5d80f843e1e4bd5f2fc9161714f169945024decec7e84fb910fdd519181900360200190a350505050565b60015490565b61200581565b60076020908152600092835260408084209091529082529020805460019091015482565b6020818101516000908152600490915260409020546001600160a01b03165b919050565b600181565b60055481565b61100181565b670de0b6b3a764000081565b6102ca81565b61a8c081565b600881565b66071afd498d000081565b61200681565b61200081565b6000908152600460205260409020546001600160a01b031690565b6402540be40081565b600281565b6000805460ff1661146b576040805162461bcd60e51b815260206004820152601960248201526000805160206153d8833981519152604482015290519081900360640190fd5b8685146114a95760405162461bcd60e51b815260040180806020018281038252603b81526020018061534b603b913960400191505060405180910390fd5b8683146114e75760405162461bcd60e51b815260040180806020018281038252603f81526020018061525d603f913960400191505060405180910390fd5b426078018267ffffffffffffffff1610156115335760405162461bcd60e51b81526004018080602001828103825260248152602001806151d96024913960400191505060405180910390fd5b6402540be4003406156115775760405162461bcd60e51b815260040180806020018281038252604081526020018061544e6040913960400191505060405180910390fd5b604080518681526020808802820101909152859060009081906060908480156115aa578160200160208202803683370190505b50905060005b84811015611685576402540be4008b8b838181106115ca57fe5b90506020020135816115d857fe5b06156116155760405162461bcd60e51b815260040180806020018281038252603c81526020018061529c603c913960400191505060405180910390fd5b61163a8b8b8381811061162457fe5b905060200201358561301e90919063ffffffff16565b93506116666402540be4008c8c8481811061165157fe5b9050602002013561307890919063ffffffff16565b82828151811061167257fe5b60209081029190910101526001016115b0565b506001546116aa9061169d908663ffffffff6130ba16565b849063ffffffff61301e16565b3410156116e85760405162461bcd60e51b81526004018080602001828103825260568152602001806153f86056913960600191505060405180910390fd5b6116f8348463ffffffff61311316565b9150611702615017565b6040518060c001604052806221272160e91b60001b815260200160006001600160a01b031681526020018381526020018e8e808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152505050908252506040805160208c810282810182019093528c82529283019290918d918d91829185019084908082843760009201919091525050509082525067ffffffffffffffff8916602090910152905061200063f7a251d760036117c684613155565b6117db876402540be40063ffffffff61307816565b6040518463ffffffff1660e01b8152600401808460ff1660ff16815260200180602001838152602001828103825284818151815260200191508051906020019080838360005b83811015611839578181015183820152602001611821565b50505050905090810190601f1680156118665780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b15801561188757600080fd5b505af115801561189b573d6000803e3d6000fd5b505060408051600081523360208201528082018890526060810187905290517f74eab09b0e53aefc23f2e1b16da593f95c2dd49c6f5a23720463d10d9c330b2a9350908190036080019150a15060019c9b505050505050505050505050565b61100581565b601081565b60015481565b6000336120011461194d5760405162461bcd60e51b81526004018080602001828103825260338152602001806151316033913960400191505060405180910390fd5b8115611984576040516120019083156108fc029084906000818181858888f19350505050158015611982573d6000803e3d6000fd5b505b506001919050565b61100881565b600b81565b60005460ff166119dc576040805162461bcd60e51b815260206004820152601960248201526000805160206153d8833981519152604482015290519081900360640190fd5b3361300014611a1c5760405162461bcd60e51b815260040180806020018281038252602b815260200180615232602b913960400191505060405180910390fd5b677ce66c50e2840000811115611a635760405162461bcd60e51b81526004018080602001828103825260358152602001806151fd6035913960400191505060405180910390fd5b60006221272160e91b8414611bc4576000848152600460205260409020546001600160a01b031680611acd576040805162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a59081cde5b589bdb60921b604482015290519081900360640190fd5b6001600160a01b038116600090815260026020526040902054611af08482613410565b604080516370a0823160e01b8152306004820152905191945084916001600160a01b038516916370a08231916024808301926020929190829003018186803b158015611b3b57600080fd5b505afa158015611b4f573d6000803e3d6000fd5b505050506040513d6020811015611b6557600080fd5b50511015611bb1576040805162461bcd60e51b8152602060048201526014602482015273696e73756666696369656e742062616c616e636560601b604482015290519081900360640190fd5b611bbd86838588613450565b5050611c37565b611bd9826402540be40063ffffffff6130ba16565b905080471015611c27576040805162461bcd60e51b8152602060048201526014602482015273696e73756666696369656e742062616c616e636560601b604482015290519081900360640190fd5b6000611c3585828487613450565b505b50505050565b61200381565b60005460ff16611c88576040805162461bcd60e51b815260206004820152601960248201526000805160206153d8833981519152604482015290519081900360640190fd5b3361200014611cc85760405162461bcd60e51b815260040180806020018281038252602f815260200180615386602f913960400191505060405180910390fd5b60ff831660031415611d1857611d1382828080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506134e892505050565b611d87565b7f41ce201247b6ceb957dcdb217d0b8acb50b9ea0e12af9af4f5e7f38902101605838383604051808460ff1660ff168152602001806020018281038252848482818152602001925080828437600083820152604051601f909101601f1916909201829003965090945050505050a15b505050565b3361300014611dcc5760405162461bcd60e51b815260040180806020018281038252602b815260200180615232602b913960400191505060405180910390fd5b60006221272160e91b8314611e3757506000828152600460205260409020546001600160a01b031680611e37576040805162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a59081cde5b589bdb60921b604482015290519081900360640190fd5b6001600160a01b0380821660009081526007602090815260408083209386168352929052208054611ea2576040805162461bcd60e51b815260206004820152601060248201526f1b9bc81b1bd8dad95908185b5bdd5b9d60821b604482015290519081900360640190fd5b8054600082556040805182815290516001600160a01b03808716929086169188917f8041a9a8704332594e2884f5e0f942281cdd7611854c365b4d0aa70b2295d6b6919081900360200190a45050505050565b3361100814611f355760405162461bcd60e51b81526004018080602001828103825260238152602001806153b56023913960400191505060405180910390fd5b600083815260046020908152604080832080546001600160a01b039096166001600160a01b03199096168617905593825260038152838220949094556002909352912055565b603c81565b81806001600160a01b031663893d20e86040518163ffffffff1660e01b815260040160206040518083038186803b158015611fba57600080fd5b505afa158015611fce573d6000803e3d6000fd5b505050506040513d6020811015611fe457600080fd5b50516001600160a01b03163314612042576040805162461bcd60e51b815260206004820152601860248201527f6e6f74206f776e6572206f6620424550323020746f6b656e0000000000000000604482015290519081900360640190fd5b60008211612090576040805162461bcd60e51b81526020600482015260166024820152751e995c9bc81b1a5b5a5d081b9bdd08185b1b1bddd95960521b604482015290519081900360640190fd5b6001600160a01b0383166000908152600360205260409020546120e6576040805162461bcd60e51b81526020600482015260096024820152681b9bdd08189bdd5b9960ba1b604482015290519081900360640190fd5b6001600160a01b038316600081815260066020908152604091829020859055815185815291513393927f9df3a90730dbf23b5cc18dbbd5f4af3fa94a0dffb6ff6841f98a9a9a6ac626a892908290030190a3505050565b600981565b677ce66c50e284000081565b6000805460ff16612194576040805162461bcd60e51b815260206004820152601960248201526000805160206153d8833981519152604482015290519081900360640190fd5b33611005146121d45760405162461bcd60e51b815260040180806020018281038252602f815260200180615164602f913960400191505060405180910390fd5b60004783106121e357476121e5565b825b9050670de0b6b3a7640000811115612201576000915050612286565b8015612283576040516001600160a01b0385169082156108fc029083906000818181858888f1935050505015801561223d573d6000803e3d6000fd5b50604080516001600160a01b03861681526020810183905281517ff8b71c64315fc33b2ead2adfa487955065152a8ac33d9d5193aafd7f45dc15a0929181900390910190a15b90505b92915050565b61100781565b61100681565b600081565b60005460ff1681565b600381565b6000805460ff166122f1576040805162461bcd60e51b815260206004820152601960248201526000805160206153d8833981519152604482015290519081900360640190fd5b6040805162461bcd60e51b815260206004820152600a60248201526919195c1c9958d85d195960b21b604482015290519081900360640190fd5b61200281565b61300081565b33611007146123775760405162461bcd60e51b815260040180806020018281038252602e8152602001806152f9602e913960400191505060405180910390fd5b602081146123cc576040805162461bcd60e51b815260206004820152601b60248201527f65787065637465642076616c7565206c656e6774682069732033320000000000604482015290519081900360640190fd5b606084848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8801819004810282018101909252868152939450606093925086915085908190840183828082843760009201919091525050505060208301519091506772656c617946656560c01b8114156124d4576020820151670de0b6b3a7640000811180159061247b57506402540be4008106155b6124cc576040805162461bcd60e51b815260206004820152601960248201527f7468652072656c6179466565206f7574206f662072616e676500000000000000604482015290519081900360640190fd5b60015561274a565b61254887878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601781527f6c617267655472616e736665724c6f636b506572696f64000000000000000000602082015291506135449050565b156125e457604080516020601f870181900481028201810190925285815260009161258b9188888083850183828082843760009201919091525061362b92505050565b905062093a808111156125dc576040805162461bcd60e51b81526020600482015260146024820152736c6f636b20706572696f6420746f6f206c6f6e6760601b604482015290519081900360640190fd5b60055561274a565b61265087878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080518082019091526015815274189b9893185c99d9551c985b9cd9995c931a5b5a5d605a1b602082015291506135449050565b1561270d57604080516020601f87018190048102820181019092528581526000916126939188888083850183828082843760009201919091525061362b92505050565b905068056bc75e2d631000008110156126dd5760405162461bcd60e51b81526004018080602001828103825260228152602001806151936022913960400191505060405180910390fd5b6000805260066020527f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f85561274a565b6040805162461bcd60e51b815260206004820152600d60248201526c756e6b6e6f776e20706172616d60981b604482015290519081900360640190fd5b7f6cdb0ac70ab7f2e2d035cca5be60d89906f2dede7648ddbd7402189c1eeed17a878787876040518080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600083820152604051601f909101601f19169092018290039850909650505050505050a150505050505050565b336110081461281f5760405162461bcd60e51b81526004018080602001828103825260238152602001806153b56023913960400191505060405180910390fd5b600091825260046020908152604080842080546001600160a01b03191690556001600160a01b039290921683526003815281832083905560029052812055565b6221272160e91b81565b61c35081565b60026020526000908152604090205481565b6001600160a01b031660009081526003602052604090205490565b61100281565b60005460ff166128e7576040805162461bcd60e51b815260206004820152601960248201526000805160206153d8833981519152604482015290519081900360640190fd5b33612000146129275760405162461bcd60e51b815260040180806020018281038252602f815260200180615386602f913960400191505060405180910390fd5b60ff831660031415611d1857611d1382828080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061363092505050565b60085460ff16600214156129be576040805162461bcd60e51b815260206004820152600e60248201526d4e6f2072652d656e7472616e637960901b604482015290519081900360640190fd5b6008805460ff191660021790556001600160a01b0380831660009081526007602090815260408083209385168352929052208054612a36576040805162461bcd60e51b815260206004820152601060248201526f1b9bc81b1bd8dad95908185b5bdd5b9d60821b604482015290519081900360640190fd5b8060010154421015612a8f576040805162461bcd60e51b815260206004820152601760248201527f7374696c6c206f6e206c6f636b696e6720706572696f64000000000000000000604482015290519081900360640190fd5b805460008083556001600160a01b038516612b02576040516001600160a01b038516906127109084906000818181858888f193505050503d8060008114612af2576040519150601f19603f3d011682016040523d82523d6000602084013e612af7565b606091505b505080915050612b95565b846001600160a01b031663a9059cbb61c35086856040518463ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600088803b158015612b6557600080fd5b5087f1158015612b79573d6000803e3d6000fd5b50505050506040513d6020811015612b9057600080fd5b505190505b80612be7576040805162461bcd60e51b815260206004820152601e60248201527f776974686472617720756e6c6f636b656420746f6b656e206661696c65640000604482015290519081900360640190fd5b836001600160a01b0316856001600160a01b03167f832fc3e25f2b3e6fb0eb59419a73cba405f2a249fce75f7e31ea5a457a0323f1846040518082815260200191505060405180910390a350506008805460ff19166001179055505050565b61100381565b61200481565b60003361200214612caa576040805162461bcd60e51b815260206004820152601f60248201527f746865206d73672073656e646572206d757374206265207374616b6548756200604482015290519081900360640190fd5b814710612cea576040516120029083156108fc029084906000818181858888f19350505050158015612ce0573d6000803e3d6000fd5b50600190506113b2565b506000919050565b60005460ff1615612d4a576040805162461bcd60e51b815260206004820152601960248201527f74686520636f6e747261637420616c726561647920696e697400000000000000604482015290519081900360640190fd5b66071afd498d000060019081556000808052600260205260127fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b55805460ff19169091179055565b60066020526000908152604090205481565b600481565b600581565b601181565b61100081565b61271081565b69021e19e0c9bab240000081565b6001600160a01b03811660009081526003602090815260409182902054825182815280840190935260609290918391906020820181803683375050506020810183905290506000805b60208160ff161015612e5d57828160ff1681518110612e3157fe5b01602001516001600160f81b03191615612e5057816001019150612e55565b612e5d565b600101612e16565b5060608160ff166040519080825280601f01601f191660200182016040528015612e8e576020820181803683370190505b50905060005b8260ff168160ff161015612eea57838160ff1681518110612eb157fe5b602001015160f81c60f81b828260ff1681518110612ecb57fe5b60200101906001600160f81b031916908160001a905350600101612e94565b5095945050505050565b61100481565b6060612f04615063565b6000612f0f84613727565b9150915080612f65576040805162461bcd60e51b815260206004820152601f60248201527f756e7265636f676e697a6564207472616e73666572496e207061636b61676500604482015290519081900360640190fd5b6000612f7083613866565b905063ffffffff811615613004576040808401516020808601516001600160a01b03166000908152600290915291822054612fab9190613bcc565b9050612fb5615098565b60405180608001604052808660000151815260200183815260200186608001516001600160a01b031681526020018463ffffffff168152509050612ff881613c05565b955050505050506113b2565b505060408051600081526020810190915291506113b29050565b600082820183811015612283576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600061228383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613ce1565b6000826130c957506000612286565b828202828482816130d657fe5b04146122835760405162461bcd60e51b81526004018080602001828103825260218152602001806152d86021913960400191505060405180910390fd5b600061228383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613d83565b60408051600680825260e08201909252606091829190816020015b6060815260200190600190039081613170575050835190915061319290613ddd565b8160008151811061319f57fe5b60200260200101819052506131c083602001516001600160a01b0316613df0565b816001815181106131cd57fe5b60200260200101819052506000836040015151905060608160405190808252806020026020018201604052801561321857816020015b60608152602001906001900390816132035790505b50905060005b82811015613265576132468660400151828151811061323957fe5b6020026020010151613ddd565b82828151811061325257fe5b602090810291909101015260010161321e565b5061326f81613e13565b8360028151811061327c57fe5b60200260200101819052506060826040519080825280602002602001820160405280156132bd57816020015b60608152602001906001900390816132a85790505b50905060005b83811015613313576132f4876060015182815181106132de57fe5b60200260200101516001600160a01b0316613df0565b82828151811061330057fe5b60209081029190910101526001016132c3565b5061331d81613e13565b8460038151811061332a57fe5b602002602001018190525060608360405190808252806020026020018201604052801561336b57816020015b60608152602001906001900390816133565790505b50905060005b848110156133ab5761338c886080015182815181106132de57fe5b82828151811061339857fe5b6020908102919091010152600101613371565b506133b581613e13565b856004815181106133c257fe5b60200260200101819052506133e48760a0015167ffffffffffffffff16613ddd565b856005815181106133f157fe5b602002602001018190525061340585613e13565b979650505050505050565b6000600882111561343957613432836007198401600a0a63ffffffff6130ba16565b9050612286565b612283836008849003600a0a63ffffffff61307816565b6001600160a01b0380841660009081526007602090815260408083209385168352929052208054613487908463ffffffff61301e16565b815542603c016001820181905560408051858152602081019290925280516001600160a01b03808616939088169289927f446d1aa056e7b903901f49880e9f252762c1b81dc4301cf28db6dae526497eaa9281900390910190a45050505050565b6134f06150bf565b60006134fb83613e9d565b915091508061353b5760405162461bcd60e51b81526004018080602001828103825260248152602001806153276024913960400191505060405180910390fd5b611d8782614068565b6000816040516020018082805190602001908083835b602083106135795780518252601f19909201916020918201910161355a565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405280519060200120836040516020018082805190602001908083835b602083106135e75780518252601f1990920191602091820191016135c8565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040528051906020012014905092915050565b015190565b613638615017565b6000613643836144ec565b91509150806136835760405162461bcd60e51b81526004018080602001828103825260248152602001806151b56024913960400191505060405180910390fd5b61368b6150bf565b602080840180516001600160a01b0390811684526040808701518585015291511660009081526002909252812054905b84604001515181101561370c576136e9856040015182815181106136db57fe5b602002602001015183613410565b856040015182815181106136f957fe5b60209081029190910101526001016136bb565b506080840151604083015260056060830152611c3582614068565b61372f615063565b6000613739615063565b6137416150f6565b61375261374d86614750565b614775565b90506000805b613761836147bf565b1561385957806137835761377c613777846147e0565b61482e565b8452613851565b80600114156137b05761379d613798846147e0565b6148e5565b6001600160a01b03166020850152613851565b80600214156137cf576137c5613777846147e0565b6040850152613851565b80600314156137f7576137e4613798846147e0565b6001600160a01b03166060850152613851565b806004141561381f5761380c613798846147e0565b6001600160a01b03166080850152613851565b806005141561384c57613834613777846147e0565b67ffffffffffffffff1660a085015260019150613851565b613859565b600101613758565b5091935090915050915091565b60208101516000906001600160a01b03166139aa578160a0015167ffffffffffffffff16421115613899575060016113b2565b81604001514710156138ad575060036113b2565b6138b6826148ff565b61392b57606082015160408084015190516000926001600160a01b0316916127109184818181858888f193505050503d8060008114613911576040519150601f19603f3d011682016040523d82523d6000602084013e613916565b606091505b50509050806139295750600490506113b2565b505b7f471eb9cc1ffe55ffadf15b32595415eb9d80f22e761d24bd6dffc607e1284d5982602001518360600151846040015160405180846001600160a01b03166001600160a01b03168152602001836001600160a01b03166001600160a01b03168152602001828152602001935050505060405180910390a15060006113b2565b8160a0015167ffffffffffffffff164211156139c8575060016113b2565b81516020808401516001600160a01b0316600090815260039091526040902054146139f5575060026113b2565b602080830151604080516370a0823160e01b815230600482015290516000936001600160a01b03909316926370a082319261c3509260248083019392829003018187803b158015613a4557600080fd5b5086fa158015613a59573d6000803e3d6000fd5b50505050506040513d6020811015613a7057600080fd5b50516040840151909150811015613a8b5750600390506113b2565b613a94836148ff565b613b4b57600083602001516001600160a01b031663a9059cbb61c350866060015187604001516040518463ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600088803b158015613b0957600080fd5b5087f1158015613b1d573d6000803e3d6000fd5b50505050506040513d6020811015613b3457600080fd5b5051905080613b495750600591506113b29050565b505b7f471eb9cc1ffe55ffadf15b32595415eb9d80f22e761d24bd6dffc607e1284d5983602001518460600151856040015160405180846001600160a01b03166001600160a01b03168152602001836001600160a01b03166001600160a01b03168152602001828152602001935050505060405180910390a150600090506113b2565b60006008821115613bee57613432836007198401600a0a63ffffffff61307816565b612283836008849003600a0a63ffffffff6130ba16565b60408051600480825260a08201909252606091829190816020015b6060815260200190600190039081613c205750508351909150613c4290613ddd565b81600081518110613c4f57fe5b6020026020010181905250613c678360200151613ddd565b81600181518110613c7457fe5b6020026020010181905250613c9583604001516001600160a01b0316613df0565b81600281518110613ca257fe5b6020026020010181905250613cc0836060015163ffffffff16613ddd565b81600381518110613ccd57fe5b602002602001018190525061126281613e13565b60008183613d6d5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613d32578181015183820152602001613d1a565b50505050905090810190601f168015613d5f5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581613d7957fe5b0495945050505050565b60008184841115613dd55760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315613d32578181015183820152602001613d1a565b505050900390565b6060612286613deb83614a6d565b614b53565b60408051600560a21b831860148201526034810190915260609061126281614b53565b6060815160001415613e3457506040805160008152602081019091526113b2565b606082600081518110613e4357fe5b602002602001015190506000600190505b8351811015613e8457613e7a82858381518110613e6d57fe5b6020026020010151614ba5565b9150600101613e54565b50611262613e97825160c060ff16614c22565b82614ba5565b613ea56150bf565b6000613eaf6150bf565b613eb76150f6565b613ec361374d86614750565b90506000805b613ed2836147bf565b156138595780613ef857613ee8613798846147e0565b6001600160a01b03168452614060565b8060011415613f99576060613f14613f0f856147e0565b614d1a565b90508051604051908082528060200260200182016040528015613f41578160200160208202803683370190505b50602086015260005b8151811015613f9257613f6f828281518110613f6257fe5b602002602001015161482e565b86602001518281518110613f7f57fe5b6020908102919091010152600101613f4a565b5050614060565b806002141561403b576060613fb0613f0f856147e0565b90508051604051908082528060200260200182016040528015613fdd578160200160208202803683370190505b50604086015260005b8151811015613f925761400b828281518110613ffe57fe5b60200260200101516148e5565b8660400151828151811061401b57fe5b6001600160a01b0390921660209283029190910190910152600101613fe6565b806003141561384c57614050613777846147e0565b63ffffffff166060850152600191505b600101613ec9565b80516001600160a01b03166142925760005b81602001515181101561428c5760008260400151828151811061409957fe5b60200260200101516001600160a01b0316612710846020015184815181106140bd57fe5b60209081029190910101516040516000818181858888f193505050503d8060008114614105576040519150601f19603f3d011682016040523d82523d6000602084013e61410a565b606091505b50509050806141cd577f203f9f67a785f4f81be4d48b109aa0c498d1bc8097ecc2627063f480cc5fe73e83600001518460400151848151811061414957fe5b60200260200101518560200151858151811061416157fe5b6020026020010151866060015160405180856001600160a01b03166001600160a01b03168152602001846001600160a01b03166001600160a01b031681526020018381526020018263ffffffff1663ffffffff16815260200194505050505060405180910390a1614283565b7fd468d4fa5e8fb4adc119b29a983fd0785e04af5cb8b7a3a69a47270c54b6901a83600001518460400151848151811061420357fe5b60200260200101518560200151858151811061421b57fe5b6020026020010151866060015160405180856001600160a01b03166001600160a01b03168152602001846001600160a01b03166001600160a01b031681526020018381526020018263ffffffff1663ffffffff16815260200194505050505060405180910390a15b5060010161407a565b506144e9565b60005b8160200151518110156144e757600082600001516001600160a01b031663a9059cbb61c350856040015185815181106142ca57fe5b6020026020010151866020015186815181106142e257fe5b60200260200101516040518463ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600088803b15801561433957600080fd5b5087f115801561434d573d6000803e3d6000fd5b50505050506040513d602081101561436457600080fd5b505190508015614428577fd468d4fa5e8fb4adc119b29a983fd0785e04af5cb8b7a3a69a47270c54b6901a8360000151846040015184815181106143a457fe5b6020026020010151856020015185815181106143bc57fe5b6020026020010151866060015160405180856001600160a01b03166001600160a01b03168152602001846001600160a01b03166001600160a01b031681526020018381526020018263ffffffff1663ffffffff16815260200194505050505060405180910390a16144de565b7f203f9f67a785f4f81be4d48b109aa0c498d1bc8097ecc2627063f480cc5fe73e83600001518460400151848151811061445e57fe5b60200260200101518560200151858151811061447657fe5b6020026020010151866060015160405180856001600160a01b03166001600160a01b03168152602001846001600160a01b03166001600160a01b031681526020018381526020018263ffffffff1663ffffffff16815260200194505050505060405180910390a15b50600101614295565b505b50565b6144f4615017565b60006144fe615017565b6145066150f6565b61451261374d86614750565b90506000805b614521836147bf565b15613859578061453e57614537613777846147e0565b8452614748565b806001141561456657614553613798846147e0565b6001600160a01b03166020850152614748565b80600214156145f557606061457d613f0f856147e0565b905080516040519080825280602002602001820160405280156145aa578160200160208202803683370190505b50604086015260005b81518110156145ee576145cb828281518110613f6257fe5b866040015182815181106145db57fe5b60209081029190910101526001016145b3565b5050614748565b806003141561468a57606061460c613f0f856147e0565b90508051604051908082528060200260200182016040528015614639578160200160208202803683370190505b50606086015260005b81518110156145ee5761465a828281518110613ffe57fe5b8660600151828151811061466a57fe5b6001600160a01b0390921660209283029190910190910152600101614642565b806004141561471f5760606146a1613f0f856147e0565b905080516040519080825280602002602001820160405280156146ce578160200160208202803683370190505b50608086015260005b81518110156145ee576146ef828281518110613ffe57fe5b866080015182815181106146ff57fe5b6001600160a01b03909216602092830291909101909101526001016146d7565b806005141561384c57614734613777846147e0565b67ffffffffffffffff1660a0850152600191505b600101614518565b614758615116565b506040805180820190915281518152602082810190820152919050565b61477d6150f6565b61478682614deb565b61478f57600080fd5b600061479e8360200151614e25565b60208085015160408051808201909152868152920190820152915050919050565b60006147c9615116565b505080518051602091820151919092015191011190565b6147e8615116565b6147f1826147bf565b6147fa57600080fd5b6020820151600061480a82614e88565b80830160209586015260408051808201909152908152938401919091525090919050565b80516000901580159061484357508151602110155b61484c57600080fd5b600061485b8360200151614e25565b905080836000015110156148b6576040805162461bcd60e51b815260206004820152601a60248201527f6c656e677468206973206c657373207468616e206f6666736574000000000000604482015290519081900360640190fd5b8251602080850151830180519284900392918310156148dc57826020036101000a820491505b50949350505050565b80516000906015146148f657600080fd5b6122868261482e565b600080805260066020527f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f8541580156149385750600554155b1561497a5760008052600660205269021e19e0c9bab24000007f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f85561a8c06005555b6020808301516001600160a01b03166000908152600690915260409020548015806149a85750808360400151105b156149b75760009150506113b2565b6020808401516001600160a01b0390811660009081526007835260408082206060880151909316825291909252908190209084015181546149fd9163ffffffff61301e16565b8155600554420160018201819055606085015160208087015160408089015181519081529283019490945283516001600160a01b039384169493909116927f3fb83143cd331170da18fb1e8564d97e8ec39264b6ecb1ba248ea7596ab07258928290030190a35060019392505050565b604080516020808252818301909252606091829190602082018180368337505050602081018490529050600067ffffffffffffffff198416614ab157506018614ad5565b6fffffffffffffffffffffffffffffffff198416614ad157506010614ad5565b5060005b6020811015614b0b57818181518110614aea57fe5b01602001516001600160f81b03191615614b0357614b0b565b600101614ad5565b60008160200390506060816040519080825280601f01601f191660200182016040528015614b40576020820181803683370190505b5080830196909652508452509192915050565b606081516001148015614b855750607f60f81b82600081518110614b7357fe5b01602001516001600160f81b03191611155b15614b915750806113b2565b612286614ba38351608060ff16614c22565b835b6060806040519050835180825260208201818101602087015b81831015614bd6578051835260209283019201614bbe565b50855184518101855292509050808201602086015b81831015614c03578051835260209283019201614beb565b508651929092011591909101601f01601f191660405250905092915050565b6060680100000000000000008310614c72576040805162461bcd60e51b815260206004820152600e60248201526d696e70757420746f6f206c6f6e6760901b604482015290519081900360640190fd5b60408051600180825281830190925260609160208201818036833701905050905060378411614ccc5782840160f81b81600081518110614cae57fe5b60200101906001600160f81b031916908160001a9053509050612286565b6060614cd785614a6d565b90508381510160370160f81b82600081518110614cf057fe5b60200101906001600160f81b031916908160001a905350614d118282614ba5565b95945050505050565b6060614d2582614deb565b614d2e57600080fd5b6000614d3983614fbb565b9050606081604051908082528060200260200182016040528015614d7757816020015b614d64615116565b815260200190600190039081614d5c5790505b5090506000614d898560200151614e25565b60208601510190506000805b84811015614de057614da683614e88565b9150604051806040016040528083815260200184815250848281518110614dc957fe5b602090810291909101015291810191600101614d95565b509195945050505050565b8051600090614dfc575060006113b2565b6020820151805160001a9060c0821015614e1b576000925050506113b2565b5060019392505050565b8051600090811a6080811015614e3f5760009150506113b2565b60b8811080614e5a575060c08110801590614e5a575060f881105b15614e695760019150506113b2565b60c0811015614e7d5760b5190190506113b2565b60f5190190506113b2565b80516000908190811a6080811015614ea35760019150614fb4565b60b8811015614eb857607e1981019150614fb4565b60c0811015614f3257600060b78203600186019550806020036101000a865104915060018101820193505080831015614f2c576040805162461bcd60e51b81526020600482015260116024820152706164646974696f6e206f766572666c6f7760781b604482015290519081900360640190fd5b50614fb4565b60f8811015614f475760be1981019150614fb4565b600060f78203600186019550806020036101000a865104915060018101820193505080831015614fb2576040805162461bcd60e51b81526020600482015260116024820152706164646974696f6e206f766572666c6f7760781b604482015290519081900360640190fd5b505b5092915050565b8051600090614fcc575060006113b2565b60008090506000614fe08460200151614e25565b602085015185519181019250015b8082101561500e57614fff82614e88565b82019150826001019250614fee565b50909392505050565b6040518060c001604052806000801916815260200160006001600160a01b03168152602001606081526020016060815260200160608152602001600067ffffffffffffffff1681525090565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a081019190915290565b60408051608081018252600080825260208201819052918101829052606081019190915290565b604051806080016040528060006001600160a01b031681526020016060815260200160608152602001600063ffffffff1681525090565b6040518060400160405280615109615116565b8152602001600081525090565b60405180604001604052806000815260200160008152509056fe6f6e6c79207374616b696e672073797374656d20636f6e74726163742063616e2063616c6c20746869732066756e6374696f6e746865206d6573736167652073656e646572206d75737420626520696e63656e746976697a6520636f6e7472616374626e62206c61726765207472616e73666572206c696d697420746f6f20736d616c6c756e7265636f676e697a6564207472616e736665724f75742073796e207061636b61676565787069726554696d65206d7573742062652074776f206d696e75746573206c61746572616d6f756e7420697320746f6f206c617267652c20657863656564206d6178696d756d206265703220746f6b656e20616d6f756e74746865206d73672073656e646572206d75737420626520746f6b656e207265636f76657220706f7274616c4c656e677468206f6620726563697069656e74416464727320646f65736e277420657175616c20746f206c656e677468206f6620726566756e644164647273696e76616c6964207472616e7366657220616d6f756e743a20707265636973696f6e206c6f737320696e20616d6f756e7420636f6e76657273696f6e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77746865206d6573736167652073656e646572206d75737420626520676f7665726e616e636520636f6e7472616374756e7265636f676e697a6564207472616e736665724f75742061636b207061636b6167654c656e677468206f6620726563697069656e74416464727320646f65736e277420657175616c20746f206c656e677468206f6620616d6f756e7473746865206d6573736167652073656e646572206d7573742062652063726f737320636861696e20636f6e7472616374746865206d73672073656e646572206d75737420626520746f6b656e4d616e6167657274686520636f6e7472616374206e6f7420696e69742079657400000000000000726563656976656420424e4220616d6f756e742073686f756c64206265206e6f206c657373207468616e207468652073756d206f66207472616e7366657220424e4220616d6f756e7420616e642072656c6179466565696e76616c696420726563656976656420424e4220616d6f756e743a20707265636973696f6e206c6f737320696e20616d6f756e7420636f6e76657273696f6ea164736f6c6343000604000a", }, { ContractAddr: common.HexToAddress(GovHubContract), @@ -676,17 +676,17 @@ func init() { { ContractAddr: common.HexToAddress(StakingContract), CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/1abdfbf3aeb86909c2220b79bf92b87ddff64b54", - Code: "6080604052600436106103d25760003560e01c8063718a8aa8116101fd578063b88a802f11610118578063dc927faf116100ab578063f45fd80b1161007a578063f45fd80b14610cdb578063f9a2bbc714610d20578063fa03f79714610d35578063fc3e5908146106d3578063fd6a687914610d4a576103d9565b8063dc927faf14610c87578063df8079e914610c9c578063edc1a5b014610cb1578063f1fad10414610cc6576103d9565b8063c81b1662116100e7578063c81b166214610bb2578063c8509d8114610bc7578063d61b9b9314610c4c578063d7ecfcb614610890576103d9565b8063b88a802f14610b38578063baaafd3b14610b4d578063bf8546ca14610b62578063c2117d8214610b9d576103d9565b80639dc0926211610190578063aad560631161015f578063aad5606314610a2e578063ab51bb9614610a43578063ac43175114610a58578063b14315df14610b23576103d9565b80639dc09262146109c6578063a1a11bf5146109db578063a78abc16146109f0578063aa82dce114610a19576103d9565b80637e434d54116101cc5780637e434d5414610917578063831d65d11461092c57806392b888a41461066a57806396713da9146109b1576103d9565b8063718a8aa8146108a557806375aca593146108ba57806375d47a0a146108ed5780637942fd0514610902576103d9565b8063413d9c3a116102ed5780635d17c8bd116102805780636bd8f8041161024f5780636bd8f804146108125780636e47b482146108485780636fb7f7eb1461085d57806370fd5bad14610890576103d9565b80635d17c8bd146107be5780635d499b1b146107d357806362b171d2146107e857806369b635b6146107fd576103d9565b80634d99dd16116102bc5780634d99dd161461075357806351b4dce31461077f57806351e8067214610794578063552aaf93146107a9576103d9565b8063413d9c3a146106e857806343756e5c146106fd578063493279b1146107125780634bf6c8821461073e576103d9565b8063151817e311610365578063333ad3e711610334578063333ad3e7146106a957806334c43354146106be5780633dffc3871461066a5780633fdfa7e4146106d3576103d9565b8063151817e31461063f57806317c9efb01461066a578063280870281461067f5780632fdeb11114610694576103d9565b80630c795715116103a15780630c795715146104cc5780630e2374a5146104e15780631182b8751461051257806311fe9ec61461060c576103d9565b8063026e402b146103de578063029859921461040c578063047636d1146104335780630bee7a671461049e576103d9565b366103d957005b600080fd5b61040a600480360360408110156103f457600080fd5b506001600160a01b038135169060200135610d5f565b005b34801561041857600080fd5b50610421610d9c565b60408051918252519081900360200190f35b34801561043f57600080fd5b506104666004803603602081101561045657600080fd5b50356001600160a01b0316610da2565b6040518082606080838360005b8381101561048b578181015183820152602001610473565b5050505090500191505060405180910390f35b3480156104aa57600080fd5b506104b3610df6565b6040805163ffffffff9092168252519081900360200190f35b3480156104d857600080fd5b50610421610dfb565b3480156104ed57600080fd5b506104f6610e01565b604080516001600160a01b039092168252519081900360200190f35b34801561051e57600080fd5b506105976004803603604081101561053557600080fd5b60ff8235169190810190604081016020820135600160201b81111561055957600080fd5b82018360208201111561056b57600080fd5b803590602001918460018302840111600160201b8311171561058c57600080fd5b509092509050610e07565b6040805160208082528351818301528351919283929083019185019080838360005b838110156105d15781810151838201526020016105b9565b50505050905090810190601f1680156105fe5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561061857600080fd5b506104216004803603602081101561062f57600080fd5b50356001600160a01b0316610fc3565b34801561064b57600080fd5b50610654610fde565b6040805160ff9092168252519081900360200190f35b34801561067657600080fd5b50610654610fe3565b34801561068b57600080fd5b506104f6610fe8565b3480156106a057600080fd5b50610421610fee565b3480156106b557600080fd5b506104b3610ff4565b3480156106ca57600080fd5b50610421610ff9565b3480156106df57600080fd5b50610654611004565b3480156106f457600080fd5b50610421611009565b34801561070957600080fd5b506104f6611010565b34801561071e57600080fd5b50610727611016565b6040805161ffff9092168252519081900360200190f35b34801561074a57600080fd5b5061065461101c565b61040a6004803603604081101561076957600080fd5b506001600160a01b038135169060200135611021565b34801561078b57600080fd5b506104f661164e565b3480156107a057600080fd5b506104f6611654565b3480156107b557600080fd5b5061065461165a565b3480156107ca57600080fd5b5061042161165f565b3480156107df57600080fd5b50610421611665565b3480156107f457600080fd5b5061042161166e565b34801561080957600080fd5b5061042161180e565b61040a6004803603606081101561082857600080fd5b506001600160a01b03813581169160208101359091169060400135610d5f565b34801561085457600080fd5b506104f6611814565b34801561086957600080fd5b506104216004803603602081101561088057600080fd5b50356001600160a01b031661181a565b34801561089c57600080fd5b50610654611835565b3480156108b157600080fd5b5061065461183a565b3480156108c657600080fd5b50610421600480360360208110156108dd57600080fd5b50356001600160a01b031661183f565b3480156108f957600080fd5b506104f661185a565b34801561090e57600080fd5b50610654611860565b34801561092357600080fd5b506104f6611865565b34801561093857600080fd5b5061040a6004803603604081101561094f57600080fd5b60ff8235169190810190604081016020820135600160201b81111561097357600080fd5b82018360208201111561098557600080fd5b803590602001918460018302840111600160201b831117156109a657600080fd5b50909250905061186b565b3480156109bd57600080fd5b50610654611b33565b3480156109d257600080fd5b506104f6611b38565b3480156109e757600080fd5b506104f6611b3e565b3480156109fc57600080fd5b50610a05611b44565b604080519115158252519081900360200190f35b348015610a2557600080fd5b506104f6611b4d565b348015610a3a57600080fd5b506104f6611b53565b348015610a4f57600080fd5b506104b361165a565b348015610a6457600080fd5b5061040a60048036036040811015610a7b57600080fd5b810190602081018135600160201b811115610a9557600080fd5b820183602082011115610aa757600080fd5b803590602001918460018302840111600160201b83111715610ac857600080fd5b919390929091602081019035600160201b811115610ae557600080fd5b820183602082011115610af757600080fd5b803590602001918460018302840111600160201b83111715610b1857600080fd5b509092509050611b59565b348015610b2f57600080fd5b506106546122eb565b348015610b4457600080fd5b506104216122f0565b348015610b5957600080fd5b5061042161248d565b348015610b6e57600080fd5b5061042160048036036040811015610b8557600080fd5b506001600160a01b0381358116916020013516612498565b348015610ba957600080fd5b506104216124c5565b348015610bbe57600080fd5b506104f66124cb565b348015610bd357600080fd5b5061040a60048036036040811015610bea57600080fd5b60ff8235169190810190604081016020820135600160201b811115610c0e57600080fd5b820183602082011115610c2057600080fd5b803590602001918460018302840111600160201b83111715610c4157600080fd5b5090925090506124d1565b348015610c5857600080fd5b5061042160048036036040811015610c6f57600080fd5b506001600160a01b03813581169160200135166126f4565b348015610c9357600080fd5b506104f661271f565b348015610ca857600080fd5b506104f6612725565b348015610cbd57600080fd5b5061042161272b565b348015610cd257600080fd5b50610654612738565b348015610ce757600080fd5b5061042160048036036060811015610cfe57600080fd5b506001600160a01b03813581169160208101358216916040909101351661273d565b348015610d2c57600080fd5b506104f6612772565b348015610d4157600080fd5b50610421612778565b348015610d5657600080fd5b506104f661277e565b6040805162461bcd60e51b815260206004820152600d60248201526c1b9bdd081cdd5c1c1bdc9d1959609a1b604482015290519081900360640190fd5b60035481565b610daa6146b9565b610db26146b9565b6001600160a01b0383166000818152600b60209081526040808320548552838352600c82528083205485830152928252600d9052819020549082015290505b919050565b606481565b6108fc81565b61200181565b60603361200014610e495760405162461bcd60e51b815260040180806020018281038252602f81526020018061489c602f913960400191505060405180910390fd5b60005460ff16610e8c576638d7ea4c6800006001908155662386f26fc1000060025568056bc75e2d631000006003556108fc6011556000805460ff191690911790555b610e946146d7565b610edb610ed685858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061278492505050565b6127a9565b90506000610ef0610eeb836127f3565b612841565b90506000606060ff831660041415610f1557610f0b846128f8565b9092509050610f6c565b60ff831660051415610f2a57610f0b84612ad8565b6040805162461bcd60e51b8152602060048201526012602482015271756e6b6e6f776e206576656e74207479706560701b604482015290519081900360640190fd5b63ffffffff821615610fb8576040805163ffffffff84168152905160ff8516917f391d6e5ea6ab6c49b9a0abb1782cae5def8d711f973b00c729658c0b2a80b31b919081900360200190a25b979650505050505050565b6001600160a01b031660009081526006602052604090205490565b600581565b600181565b61200581565b60015481565b606581565b662386f26fc1000081565b600381565b620a8c0081565b61100181565b6102ca81565b600881565b60105460ff166002141561106d576040805162461bcd60e51b815260206004820152600e60248201526d4e6f2072652d656e7472616e637960901b604482015290519081900360640190fd5b6010805460ff19166002179055806402540be400340615801561109557506402540be4008106155b6110e6576040805162461bcd60e51b815260206004820152601c60248201527f707265636973696f6e206c6f737320696e20636f6e76657273696f6e00000000604482015290519081900360640190fd5b60005460ff16611129576638d7ea4c6800006001908155662386f26fc1000060025568056bc75e2d631000006003556108fc6011556000805460ff191690911790555b600154341015611177576040805162461bcd60e51b81526020600482015260146024820152736e6f7420656e6f7567682072656c61792066656560601b604482015290519081900360640190fd5b600354821015611232573360009081526005602090815260408083206001600160a01b038716845290915290205482146111e9576040805162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a5908185b5bdd5b9d60921b604482015290519081900360640190fd5b6002548211611232576040805162461bcd60e51b815260206004820152601060248201526f6e6f7420656e6f7567682066756e647360801b604482015290519081900360640190fd5b3360009081526007602090815260408083206001600160a01b03871684529091529020544210156112aa576040805162461bcd60e51b815260206004820152601a60248201527f70656e64696e6720756e64656c65676174696f6e206578697374000000000000604482015290519081900360640190fd5b604080518082018252601081526f6e6f7420656e6f7567682066756e647360801b602080830191909152336000908152600582528381206001600160a01b03881682529091529182205461130591859063ffffffff612cf416565b9050801561134d57600254811161134d5760405162461bcd60e51b81526004018080602001828103825260258152602001806148776025913960400191505060405180910390fd5b6000611364846402540be40063ffffffff612d8b16565b600254909150349060009061138090839063ffffffff612dd416565b6040805160038082526080820190925291925060609190816020015b606081526020019060019003908161139c5790505090506113bc33612e16565b816000815181106113c957fe5b60200260200101819052506113e6886001600160a01b0316612e16565b816001815181106113f357fe5b602002602001018190525061140784612e39565b8160028151811061141457fe5b60200260200101819052506060611434600261142f84612e4c565b612ed6565b8051602080830191909120600f80546000908152600a845260408082209390935581546001908101909255338152600c909352912080549091019055905061148542620a8c0063ffffffff612f5c16565b3360009081526007602090815260408083206001600160a01b038e16845290915290205561200063f7a251d76010836114c9876402540be40063ffffffff612d8b16565b6040518463ffffffff1660e01b8152600401808460ff1660ff16815260200180602001838152602001828103825284818151815260200191508051906020019080838360005b8381101561152757818101518382015260200161150f565b50505050905090810190601f1680156115545780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b15801561157557600080fd5b505af1158015611589573d6000803e3d6000fd5b5050604051611004925085156108fc02915085906000818181858888f193505050501580156115bc573d6000803e3d6000fd5b506002546040516110029180156108fc02916000818181858888f193505050501580156115ed573d6000803e3d6000fd5b50604080518981526020810185905281516001600160a01b038c169233927fdf0b6ac27f3f3bb31cee3dab0f4fe40cc19c6a3f8daaec52e06b261e58a12519929081900390910190a350506010805460ff1916600117905550505050505050565b61200681565b61200081565b600081565b60025481565b6402540be40081565b60105460009060ff16600214156116bd576040805162461bcd60e51b815260206004820152600e60248201526d4e6f2072652d656e7472616e637960901b604482015290519081900360640190fd5b506010805460ff191660021790553360009081526008602052604090205480611724576040805162461bcd60e51b81526020600482015260146024820152736e6f20756e64656c6567617465642066756e647360601b604482015290519081900360640190fd5b336000818152600860205260408082208290556011549051919291849084818181858888f193505050503d806000811461177a576040519150601f19603f3d011682016040523d82523d6000602084013e61177f565b606091505b50509050806117c7576040805162461bcd60e51b815260206004820152600f60248201526e1d1c985b9cd9995c8819985a5b1959608a1b604482015290519081900360640190fd5b60408051838152905133917fc712d133b8d448221aaed2198ed1f0db6dfc860fb01bc3a630916fe6cbef946f919081900360200190a2506010805460ff1916600117905590565b60035490565b61100581565b6001600160a01b031660009081526004602052604090205490565b600281565b601081565b6001600160a01b031660009081526008602052604090205490565b61100881565b600b81565b61200381565b33612000146118ab5760405162461bcd60e51b815260040180806020018281038252602f81526020018061489c602f913960400191505060405180910390fd5b60005460ff166118ee576638d7ea4c6800006001908155662386f26fc1000060025568056bc75e2d631000006003556108fc6011556000805460ff191690911790555b6118f66146d7565b611938610ed684848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061278492505050565b905060008060606000805b61194c86612fb6565b156119b7578061196957611962610eeb876127f3565b94506119af565b80600114156119855761197e610eeb876127f3565b93506119af565b80600214156119aa5761199f61199a876127f3565b612fd7565b9250600191506119af565b6119b7565b600101611943565b816119fd576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b611a0683613047565b611a49576040805162461bcd60e51b815260206004820152600f60248201526e0eee4dedcce40e0c2c6d640d0c2e6d608b1b604482015290519081900360640190fd5b611a55610ed684612784565b95506000611a65610eeb886127f3565b9050611a6f6146d7565b611a7888612fb6565b15611a9b57611a94610ed6611a8f61199a8b6127f3565b612784565b9050611adc565b6040805162461bcd60e51b8152602060048201526011602482015270656d7074792061636b207061636b61676560781b604482015290519081900360640190fd5b60ff821660011415611af857611af381888861309b565b611b26565b60ff821660021415611b0f57611af3818888613452565b60ff821660031415610f2a57611af381888861371f565b5050505050505050505050565b600981565b61100781565b61100681565b60005460ff1681565b61200281565b61300081565b60005460ff16611bb0576040805162461bcd60e51b815260206004820152601960248201527f74686520636f6e7472616374206e6f7420696e69742079657400000000000000604482015290519081900360640190fd5b3361100714611bf05760405162461bcd60e51b815260040180806020018281038252602e8152602001806147ed602e913960400191505060405180910390fd5b611c5184848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600a81526972656c6179657246656560b01b60208201529150613a849050565b15611db75760208114611cab576040805162461bcd60e51b815260206004820152601d60248201527f6c656e677468206f662072656c61796572466565206d69736d61746368000000604482015290519081900360640190fd5b604080516020601f8401819004810282018101909252828152600091611ce991858580838501838280828437600092019190915250613b6b92505050565b90506003548110611d2b5760405162461bcd60e51b815260040180806020018281038252602e81526020018061481b602e913960400191505060405180910390fd5b6002548111611d6b5760405162461bcd60e51b815260040180806020018281038252602e815260200180614849602e913960400191505060405180910390fd5b6402540be400810615611daf5760405162461bcd60e51b815260040180806020018281038252602c8152602001806147c1602c913960400191505060405180910390fd5b600155612259565b611e1b84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600d81526c62534352656c6179657246656560981b60208201529150613a849050565b15611f7d5760208114611e75576040805162461bcd60e51b815260206004820181905260248201527f6c656e677468206f662062534352656c61796572466565206d69736d61746368604482015290519081900360640190fd5b604080516020601f8401819004810282018101909252828152600091611eb391858580838501838280828437600092019190915250613b6b92505050565b905080611ef15760405162461bcd60e51b81526004018080602001828103825260228152602001806148cb6022913960400191505060405180910390fd5b6001548110611f315760405162461bcd60e51b815260040180806020018281038252602e815260200180614741602e913960400191505060405180910390fd5b6402540be400810615611f755760405162461bcd60e51b815260040180806020018281038252602f815260200180614712602f913960400191505060405180910390fd5b600255612259565b611fe184848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600d81526c36b4b72232b632b3b0ba34b7b760991b60208201529150613a849050565b156120c3576020811461203b576040805162461bcd60e51b815260206004820181905260248201527f6c656e677468206f66206d696e44656c65676174696f6e206d69736d61746368604482015290519081900360640190fd5b604080516020601f840181900481028201810190925282815260009161207991858580838501838280828437600092019190915250613b6b92505050565b905060015481116120bb5760405162461bcd60e51b815260040180806020018281038252603181526020018061476f6031913960400191505060405180910390fd5b600355612259565b61212584848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600b81526a7472616e7366657247617360a81b60208201529150613a849050565b1561221c576020811461217f576040805162461bcd60e51b815260206004820152601e60248201527f6c656e677468206f66207472616e73666572476173206d69736d617463680000604482015290519081900360640190fd5b604080516020601f84018190048102820181019092528281526000916121bd91858580838501838280828437600092019190915250613b6b92505050565b905060008111612214576040805162461bcd60e51b815260206004820152601e60248201527f746865207472616e736665724761732063616e6e6f74206265207a65726f0000604482015290519081900360640190fd5b601155612259565b6040805162461bcd60e51b815260206004820152600d60248201526c756e6b6e6f776e20706172616d60981b604482015290519081900360640190fd5b7f6cdb0ac70ab7f2e2d035cca5be60d89906f2dede7648ddbd7402189c1eeed17a848484846040518080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600083820152604051601f909101601f19169092018290039850909650505050505050a150505050565b600481565b60105460009060ff166002141561233f576040805162461bcd60e51b815260206004820152600e60248201526d4e6f2072652d656e7472616e637960901b604482015290519081900360640190fd5b506010805460ff1916600217905533600090815260066020526040902054806123a3576040805162461bcd60e51b81526020600482015260116024820152701b9bc81c195b991a5b99c81c995dd85c99607a1b604482015290519081900360640190fd5b336000818152600660205260408082208290556011549051919291849084818181858888f193505050503d80600081146123f9576040519150601f19603f3d011682016040523d82523d6000602084013e6123fe565b606091505b5050905080612446576040805162461bcd60e51b815260206004820152600f60248201526e1d1c985b9cd9995c8819985a5b1959608a1b604482015290519081900360640190fd5b60408051838152905133917f83b78188b13346b2ffb484da70d42ee27de7fbf9f2bd8045269e10ed643ccd76919081900360200190a2506010805460ff1916600117905590565b6638d7ea4c68000081565b6001600160a01b038083166000908152600760209081526040808320938516835292905220545b92915050565b60015490565b61100281565b33612000146125115760405162461bcd60e51b815260040180806020018281038252602f81526020018061489c602f913960400191505060405180910390fd5b60005460ff16612554576638d7ea4c6800006001908155662386f26fc1000060025568056bc75e2d631000006003556108fc6011556000805460ff191690911790555b61259382828080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061304792505050565b6125d6576040805162461bcd60e51b815260206004820152600f60248201526e0eee4dedcce40e0c2c6d640d0c2e6d608b1b604482015290519081900360640190fd5b6125de6146d7565b612620610ed684848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061278492505050565b90506000612630610eeb836127f3565b905061263a6146d7565b61264383612fb6565b156126615761265a610ed6611a8f61199a866127f3565b90506126a7565b6040805162461bcd60e51b8152602060048201526016602482015275656d707479206661696c2061636b207061636b61676560501b604482015290519081900360640190fd5b60ff8216600114156126c1576126bc81613b70565b6126eb565b60ff8216600214156126d6576126bc81613d8a565b60ff821660031415610f2a576126bc81613eb4565b5050505b505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b61100381565b61200481565b68056bc75e2d6310000081565b601181565b6001600160a01b0392831660009081526009602090815260408083209486168352938152838220929094168152925290205490565b61100081565b60115481565b61100481565b61278c6146f7565b506040805180820190915281518152602082810190820152919050565b6127b16146d7565b6127ba82614019565b6127c357600080fd5b60006127d28360200151614053565b60208085015160408051808201909152868152920190820152915050919050565b6127fb6146f7565b61280482612fb6565b61280d57600080fd5b6020820151600061281d826140b6565b80830160209586015260408051808201909152908152938401919091525090919050565b80516000901580159061285657508151602110155b61285f57600080fd5b600061286e8360200151614053565b905080836000015110156128c9576040805162461bcd60e51b815260206004820152601a60248201527f6c656e677468206973206c657373207468616e206f6666736574000000000000604482015290519081900360640190fd5b8251602080850151830180519284900392918310156128ef57826020036101000a820491505b50949350505050565b600060606000806000805b61290c87612fb6565b1561295e578261292e57612927612922886127f3565b6141e9565b9150612953565b826001141561294e57612943610eeb886127f3565b905060019350612953565b61295e565b826001019250612903565b836129a4576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b60006110046001600160a01b031663727be1f8836040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b1580156129ee57600080fd5b505af1158015612a02573d6000803e3d6000fd5b505050506040513d6020811015612a1857600080fd5b5051905080612a3d57612a2f600484846065614203565b965096505050505050612ad3565b6001600160a01b038316600090815260066020526040902054612a66908363ffffffff612f5c16565b6001600160a01b038416600081815260066020908152604091829020939093558051858152905191927f7cc266c7b444f808013fa187f7b904d470a051a6564e78f482aa496581ba4bf892918290030190a260408051600080825260208201909252909750955050505050505b915091565b6000606060008060008060005b612aee88612fb6565b15612b575783612b0b57612b04612922896127f3565b9250612b4c565b8360011415612b2757612b20612922896127f3565b9150612b4c565b8360021415612b4757612b3c610eeb896127f3565b905060019450612b4c565b612b57565b836001019350612ae5565b84612b9d576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b60006110046001600160a01b031663727be1f8836040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b158015612be757600080fd5b505af1158015612bfb573d6000803e3d6000fd5b505050506040513d6020811015612c1157600080fd5b5051905080612c3757612c28600585846065614203565b97509750505050505050612ad3565b6001600160a01b038085166000818152600760209081526040808320948816835293815283822082905591815260089091522054612c7b908363ffffffff612f5c16565b6001600160a01b0380861660008181526008602090815260409182902094909455805186815290519287169391927f35a799836f74fac7eccf5c73902823b970543d2274d3b93d8da3d37a255772a2929181900390910190a3604080516000808252602082019092529098509650505050505050915091565b60008184841115612d835760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612d48578181015183820152602001612d30565b50505050905090810190601f168015612d755780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000612dcd83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506142ff565b9392505050565b6000612dcd83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612cf4565b60408051600560a21b8318601482015260348101909152606090612dcd81614364565b60606124bf612e47836143ba565b614364565b6060815160001415612e6d5750604080516000815260208101909152610df1565b606082600081518110612e7c57fe5b602002602001015190506000600190505b8351811015612ebd57612eb382858381518110612ea657fe5b60200260200101516144a0565b9150600101612e8d565b50612dcd612ed0825160c060ff1661451d565b826144a0565b6040805160028082526060828101909352829190816020015b6060815260200190600190039081612eef579050509050612f128460ff16612e39565b81600081518110612f1f57fe5b6020026020010181905250612f3383614364565b81600181518110612f4057fe5b6020026020010181905250612f5481612e4c565b949350505050565b600082820183811015612dcd576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000612fc06146f7565b505080518051602091820151919092015191011190565b8051606090612fe557600080fd5b6000612ff48360200151614053565b83516040805191839003808352601f19601f820116830160200190915291925060609082801561302b576020820181803683370190505b50905060008160200190506128ef848760200151018285614615565b8051602080830191909120600e546000908152600a909252604082205480821461307657600092505050610df1565b5050600e80546000908152600a60205260408120558054600190810190915592915050565b60008060008060005b6130ad88612fb6565b1561311657836130ca576130c3612922896127f3565b925061310b565b83600114156130e6576130df612922896127f3565b915061310b565b8360021415613106576130fb610eeb896127f3565b90506001945061310b565b613116565b8360010193506130a4565b8461315c576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b6000613173826402540be40063ffffffff61466016565b6001600160a01b0385166000908152600b602052604090208054600019019055905060ff8816600114156132b95760ff8716156131e6576040805162461bcd60e51b815260206004820152600c60248201526b77726f6e672073746174757360a01b604482015290519081900360640190fd5b6001600160a01b03841660009081526004602052604090205461320f908263ffffffff612f5c16565b6001600160a01b03808616600090815260046020908152604080832094909455600581528382209287168252919091522054613251908263ffffffff612f5c16565b6001600160a01b038086166000818152600560209081526040808320948916808452948252918290209490945580518581529051929391927f9a57c81564ab02642f34fd87e41baa9b074c18342cec3b7268b62bf752018fd1929181900390910190a3613447565b60ff881661340b576001600160a01b0384166000908152600860205260409020546132ea908263ffffffff612f5c16565b6001600160a01b0385166000908152600860209081526040808320939093558251630e4f7c3f60e31b81526004810185905292516110049363727be1f89360248083019493928390030190829087803b15801561334657600080fd5b505af115801561335a573d6000803e3d6000fd5b505050506040513d602081101561337057600080fd5b50516133b9576040805162461bcd60e51b81526020600482015260136024820152721dda5d1a191c985dc8189b988819985a5b1959606a1b604482015290519081900360640190fd5b6040805182815260ff8916602082015281516001600160a01b0380871693908816927fcbd481ae600289fad8c0484d07ce0ffe4f010d7c844ecfdeaf2a13fead52886e929081900390910190a3613447565b6040805162461bcd60e51b815260206004820152600c60248201526b77726f6e672073746174757360a01b604482015290519081900360640190fd5b505050505050505050565b60008060008060005b61346488612fb6565b156134cd57836134815761347a612922896127f3565b92506134c2565b836001141561349d57613496612922896127f3565b91506134c2565b83600214156134bd576134b2610eeb896127f3565b9050600194506134c2565b6134cd565b83600101935061345b565b84613513576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b600061352a826402540be40063ffffffff61466016565b6001600160a01b0385166000908152600c602052604090208054600019019055905060ff8816600114156136a95760ff87161561359d576040805162461bcd60e51b815260206004820152600c60248201526b77726f6e672073746174757360a01b604482015290519081900360640190fd5b6001600160a01b0384166000908152600460205260409020546135c6908263ffffffff612dd416565b6001600160a01b03808616600090815260046020908152604080832094909455600581528382209287168252919091522054613608908263ffffffff612dd416565b6001600160a01b0380861660009081526005602090815260408083209388168352929052205561364142620a8c0063ffffffff612f5c16565b6001600160a01b038086166000818152600760209081526040808320948916808452948252918290209490945580518581529051929391927fd6f878a5bcbbe79a64e6418bb0d56aaa20b9a60587d45749819df88dfc7c3c44929181900390910190a3613447565b60ff881661340b576001600160a01b03808516600081815260076020908152604080832094881680845294825280832092909255815185815260ff8c169181019190915281517f4417d10c1e33efa83a770b8d4f47176e78c08c1298d534901ad3b16bb585fa2e929181900390910190a3613447565b6000806000806000805b61373289612fb6565b156137b7578461374f576137486129228a6127f3565b93506137ac565b846001141561376b576137646129228a6127f3565b92506137ac565b8460021415613787576137806129228a6127f3565b91506137ac565b84600314156137a75761379c610eeb8a6127f3565b9050600195506137ac565b6137b7565b846001019450613729565b856137fd576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b6000613814826402540be40063ffffffff61466016565b6001600160a01b0386166000908152600d602052604090208054600019019055905060ff8916600114156139e75760ff881615613887576040805162461bcd60e51b815260206004820152600c60248201526b77726f6e672073746174757360a01b604482015290519081900360640190fd5b6001600160a01b038086166000908152600560209081526040808320938816835292905220546138bd908263ffffffff612dd416565b6001600160a01b038681166000908152600560209081526040808320898516845290915280822093909355908516815220546138f99082612f5c565b6001600160a01b0380871660009081526005602090815260408083209388168352929052205561393242620a8c0063ffffffff612f5c16565b6001600160a01b038087166000908152600960209081526040808320898516845282528083209388168352929052205561397542620a8c0063ffffffff612f5c16565b6001600160a01b038087166000818152600960209081526040808320898616808552908352818420958b1680855295835292819020959095558451868152945191947f78bffae3f8c6691ac7fc1a3bff800cb2d612f5ad9ae5b0444cfe2eb15c189e18929081900390910190a4613a78565b60ff891661340b576001600160a01b038581166000818152600960209081526040808320898616808552818452828520968a16808652968452828520859055908352818420818552835281842093909355805186815260ff8e169281019290925280519293927fb93bee5c59f85ede6b074a99f4ffcd3e3fc0d5c3d8156de331de89a49e0ce77c9281900390910190a45b50505050505050505050565b6000816040516020018082805190602001908083835b60208310613ab95780518252601f199092019160209182019101613a9a565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405280519060200120836040516020018082805190602001908083835b60208310613b275780518252601f199092019160209182019101613b08565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040528051906020012014905092915050565b015190565b60008060008060005b613b8286612fb6565b15613beb5783613b9f57613b98612922876127f3565b9250613be0565b8360011415613bbb57613bb4612922876127f3565b9150613be0565b8360021415613bdb57613bd0610eeb876127f3565b905060019450613be0565b613beb565b836001019350613b79565b84613c31576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b6000613c48826402540be40063ffffffff61466016565b6001600160a01b0385166000908152600b6020908152604080832080546000190190556008909152902054909150613c86908263ffffffff612f5c16565b6001600160a01b0385166000908152600860209081526040808320939093558251630e4f7c3f60e31b81526004810185905292516110049363727be1f89360248083019493928390030190829087803b158015613ce257600080fd5b505af1158015613cf6573d6000803e3d6000fd5b505050506040513d6020811015613d0c57600080fd5b5051613d55576040805162461bcd60e51b81526020600482015260136024820152721dda5d1a191c985dc8189b988819985a5b1959606a1b604482015290519081900360640190fd5b6040516001907ff83de021914a4585482db5ca47d520a5657165b443fa2c7ef8ed4635f054da9b90600090a250505050505050565b60008060008060005b613d9c86612fb6565b15613e055783613db957613db2612922876127f3565b9250613dfa565b8360011415613dd557613dce612922876127f3565b9150613dfa565b8360021415613df557613dea610eeb876127f3565b905060019450613dfa565b613e05565b836001019350613d93565b84613e4b576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b6001600160a01b038084166000908152600c60209081526040808320805460001901905560078252808320938616835292905281812081905590516002917ff83de021914a4585482db5ca47d520a5657165b443fa2c7ef8ed4635f054da9b91a2505050505050565b6000806000806000805b613ec787612fb6565b15613f4c5784613ee457613edd612922886127f3565b9350613f41565b8460011415613f0057613ef9612922886127f3565b9250613f41565b8460021415613f1c57613f15612922886127f3565b9150613f41565b8460031415613f3c57613f31610eeb886127f3565b905060019550613f41565b613f4c565b846001019450613ebe565b85613f92576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b6001600160a01b038481166000908152600d602090815260408083208054600019019055600982528083208785168085528184528285209588168552948352818420849055825280832093835292905281812081905590516003917ff83de021914a4585482db5ca47d520a5657165b443fa2c7ef8ed4635f054da9b91a250505050505050565b805160009061402a57506000610df1565b6020820151805160001a9060c082101561404957600092505050610df1565b5060019392505050565b8051600090811a608081101561406d576000915050610df1565b60b8811080614088575060c08110801590614088575060f881105b15614097576001915050610df1565b60c08110156140ab5760b519019050610df1565b60f519019050610df1565b80516000908190811a60808110156140d157600191506141e2565b60b88110156140e657607e19810191506141e2565b60c081101561416057600060b78203600186019550806020036101000a86510491506001810182019350508083101561415a576040805162461bcd60e51b81526020600482015260116024820152706164646974696f6e206f766572666c6f7760781b604482015290519081900360640190fd5b506141e2565b60f88110156141755760be19810191506141e2565b600060f78203600186019550806020036101000a8651049150600181018201935050808310156141e0576040805162461bcd60e51b81526020600482015260116024820152706164646974696f6e206f766572666c6f7760781b604482015290519081900360640190fd5b505b5092915050565b80516000906015146141fa57600080fd5b6124bf82612841565b6000606061421c846402540be40063ffffffff612d8b16565b60408051600480825260a0820190925291955060609190816020015b606081526020019060019003908161423857905050905061425b8760ff16612e39565b8160008151811061426857fe5b6020026020010181905250614285866001600160a01b0316612e16565b8160018151811061429257fe5b60200260200101819052506142a685612e39565b816002815181106142b357fe5b60200260200101819052506142cd8463ffffffff16612e39565b816003815181106142da57fe5b602002602001018190525060606142f082612e4c565b94989497509395505050505050565b6000818361434e5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315612d48578181015183820152602001612d30565b50600083858161435a57fe5b0495945050505050565b6060815160011480156143965750607f60f81b8260008151811061438457fe5b01602001516001600160f81b03191611155b156143a2575080610df1565b6124bf6143b48351608060ff1661451d565b836144a0565b604080516020808252818301909252606091829190602082018180368337505050602081018490529050600067ffffffffffffffff1984166143fe57506018614422565b6fffffffffffffffffffffffffffffffff19841661441e57506010614422565b5060005b60208110156144585781818151811061443757fe5b01602001516001600160f81b0319161561445057614458565b600101614422565b60008160200390506060816040519080825280601f01601f19166020018201604052801561448d576020820181803683370190505b5080830196909652508452509192915050565b6060806040519050835180825260208201818101602087015b818310156144d15780518352602092830192016144b9565b50855184518101855292509050808201602086015b818310156144fe5780518352602092830192016144e6565b508651929092011591909101601f01601f191660405250905092915050565b606068010000000000000000831061456d576040805162461bcd60e51b815260206004820152600e60248201526d696e70757420746f6f206c6f6e6760901b604482015290519081900360640190fd5b604080516001808252818301909252606091602082018180368337019050509050603784116145c75782840160f81b816000815181106145a957fe5b60200101906001600160f81b031916908160001a90535090506124bf565b60606145d2856143ba565b90508381510160370160f81b826000815181106145eb57fe5b60200101906001600160f81b031916908160001a90535061460c82826144a0565b95945050505050565b8061461f576126ef565b5b6020811061463f578251825260209283019290910190601f1901614620565b915181516020939093036101000a6000190180199091169216919091179052565b60008261466f575060006124bf565b8282028284828161467c57fe5b0414612dcd5760405162461bcd60e51b81526004018080602001828103825260218152602001806147a06021913960400191505060405180910390fd5b60405180606001604052806003906020820280368337509192915050565b60405180604001604052806146ea6146f7565b8152602001600081525090565b60405180604001604052806000815260200160008152509056fe7468652042534352656c61796572466565206d6f642074656e20646563696d616c73206d757374206265207a65726f7468652042534352656c61796572466565206d757374206265206c657373207468616e2072656c61796572466565746865206d696e44656c65676174696f6e206d7573742062652067726561746572207468616e2072656c61796572466565536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f777468652072656c61796572466565206d6f642074656e20646563696d616c73206d757374206265207a65726f746865206d6573736167652073656e646572206d75737420626520676f7665726e616e636520636f6e74726163747468652072656c61796572466565206d757374206265206c657373207468616e206d696e44656c65676174696f6e7468652072656c61796572466565206d757374206265206d6f7265207468616e2042534352656c61796572466565696e73756666696369656e742062616c616e636520616674657220756e64656c6567617465746865206d6573736167652073656e646572206d7573742062652063726f737320636861696e20636f6e74726163747468652042534352656c61796572466565206d757374206e6f74206265207a65726fa164736f6c6343000604000a", + Code: "6080604052600436106103d25760003560e01c8063718a8aa8116101fd578063b88a802f11610118578063dc927faf116100ab578063f45fd80b1161007a578063f45fd80b14610cdb578063f9a2bbc714610d20578063fa03f79714610d35578063fc3e5908146106d3578063fd6a687914610d4a576103d9565b8063dc927faf14610c87578063df8079e914610c9c578063edc1a5b014610cb1578063f1fad10414610cc6576103d9565b8063c81b1662116100e7578063c81b166214610bb2578063c8509d8114610bc7578063d61b9b9314610c4c578063d7ecfcb614610890576103d9565b8063b88a802f14610b38578063baaafd3b14610b4d578063bf8546ca14610b62578063c2117d8214610b9d576103d9565b80639dc0926211610190578063aad560631161015f578063aad5606314610a2e578063ab51bb9614610a43578063ac43175114610a58578063b14315df14610b23576103d9565b80639dc09262146109c6578063a1a11bf5146109db578063a78abc16146109f0578063aa82dce114610a19576103d9565b80637e434d54116101cc5780637e434d5414610917578063831d65d11461092c57806392b888a41461066a57806396713da9146109b1576103d9565b8063718a8aa8146108a557806375aca593146108ba57806375d47a0a146108ed5780637942fd0514610902576103d9565b8063413d9c3a116102ed5780635d17c8bd116102805780636bd8f8041161024f5780636bd8f804146108125780636e47b482146108485780636fb7f7eb1461085d57806370fd5bad14610890576103d9565b80635d17c8bd146107be5780635d499b1b146107d357806362b171d2146107e857806369b635b6146107fd576103d9565b80634d99dd16116102bc5780634d99dd161461075357806351b4dce31461077f57806351e8067214610794578063552aaf93146107a9576103d9565b8063413d9c3a146106e857806343756e5c146106fd578063493279b1146107125780634bf6c8821461073e576103d9565b8063151817e311610365578063333ad3e711610334578063333ad3e7146106a957806334c43354146106be5780633dffc3871461066a5780633fdfa7e4146106d3576103d9565b8063151817e31461063f57806317c9efb01461066a578063280870281461067f5780632fdeb11114610694576103d9565b80630c795715116103a15780630c795715146104cc5780630e2374a5146104e15780631182b8751461051257806311fe9ec61461060c576103d9565b8063026e402b146103de578063029859921461040c578063047636d1146104335780630bee7a671461049e576103d9565b366103d957005b600080fd5b61040a600480360360408110156103f457600080fd5b506001600160a01b038135169060200135610d5f565b005b34801561041857600080fd5b50610421610d9c565b60408051918252519081900360200190f35b34801561043f57600080fd5b506104666004803603602081101561045657600080fd5b50356001600160a01b0316610da2565b6040518082606080838360005b8381101561048b578181015183820152602001610473565b5050505090500191505060405180910390f35b3480156104aa57600080fd5b506104b3610df6565b6040805163ffffffff9092168252519081900360200190f35b3480156104d857600080fd5b50610421610dfb565b3480156104ed57600080fd5b506104f6610e01565b604080516001600160a01b039092168252519081900360200190f35b34801561051e57600080fd5b506105976004803603604081101561053557600080fd5b60ff8235169190810190604081016020820135600160201b81111561055957600080fd5b82018360208201111561056b57600080fd5b803590602001918460018302840111600160201b8311171561058c57600080fd5b509092509050610e07565b6040805160208082528351818301528351919283929083019185019080838360005b838110156105d15781810151838201526020016105b9565b50505050905090810190601f1680156105fe5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561061857600080fd5b506104216004803603602081101561062f57600080fd5b50356001600160a01b0316610fc3565b34801561064b57600080fd5b50610654610fde565b6040805160ff9092168252519081900360200190f35b34801561067657600080fd5b50610654610fe3565b34801561068b57600080fd5b506104f6610fe8565b3480156106a057600080fd5b50610421610fee565b3480156106b557600080fd5b506104b3610ff4565b3480156106ca57600080fd5b50610421610ff9565b3480156106df57600080fd5b50610654611004565b3480156106f457600080fd5b50610421611009565b34801561070957600080fd5b506104f6611010565b34801561071e57600080fd5b50610727611016565b6040805161ffff9092168252519081900360200190f35b34801561074a57600080fd5b5061065461101c565b61040a6004803603604081101561076957600080fd5b506001600160a01b038135169060200135611021565b34801561078b57600080fd5b506104f661164e565b3480156107a057600080fd5b506104f6611654565b3480156107b557600080fd5b5061065461165a565b3480156107ca57600080fd5b5061042161165f565b3480156107df57600080fd5b50610421611665565b3480156107f457600080fd5b5061042161166e565b34801561080957600080fd5b5061042161180e565b61040a6004803603606081101561082857600080fd5b506001600160a01b03813581169160208101359091169060400135610d5f565b34801561085457600080fd5b506104f6611814565b34801561086957600080fd5b506104216004803603602081101561088057600080fd5b50356001600160a01b031661181a565b34801561089c57600080fd5b50610654611835565b3480156108b157600080fd5b5061065461183a565b3480156108c657600080fd5b50610421600480360360208110156108dd57600080fd5b50356001600160a01b031661183f565b3480156108f957600080fd5b506104f661185a565b34801561090e57600080fd5b50610654611860565b34801561092357600080fd5b506104f6611865565b34801561093857600080fd5b5061040a6004803603604081101561094f57600080fd5b60ff8235169190810190604081016020820135600160201b81111561097357600080fd5b82018360208201111561098557600080fd5b803590602001918460018302840111600160201b831117156109a657600080fd5b50909250905061186b565b3480156109bd57600080fd5b50610654611b33565b3480156109d257600080fd5b506104f6611b38565b3480156109e757600080fd5b506104f6611b3e565b3480156109fc57600080fd5b50610a05611b44565b604080519115158252519081900360200190f35b348015610a2557600080fd5b506104f6611b4d565b348015610a3a57600080fd5b506104f6611b53565b348015610a4f57600080fd5b506104b361165a565b348015610a6457600080fd5b5061040a60048036036040811015610a7b57600080fd5b810190602081018135600160201b811115610a9557600080fd5b820183602082011115610aa757600080fd5b803590602001918460018302840111600160201b83111715610ac857600080fd5b919390929091602081019035600160201b811115610ae557600080fd5b820183602082011115610af757600080fd5b803590602001918460018302840111600160201b83111715610b1857600080fd5b509092509050611b59565b348015610b2f57600080fd5b506106546122eb565b348015610b4457600080fd5b506104216122f0565b348015610b5957600080fd5b5061042161248d565b348015610b6e57600080fd5b5061042160048036036040811015610b8557600080fd5b506001600160a01b0381358116916020013516612498565b348015610ba957600080fd5b506104216124c5565b348015610bbe57600080fd5b506104f66124cb565b348015610bd357600080fd5b5061040a60048036036040811015610bea57600080fd5b60ff8235169190810190604081016020820135600160201b811115610c0e57600080fd5b820183602082011115610c2057600080fd5b803590602001918460018302840111600160201b83111715610c4157600080fd5b5090925090506124d1565b348015610c5857600080fd5b5061042160048036036040811015610c6f57600080fd5b506001600160a01b03813581169160200135166126f4565b348015610c9357600080fd5b506104f661271f565b348015610ca857600080fd5b506104f6612725565b348015610cbd57600080fd5b5061042161272b565b348015610cd257600080fd5b50610654612738565b348015610ce757600080fd5b5061042160048036036060811015610cfe57600080fd5b506001600160a01b03813581169160208101358216916040909101351661273d565b348015610d2c57600080fd5b506104f6612772565b348015610d4157600080fd5b50610421612778565b348015610d5657600080fd5b506104f661277e565b6040805162461bcd60e51b815260206004820152600d60248201526c1b9bdd081cdd5c1c1bdc9d1959609a1b604482015290519081900360640190fd5b60035481565b610daa6147c4565b610db26147c4565b6001600160a01b0383166000818152600b60209081526040808320548552838352600c82528083205485830152928252600d9052819020549082015290505b919050565b606481565b6108fc81565b61200181565b60603361200014610e495760405162461bcd60e51b815260040180806020018281038252602f8152602001806149a7602f913960400191505060405180910390fd5b60005460ff16610e8c576638d7ea4c6800006001908155662386f26fc1000060025568056bc75e2d631000006003556108fc6011556000805460ff191690911790555b610e946147e2565b610edb610ed685858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061278492505050565b6127a9565b90506000610ef0610eeb836127f3565b612841565b90506000606060ff831660041415610f1557610f0b846128f8565b9092509050610f6c565b60ff831660051415610f2a57610f0b84612ad8565b6040805162461bcd60e51b8152602060048201526012602482015271756e6b6e6f776e206576656e74207479706560701b604482015290519081900360640190fd5b63ffffffff821615610fb8576040805163ffffffff84168152905160ff8516917f391d6e5ea6ab6c49b9a0abb1782cae5def8d711f973b00c729658c0b2a80b31b919081900360200190a25b979650505050505050565b6001600160a01b031660009081526006602052604090205490565b600581565b600181565b61200581565b60015481565b606581565b662386f26fc1000081565b600381565b620a8c0081565b61100181565b6102ca81565b600881565b60105460ff166002141561106d576040805162461bcd60e51b815260206004820152600e60248201526d4e6f2072652d656e7472616e637960901b604482015290519081900360640190fd5b6010805460ff19166002179055806402540be400340615801561109557506402540be4008106155b6110e6576040805162461bcd60e51b815260206004820152601c60248201527f707265636973696f6e206c6f737320696e20636f6e76657273696f6e00000000604482015290519081900360640190fd5b60005460ff16611129576638d7ea4c6800006001908155662386f26fc1000060025568056bc75e2d631000006003556108fc6011556000805460ff191690911790555b600154341015611177576040805162461bcd60e51b81526020600482015260146024820152736e6f7420656e6f7567682072656c61792066656560601b604482015290519081900360640190fd5b600354821015611232573360009081526005602090815260408083206001600160a01b038716845290915290205482146111e9576040805162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a5908185b5bdd5b9d60921b604482015290519081900360640190fd5b6002548211611232576040805162461bcd60e51b815260206004820152601060248201526f6e6f7420656e6f7567682066756e647360801b604482015290519081900360640190fd5b3360009081526007602090815260408083206001600160a01b03871684529091529020544210156112aa576040805162461bcd60e51b815260206004820152601a60248201527f70656e64696e6720756e64656c65676174696f6e206578697374000000000000604482015290519081900360640190fd5b604080518082018252601081526f6e6f7420656e6f7567682066756e647360801b602080830191909152336000908152600582528381206001600160a01b03881682529091529182205461130591859063ffffffff612dbb16565b9050801561134d57600254811161134d5760405162461bcd60e51b81526004018080602001828103825260258152602001806149826025913960400191505060405180910390fd5b6000611364846402540be40063ffffffff612e5216565b600254909150349060009061138090839063ffffffff612e9b16565b6040805160038082526080820190925291925060609190816020015b606081526020019060019003908161139c5790505090506113bc33612edd565b816000815181106113c957fe5b60200260200101819052506113e6886001600160a01b0316612edd565b816001815181106113f357fe5b602002602001018190525061140784612f00565b8160028151811061141457fe5b60200260200101819052506060611434600261142f84612f13565b612f9d565b8051602080830191909120600f80546000908152600a845260408082209390935581546001908101909255338152600c909352912080549091019055905061148542620a8c0063ffffffff61302316565b3360009081526007602090815260408083206001600160a01b038e16845290915290205561200063f7a251d76010836114c9876402540be40063ffffffff612e5216565b6040518463ffffffff1660e01b8152600401808460ff1660ff16815260200180602001838152602001828103825284818151815260200191508051906020019080838360005b8381101561152757818101518382015260200161150f565b50505050905090810190601f1680156115545780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b15801561157557600080fd5b505af1158015611589573d6000803e3d6000fd5b5050604051611004925085156108fc02915085906000818181858888f193505050501580156115bc573d6000803e3d6000fd5b506002546040516110029180156108fc02916000818181858888f193505050501580156115ed573d6000803e3d6000fd5b50604080518981526020810185905281516001600160a01b038c169233927fdf0b6ac27f3f3bb31cee3dab0f4fe40cc19c6a3f8daaec52e06b261e58a12519929081900390910190a350506010805460ff1916600117905550505050505050565b61200681565b61200081565b600081565b60025481565b6402540be40081565b60105460009060ff16600214156116bd576040805162461bcd60e51b815260206004820152600e60248201526d4e6f2072652d656e7472616e637960901b604482015290519081900360640190fd5b506010805460ff191660021790553360009081526008602052604090205480611724576040805162461bcd60e51b81526020600482015260146024820152736e6f20756e64656c6567617465642066756e647360601b604482015290519081900360640190fd5b336000818152600860205260408082208290556011549051919291849084818181858888f193505050503d806000811461177a576040519150601f19603f3d011682016040523d82523d6000602084013e61177f565b606091505b50509050806117c7576040805162461bcd60e51b815260206004820152600f60248201526e1d1c985b9cd9995c8819985a5b1959608a1b604482015290519081900360640190fd5b60408051838152905133917fc712d133b8d448221aaed2198ed1f0db6dfc860fb01bc3a630916fe6cbef946f919081900360200190a2506010805460ff1916600117905590565b60035490565b61100581565b6001600160a01b031660009081526004602052604090205490565b600281565b601081565b6001600160a01b031660009081526008602052604090205490565b61100881565b600b81565b61200381565b33612000146118ab5760405162461bcd60e51b815260040180806020018281038252602f8152602001806149a7602f913960400191505060405180910390fd5b60005460ff166118ee576638d7ea4c6800006001908155662386f26fc1000060025568056bc75e2d631000006003556108fc6011556000805460ff191690911790555b6118f66147e2565b611938610ed684848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061278492505050565b905060008060606000805b61194c8661307d565b156119b7578061196957611962610eeb876127f3565b94506119af565b80600114156119855761197e610eeb876127f3565b93506119af565b80600214156119aa5761199f61199a876127f3565b61309e565b9250600191506119af565b6119b7565b600101611943565b816119fd576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b611a068361310e565b611a49576040805162461bcd60e51b815260206004820152600f60248201526e0eee4dedcce40e0c2c6d640d0c2e6d608b1b604482015290519081900360640190fd5b611a55610ed684612784565b95506000611a65610eeb886127f3565b9050611a6f6147e2565b611a788861307d565b15611a9b57611a94610ed6611a8f61199a8b6127f3565b612784565b9050611adc565b6040805162461bcd60e51b8152602060048201526011602482015270656d7074792061636b207061636b61676560781b604482015290519081900360640190fd5b60ff821660011415611af857611af3818888613162565b611b26565b60ff821660021415611b0f57611af3818888613519565b60ff821660031415610f2a57611af38188886137e6565b5050505050505050505050565b600981565b61100781565b61100681565b60005460ff1681565b61200281565b61300081565b60005460ff16611bb0576040805162461bcd60e51b815260206004820152601960248201527f74686520636f6e7472616374206e6f7420696e69742079657400000000000000604482015290519081900360640190fd5b3361100714611bf05760405162461bcd60e51b815260040180806020018281038252602e8152602001806148f8602e913960400191505060405180910390fd5b611c5184848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600a81526972656c6179657246656560b01b60208201529150613b4b9050565b15611db75760208114611cab576040805162461bcd60e51b815260206004820152601d60248201527f6c656e677468206f662072656c61796572466565206d69736d61746368000000604482015290519081900360640190fd5b604080516020601f8401819004810282018101909252828152600091611ce991858580838501838280828437600092019190915250613c3292505050565b90506003548110611d2b5760405162461bcd60e51b815260040180806020018281038252602e815260200180614926602e913960400191505060405180910390fd5b6002548111611d6b5760405162461bcd60e51b815260040180806020018281038252602e815260200180614954602e913960400191505060405180910390fd5b6402540be400810615611daf5760405162461bcd60e51b815260040180806020018281038252602c8152602001806148cc602c913960400191505060405180910390fd5b600155612259565b611e1b84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600d81526c62534352656c6179657246656560981b60208201529150613b4b9050565b15611f7d5760208114611e75576040805162461bcd60e51b815260206004820181905260248201527f6c656e677468206f662062534352656c61796572466565206d69736d61746368604482015290519081900360640190fd5b604080516020601f8401819004810282018101909252828152600091611eb391858580838501838280828437600092019190915250613c3292505050565b905080611ef15760405162461bcd60e51b81526004018080602001828103825260228152602001806149d66022913960400191505060405180910390fd5b6001548110611f315760405162461bcd60e51b815260040180806020018281038252602e81526020018061484c602e913960400191505060405180910390fd5b6402540be400810615611f755760405162461bcd60e51b815260040180806020018281038252602f81526020018061481d602f913960400191505060405180910390fd5b600255612259565b611fe184848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600d81526c36b4b72232b632b3b0ba34b7b760991b60208201529150613b4b9050565b156120c3576020811461203b576040805162461bcd60e51b815260206004820181905260248201527f6c656e677468206f66206d696e44656c65676174696f6e206d69736d61746368604482015290519081900360640190fd5b604080516020601f840181900481028201810190925282815260009161207991858580838501838280828437600092019190915250613c3292505050565b905060015481116120bb5760405162461bcd60e51b815260040180806020018281038252603181526020018061487a6031913960400191505060405180910390fd5b600355612259565b61212584848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600b81526a7472616e7366657247617360a81b60208201529150613b4b9050565b1561221c576020811461217f576040805162461bcd60e51b815260206004820152601e60248201527f6c656e677468206f66207472616e73666572476173206d69736d617463680000604482015290519081900360640190fd5b604080516020601f84018190048102820181019092528281526000916121bd91858580838501838280828437600092019190915250613c3292505050565b905060008111612214576040805162461bcd60e51b815260206004820152601e60248201527f746865207472616e736665724761732063616e6e6f74206265207a65726f0000604482015290519081900360640190fd5b601155612259565b6040805162461bcd60e51b815260206004820152600d60248201526c756e6b6e6f776e20706172616d60981b604482015290519081900360640190fd5b7f6cdb0ac70ab7f2e2d035cca5be60d89906f2dede7648ddbd7402189c1eeed17a848484846040518080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600083820152604051601f909101601f19169092018290039850909650505050505050a150505050565b600481565b60105460009060ff166002141561233f576040805162461bcd60e51b815260206004820152600e60248201526d4e6f2072652d656e7472616e637960901b604482015290519081900360640190fd5b506010805460ff1916600217905533600090815260066020526040902054806123a3576040805162461bcd60e51b81526020600482015260116024820152701b9bc81c195b991a5b99c81c995dd85c99607a1b604482015290519081900360640190fd5b336000818152600660205260408082208290556011549051919291849084818181858888f193505050503d80600081146123f9576040519150601f19603f3d011682016040523d82523d6000602084013e6123fe565b606091505b5050905080612446576040805162461bcd60e51b815260206004820152600f60248201526e1d1c985b9cd9995c8819985a5b1959608a1b604482015290519081900360640190fd5b60408051838152905133917f83b78188b13346b2ffb484da70d42ee27de7fbf9f2bd8045269e10ed643ccd76919081900360200190a2506010805460ff1916600117905590565b6638d7ea4c68000081565b6001600160a01b038083166000908152600760209081526040808320938516835292905220545b92915050565b60015490565b61100281565b33612000146125115760405162461bcd60e51b815260040180806020018281038252602f8152602001806149a7602f913960400191505060405180910390fd5b60005460ff16612554576638d7ea4c6800006001908155662386f26fc1000060025568056bc75e2d631000006003556108fc6011556000805460ff191690911790555b61259382828080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061310e92505050565b6125d6576040805162461bcd60e51b815260206004820152600f60248201526e0eee4dedcce40e0c2c6d640d0c2e6d608b1b604482015290519081900360640190fd5b6125de6147e2565b612620610ed684848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061278492505050565b90506000612630610eeb836127f3565b905061263a6147e2565b6126438361307d565b156126615761265a610ed6611a8f61199a866127f3565b90506126a7565b6040805162461bcd60e51b8152602060048201526016602482015275656d707479206661696c2061636b207061636b61676560501b604482015290519081900360640190fd5b60ff8216600114156126c1576126bc81613c37565b6126eb565b60ff8216600214156126d6576126bc81613e51565b60ff821660031415610f2a576126bc81613f7b565b5050505b505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b61100381565b61200481565b68056bc75e2d6310000081565b601181565b6001600160a01b0392831660009081526009602090815260408083209486168352938152838220929094168152925290205490565b61100081565b60115481565b61100481565b61278c614802565b506040805180820190915281518152602082810190820152919050565b6127b16147e2565b6127ba826140e0565b6127c357600080fd5b60006127d2836020015161411a565b60208085015160408051808201909152868152920190820152915050919050565b6127fb614802565b6128048261307d565b61280d57600080fd5b6020820151600061281d8261417d565b80830160209586015260408051808201909152908152938401919091525090919050565b80516000901580159061285657508151602110155b61285f57600080fd5b600061286e836020015161411a565b905080836000015110156128c9576040805162461bcd60e51b815260206004820152601a60248201527f6c656e677468206973206c657373207468616e206f6666736574000000000000604482015290519081900360640190fd5b8251602080850151830180519284900392918310156128ef57826020036101000a820491505b50949350505050565b600060606000806000805b61290c8761307d565b1561295e578261292e57612927612922886127f3565b6142b0565b9150612953565b826001141561294e57612943610eeb886127f3565b905060019350612953565b61295e565b826001019250612903565b836129a4576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b60006110046001600160a01b031663727be1f8836040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b1580156129ee57600080fd5b505af1158015612a02573d6000803e3d6000fd5b505050506040513d6020811015612a1857600080fd5b5051905080612a3d57612a2f6004848460656142ca565b965096505050505050612ad3565b6001600160a01b038316600090815260066020526040902054612a66908363ffffffff61302316565b6001600160a01b038416600081815260066020908152604091829020939093558051858152905191927f7cc266c7b444f808013fa187f7b904d470a051a6564e78f482aa496581ba4bf892918290030190a260408051600080825260208201909252909750955050505050505b915091565b600060606000806000806000805b612aef8961307d565b15612b795784612b0c57612b056129228a6127f3565b9350612b6e565b8460011415612b2857612b216129228a6127f3565b9250612b6e565b8460021415612b4857612b3d610eeb8a6127f3565b915060019550612b6e565b8460031415612b6957612b62612b5d8a6127f3565b6143c6565b9050612b6e565b612b79565b846001019450612ae6565b85612bbf576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b60006110046001600160a01b031663727be1f8846040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b158015612c0957600080fd5b505af1158015612c1d573d6000803e3d6000fd5b505050506040513d6020811015612c3357600080fd5b5051905080612c5a57612c4a6005868560656142ca565b9850985050505050505050612ad3565b6001600160a01b038086166000818152600760209081526040808320948916835293815283822082905591815260089091522054612c9e908463ffffffff61302316565b6001600160a01b0386166000908152600860205260409020558115612d4f576001600160a01b038516600090815260046020526040902054612ce6908463ffffffff612e9b16565b6001600160a01b03808716600090815260046020908152604080832094909455600581528382209288168252919091522054612d28908463ffffffff612e9b16565b6001600160a01b038087166000908152600560209081526040808320938916835292905220555b836001600160a01b0316856001600160a01b03167f35a799836f74fac7eccf5c73902823b970543d2274d3b93d8da3d37a255772a2856040518082815260200191505060405180910390a360408051600080825260208201909252909950975050505050505050915091565b60008184841115612e4a5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612e0f578181015183820152602001612df7565b50505050905090810190601f168015612e3c5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000612e9483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061440a565b9392505050565b6000612e9483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612dbb565b60408051600560a21b8318601482015260348101909152606090612e948161446f565b60606124bf612f0e836144c5565b61446f565b6060815160001415612f345750604080516000815260208101909152610df1565b606082600081518110612f4357fe5b602002602001015190506000600190505b8351811015612f8457612f7a82858381518110612f6d57fe5b60200260200101516145ab565b9150600101612f54565b50612e94612f97825160c060ff16614628565b826145ab565b6040805160028082526060828101909352829190816020015b6060815260200190600190039081612fb6579050509050612fd98460ff16612f00565b81600081518110612fe657fe5b6020026020010181905250612ffa8361446f565b8160018151811061300757fe5b602002602001018190525061301b81612f13565b949350505050565b600082820183811015612e94576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000613087614802565b505080518051602091820151919092015191011190565b80516060906130ac57600080fd5b60006130bb836020015161411a565b83516040805191839003808352601f19601f82011683016020019091529192506060908280156130f2576020820181803683370190505b50905060008160200190506128ef848760200151018285614720565b8051602080830191909120600e546000908152600a909252604082205480821461313d57600092505050610df1565b5050600e80546000908152600a60205260408120558054600190810190915592915050565b60008060008060005b6131748861307d565b156131dd57836131915761318a612922896127f3565b92506131d2565b83600114156131ad576131a6612922896127f3565b91506131d2565b83600214156131cd576131c2610eeb896127f3565b9050600194506131d2565b6131dd565b83600101935061316b565b84613223576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b600061323a826402540be40063ffffffff61476b16565b6001600160a01b0385166000908152600b602052604090208054600019019055905060ff8816600114156133805760ff8716156132ad576040805162461bcd60e51b815260206004820152600c60248201526b77726f6e672073746174757360a01b604482015290519081900360640190fd5b6001600160a01b0384166000908152600460205260409020546132d6908263ffffffff61302316565b6001600160a01b03808616600090815260046020908152604080832094909455600581528382209287168252919091522054613318908263ffffffff61302316565b6001600160a01b038086166000818152600560209081526040808320948916808452948252918290209490945580518581529051929391927f9a57c81564ab02642f34fd87e41baa9b074c18342cec3b7268b62bf752018fd1929181900390910190a361350e565b60ff88166134d2576001600160a01b0384166000908152600860205260409020546133b1908263ffffffff61302316565b6001600160a01b0385166000908152600860209081526040808320939093558251630e4f7c3f60e31b81526004810185905292516110049363727be1f89360248083019493928390030190829087803b15801561340d57600080fd5b505af1158015613421573d6000803e3d6000fd5b505050506040513d602081101561343757600080fd5b5051613480576040805162461bcd60e51b81526020600482015260136024820152721dda5d1a191c985dc8189b988819985a5b1959606a1b604482015290519081900360640190fd5b6040805182815260ff8916602082015281516001600160a01b0380871693908816927fcbd481ae600289fad8c0484d07ce0ffe4f010d7c844ecfdeaf2a13fead52886e929081900390910190a361350e565b6040805162461bcd60e51b815260206004820152600c60248201526b77726f6e672073746174757360a01b604482015290519081900360640190fd5b505050505050505050565b60008060008060005b61352b8861307d565b15613594578361354857613541612922896127f3565b9250613589565b83600114156135645761355d612922896127f3565b9150613589565b836002141561358457613579610eeb896127f3565b905060019450613589565b613594565b836001019350613522565b846135da576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b60006135f1826402540be40063ffffffff61476b16565b6001600160a01b0385166000908152600c602052604090208054600019019055905060ff8816600114156137705760ff871615613664576040805162461bcd60e51b815260206004820152600c60248201526b77726f6e672073746174757360a01b604482015290519081900360640190fd5b6001600160a01b03841660009081526004602052604090205461368d908263ffffffff612e9b16565b6001600160a01b038086166000908152600460209081526040808320949094556005815283822092871682529190915220546136cf908263ffffffff612e9b16565b6001600160a01b0380861660009081526005602090815260408083209388168352929052205561370842620a8c0063ffffffff61302316565b6001600160a01b038086166000818152600760209081526040808320948916808452948252918290209490945580518581529051929391927fd6f878a5bcbbe79a64e6418bb0d56aaa20b9a60587d45749819df88dfc7c3c44929181900390910190a361350e565b60ff88166134d2576001600160a01b03808516600081815260076020908152604080832094881680845294825280832092909255815185815260ff8c169181019190915281517f4417d10c1e33efa83a770b8d4f47176e78c08c1298d534901ad3b16bb585fa2e929181900390910190a361350e565b6000806000806000805b6137f98961307d565b1561387e57846138165761380f6129228a6127f3565b9350613873565b84600114156138325761382b6129228a6127f3565b9250613873565b846002141561384e576138476129228a6127f3565b9150613873565b846003141561386e57613863610eeb8a6127f3565b905060019550613873565b61387e565b8460010194506137f0565b856138c4576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b60006138db826402540be40063ffffffff61476b16565b6001600160a01b0386166000908152600d602052604090208054600019019055905060ff891660011415613aae5760ff88161561394e576040805162461bcd60e51b815260206004820152600c60248201526b77726f6e672073746174757360a01b604482015290519081900360640190fd5b6001600160a01b03808616600090815260056020908152604080832093881683529290522054613984908263ffffffff612e9b16565b6001600160a01b038681166000908152600560209081526040808320898516845290915280822093909355908516815220546139c09082613023565b6001600160a01b038087166000908152600560209081526040808320938816835292905220556139f942620a8c0063ffffffff61302316565b6001600160a01b0380871660009081526009602090815260408083208985168452825280832093881683529290522055613a3c42620a8c0063ffffffff61302316565b6001600160a01b038087166000818152600960209081526040808320898616808552908352818420958b1680855295835292819020959095558451868152945191947f78bffae3f8c6691ac7fc1a3bff800cb2d612f5ad9ae5b0444cfe2eb15c189e18929081900390910190a4613b3f565b60ff89166134d2576001600160a01b038581166000818152600960209081526040808320898616808552818452828520968a16808652968452828520859055908352818420818552835281842093909355805186815260ff8e169281019290925280519293927fb93bee5c59f85ede6b074a99f4ffcd3e3fc0d5c3d8156de331de89a49e0ce77c9281900390910190a45b50505050505050505050565b6000816040516020018082805190602001908083835b60208310613b805780518252601f199092019160209182019101613b61565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405280519060200120836040516020018082805190602001908083835b60208310613bee5780518252601f199092019160209182019101613bcf565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040528051906020012014905092915050565b015190565b60008060008060005b613c498661307d565b15613cb25783613c6657613c5f612922876127f3565b9250613ca7565b8360011415613c8257613c7b612922876127f3565b9150613ca7565b8360021415613ca257613c97610eeb876127f3565b905060019450613ca7565b613cb2565b836001019350613c40565b84613cf8576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b6000613d0f826402540be40063ffffffff61476b16565b6001600160a01b0385166000908152600b6020908152604080832080546000190190556008909152902054909150613d4d908263ffffffff61302316565b6001600160a01b0385166000908152600860209081526040808320939093558251630e4f7c3f60e31b81526004810185905292516110049363727be1f89360248083019493928390030190829087803b158015613da957600080fd5b505af1158015613dbd573d6000803e3d6000fd5b505050506040513d6020811015613dd357600080fd5b5051613e1c576040805162461bcd60e51b81526020600482015260136024820152721dda5d1a191c985dc8189b988819985a5b1959606a1b604482015290519081900360640190fd5b6040516001907ff83de021914a4585482db5ca47d520a5657165b443fa2c7ef8ed4635f054da9b90600090a250505050505050565b60008060008060005b613e638661307d565b15613ecc5783613e8057613e79612922876127f3565b9250613ec1565b8360011415613e9c57613e95612922876127f3565b9150613ec1565b8360021415613ebc57613eb1610eeb876127f3565b905060019450613ec1565b613ecc565b836001019350613e5a565b84613f12576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b6001600160a01b038084166000908152600c60209081526040808320805460001901905560078252808320938616835292905281812081905590516002917ff83de021914a4585482db5ca47d520a5657165b443fa2c7ef8ed4635f054da9b91a2505050505050565b6000806000806000805b613f8e8761307d565b156140135784613fab57613fa4612922886127f3565b9350614008565b8460011415613fc757613fc0612922886127f3565b9250614008565b8460021415613fe357613fdc612922886127f3565b9150614008565b846003141561400357613ff8610eeb886127f3565b905060019550614008565b614013565b846001019450613f85565b85614059576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b6001600160a01b038481166000908152600d602090815260408083208054600019019055600982528083208785168085528184528285209588168552948352818420849055825280832093835292905281812081905590516003917ff83de021914a4585482db5ca47d520a5657165b443fa2c7ef8ed4635f054da9b91a250505050505050565b80516000906140f157506000610df1565b6020820151805160001a9060c082101561411057600092505050610df1565b5060019392505050565b8051600090811a6080811015614134576000915050610df1565b60b881108061414f575060c0811080159061414f575060f881105b1561415e576001915050610df1565b60c08110156141725760b519019050610df1565b60f519019050610df1565b80516000908190811a608081101561419857600191506142a9565b60b88110156141ad57607e19810191506142a9565b60c081101561422757600060b78203600186019550806020036101000a865104915060018101820193505080831015614221576040805162461bcd60e51b81526020600482015260116024820152706164646974696f6e206f766572666c6f7760781b604482015290519081900360640190fd5b506142a9565b60f881101561423c5760be19810191506142a9565b600060f78203600186019550806020036101000a8651049150600181018201935050808310156142a7576040805162461bcd60e51b81526020600482015260116024820152706164646974696f6e206f766572666c6f7760781b604482015290519081900360640190fd5b505b5092915050565b80516000906015146142c157600080fd5b6124bf82612841565b600060606142e3846402540be40063ffffffff612e5216565b60408051600480825260a0820190925291955060609190816020015b60608152602001906001900390816142ff5790505090506143228760ff16612f00565b8160008151811061432f57fe5b602002602001018190525061434c866001600160a01b0316612edd565b8160018151811061435957fe5b602002602001018190525061436d85612f00565b8160028151811061437a57fe5b60200260200101819052506143948463ffffffff16612f00565b816003815181106143a157fe5b602002602001018190525060606143b782612f13565b94989497509395505050505050565b80516000906001146143d757600080fd5b6020820151805160001a908115806143ef5750608082145b156143ff57600092505050610df1565b600192505050610df1565b600081836144595760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315612e0f578181015183820152602001612df7565b50600083858161446557fe5b0495945050505050565b6060815160011480156144a15750607f60f81b8260008151811061448f57fe5b01602001516001600160f81b03191611155b156144ad575080610df1565b6124bf6144bf8351608060ff16614628565b836145ab565b604080516020808252818301909252606091829190602082018180368337505050602081018490529050600067ffffffffffffffff1984166145095750601861452d565b6fffffffffffffffffffffffffffffffff1984166145295750601061452d565b5060005b60208110156145635781818151811061454257fe5b01602001516001600160f81b0319161561455b57614563565b60010161452d565b60008160200390506060816040519080825280601f01601f191660200182016040528015614598576020820181803683370190505b5080830196909652508452509192915050565b6060806040519050835180825260208201818101602087015b818310156145dc5780518352602092830192016145c4565b50855184518101855292509050808201602086015b818310156146095780518352602092830192016145f1565b508651929092011591909101601f01601f191660405250905092915050565b6060680100000000000000008310614678576040805162461bcd60e51b815260206004820152600e60248201526d696e70757420746f6f206c6f6e6760901b604482015290519081900360640190fd5b604080516001808252818301909252606091602082018180368337019050509050603784116146d25782840160f81b816000815181106146b457fe5b60200101906001600160f81b031916908160001a90535090506124bf565b60606146dd856144c5565b90508381510160370160f81b826000815181106146f657fe5b60200101906001600160f81b031916908160001a90535061471782826145ab565b95945050505050565b8061472a576126ef565b5b6020811061474a578251825260209283019290910190601f190161472b565b915181516020939093036101000a6000190180199091169216919091179052565b60008261477a575060006124bf565b8282028284828161478757fe5b0414612e945760405162461bcd60e51b81526004018080602001828103825260218152602001806148ab6021913960400191505060405180910390fd5b60405180606001604052806003906020820280368337509192915050565b60405180604001604052806147f5614802565b8152602001600081525090565b60405180604001604052806000815260200160008152509056fe7468652042534352656c61796572466565206d6f642074656e20646563696d616c73206d757374206265207a65726f7468652042534352656c61796572466565206d757374206265206c657373207468616e2072656c61796572466565746865206d696e44656c65676174696f6e206d7573742062652067726561746572207468616e2072656c61796572466565536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f777468652072656c61796572466565206d6f642074656e20646563696d616c73206d757374206265207a65726f746865206d6573736167652073656e646572206d75737420626520676f7665726e616e636520636f6e74726163747468652072656c61796572466565206d757374206265206c657373207468616e206d696e44656c65676174696f6e7468652072656c61796572466565206d757374206265206d6f7265207468616e2042534352656c61796572466565696e73756666696369656e742062616c616e636520616674657220756e64656c6567617465746865206d6573736167652073656e646572206d7573742062652063726f737320636861696e20636f6e74726163747468652042534352656c61796572466565206d757374206e6f74206265207a65726fa164736f6c6343000604000a", }, { ContractAddr: common.HexToAddress(StakeHubContract), CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/1abdfbf3aeb86909c2220b79bf92b87ddff64b54", - Code: "608060405260043610620003c35760003560e01c80638a4d3fa811620001f7578063d115a2061162000117578063e992aaf511620000ad578063f80a34021162000078578063f80a34021462000b87578063fb50b31f1462000bac578063fc0c5ff11462000bd1578063ff69ab611462000be957600080fd5b8063e992aaf51462000b04578063efdbf0e11462000b1c578063f1f74d841462000b58578063f1fad1041462000b7057600080fd5b8063d8ca511f11620000ee578063d8ca511f1462000a9a578063daacdb661462000ab2578063de88700b1462000aca578063e8f67c3b1462000aec57600080fd5b8063d115a2061462000a38578063d6ca429d1462000a50578063d7c2dfc81462000a7557600080fd5b8063baa7199e116200018d578063c38fbec81162000164578063c38fbec814620009c2578063c473318f14620009e7578063c8509d8114620007e0578063cbb04d9d14620009ff57600080fd5b8063baa7199e146200094f578063bdceadf31462000974578063bff02e20146200098c57600080fd5b8063a43569b311620001ce578063a43569b314620008b1578063aad3ec9614620008e5578063ac431751146200090a578063b187bd26146200092f57600080fd5b80638a4d3fa814620008575780638cd22b221462000875578063982ef0a7146200089a57600080fd5b80634d99dd1611620002e35780636ec01b2711620002795780638129fc1c11620002505780638129fc1c14620007c8578063831d65d114620007e05780638456cb59146200080557806386d54506146200081d57600080fd5b80636ec01b27146200073357806375cc7d89146200078b57806376e7d6d614620007b057600080fd5b80635e7cc1c911620002ba5780635e7cc1c9146200068f57806363a036b514620006b457806364028fbd14620006eb578063663706d3146200070257600080fd5b80634d99dd16146200062d5780634e6fd6c4146200065257806359491871146200066a57600080fd5b806338409988116200035957806345211bfd116200033057806345211bfd14620005745780634838d16514620005995780634a49ac4c14620005de5780634bf6c882146200060357600080fd5b8063384099881462000512578063417c73a7146200052a578063449ecfe6146200054f57600080fd5b80630e9fbf51116200039a5780630e9fbf5114620004445780631182b875146200046957806317b4f353146200049d5780631fa8882b14620004fb57600080fd5b8063046f7da214620003ea5780630661806e1462000402578063092193ab146200042d57600080fd5b36620003e5576000546301000000900460ff16600114620003e357600080fd5b005b600080fd5b348015620003f757600080fd5b50620003e362000c01565b3480156200040f57600080fd5b506200041a60025481565b6040519081526020015b60405180910390f35b620003e36200043e3660046200838e565b62000c62565b3480156200045157600080fd5b50620003e362000463366004620083f2565b620011e8565b3480156200047657600080fd5b506200048e6200048836600462008437565b620014e5565b604051620004249190620084ea565b348015620004aa57600080fd5b50620004e2620004bc366004620085e0565b80516020818301810180516011825292820191909301209152546001600160a01b031681565b6040516001600160a01b03909116815260200162000424565b3480156200050857600080fd5b506200041a603c81565b3480156200051f57600080fd5b506200041a60035481565b3480156200053757600080fd5b50620003e3620005493660046200838e565b620017ce565b3480156200055c57600080fd5b50620003e36200056e3660046200838e565b6200181e565b3480156200058157600080fd5b50620003e3620005933660046200838e565b620019d1565b348015620005a657600080fd5b50620005cd620005b83660046200838e565b601a6020526000908152604090205460ff1681565b604051901515815260200162000424565b348015620005eb57600080fd5b50620003e3620005fd3660046200838e565b62001bac565b3480156200061057600080fd5b506200061a600881565b60405160ff909116815260200162000424565b3480156200063a57600080fd5b50620003e36200064c3660046200862d565b62001bf9565b3480156200065f57600080fd5b50620004e261dead81565b3480156200067757600080fd5b50620003e3620006893660046200866b565b62002216565b3480156200069c57600080fd5b50620003e3620006ae366004620086db565b62002ffd565b348015620006c157600080fd5b50620006d9620006d3366004620086fb565b62003203565b60405162000424949392919062008764565b620003e3620006fc36600462008820565b62003895565b3480156200070f57600080fd5b506200041a620007213660046200838e565b60106020526000908152604090205481565b3480156200074057600080fd5b5062000758620007523660046200838e565b62003eb0565b6040805182516001600160401b039081168252602080850151821690830152928201519092169082015260600162000424565b3480156200079857600080fd5b50620003e3620007aa3660046200838e565b62003f5a565b348015620007bd57600080fd5b506200041a60095481565b348015620007d557600080fd5b50620003e36200412c565b348015620007ed57600080fd5b50620003e3620007ff36600462008437565b62004442565b3480156200081257600080fd5b50620003e3620044ac565b3480156200082a57600080fd5b50620004e26200083c3660046200838e565b600f602052600090815260409020546001600160a01b031681565b3480156200086457600080fd5b506200041a670de0b6b3a764000081565b3480156200088257600080fd5b506200041a620008943660046200862d565b62004512565b620003e3620008ab366004620088f8565b620045cb565b348015620008be57600080fd5b50620008d6620008d03660046200838e565b62004c67565b60405162000424919062008936565b348015620008f257600080fd5b50620003e3620009043660046200862d565b62004f54565b3480156200091757600080fd5b50620003e362000929366004620089bc565b62004fc1565b3480156200093c57600080fd5b5060005462010000900460ff16620005cd565b3480156200095c57600080fd5b50620003e36200096e36600462008a75565b62005e30565b3480156200098157600080fd5b506200041a60085481565b3480156200099957600080fd5b50620009b1620009ab366004620086fb565b62005ffd565b604051620004249392919062008ad1565b348015620009cf57600080fd5b50620003e3620009e13660046200838e565b620061d9565b348015620009f457600080fd5b506200041a60045481565b34801562000a0c57600080fd5b5062000a2462000a1e3660046200838e565b6200646c565b604051620004249695949392919062008b0b565b34801562000a4557600080fd5b506200041a61271081565b34801562000a5d57600080fd5b50620003e362000a6f36600462008b78565b620068df565b34801562000a8257600080fd5b50620003e362000a9436600462008c61565b62006ae1565b34801562000aa757600080fd5b506200041a60075481565b34801562000abf57600080fd5b506200041a60155481565b34801562000ad757600080fd5b50601954620004e2906001600160a01b031681565b34801562000af957600080fd5b506200041a60015481565b34801562000b1157600080fd5b506200041a60065481565b34801562000b2957600080fd5b506200041a62000b3b366004620085e0565b805160208183018101805160128252928201919093012091525481565b34801562000b6557600080fd5b506200041a600a5481565b34801562000b7d57600080fd5b506200061a601181565b34801562000b9457600080fd5b506200041a62000ba63660046200862d565b62006bd7565b34801562000bb957600080fd5b50620003e362000bcb366004620089bc565b62006c48565b34801562000bde57600080fd5b506200041a60055481565b34801562000bf657600080fd5b506200041a60165481565b6019546001600160a01b0316331462000c2d5760405163f2771a9960e01b815260040160405180910390fd5b6000805462ff0000191681556040517f62451d457bc659158be6e6247f56ec1df424a5c7597f71c20c2bc44e0965c8f99190a1565b336110001462000c8e57604051630f22c43960e41b815261100060048201526024015b60405180910390fd5b6001600160a01b038082166000908152600f60209081526040808320548416808452600d835281842082516101608101845281548716815260018201548716948101949094526002810154909516918301919091526003840154606083015260048401805491949160808401919062000d079062008cc7565b80601f016020809104026020016040519081016040528092919081815260200182805462000d359062008cc7565b801562000d865780601f1062000d5a5761010080835404028352916020019162000d86565b820191906000526020600020905b81548152906001019060200180831162000d6857829003601f168201915b505050505081526020016005820160405180608001604052908160008201805462000db19062008cc7565b80601f016020809104026020016040519081016040528092919081815260200182805462000ddf9062008cc7565b801562000e305780601f1062000e045761010080835404028352916020019162000e30565b820191906000526020600020905b81548152906001019060200180831162000e1257829003601f168201915b5050505050815260200160018201805462000e4b9062008cc7565b80601f016020809104026020016040519081016040528092919081815260200182805462000e799062008cc7565b801562000eca5780601f1062000e9e5761010080835404028352916020019162000eca565b820191906000526020600020905b81548152906001019060200180831162000eac57829003601f168201915b5050505050815260200160028201805462000ee59062008cc7565b80601f016020809104026020016040519081016040528092919081815260200182805462000f139062008cc7565b801562000f645780601f1062000f385761010080835404028352916020019162000f64565b820191906000526020600020905b81548152906001019060200180831162000f4657829003601f168201915b5050505050815260200160038201805462000f7f9062008cc7565b80601f016020809104026020016040519081016040528092919081815260200182805462000fad9062008cc7565b801562000ffe5780601f1062000fd25761010080835404028352916020019162000ffe565b820191906000526020600020905b81548152906001019060200180831162000fe057829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152805161028081019182905260a09092019190600d84019060149082845b8154815260200190600101908083116200108a575050509190925250505060408101519091506001600160a01b03161580620010c757508060e001515b156200113857816001600160a01b03167ffc8bff675087dd2da069cc3fb517b9ed001e19750c0865241a5542dba1ba170d6040516200112b9060208082526011908201527024a72b20a624a22fab20a624a220aa27a960791b604082015260600190565b60405180910390a2505050565b60408181015160c0830151519151632f303ebb60e11b81526001600160401b0390921660048301526001600160a01b031690635e607d769034906024016000604051808303818588803b1580156200118f57600080fd5b505af1158015620011a4573d6000803e3d6000fd5b5050505050816001600160a01b03167fe34918ff1c7084970068b53fd71ad6d8b04e9f15d3886cbf006443e6cdc52ea6346040516200112b91815260200190565b50565b33611001146200121057604051630f22c43960e41b8152611001600482015260240162000c85565b6000601183836040516200122692919062008cfd565b908152604051908190036020019020546001600160a01b031690506200124e600b8262006e8f565b6200126c5760405163fdf4600b60e01b815260040160405180910390fd5b6001600160a01b0381166000908152600d602052604081209062001292603c4262008d23565b60165460008281526017602052604090205491925011620012c65760405163bd52fcdb60e01b815260040160405180910390fd5b6000818152601760205260408120805460019290620012e790849062008d46565b909155505060405160129062001301908790879062008cfd565b90815260200160405180910390205460001415801562001350575042603c601287876040516200133392919062008cfd565b9081526020016040518091039020546200134e919062008d46565b105b156200136f57604051631898eb6b60e01b815260040160405180910390fd5b6000806200137f85600262006eb2565b9150915081620013a257604051631b919bb160e11b815260040160405180910390fd5b600284015460085460405163045bc4d160e41b815260048101919091526000916001600160a01b0316906345bc4d10906024016020604051808303816000875af1158015620013f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200141b919062008d5c565b905062001429858362006f3c565b856001600160a01b03167f6e9a2ee7aee95665e3a774a212eb11441b217e3e4656ab9563793094689aabb283836002604051620014699392919062008d8c565b60405180910390a26002850154604051633041949b60e01b815261200591633041949b91620014a7916001600160a01b0316908a9060040162008dbb565b600060405180830381600087803b158015620014c257600080fd5b505af1158015620014d7573d6000803e3d6000fd5b505050505050505050505050565b606033612000146200150f57604051630f22c43960e41b8152612000600482015260240162000c85565b6000806200155385858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250620070a392505050565b9150915080620015765760405163035ede3560e21b815260040160405180910390fd5b81606001516000036200159c5750506040805160008152602081019091529050620017c7565b6000805463ff00000019166301000000178155606083015160405163e04c83a760e01b81526110049163e04c83a791620015dd919060040190815260200190565b6020604051808303816000875af1158015620015fd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001623919062008dd5565b905080620016d55782602001516001600160a01b031683600001516001600160a01b03167fa9084c89a291b43bc984e045671d394974730a159b9a826b577bb148ab504c3a856060015160016040516200167f92919062008df5565b60405180910390a36000805463ff00000019169055604080516020601f8801819004810282018101909252868152908790879081908401838280828437600092019190915250929650620017c795505050505050565b6000805463ff00000019168155620016ed8462007206565b9050600081600581111562001706576200170662008d76565b03620017285750506040805160008152602081019091529250620017c7915050565b83602001516001600160a01b031684600001516001600160a01b03167fa9084c89a291b43bc984e045671d394974730a159b9a826b577bb148ab504c3a8660600151846040516200177b92919062008df5565b60405180910390a386868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929750620017c79650505050505050565b9392505050565b6019546001600160a01b03163314620017fa5760405163f2771a9960e01b815260040160405180910390fd5b6001600160a01b03166000908152601a60205260409020805460ff19166001179055565b60005462010000900460ff1615620018495760405163d7485e8f60e01b815260040160405180910390fd5b8062001857600b8262006e8f565b620018755760405163fdf4600b60e01b815260040160405180910390fd5b6001600160a01b0382166000908152600d60205260409020600a81015460ff16620018b357604051634b6b857d60e01b815260040160405180910390fd5b6002805490820154604051630913db4760e01b81526001600160a01b03868116600483015290911690630913db4790602401602060405180830381865afa15801562001903573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001929919062008d5c565b101562001949576040516317b204bf60e11b815260040160405180910390fd5b4281600b015411156200196f5760405163170cb76760e21b815260040160405180910390fd5b600a8101805460ff1916905560158054600191906000906200199390849062008e1c565b90915550506040516001600160a01b038416907f9390b453426557da5ebdc31f19a37753ca04addf656d32f35232211bb2af3f1990600090a2505050565b60005462010000900460ff1615620019fc5760405163d7485e8f60e01b815260040160405180910390fd5b336000908152601a602052604090205460ff161562001a2e5760405163b1d02c3d60e01b815260040160405180910390fd5b3362001a3c600b8262006e8f565b62001a5a5760405163fdf4600b60e01b815260040160405180910390fd5b6001600160a01b03821662001a8257604051636520611b60e11b815260040160405180910390fd5b6001600160a01b038281166000908152600f60205260409020541615158062001ac357506001600160a01b03821660009081526013602052604090205460ff165b1562001ae257604051631e6f587560e11b815260040160405180910390fd5b336000818152600d60205260409020600c810154429062001b0690603c9062008d46565b111562001b2657604051631f92cdbd60e11b815260040160405180910390fd5b80546001600160a01b039081166000908152601060209081526040808320429081905585548986166001600160a01b031991821681178855600c880192909255818552600f9093528184208054958816959093168517909255519092917f6e4e747ca35203f16401c69805c7dd52fff67ef60b0ebc5c7fe16890530f223591a350505050565b6019546001600160a01b0316331462001bd85760405163f2771a9960e01b815260040160405180910390fd5b6001600160a01b03166000908152601a60205260409020805460ff19169055565b60005462010000900460ff161562001c245760405163d7485e8f60e01b815260040160405180910390fd5b336000908152601a602052604090205460ff161562001c565760405163b1d02c3d60e01b815260040160405180910390fd5b8162001c64600b8262006e8f565b62001c825760405163fdf4600b60e01b815260040160405180910390fd5b8160000362001ca457604051639811e0c760e01b815260040160405180910390fd5b6001600160a01b038084166000908152600d60209081526040808320815161016081018352815486168152600182015486169381019390935260028101549094169082015260038301546060820152600483018054339491608084019162001d0c9062008cc7565b80601f016020809104026020016040519081016040528092919081815260200182805462001d3a9062008cc7565b801562001d8b5780601f1062001d5f5761010080835404028352916020019162001d8b565b820191906000526020600020905b81548152906001019060200180831162001d6d57829003601f168201915b505050505081526020016005820160405180608001604052908160008201805462001db69062008cc7565b80601f016020809104026020016040519081016040528092919081815260200182805462001de49062008cc7565b801562001e355780601f1062001e095761010080835404028352916020019162001e35565b820191906000526020600020905b81548152906001019060200180831162001e1757829003601f168201915b5050505050815260200160018201805462001e509062008cc7565b80601f016020809104026020016040519081016040528092919081815260200182805462001e7e9062008cc7565b801562001ecf5780601f1062001ea35761010080835404028352916020019162001ecf565b820191906000526020600020905b81548152906001019060200180831162001eb157829003601f168201915b5050505050815260200160028201805462001eea9062008cc7565b80601f016020809104026020016040519081016040528092919081815260200182805462001f189062008cc7565b801562001f695780601f1062001f3d5761010080835404028352916020019162001f69565b820191906000526020600020905b81548152906001019060200180831162001f4b57829003601f168201915b5050505050815260200160038201805462001f849062008cc7565b80601f016020809104026020016040519081016040528092919081815260200182805462001fb29062008cc7565b8015620020035780601f1062001fd75761010080835404028352916020019162002003565b820191906000526020600020905b81548152906001019060200180831162001fe557829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152805161028081019182905260a09092019190600d84019060149082845b8154815260200190600101908083116200208f575050509190925250505060408082015190516326ccee8b60e11b81526001600160a01b0385811660048301526024820188905292935060009290911690634d99dd16906044016020604051808303816000875af115801562002109573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200212f919062008d5c565b9050826001600160a01b0316866001600160a01b03167f3aace7340547de7b9156593a7652dc07ee900cea3fd8f82cb6c9d38b40829802878460405162002180929190918252602082015260400190565b60405180910390a3856001600160a01b0316836001600160a01b031603620021ad57620021ad8662007849565b6040808301519051633041949b60e01b815261200591633041949b91620021da9190879060040162008dbb565b600060405180830381600087803b158015620021f557600080fd5b505af11580156200220a573d6000803e3d6000fd5b50505050505050505050565b60005462010000900460ff1615620022415760405163d7485e8f60e01b815260040160405180910390fd5b336000908152601a602052604090205460ff1615620022735760405163b1d02c3d60e01b815260040160405180910390fd5b8362002281600b8262006e8f565b6200229f5760405163fdf4600b60e01b815260040160405180910390fd5b83620022ad600b8262006e8f565b620022cb5760405163fdf4600b60e01b815260040160405180910390fd5b83600003620022ed57604051639811e0c760e01b815260040160405180910390fd5b846001600160a01b0316866001600160a01b031603620023205760405163f0e3e62960e01b815260040160405180910390fd5b6001600160a01b038087166000908152600d602090815260408083208151610160810183528154861681526001820154861693810193909352600281015490941690820152600383015460608201526004830180543394916080840191620023889062008cc7565b80601f0160208091040260200160405190810160405280929190818152602001828054620023b69062008cc7565b8015620024075780601f10620023db5761010080835404028352916020019162002407565b820191906000526020600020905b815481529060010190602001808311620023e957829003601f168201915b5050505050815260200160058201604051806080016040529081600082018054620024329062008cc7565b80601f0160208091040260200160405190810160405280929190818152602001828054620024609062008cc7565b8015620024b15780601f106200248557610100808354040283529160200191620024b1565b820191906000526020600020905b8154815290600101906020018083116200249357829003601f168201915b50505050508152602001600182018054620024cc9062008cc7565b80601f0160208091040260200160405190810160405280929190818152602001828054620024fa9062008cc7565b80156200254b5780601f106200251f576101008083540402835291602001916200254b565b820191906000526020600020905b8154815290600101906020018083116200252d57829003601f168201915b50505050508152602001600282018054620025669062008cc7565b80601f0160208091040260200160405190810160405280929190818152602001828054620025949062008cc7565b8015620025e55780601f10620025b957610100808354040283529160200191620025e5565b820191906000526020600020905b815481529060010190602001808311620025c757829003601f168201915b50505050508152602001600382018054620026009062008cc7565b80601f01602080910402602001604051908101604052809291908181526020018280546200262e9062008cc7565b80156200267f5780601f1062002653576101008083540402835291602001916200267f565b820191906000526020600020905b8154815290600101906020018083116200266157829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152805161028081019182905260a09092019190600d84019060149082845b8154815260200190600101908083116200270b57505050919092525050506001600160a01b038089166000908152600d6020908152604080832081516101608101835281548616815260018201548616938101939093526002810154909416908201526003830154606082015260048301805494955091939092916080840191620027969062008cc7565b80601f0160208091040260200160405190810160405280929190818152602001828054620027c49062008cc7565b8015620028155780601f10620027e95761010080835404028352916020019162002815565b820191906000526020600020905b815481529060010190602001808311620027f757829003601f168201915b5050505050815260200160058201604051806080016040529081600082018054620028409062008cc7565b80601f01602080910402602001604051908101604052809291908181526020018280546200286e9062008cc7565b8015620028bf5780601f106200289357610100808354040283529160200191620028bf565b820191906000526020600020905b815481529060010190602001808311620028a157829003601f168201915b50505050508152602001600182018054620028da9062008cc7565b80601f0160208091040260200160405190810160405280929190818152602001828054620029089062008cc7565b8015620029595780601f106200292d5761010080835404028352916020019162002959565b820191906000526020600020905b8154815290600101906020018083116200293b57829003601f168201915b50505050508152602001600282018054620029749062008cc7565b80601f0160208091040260200160405190810160405280929190818152602001828054620029a29062008cc7565b8015620029f35780601f10620029c757610100808354040283529160200191620029f3565b820191906000526020600020905b815481529060010190602001808311620029d557829003601f168201915b5050505050815260200160038201805462002a0e9062008cc7565b80601f016020809104026020016040519081016040528092919081815260200182805462002a3c9062008cc7565b801562002a8d5780601f1062002a615761010080835404028352916020019162002a8d565b820191906000526020600020905b81548152906001019060200180831162002a6f57829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152805161028081019182905260a09092019190600d84019060149082845b81548152602001906001019080831162002b195750505050508152505090508060e00151801562002b5c5750876001600160a01b0316836001600160a01b031614155b1562002b7b57604051636468920360e01b815260040160405180910390fd5b6000805463ff0000001916630100000017815560408381015190516352e82ce560e11b81526001600160a01b038681166004830152602482018b90529091169063a5d059ca906044016020604051808303816000875af115801562002be4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002c0a919062008d5c565b905060035481101562002c305760405163dc6f0bdd60e01b815260040160405180910390fd5b896001600160a01b0316846001600160a01b031614801562002cc557506002546040808501519051630913db4760e01b81526001600160a01b038d8116600483015290911690630913db4790602401602060405180830381865afa15801562002c9d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002cc3919062008d5c565b105b1562002ce4576040516317b204bf60e11b815260040160405180910390fd5b60006127106006548362002cf9919062008e32565b62002d05919062008d23565b9050600083604001516001600160a01b03168260405160006040518083038185875af1925050503d806000811462002d5a576040519150601f19603f3d011682016040523d82523d6000602084013e62002d5f565b606091505b505090508062002d82576040516312171d8360e31b815260040160405180910390fd5b62002d8e828462008e1c565b60408086015190516317066a5760e21b81526001600160a01b03898116600483015292955060009290911690635c19a95c90869060240160206040518083038185885af115801562002de4573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019062002e0b919062008d5c565b905060008060036101000a81548160ff021916908360ff160217905550866001600160a01b03168c6001600160a01b03168e6001600160a01b03167ffdac6e81913996d95abcc289e90f2d8bd235487ce6fe6f821e7d21002a1915b48e858960405162002e8b939291909283526020830191909152604082015260600190565b60405180910390a460408051600280825260608201835260009260208301908036833701905050905086604001518160008151811062002ecf5762002ecf62008e4c565b60200260200101906001600160a01b031690816001600160a01b03168152505085604001518160018151811062002f0a5762002f0a62008e4c565b6001600160a01b0390921660209283029190910190910152604051634484077560e01b81526120059063448407759062002f4b9084908c9060040162008e62565b600060405180830381600087803b15801562002f6657600080fd5b505af115801562002f7b573d6000803e3d6000fd5b505050508a1562002fed576120056001600160a01b031663e5ed5b1e898f6040518363ffffffff1660e01b815260040162002fb892919062008dbb565b600060405180830381600087803b15801562002fd357600080fd5b505af115801562002fe8573d6000803e3d6000fd5b505050505b5050505050505050505050505050565b60005462010000900460ff1615620030285760405163d7485e8f60e01b815260040160405180910390fd5b336000908152601a602052604090205460ff16156200305a5760405163b1d02c3d60e01b815260040160405180910390fd5b3362003068600b8262006e8f565b620030865760405163fdf4600b60e01b815260040160405180910390fd5b336000818152600d60205260409020600c8101544290620030aa90603c9062008d46565b1115620030ca57604051631f92cdbd60e11b815260040160405180910390fd5b60098101546001600160401b03600160401b90910481169085161115620031045760405163dc81db8560e01b815260040160405180910390fd5b60098101546000906001600160401b039081169086161015620031425760098201546200313c9086906001600160401b031662008e8e565b6200315c565b60098201546200315c906001600160401b03168662008e8e565b60098301546001600160401b039182169250600160801b900416811115620031975760405163dc81db8560e01b815260040160405180910390fd5b60098201805467ffffffffffffffff19166001600160401b03871690811790915542600c8401556040519081526001600160a01b038416907f78cdd96edf59e09cfd4d26ef6ef6c92d166effe6a40970c54821206d541932cb9060200160405180910390a25050505050565b6060806060600062003216600b620079c2565b9050808610156200388c5784156200322f578462003231565b805b945060008562003242888462008e1c565b116200325a5762003254878362008e1c565b6200325c565b855b9050806001600160401b03811115620032795762003279620084ff565b604051908082528060200260200182016040528015620032a3578160200160208202803683370190505b509450806001600160401b03811115620032c157620032c1620084ff565b604051908082528060200260200182016040528015620032eb578160200160208202803683370190505b509350806001600160401b03811115620033095762003309620084ff565b6040519080825280602002602001820160405280156200333e57816020015b6060815260200190600190039081620033285790505b50925060005b8181101562003889576000620033686200335f838b62008d46565b600b90620079cd565b6001600160a01b038082166000908152600d6020908152604080832081516101608101835281548616815260018201548616938101939093526002810154909416908201526003830154606082015260048301805494955091939092916080840191620033d59062008cc7565b80601f0160208091040260200160405190810160405280929190818152602001828054620034039062008cc7565b8015620034545780601f10620034285761010080835404028352916020019162003454565b820191906000526020600020905b8154815290600101906020018083116200343657829003601f168201915b50505050508152602001600582016040518060800160405290816000820180546200347f9062008cc7565b80601f0160208091040260200160405190810160405280929190818152602001828054620034ad9062008cc7565b8015620034fe5780601f10620034d257610100808354040283529160200191620034fe565b820191906000526020600020905b815481529060010190602001808311620034e057829003601f168201915b50505050508152602001600182018054620035199062008cc7565b80601f0160208091040260200160405190810160405280929190818152602001828054620035479062008cc7565b8015620035985780601f106200356c5761010080835404028352916020019162003598565b820191906000526020600020905b8154815290600101906020018083116200357a57829003601f168201915b50505050508152602001600282018054620035b39062008cc7565b80601f0160208091040260200160405190810160405280929190818152602001828054620035e19062008cc7565b8015620036325780601f10620036065761010080835404028352916020019162003632565b820191906000526020600020905b8154815290600101906020018083116200361457829003601f168201915b505050505081526020016003820180546200364d9062008cc7565b80601f01602080910402602001604051908101604052809291908181526020018280546200367b9062008cc7565b8015620036cc5780601f10620036a057610100808354040283529160200191620036cc565b820191906000526020600020905b815481529060010190602001808311620036ae57829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152805161028081019182905260a09092019190600d84019060149082845b81548152602001906001019080831162003758575050505050815250509050806000015188848151811062003791576200379162008e4c565b60200260200101906001600160a01b031690816001600160a01b0316815250508060e001516200382a5780604001516001600160a01b03166315d1f8986040518163ffffffff1660e01b8152600401602060405180830381865afa158015620037fe573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003824919062008d5c565b6200382d565b60005b87848151811062003842576200384262008e4c565b602002602001018181525050806080015186848151811062003868576200386862008e4c565b6020026020010181905250505080620038819062008eb1565b905062003344565b50505b92959194509250565b60005462010000900460ff1615620038c05760405163d7485e8f60e01b815260040160405180910390fd5b336000908152601a602052604090205460ff1615620038f25760405163b1d02c3d60e01b815260040160405180910390fd5b3362003900600b8262006e8f565b156200391f57604051635f28f62b60e01b815260040160405180910390fd5b6001600160a01b038881166000908152600f6020526040902054161515806200396057506001600160a01b03881660009081526013602052604090205460ff165b156200397f57604051631e6f587560e11b815260040160405180910390fd5b60006001600160a01b0316601188886040516200399e92919062008cfd565b908152604051908190036020019020546001600160a01b0316141580620039e8575060148787604051620039d492919062008cfd565b9081526040519081900360200190205460ff165b1562003a07576040516311fdb94760e01b815260040160405180910390fd5b600062003a15838062008ecd565b60405160200162003a2892919062008cfd565b60408051601f1981840301815291815281516020928301206000818152600e90935291205490915060ff161562003a725760405163c0bf414360e01b815260040160405180910390fd5b600254349062003a8c90670de0b6b3a76400009062008d46565b81101562003aad576040516317b204bf60e11b815260040160405180910390fd5b6001600160a01b038a1662003ad557604051636520611b60e11b815260040160405180910390fd5b61138862003aea6040870160208801620086db565b6001600160401b0316118062003b30575062003b0d6040860160208701620086db565b6001600160401b031662003b256020870187620086db565b6001600160401b0316115b8062003b6f575062003b496040860160208701620086db565b6001600160401b031662003b646060870160408801620086db565b6001600160401b0316115b1562003b8e5760405163dc81db8560e01b815260040160405180910390fd5b62003bd962003b9e858062008ecd565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250620079db92505050565b62003bf757604051635dba5ad760e01b815260040160405180910390fd5b62003c058989898962007b7d565b62003c2357604051631647e3cb60e11b815260040160405180910390fd5b600062003c718462003c36878062008ecd565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525062007caa92505050565b905062003c80600b8562007d74565b506000838152600e60209081526040808320805460ff191660019081179091556001600160a01b03808916808652600d9094529190932080548f83166001600160a01b03199182161782559381018054851690931790925560028201805491851691909316179091554260038201556004810162003d008b8d8362008f75565b50856005820162003d1282826200903d565b508790506009820162003d26828262009176565b505042600c8201556001600160a01b038c81166000908152600f60205260409081902080546001600160a01b0319169288169290921790915551859060119062003d74908e908e9062008cfd565b908152602001604051809103902060006101000a8154816001600160a01b0302191690836001600160a01b03160217905550816001600160a01b0316856001600160a01b03168d6001600160a01b03167faecd9fb95e79c75a3a1de93362c6be5fe6ab65770d8614be583884161cd8228d8e8e60405162003df792919062009246565b60405180910390a460408051848152602081018590526001600160a01b0387169182917f24d7bda8602b916d64417f0dbfe2e2e88ec9b1157bd9f596dfdb91ba26624e04910160405180910390a3604051633041949b60e01b815261200590633041949b9062003e6e908590899060040162008dbb565b600060405180830381600087803b15801562003e8957600080fd5b505af115801562003e9e573d6000803e3d6000fd5b50505050505050505050505050505050565b60408051606081018252600080825260208201819052918101919091528162003edb600b8262006e8f565b62003ef95760405163fdf4600b60e01b815260040160405180910390fd5b6001600160a01b0383166000908152600d602090815260409182902082516060810184526009909101546001600160401b038082168352600160401b8204811693830193909352600160801b90049091169181019190915291505b50919050565b336110011462003f8257604051630f22c43960e41b8152611001600482015260240162000c85565b6001600160a01b038082166000908152600f60205260409020541662003faa600b8262006e8f565b62003fc85760405163fdf4600b60e01b815260040160405180910390fd5b6001600160a01b038181166000908152600d60205260408082206002810154600754925163045bc4d160e41b81526004810193909352909316906345bc4d10906024016020604051808303816000875af11580156200402b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004051919062008d5c565b905060006009544262004065919062008d46565b905062004073838262006f3c565b836001600160a01b03167f6e9a2ee7aee95665e3a774a212eb11441b217e3e4656ab9563793094689aabb282846001604051620040b39392919062008d8c565b60405180910390a26002830154604051633041949b60e01b815261200591633041949b91620040f1916001600160a01b031690889060040162008dbb565b600060405180830381600087803b1580156200410c57600080fd5b505af115801562004121573d6000803e3d6000fd5b505050505050505050565b600054610100900460ff16158080156200414d5750600054600160ff909116105b80620041695750303b15801562004169575060005460ff166001145b620041ce5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840162000c85565b6000805460ff191660011790558015620041f2576000805461ff0019166101001790555b334114620042135760405163022d8c9560e31b815260040160405180910390fd5b3a1562004233576040516383f1b1d360e01b815260040160405180910390fd5b611388600155686c6b935b8bbd4000006002908155670de0b6b3a7640000600355602d600455607860058190556006829055678ac7230489e80000600755680ad78ebc5ac620000060085560095560b4600a556016556040805160c0810190915260a080825260609182916200a5326020830139806020019051810190620042bc919062009282565b9150604051806101e001604052806101c081526020016200a5d26101c09139806020019051810190620042f0919062009326565b905060005b82518110156200435f576001601360008584815181106200431a576200431a62008e4c565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055620043578162008eb1565b9050620042f5565b5060005b8151811015620043d0576001601483838151811062004386576200438662008e4c565b60200260200101516040516200439d919062009423565b908152604051908190036020019020805491151560ff19909216919091179055620043c88162008eb1565b905062004363565b5050601980546001600160a01b03191673df87f0e2b8519ea2dd4abd8b639cdd628497ed25179055508015620011e5576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b33612000146200446a57604051630f22c43960e41b8152612000600482015260240162000c85565b7f41ce201247b6ceb957dcdb217d0b8acb50b9ea0e12af9af4f5e7f389021016058383836040516200449f9392919062009441565b60405180910390a1505050565b6019546001600160a01b03163314620044d85760405163f2771a9960e01b815260040160405180910390fd5b6000805462ff00001916620100001781556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e7529190a1565b600062004521600b8462006e8f565b6200453f5760405163fdf4600b60e01b815260040160405180910390fd5b6001600160a01b038381166000908152600d602052604090819020600201549051636bbf224960e01b815260048101859052911690636bbf2249906024015b602060405180830381865afa1580156200459c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620045c2919062008d5c565b90505b92915050565b60005462010000900460ff1615620045f65760405163d7485e8f60e01b815260040160405180910390fd5b336000908152601a602052604090205460ff1615620046285760405163b1d02c3d60e01b815260040160405180910390fd5b8162004636600b8262006e8f565b620046545760405163fdf4600b60e01b815260040160405180910390fd5b60035434908110156200467a5760405163dc6f0bdd60e01b815260040160405180910390fd5b6001600160a01b038085166000908152600d602090815260408083208151610160810183528154861681526001820154861693810193909352600281015490941690820152600383015460608201526004830180543394916080840191620046e29062008cc7565b80601f0160208091040260200160405190810160405280929190818152602001828054620047109062008cc7565b8015620047615780601f10620047355761010080835404028352916020019162004761565b820191906000526020600020905b8154815290600101906020018083116200474357829003601f168201915b50505050508152602001600582016040518060800160405290816000820180546200478c9062008cc7565b80601f0160208091040260200160405190810160405280929190818152602001828054620047ba9062008cc7565b80156200480b5780601f10620047df576101008083540402835291602001916200480b565b820191906000526020600020905b815481529060010190602001808311620047ed57829003601f168201915b50505050508152602001600182018054620048269062008cc7565b80601f0160208091040260200160405190810160405280929190818152602001828054620048549062008cc7565b8015620048a55780601f106200487957610100808354040283529160200191620048a5565b820191906000526020600020905b8154815290600101906020018083116200488757829003601f168201915b50505050508152602001600282018054620048c09062008cc7565b80601f0160208091040260200160405190810160405280929190818152602001828054620048ee9062008cc7565b80156200493f5780601f1062004913576101008083540402835291602001916200493f565b820191906000526020600020905b8154815290600101906020018083116200492157829003601f168201915b505050505081526020016003820180546200495a9062008cc7565b80601f0160208091040260200160405190810160405280929190818152602001828054620049889062008cc7565b8015620049d95780601f10620049ad57610100808354040283529160200191620049d9565b820191906000526020600020905b815481529060010190602001808311620049bb57829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152805161028081019182905260a09092019190600d84019060149082845b81548152602001906001019080831162004a655750505050508152505090508060e00151801562004aa85750856001600160a01b0316826001600160a01b031614155b1562004ac757604051636468920360e01b815260040160405180910390fd5b60408082015190516317066a5760e21b81526001600160a01b0384811660048301526000921690635c19a95c90869060240160206040518083038185885af115801562004b18573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019062004b3f919062008d5c565b9050826001600160a01b0316876001600160a01b03167f24d7bda8602b916d64417f0dbfe2e2e88ec9b1157bd9f596dfdb91ba26624e04838760405162004b90929190918252602082015260400190565b60405180910390a36040808301519051633041949b60e01b815261200591633041949b9162004bc59190879060040162008dbb565b600060405180830381600087803b15801562004be057600080fd5b505af115801562004bf5573d6000803e3d6000fd5b50505050851562004c5e576040516372f6ad8f60e11b81526120059063e5ed5b1e9062004c299086908b9060040162008dbb565b600060405180830381600087803b15801562004c4457600080fd5b505af115801562004c59573d6000803e3d6000fd5b505050505b50505050505050565b62004c936040518060800160405280606081526020016060815260200160608152602001606081525090565b8162004ca1600b8262006e8f565b62004cbf5760405163fdf4600b60e01b815260040160405180910390fd5b6001600160a01b0383166000908152600d60205260409081902081516080810190925260050180548290829062004cf69062008cc7565b80601f016020809104026020016040519081016040528092919081815260200182805462004d249062008cc7565b801562004d755780601f1062004d495761010080835404028352916020019162004d75565b820191906000526020600020905b81548152906001019060200180831162004d5757829003601f168201915b5050505050815260200160018201805462004d909062008cc7565b80601f016020809104026020016040519081016040528092919081815260200182805462004dbe9062008cc7565b801562004e0f5780601f1062004de35761010080835404028352916020019162004e0f565b820191906000526020600020905b81548152906001019060200180831162004df157829003601f168201915b5050505050815260200160028201805462004e2a9062008cc7565b80601f016020809104026020016040519081016040528092919081815260200182805462004e589062008cc7565b801562004ea95780601f1062004e7d5761010080835404028352916020019162004ea9565b820191906000526020600020905b81548152906001019060200180831162004e8b57829003601f168201915b5050505050815260200160038201805462004ec49062008cc7565b80601f016020809104026020016040519081016040528092919081815260200182805462004ef29062008cc7565b801562004f435780601f1062004f175761010080835404028352916020019162004f43565b820191906000526020600020905b81548152906001019060200180831162004f2557829003601f168201915b505050505081525050915050919050565b60005462010000900460ff161562004f7f5760405163d7485e8f60e01b815260040160405180910390fd5b336000908152601a602052604090205460ff161562004fb15760405163b1d02c3d60e01b815260040160405180910390fd5b62004fbd828262007d8b565b5050565b336110071462004fe957604051630f22c43960e41b8152611007600482015260240162000c85565b620050566040518060400160405280601081526020016f1d1c985b9cd9995c91d85cd31a5b5a5d60821b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062007e979050565b15620051045760208114620050885783838383604051630a5a604160e01b815260040162000c85949392919062009460565b604080516020601f8401819004810282018101909252828152600091620050cb91858580838501838280828437600092019190915250929392505062007ef49050565b90506108fc811015620050fb5784848484604051630a5a604160e01b815260040162000c85949392919062009460565b60015562005deb565b620051756040518060400160405280601481526020017336b4b729b2b6332232b632b3b0ba34b7b721272160611b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062007e979050565b156200522a5760208114620051a75783838383604051630a5a604160e01b815260040162000c85949392919062009460565b604080516020601f8401819004810282018101909252828152600091620051ea91858580838501838280828437600092019190915250929392505062007ef49050565b9050683635c9adc5dea00000811015620052215784848484604051630a5a604160e01b815260040162000c85949392919062009460565b60025562005deb565b6200529d604051806040016040528060168152602001756d696e44656c65676174696f6e424e424368616e676560501b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062007e979050565b15620053515760208114620052cf5783838383604051630a5a604160e01b815260040162000c85949392919062009460565b604080516020601f84018190048102820181019092528281526000916200531291858580838501838280828437600092019190915250929392505062007ef49050565b905067016345785d8a0000811015620053485784848484604051630a5a604160e01b815260040162000c85949392919062009460565b60035562005deb565b620053c2604051806040016040528060148152602001736d6178456c656374656456616c696461746f727360601b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062007e979050565b156200547c5760208114620053f45783838383604051630a5a604160e01b815260040162000c85949392919062009460565b604080516020601f84018190048102820181019092528281526000916200543791858580838501838280828437600092019190915250929392505062007ef49050565b905060018110806200544a57506101f481115b15620054735784848484604051630a5a604160e01b815260040162000c85949392919062009460565b60045562005deb565b620054e56040518060400160405280600c81526020016b1d5b989bdb9914195c9a5bd960a21b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062007e979050565b15620055945760208114620055175783838383604051630a5a604160e01b815260040162000c85949392919062009460565b604080516020601f84018190048102820181019092528281526000916200555a91858580838501838280828437600092019190915250929392505062007ef49050565b90506203f4808110156200558b5784848484604051630a5a604160e01b815260040162000c85949392919062009460565b60055562005deb565b6200560260405180604001604052806011815260200170726564656c65676174654665655261746560781b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062007e979050565b15620056af5760208114620056345783838383604051630a5a604160e01b815260040162000c85949392919062009460565b604080516020601f84018190048102820181019092528281526000916200567791858580838501838280828437600092019190915250929392505062007ef49050565b90506064811115620056a65784848484604051630a5a604160e01b815260040162000c85949392919062009460565b60065562005deb565b6200571f60405180604001604052806013815260200172191bdddb9d1a5b5954db185cda105b5bdd5b9d606a1b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062007e979050565b15620057e05760208114620057515783838383604051630a5a604160e01b815260040162000c85949392919062009460565b604080516020601f84018190048102820181019092528281526000916200579491858580838501838280828437600092019190915250929392505062007ef49050565b9050674563918244f40000811080620057ae575060085481115b15620057d75784848484604051630a5a604160e01b815260040162000c85949392919062009460565b60075562005deb565b6200584e6040518060400160405280601181526020017019995b1bdb9e54db185cda105b5bdd5b9d607a1b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062007e979050565b15620059115760208114620058805783838383604051630a5a604160e01b815260040162000c85949392919062009460565b604080516020601f8401819004810282018101909252828152600091620058c391858580838501838280828437600092019190915250929392505062007ef49050565b905068056bc75e2d63100000811080620058df57506007548111155b15620059085784848484604051630a5a604160e01b815260040162000c85949392919062009460565b60085562005deb565b6200597e6040518060400160405280601081526020016f646f776e74696d654a61696c54696d6560801b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062007e979050565b1562005a3b5760208114620059b05783838383604051630a5a604160e01b815260040162000c85949392919062009460565b604080516020601f8401819004810282018101909252828152600091620059f391858580838501838280828437600092019190915250929392505062007ef49050565b90506202a30081108062005a095750600a548110155b1562005a325784848484604051630a5a604160e01b815260040162000c85949392919062009460565b60095562005deb565b62005aa66040518060400160405280600e81526020016d66656c6f6e794a61696c54696d6560901b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062007e979050565b1562005b63576020811462005ad85783838383604051630a5a604160e01b815260040162000c85949392919062009460565b604080516020601f840181900481028201810190925282815260009162005b1b91858580838501838280828437600092019190915250929392505062007ef49050565b9050620d2f0081108062005b3157506009548111155b1562005b5a5784848484604051630a5a604160e01b815260040162000c85949392919062009460565b600a5562005deb565b62005bdd6040518060400160405280601c81526020017f6d617846656c6f6e794265747765656e42726561746865426c6f636b0000000081525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062007e979050565b1562005c89576020811462005c0f5783838383604051630a5a604160e01b815260040162000c85949392919062009460565b604080516020601f840181900481028201810190925282815260009162005c5291858580838501838280828437600092019190915250929392505062007ef49050565b90508060000362005c805784848484604051630a5a604160e01b815260040162000c85949392919062009460565b60165562005deb565b62005cf46040518060400160405280600e81526020016d30b9b9b2ba283937ba32b1ba37b960911b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062007e979050565b1562005dc8576014811462005d265783838383604051630a5a604160e01b815260040162000c85949392919062009460565b600062005d6e601484848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062007ef49050565b90506001600160a01b03811662005da25784848484604051630a5a604160e01b815260040162000c85949392919062009460565b601980546001600160a01b0319166001600160a01b039290921691909117905562005deb565b838383836040516325ee20d560e21b815260040162000c85949392919062009460565b7ff1ce9b2cbf50eeb05769a29e2543fd350cab46894a7dd9978a12d534bb20e6338484848460405162005e22949392919062009460565b60405180910390a150505050565b60005462010000900460ff161562005e5b5760405163d7485e8f60e01b815260040160405180910390fd5b336000908152601a602052604090205460ff161562005e8d5760405163b1d02c3d60e01b815260040160405180910390fd5b816000816001600160401b0381111562005eab5762005eab620084ff565b60405190808252806020026020018201604052801562005ed5578160200160208202803683370190505b5090506000805b8381101562005fd35762005f1e87878381811062005efe5762005efe62008e4c565b905060200201602081019062005f1591906200838e565b600b9062006e8f565b62005f3c5760405163fdf4600b60e01b815260040160405180910390fd5b600d600088888481811062005f555762005f5562008e4c565b905060200201602081019062005f6c91906200838e565b6001600160a01b039081168252602082019290925260400160002060020154845191169250829084908390811062005fa85762005fa862008e4c565b6001600160a01b039092166020928302919091019091015262005fcb8162008eb1565b905062005edc565b50604051634484077560e01b815261200590634484077590620021da908590889060040162008e62565b60608060006200600e600b620079c2565b905080851015620061d257831562006027578362006029565b805b93506000846200603a878462008e1c565b1162006052576200604c868362008e1c565b62006054565b845b9050806001600160401b03811115620060715762006071620084ff565b6040519080825280602002602001820160405280156200609b578160200160208202803683370190505b509350806001600160401b03811115620060b957620060b9620084ff565b604051908082528060200260200182016040528015620060e3578160200160208202803683370190505b50925060005b81811015620061cf57620061026200335f828962008d46565b85828151811062006117576200611762008e4c565b60200260200101906001600160a01b031690816001600160a01b031681525050600d600086838151811062006150576200615062008e4c565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060020160009054906101000a90046001600160a01b0316848281518110620061a457620061a462008e4c565b6001600160a01b0390921660209283029190910190910152620061c78162008eb1565b9050620060e9565b50505b9250925092565b33611001146200620157604051630f22c43960e41b8152611001600482015260240162000c85565b6001600160a01b038082166000908152600f60205260409020541662006229600b8262006e8f565b620062475760405163fdf4600b60e01b815260040160405180910390fd5b6001600160a01b0381166000908152600d60205260408120906200626d603c4262008d23565b60165460008281526017602052604090205491925011620062a15760405163bd52fcdb60e01b815260040160405180910390fd5b6000818152601760205260408120805460019290620062c290849062008d46565b90915550506001600160a01b038416600090815260106020526040902054158015906200631557506001600160a01b03841660009081526010602052604090205442906200631390603c9062008d46565b105b1562006334576040516330abb81d60e21b815260040160405180910390fd5b6000806200634485600062006eb2565b91509150816200636757604051631b919bb160e11b815260040160405180910390fd5b600284015460085460405163045bc4d160e41b815260048101919091526000916001600160a01b0316906345bc4d10906024016020604051808303816000875af1158015620063ba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620063e0919062008d5c565b9050620063ee858362006f3c565b856001600160a01b03167f6e9a2ee7aee95665e3a774a212eb11441b217e3e4656ab9563793094689aabb2838360006040516200642e9392919062008d8c565b60405180910390a26002850154604051633041949b60e01b815261200591633041949b9162004c29916001600160a01b0316908a9060040162008dbb565b60008080606081808662006482600b8262006e8f565b620064a05760405163fdf4600b60e01b815260040160405180910390fd5b6001600160a01b038089166000908152600d60209081526040808320815161016081018352815486168152600182015486169381019390935260028101549094169082015260038301546060820152600483018054929391926080840191906200650a9062008cc7565b80601f0160208091040260200160405190810160405280929190818152602001828054620065389062008cc7565b8015620065895780601f106200655d5761010080835404028352916020019162006589565b820191906000526020600020905b8154815290600101906020018083116200656b57829003601f168201915b5050505050815260200160058201604051806080016040529081600082018054620065b49062008cc7565b80601f0160208091040260200160405190810160405280929190818152602001828054620065e29062008cc7565b8015620066335780601f10620066075761010080835404028352916020019162006633565b820191906000526020600020905b8154815290600101906020018083116200661557829003601f168201915b505050505081526020016001820180546200664e9062008cc7565b80601f01602080910402602001604051908101604052809291908181526020018280546200667c9062008cc7565b8015620066cd5780601f10620066a157610100808354040283529160200191620066cd565b820191906000526020600020905b815481529060010190602001808311620066af57829003601f168201915b50505050508152602001600282018054620066e89062008cc7565b80601f0160208091040260200160405190810160405280929190818152602001828054620067169062008cc7565b8015620067675780601f106200673b5761010080835404028352916020019162006767565b820191906000526020600020905b8154815290600101906020018083116200674957829003601f168201915b50505050508152602001600382018054620067829062008cc7565b80601f0160208091040260200160405190810160405280929190818152602001828054620067b09062008cc7565b8015620068015780601f10620067d55761010080835404028352916020019162006801565b820191906000526020600020905b815481529060010190602001808311620067e357829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152805161028081019182905260a09092019190600d84019060149082845b8154815260200190600101908083116200688d57505050919092525050815160408301516060840151608085015160e086015161010090960151939f929e50909c509a50929850965090945050505050565b60005462010000900460ff16156200690a5760405163d7485e8f60e01b815260040160405180910390fd5b336000908152601a602052604090205460ff16156200693c5760405163b1d02c3d60e01b815260040160405180910390fd5b336200694a600b8262006e8f565b620069685760405163fdf4600b60e01b815260040160405180910390fd5b336000818152600d60205260409020600c81015442906200698c90603c9062008d46565b1115620069ac57604051631f92cdbd60e11b815260040160405180910390fd5b600581018054620069bd9062008cc7565b80601f0160208091040260200160405190810160405280929190818152602001828054620069eb9062008cc7565b801562006a3c5780601f1062006a105761010080835404028352916020019162006a3c565b820191906000526020600020905b81548152906001019060200180831162006a1e57829003601f168201915b505050828752508591600584019150819062006a5990826200948b565b506020820151600182019062006a7090826200948b565b506040820151600282019062006a8790826200948b565b506060820151600382019062006a9e90826200948b565b505042600c830155506040516001600160a01b038316907f85d6366b336ade7f106987ec7a8eac1e8799e508aeab045a39d2f63e0dc969d990600090a250505050565b60005462010000900460ff161562006b0c5760405163d7485e8f60e01b815260040160405180910390fd5b336000908152601a602052604090205460ff161562006b3e5760405163b1d02c3d60e01b815260040160405180910390fd5b82811462006b5f576040516341abc80160e01b815260040160405180910390fd5b60005b8381101562006bd05762006bbd85858381811062006b845762006b8462008e4c565b905060200201602081019062006b9b91906200838e565b84848481811062006bb05762006bb062008e4c565b9050602002013562007d8b565b62006bc88162008eb1565b905062006b62565b5050505050565b600062006be6600b8462006e8f565b62006c045760405163fdf4600b60e01b815260040160405180910390fd5b6001600160a01b038381166000908152600d60205260409081902060020154905163aa1966cd60e01b81526004810185905291169063aa1966cd906024016200457e565b60005462010000900460ff161562006c735760405163d7485e8f60e01b815260040160405180910390fd5b336000908152601a602052604090205460ff161562006ca55760405163b1d02c3d60e01b815260040160405180910390fd5b3362006cb3600b8262006e8f565b62006cd15760405163fdf4600b60e01b815260040160405180910390fd5b62006cdf8585858562007b7d565b62006cfd57604051631647e3cb60e11b815260040160405180910390fd5b60006001600160a01b03166011868660405162006d1c92919062008cfd565b908152604051908190036020019020546001600160a01b031614158062006d6657506014858560405162006d5292919062008cfd565b9081526040519081900360200190205460ff165b1562006d85576040516311fdb94760e01b815260040160405180910390fd5b336000818152600d60205260409020600c810154429062006da990603c9062008d46565b111562006dc957604051631f92cdbd60e11b815260040160405180910390fd5b4260128260040160405162006ddf919062009553565b908152604051908190036020019020556004810162006e0087898362008f75565b5042600c820155604051829060119062006e1e908a908a9062008cfd565b90815260405190819003602001812080546001600160a01b039384166001600160a01b0319909116179055908316907f783156582145bd0ff7924fae6953ba054cf1233eb60739a200ddb10de068ff0d9062006e7e908a908a9062009246565b60405180910390a250505050505050565b6001600160a01b03811660009081526001830160205260408120541515620045c2565b6000806000848460405160200162006ecc929190620095d1565b60408051601f198184030181529181528151602092830120600081815260189093529120549091504281111562006f0c5760008093509350505062006f35565b600a5462006f1b904262008d46565b600092835260186020526040909220829055506001925090505b9250929050565b6000600162006f4c600b620079c2565b62006f58919062008e1c565b6015541080159150620070165760405163d31f968d60e01b81526110006004820152600860248201526120009063d31f968d90604401602060405180830381865afa15801562006fac573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062006fd2919062008dd5565b620070165760018301546040516001600160a01b03909116907f2afdc18061ac21cff7d9f11527ab9c8dec6fabd4edf6f894ed634bebd6a20d4590600090a2505050565b82600b01548211156200702b57600b83018290555b600a83015460ff166200709e57600a8301805460ff19166001908117909155601580546000906200705e90849062008d46565b909155505060018301546040516001600160a01b03909116907f4905ac32602da3fb8b4b7b00c285e5fc4c6c2308cc908b4a1e4e9625a29c90a390600090a25b505050565b60408051608080820183526000808352602080840182905283850182905260608085018390528551938401865282845283820183905283860183905283018290528451808601865282815281018290528451808601909552855185528581019085015291928290620071159062007ef9565b90506000805b620071268362007f6c565b15620071f957806000036200715b576200714a620071448462007f92565b62007ff6565b6001600160a01b03168452620071e6565b80600103620071875762007173620071448462007f92565b6001600160a01b03166020850152620071e6565b80600203620071b3576200719f620071448462007f92565b6001600160a01b03166040850152620071e6565b80600303620071e057620071d1620071cb8462007f92565b6200800e565b606085015260019150620071e6565b620071f9565b620071f18162008eb1565b90506200711b565b5091959194509092505050565b6000805462010000900460ff1615620072325760405163d7485e8f60e01b815260040160405180910390fd5b6020808301516001600160a01b03166000908152601a909152604090205460ff16806200726a575060208201516001600160a01b0316155b156200727857506002919050565b81516200728890600b9062006e8f565b6200729557506003919050565b81516001600160a01b039081166000908152600d6020908152604080832081516101608101835281548616815260018201548616938101939093526002810154909416908201526003830154606082015260048301805492939192608084019190620073019062008cc7565b80601f01602080910402602001604051908101604052809291908181526020018280546200732f9062008cc7565b8015620073805780601f10620073545761010080835404028352916020019162007380565b820191906000526020600020905b8154815290600101906020018083116200736257829003601f168201915b5050505050815260200160058201604051806080016040529081600082018054620073ab9062008cc7565b80601f0160208091040260200160405190810160405280929190818152602001828054620073d99062008cc7565b80156200742a5780601f10620073fe576101008083540402835291602001916200742a565b820191906000526020600020905b8154815290600101906020018083116200740c57829003601f168201915b50505050508152602001600182018054620074459062008cc7565b80601f0160208091040260200160405190810160405280929190818152602001828054620074739062008cc7565b8015620074c45780601f106200749857610100808354040283529160200191620074c4565b820191906000526020600020905b815481529060010190602001808311620074a657829003601f168201915b50505050508152602001600282018054620074df9062008cc7565b80601f01602080910402602001604051908101604052809291908181526020018280546200750d9062008cc7565b80156200755e5780601f1062007532576101008083540402835291602001916200755e565b820191906000526020600020905b8154815290600101906020018083116200754057829003601f168201915b50505050508152602001600382018054620075799062008cc7565b80601f0160208091040260200160405190810160405280929190818152602001828054620075a79062008cc7565b8015620075f85780601f10620075cc57610100808354040283529160200191620075f8565b820191906000526020600020905b815481529060010190602001808311620075da57829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152805161028081019182905260a09092019190600d84019060149082845b815481526020019060010190808311620076845750505050508152505090508060e001518015620076cf575082600001516001600160a01b031683602001516001600160a01b031614155b15620076de5750600492915050565b8260600151471015620076f45750600592915050565b6040808201516060850151602086015192516317066a5760e21b81526001600160a01b03938416600482015260009390921691635c19a95c919060240160206040518083038185885af115801562007750573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019062007777919062008d5c565b905083602001516001600160a01b031684600001516001600160a01b03167f24d7bda8602b916d64417f0dbfe2e2e88ec9b1157bd9f596dfdb91ba26624e04838760600151604051620077d4929190918252602082015260400190565b60405180910390a383602001516001600160a01b031684600001516001600160a01b03167f607b17598da6bdca05650a2fc08bd2bc8e38c3236806a0fa8e0daabc1d6cb1d883876060015160405162007837929190918252602082015260400190565b60405180910390a35060009392505050565b6001600160a01b0381166000908152600d60205260409020600a81015460ff161562007873575050565b6002805490820154604051630913db4760e01b81526001600160a01b03858116600483015290911690630913db4790602401602060405180830381865afa158015620078c3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620078e9919062008d5c565b101562004fbd57620078fe8160095462006f3c565b8054604051631507fdb760e11b81526001600160a01b03909116600482015261100090632a0ffb6e90602401600060405180830381600087803b1580156200794557600080fd5b505af11580156200795a573d6000803e3d6000fd5b505082546040516335409f7f60e01b81526001600160a01b03909116600482015261100092506335409f7f9150602401600060405180830381600087803b158015620079a557600080fd5b505af1158015620079ba573d6000803e3d6000fd5b505050505050565b6000620045c5825490565b6000620045c28383620080e6565b600080829050600381511080620079f3575060098151115b1562007a025750600092915050565b60418160008151811062007a1a5762007a1a62008e4c565b016020015160f81c108062007a4c5750605a8160008151811062007a425762007a4262008e4c565b016020015160f81c115b1562007a5b5750600092915050565b60015b815181101562007b7357603082828151811062007a7f5762007a7f62008e4c565b016020015160f81c108062007ab05750603982828151811062007aa65762007aa662008e4c565b016020015160f81c115b801562007b005750604182828151811062007acf5762007acf62008e4c565b016020015160f81c108062007b005750605a82828151811062007af65762007af662008e4c565b016020015160f81c115b801562007b505750606182828151811062007b1f5762007b1f62008e4c565b016020015160f81c108062007b505750607a82828151811062007b465762007b4662008e4c565b016020015160f81c115b1562007b60575060009392505050565b62007b6b8162008eb1565b905062007a5e565b5060019392505050565b600060308414158062007b91575060608214155b1562007ba05750600062007ca2565b600085854660405160200162007bb9939291906200960f565b60408051808303601f1901815282825280516020918201208184528383019092529092506000919060208201818036833701905050905081602082015260008186868a8a60405160200162007c1395949392919062009621565b60408051808303601f190181526001808452838301909252925060009190602082018180368337019050509050815160016020830182602086016066600019fa62007c5d57600080fd5b5060008160008151811062007c765762007c7662008e4c565b016020015160f81c90506001811462007c985760009550505050505062007ca2565b6001955050505050505b949350505050565b60008061200361dead60405162007cc1906200836a565b6001600160a01b03928316815291166020820152606060408201819052600090820152608001604051809103906000f08015801562007d04573d6000803e3d6000fd5b509050806001600160a01b031663f399e22e3486866040518463ffffffff1660e01b815260040162007d3892919062009659565b6000604051808303818588803b15801562007d5257600080fd5b505af115801562007d67573d6000803e3d6000fd5b5093979650505050505050565b6000620045c2836001600160a01b03841662008113565b8162007d99600b8262006e8f565b62007db75760405163fdf4600b60e01b815260040160405180910390fd5b6001600160a01b038381166000908152600d6020526040808220600201549051635569f64b60e11b8152336004820152602481018690529192169063aad3ec96906044016020604051808303816000875af115801562007e1b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062007e41919062008d5c565b9050336001600160a01b0316846001600160a01b03167ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926838360405162007e8991815260200190565b60405180910390a350505050565b60008160405160200162007eac919062009423565b604051602081830303815290604052805190602001208360405160200162007ed5919062009423565b6040516020818303038152906040528051906020012014905092915050565b015190565b604080516080810182526000918101828152606082018390528152602081019190915262007f278262008165565b62007f3157600080fd5b600062007f42836020015162008198565b836020015162007f53919062008d46565b6040805180820190915293845260208401525090919050565b8051805160208201516000929162007f849162008d46565b836020015110915050919050565b604080518082019091526000808252602082015262007fb18262007f6c565b62007fbb57600080fd5b6020820151600062007fcd8262008220565b905062007fdb818362008d46565b60209485015260408051808201909152908152928301525090565b80516000906015146200800857600080fd5b620045c5825b8051600090158015906200802457508151602110155b6200802e57600080fd5b60006200803f836020015162008198565b90508083600001511015620080975760405162461bcd60e51b815260206004820152601a60248201527f6c656e677468206973206c657373207468616e206f6666736574000000000000604482015260640162000c85565b8251600090620080a990839062008e1c565b9050600080838660200151620080c0919062008d46565b9050805191506020831015620080dd57826020036101000a820491505b50949350505050565b600082600001828154811062008100576200810062008e4c565b9060005260206000200154905092915050565b60008181526001830160205260408120546200815c57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155620045c5565b506000620045c5565b805160009081036200817957506000919050565b6020820151805160001a9060c082101562007b73575060009392505050565b8051600090811a6080811015620081b25750600092915050565b60b8811080620081cf575060c08110801590620081cf575060f881105b15620081de5750600192915050565b60c08110156200821257620081f6600160b86200967f565b620082059060ff168262008e1c565b620017c790600162008d46565b620081f6600160f86200967f565b80516000908190811a60808110156200823d576001915062008363565b60b881101562008269576200825460808262008e1c565b6200826190600162008d46565b915062008363565b60c0811015620082e257600060b78203600186019550806020036101000a865104915060018101820193505080831015620082db5760405162461bcd60e51b81526020600482015260116024820152706164646974696f6e206f766572666c6f7760781b604482015260640162000c85565b5062008363565b60f8811015620082f9576200825460c08262008e1c565b600060f78203600186019550806020036101000a865104915060018101820193505080831015620083615760405162461bcd60e51b81526020600482015260116024820152706164646974696f6e206f766572666c6f7760781b604482015260640162000c85565b505b5092915050565b610e96806200969c83390190565b6001600160a01b0381168114620011e557600080fd5b600060208284031215620083a157600080fd5b8135620017c78162008378565b60008083601f840112620083c157600080fd5b5081356001600160401b03811115620083d957600080fd5b60208301915083602082850101111562006f3557600080fd5b600080602083850312156200840657600080fd5b82356001600160401b038111156200841d57600080fd5b6200842b85828601620083ae565b90969095509350505050565b6000806000604084860312156200844d57600080fd5b833560ff811681146200845f57600080fd5b925060208401356001600160401b038111156200847b57600080fd5b6200848986828701620083ae565b9497909650939450505050565b60005b83811015620084b357818101518382015260200162008499565b50506000910152565b60008151808452620084d681602086016020860162008496565b601f01601f19169290920160200192915050565b602081526000620045c26020830184620084bc565b634e487b7160e01b600052604160045260246000fd5b604051608081016001600160401b03811182821017156200853a576200853a620084ff565b60405290565b604051601f8201601f191681016001600160401b03811182821017156200856b576200856b620084ff565b604052919050565b60006001600160401b038211156200858f576200858f620084ff565b50601f01601f191660200190565b6000620085b4620085ae8462008573565b62008540565b9050828152838383011115620085c957600080fd5b828260208301376000602084830101529392505050565b600060208284031215620085f357600080fd5b81356001600160401b038111156200860a57600080fd5b8201601f810184136200861c57600080fd5b62007ca2848235602084016200859d565b600080604083850312156200864157600080fd5b82356200864e8162008378565b946020939093013593505050565b8015158114620011e557600080fd5b600080600080608085870312156200868257600080fd5b84356200868f8162008378565b93506020850135620086a18162008378565b9250604085013591506060850135620086ba816200865c565b939692955090935050565b6001600160401b0381168114620011e557600080fd5b600060208284031215620086ee57600080fd5b8135620017c781620086c5565b600080604083850312156200870f57600080fd5b50508035926020909101359150565b600081518084526020808501945080840160005b83811015620087595781516001600160a01b03168752958201959082019060010162008732565b509495945050505050565b6080815260006200877960808301876200871e565b82810360208481019190915286518083528782019282019060005b81811015620087b25784518352938301939183019160010162008794565b5050848103604086015286518082528282019350600581901b8201830183890160005b838110156200880757601f19858403018752620087f4838351620084bc565b96860196925090850190600101620087d5565b5050809550505050505082606083015295945050505050565b600080600080600080600087890360e08112156200883d57600080fd5b88356200884a8162008378565b975060208901356001600160401b03808211156200886757600080fd5b620088758c838d01620083ae565b909950975060408b01359150808211156200888f57600080fd5b6200889d8c838d01620083ae565b90975095508591506060605f1984011215620088b857600080fd5b60608b01945060c08b0135925080831115620088d357600080fd5b505088016080818b031215620088e857600080fd5b8091505092959891949750929550565b600080604083850312156200890c57600080fd5b8235620089198162008378565b915060208301356200892b816200865c565b809150509250929050565b6020815260008251608060208401526200895460a0840182620084bc565b90506020840151601f1980858403016040860152620089748383620084bc565b92506040860151915080858403016060860152620089938383620084bc565b9250606086015191508085840301608086015250620089b38282620084bc565b95945050505050565b60008060008060408587031215620089d357600080fd5b84356001600160401b0380821115620089eb57600080fd5b620089f988838901620083ae565b9096509450602087013591508082111562008a1357600080fd5b5062008a2287828801620083ae565b95989497509550505050565b60008083601f84011262008a4157600080fd5b5081356001600160401b0381111562008a5957600080fd5b6020830191508360208260051b850101111562006f3557600080fd5b60008060006040848603121562008a8b57600080fd5b83356001600160401b0381111562008aa257600080fd5b62008ab08682870162008a2e565b909450925050602084013562008ac68162008378565b809150509250925092565b60608152600062008ae660608301866200871e565b828103602084015262008afa81866200871e565b915050826040830152949350505050565b6001600160a01b038781168252861660208201526040810185905260c06060820181905260009062008b4090830186620084bc565b93151560808301525060a00152949350505050565b600082601f83011262008b6757600080fd5b620045c2838335602085016200859d565b60006020828403121562008b8b57600080fd5b81356001600160401b038082111562008ba357600080fd5b908301906080828603121562008bb857600080fd5b62008bc262008515565b82358281111562008bd257600080fd5b62008be08782860162008b55565b82525060208301358281111562008bf657600080fd5b62008c048782860162008b55565b60208301525060408301358281111562008c1d57600080fd5b62008c2b8782860162008b55565b60408301525060608301358281111562008c4457600080fd5b62008c528782860162008b55565b60608301525095945050505050565b6000806000806040858703121562008c7857600080fd5b84356001600160401b038082111562008c9057600080fd5b62008c9e8883890162008a2e565b9096509450602087013591508082111562008cb857600080fd5b5062008a228782880162008a2e565b600181811c9082168062008cdc57607f821691505b60208210810362003f5457634e487b7160e01b600052602260045260246000fd5b8183823760009101908152919050565b634e487b7160e01b600052601160045260246000fd5b60008262008d4157634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115620045c557620045c562008d0d565b60006020828403121562008d6f57600080fd5b5051919050565b634e487b7160e01b600052602160045260246000fd5b83815260208101839052606081016003831062008dad5762008dad62008d76565b826040830152949350505050565b6001600160a01b0392831681529116602082015260400190565b60006020828403121562008de857600080fd5b8151620017c7816200865c565b828152604081016006831062008e0f5762008e0f62008d76565b8260208301529392505050565b81810381811115620045c557620045c562008d0d565b8082028115828204841417620045c557620045c562008d0d565b634e487b7160e01b600052603260045260246000fd5b60408152600062008e7760408301856200871e565b905060018060a01b03831660208301529392505050565b6001600160401b0382811682821603908082111562008363576200836362008d0d565b60006001820162008ec65762008ec662008d0d565b5060010190565b6000808335601e1984360301811262008ee557600080fd5b8301803591506001600160401b0382111562008f0057600080fd5b60200191503681900382131562006f3557600080fd5b601f8211156200709e57600081815260208120601f850160051c8101602086101562008f3f5750805b601f850160051c820191505b81811015620079ba5782815560010162008f4b565b600019600383901b1c191660019190911b1790565b6001600160401b0383111562008f8f5762008f8f620084ff565b62008fa78362008fa0835462008cc7565b8362008f16565b6000601f84116001811462008fda576000851562008fc55750838201355b62008fd1868262008f60565b84555062006bd0565b600083815260209020601f19861690835b828110156200900d578685013582556020948501946001909201910162008feb565b50868210156200902b5760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b62009049828362008ecd565b6001600160401b03811115620090635762009063620084ff565b6200907b8162009074855462008cc7565b8562008f16565b6000601f821160018114620090ae5760008315620090995750838201355b620090a5848262008f60565b8655506200910b565b600085815260209020601f19841690835b82811015620090e15786850135825560209485019460019092019101620090bf565b5084821015620090ff5760001960f88660031b161c19848701351681555b505060018360011b0185555b505050506200911e602083018362008ecd565b6200912e81836001860162008f75565b50506200913f604083018362008ecd565b6200914f81836002860162008f75565b505062009160606083018362008ecd565b6200917081836003860162008f75565b50505050565b81356200918381620086c5565b6001600160401b03811690508154816001600160401b031982161783556020840135620091b081620086c5565b6fffffffffffffffff0000000000000000604091821b166fffffffffffffffffffffffffffffffff19831684178117855590850135620091f081620086c5565b6001600160c01b0319929092169092179190911760809190911b67ffffffffffffffff60801b1617905550565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60208152600062007ca26020830184866200921d565b60006001600160401b03821115620092785762009278620084ff565b5060051b60200190565b600060208083850312156200929657600080fd5b82516001600160401b03811115620092ad57600080fd5b8301601f81018513620092bf57600080fd5b8051620092d0620085ae826200925c565b81815260059190911b82018301908381019087831115620092f057600080fd5b928401925b828410156200931b5783516200930b8162008378565b82529284019290840190620092f5565b979650505050505050565b600060208083850312156200933a57600080fd5b82516001600160401b03808211156200935257600080fd5b818501915085601f8301126200936757600080fd5b815162009378620085ae826200925c565b81815260059190911b830184019084810190888311156200939857600080fd5b8585015b838110156200941657805185811115620093b65760008081fd5b8601603f81018b13620093c95760008081fd5b878101516040620093de620085ae8362008573565b8281528d82848601011115620093f45760008081fd5b62009405838c830184870162008496565b86525050509186019186016200939c565b5098975050505050505050565b600082516200943781846020870162008496565b9190910192915050565b60ff84168152604060208201526000620089b36040830184866200921d565b604081526000620094766040830186886200921d565b82810360208401526200931b8185876200921d565b81516001600160401b03811115620094a757620094a7620084ff565b620094bf81620094b8845462008cc7565b8462008f16565b602080601f831160018114620094f35760008415620094de5750858301515b620094ea858262008f60565b865550620079ba565b600085815260208120601f198616915b82811015620095245788860151825594840194600190910190840162009503565b5085821015620095435787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000808354620095638162008cc7565b600182811680156200957e57600181146200959457620095c5565b60ff1984168752821515830287019450620095c5565b8760005260208060002060005b85811015620095bc5781548a820152908401908201620095a1565b50505082870194505b50929695505050505050565b6bffffffffffffffffffffffff198360601b168152600060038310620095fb57620095fb62008d76565b5060f89190911b6014820152601501919050565b82848237909101908152602001919050565b6000865162009635818460208b0162008496565b82018587823760009086019081528385823760009301928352509095945050505050565b6001600160a01b038316815260406020820181905260009062007ca290830184620084bc565b60ff8281168282160390811115620045c557620045c562008d0d56fe608060405260405162000e9638038062000e96833981016040819052620000269162000497565b828162000036828260006200004d565b50620000449050826200008a565b505050620005ca565b6200005883620000e5565b600082511180620000665750805b1562000085576200008383836200012760201b620001691760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f620000b562000156565b604080516001600160a01b03928316815291841660208301520160405180910390a1620000e2816200018f565b50565b620000f08162000244565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606200014f838360405180606001604052806027815260200162000e6f60279139620002f8565b9392505050565b60006200018060008051602062000e4f83398151915260001b6200037760201b620001951760201c565b546001600160a01b0316919050565b6001600160a01b038116620001fa5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b806200022360008051602062000e4f83398151915260001b6200037760201b620001951760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6200025a816200037a60201b620001981760201c565b620002be5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401620001f1565b80620002237f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b6200037760201b620001951760201c565b6060600080856001600160a01b03168560405162000317919062000577565b600060405180830381855af49150503d806000811462000354576040519150601f19603f3d011682016040523d82523d6000602084013e62000359565b606091505b5090925090506200036d8683838762000389565b9695505050505050565b90565b6001600160a01b03163b151590565b60608315620003fd578251600003620003f5576001600160a01b0385163b620003f55760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401620001f1565b508162000409565b62000409838362000411565b949350505050565b815115620004225781518083602001fd5b8060405162461bcd60e51b8152600401620001f1919062000595565b80516001600160a01b03811681146200045657600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200048e57818101518382015260200162000474565b50506000910152565b600080600060608486031215620004ad57600080fd5b620004b8846200043e565b9250620004c8602085016200043e565b60408501519092506001600160401b0380821115620004e657600080fd5b818601915086601f830112620004fb57600080fd5b8151818111156200051057620005106200045b565b604051601f8201601f19908116603f011681019083821181831017156200053b576200053b6200045b565b816040528281528960208487010111156200055557600080fd5b6200056883602083016020880162000471565b80955050505050509250925092565b600082516200058b81846020870162000471565b9190910192915050565b6020815260008251806020840152620005b681604085016020870162000471565b601f01601f19169190910160400192915050565b61087580620005da6000396000f3fe60806040523661001357610011610017565b005b6100115b61001f6101a7565b6001600160a01b0316330361015f5760606001600160e01b0319600035166364d3180d60e11b810161005a576100536101da565b9150610157565b63587086bd60e11b6001600160e01b031982160161007a57610053610231565b63070d7c6960e41b6001600160e01b031982160161009a57610053610277565b621eb96f60e61b6001600160e01b03198216016100b9576100536102a8565b63a39f25e560e01b6001600160e01b03198216016100d9576100536102e8565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101676102fc565b565b606061018e83836040518060600160405280602781526020016108426027913961030c565b9392505050565b90565b6001600160a01b03163b151590565b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101e4610384565b60006101f33660048184610695565b81019061020091906106db565b905061021d8160405180602001604052806000815250600061038f565b505060408051602081019091526000815290565b60606000806102433660048184610695565b810190610250919061070c565b915091506102608282600161038f565b604051806020016040528060008152509250505090565b6060610281610384565b60006102903660048184610695565b81019061029d91906106db565b905061021d816103bb565b60606102b2610384565b60006102bc6101a7565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102f2610384565b60006102bc610412565b610167610307610412565b610421565b6060600080856001600160a01b03168560405161032991906107f2565b600060405180830381855af49150503d8060008114610364576040519150601f19603f3d011682016040523d82523d6000602084013e610369565b606091505b509150915061037a86838387610445565b9695505050505050565b341561016757600080fd5b610398836104c6565b6000825111806103a55750805b156103b6576103b48383610169565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103e46101a7565b604080516001600160a01b03928316815291841660208301520160405180910390a161040f81610506565b50565b600061041c6105af565b905090565b3660008037600080366000845af43d6000803e808015610440573d6000f35b3d6000fd5b606083156104b45782516000036104ad576001600160a01b0385163b6104ad5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014e565b50816104be565b6104be83836105d7565b949350505050565b6104cf81610601565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b03811661056b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014e565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101cb565b8151156105e75781518083602001fd5b8060405162461bcd60e51b815260040161014e919061080e565b6001600160a01b0381163b61066e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014e565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61058e565b600080858511156106a557600080fd5b838611156106b257600080fd5b5050820193919092039150565b80356001600160a01b03811681146106d657600080fd5b919050565b6000602082840312156106ed57600080fd5b61018e826106bf565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561071f57600080fd5b610728836106bf565b9150602083013567ffffffffffffffff8082111561074557600080fd5b818501915085601f83011261075957600080fd5b81358181111561076b5761076b6106f6565b604051601f8201601f19908116603f01168101908382118183101715610793576107936106f6565b816040528281528860208487010111156107ac57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60005b838110156107e95781810151838201526020016107d1565b50506000910152565b600082516108048184602087016107ce565b9190910192915050565b602081526000825180602084015261082d8160408501602087016107ce565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000ab53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c656400000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000003000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c80000000000000000000000003c44cdddb6a900fa2b585dd299e03d12fa4293bc00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000030b86b3146bdd2200b1dbdb1cea5e40d3451c028cbb4fb03b1826f7f2d82bee76bbd5cd68a74a16a7eceea093fd5826b9200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003087ce273bb9b51fd69e50de7a8d9a99cfb3b1a5c6a7b85f6673d137a5a2ce7df3d6ee4e6d579a142d58b0606c4a7a1c27000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030a33ac14980d85c0d154c5909ebf7a11d455f54beb4d5d0dc1d8b3670b9c4a6b6c450ee3d623ecc48026f09ed1f0b5c1200000000000000000000000000000000a164736f6c6343000811000a", + Code: "608060405260043610620003c35760003560e01c80638a4d3fa811620001f7578063d115a2061162000117578063e992aaf511620000ad578063f80a34021162000078578063f80a34021462000b87578063fb50b31f1462000bac578063fc0c5ff11462000bd1578063ff69ab611462000be957600080fd5b8063e992aaf51462000b04578063efdbf0e11462000b1c578063f1f74d841462000b58578063f1fad1041462000b7057600080fd5b8063d8ca511f11620000ee578063d8ca511f1462000a9a578063daacdb661462000ab2578063de88700b1462000aca578063e8f67c3b1462000aec57600080fd5b8063d115a2061462000a38578063d6ca429d1462000a50578063d7c2dfc81462000a7557600080fd5b8063baa7199e116200018d578063c38fbec81162000164578063c38fbec814620009c2578063c473318f14620009e7578063c8509d8114620007e0578063cbb04d9d14620009ff57600080fd5b8063baa7199e146200094f578063bdceadf31462000974578063bff02e20146200098c57600080fd5b8063a43569b311620001ce578063a43569b314620008b1578063aad3ec9614620008e5578063ac431751146200090a578063b187bd26146200092f57600080fd5b80638a4d3fa814620008575780638cd22b221462000875578063982ef0a7146200089a57600080fd5b80634d99dd1611620002e35780636ec01b2711620002795780638129fc1c11620002505780638129fc1c14620007c8578063831d65d114620007e05780638456cb59146200080557806386d54506146200081d57600080fd5b80636ec01b27146200073357806375cc7d89146200078b57806376e7d6d614620007b057600080fd5b80635e7cc1c911620002ba5780635e7cc1c9146200068f57806363a036b514620006b457806364028fbd14620006eb578063663706d3146200070257600080fd5b80634d99dd16146200062d5780634e6fd6c4146200065257806359491871146200066a57600080fd5b806338409988116200035957806345211bfd116200033057806345211bfd14620005745780634838d16514620005995780634a49ac4c14620005de5780634bf6c882146200060357600080fd5b8063384099881462000512578063417c73a7146200052a578063449ecfe6146200054f57600080fd5b80630e9fbf51116200039a5780630e9fbf5114620004445780631182b875146200046957806317b4f353146200049d5780631fa8882b14620004fb57600080fd5b8063046f7da214620003ea5780630661806e1462000402578063092193ab146200042d57600080fd5b36620003e5576000546301000000900460ff16600114620003e357600080fd5b005b600080fd5b348015620003f757600080fd5b50620003e362000c01565b3480156200040f57600080fd5b506200041a60025481565b6040519081526020015b60405180910390f35b620003e36200043e36600462008465565b62000c62565b3480156200045157600080fd5b50620003e362000463366004620084c9565b620011e8565b3480156200047657600080fd5b506200048e620004883660046200850e565b620014e5565b604051620004249190620085c1565b348015620004aa57600080fd5b50620004e2620004bc366004620086b7565b80516020818301810180516011825292820191909301209152546001600160a01b031681565b6040516001600160a01b03909116815260200162000424565b3480156200050857600080fd5b506200041a603c81565b3480156200051f57600080fd5b506200041a60035481565b3480156200053757600080fd5b50620003e36200054936600462008465565b620017ce565b3480156200055c57600080fd5b50620003e36200056e36600462008465565b6200181e565b3480156200058157600080fd5b50620003e36200059336600462008465565b62001a03565b348015620005a657600080fd5b50620005cd620005b836600462008465565b601a6020526000908152604090205460ff1681565b604051901515815260200162000424565b348015620005eb57600080fd5b50620003e3620005fd36600462008465565b62001bde565b3480156200061057600080fd5b506200061a600881565b60405160ff909116815260200162000424565b3480156200063a57600080fd5b50620003e36200064c36600462008704565b62001c2b565b3480156200065f57600080fd5b50620004e261dead81565b3480156200067757600080fd5b50620003e36200068936600462008742565b62002248565b3480156200069c57600080fd5b50620003e3620006ae366004620087b2565b6200302f565b348015620006c157600080fd5b50620006d9620006d3366004620087d2565b62003235565b6040516200042494939291906200883b565b620003e3620006fc366004620088f7565b620038c7565b3480156200070f57600080fd5b506200041a6200072136600462008465565b60106020526000908152604090205481565b3480156200074057600080fd5b50620007586200075236600462008465565b62003ee2565b6040805182516001600160401b039081168252602080850151821690830152928201519092169082015260600162000424565b3480156200079857600080fd5b50620003e3620007aa36600462008465565b62003f8c565b348015620007bd57600080fd5b506200041a60095481565b348015620007d557600080fd5b50620003e36200415e565b348015620007ed57600080fd5b50620003e3620007ff3660046200850e565b62004474565b3480156200081257600080fd5b50620003e3620044de565b3480156200082a57600080fd5b50620004e26200083c36600462008465565b600f602052600090815260409020546001600160a01b031681565b3480156200086457600080fd5b506200041a670de0b6b3a764000081565b3480156200088257600080fd5b506200041a6200089436600462008704565b62004544565b620003e3620008ab366004620089cf565b620045fd565b348015620008be57600080fd5b50620008d6620008d036600462008465565b62004c99565b60405162000424919062008a0d565b348015620008f257600080fd5b50620003e36200090436600462008704565b62004f86565b3480156200091757600080fd5b50620003e36200092936600462008a93565b62004ff3565b3480156200093c57600080fd5b5060005462010000900460ff16620005cd565b3480156200095c57600080fd5b50620003e36200096e36600462008b4c565b62005e62565b3480156200098157600080fd5b506200041a60085481565b3480156200099957600080fd5b50620009b1620009ab366004620087d2565b6200602f565b604051620004249392919062008ba8565b348015620009cf57600080fd5b50620003e3620009e136600462008465565b6200620b565b348015620009f457600080fd5b506200041a60045481565b34801562000a0c57600080fd5b5062000a2462000a1e36600462008465565b6200649e565b604051620004249695949392919062008be2565b34801562000a4557600080fd5b506200041a61271081565b34801562000a5d57600080fd5b50620003e362000a6f36600462008c4f565b62006911565b34801562000a8257600080fd5b50620003e362000a9436600462008d38565b62006b13565b34801562000aa757600080fd5b506200041a60075481565b34801562000abf57600080fd5b506200041a60155481565b34801562000ad757600080fd5b50601954620004e2906001600160a01b031681565b34801562000af957600080fd5b506200041a60015481565b34801562000b1157600080fd5b506200041a60065481565b34801562000b2957600080fd5b506200041a62000b3b366004620086b7565b805160208183018101805160128252928201919093012091525481565b34801562000b6557600080fd5b506200041a600a5481565b34801562000b7d57600080fd5b506200061a601181565b34801562000b9457600080fd5b506200041a62000ba636600462008704565b62006c09565b34801562000bb957600080fd5b50620003e362000bcb36600462008a93565b62006c7a565b34801562000bde57600080fd5b506200041a60055481565b34801562000bf657600080fd5b506200041a60165481565b6019546001600160a01b0316331462000c2d5760405163f2771a9960e01b815260040160405180910390fd5b6000805462ff0000191681556040517f62451d457bc659158be6e6247f56ec1df424a5c7597f71c20c2bc44e0965c8f99190a1565b336110001462000c8e57604051630f22c43960e41b815261100060048201526024015b60405180910390fd5b6001600160a01b038082166000908152600f60209081526040808320548416808452600d835281842082516101608101845281548716815260018201548716948101949094526002810154909516918301919091526003840154606083015260048401805491949160808401919062000d079062008d9e565b80601f016020809104026020016040519081016040528092919081815260200182805462000d359062008d9e565b801562000d865780601f1062000d5a5761010080835404028352916020019162000d86565b820191906000526020600020905b81548152906001019060200180831162000d6857829003601f168201915b505050505081526020016005820160405180608001604052908160008201805462000db19062008d9e565b80601f016020809104026020016040519081016040528092919081815260200182805462000ddf9062008d9e565b801562000e305780601f1062000e045761010080835404028352916020019162000e30565b820191906000526020600020905b81548152906001019060200180831162000e1257829003601f168201915b5050505050815260200160018201805462000e4b9062008d9e565b80601f016020809104026020016040519081016040528092919081815260200182805462000e799062008d9e565b801562000eca5780601f1062000e9e5761010080835404028352916020019162000eca565b820191906000526020600020905b81548152906001019060200180831162000eac57829003601f168201915b5050505050815260200160028201805462000ee59062008d9e565b80601f016020809104026020016040519081016040528092919081815260200182805462000f139062008d9e565b801562000f645780601f1062000f385761010080835404028352916020019162000f64565b820191906000526020600020905b81548152906001019060200180831162000f4657829003601f168201915b5050505050815260200160038201805462000f7f9062008d9e565b80601f016020809104026020016040519081016040528092919081815260200182805462000fad9062008d9e565b801562000ffe5780601f1062000fd25761010080835404028352916020019162000ffe565b820191906000526020600020905b81548152906001019060200180831162000fe057829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152805161028081019182905260a09092019190600d84019060149082845b8154815260200190600101908083116200108a575050509190925250505060408101519091506001600160a01b03161580620010c757508060e001515b156200113857816001600160a01b03167ffc8bff675087dd2da069cc3fb517b9ed001e19750c0865241a5542dba1ba170d6040516200112b9060208082526011908201527024a72b20a624a22fab20a624a220aa27a960791b604082015260600190565b60405180910390a2505050565b60408181015160c0830151519151632f303ebb60e11b81526001600160401b0390921660048301526001600160a01b031690635e607d769034906024016000604051808303818588803b1580156200118f57600080fd5b505af1158015620011a4573d6000803e3d6000fd5b5050505050816001600160a01b03167fe34918ff1c7084970068b53fd71ad6d8b04e9f15d3886cbf006443e6cdc52ea6346040516200112b91815260200190565b50565b33611001146200121057604051630f22c43960e41b8152611001600482015260240162000c85565b6000601183836040516200122692919062008dd4565b908152604051908190036020019020546001600160a01b031690506200124e600b8262006ec1565b6200126c5760405163fdf4600b60e01b815260040160405180910390fd5b6001600160a01b0381166000908152600d602052604081209062001292603c4262008dfa565b60165460008281526017602052604090205491925011620012c65760405163bd52fcdb60e01b815260040160405180910390fd5b6000818152601760205260408120805460019290620012e790849062008e1d565b909155505060405160129062001301908790879062008dd4565b90815260200160405180910390205460001415801562001350575042603c601287876040516200133392919062008dd4565b9081526020016040518091039020546200134e919062008e1d565b105b156200136f57604051631898eb6b60e01b815260040160405180910390fd5b6000806200137f85600262006ee4565b9150915081620013a257604051631b919bb160e11b815260040160405180910390fd5b600284015460085460405163045bc4d160e41b815260048101919091526000916001600160a01b0316906345bc4d10906024016020604051808303816000875af1158015620013f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200141b919062008e33565b905062001429858362006f6e565b856001600160a01b03167f6e9a2ee7aee95665e3a774a212eb11441b217e3e4656ab9563793094689aabb283836002604051620014699392919062008e63565b60405180910390a26002850154604051633041949b60e01b815261200591633041949b91620014a7916001600160a01b0316908a9060040162008e92565b600060405180830381600087803b158015620014c257600080fd5b505af1158015620014d7573d6000803e3d6000fd5b505050505050505050505050565b606033612000146200150f57604051630f22c43960e41b8152612000600482015260240162000c85565b6000806200155385858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250620070d592505050565b9150915080620015765760405163035ede3560e21b815260040160405180910390fd5b81606001516000036200159c5750506040805160008152602081019091529050620017c7565b6000805463ff00000019166301000000178155606083015160405163e04c83a760e01b81526110049163e04c83a791620015dd919060040190815260200190565b6020604051808303816000875af1158015620015fd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001623919062008eac565b905080620016d55782602001516001600160a01b031683600001516001600160a01b03167fa9084c89a291b43bc984e045671d394974730a159b9a826b577bb148ab504c3a856060015160016040516200167f92919062008ecc565b60405180910390a36000805463ff00000019169055604080516020601f8801819004810282018101909252868152908790879081908401838280828437600092019190915250929650620017c795505050505050565b6000805463ff00000019168155620016ed8462007238565b9050600081600381111562001706576200170662008e4d565b03620017285750506040805160008152602081019091529250620017c7915050565b83602001516001600160a01b031684600001516001600160a01b03167fa9084c89a291b43bc984e045671d394974730a159b9a826b577bb148ab504c3a8660600151846040516200177b92919062008ecc565b60405180910390a386868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929750620017c79650505050505050565b9392505050565b6019546001600160a01b03163314620017fa5760405163f2771a9960e01b815260040160405180910390fd5b6001600160a01b03166000908152601a60205260409020805460ff19166001179055565b60005462010000900460ff1615620018495760405163d7485e8f60e01b815260040160405180910390fd5b336000908152601a602052604090205460ff16156200187b5760405163b1d02c3d60e01b815260040160405180910390fd5b8062001889600b8262006ec1565b620018a75760405163fdf4600b60e01b815260040160405180910390fd5b6001600160a01b0382166000908152600d60205260409020600a81015460ff16620018e557604051634b6b857d60e01b815260040160405180910390fd5b6002805490820154604051630913db4760e01b81526001600160a01b03868116600483015290911690630913db4790602401602060405180830381865afa15801562001935573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200195b919062008e33565b10156200197b576040516317b204bf60e11b815260040160405180910390fd5b4281600b01541115620019a15760405163170cb76760e21b815260040160405180910390fd5b600a8101805460ff191690556015805460019190600090620019c590849062008ef3565b90915550506040516001600160a01b038416907f9390b453426557da5ebdc31f19a37753ca04addf656d32f35232211bb2af3f1990600090a2505050565b60005462010000900460ff161562001a2e5760405163d7485e8f60e01b815260040160405180910390fd5b336000908152601a602052604090205460ff161562001a605760405163b1d02c3d60e01b815260040160405180910390fd5b3362001a6e600b8262006ec1565b62001a8c5760405163fdf4600b60e01b815260040160405180910390fd5b6001600160a01b03821662001ab457604051636520611b60e11b815260040160405180910390fd5b6001600160a01b038281166000908152600f60205260409020541615158062001af557506001600160a01b03821660009081526013602052604090205460ff165b1562001b1457604051631e6f587560e11b815260040160405180910390fd5b336000818152600d60205260409020600c810154429062001b3890603c9062008e1d565b111562001b5857604051631f92cdbd60e11b815260040160405180910390fd5b80546001600160a01b039081166000908152601060209081526040808320429081905585548986166001600160a01b031991821681178855600c880192909255818552600f9093528184208054958816959093168517909255519092917f6e4e747ca35203f16401c69805c7dd52fff67ef60b0ebc5c7fe16890530f223591a350505050565b6019546001600160a01b0316331462001c0a5760405163f2771a9960e01b815260040160405180910390fd5b6001600160a01b03166000908152601a60205260409020805460ff19169055565b60005462010000900460ff161562001c565760405163d7485e8f60e01b815260040160405180910390fd5b336000908152601a602052604090205460ff161562001c885760405163b1d02c3d60e01b815260040160405180910390fd5b8162001c96600b8262006ec1565b62001cb45760405163fdf4600b60e01b815260040160405180910390fd5b8160000362001cd657604051639811e0c760e01b815260040160405180910390fd5b6001600160a01b038084166000908152600d60209081526040808320815161016081018352815486168152600182015486169381019390935260028101549094169082015260038301546060820152600483018054339491608084019162001d3e9062008d9e565b80601f016020809104026020016040519081016040528092919081815260200182805462001d6c9062008d9e565b801562001dbd5780601f1062001d915761010080835404028352916020019162001dbd565b820191906000526020600020905b81548152906001019060200180831162001d9f57829003601f168201915b505050505081526020016005820160405180608001604052908160008201805462001de89062008d9e565b80601f016020809104026020016040519081016040528092919081815260200182805462001e169062008d9e565b801562001e675780601f1062001e3b5761010080835404028352916020019162001e67565b820191906000526020600020905b81548152906001019060200180831162001e4957829003601f168201915b5050505050815260200160018201805462001e829062008d9e565b80601f016020809104026020016040519081016040528092919081815260200182805462001eb09062008d9e565b801562001f015780601f1062001ed55761010080835404028352916020019162001f01565b820191906000526020600020905b81548152906001019060200180831162001ee357829003601f168201915b5050505050815260200160028201805462001f1c9062008d9e565b80601f016020809104026020016040519081016040528092919081815260200182805462001f4a9062008d9e565b801562001f9b5780601f1062001f6f5761010080835404028352916020019162001f9b565b820191906000526020600020905b81548152906001019060200180831162001f7d57829003601f168201915b5050505050815260200160038201805462001fb69062008d9e565b80601f016020809104026020016040519081016040528092919081815260200182805462001fe49062008d9e565b8015620020355780601f10620020095761010080835404028352916020019162002035565b820191906000526020600020905b8154815290600101906020018083116200201757829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152805161028081019182905260a09092019190600d84019060149082845b815481526020019060010190808311620020c1575050509190925250505060408082015190516326ccee8b60e11b81526001600160a01b0385811660048301526024820188905292935060009290911690634d99dd16906044016020604051808303816000875af11580156200213b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002161919062008e33565b9050826001600160a01b0316866001600160a01b03167f3aace7340547de7b9156593a7652dc07ee900cea3fd8f82cb6c9d38b408298028784604051620021b2929190918252602082015260400190565b60405180910390a3856001600160a01b0316836001600160a01b031603620021df57620021df86620078dc565b6040808301519051633041949b60e01b815261200591633041949b916200220c9190879060040162008e92565b600060405180830381600087803b1580156200222757600080fd5b505af11580156200223c573d6000803e3d6000fd5b50505050505050505050565b60005462010000900460ff1615620022735760405163d7485e8f60e01b815260040160405180910390fd5b336000908152601a602052604090205460ff1615620022a55760405163b1d02c3d60e01b815260040160405180910390fd5b83620022b3600b8262006ec1565b620022d15760405163fdf4600b60e01b815260040160405180910390fd5b83620022df600b8262006ec1565b620022fd5760405163fdf4600b60e01b815260040160405180910390fd5b836000036200231f57604051639811e0c760e01b815260040160405180910390fd5b846001600160a01b0316866001600160a01b031603620023525760405163f0e3e62960e01b815260040160405180910390fd5b6001600160a01b038087166000908152600d602090815260408083208151610160810183528154861681526001820154861693810193909352600281015490941690820152600383015460608201526004830180543394916080840191620023ba9062008d9e565b80601f0160208091040260200160405190810160405280929190818152602001828054620023e89062008d9e565b8015620024395780601f106200240d5761010080835404028352916020019162002439565b820191906000526020600020905b8154815290600101906020018083116200241b57829003601f168201915b5050505050815260200160058201604051806080016040529081600082018054620024649062008d9e565b80601f0160208091040260200160405190810160405280929190818152602001828054620024929062008d9e565b8015620024e35780601f10620024b757610100808354040283529160200191620024e3565b820191906000526020600020905b815481529060010190602001808311620024c557829003601f168201915b50505050508152602001600182018054620024fe9062008d9e565b80601f01602080910402602001604051908101604052809291908181526020018280546200252c9062008d9e565b80156200257d5780601f1062002551576101008083540402835291602001916200257d565b820191906000526020600020905b8154815290600101906020018083116200255f57829003601f168201915b50505050508152602001600282018054620025989062008d9e565b80601f0160208091040260200160405190810160405280929190818152602001828054620025c69062008d9e565b8015620026175780601f10620025eb5761010080835404028352916020019162002617565b820191906000526020600020905b815481529060010190602001808311620025f957829003601f168201915b50505050508152602001600382018054620026329062008d9e565b80601f0160208091040260200160405190810160405280929190818152602001828054620026609062008d9e565b8015620026b15780601f106200268557610100808354040283529160200191620026b1565b820191906000526020600020905b8154815290600101906020018083116200269357829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152805161028081019182905260a09092019190600d84019060149082845b8154815260200190600101908083116200273d57505050919092525050506001600160a01b038089166000908152600d6020908152604080832081516101608101835281548616815260018201548616938101939093526002810154909416908201526003830154606082015260048301805494955091939092916080840191620027c89062008d9e565b80601f0160208091040260200160405190810160405280929190818152602001828054620027f69062008d9e565b8015620028475780601f106200281b5761010080835404028352916020019162002847565b820191906000526020600020905b8154815290600101906020018083116200282957829003601f168201915b5050505050815260200160058201604051806080016040529081600082018054620028729062008d9e565b80601f0160208091040260200160405190810160405280929190818152602001828054620028a09062008d9e565b8015620028f15780601f10620028c557610100808354040283529160200191620028f1565b820191906000526020600020905b815481529060010190602001808311620028d357829003601f168201915b505050505081526020016001820180546200290c9062008d9e565b80601f01602080910402602001604051908101604052809291908181526020018280546200293a9062008d9e565b80156200298b5780601f106200295f576101008083540402835291602001916200298b565b820191906000526020600020905b8154815290600101906020018083116200296d57829003601f168201915b50505050508152602001600282018054620029a69062008d9e565b80601f0160208091040260200160405190810160405280929190818152602001828054620029d49062008d9e565b801562002a255780601f10620029f95761010080835404028352916020019162002a25565b820191906000526020600020905b81548152906001019060200180831162002a0757829003601f168201915b5050505050815260200160038201805462002a409062008d9e565b80601f016020809104026020016040519081016040528092919081815260200182805462002a6e9062008d9e565b801562002abf5780601f1062002a935761010080835404028352916020019162002abf565b820191906000526020600020905b81548152906001019060200180831162002aa157829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152805161028081019182905260a09092019190600d84019060149082845b81548152602001906001019080831162002b4b5750505050508152505090508060e00151801562002b8e5750876001600160a01b0316836001600160a01b031614155b1562002bad57604051636468920360e01b815260040160405180910390fd5b6000805463ff0000001916630100000017815560408381015190516352e82ce560e11b81526001600160a01b038681166004830152602482018b90529091169063a5d059ca906044016020604051808303816000875af115801562002c16573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002c3c919062008e33565b905060035481101562002c625760405163dc6f0bdd60e01b815260040160405180910390fd5b896001600160a01b0316846001600160a01b031614801562002cf757506002546040808501519051630913db4760e01b81526001600160a01b038d8116600483015290911690630913db4790602401602060405180830381865afa15801562002ccf573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002cf5919062008e33565b105b1562002d16576040516317b204bf60e11b815260040160405180910390fd5b60006127106006548362002d2b919062008f09565b62002d37919062008dfa565b9050600083604001516001600160a01b03168260405160006040518083038185875af1925050503d806000811462002d8c576040519150601f19603f3d011682016040523d82523d6000602084013e62002d91565b606091505b505090508062002db4576040516312171d8360e31b815260040160405180910390fd5b62002dc0828462008ef3565b60408086015190516317066a5760e21b81526001600160a01b03898116600483015292955060009290911690635c19a95c90869060240160206040518083038185885af115801562002e16573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019062002e3d919062008e33565b905060008060036101000a81548160ff021916908360ff160217905550866001600160a01b03168c6001600160a01b03168e6001600160a01b03167ffdac6e81913996d95abcc289e90f2d8bd235487ce6fe6f821e7d21002a1915b48e858960405162002ebd939291909283526020830191909152604082015260600190565b60405180910390a460408051600280825260608201835260009260208301908036833701905050905086604001518160008151811062002f015762002f0162008f23565b60200260200101906001600160a01b031690816001600160a01b03168152505085604001518160018151811062002f3c5762002f3c62008f23565b6001600160a01b0390921660209283029190910190910152604051634484077560e01b81526120059063448407759062002f7d9084908c9060040162008f39565b600060405180830381600087803b15801562002f9857600080fd5b505af115801562002fad573d6000803e3d6000fd5b505050508a156200301f576120056001600160a01b031663e5ed5b1e898f6040518363ffffffff1660e01b815260040162002fea92919062008e92565b600060405180830381600087803b1580156200300557600080fd5b505af11580156200301a573d6000803e3d6000fd5b505050505b5050505050505050505050505050565b60005462010000900460ff16156200305a5760405163d7485e8f60e01b815260040160405180910390fd5b336000908152601a602052604090205460ff16156200308c5760405163b1d02c3d60e01b815260040160405180910390fd5b336200309a600b8262006ec1565b620030b85760405163fdf4600b60e01b815260040160405180910390fd5b336000818152600d60205260409020600c8101544290620030dc90603c9062008e1d565b1115620030fc57604051631f92cdbd60e11b815260040160405180910390fd5b60098101546001600160401b03600160401b90910481169085161115620031365760405163dc81db8560e01b815260040160405180910390fd5b60098101546000906001600160401b039081169086161015620031745760098201546200316e9086906001600160401b031662008f65565b6200318e565b60098201546200318e906001600160401b03168662008f65565b60098301546001600160401b039182169250600160801b900416811115620031c95760405163dc81db8560e01b815260040160405180910390fd5b60098201805467ffffffffffffffff19166001600160401b03871690811790915542600c8401556040519081526001600160a01b038416907f78cdd96edf59e09cfd4d26ef6ef6c92d166effe6a40970c54821206d541932cb9060200160405180910390a25050505050565b6060806060600062003248600b62007a62565b905080861015620038be57841562003261578462003263565b805b945060008562003274888462008ef3565b116200328c5762003286878362008ef3565b6200328e565b855b9050806001600160401b03811115620032ab57620032ab620085d6565b604051908082528060200260200182016040528015620032d5578160200160208202803683370190505b509450806001600160401b03811115620032f357620032f3620085d6565b6040519080825280602002602001820160405280156200331d578160200160208202803683370190505b509350806001600160401b038111156200333b576200333b620085d6565b6040519080825280602002602001820160405280156200337057816020015b60608152602001906001900390816200335a5790505b50925060005b81811015620038bb5760006200339a62003391838b62008e1d565b600b9062007a6d565b6001600160a01b038082166000908152600d6020908152604080832081516101608101835281548616815260018201548616938101939093526002810154909416908201526003830154606082015260048301805494955091939092916080840191620034079062008d9e565b80601f0160208091040260200160405190810160405280929190818152602001828054620034359062008d9e565b8015620034865780601f106200345a5761010080835404028352916020019162003486565b820191906000526020600020905b8154815290600101906020018083116200346857829003601f168201915b5050505050815260200160058201604051806080016040529081600082018054620034b19062008d9e565b80601f0160208091040260200160405190810160405280929190818152602001828054620034df9062008d9e565b8015620035305780601f10620035045761010080835404028352916020019162003530565b820191906000526020600020905b8154815290600101906020018083116200351257829003601f168201915b505050505081526020016001820180546200354b9062008d9e565b80601f0160208091040260200160405190810160405280929190818152602001828054620035799062008d9e565b8015620035ca5780601f106200359e57610100808354040283529160200191620035ca565b820191906000526020600020905b815481529060010190602001808311620035ac57829003601f168201915b50505050508152602001600282018054620035e59062008d9e565b80601f0160208091040260200160405190810160405280929190818152602001828054620036139062008d9e565b8015620036645780601f10620036385761010080835404028352916020019162003664565b820191906000526020600020905b8154815290600101906020018083116200364657829003601f168201915b505050505081526020016003820180546200367f9062008d9e565b80601f0160208091040260200160405190810160405280929190818152602001828054620036ad9062008d9e565b8015620036fe5780601f10620036d257610100808354040283529160200191620036fe565b820191906000526020600020905b815481529060010190602001808311620036e057829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152805161028081019182905260a09092019190600d84019060149082845b8154815260200190600101908083116200378a5750505050508152505090508060000151888481518110620037c357620037c362008f23565b60200260200101906001600160a01b031690816001600160a01b0316815250508060e001516200385c5780604001516001600160a01b03166315d1f8986040518163ffffffff1660e01b8152600401602060405180830381865afa15801562003830573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003856919062008e33565b6200385f565b60005b87848151811062003874576200387462008f23565b60200260200101818152505080608001518684815181106200389a576200389a62008f23565b6020026020010181905250505080620038b39062008f88565b905062003376565b50505b92959194509250565b60005462010000900460ff1615620038f25760405163d7485e8f60e01b815260040160405180910390fd5b336000908152601a602052604090205460ff1615620039245760405163b1d02c3d60e01b815260040160405180910390fd5b3362003932600b8262006ec1565b156200395157604051635f28f62b60e01b815260040160405180910390fd5b6001600160a01b038881166000908152600f6020526040902054161515806200399257506001600160a01b03881660009081526013602052604090205460ff165b15620039b157604051631e6f587560e11b815260040160405180910390fd5b60006001600160a01b031660118888604051620039d092919062008dd4565b908152604051908190036020019020546001600160a01b031614158062003a1a57506014878760405162003a0692919062008dd4565b9081526040519081900360200190205460ff165b1562003a39576040516311fdb94760e01b815260040160405180910390fd5b600062003a47838062008fa4565b60405160200162003a5a92919062008dd4565b60408051601f1981840301815291815281516020928301206000818152600e90935291205490915060ff161562003aa45760405163c0bf414360e01b815260040160405180910390fd5b600254349062003abe90670de0b6b3a76400009062008e1d565b81101562003adf576040516317b204bf60e11b815260040160405180910390fd5b6001600160a01b038a1662003b0757604051636520611b60e11b815260040160405180910390fd5b61138862003b1c6040870160208801620087b2565b6001600160401b0316118062003b62575062003b3f6040860160208701620087b2565b6001600160401b031662003b576020870187620087b2565b6001600160401b0316115b8062003ba1575062003b7b6040860160208701620087b2565b6001600160401b031662003b966060870160408801620087b2565b6001600160401b0316115b1562003bc05760405163dc81db8560e01b815260040160405180910390fd5b62003c0b62003bd0858062008fa4565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525062007a7b92505050565b62003c2957604051635dba5ad760e01b815260040160405180910390fd5b62003c378989898962007c1d565b62003c5557604051631647e3cb60e11b815260040160405180910390fd5b600062003ca38462003c68878062008fa4565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525062007d4a92505050565b905062003cb2600b8562007e4b565b506000838152600e60209081526040808320805460ff191660019081179091556001600160a01b03808916808652600d9094529190932080548f83166001600160a01b03199182161782559381018054851690931790925560028201805491851691909316179091554260038201556004810162003d328b8d836200904c565b50856005820162003d44828262009114565b508790506009820162003d5882826200924d565b505042600c8201556001600160a01b038c81166000908152600f60205260409081902080546001600160a01b0319169288169290921790915551859060119062003da6908e908e9062008dd4565b908152602001604051809103902060006101000a8154816001600160a01b0302191690836001600160a01b03160217905550816001600160a01b0316856001600160a01b03168d6001600160a01b03167faecd9fb95e79c75a3a1de93362c6be5fe6ab65770d8614be583884161cd8228d8e8e60405162003e299291906200931d565b60405180910390a460408051848152602081018590526001600160a01b0387169182917f24d7bda8602b916d64417f0dbfe2e2e88ec9b1157bd9f596dfdb91ba26624e04910160405180910390a3604051633041949b60e01b815261200590633041949b9062003ea0908590899060040162008e92565b600060405180830381600087803b15801562003ebb57600080fd5b505af115801562003ed0573d6000803e3d6000fd5b50505050505050505050505050505050565b60408051606081018252600080825260208201819052918101919091528162003f0d600b8262006ec1565b62003f2b5760405163fdf4600b60e01b815260040160405180910390fd5b6001600160a01b0383166000908152600d602090815260409182902082516060810184526009909101546001600160401b038082168352600160401b8204811693830193909352600160801b90049091169181019190915291505b50919050565b336110011462003fb457604051630f22c43960e41b8152611001600482015260240162000c85565b6001600160a01b038082166000908152600f60205260409020541662003fdc600b8262006ec1565b62003ffa5760405163fdf4600b60e01b815260040160405180910390fd5b6001600160a01b038181166000908152600d60205260408082206002810154600754925163045bc4d160e41b81526004810193909352909316906345bc4d10906024016020604051808303816000875af11580156200405d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004083919062008e33565b905060006009544262004097919062008e1d565b9050620040a5838262006f6e565b836001600160a01b03167f6e9a2ee7aee95665e3a774a212eb11441b217e3e4656ab9563793094689aabb282846001604051620040e59392919062008e63565b60405180910390a26002830154604051633041949b60e01b815261200591633041949b9162004123916001600160a01b031690889060040162008e92565b600060405180830381600087803b1580156200413e57600080fd5b505af115801562004153573d6000803e3d6000fd5b505050505050505050565b600054610100900460ff16158080156200417f5750600054600160ff909116105b806200419b5750303b1580156200419b575060005460ff166001145b620042005760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840162000c85565b6000805460ff19166001179055801562004224576000805461ff0019166101001790555b334114620042455760405163022d8c9560e31b815260040160405180910390fd5b3a1562004265576040516383f1b1d360e01b815260040160405180910390fd5b611388600155686c6b935b8bbd4000006002908155670de0b6b3a7640000600355602d600455607860058190556006829055678ac7230489e80000600755680ad78ebc5ac620000060085560095560b4600a556016556040805160c0810190915260a080825260609182916200a6096020830139806020019051810190620042ee919062009359565b9150604051806101e001604052806101c081526020016200a6a96101c09139806020019051810190620043229190620093fd565b905060005b825181101562004391576001601360008584815181106200434c576200434c62008f23565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055620043898162008f88565b905062004327565b5060005b8151811015620044025760016014838381518110620043b857620043b862008f23565b6020026020010151604051620043cf9190620094fa565b908152604051908190036020019020805491151560ff19909216919091179055620043fa8162008f88565b905062004395565b5050601980546001600160a01b03191673df87f0e2b8519ea2dd4abd8b639cdd628497ed25179055508015620011e5576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b33612000146200449c57604051630f22c43960e41b8152612000600482015260240162000c85565b7f41ce201247b6ceb957dcdb217d0b8acb50b9ea0e12af9af4f5e7f38902101605838383604051620044d19392919062009518565b60405180910390a1505050565b6019546001600160a01b031633146200450a5760405163f2771a9960e01b815260040160405180910390fd5b6000805462ff00001916620100001781556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e7529190a1565b600062004553600b8462006ec1565b620045715760405163fdf4600b60e01b815260040160405180910390fd5b6001600160a01b038381166000908152600d602052604090819020600201549051636bbf224960e01b815260048101859052911690636bbf2249906024015b602060405180830381865afa158015620045ce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620045f4919062008e33565b90505b92915050565b60005462010000900460ff1615620046285760405163d7485e8f60e01b815260040160405180910390fd5b336000908152601a602052604090205460ff16156200465a5760405163b1d02c3d60e01b815260040160405180910390fd5b8162004668600b8262006ec1565b620046865760405163fdf4600b60e01b815260040160405180910390fd5b6003543490811015620046ac5760405163dc6f0bdd60e01b815260040160405180910390fd5b6001600160a01b038085166000908152600d602090815260408083208151610160810183528154861681526001820154861693810193909352600281015490941690820152600383015460608201526004830180543394916080840191620047149062008d9e565b80601f0160208091040260200160405190810160405280929190818152602001828054620047429062008d9e565b8015620047935780601f10620047675761010080835404028352916020019162004793565b820191906000526020600020905b8154815290600101906020018083116200477557829003601f168201915b5050505050815260200160058201604051806080016040529081600082018054620047be9062008d9e565b80601f0160208091040260200160405190810160405280929190818152602001828054620047ec9062008d9e565b80156200483d5780601f1062004811576101008083540402835291602001916200483d565b820191906000526020600020905b8154815290600101906020018083116200481f57829003601f168201915b50505050508152602001600182018054620048589062008d9e565b80601f0160208091040260200160405190810160405280929190818152602001828054620048869062008d9e565b8015620048d75780601f10620048ab57610100808354040283529160200191620048d7565b820191906000526020600020905b815481529060010190602001808311620048b957829003601f168201915b50505050508152602001600282018054620048f29062008d9e565b80601f0160208091040260200160405190810160405280929190818152602001828054620049209062008d9e565b8015620049715780601f10620049455761010080835404028352916020019162004971565b820191906000526020600020905b8154815290600101906020018083116200495357829003601f168201915b505050505081526020016003820180546200498c9062008d9e565b80601f0160208091040260200160405190810160405280929190818152602001828054620049ba9062008d9e565b801562004a0b5780601f10620049df5761010080835404028352916020019162004a0b565b820191906000526020600020905b815481529060010190602001808311620049ed57829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152805161028081019182905260a09092019190600d84019060149082845b81548152602001906001019080831162004a975750505050508152505090508060e00151801562004ada5750856001600160a01b0316826001600160a01b031614155b1562004af957604051636468920360e01b815260040160405180910390fd5b60408082015190516317066a5760e21b81526001600160a01b0384811660048301526000921690635c19a95c90869060240160206040518083038185885af115801562004b4a573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019062004b71919062008e33565b9050826001600160a01b0316876001600160a01b03167f24d7bda8602b916d64417f0dbfe2e2e88ec9b1157bd9f596dfdb91ba26624e04838760405162004bc2929190918252602082015260400190565b60405180910390a36040808301519051633041949b60e01b815261200591633041949b9162004bf79190879060040162008e92565b600060405180830381600087803b15801562004c1257600080fd5b505af115801562004c27573d6000803e3d6000fd5b50505050851562004c90576040516372f6ad8f60e11b81526120059063e5ed5b1e9062004c5b9086908b9060040162008e92565b600060405180830381600087803b15801562004c7657600080fd5b505af115801562004c8b573d6000803e3d6000fd5b505050505b50505050505050565b62004cc56040518060800160405280606081526020016060815260200160608152602001606081525090565b8162004cd3600b8262006ec1565b62004cf15760405163fdf4600b60e01b815260040160405180910390fd5b6001600160a01b0383166000908152600d60205260409081902081516080810190925260050180548290829062004d289062008d9e565b80601f016020809104026020016040519081016040528092919081815260200182805462004d569062008d9e565b801562004da75780601f1062004d7b5761010080835404028352916020019162004da7565b820191906000526020600020905b81548152906001019060200180831162004d8957829003601f168201915b5050505050815260200160018201805462004dc29062008d9e565b80601f016020809104026020016040519081016040528092919081815260200182805462004df09062008d9e565b801562004e415780601f1062004e155761010080835404028352916020019162004e41565b820191906000526020600020905b81548152906001019060200180831162004e2357829003601f168201915b5050505050815260200160028201805462004e5c9062008d9e565b80601f016020809104026020016040519081016040528092919081815260200182805462004e8a9062008d9e565b801562004edb5780601f1062004eaf5761010080835404028352916020019162004edb565b820191906000526020600020905b81548152906001019060200180831162004ebd57829003601f168201915b5050505050815260200160038201805462004ef69062008d9e565b80601f016020809104026020016040519081016040528092919081815260200182805462004f249062008d9e565b801562004f755780601f1062004f495761010080835404028352916020019162004f75565b820191906000526020600020905b81548152906001019060200180831162004f5757829003601f168201915b505050505081525050915050919050565b60005462010000900460ff161562004fb15760405163d7485e8f60e01b815260040160405180910390fd5b336000908152601a602052604090205460ff161562004fe35760405163b1d02c3d60e01b815260040160405180910390fd5b62004fef828262007e62565b5050565b33611007146200501b57604051630f22c43960e41b8152611007600482015260240162000c85565b620050886040518060400160405280601081526020016f1d1c985b9cd9995c91d85cd31a5b5a5d60821b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062007f6e9050565b15620051365760208114620050ba5783838383604051630a5a604160e01b815260040162000c85949392919062009537565b604080516020601f8401819004810282018101909252828152600091620050fd91858580838501838280828437600092019190915250929392505062007fcb9050565b90506108fc8110156200512d5784848484604051630a5a604160e01b815260040162000c85949392919062009537565b60015562005e1d565b620051a76040518060400160405280601481526020017336b4b729b2b6332232b632b3b0ba34b7b721272160611b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062007f6e9050565b156200525c5760208114620051d95783838383604051630a5a604160e01b815260040162000c85949392919062009537565b604080516020601f84018190048102820181019092528281526000916200521c91858580838501838280828437600092019190915250929392505062007fcb9050565b9050683635c9adc5dea00000811015620052535784848484604051630a5a604160e01b815260040162000c85949392919062009537565b60025562005e1d565b620052cf604051806040016040528060168152602001756d696e44656c65676174696f6e424e424368616e676560501b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062007f6e9050565b15620053835760208114620053015783838383604051630a5a604160e01b815260040162000c85949392919062009537565b604080516020601f84018190048102820181019092528281526000916200534491858580838501838280828437600092019190915250929392505062007fcb9050565b905067016345785d8a00008110156200537a5784848484604051630a5a604160e01b815260040162000c85949392919062009537565b60035562005e1d565b620053f4604051806040016040528060148152602001736d6178456c656374656456616c696461746f727360601b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062007f6e9050565b15620054ae5760208114620054265783838383604051630a5a604160e01b815260040162000c85949392919062009537565b604080516020601f84018190048102820181019092528281526000916200546991858580838501838280828437600092019190915250929392505062007fcb9050565b905060018110806200547c57506101f481115b15620054a55784848484604051630a5a604160e01b815260040162000c85949392919062009537565b60045562005e1d565b620055176040518060400160405280600c81526020016b1d5b989bdb9914195c9a5bd960a21b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062007f6e9050565b15620055c65760208114620055495783838383604051630a5a604160e01b815260040162000c85949392919062009537565b604080516020601f84018190048102820181019092528281526000916200558c91858580838501838280828437600092019190915250929392505062007fcb9050565b90506203f480811015620055bd5784848484604051630a5a604160e01b815260040162000c85949392919062009537565b60055562005e1d565b6200563460405180604001604052806011815260200170726564656c65676174654665655261746560781b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062007f6e9050565b15620056e15760208114620056665783838383604051630a5a604160e01b815260040162000c85949392919062009537565b604080516020601f8401819004810282018101909252828152600091620056a991858580838501838280828437600092019190915250929392505062007fcb9050565b90506064811115620056d85784848484604051630a5a604160e01b815260040162000c85949392919062009537565b60065562005e1d565b6200575160405180604001604052806013815260200172191bdddb9d1a5b5954db185cda105b5bdd5b9d606a1b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062007f6e9050565b15620058125760208114620057835783838383604051630a5a604160e01b815260040162000c85949392919062009537565b604080516020601f8401819004810282018101909252828152600091620057c691858580838501838280828437600092019190915250929392505062007fcb9050565b9050674563918244f40000811080620057e0575060085481115b15620058095784848484604051630a5a604160e01b815260040162000c85949392919062009537565b60075562005e1d565b620058806040518060400160405280601181526020017019995b1bdb9e54db185cda105b5bdd5b9d607a1b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062007f6e9050565b15620059435760208114620058b25783838383604051630a5a604160e01b815260040162000c85949392919062009537565b604080516020601f8401819004810282018101909252828152600091620058f591858580838501838280828437600092019190915250929392505062007fcb9050565b905068056bc75e2d631000008110806200591157506007548111155b156200593a5784848484604051630a5a604160e01b815260040162000c85949392919062009537565b60085562005e1d565b620059b06040518060400160405280601081526020016f646f776e74696d654a61696c54696d6560801b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062007f6e9050565b1562005a6d5760208114620059e25783838383604051630a5a604160e01b815260040162000c85949392919062009537565b604080516020601f840181900481028201810190925282815260009162005a2591858580838501838280828437600092019190915250929392505062007fcb9050565b90506202a30081108062005a3b5750600a548110155b1562005a645784848484604051630a5a604160e01b815260040162000c85949392919062009537565b60095562005e1d565b62005ad86040518060400160405280600e81526020016d66656c6f6e794a61696c54696d6560901b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062007f6e9050565b1562005b95576020811462005b0a5783838383604051630a5a604160e01b815260040162000c85949392919062009537565b604080516020601f840181900481028201810190925282815260009162005b4d91858580838501838280828437600092019190915250929392505062007fcb9050565b9050620d2f0081108062005b6357506009548111155b1562005b8c5784848484604051630a5a604160e01b815260040162000c85949392919062009537565b600a5562005e1d565b62005c0f6040518060400160405280601c81526020017f6d617846656c6f6e794265747765656e42726561746865426c6f636b0000000081525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062007f6e9050565b1562005cbb576020811462005c415783838383604051630a5a604160e01b815260040162000c85949392919062009537565b604080516020601f840181900481028201810190925282815260009162005c8491858580838501838280828437600092019190915250929392505062007fcb9050565b90508060000362005cb25784848484604051630a5a604160e01b815260040162000c85949392919062009537565b60165562005e1d565b62005d266040518060400160405280600e81526020016d30b9b9b2ba283937ba32b1ba37b960911b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062007f6e9050565b1562005dfa576014811462005d585783838383604051630a5a604160e01b815260040162000c85949392919062009537565b600062005da0601484848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062007fcb9050565b90506001600160a01b03811662005dd45784848484604051630a5a604160e01b815260040162000c85949392919062009537565b601980546001600160a01b0319166001600160a01b039290921691909117905562005e1d565b838383836040516325ee20d560e21b815260040162000c85949392919062009537565b7ff1ce9b2cbf50eeb05769a29e2543fd350cab46894a7dd9978a12d534bb20e6338484848460405162005e54949392919062009537565b60405180910390a150505050565b60005462010000900460ff161562005e8d5760405163d7485e8f60e01b815260040160405180910390fd5b336000908152601a602052604090205460ff161562005ebf5760405163b1d02c3d60e01b815260040160405180910390fd5b816000816001600160401b0381111562005edd5762005edd620085d6565b60405190808252806020026020018201604052801562005f07578160200160208202803683370190505b5090506000805b83811015620060055762005f5087878381811062005f305762005f3062008f23565b905060200201602081019062005f47919062008465565b600b9062006ec1565b62005f6e5760405163fdf4600b60e01b815260040160405180910390fd5b600d600088888481811062005f875762005f8762008f23565b905060200201602081019062005f9e919062008465565b6001600160a01b039081168252602082019290925260400160002060020154845191169250829084908390811062005fda5762005fda62008f23565b6001600160a01b039092166020928302919091019091015262005ffd8162008f88565b905062005f0e565b50604051634484077560e01b8152612005906344840775906200220c908590889060040162008f39565b606080600062006040600b62007a62565b905080851015620062045783156200605957836200605b565b805b93506000846200606c878462008ef3565b1162006084576200607e868362008ef3565b62006086565b845b9050806001600160401b03811115620060a357620060a3620085d6565b604051908082528060200260200182016040528015620060cd578160200160208202803683370190505b509350806001600160401b03811115620060eb57620060eb620085d6565b60405190808252806020026020018201604052801562006115578160200160208202803683370190505b50925060005b8181101562006201576200613462003391828962008e1d565b85828151811062006149576200614962008f23565b60200260200101906001600160a01b031690816001600160a01b031681525050600d600086838151811062006182576200618262008f23565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060020160009054906101000a90046001600160a01b0316848281518110620061d657620061d662008f23565b6001600160a01b0390921660209283029190910190910152620061f98162008f88565b90506200611b565b50505b9250925092565b33611001146200623357604051630f22c43960e41b8152611001600482015260240162000c85565b6001600160a01b038082166000908152600f6020526040902054166200625b600b8262006ec1565b620062795760405163fdf4600b60e01b815260040160405180910390fd5b6001600160a01b0381166000908152600d60205260408120906200629f603c4262008dfa565b60165460008281526017602052604090205491925011620062d35760405163bd52fcdb60e01b815260040160405180910390fd5b6000818152601760205260408120805460019290620062f490849062008e1d565b90915550506001600160a01b038416600090815260106020526040902054158015906200634757506001600160a01b03841660009081526010602052604090205442906200634590603c9062008e1d565b105b1562006366576040516330abb81d60e21b815260040160405180910390fd5b6000806200637685600062006ee4565b91509150816200639957604051631b919bb160e11b815260040160405180910390fd5b600284015460085460405163045bc4d160e41b815260048101919091526000916001600160a01b0316906345bc4d10906024016020604051808303816000875af1158015620063ec573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062006412919062008e33565b905062006420858362006f6e565b856001600160a01b03167f6e9a2ee7aee95665e3a774a212eb11441b217e3e4656ab9563793094689aabb283836000604051620064609392919062008e63565b60405180910390a26002850154604051633041949b60e01b815261200591633041949b9162004c5b916001600160a01b0316908a9060040162008e92565b600080806060818086620064b4600b8262006ec1565b620064d25760405163fdf4600b60e01b815260040160405180910390fd5b6001600160a01b038089166000908152600d60209081526040808320815161016081018352815486168152600182015486169381019390935260028101549094169082015260038301546060820152600483018054929391926080840191906200653c9062008d9e565b80601f01602080910402602001604051908101604052809291908181526020018280546200656a9062008d9e565b8015620065bb5780601f106200658f57610100808354040283529160200191620065bb565b820191906000526020600020905b8154815290600101906020018083116200659d57829003601f168201915b5050505050815260200160058201604051806080016040529081600082018054620065e69062008d9e565b80601f0160208091040260200160405190810160405280929190818152602001828054620066149062008d9e565b8015620066655780601f10620066395761010080835404028352916020019162006665565b820191906000526020600020905b8154815290600101906020018083116200664757829003601f168201915b50505050508152602001600182018054620066809062008d9e565b80601f0160208091040260200160405190810160405280929190818152602001828054620066ae9062008d9e565b8015620066ff5780601f10620066d357610100808354040283529160200191620066ff565b820191906000526020600020905b815481529060010190602001808311620066e157829003601f168201915b505050505081526020016002820180546200671a9062008d9e565b80601f0160208091040260200160405190810160405280929190818152602001828054620067489062008d9e565b8015620067995780601f106200676d5761010080835404028352916020019162006799565b820191906000526020600020905b8154815290600101906020018083116200677b57829003601f168201915b50505050508152602001600382018054620067b49062008d9e565b80601f0160208091040260200160405190810160405280929190818152602001828054620067e29062008d9e565b8015620068335780601f10620068075761010080835404028352916020019162006833565b820191906000526020600020905b8154815290600101906020018083116200681557829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152805161028081019182905260a09092019190600d84019060149082845b815481526020019060010190808311620068bf57505050919092525050815160408301516060840151608085015160e086015161010090960151939f929e50909c509a50929850965090945050505050565b60005462010000900460ff16156200693c5760405163d7485e8f60e01b815260040160405180910390fd5b336000908152601a602052604090205460ff16156200696e5760405163b1d02c3d60e01b815260040160405180910390fd5b336200697c600b8262006ec1565b6200699a5760405163fdf4600b60e01b815260040160405180910390fd5b336000818152600d60205260409020600c8101544290620069be90603c9062008e1d565b1115620069de57604051631f92cdbd60e11b815260040160405180910390fd5b600581018054620069ef9062008d9e565b80601f016020809104026020016040519081016040528092919081815260200182805462006a1d9062008d9e565b801562006a6e5780601f1062006a425761010080835404028352916020019162006a6e565b820191906000526020600020905b81548152906001019060200180831162006a5057829003601f168201915b505050828752508591600584019150819062006a8b908262009562565b506020820151600182019062006aa2908262009562565b506040820151600282019062006ab9908262009562565b506060820151600382019062006ad0908262009562565b505042600c830155506040516001600160a01b038316907f85d6366b336ade7f106987ec7a8eac1e8799e508aeab045a39d2f63e0dc969d990600090a250505050565b60005462010000900460ff161562006b3e5760405163d7485e8f60e01b815260040160405180910390fd5b336000908152601a602052604090205460ff161562006b705760405163b1d02c3d60e01b815260040160405180910390fd5b82811462006b91576040516341abc80160e01b815260040160405180910390fd5b60005b8381101562006c025762006bef85858381811062006bb65762006bb662008f23565b905060200201602081019062006bcd919062008465565b84848481811062006be25762006be262008f23565b9050602002013562007e62565b62006bfa8162008f88565b905062006b94565b5050505050565b600062006c18600b8462006ec1565b62006c365760405163fdf4600b60e01b815260040160405180910390fd5b6001600160a01b038381166000908152600d60205260409081902060020154905163aa1966cd60e01b81526004810185905291169063aa1966cd90602401620045b0565b60005462010000900460ff161562006ca55760405163d7485e8f60e01b815260040160405180910390fd5b336000908152601a602052604090205460ff161562006cd75760405163b1d02c3d60e01b815260040160405180910390fd5b3362006ce5600b8262006ec1565b62006d035760405163fdf4600b60e01b815260040160405180910390fd5b62006d118585858562007c1d565b62006d2f57604051631647e3cb60e11b815260040160405180910390fd5b60006001600160a01b03166011868660405162006d4e92919062008dd4565b908152604051908190036020019020546001600160a01b031614158062006d9857506014858560405162006d8492919062008dd4565b9081526040519081900360200190205460ff165b1562006db7576040516311fdb94760e01b815260040160405180910390fd5b336000818152600d60205260409020600c810154429062006ddb90603c9062008e1d565b111562006dfb57604051631f92cdbd60e11b815260040160405180910390fd5b4260128260040160405162006e1191906200962a565b908152604051908190036020019020556004810162006e328789836200904c565b5042600c820155604051829060119062006e50908a908a9062008dd4565b90815260405190819003602001812080546001600160a01b039384166001600160a01b0319909116179055908316907f783156582145bd0ff7924fae6953ba054cf1233eb60739a200ddb10de068ff0d9062006eb0908a908a906200931d565b60405180910390a250505050505050565b6001600160a01b03811660009081526001830160205260408120541515620045f4565b6000806000848460405160200162006efe929190620096a8565b60408051601f198184030181529181528151602092830120600081815260189093529120549091504281111562006f3e5760008093509350505062006f67565b600a5462006f4d904262008e1d565b600092835260186020526040909220829055506001925090505b9250929050565b6000600162006f7e600b62007a62565b62006f8a919062008ef3565b6015541080159150620070485760405163d31f968d60e01b81526110006004820152600860248201526120009063d31f968d90604401602060405180830381865afa15801562006fde573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062007004919062008eac565b620070485760018301546040516001600160a01b03909116907f2afdc18061ac21cff7d9f11527ab9c8dec6fabd4edf6f894ed634bebd6a20d4590600090a2505050565b82600b01548211156200705d57600b83018290555b600a83015460ff16620070d057600a8301805460ff19166001908117909155601580546000906200709090849062008e1d565b909155505060018301546040516001600160a01b03909116907f4905ac32602da3fb8b4b7b00c285e5fc4c6c2308cc908b4a1e4e9625a29c90a390600090a25b505050565b60408051608080820183526000808352602080840182905283850182905260608085018390528551938401865282845283820183905283860183905283018290528451808601865282815281018290528451808601909552855185528581019085015291928290620071479062007fd0565b90506000805b620071588362008043565b156200722b57806000036200718d576200717c620071768462008069565b620080cd565b6001600160a01b0316845262007218565b80600103620071b957620071a5620071768462008069565b6001600160a01b0316602085015262007218565b80600203620071e557620071d1620071768462008069565b6001600160a01b0316604085015262007218565b80600303620072125762007203620071fd8462008069565b620080e5565b60608501526001915062007218565b6200722b565b620072238162008f88565b90506200714d565b5091959194509092505050565b6000805462010000900460ff1615620072645760405163d7485e8f60e01b815260040160405180910390fd5b6020808301516001600160a01b03166000908152601a909152604090205460ff16806200729c575060208201516001600160a01b0316155b15620072bb5760405163b1d02c3d60e01b815260040160405180910390fd5b8151620072cb90600b9062006ec1565b620072d857506002919050565b81516001600160a01b039081166000908152600d6020908152604080832081516101608101835281548616815260018201548616938101939093526002810154909416908201526003830154606082015260048301805492939192608084019190620073449062008d9e565b80601f0160208091040260200160405190810160405280929190818152602001828054620073729062008d9e565b8015620073c35780601f106200739757610100808354040283529160200191620073c3565b820191906000526020600020905b815481529060010190602001808311620073a557829003601f168201915b5050505050815260200160058201604051806080016040529081600082018054620073ee9062008d9e565b80601f01602080910402602001604051908101604052809291908181526020018280546200741c9062008d9e565b80156200746d5780601f1062007441576101008083540402835291602001916200746d565b820191906000526020600020905b8154815290600101906020018083116200744f57829003601f168201915b50505050508152602001600182018054620074889062008d9e565b80601f0160208091040260200160405190810160405280929190818152602001828054620074b69062008d9e565b8015620075075780601f10620074db5761010080835404028352916020019162007507565b820191906000526020600020905b815481529060010190602001808311620074e957829003601f168201915b50505050508152602001600282018054620075229062008d9e565b80601f0160208091040260200160405190810160405280929190818152602001828054620075509062008d9e565b8015620075a15780601f106200757557610100808354040283529160200191620075a1565b820191906000526020600020905b8154815290600101906020018083116200758357829003601f168201915b50505050508152602001600382018054620075bc9062008d9e565b80601f0160208091040260200160405190810160405280929190818152602001828054620075ea9062008d9e565b80156200763b5780601f106200760f576101008083540402835291602001916200763b565b820191906000526020600020905b8154815290600101906020018083116200761d57829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152805161028081019182905260a09092019190600d84019060149082845b815481526020019060010190808311620076c75750505050508152505090508060e00151801562007712575082600001516001600160a01b031683602001516001600160a01b031614155b15620077215750600392915050565b6040808201516060850151602086015192516317066a5760e21b81526001600160a01b03938416600482015260009390921691635c19a95c919060240160206040518083038185885af11580156200777d573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190620077a4919062008e33565b905083602001516001600160a01b031684600001516001600160a01b03167f24d7bda8602b916d64417f0dbfe2e2e88ec9b1157bd9f596dfdb91ba26624e0483876060015160405162007801929190918252602082015260400190565b60405180910390a383602001516001600160a01b031684600001516001600160a01b03167f607b17598da6bdca05650a2fc08bd2bc8e38c3236806a0fa8e0daabc1d6cb1d883876060015160405162007864929190918252602082015260400190565b60405180910390a360408083015160208601519151633041949b60e01b815261200592633041949b926200789e9290919060040162008e92565b600060405180830381600087803b158015620078b957600080fd5b505af1158015620078ce573d6000803e3d6000fd5b506000979650505050505050565b6001600160a01b0381166000908152600d60205260409020600a81015460ff161562007906575050565b6002805490820154604051630913db4760e01b81526001600160a01b03858116600483015290911690630913db4790602401602060405180830381865afa15801562007956573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200797c919062008e33565b101562004fef576200799e816009544262007998919062008e1d565b62006f6e565b8054604051631507fdb760e11b81526001600160a01b03909116600482015261100090632a0ffb6e90602401600060405180830381600087803b158015620079e557600080fd5b505af1158015620079fa573d6000803e3d6000fd5b505082546040516335409f7f60e01b81526001600160a01b03909116600482015261100092506335409f7f9150602401600060405180830381600087803b15801562007a4557600080fd5b505af115801562007a5a573d6000803e3d6000fd5b505050505050565b6000620045f7825490565b6000620045f48383620081bd565b60008082905060038151108062007a93575060098151115b1562007aa25750600092915050565b60418160008151811062007aba5762007aba62008f23565b016020015160f81c108062007aec5750605a8160008151811062007ae25762007ae262008f23565b016020015160f81c115b1562007afb5750600092915050565b60015b815181101562007c1357603082828151811062007b1f5762007b1f62008f23565b016020015160f81c108062007b505750603982828151811062007b465762007b4662008f23565b016020015160f81c115b801562007ba05750604182828151811062007b6f5762007b6f62008f23565b016020015160f81c108062007ba05750605a82828151811062007b965762007b9662008f23565b016020015160f81c115b801562007bf05750606182828151811062007bbf5762007bbf62008f23565b016020015160f81c108062007bf05750607a82828151811062007be65762007be662008f23565b016020015160f81c115b1562007c00575060009392505050565b62007c0b8162008f88565b905062007afe565b5060019392505050565b600060308414158062007c31575060608214155b1562007c405750600062007d42565b600085854660405160200162007c5993929190620096e6565b60408051808303601f1901815282825280516020918201208184528383019092529092506000919060208201818036833701905050905081602082015260008186868a8a60405160200162007cb3959493929190620096f8565b60408051808303601f190181526001808452838301909252925060009190602082018180368337019050509050815160016020830182602086016066600019fa62007cfd57600080fd5b5060008160008151811062007d165762007d1662008f23565b016020015160f81c90506001811462007d385760009550505050505062007d42565b6001955050505050505b949350505050565b60008061200361dead60405162007d619062008441565b6001600160a01b03928316815291166020820152606060408201819052600090820152608001604051809103906000f08015801562007da4573d6000803e3d6000fd5b509050806001600160a01b031663f399e22e3486866040518463ffffffff1660e01b815260040162007dd892919062009730565b6000604051808303818588803b15801562007df257600080fd5b505af115801562007e07573d6000803e3d6000fd5b50506040516001600160a01b038086169450881692507fd481492e4e93bb36b4c12a5af93f03be3bf04b454dfbc35dd2663fa26f44d5b09150600090a39392505050565b6000620045f4836001600160a01b038416620081ea565b8162007e70600b8262006ec1565b62007e8e5760405163fdf4600b60e01b815260040160405180910390fd5b6001600160a01b038381166000908152600d6020526040808220600201549051635569f64b60e11b8152336004820152602481018690529192169063aad3ec96906044016020604051808303816000875af115801562007ef2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062007f18919062008e33565b9050336001600160a01b0316846001600160a01b03167ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926838360405162007f6091815260200190565b60405180910390a350505050565b60008160405160200162007f839190620094fa565b604051602081830303815290604052805190602001208360405160200162007fac9190620094fa565b6040516020818303038152906040528051906020012014905092915050565b015190565b604080516080810182526000918101828152606082018390528152602081019190915262007ffe826200823c565b6200800857600080fd5b60006200801983602001516200826f565b83602001516200802a919062008e1d565b6040805180820190915293845260208401525090919050565b805180516020820151600092916200805b9162008e1d565b836020015110915050919050565b6040805180820190915260008082526020820152620080888262008043565b6200809257600080fd5b60208201516000620080a482620082f7565b9050620080b2818362008e1d565b60209485015260408051808201909152908152928301525090565b8051600090601514620080df57600080fd5b620045f7825b805160009015801590620080fb57508151602110155b6200810557600080fd5b60006200811683602001516200826f565b905080836000015110156200816e5760405162461bcd60e51b815260206004820152601a60248201527f6c656e677468206973206c657373207468616e206f6666736574000000000000604482015260640162000c85565b82516000906200818090839062008ef3565b905060008083866020015162008197919062008e1d565b9050805191506020831015620081b457826020036101000a820491505b50949350505050565b6000826000018281548110620081d757620081d762008f23565b9060005260206000200154905092915050565b60008181526001830160205260408120546200823357508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155620045f7565b506000620045f7565b805160009081036200825057506000919050565b6020820151805160001a9060c082101562007c13575060009392505050565b8051600090811a6080811015620082895750600092915050565b60b8811080620082a6575060c08110801590620082a6575060f881105b15620082b55750600192915050565b60c0811015620082e957620082cd600160b862009756565b620082dc9060ff168262008ef3565b620017c790600162008e1d565b620082cd600160f862009756565b80516000908190811a60808110156200831457600191506200843a565b60b881101562008340576200832b60808262008ef3565b6200833890600162008e1d565b91506200843a565b60c0811015620083b957600060b78203600186019550806020036101000a865104915060018101820193505080831015620083b25760405162461bcd60e51b81526020600482015260116024820152706164646974696f6e206f766572666c6f7760781b604482015260640162000c85565b506200843a565b60f8811015620083d0576200832b60c08262008ef3565b600060f78203600186019550806020036101000a865104915060018101820193505080831015620084385760405162461bcd60e51b81526020600482015260116024820152706164646974696f6e206f766572666c6f7760781b604482015260640162000c85565b505b5092915050565b610e96806200977383390190565b6001600160a01b0381168114620011e557600080fd5b6000602082840312156200847857600080fd5b8135620017c7816200844f565b60008083601f8401126200849857600080fd5b5081356001600160401b03811115620084b057600080fd5b60208301915083602082850101111562006f6757600080fd5b60008060208385031215620084dd57600080fd5b82356001600160401b03811115620084f457600080fd5b620085028582860162008485565b90969095509350505050565b6000806000604084860312156200852457600080fd5b833560ff811681146200853657600080fd5b925060208401356001600160401b038111156200855257600080fd5b620085608682870162008485565b9497909650939450505050565b60005b838110156200858a57818101518382015260200162008570565b50506000910152565b60008151808452620085ad8160208601602086016200856d565b601f01601f19169290920160200192915050565b602081526000620045f4602083018462008593565b634e487b7160e01b600052604160045260246000fd5b604051608081016001600160401b0381118282101715620086115762008611620085d6565b60405290565b604051601f8201601f191681016001600160401b0381118282101715620086425762008642620085d6565b604052919050565b60006001600160401b03821115620086665762008666620085d6565b50601f01601f191660200190565b60006200868b62008685846200864a565b62008617565b9050828152838383011115620086a057600080fd5b828260208301376000602084830101529392505050565b600060208284031215620086ca57600080fd5b81356001600160401b03811115620086e157600080fd5b8201601f81018413620086f357600080fd5b62007d428482356020840162008674565b600080604083850312156200871857600080fd5b823562008725816200844f565b946020939093013593505050565b8015158114620011e557600080fd5b600080600080608085870312156200875957600080fd5b843562008766816200844f565b9350602085013562008778816200844f565b9250604085013591506060850135620087918162008733565b939692955090935050565b6001600160401b0381168114620011e557600080fd5b600060208284031215620087c557600080fd5b8135620017c7816200879c565b60008060408385031215620087e657600080fd5b50508035926020909101359150565b600081518084526020808501945080840160005b83811015620088305781516001600160a01b03168752958201959082019060010162008809565b509495945050505050565b608081526000620088506080830187620087f5565b82810360208481019190915286518083528782019282019060005b8181101562008889578451835293830193918301916001016200886b565b5050848103604086015286518082528282019350600581901b8201830183890160005b83811015620088de57601f19858403018752620088cb83835162008593565b96860196925090850190600101620088ac565b5050809550505050505082606083015295945050505050565b600080600080600080600087890360e08112156200891457600080fd5b883562008921816200844f565b975060208901356001600160401b03808211156200893e57600080fd5b6200894c8c838d0162008485565b909950975060408b01359150808211156200896657600080fd5b620089748c838d0162008485565b90975095508591506060605f19840112156200898f57600080fd5b60608b01945060c08b0135925080831115620089aa57600080fd5b505088016080818b031215620089bf57600080fd5b8091505092959891949750929550565b60008060408385031215620089e357600080fd5b8235620089f0816200844f565b9150602083013562008a028162008733565b809150509250929050565b60208152600082516080602084015262008a2b60a084018262008593565b90506020840151601f198085840301604086015262008a4b838362008593565b9250604086015191508085840301606086015262008a6a838362008593565b925060608601519150808584030160808601525062008a8a828262008593565b95945050505050565b6000806000806040858703121562008aaa57600080fd5b84356001600160401b038082111562008ac257600080fd5b62008ad08883890162008485565b9096509450602087013591508082111562008aea57600080fd5b5062008af98782880162008485565b95989497509550505050565b60008083601f84011262008b1857600080fd5b5081356001600160401b0381111562008b3057600080fd5b6020830191508360208260051b850101111562006f6757600080fd5b60008060006040848603121562008b6257600080fd5b83356001600160401b0381111562008b7957600080fd5b62008b878682870162008b05565b909450925050602084013562008b9d816200844f565b809150509250925092565b60608152600062008bbd6060830186620087f5565b828103602084015262008bd18186620087f5565b915050826040830152949350505050565b6001600160a01b038781168252861660208201526040810185905260c06060820181905260009062008c179083018662008593565b93151560808301525060a00152949350505050565b600082601f83011262008c3e57600080fd5b620045f48383356020850162008674565b60006020828403121562008c6257600080fd5b81356001600160401b038082111562008c7a57600080fd5b908301906080828603121562008c8f57600080fd5b62008c99620085ec565b82358281111562008ca957600080fd5b62008cb78782860162008c2c565b82525060208301358281111562008ccd57600080fd5b62008cdb8782860162008c2c565b60208301525060408301358281111562008cf457600080fd5b62008d028782860162008c2c565b60408301525060608301358281111562008d1b57600080fd5b62008d298782860162008c2c565b60608301525095945050505050565b6000806000806040858703121562008d4f57600080fd5b84356001600160401b038082111562008d6757600080fd5b62008d758883890162008b05565b9096509450602087013591508082111562008d8f57600080fd5b5062008af98782880162008b05565b600181811c9082168062008db357607f821691505b60208210810362003f8657634e487b7160e01b600052602260045260246000fd5b8183823760009101908152919050565b634e487b7160e01b600052601160045260246000fd5b60008262008e1857634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115620045f757620045f762008de4565b60006020828403121562008e4657600080fd5b5051919050565b634e487b7160e01b600052602160045260246000fd5b83815260208101839052606081016003831062008e845762008e8462008e4d565b826040830152949350505050565b6001600160a01b0392831681529116602082015260400190565b60006020828403121562008ebf57600080fd5b8151620017c78162008733565b828152604081016004831062008ee65762008ee662008e4d565b8260208301529392505050565b81810381811115620045f757620045f762008de4565b8082028115828204841417620045f757620045f762008de4565b634e487b7160e01b600052603260045260246000fd5b60408152600062008f4e6040830185620087f5565b905060018060a01b03831660208301529392505050565b6001600160401b038281168282160390808211156200843a576200843a62008de4565b60006001820162008f9d5762008f9d62008de4565b5060010190565b6000808335601e1984360301811262008fbc57600080fd5b8301803591506001600160401b0382111562008fd757600080fd5b60200191503681900382131562006f6757600080fd5b601f821115620070d057600081815260208120601f850160051c81016020861015620090165750805b601f850160051c820191505b8181101562007a5a5782815560010162009022565b600019600383901b1c191660019190911b1790565b6001600160401b03831115620090665762009066620085d6565b6200907e8362009077835462008d9e565b8362008fed565b6000601f841160018114620090b157600085156200909c5750838201355b620090a8868262009037565b84555062006c02565b600083815260209020601f19861690835b82811015620090e45786850135825560209485019460019092019101620090c2565b5086821015620091025760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b62009120828362008fa4565b6001600160401b038111156200913a576200913a620085d6565b62009152816200914b855462008d9e565b8562008fed565b6000601f821160018114620091855760008315620091705750838201355b6200917c848262009037565b865550620091e2565b600085815260209020601f19841690835b82811015620091b8578685013582556020948501946001909201910162009196565b5084821015620091d65760001960f88660031b161c19848701351681555b505060018360011b0185555b50505050620091f5602083018362008fa4565b620092058183600186016200904c565b505062009216604083018362008fa4565b620092268183600286016200904c565b505062009237606083018362008fa4565b620092478183600386016200904c565b50505050565b81356200925a816200879c565b6001600160401b03811690508154816001600160401b03198216178355602084013562009287816200879c565b6fffffffffffffffff0000000000000000604091821b166fffffffffffffffffffffffffffffffff19831684178117855590850135620092c7816200879c565b6001600160c01b0319929092169092179190911760809190911b67ffffffffffffffff60801b1617905550565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60208152600062007d42602083018486620092f4565b60006001600160401b038211156200934f576200934f620085d6565b5060051b60200190565b600060208083850312156200936d57600080fd5b82516001600160401b038111156200938457600080fd5b8301601f810185136200939657600080fd5b8051620093a7620086858262009333565b81815260059190911b82018301908381019087831115620093c757600080fd5b928401925b82841015620093f2578351620093e2816200844f565b82529284019290840190620093cc565b979650505050505050565b600060208083850312156200941157600080fd5b82516001600160401b03808211156200942957600080fd5b818501915085601f8301126200943e57600080fd5b81516200944f620086858262009333565b81815260059190911b830184019084810190888311156200946f57600080fd5b8585015b83811015620094ed578051858111156200948d5760008081fd5b8601603f81018b13620094a05760008081fd5b878101516040620094b562008685836200864a565b8281528d82848601011115620094cb5760008081fd5b620094dc838c83018487016200856d565b865250505091860191860162009473565b5098975050505050505050565b600082516200950e8184602087016200856d565b9190910192915050565b60ff8416815260406020820152600062008a8a604083018486620092f4565b6040815260006200954d604083018688620092f4565b8281036020840152620093f2818587620092f4565b81516001600160401b038111156200957e576200957e620085d6565b62009596816200958f845462008d9e565b8462008fed565b602080601f831160018114620095ca5760008415620095b55750858301515b620095c1858262009037565b86555062007a5a565b600085815260208120601f198616915b82811015620095fb57888601518255948401946001909101908401620095da565b50858210156200961a5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60008083546200963a8162008d9e565b600182811680156200965557600181146200966b576200969c565b60ff19841687528215158302870194506200969c565b8760005260208060002060005b85811015620096935781548a82015290840190820162009678565b50505082870194505b50929695505050505050565b6bffffffffffffffffffffffff198360601b168152600060038310620096d257620096d262008e4d565b5060f89190911b6014820152601501919050565b82848237909101908152602001919050565b600086516200970c818460208b016200856d565b82018587823760009086019081528385823760009301928352509095945050505050565b6001600160a01b038316815260406020820181905260009062007d429083018462008593565b60ff8281168282160390811115620045f757620045f762008de456fe608060405260405162000e9638038062000e96833981016040819052620000269162000497565b828162000036828260006200004d565b50620000449050826200008a565b505050620005ca565b6200005883620000e5565b600082511180620000665750805b1562000085576200008383836200012760201b620001691760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f620000b562000156565b604080516001600160a01b03928316815291841660208301520160405180910390a1620000e2816200018f565b50565b620000f08162000244565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606200014f838360405180606001604052806027815260200162000e6f60279139620002f8565b9392505050565b60006200018060008051602062000e4f83398151915260001b6200037760201b620001951760201c565b546001600160a01b0316919050565b6001600160a01b038116620001fa5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b806200022360008051602062000e4f83398151915260001b6200037760201b620001951760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6200025a816200037a60201b620001981760201c565b620002be5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401620001f1565b80620002237f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b6200037760201b620001951760201c565b6060600080856001600160a01b03168560405162000317919062000577565b600060405180830381855af49150503d806000811462000354576040519150601f19603f3d011682016040523d82523d6000602084013e62000359565b606091505b5090925090506200036d8683838762000389565b9695505050505050565b90565b6001600160a01b03163b151590565b60608315620003fd578251600003620003f5576001600160a01b0385163b620003f55760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401620001f1565b508162000409565b62000409838362000411565b949350505050565b815115620004225781518083602001fd5b8060405162461bcd60e51b8152600401620001f1919062000595565b80516001600160a01b03811681146200045657600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200048e57818101518382015260200162000474565b50506000910152565b600080600060608486031215620004ad57600080fd5b620004b8846200043e565b9250620004c8602085016200043e565b60408501519092506001600160401b0380821115620004e657600080fd5b818601915086601f830112620004fb57600080fd5b8151818111156200051057620005106200045b565b604051601f8201601f19908116603f011681019083821181831017156200053b576200053b6200045b565b816040528281528960208487010111156200055557600080fd5b6200056883602083016020880162000471565b80955050505050509250925092565b600082516200058b81846020870162000471565b9190910192915050565b6020815260008251806020840152620005b681604085016020870162000471565b601f01601f19169190910160400192915050565b61087580620005da6000396000f3fe60806040523661001357610011610017565b005b6100115b61001f6101a7565b6001600160a01b0316330361015f5760606001600160e01b0319600035166364d3180d60e11b810161005a576100536101da565b9150610157565b63587086bd60e11b6001600160e01b031982160161007a57610053610231565b63070d7c6960e41b6001600160e01b031982160161009a57610053610277565b621eb96f60e61b6001600160e01b03198216016100b9576100536102a8565b63a39f25e560e01b6001600160e01b03198216016100d9576100536102e8565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101676102fc565b565b606061018e83836040518060600160405280602781526020016108426027913961030c565b9392505050565b90565b6001600160a01b03163b151590565b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101e4610384565b60006101f33660048184610695565b81019061020091906106db565b905061021d8160405180602001604052806000815250600061038f565b505060408051602081019091526000815290565b60606000806102433660048184610695565b810190610250919061070c565b915091506102608282600161038f565b604051806020016040528060008152509250505090565b6060610281610384565b60006102903660048184610695565b81019061029d91906106db565b905061021d816103bb565b60606102b2610384565b60006102bc6101a7565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102f2610384565b60006102bc610412565b610167610307610412565b610421565b6060600080856001600160a01b03168560405161032991906107f2565b600060405180830381855af49150503d8060008114610364576040519150601f19603f3d011682016040523d82523d6000602084013e610369565b606091505b509150915061037a86838387610445565b9695505050505050565b341561016757600080fd5b610398836104c6565b6000825111806103a55750805b156103b6576103b48383610169565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103e46101a7565b604080516001600160a01b03928316815291841660208301520160405180910390a161040f81610506565b50565b600061041c6105af565b905090565b3660008037600080366000845af43d6000803e808015610440573d6000f35b3d6000fd5b606083156104b45782516000036104ad576001600160a01b0385163b6104ad5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014e565b50816104be565b6104be83836105d7565b949350505050565b6104cf81610601565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b03811661056b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014e565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101cb565b8151156105e75781518083602001fd5b8060405162461bcd60e51b815260040161014e919061080e565b6001600160a01b0381163b61066e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014e565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61058e565b600080858511156106a557600080fd5b838611156106b257600080fd5b5050820193919092039150565b80356001600160a01b03811681146106d657600080fd5b919050565b6000602082840312156106ed57600080fd5b61018e826106bf565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561071f57600080fd5b610728836106bf565b9150602083013567ffffffffffffffff8082111561074557600080fd5b818501915085601f83011261075957600080fd5b81358181111561076b5761076b6106f6565b604051601f8201601f19908116603f01168101908382118183101715610793576107936106f6565b816040528281528860208487010111156107ac57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60005b838110156107e95781810151838201526020016107d1565b50506000910152565b600082516108048184602087016107ce565b9190910192915050565b602081526000825180602084015261082d8160408501602087016107ce565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000ab53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c656400000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000003000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c80000000000000000000000003c44cdddb6a900fa2b585dd299e03d12fa4293bc00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000030b86b3146bdd2200b1dbdb1cea5e40d3451c028cbb4fb03b1826f7f2d82bee76bbd5cd68a74a16a7eceea093fd5826b9200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003087ce273bb9b51fd69e50de7a8d9a99cfb3b1a5c6a7b85f6673d137a5a2ce7df3d6ee4e6d579a142d58b0606c4a7a1c27000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030a33ac14980d85c0d154c5909ebf7a11d455f54beb4d5d0dc1d8b3670b9c4a6b6c450ee3d623ecc48026f09ed1f0b5c1200000000000000000000000000000000a164736f6c6343000811000a", }, { ContractAddr: common.HexToAddress(StakeCreditContract), CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/1abdfbf3aeb86909c2220b79bf92b87ddff64b54", - Code: "6080604052600436106101e75760003560e01c8063647df75911610102578063a9664feb11610095578063d241c1ea11610064578063d241c1ea1461068d578063dd62ed3e146106cf578063f1fad104146106ef578063f399e22e1461070457600080fd5b8063a9664feb14610600578063aa1966cd14610620578063aad3ec961461064d578063c2cde2b21461066d57600080fd5b806395d89b41116100d157806395d89b411461058b578063a457c2d7146105a0578063a5d059ca146105c0578063a9059cbb146105e057600080fd5b8063647df759146104e85780636bbf22491461050857806370a082311461053557806391faf0b41461056b57600080fd5b8063313ce5671161017a5780634bf6c882116101495780634bf6c8821461048b5780634d99dd16146104a05780635c19a95c146104c05780635e607d76146104d357600080fd5b8063313ce567146103f157806339509351146104135780633a5381b51461043357806345bc4d101461046b57600080fd5b806315d1f898116101b657806315d1f8981461038657806318160ddd1461039c57806323b872dd146103b15780632f2d448a146103d157600080fd5b8063038c0023146102e157806306fdde03146103145780630913db4714610336578063095ea7b31461035657600080fd5b366102dc57336120021461021757604051630f22c43960e41b815261200260048201526024015b60405180910390fd5b60006120026001600160a01b0316631fa8882b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610259573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061027d9190611d8c565b6102879042611dbb565b6098546000828152609d6020908152604080832093909355609c9052908120805492935034929091906102bb908490611ddd565b9250508190555034609860008282546102d49190611ddd565b925050819055005b600080fd5b3480156102ed57600080fd5b506103016102fc366004611e08565b610717565b6040519081526020015b60405180910390f35b34801561032057600080fd5b50610329610747565b60405161030b9190611e2c565b34801561034257600080fd5b50610301610351366004611e08565b6107d9565b34801561036257600080fd5b50610376610371366004611e7a565b6107fb565b604051901515815260200161030b565b34801561039257600080fd5b5061030160985481565b3480156103a857600080fd5b50606754610301565b3480156103bd57600080fd5b506103766103cc366004611ea6565b610813565b3480156103dd57600080fd5b506103016103ec366004611e08565b610837565b3480156103fd57600080fd5b5060125b60405160ff909116815260200161030b565b34801561041f57600080fd5b5061037661042e366004611e7a565b6108fc565b34801561043f57600080fd5b50609754610453906001600160a01b031681565b6040516001600160a01b03909116815260200161030b565b34801561047757600080fd5b50610301610486366004611ee7565b61091e565b34801561049757600080fd5b50610401600881565b3480156104ac57600080fd5b506103016104bb366004611e7a565b610a11565b6103016104ce366004611e08565b610c28565b6104e66104e1366004611f00565b610c7b565b005b3480156104f457600080fd5b50610301610503366004611ee7565b610dee565b34801561051457600080fd5b50610301610523366004611ee7565b609d6020526000908152604090205481565b34801561054157600080fd5b50610301610550366004611e08565b6001600160a01b031660009081526065602052604090205490565b34801561057757600080fd5b50610301610586366004611ee7565b610e2d565b34801561059757600080fd5b50610329610e68565b3480156105ac57600080fd5b506103766105bb366004611e7a565b610e77565b3480156105cc57600080fd5b506103016105db366004611e7a565b610ef2565b3480156105ec57600080fd5b506103766105fb366004611e7a565b610ff3565b34801561060c57600080fd5b5061030161061b366004611e7a565b611001565b34801561062c57600080fd5b5061030161063b366004611ee7565b609c6020526000908152604090205481565b34801561065957600080fd5b50610301610668366004611e7a565b61112a565b34801561067957600080fd5b50610301610688366004611e08565b6113cd565b34801561069957600080fd5b506106ad6106a8366004611e7a565b6113eb565b604080518251815260208084015190820152918101519082015260600161030b565b3480156106db57600080fd5b506103016106ea366004611f2a565b61146e565b3480156106fb57600080fd5b50610401601181565b6104e6610712366004611f63565b611499565b6001600160a01b0381166000908152609a6020526040812054600f81810b600160801b909204900b035b92915050565b60606068805461075690611fe8565b80601f016020809104026020016040519081016040528092919081815260200182805461078290611fe8565b80156107cf5780601f106107a4576101008083540402835291602001916107cf565b820191906000526020600020905b8154815290600101906020018083116107b257829003601f168201915b5050505050905090565b6001600160a01b03811660009081526065602052604081205461074190610e2d565b600033610809818585611647565b5060019392505050565b600033610821858285611660565b61082c8585856116d4565b506001949350505050565b6001600160a01b0381166000908152609a6020526040812054600f81810b600160801b909204900b0381805b828110156108f4576001600160a01b0385166000908152609a6020526040812061088d90836116ed565b6000818152609960209081526040918290208251606081018452815481526001820154928101929092526002015491810182905291925042106108da576108d38461201c565b93506108e1565b50506108f4565b5050806108ed9061201c565b9050610863565b509392505050565b60003361080981858561090f838361146e565b6109199190611ddd565b611647565b6000336120021461094657604051630f22c43960e41b8152612002600482015260240161020e565b6097546001600160a01b03166000908152606560205260408120549061096b84610dee565b905081811161097a578061097c565b815b609754909150600090610998906001600160a01b03168361175e565b6040519091506000906110029083908381818185875af1925050503d80600081146109df576040519150601f19603f3d011682016040523d82523d6000602084013e6109e4565b606091505b5050905080610a06576040516312171d8360e31b815260040160405180910390fd5b50925050505b919050565b60003361200214610a3957604051630f22c43960e41b8152612002600482015260240161020e565b81600003610a5a57604051631f2a200560e01b815260040160405180910390fd5b6001600160a01b038316600090815260656020526040902054821115610a9357604051631e9acf1760e31b815260040160405180910390fd5b610a9d838361175e565b905060006120026001600160a01b031663fc0c5ff16040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ae1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b059190611d8c565b610b0f9042611ddd565b6040805160608101825285815260208101859052908101829052909150600085610b3881611793565b60405160609290921b6bffffffffffffffffffffffff19166020830152603482015260540160408051601f1981840301815291815281516020928301206000818152609990935291205490915015610ba35760405163b19e911560e01b815260040160405180910390fd5b600081815260996020908152604080832085518155828601516001820155818601516002909101556001600160a01b0389168352609a9091529020610c1f90828154600160801b90819004600f0b6000818152600180860160205260409091209390935583546001600160801b03908116939091011602179055565b50505092915050565b60003361200214610c5057604051630f22c43960e41b8152612002600482015260240161020e565b34600003610c7157604051631f2a200560e01b815260040160405180910390fd5b61074182346117bb565b3361200214610ca157604051630f22c43960e41b8152612002600482015260240161020e565b346000612710610cbb67ffffffffffffffff851684612035565b610cc59190611dbb565b90506000610cd3828461204c565b905060006120026001600160a01b0316631fa8882b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d3b9190611d8c565b610d459042611dbb565b6098546000828152609d6020908152604080832093909355609c905290812080549293508492909190610d79908490611ddd565b925050819055508160986000828254610d929190611ddd565b9091555050609754610dad906001600160a01b0316846117bb565b5060408051838152602081018590527ffb0e1482d62102ab9594f69d4c6d693749e3e2bf1c21af272f5456b2d5a4f6b5910160405180910390a15050505050565b6000609854600003610e13576040516307b76ce760e51b815260040160405180910390fd5b609854606754610e239084612035565b6107419190611dbb565b6000610e3860675490565b600003610e5857604051632fe8dae960e01b815260040160405180910390fd5b606754609854610e239084612035565b60606069805461075690611fe8565b60003381610e85828661146e565b905083811015610ee55760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161020e565b61082c8286868403611647565b60003361200214610f1a57604051630f22c43960e41b8152612002600482015260240161020e565b81600003610f3b57604051631f2a200560e01b815260040160405180910390fd5b6001600160a01b038316600090815260656020526040902054821115610f7457604051631e9acf1760e31b815260040160405180910390fd5b610f7e838361175e565b6040519091506000906120029083908381818185875af1925050503d8060008114610fc5576040519150601f19603f3d011682016040523d82523d6000602084013e610fca565b606091505b5050905080610fec576040516312171d8360e31b815260040160405180910390fd5b5092915050565b6000336108098185856116d4565b6001600160a01b0382166000908152609a6020526040812054600f81810b600160801b909204900b0360000361103957506000610741565b81158061106d57506001600160a01b0383166000908152609a6020526040902054600f81810b600160801b909204900b0382115b61107757816110a1565b6001600160a01b0383166000908152609a6020526040902054600f81810b600160801b909204900b035b91506000805b838110156108f4576001600160a01b0385166000908152609a602052604081206110d190836116ed565b600081815260996020908152604091829020825160608101845281548152600182015492810183905260029091015492810192909252919250906111159085611ddd565b93505050806111239061201c565b90506110a7565b6000336120021461115257604051630f22c43960e41b8152612002600482015260240161020e565b61115a6117e4565b6001600160a01b0383166000908152609a6020526040902054600f81810b600160801b909204900b036000036111a35760405163ad41893760e01b815260040160405180910390fd5b8115806111d757506001600160a01b0383166000908152609a6020526040902054600f81810b600160801b909204900b0382115b6111e1578161120b565b6001600160a01b0383166000908152609a6020526040902054600f81810b600160801b909204900b035b915060005b82156112c1576001600160a01b0384166000908152609a602052604081206112379061183d565b6000818152609960209081526040918290208251606081018452815481526001820154928101929092526002015491810182905291925042101561127c5750506112c1565b6001600160a01b0386166000908152609a6020526040902061129d90611891565b5060208101516112ad9084611ddd565b92506112b88561205f565b94505050611210565b806000036112e2576040516303cd8e0960e21b815260040160405180910390fd5b60006120026001600160a01b031663e8f67c3b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611324573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113489190611d8c565b90506000856001600160a01b03168284604051600060405180830381858888f193505050503d8060008114611399576040519150601f19603f3d011682016040523d82523d6000602084013e61139e565b606091505b50509050806113c0576040516312171d8360e31b815260040160405180910390fd5b5050600180559050610741565b6001600160a01b0381166000908152609b6020526040812054610741565b61140f60405180606001604052806000815260200160008152602001600081525090565b6001600160a01b0383166000908152609a6020526040812061143190846116ed565b6000908152609960209081526040918290208251606081018452815481526001820154928101929092526002015491810191909152949350505050565b6001600160a01b03918216600090815260666020908152604080832093909416825291909152205490565b600054610100900460ff16158080156114b95750600054600160ff909116105b806114d35750303b1580156114d3575060005460ff166001145b6115365760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161020e565b6000805460ff191660011790558015611559576000805461ff0019166101001790555b336120021461157f57604051630f22c43960e41b8152612002600482015260240161020e565b60008383604051602001611594929190612076565b6040516020818303038152906040529050600084846040516020016115ba9291906120a6565b60405160208183030381529060405290506115d58282611910565b609780546001600160a01b0319166001600160a01b0388161790556115f934611955565b50508015611641576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b604051632028747160e01b815260040160405180910390fd5b600061166c848461146e565b9050600019811461164157818110156116c75760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161020e565b6116418484848403611647565b604051638cd22d1960e01b815260040160405180910390fd5b6000806117106116fc84611ac5565b855461170b9190600f0b6120c4565b611b33565b8454909150600160801b9004600f90810b9082900b1261174357604051632d0483c560e21b815260040160405180910390fd5b600f0b60009081526001939093016020525050604090205490565b600061176982610e2d565b90506117758383611b97565b8060986000828254611787919061204c565b90915550909392505050565b6001600160a01b0381166000908152609b602052604090208054600181018255905b50919050565b60006117c682610dee565b90506117d28382611ccb565b81609860008282546117879190611ddd565b6002600154036118365760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161020e565b6002600155565b60006118588254600f81810b600160801b909204900b131590565b1561187657604051631ed9509560e11b815260040160405180910390fd5b508054600f0b60009081526001909101602052604090205490565b60006118ac8254600f81810b600160801b909204900b131590565b156118ca57604051631ed9509560e11b815260040160405180910390fd5b508054600f0b6000818152600180840160205260408220805492905583546fffffffffffffffffffffffffffffffff191692016001600160801b03169190911790915590565b600054610100900460ff166119375760405162461bcd60e51b815260040161020e906120ec565b6068611943838261219b565b506069611950828261219b565b505050565b600054610100900460ff1661197c5760405162461bcd60e51b815260040161020e906120ec565b60006120026001600160a01b0316638a4d3fa86040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119e29190611d8c565b905080821115806119fc57506097546001600160a01b0316155b80611a08575060675415155b15611a2657604051632163e6b960e21b815260040160405180910390fd5b60006120026001600160a01b0316634e6fd6c46040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a8c919061225b565b9050611a988183611ccb565b6000611aa4838561204c565b609754909150611abd906001600160a01b031682611ccb565b505050609855565b60006001600160ff1b03821115611b2f5760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b606482015260840161020e565b5090565b80600f81900b8114610a0c5760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20316044820152663238206269747360c81b606482015260840161020e565b6001600160a01b038216611bf75760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161020e565b6001600160a01b03821660009081526065602052604090205481811015611c6b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161020e565b6001600160a01b03831660008181526065602090815260408083208686039055606780548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b6001600160a01b038216611d215760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161020e565b8060676000828254611d339190611ddd565b90915550506001600160a01b0382166000818152606560209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b600060208284031215611d9e57600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b600082611dd857634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111561074157610741611da5565b6001600160a01b0381168114611e0557600080fd5b50565b600060208284031215611e1a57600080fd5b8135611e2581611df0565b9392505050565b600060208083528351808285015260005b81811015611e5957858101830151858201604001528201611e3d565b506000604082860101526040601f19601f8301168501019250505092915050565b60008060408385031215611e8d57600080fd5b8235611e9881611df0565b946020939093013593505050565b600080600060608486031215611ebb57600080fd5b8335611ec681611df0565b92506020840135611ed681611df0565b929592945050506040919091013590565b600060208284031215611ef957600080fd5b5035919050565b600060208284031215611f1257600080fd5b813567ffffffffffffffff81168114611e2557600080fd5b60008060408385031215611f3d57600080fd5b8235611f4881611df0565b91506020830135611f5881611df0565b809150509250929050565b600080600060408486031215611f7857600080fd5b8335611f8381611df0565b9250602084013567ffffffffffffffff80821115611fa057600080fd5b818601915086601f830112611fb457600080fd5b813581811115611fc357600080fd5b876020828501011115611fd557600080fd5b6020830194508093505050509250925092565b600181811c90821680611ffc57607f821691505b6020821081036117b557634e487b7160e01b600052602260045260246000fd5b60006001820161202e5761202e611da5565b5060010190565b808202811582820484141761074157610741611da5565b8181038181111561074157610741611da5565b60008161206e5761206e611da5565b506000190190565b65029ba30b5b2960d51b815281836006830137660810dc99591a5d60ca1b91016006810191909152600d01919050565b611cdd60f21b81528183600283013760009101600201908152919050565b80820182811260008312801582168215821617156120e4576120e4611da5565b505092915050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b634e487b7160e01b600052604160045260246000fd5b601f82111561195057600081815260208120601f850160051c810160208610156121745750805b601f850160051c820191505b8181101561219357828155600101612180565b505050505050565b815167ffffffffffffffff8111156121b5576121b5612137565b6121c9816121c38454611fe8565b8461214d565b602080601f8311600181146121fe57600084156121e65750858301515b600019600386901b1c1916600185901b178555612193565b600085815260208120601f198616915b8281101561222d5788860151825594840194600190910190840161220e565b508582101561224b5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006020828403121561226d57600080fd5b8151611e2581611df056fea164736f6c6343000811000a", + Code: "6080604052600436106101e75760003560e01c8063647df75911610102578063a9664feb11610095578063d241c1ea11610064578063d241c1ea1461068d578063dd62ed3e146106cf578063f1fad104146106ef578063f399e22e1461070457600080fd5b8063a9664feb14610600578063aa1966cd14610620578063aad3ec961461064d578063c2cde2b21461066d57600080fd5b806395d89b41116100d157806395d89b411461058b578063a457c2d7146105a0578063a5d059ca146105c0578063a9059cbb146105e057600080fd5b8063647df759146104e85780636bbf22491461050857806370a082311461053557806391faf0b41461056b57600080fd5b8063313ce5671161017a5780634bf6c882116101495780634bf6c8821461048b5780634d99dd16146104a05780635c19a95c146104c05780635e607d76146104d357600080fd5b8063313ce567146103f157806339509351146104135780633a5381b51461043357806345bc4d101461046b57600080fd5b806315d1f898116101b657806315d1f8981461038657806318160ddd1461039c57806323b872dd146103b15780632f2d448a146103d157600080fd5b8063038c0023146102e157806306fdde03146103145780630913db4714610336578063095ea7b31461035657600080fd5b366102dc57336120021461021757604051630f22c43960e41b815261200260048201526024015b60405180910390fd5b60006120026001600160a01b0316631fa8882b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610259573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061027d9190611daf565b6102879042611dde565b6098546000828152609d6020908152604080832093909355609c9052908120805492935034929091906102bb908490611e00565b9250508190555034609860008282546102d49190611e00565b925050819055005b600080fd5b3480156102ed57600080fd5b506103016102fc366004611e2b565b610717565b6040519081526020015b60405180910390f35b34801561032057600080fd5b50610329610747565b60405161030b9190611e4f565b34801561034257600080fd5b50610301610351366004611e2b565b6107d9565b34801561036257600080fd5b50610376610371366004611e9d565b6107fb565b604051901515815260200161030b565b34801561039257600080fd5b5061030160985481565b3480156103a857600080fd5b50606754610301565b3480156103bd57600080fd5b506103766103cc366004611ec9565b610813565b3480156103dd57600080fd5b506103016103ec366004611e2b565b610837565b3480156103fd57600080fd5b5060125b60405160ff909116815260200161030b565b34801561041f57600080fd5b5061037661042e366004611e9d565b6108fc565b34801561043f57600080fd5b50609754610453906001600160a01b031681565b6040516001600160a01b03909116815260200161030b565b34801561047757600080fd5b50610301610486366004611f0a565b61091e565b34801561049757600080fd5b50610401600881565b3480156104ac57600080fd5b506103016104bb366004611e9d565b610a11565b6103016104ce366004611e2b565b610c28565b6104e66104e1366004611f23565b610c9e565b005b3480156104f457600080fd5b50610301610503366004611f0a565b610e11565b34801561051457600080fd5b50610301610523366004611f0a565b609d6020526000908152604090205481565b34801561054157600080fd5b50610301610550366004611e2b565b6001600160a01b031660009081526065602052604090205490565b34801561057757600080fd5b50610301610586366004611f0a565b610e50565b34801561059757600080fd5b50610329610e8b565b3480156105ac57600080fd5b506103766105bb366004611e9d565b610e9a565b3480156105cc57600080fd5b506103016105db366004611e9d565b610f15565b3480156105ec57600080fd5b506103766105fb366004611e9d565b611016565b34801561060c57600080fd5b5061030161061b366004611e9d565b611024565b34801561062c57600080fd5b5061030161063b366004611f0a565b609c6020526000908152604090205481565b34801561065957600080fd5b50610301610668366004611e9d565b61114d565b34801561067957600080fd5b50610301610688366004611e2b565b6113f0565b34801561069957600080fd5b506106ad6106a8366004611e9d565b61140e565b604080518251815260208084015190820152918101519082015260600161030b565b3480156106db57600080fd5b506103016106ea366004611f4d565b611491565b3480156106fb57600080fd5b50610401601181565b6104e6610712366004611f86565b6114bc565b6001600160a01b0381166000908152609a6020526040812054600f81810b600160801b909204900b035b92915050565b6060606880546107569061200b565b80601f01602080910402602001604051908101604052809291908181526020018280546107829061200b565b80156107cf5780601f106107a4576101008083540402835291602001916107cf565b820191906000526020600020905b8154815290600101906020018083116107b257829003601f168201915b5050505050905090565b6001600160a01b03811660009081526065602052604081205461074190610e50565b60003361080981858561166a565b5060019392505050565b600033610821858285611683565b61082c8585856116f7565b506001949350505050565b6001600160a01b0381166000908152609a6020526040812054600f81810b600160801b909204900b0381805b828110156108f4576001600160a01b0385166000908152609a6020526040812061088d9083611710565b6000818152609960209081526040918290208251606081018452815481526001820154928101929092526002015491810182905291925042106108da576108d38461203f565b93506108e1565b50506108f4565b5050806108ed9061203f565b9050610863565b509392505050565b60003361080981858561090f8383611491565b6109199190611e00565b61166a565b6000336120021461094657604051630f22c43960e41b8152612002600482015260240161020e565b6097546001600160a01b03166000908152606560205260408120549061096b84610e11565b905081811161097a578061097c565b815b609754909150600090610998906001600160a01b031683611781565b6040519091506000906110029083908381818185875af1925050503d80600081146109df576040519150601f19603f3d011682016040523d82523d6000602084013e6109e4565b606091505b5050905080610a06576040516312171d8360e31b815260040160405180910390fd5b50925050505b919050565b60003361200214610a3957604051630f22c43960e41b8152612002600482015260240161020e565b81600003610a5a57604051639811e0c760e01b815260040160405180910390fd5b6001600160a01b038316600090815260656020526040902054821115610a9357604051631e9acf1760e31b815260040160405180910390fd5b610a9d8383611781565b905060006120026001600160a01b031663fc0c5ff16040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ae1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b059190611daf565b610b0f9042611e00565b6040805160608101825285815260208101859052908101829052909150600085610b38816117b6565b60405160609290921b6bffffffffffffffffffffffff19166020830152603482015260540160408051601f1981840301815291815281516020928301206000818152609990935291205490915015610ba35760405163b19e911560e01b815260040160405180910390fd5b600081815260996020908152604080832085518155828601516001820155818601516002909101556001600160a01b0389168352609a9091529020610c1f90828154600160801b90819004600f0b6000818152600180860160205260409091209390935583546001600160801b03908116939091011602179055565b50505092915050565b60003361200214610c5057604051630f22c43960e41b8152612002600482015260240161020e565b34600003610c7157604051631f2a200560e01b815260040160405180910390fd5b610c7b82346117de565b905080600003610a0c57604051639811e0c760e01b815260040160405180910390fd5b3361200214610cc457604051630f22c43960e41b8152612002600482015260240161020e565b346000612710610cde67ffffffffffffffff851684612058565b610ce89190611dde565b90506000610cf6828461206f565b905060006120026001600160a01b0316631fa8882b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d5e9190611daf565b610d689042611dde565b6098546000828152609d6020908152604080832093909355609c905290812080549293508492909190610d9c908490611e00565b925050819055508160986000828254610db59190611e00565b9091555050609754610dd0906001600160a01b0316846117de565b5060408051838152602081018590527ffb0e1482d62102ab9594f69d4c6d693749e3e2bf1c21af272f5456b2d5a4f6b5910160405180910390a15050505050565b6000609854600003610e36576040516307b76ce760e51b815260040160405180910390fd5b609854606754610e469084612058565b6107419190611dde565b6000610e5b60675490565b600003610e7b57604051632fe8dae960e01b815260040160405180910390fd5b606754609854610e469084612058565b6060606980546107569061200b565b60003381610ea88286611491565b905083811015610f085760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161020e565b61082c828686840361166a565b60003361200214610f3d57604051630f22c43960e41b8152612002600482015260240161020e565b81600003610f5e57604051639811e0c760e01b815260040160405180910390fd5b6001600160a01b038316600090815260656020526040902054821115610f9757604051631e9acf1760e31b815260040160405180910390fd5b610fa18383611781565b6040519091506000906120029083908381818185875af1925050503d8060008114610fe8576040519150601f19603f3d011682016040523d82523d6000602084013e610fed565b606091505b505090508061100f576040516312171d8360e31b815260040160405180910390fd5b5092915050565b6000336108098185856116f7565b6001600160a01b0382166000908152609a6020526040812054600f81810b600160801b909204900b0360000361105c57506000610741565b81158061109057506001600160a01b0383166000908152609a6020526040902054600f81810b600160801b909204900b0382115b61109a57816110c4565b6001600160a01b0383166000908152609a6020526040902054600f81810b600160801b909204900b035b91506000805b838110156108f4576001600160a01b0385166000908152609a602052604081206110f49083611710565b600081815260996020908152604091829020825160608101845281548152600182015492810183905260029091015492810192909252919250906111389085611e00565b93505050806111469061203f565b90506110ca565b6000336120021461117557604051630f22c43960e41b8152612002600482015260240161020e565b61117d611807565b6001600160a01b0383166000908152609a6020526040902054600f81810b600160801b909204900b036000036111c65760405163ad41893760e01b815260040160405180910390fd5b8115806111fa57506001600160a01b0383166000908152609a6020526040902054600f81810b600160801b909204900b0382115b611204578161122e565b6001600160a01b0383166000908152609a6020526040902054600f81810b600160801b909204900b035b915060005b82156112e4576001600160a01b0384166000908152609a6020526040812061125a90611860565b6000818152609960209081526040918290208251606081018452815481526001820154928101929092526002015491810182905291925042101561129f5750506112e4565b6001600160a01b0386166000908152609a602052604090206112c0906118b4565b5060208101516112d09084611e00565b92506112db85612082565b94505050611233565b80600003611305576040516303cd8e0960e21b815260040160405180910390fd5b60006120026001600160a01b031663e8f67c3b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611347573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061136b9190611daf565b90506000856001600160a01b03168284604051600060405180830381858888f193505050503d80600081146113bc576040519150601f19603f3d011682016040523d82523d6000602084013e6113c1565b606091505b50509050806113e3576040516312171d8360e31b815260040160405180910390fd5b5050600180559050610741565b6001600160a01b0381166000908152609b6020526040812054610741565b61143260405180606001604052806000815260200160008152602001600081525090565b6001600160a01b0383166000908152609a602052604081206114549084611710565b6000908152609960209081526040918290208251606081018452815481526001820154928101929092526002015491810191909152949350505050565b6001600160a01b03918216600090815260666020908152604080832093909416825291909152205490565b600054610100900460ff16158080156114dc5750600054600160ff909116105b806114f65750303b1580156114f6575060005460ff166001145b6115595760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161020e565b6000805460ff19166001179055801561157c576000805461ff0019166101001790555b33612002146115a257604051630f22c43960e41b8152612002600482015260240161020e565b600083836040516020016115b7929190612099565b6040516020818303038152906040529050600084846040516020016115dd9291906120c9565b60405160208183030381529060405290506115f88282611933565b609780546001600160a01b0319166001600160a01b03881617905561161c34611978565b50508015611664576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b604051632028747160e01b815260040160405180910390fd5b600061168f8484611491565b9050600019811461166457818110156116ea5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161020e565b611664848484840361166a565b604051638cd22d1960e01b815260040160405180910390fd5b60008061173361171f84611ae8565b855461172e9190600f0b6120e7565b611b56565b8454909150600160801b9004600f90810b9082900b1261176657604051632d0483c560e21b815260040160405180910390fd5b600f0b60009081526001939093016020525050604090205490565b600061178c82610e50565b90506117988383611bba565b80609860008282546117aa919061206f565b90915550909392505050565b6001600160a01b0381166000908152609b602052604090208054600181018255905b50919050565b60006117e982610e11565b90506117f58382611cee565b81609860008282546117aa9190611e00565b6002600154036118595760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161020e565b6002600155565b600061187b8254600f81810b600160801b909204900b131590565b1561189957604051631ed9509560e11b815260040160405180910390fd5b508054600f0b60009081526001909101602052604090205490565b60006118cf8254600f81810b600160801b909204900b131590565b156118ed57604051631ed9509560e11b815260040160405180910390fd5b508054600f0b6000818152600180840160205260408220805492905583546fffffffffffffffffffffffffffffffff191692016001600160801b03169190911790915590565b600054610100900460ff1661195a5760405162461bcd60e51b815260040161020e9061210f565b606861196683826121be565b50606961197382826121be565b505050565b600054610100900460ff1661199f5760405162461bcd60e51b815260040161020e9061210f565b60006120026001600160a01b0316638a4d3fa86040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119e1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a059190611daf565b90508082111580611a1f57506097546001600160a01b0316155b80611a2b575060675415155b15611a4957604051632163e6b960e21b815260040160405180910390fd5b60006120026001600160a01b0316634e6fd6c46040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aaf919061227e565b9050611abb8183611cee565b6000611ac7838561206f565b609754909150611ae0906001600160a01b031682611cee565b505050609855565b60006001600160ff1b03821115611b525760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b606482015260840161020e565b5090565b80600f81900b8114610a0c5760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20316044820152663238206269747360c81b606482015260840161020e565b6001600160a01b038216611c1a5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161020e565b6001600160a01b03821660009081526065602052604090205481811015611c8e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161020e565b6001600160a01b03831660008181526065602090815260408083208686039055606780548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b6001600160a01b038216611d445760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161020e565b8060676000828254611d569190611e00565b90915550506001600160a01b0382166000818152606560209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b600060208284031215611dc157600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b600082611dfb57634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111561074157610741611dc8565b6001600160a01b0381168114611e2857600080fd5b50565b600060208284031215611e3d57600080fd5b8135611e4881611e13565b9392505050565b600060208083528351808285015260005b81811015611e7c57858101830151858201604001528201611e60565b506000604082860101526040601f19601f8301168501019250505092915050565b60008060408385031215611eb057600080fd5b8235611ebb81611e13565b946020939093013593505050565b600080600060608486031215611ede57600080fd5b8335611ee981611e13565b92506020840135611ef981611e13565b929592945050506040919091013590565b600060208284031215611f1c57600080fd5b5035919050565b600060208284031215611f3557600080fd5b813567ffffffffffffffff81168114611e4857600080fd5b60008060408385031215611f6057600080fd5b8235611f6b81611e13565b91506020830135611f7b81611e13565b809150509250929050565b600080600060408486031215611f9b57600080fd5b8335611fa681611e13565b9250602084013567ffffffffffffffff80821115611fc357600080fd5b818601915086601f830112611fd757600080fd5b813581811115611fe657600080fd5b876020828501011115611ff857600080fd5b6020830194508093505050509250925092565b600181811c9082168061201f57607f821691505b6020821081036117d857634e487b7160e01b600052602260045260246000fd5b60006001820161205157612051611dc8565b5060010190565b808202811582820484141761074157610741611dc8565b8181038181111561074157610741611dc8565b60008161209157612091611dc8565b506000190190565b65029ba30b5b2960d51b815281836006830137660810dc99591a5d60ca1b91016006810191909152600d01919050565b611cdd60f21b81528183600283013760009101600201908152919050565b808201828112600083128015821682158216171561210757612107611dc8565b505092915050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b634e487b7160e01b600052604160045260246000fd5b601f82111561197357600081815260208120601f850160051c810160208610156121975750805b601f850160051c820191505b818110156121b6578281556001016121a3565b505050505050565b815167ffffffffffffffff8111156121d8576121d861215a565b6121ec816121e6845461200b565b84612170565b602080601f83116001811461222157600084156122095750858301515b600019600386901b1c1916600185901b1785556121b6565b600085815260208120601f198616915b8281101561225057888601518255948401946001909101908401612231565b508582101561226e5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006020828403121561229057600080fd5b8151611e4881611e1356fea164736f6c6343000811000a", }, { ContractAddr: common.HexToAddress(GovernorContract), diff --git a/eth/backend.go b/eth/backend.go index 61021099a7..e7d3fe796c 100644 --- a/eth/backend.go +++ b/eth/backend.go @@ -183,6 +183,10 @@ func New(stack *node.Node, config *ethconfig.Config) (*Ethereum, error) { chainConfig.VerkleTime = config.OverrideVerkle overrides.OverrideVerkle = config.OverrideVerkle } + if config.OverrideFeynman != nil { + chainConfig.FeynmanTime = config.OverrideFeynman + overrides.OverrideFeynman = config.OverrideFeynman + } eth := &Ethereum{ config: config, diff --git a/eth/ethconfig/config.go b/eth/ethconfig/config.go index 7fdc6f4388..58824e6707 100644 --- a/eth/ethconfig/config.go +++ b/eth/ethconfig/config.go @@ -193,6 +193,9 @@ type Config struct { // OverrideVerkle (TODO: remove after the fork) OverrideVerkle *uint64 `toml:",omitempty"` + + // OverrideFeynman (TODO: remove after the fork) + OverrideFeynman *uint64 `toml:",omitempty"` } // CreateConsensusEngine creates a consensus engine for the given chain config. diff --git a/params/config.go b/params/config.go index 7d43c6e19f..b6a63b3ff3 100644 --- a/params/config.go +++ b/params/config.go @@ -225,9 +225,7 @@ var ( HertzfixBlock: big.NewInt(8), ShanghaiTime: newUint64(0), KeplerTime: newUint64(0), - - // TODO - FeynmanTime: nil, + FeynmanTime: newUint64(0), Parlia: &ParliaConfig{ Period: 3, From 818379d999c947b8075331e2e1b9434b80f5b2b7 Mon Sep 17 00:00:00 2001 From: Roshan <48975233+Pythonberg1997@users.noreply.github.com> Date: Thu, 25 Jan 2024 19:40:26 +0800 Subject: [PATCH 19/28] fix: upgrade system contracts twice issue in `traceBlockParallel` (#2178) * fix: upgrade system contracts twice issue in `traceBlockParallel` * fix review comments --- eth/state_accessor.go | 36 +++++++--- eth/tracers/api.go | 158 ++++++++++++++++++++++-------------------- 2 files changed, 109 insertions(+), 85 deletions(-) diff --git a/eth/state_accessor.go b/eth/state_accessor.go index 0971ef246a..b82eb077d6 100644 --- a/eth/state_accessor.go +++ b/eth/state_accessor.go @@ -33,6 +33,7 @@ import ( "github.com/ethereum/go-ethereum/eth/tracers" "github.com/ethereum/go-ethereum/log" "github.com/ethereum/go-ethereum/trie" + "github.com/ethereum/go-ethereum/core/systemcontracts" ) // noopReleaser is returned in case there is no operation expected @@ -239,12 +240,37 @@ func (eth *Ethereum) stateAtTransaction(ctx context.Context, block *types.Block, if err != nil { return nil, vm.BlockContext{}, nil, nil, err } + // upgrade build-in system contract before normal txs if Feynman is not enabled + if !eth.blockchain.Config().IsFeynman(block.Number(), block.Time()) { + systemcontracts.UpgradeBuildInSystemContract(eth.blockchain.Config(), block.Number(), parent.Time(), block.Time(), statedb) + } if txIndex == 0 && len(block.Transactions()) == 0 { return nil, vm.BlockContext{}, statedb, release, nil } // Recompute transactions up to the target index. - signer := types.MakeSigner(eth.blockchain.Config(), block.Number(), block.Time()) + var ( + signer = types.MakeSigner(eth.blockchain.Config(), block.Number(), block.Time()) + beforeSystemTx = true + ) for idx, tx := range block.Transactions() { + // upgrade build-in system contract before system txs if Feynman is enabled + if beforeSystemTx { + if posa, ok := eth.Engine().(consensus.PoSA); ok { + if isSystem, _ := posa.IsSystemTransaction(tx, block.Header()); isSystem { + balance := statedb.GetBalance(consensus.SystemAddress) + if balance.Cmp(common.Big0) > 0 { + statedb.SetBalance(consensus.SystemAddress, big.NewInt(0)) + statedb.AddBalance(block.Header().Coinbase, balance) + } + + if eth.blockchain.Config().IsFeynman(block.Number(), block.Time()) { + systemcontracts.UpgradeBuildInSystemContract(eth.blockchain.Config(), block.Number(), parent.Time(), block.Time(), statedb) + } + beforeSystemTx = false + } + } + } + // Assemble the transaction call message and return if the requested offset msg, _ := core.TransactionToMessage(tx, signer, block.BaseFee()) txContext := core.NewEVMTxContext(msg) @@ -254,14 +280,6 @@ func (eth *Ethereum) stateAtTransaction(ctx context.Context, block *types.Block, } // Not yet the searched for transaction, execute on top of the current state vmenv := vm.NewEVM(context, txContext, statedb, eth.blockchain.Config(), vm.Config{}) - if posa, ok := eth.Engine().(consensus.PoSA); ok && msg.From == context.Coinbase && - posa.IsSystemContract(msg.To) && msg.GasPrice.Cmp(big.NewInt(0)) == 0 { - balance := statedb.GetBalance(consensus.SystemAddress) - if balance.Cmp(common.Big0) > 0 { - statedb.SetBalance(consensus.SystemAddress, big.NewInt(0)) - statedb.AddBalance(context.Coinbase, balance) - } - } statedb.SetTxContext(tx.Hash(), idx) if _, err := core.ApplyMessage(vmenv, msg, new(core.GasPool).AddGas(tx.Gas())); err != nil { return nil, vm.BlockContext{}, nil, nil, fmt.Errorf("transaction %#x failed: %v", tx.Hash(), err) diff --git a/eth/tracers/api.go b/eth/tracers/api.go index bfa8a38493..975c49140d 100644 --- a/eth/tracers/api.go +++ b/eth/tracers/api.go @@ -188,6 +188,7 @@ type txTraceResult struct { // being traced. type blockTraceTask struct { statedb *state.StateDB // Intermediate state prepped for tracing + parent *types.Block // Parent block of the trace block block *types.Block // Block to trace the transactions from release StateReleaseFunc // The function to release the held resource for this task results []*txTraceResult // Trace results produced by the task @@ -204,8 +205,9 @@ type blockTraceResult struct { // txTraceTask represents a single transaction trace task when an entire block // is being traced. type txTraceTask struct { - statedb *state.StateDB // Intermediate state prepped for tracing - index int // Transaction offset in the block + statedb *state.StateDB // Intermediate state prepped for tracing + index int // Transaction offset in the block + isSystemTx bool // Whether the transaction is a system transaction } // TraceChain returns the structured logs created during the execution of EVM @@ -268,11 +270,30 @@ func (api *API) traceChain(start, end *types.Block, config *TraceConfig, closed // Fetch and execute the block trace taskCh for task := range taskCh { var ( - signer = types.MakeSigner(api.backend.ChainConfig(), task.block.Number(), task.block.Time()) - blockCtx = core.NewEVMBlockContext(task.block.Header(), api.chainContext(ctx), nil) + signer = types.MakeSigner(api.backend.ChainConfig(), task.block.Number(), task.block.Time()) + blockCtx = core.NewEVMBlockContext(task.block.Header(), api.chainContext(ctx), nil) + beforeSystemTx = true ) // Trace all the transactions contained within for i, tx := range task.block.Transactions() { + // upgrade build-in system contract before system txs if Feynman is enabled + if beforeSystemTx { + if posa, ok := api.backend.Engine().(consensus.PoSA); ok { + if isSystem, _ := posa.IsSystemTransaction(tx, task.block.Header()); isSystem { + balance := task.statedb.GetBalance(consensus.SystemAddress) + if balance.Cmp(common.Big0) > 0 { + task.statedb.SetBalance(consensus.SystemAddress, big.NewInt(0)) + task.statedb.AddBalance(blockCtx.Coinbase, balance) + } + + if api.backend.ChainConfig().IsFeynman(task.block.Number(), task.block.Time()) { + systemcontracts.UpgradeBuildInSystemContract(api.backend.ChainConfig(), task.block.Number(), task.parent.Time(), task.block.Time(), task.statedb) + } + beforeSystemTx = false + } + } + } + msg, _ := core.TransactionToMessage(tx, signer, task.block.BaseFee()) txctx := &Context{ BlockHash: task.block.Hash(), @@ -280,7 +301,7 @@ func (api *API) traceChain(start, end *types.Block, config *TraceConfig, closed TxIndex: i, TxHash: tx.Hash(), } - res, err := api.traceTx(ctx, msg, txctx, blockCtx, task.statedb, config) + res, err := api.traceTx(ctx, msg, txctx, blockCtx, task.statedb, config, !beforeSystemTx) if err != nil { task.results[i] = &txTraceResult{TxHash: tx.Hash(), Error: err.Error()} log.Warn("Tracing failed", "hash", tx.Hash(), "block", task.block.NumberU64(), "err", err) @@ -387,10 +408,15 @@ func (api *API) traceChain(start, end *types.Block, config *TraceConfig, closed // may fail if we release too early. tracker.callReleases() + // upgrade build-in system contract before normal txs if Feynman is not enabled + if !api.backend.ChainConfig().IsFeynman(next.Number(), next.Time()) { + systemcontracts.UpgradeBuildInSystemContract(api.backend.ChainConfig(), next.Number(), block.Time(), next.Time(), statedb) + } + // Send the block over to the concurrent tracers (if not in the fast-forward phase) txs := next.Transactions() select { - case taskCh <- &blockTraceTask{statedb: statedb.Copy(), block: next, release: release, results: make([]*txTraceResult, len(txs))}: + case taskCh <- &blockTraceTask{statedb: statedb.Copy(), parent: block, block: next, release: release, results: make([]*txTraceResult, len(txs))}: case <-closed: tracker.releaseState(number, release) return @@ -523,7 +549,7 @@ func (api *API) IntermediateRoots(ctx context.Context, hash common.Hash, config } defer release() - // upgrade build-in system contract before tracing non-system tx if Feynman is not enabled + // upgrade build-in system contract before normal txs if Feynman is not enabled if !api.backend.ChainConfig().IsFeynman(block.Number(), block.Time()) { systemcontracts.UpgradeBuildInSystemContract(api.backend.ChainConfig(), block.Number(), parent.Time(), block.Time(), statedb) } @@ -614,7 +640,7 @@ func (api *API) traceBlock(ctx context.Context, block *types.Block, config *Trac } defer release() - // upgrade build-in system contract before tracing non-system tx if Feynman is not enabled + // upgrade build-in system contract before normal txs if Feynman is not enabled if !api.backend.ChainConfig().IsFeynman(block.Number(), block.Time()) { systemcontracts.UpgradeBuildInSystemContract(api.backend.ChainConfig(), block.Number(), parent.Time(), block.Time(), statedb) } @@ -639,10 +665,16 @@ func (api *API) traceBlock(ctx context.Context, block *types.Block, config *Trac beforeSystemTx = true ) for i, tx := range txs { - // upgrade build-in system contract before tracing system tx if Feynman is enabled - if posa, ok := api.backend.Engine().(consensus.PoSA); ok { - if isSystem, _ := posa.IsSystemTransaction(tx, block.Header()); isSystem { - if beforeSystemTx { + // upgrade build-in system contract before system txs if Feynman is enabled + if beforeSystemTx { + if posa, ok := api.backend.Engine().(consensus.PoSA); ok { + if isSystem, _ := posa.IsSystemTransaction(tx, block.Header()); isSystem { + balance := statedb.GetBalance(consensus.SystemAddress) + if balance.Cmp(common.Big0) > 0 { + statedb.SetBalance(consensus.SystemAddress, big.NewInt(0)) + statedb.AddBalance(blockCtx.Coinbase, balance) + } + if api.backend.ChainConfig().IsFeynman(block.Number(), block.Time()) { systemcontracts.UpgradeBuildInSystemContract(api.backend.ChainConfig(), block.Number(), parent.Time(), block.Time(), statedb) } @@ -653,14 +685,13 @@ func (api *API) traceBlock(ctx context.Context, block *types.Block, config *Trac // Generate the next state snapshot fast without tracing msg, _ := core.TransactionToMessage(tx, signer, block.BaseFee()) - txctx := &Context{ BlockHash: blockHash, BlockNumber: block.Number(), TxIndex: i, TxHash: tx.Hash(), } - res, err := api.traceTx(ctx, msg, txctx, blockCtx, statedb, config) + res, err := api.traceTx(ctx, msg, txctx, blockCtx, statedb, config, !beforeSystemTx) if err != nil { return nil, err } @@ -704,7 +735,7 @@ func (api *API) traceBlockParallel(ctx context.Context, block *types.Block, stat TxIndex: task.index, TxHash: txs[task.index].Hash(), } - res, err := api.traceTx(ctx, msg, txctx, blockCtx, task.statedb, config) + res, err := api.traceTx(ctx, msg, txctx, blockCtx, task.statedb, config, task.isSystemTx) if err != nil { results[task.index] = &txTraceResult{TxHash: txs[task.index].Hash(), Error: err.Error()} continue @@ -714,14 +745,10 @@ func (api *API) traceBlockParallel(ctx context.Context, block *types.Block, stat }) } - // upgrade build-in system contract before tracing non-system tx if Feynman is not enabled parent, err := api.blockByNumberAndHash(ctx, rpc.BlockNumber(block.NumberU64()-1), block.ParentHash()) if err != nil { return nil, err } - if !api.backend.ChainConfig().IsFeynman(block.Number(), block.Time()) { - systemcontracts.UpgradeBuildInSystemContract(api.backend.ChainConfig(), block.Number(), parent.Time(), block.Time(), statedb) - } // Feed the transactions into the tracers and return var ( @@ -730,12 +757,16 @@ func (api *API) traceBlockParallel(ctx context.Context, block *types.Block, stat ) txloop: for i, tx := range txs { - var isSystem bool - // upgrade build-in system contract before tracing system tx if Feynman is enabled - if posa, ok := api.backend.Engine().(consensus.PoSA); ok { - isSystem, _ = posa.IsSystemTransaction(tx, block.Header()) - if isSystem { - if beforeSystemTx { + // upgrade build-in system contract before system txs if Feynman is enabled + if beforeSystemTx { + if posa, ok := api.backend.Engine().(consensus.PoSA); ok { + if isSystem, _ := posa.IsSystemTransaction(tx, block.Header()); isSystem { + balance := statedb.GetBalance(consensus.SystemAddress) + if balance.Cmp(common.Big0) > 0 { + statedb.SetBalance(consensus.SystemAddress, big.NewInt(0)) + statedb.AddBalance(block.Header().Coinbase, balance) + } + if api.backend.ChainConfig().IsFeynman(block.Number(), block.Time()) { systemcontracts.UpgradeBuildInSystemContract(api.backend.ChainConfig(), block.Number(), parent.Time(), block.Time(), statedb) } @@ -745,7 +776,7 @@ txloop: } // Send the trace task over for execution - task := &txTraceTask{statedb: statedb.Copy(), index: i} + task := &txTraceTask{statedb: statedb.Copy(), index: i, isSystemTx: !beforeSystemTx} select { case <-ctx.Done(): failed = ctx.Err() @@ -755,13 +786,6 @@ txloop: // Generate the next state snapshot fast without tracing msg, _ := core.TransactionToMessage(tx, signer, block.BaseFee()) - if isSystem { - balance := statedb.GetBalance(consensus.SystemAddress) - if balance.Cmp(common.Big0) > 0 { - statedb.SetBalance(consensus.SystemAddress, big.NewInt(0)) - statedb.AddBalance(block.Header().Coinbase, balance) - } - } statedb.SetTxContext(tx.Hash(), i) vmenv := vm.NewEVM(blockCtx, core.NewEVMTxContext(msg), statedb, api.backend.ChainConfig(), vm.Config{}) if _, err := core.ApplyMessage(vmenv, msg, new(core.GasPool).AddGas(msg.GasLimit)); err != nil { @@ -810,7 +834,7 @@ func (api *API) standardTraceBlockToFile(ctx context.Context, block *types.Block } defer release() - // upgrade build-in system contract before tracing non-system tx if Feynman is not enabled + // upgrade build-in system contract before normal txs if Feynman is not enabled if !api.backend.ChainConfig().IsFeynman(block.Number(), block.Time()) { systemcontracts.UpgradeBuildInSystemContract(api.backend.ChainConfig(), block.Number(), parent.Time(), block.Time(), statedb) } @@ -828,11 +852,12 @@ func (api *API) standardTraceBlockToFile(ctx context.Context, block *types.Block // Execute transaction, either tracing all or just the requested one var ( - dumps []string - signer = types.MakeSigner(api.backend.ChainConfig(), block.Number(), block.Time()) - chainConfig = api.backend.ChainConfig() - vmctx = core.NewEVMBlockContext(block.Header(), api.chainContext(ctx), nil) - canon = true + dumps []string + signer = types.MakeSigner(api.backend.ChainConfig(), block.Number(), block.Time()) + chainConfig = api.backend.ChainConfig() + vmctx = core.NewEVMBlockContext(block.Header(), api.chainContext(ctx), nil) + canon = true + beforeSystemTx = true ) // Check if there are any overrides: the caller may wish to enable a future // fork when executing this block. Note, such overrides are only applicable to the @@ -844,14 +869,17 @@ func (api *API) standardTraceBlockToFile(ctx context.Context, block *types.Block chainConfig, canon = overrideConfig(chainConfig, config.Overrides) } - beforeSystemTx := true for i, tx := range block.Transactions() { - // upgrade build-in system contract before tracing system tx if Feynman is enabled - var isSystem bool - if posa, ok := api.backend.Engine().(consensus.PoSA); ok { - isSystem, _ = posa.IsSystemTransaction(tx, block.Header()) - if isSystem { - if beforeSystemTx { + // upgrade build-in system contract before system txs if Feynman is enabled + if beforeSystemTx { + if posa, ok := api.backend.Engine().(consensus.PoSA); ok { + if isSystem, _ := posa.IsSystemTransaction(tx, block.Header()); isSystem { + balance := statedb.GetBalance(consensus.SystemAddress) + if balance.Cmp(common.Big0) > 0 { + statedb.SetBalance(consensus.SystemAddress, big.NewInt(0)) + statedb.AddBalance(vmctx.Coinbase, balance) + } + if api.backend.ChainConfig().IsFeynman(block.Number(), block.Time()) { systemcontracts.UpgradeBuildInSystemContract(api.backend.ChainConfig(), block.Number(), parent.Time(), block.Time(), statedb) } @@ -891,13 +919,6 @@ func (api *API) standardTraceBlockToFile(ctx context.Context, block *types.Block } // Execute the transaction and flush any traces to disk vmenv := vm.NewEVM(vmctx, txContext, statedb, chainConfig, vmConf) - if isSystem { - balance := statedb.GetBalance(consensus.SystemAddress) - if balance.Cmp(common.Big0) > 0 { - statedb.SetBalance(consensus.SystemAddress, big.NewInt(0)) - statedb.AddBalance(vmctx.Coinbase, balance) - } - } statedb.SetTxContext(tx.Hash(), i) _, err = core.ApplyMessage(vmenv, msg, new(core.GasPool).AddGas(msg.GasLimit)) if writer != nil { @@ -962,19 +983,10 @@ func (api *API) TraceTransaction(ctx context.Context, hash common.Hash, config * } defer release() - parent, err := api.blockByNumberAndHash(ctx, rpc.BlockNumber(block.NumberU64()-1), block.ParentHash()) - if err != nil { - return nil, err - } - if !api.backend.ChainConfig().IsFeynman(block.Number(), block.Time()) { - // upgrade build-in system contract before trace if Feynman is not enabled - systemcontracts.UpgradeBuildInSystemContract(api.backend.ChainConfig(), block.Number(), parent.Time(), block.Time(), statedb) - } else { - // upgrade build-in system contract before trace system tx if Feynman is enabled - if posa, ok := api.backend.Engine().(consensus.PoSA); ok { - if isSystem, _ := posa.IsSystemTransaction(tx, block.Header()); isSystem { - systemcontracts.UpgradeBuildInSystemContract(api.backend.ChainConfig(), block.Number(), parent.Time(), block.Time(), statedb) - } + var isSystemTx bool + if posa, ok := api.backend.Engine().(consensus.PoSA); ok { + if isSystem, _ := posa.IsSystemTransaction(tx, block.Header()); isSystem { + isSystemTx = true } } @@ -984,7 +996,7 @@ func (api *API) TraceTransaction(ctx context.Context, hash common.Hash, config * TxIndex: int(index), TxHash: hash, } - return api.traceTx(ctx, msg, txctx, vmctx, statedb, config) + return api.traceTx(ctx, msg, txctx, vmctx, statedb, config, isSystemTx) } // TraceCall lets you trace a given eth_call. It collects the structured logs @@ -1052,13 +1064,13 @@ func (api *API) TraceCall(ctx context.Context, args ethapi.TransactionArgs, bloc if config != nil { traceConfig = &config.TraceConfig } - return api.traceTx(ctx, msg, new(Context), vmctx, statedb, traceConfig) + return api.traceTx(ctx, msg, new(Context), vmctx, statedb, traceConfig, false) } // traceTx configures a new tracer according to the provided configuration, and // executes the given message in the provided environment. The return value will // be tracer dependent. -func (api *API) traceTx(ctx context.Context, message *core.Message, txctx *Context, vmctx vm.BlockContext, statedb *state.StateDB, config *TraceConfig) (interface{}, error) { +func (api *API) traceTx(ctx context.Context, message *core.Message, txctx *Context, vmctx vm.BlockContext, statedb *state.StateDB, config *TraceConfig, isSystemTx bool) (interface{}, error) { var ( tracer Tracer err error @@ -1097,13 +1109,7 @@ func (api *API) traceTx(ctx context.Context, message *core.Message, txctx *Conte var intrinsicGas uint64 = 0 // Run the transaction with tracing enabled. - if posa, ok := api.backend.Engine().(consensus.PoSA); ok && message.From == vmctx.Coinbase && - posa.IsSystemContract(message.To) && message.GasPrice.Cmp(big.NewInt(0)) == 0 { - balance := statedb.GetBalance(consensus.SystemAddress) - if balance.Cmp(common.Big0) > 0 { - statedb.SetBalance(consensus.SystemAddress, big.NewInt(0)) - statedb.AddBalance(vmctx.Coinbase, balance) - } + if isSystemTx { intrinsicGas, _ = core.IntrinsicGas(message.Data, message.AccessList, false, true, true, false) } From 2f0b2f0cf3a3c7ff5430f8f705e494ada0924cf6 Mon Sep 17 00:00:00 2001 From: Roshan Date: Tue, 30 Jan 2024 16:29:23 +0800 Subject: [PATCH 20/28] chore: resolve merge conflicts and fix review comments --- core/vm/contracts.go | 6 ++++-- core/vm/evm.go | 4 ++-- params/protocol_params.go | 26 +++++++++++++------------- 3 files changed, 19 insertions(+), 17 deletions(-) diff --git a/core/vm/contracts.go b/core/vm/contracts.go index 3fa2eb8b79..3a4bd11465 100644 --- a/core/vm/contracts.go +++ b/core/vm/contracts.go @@ -222,6 +222,8 @@ var PrecompiledContractsCancun = map[common.Address]PrecompiledContract{ common.BytesToAddress([]byte{101}): &iavlMerkleProofValidatePlato{}, common.BytesToAddress([]byte{102}): &blsSignatureVerify{}, common.BytesToAddress([]byte{103}): &cometBFTLightBlockValidate{}, + common.BytesToAddress([]byte{104}): &verifyDoubleSignEvidence{}, + common.BytesToAddress([]byte{105}): &secp256k1SignatureRecover{}, } // PrecompiledContractsFeynman contains the default set of pre-compiled Ethereum @@ -316,10 +318,10 @@ func init() { // ActivePrecompiles returns the precompiles enabled with the current configuration. func ActivePrecompiles(rules params.Rules) []common.Address { switch { - case rules.IsFeynman: - return PrecompiledAddressesFeynman case rules.IsCancun: return PrecompiledAddressesCancun + case rules.IsFeynman: + return PrecompiledAddressesFeynman case rules.IsHertz: return PrecompiledAddressesHertz case rules.IsPlato: diff --git a/core/vm/evm.go b/core/vm/evm.go index 2e7e2ba9bd..8e2764e2c5 100644 --- a/core/vm/evm.go +++ b/core/vm/evm.go @@ -48,10 +48,10 @@ type ( func (evm *EVM) precompile(addr common.Address) (PrecompiledContract, bool) { var precompiles map[common.Address]PrecompiledContract switch { - case evm.chainRules.IsFeynman: - precompiles = PrecompiledContractsFeynman case evm.chainRules.IsCancun: precompiles = PrecompiledContractsCancun + case evm.chainRules.IsFeynman: + precompiles = PrecompiledContractsFeynman case evm.chainRules.IsHertz: precompiles = PrecompiledContractsHertz case evm.chainRules.IsPlato: diff --git a/params/protocol_params.go b/params/protocol_params.go index 2adec944ff..b0de78efb7 100644 --- a/params/protocol_params.go +++ b/params/protocol_params.go @@ -24,19 +24,19 @@ const ( MaxGasLimit uint64 = 0x7fffffffffffffff // Maximum the gas limit (2^63-1). GenesisGasLimit uint64 = 4712388 // Gas limit of the Genesis block. - MaximumExtraDataSize uint64 = 32 // Maximum size extra data may be after Genesis. - ForkIDSize uint64 = 4 // The length of fork id - ExpByteGas uint64 = 10 // Times ceil(log256(exponent)) for the EXP instruction. - SloadGas uint64 = 50 // Multiplied by the number of 32-byte words that are copied (round up) for any *COPY operation and added. - CallValueTransferGas uint64 = 9000 // Paid for CALL when the value transfer is non-zero. - CallNewAccountGas uint64 = 25000 // Paid for CALL when the destination address didn't exist prior. - TxGas uint64 = 21000 // Per transaction not creating a contract. NOTE: Not payable on data of calls between transactions. - SystemTxsGas uint64 = 5000000 // The gas reserved for system txs; only for parlia consensus - TxGasContractCreation uint64 = 53000 // Per transaction that creates a contract. NOTE: Not payable on data of calls between transactions. - TxDataZeroGas uint64 = 4 // Per byte of data attached to a transaction that equals zero. NOTE: Not payable on data of calls between transactions. - QuadCoeffDiv uint64 = 512 // Divisor for the quadratic particle of the memory cost equation. - LogDataGas uint64 = 8 // Per byte in a LOG* operation's data. - CallStipend uint64 = 2300 // Free gas given at beginning of call. + MaximumExtraDataSize uint64 = 32 // Maximum size extra data may be after Genesis. + ForkIDSize uint64 = 4 // The length of fork id + ExpByteGas uint64 = 10 // Times ceil(log256(exponent)) for the EXP instruction. + SloadGas uint64 = 50 // Multiplied by the number of 32-byte words that are copied (round up) for any *COPY operation and added. + CallValueTransferGas uint64 = 9000 // Paid for CALL when the value transfer is non-zero. + CallNewAccountGas uint64 = 25000 // Paid for CALL when the destination address didn't exist prior. + TxGas uint64 = 21000 // Per transaction not creating a contract. NOTE: Not payable on data of calls between transactions. + SystemTxsGas uint64 = 20000000 // The gas reserved for system txs; only for parlia consensus + TxGasContractCreation uint64 = 53000 // Per transaction that creates a contract. NOTE: Not payable on data of calls between transactions. + TxDataZeroGas uint64 = 4 // Per byte of data attached to a transaction that equals zero. NOTE: Not payable on data of calls between transactions. + QuadCoeffDiv uint64 = 512 // Divisor for the quadratic particle of the memory cost equation. + LogDataGas uint64 = 8 // Per byte in a LOG* operation's data. + CallStipend uint64 = 2300 // Free gas given at beginning of call. Keccak256Gas uint64 = 30 // Once per KECCAK256 operation. Keccak256WordGas uint64 = 6 // Once per word of the KECCAK256 operation's data. From d7e7f737186f83124f3d6cb8ce28e6af64e93459 Mon Sep 17 00:00:00 2001 From: Roshan <48975233+Pythonberg1997@users.noreply.github.com> Date: Thu, 1 Feb 2024 16:18:34 +0800 Subject: [PATCH 21/28] chore: add initialize for TokenRecoverPortalContract (#2194) --- consensus/parlia/feynmanfork.go | 1 + consensus/parlia/parlia.go | 1 + 2 files changed, 2 insertions(+) diff --git a/consensus/parlia/feynmanfork.go b/consensus/parlia/feynmanfork.go index 51c2007ba8..1d55f90a0c 100644 --- a/consensus/parlia/feynmanfork.go +++ b/consensus/parlia/feynmanfork.go @@ -45,6 +45,7 @@ func (p *Parlia) initializeFeynmanContract(state *state.StateDB, header *types.H systemcontracts.GovernorContract, systemcontracts.GovTokenContract, systemcontracts.TimelockContract, + systemcontracts.TokenRecoverPortalContract, } // get packed data data, err := p.stakeHubABI.Pack(method) diff --git a/consensus/parlia/parlia.go b/consensus/parlia/parlia.go index eb26ed47b9..8a70c32d3c 100644 --- a/consensus/parlia/parlia.go +++ b/consensus/parlia/parlia.go @@ -94,6 +94,7 @@ var ( common.HexToAddress(systemcontracts.GovernorContract): true, common.HexToAddress(systemcontracts.GovTokenContract): true, common.HexToAddress(systemcontracts.TimelockContract): true, + common.HexToAddress(systemcontracts.TokenRecoverPortalContract): true, } ) From e7cd04b38e0032b1f811eb91330ca3ab97450cc0 Mon Sep 17 00:00:00 2001 From: Roshan <48975233+Pythonberg1997@users.noreply.github.com> Date: Fri, 2 Feb 2024 14:13:57 +0800 Subject: [PATCH 22/28] fix: add check for block number (#2199) * fix: add check for block number * fix review comments * fix review comments --- core/vm/contracts.go | 27 +++++++++++++++++---------- core/vm/contracts_test.go | 10 ++++++++++ 2 files changed, 27 insertions(+), 10 deletions(-) diff --git a/core/vm/contracts.go b/core/vm/contracts.go index 3a4bd11465..dd3f14d567 100644 --- a/core/vm/contracts.go +++ b/core/vm/contracts.go @@ -1398,16 +1398,20 @@ func (c *verifyDoubleSignEvidence) RequiredGas(input []byte) uint64 { return params.DoubleSignEvidenceVerifyGas } -var ( - extraSeal = 65 -) - type DoubleSignEvidence struct { ChainId *big.Int HeaderBytes1 []byte HeaderBytes2 []byte } +const ( + extraSeal = 65 +) + +var ( + errInvalidEvidence = errors.New("invalid double sign evidence") +) + // Run input: rlp encoded DoubleSignEvidence // return: // signer address| evidence height| @@ -1432,27 +1436,30 @@ func (c *verifyDoubleSignEvidence) Run(input []byte) ([]byte, error) { } // basic check + if len(header1.Number.Bytes()) > 32 || len(header2.Number.Bytes()) > 32 { // block number should be less than 2^256 + return nil, errInvalidEvidence + } if header1.Number.Cmp(header2.Number) != 0 { - return nil, ErrExecutionReverted + return nil, errInvalidEvidence } if header1.ParentHash != header2.ParentHash { - return nil, ErrExecutionReverted + return nil, errInvalidEvidence } if len(header1.Extra) < extraSeal || len(header2.Extra) < extraSeal { - return nil, ErrExecutionReverted + return nil, errInvalidEvidence } sig1 := header1.Extra[len(header1.Extra)-extraSeal:] sig2 := header2.Extra[len(header2.Extra)-extraSeal:] if bytes.Equal(sig1, sig2) { - return nil, ErrExecutionReverted + return nil, errInvalidEvidence } // check sig msgHash1 := types.SealHash(header1, evidence.ChainId) msgHash2 := types.SealHash(header2, evidence.ChainId) if bytes.Equal(msgHash1.Bytes(), msgHash2.Bytes()) { - return nil, ErrExecutionReverted + return nil, errInvalidEvidence } pubkey1, err := secp256k1.RecoverPubkey(msgHash1.Bytes(), sig1) if err != nil { @@ -1463,7 +1470,7 @@ func (c *verifyDoubleSignEvidence) Run(input []byte) ([]byte, error) { return nil, ErrExecutionReverted } if !bytes.Equal(pubkey1, pubkey2) { - return nil, ErrExecutionReverted + return nil, errInvalidEvidence } returnBz := make([]byte, 52) // 20 + 32 diff --git a/core/vm/contracts_test.go b/core/vm/contracts_test.go index 74e90889fd..a3de8ea9b9 100644 --- a/core/vm/contracts_test.go +++ b/core/vm/contracts_test.go @@ -417,3 +417,13 @@ func TestDoubleSignSlash(t *testing.T) { testPrecompiled("68", tc, t) } + +func TestDoubleSignSlashFailure(t *testing.T) { + tc := precompiledFailureTest{ + Input: "f9066b38b90332f9032fa01062d3d5015b9242bc193a9b0769f3d3780ecb55f97f40a752ae26d0b68cd0d8a0fae1a05fcb14bfd9b8a9f2b65007a9b6c2000de0627a73be644dd993d32342c494df87f0e2b8519ea2dd4abd8b639cdd628497ed25a0f385cc58ed297ff0d66eb5580b02853d3478ba418b1819ac659ee05df49b9794a0bf88464af369ed6b8cf02db00f0b9556ffa8d49cd491b00952a7f83431446638a00a6d0870e586a76278fbfdcedf76ef6679af18fc1f9137cfad495f434974ea81b901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001a1010000000000000000000000000000000000000000000000000000000000000000830f4240830f42408465bc6996b90115d983010306846765746889676f312e32302e3131856c696e7578000053474aa9f8b25fb860b0844a5082bfaa2299d2a23f076e2f6b17b15f839cc3e7d5a875656f6733fd4b87ba3401f906d15f3dea263cd9a6076107c7db620a4630dd3832c4a4b57eb8f497e28a3d69e5c03b30205c4b45675747d513e1accd66329770f3c35b18c9d023f84c84023a5ad6a086a28d985d9a6c8e7f9a4feadd5ace0adba9818e1e1727edca755fcc0bd8344684023a5ad7a0bc3492196b2e68b8e6ceea87cfa7588b4d590089eb885c4f2c1e9d9fb450f7b980988e1b9d0beb91dab063e04879a24c43d33baae3759dee41fd62ffa83c77fd202bea27a829b49e8025bdd198393526dd12b223ab16052fd26a43f3aabf63e76901a0232c9ba2d41b40d36ed794c306747bcbc49bf61a0f37409c18bfe2b5bef26a2d880000000000000000b90332f9032fa01062d3d5015b9242bc193a9b0769f3d3780ecb55f97f40a752ae26d0b68cd0d8a0b2789a5357827ed838335283e15c4dcc42b9bebcbf2919a18613246787e2f96094df87f0e2b8519ea2dd4abd8b639cdd628497ed25a071ce4c09ee275206013f0063761bc19c93c13990582f918cc57333634c94ce89a00e095703e5c9b149f253fe89697230029e32484a410b4b1f2c61442d73c3095aa0d317ae19ede7c8a2d3ac9ef98735b049bcb7278d12f48c42b924538b60a25e12b901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001a1010000000000000000000000000000000000000000000000000000000000000000830f4240830f42408465bc6996b90115d983010306846765746889676f312e32302e3131856c696e7578000053474aa9f8b25fb860b0844a5082bfaa2299d2a23f076e2f6b17b15f839cc3e7d5a875656f6733fd4b87ba3401f906d15f3dea263cd9a6076107c7db620a4630dd3832c4a4b57eb8f497e28a3d69e5c03b30205c4b45675747d513e1accd66329770f3c35b18c9d023f84c84023a5ad6a086a28d985d9a6c8e7f9a4feadd5ace0adba9818e1e1727edca755fcc0bd8344684023a5ad7a0bc3492196b2e68b8e6ceea87cfa7588b4d590089eb885c4f2c1e9d9fb450f7b9804c71ed015dd0c5c2d7393b68c2927f83f0a5da4c66f761f09e2f950cc610832c7876144599368404096ddef0eadacfde57717e2c7d23982b927285b797d41bfa00a0b56228685be711834d0f154292d07826dea42a0fad3e4f56c31470b7fbfbea26880000000000000000", + ExpectedError: errInvalidEvidence.Error(), + Name: "", + } + + testPrecompiledFailure("68", tc, t) +} From fd0ee7d3e9696694e3fc8c4c70e9f589a1983138 Mon Sep 17 00:00:00 2001 From: Roshan <48975233+Pythonberg1997@users.noreply.github.com> Date: Sun, 4 Feb 2024 17:53:34 +0800 Subject: [PATCH 23/28] fix: adjust the timing of initializing Feynman system contracts (#2203) * fix: adjust the timing of initializing Feynman system contracts * fix test case --- build/ci.go | 2 +- cmd/geth/blsaccountcmd.go | 34 ++++++++++++---------------------- consensus/parlia/parlia.go | 28 ++++++++++++++-------------- eth/state_accessor.go | 2 +- eth/tracers/api.go | 14 ++++++++------ eth/tracers/api_test.go | 8 ++++---- 6 files changed, 40 insertions(+), 48 deletions(-) diff --git a/build/ci.go b/build/ci.go index b1dd476b17..54095516b3 100644 --- a/build/ci.go +++ b/build/ci.go @@ -360,7 +360,7 @@ func doLint(cmdline []string) { // downloadLinter downloads and unpacks golangci-lint. func downloadLinter(cachedir string) string { - const version = "1.52.2" + const version = "1.55.2" csdb := build.MustLoadChecksums("build/checksums.txt") arch := runtime.GOARCH diff --git a/cmd/geth/blsaccountcmd.go b/cmd/geth/blsaccountcmd.go index 4daf0cc434..9391018677 100644 --- a/cmd/geth/blsaccountcmd.go +++ b/cmd/geth/blsaccountcmd.go @@ -633,29 +633,19 @@ func blsAccountDelete(ctx *cli.Context) error { // blsAccountGenerateProof generate ownership proof for a selected BLS account. func blsAccountGenerateProof(ctx *cli.Context) error { - if ctx.Args().Len() == 0 { - utils.Fatalf("No BLS account specified.") + pubkeyString := ctx.Args().First() + if pubkeyString == "" { + utils.Fatalf("BLS account must be given as argument.") } - var filteredPubKeys []bls.PublicKey - for _, str := range ctx.Args().Slice() { - pkString := str - if strings.Contains(pkString, "0x") { - pkString = pkString[2:] - } - pubKeyBytes, err := hex.DecodeString(pkString) - if err != nil { - utils.Fatalf("Could not decode string %s as hex.", pkString) - } - blsPublicKey, err := bls.PublicKeyFromBytes(pubKeyBytes) - if err != nil { - utils.Fatalf("%#x is not a valid BLS public key.", pubKeyBytes) - } - filteredPubKeys = append(filteredPubKeys, blsPublicKey) + pubkeyBz, err := hex.DecodeString(strings.TrimPrefix(pubkeyString, "0x")) + if err != nil { + utils.Fatalf("Could not decode string %s as hex.", pubkeyString) } - if len(filteredPubKeys) > 1 { - utils.Fatalf("Only support one BLS account specified.") + blsPublicKey, err := bls.PublicKeyFromBytes(pubkeyBz) + if err != nil { + utils.Fatalf("%#x is not a valid BLS public key.", pubkeyBz) } - pubkeyBz := filteredPubKeys[0].Marshal() + blsPublicKeyBz := blsPublicKey.Marshal() cfg := gethConfig{Node: defaultNodeConfig()} // Load config file. @@ -692,10 +682,10 @@ func blsAccountGenerateProof(ctx *cli.Context) error { chainId := new(big.Int).SetInt64(chainIdInt64) paddedChainIdBytes := make([]byte, 32) copy(paddedChainIdBytes[32-len(chainId.Bytes()):], chainId.Bytes()) - msgHash := crypto.Keccak256(append(pubkeyBz, paddedChainIdBytes...)) + msgHash := crypto.Keccak256(append(blsPublicKeyBz, paddedChainIdBytes...)) req := &validatorpb.SignRequest{ - PublicKey: pubkeyBz, + PublicKey: blsPublicKeyBz, SigningRoot: msgHash, } sig, err := km.Sign(context.Background(), req) diff --git a/consensus/parlia/parlia.go b/consensus/parlia/parlia.go index 8a70c32d3c..3b781207e7 100644 --- a/consensus/parlia/parlia.go +++ b/consensus/parlia/parlia.go @@ -1136,6 +1136,13 @@ func (p *Parlia) Finalize(chain consensus.ChainHeaderReader, header *types.Heade systemcontracts.UpgradeBuildInSystemContract(p.chainConfig, header.Number, parent.Time, header.Time, state) } + if p.chainConfig.IsOnFeynman(header.Number, parent.Time, header.Time) { + err := p.initializeFeynmanContract(state, header, cx, txs, receipts, systemTxs, usedGas, false) + if err != nil { + log.Error("init feynman contract failed", "error", err) + } + } + // No block rewards in PoA, so the state remains as is and uncles are dropped if header.Number.Cmp(common.Big1) == 0 { err := p.initContract(state, header, cx, txs, receipts, systemTxs, usedGas, false) @@ -1178,13 +1185,6 @@ func (p *Parlia) Finalize(chain consensus.ChainHeaderReader, header *types.Heade } } - if p.chainConfig.IsOnFeynman(header.Number, parent.Time, header.Time) { - err := p.initializeFeynmanContract(state, header, cx, txs, receipts, systemTxs, usedGas, false) - if err != nil { - log.Error("init feynman contract failed", "error", err) - } - } - // update validators every day if p.chainConfig.IsFeynman(header.Number, header.Time) && isBreatheBlock(parent.Time, header.Time) { // we should avoid update validators in the Feynman upgrade block @@ -1223,6 +1223,13 @@ func (p *Parlia) FinalizeAndAssemble(chain consensus.ChainHeaderReader, header * systemcontracts.UpgradeBuildInSystemContract(p.chainConfig, header.Number, parent.Time, header.Time, state) } + if p.chainConfig.IsOnFeynman(header.Number, parent.Time, header.Time) { + err := p.initializeFeynmanContract(state, header, cx, &txs, &receipts, nil, &header.GasUsed, true) + if err != nil { + log.Error("init feynman contract failed", "error", err) + } + } + if header.Number.Cmp(common.Big1) == 0 { err := p.initContract(state, header, cx, &txs, &receipts, nil, &header.GasUsed, true) if err != nil { @@ -1267,13 +1274,6 @@ func (p *Parlia) FinalizeAndAssemble(chain consensus.ChainHeaderReader, header * } } - if p.chainConfig.IsOnFeynman(header.Number, parent.Time, header.Time) { - err := p.initializeFeynmanContract(state, header, cx, &txs, &receipts, nil, &header.GasUsed, true) - if err != nil { - log.Error("init feynman contract failed", "error", err) - } - } - // update validators every day if p.chainConfig.IsFeynman(header.Number, header.Time) && isBreatheBlock(parent.Time, header.Time) { // we should avoid update validators in the Feynman upgrade block diff --git a/eth/state_accessor.go b/eth/state_accessor.go index b82eb077d6..90ae46672c 100644 --- a/eth/state_accessor.go +++ b/eth/state_accessor.go @@ -28,12 +28,12 @@ import ( "github.com/ethereum/go-ethereum/core" "github.com/ethereum/go-ethereum/core/rawdb" "github.com/ethereum/go-ethereum/core/state" + "github.com/ethereum/go-ethereum/core/systemcontracts" "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/core/vm" "github.com/ethereum/go-ethereum/eth/tracers" "github.com/ethereum/go-ethereum/log" "github.com/ethereum/go-ethereum/trie" - "github.com/ethereum/go-ethereum/core/systemcontracts" ) // noopReleaser is returned in case there is no operation expected diff --git a/eth/tracers/api.go b/eth/tracers/api.go index 975c49140d..2d676a116c 100644 --- a/eth/tracers/api.go +++ b/eth/tracers/api.go @@ -1038,12 +1038,14 @@ func (api *API) TraceCall(ctx context.Context, args ethapi.TransactionArgs, bloc defer release() // upgrade build-in system contract before tracing if Feynman is not enabled - parent, err := api.blockByNumberAndHash(ctx, rpc.BlockNumber(block.NumberU64()-1), block.ParentHash()) - if err != nil { - return nil, err - } - if !api.backend.ChainConfig().IsFeynman(block.Number(), block.Time()) { - systemcontracts.UpgradeBuildInSystemContract(api.backend.ChainConfig(), block.Number(), parent.Time(), block.Time(), statedb) + if block.NumberU64() > 0 { + parent, err := api.blockByNumberAndHash(ctx, rpc.BlockNumber(block.NumberU64()-1), block.ParentHash()) + if err != nil { + return nil, err + } + if !api.backend.ChainConfig().IsFeynman(block.Number(), block.Time()) { + systemcontracts.UpgradeBuildInSystemContract(api.backend.ChainConfig(), block.Number(), parent.Time(), block.Time(), statedb) + } } vmctx := core.NewEVMBlockContext(block.Header(), api.chainContext(ctx), nil) diff --git a/eth/tracers/api_test.go b/eth/tracers/api_test.go index c665f8c32b..7ccca2f772 100644 --- a/eth/tracers/api_test.go +++ b/eth/tracers/api_test.go @@ -251,7 +251,7 @@ func TestTraceCall(t *testing.T) { }, config: nil, expectErr: fmt.Errorf("block #%d not found", genBlocks+1), - //expect: nil, + // expect: nil, }, // Standard JSON trace upon the latest block { @@ -547,7 +547,7 @@ func TestTracingWithOverrides(t *testing.T) { Data: newRPCBytes(common.Hex2Bytes("8381f58a")), // call number() }, config: &TraceCallConfig{ - //Tracer: &tracer, + // Tracer: &tracer, StateOverrides: ðapi.StateOverride{ randomAccounts[2].addr: ethapi.OverrideAccount{ Code: newRPCBytes(common.Hex2Bytes("6080604052348015600f57600080fd5b506004361060285760003560e01c80638381f58a14602d575b600080fd5b60336049565b6040518082815260200191505060405180910390f35b6000548156fea2646970667358221220eab35ffa6ab2adfe380772a48b8ba78e82a1b820a18fcb6f59aa4efb20a5f60064736f6c63430007040033")), @@ -563,7 +563,7 @@ func TestTracingWithOverrides(t *testing.T) { From: &accounts[0].addr, // BLOCKNUMBER PUSH1 MSTORE Input: newRPCBytes(common.Hex2Bytes("4360005260206000f3")), - //&hexutil.Bytes{0x43}, // blocknumber + // &hexutil.Bytes{0x43}, // blocknumber }, config: &TraceCallConfig{ BlockOverrides: ðapi.BlockOverrides{Number: (*hexutil.Big)(big.NewInt(0x1337))}, @@ -639,7 +639,7 @@ func TestTracingWithOverrides(t *testing.T) { }, }, }, - //want: `{"gas":46900,"failed":false,"returnValue":"0000000000000000000000000000000000000000000000000000000000000539"}`, + // want: `{"gas":46900,"failed":false,"returnValue":"0000000000000000000000000000000000000000000000000000000000000539"}`, want: `{"gas":44100,"failed":false,"returnValue":"0000000000000000000000000000000000000000000000000000000000000001"}`, }, { // No state override From 9e4d15b5a679ae72e80a72af71b30527ff8360a7 Mon Sep 17 00:00:00 2001 From: zjubfd <296179868@qq.com> Date: Mon, 5 Feb 2024 17:51:38 +0800 Subject: [PATCH 24/28] fix: change the wrong precompile contract (#2206) --- core/vm/contracts.go | 4 ++-- core/vm/contracts_lightclient.go | 16 ++++++++-------- params/protocol_params.go | 20 ++++++++++---------- 3 files changed, 20 insertions(+), 20 deletions(-) diff --git a/core/vm/contracts.go b/core/vm/contracts.go index dd3f14d567..6bcad31191 100644 --- a/core/vm/contracts.go +++ b/core/vm/contracts.go @@ -233,7 +233,7 @@ var PrecompiledContractsFeynman = map[common.Address]PrecompiledContract{ common.BytesToAddress([]byte{2}): &sha256hash{}, common.BytesToAddress([]byte{3}): &ripemd160hash{}, common.BytesToAddress([]byte{4}): &dataCopy{}, - common.BytesToAddress([]byte{5}): &bigModExp{}, + common.BytesToAddress([]byte{5}): &bigModExp{eip2565: true}, common.BytesToAddress([]byte{6}): &bn256AddIstanbul{}, common.BytesToAddress([]byte{7}): &bn256ScalarMulIstanbul{}, common.BytesToAddress([]byte{8}): &bn256PairingIstanbul{}, @@ -242,7 +242,7 @@ var PrecompiledContractsFeynman = map[common.Address]PrecompiledContract{ common.BytesToAddress([]byte{100}): &tmHeaderValidate{}, common.BytesToAddress([]byte{101}): &iavlMerkleProofValidatePlato{}, common.BytesToAddress([]byte{102}): &blsSignatureVerify{}, - common.BytesToAddress([]byte{103}): &cometBFTLightBlockValidate{}, + common.BytesToAddress([]byte{103}): &cometBFTLightBlockValidateHertz{}, common.BytesToAddress([]byte{104}): &verifyDoubleSignEvidence{}, common.BytesToAddress([]byte{105}): &secp256k1SignatureRecover{}, } diff --git a/core/vm/contracts_lightclient.go b/core/vm/contracts_lightclient.go index 6e891b6c9a..286250b1d8 100644 --- a/core/vm/contracts_lightclient.go +++ b/core/vm/contracts_lightclient.go @@ -408,23 +408,23 @@ func (c *secp256k1SignatureRecover) RequiredGas(input []byte) uint64 { } const ( - tmPubKeyLength uint8 = 33 - tmSignatureLength uint8 = 64 - tmSignatureMsgHashLength uint8 = 32 + secp256k1PubKeyLength uint8 = 33 + secp256k1SignatureLength uint8 = 64 + secp256k1SignatureMsgHashLength uint8 = 32 ) // input: -// | tmPubKey | tmSignature | tmSignatureMsgHash | +// | PubKey | Signature | SignatureMsgHash | // | 33 bytes | 64 bytes | 32 bytes | func (c *secp256k1SignatureRecover) Run(input []byte) (result []byte, err error) { - if len(input) != int(tmPubKeyLength)+int(tmSignatureLength)+int(tmSignatureMsgHashLength) { + if len(input) != int(secp256k1PubKeyLength)+int(secp256k1SignatureLength)+int(secp256k1SignatureMsgHashLength) { return nil, fmt.Errorf("invalid input") } return c.runTMSecp256k1Signature( - input[:tmPubKeyLength], - input[tmPubKeyLength:tmPubKeyLength+tmSignatureLength], - input[tmPubKeyLength+tmSignatureLength:], + input[:secp256k1PubKeyLength], + input[secp256k1PubKeyLength:secp256k1PubKeyLength+secp256k1SignatureLength], + input[secp256k1PubKeyLength+secp256k1SignatureLength:], ) } diff --git a/params/protocol_params.go b/params/protocol_params.go index b0de78efb7..cb90c17e5e 100644 --- a/params/protocol_params.go +++ b/params/protocol_params.go @@ -135,16 +135,16 @@ const ( IAVLMerkleProofValidateGas uint64 = 3000 // Gas for validate merkle proof CometBFTLightBlockValidateGas uint64 = 3000 // Gas for validate cometBFT light block - EcrecoverGas uint64 = 3000 // Elliptic curve sender recovery gas price - Sha256BaseGas uint64 = 60 // Base price for a SHA256 operation - Sha256PerWordGas uint64 = 12 // Per-word price for a SHA256 operation - Ripemd160BaseGas uint64 = 600 // Base price for a RIPEMD160 operation - Ripemd160PerWordGas uint64 = 120 // Per-word price for a RIPEMD160 operation - IdentityBaseGas uint64 = 15 // Base price for a data copy operation - IdentityPerWordGas uint64 = 3 // Per-work price for a data copy operation - BlsSignatureVerifyBaseGas uint64 = 1000 // base price for a BLS signature verify operation - BlsSignatureVerifyPerKeyGas uint64 = 3500 // Per-key price for a BLS signature verify operation - DoubleSignEvidenceVerifyGas uint64 = 1000 // Gas for verify double sign evidence + EcrecoverGas uint64 = 3000 // Elliptic curve sender recovery gas price + Sha256BaseGas uint64 = 60 // Base price for a SHA256 operation + Sha256PerWordGas uint64 = 12 // Per-word price for a SHA256 operation + Ripemd160BaseGas uint64 = 600 // Base price for a RIPEMD160 operation + Ripemd160PerWordGas uint64 = 120 // Per-word price for a RIPEMD160 operation + IdentityBaseGas uint64 = 15 // Base price for a data copy operation + IdentityPerWordGas uint64 = 3 // Per-work price for a data copy operation + BlsSignatureVerifyBaseGas uint64 = 1000 // base price for a BLS signature verify operation + BlsSignatureVerifyPerKeyGas uint64 = 3500 // Per-key price for a BLS signature verify operation + DoubleSignEvidenceVerifyGas uint64 = 10000 // Gas for verify double sign evidence Bn256AddGasByzantium uint64 = 500 // Byzantium gas needed for an elliptic curve addition Bn256AddGasIstanbul uint64 = 150 // Gas needed for an elliptic curve addition From a2ddb75b021ce40bd003a4856990bc19f22d51eb Mon Sep 17 00:00:00 2001 From: Roshan <48975233+Pythonberg1997@users.noreply.github.com> Date: Fri, 16 Feb 2024 16:19:30 +0800 Subject: [PATCH 25/28] chore: update bls generate-proof cmd (#2215) --- cmd/geth/blsaccountcmd.go | 25 +++++++++++++++---------- consensus/parlia/parlia.go | 4 ++-- 2 files changed, 17 insertions(+), 12 deletions(-) diff --git a/cmd/geth/blsaccountcmd.go b/cmd/geth/blsaccountcmd.go index 9391018677..5c51da79dc 100644 --- a/cmd/geth/blsaccountcmd.go +++ b/cmd/geth/blsaccountcmd.go @@ -633,19 +633,24 @@ func blsAccountDelete(ctx *cli.Context) error { // blsAccountGenerateProof generate ownership proof for a selected BLS account. func blsAccountGenerateProof(ctx *cli.Context) error { - pubkeyString := ctx.Args().First() - if pubkeyString == "" { - utils.Fatalf("BLS account must be given as argument.") + addrString := ctx.Args().First() + if addrString == "" { + utils.Fatalf("Operator account must be given as argument.") } - pubkeyBz, err := hex.DecodeString(strings.TrimPrefix(pubkeyString, "0x")) + addr := common.HexToAddress(addrString) + + blsPubkeyString := ctx.Args().Get(1) + if blsPubkeyString == "" { + utils.Fatalf("BLS pubkey must be given as argument.") + } + blsPubkeyBz, err := hex.DecodeString(strings.TrimPrefix(blsPubkeyString, "0x")) if err != nil { - utils.Fatalf("Could not decode string %s as hex.", pubkeyString) + utils.Fatalf("Could not decode string %s as hex.", blsPubkeyString) } - blsPublicKey, err := bls.PublicKeyFromBytes(pubkeyBz) + blsPublicKey, err := bls.PublicKeyFromBytes(blsPubkeyBz) if err != nil { - utils.Fatalf("%#x is not a valid BLS public key.", pubkeyBz) + utils.Fatalf("%#x is not a valid BLS public key.", blsPubkeyBz) } - blsPublicKeyBz := blsPublicKey.Marshal() cfg := gethConfig{Node: defaultNodeConfig()} // Load config file. @@ -682,10 +687,10 @@ func blsAccountGenerateProof(ctx *cli.Context) error { chainId := new(big.Int).SetInt64(chainIdInt64) paddedChainIdBytes := make([]byte, 32) copy(paddedChainIdBytes[32-len(chainId.Bytes()):], chainId.Bytes()) - msgHash := crypto.Keccak256(append(blsPublicKeyBz, paddedChainIdBytes...)) + msgHash := crypto.Keccak256(append(addr.Bytes(), append(blsPublicKey.Marshal(), paddedChainIdBytes...)...)) req := &validatorpb.SignRequest{ - PublicKey: blsPublicKeyBz, + PublicKey: blsPublicKey.Marshal(), SigningRoot: msgHash, } sig, err := km.Sign(context.Background(), req) diff --git a/consensus/parlia/parlia.go b/consensus/parlia/parlia.go index 3b781207e7..16be45e7ff 100644 --- a/consensus/parlia/parlia.go +++ b/consensus/parlia/parlia.go @@ -1629,7 +1629,7 @@ func (p *Parlia) getCurrentValidators(blockHash common.Hash, blockNum *big.Int) return valSet, voteAddrMap, nil } -// slash spoiled validators +// distributeIncoming distributes system incoming of the block func (p *Parlia) distributeIncoming(val common.Address, state *state.StateDB, header *types.Header, chain core.ChainContext, txs *[]*types.Transaction, receipts *[]*types.Receipt, receivedTxs *[]*types.Transaction, usedGas *uint64, mining bool) error { coinbase := header.Coinbase @@ -1719,7 +1719,7 @@ func (p *Parlia) distributeToSystem(amount *big.Int, state *state.StateDB, heade return p.applyTransaction(msg, state, header, chain, txs, receipts, receivedTxs, usedGas, mining) } -// slash spoiled validators +// distributeToValidator deposits validator reward to validator contract func (p *Parlia) distributeToValidator(amount *big.Int, validator common.Address, state *state.StateDB, header *types.Header, chain core.ChainContext, txs *[]*types.Transaction, receipts *[]*types.Receipt, receivedTxs *[]*types.Transaction, usedGas *uint64, mining bool) error { From 316585ba9b01fb0c1bb995f2a38b53ce2e85fca0 Mon Sep 17 00:00:00 2001 From: dylanhuang Date: Mon, 19 Feb 2024 12:06:07 +0800 Subject: [PATCH 26/28] ci: add nancy job (#2221) --- .github/workflows/nancy.yml | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 .github/workflows/nancy.yml diff --git a/.github/workflows/nancy.yml b/.github/workflows/nancy.yml new file mode 100644 index 0000000000..b769191297 --- /dev/null +++ b/.github/workflows/nancy.yml @@ -0,0 +1,37 @@ +name: Go Nancy + +on: + # Scan changed files in PRs (diff-aware scanning): + pull_request: {} + # Scan on-demand through GitHub Actions interface: + workflow_dispatch: {} + # Scan mainline branches and report all findings: + push: + branches: ["master", "develop"] + +jobs: + build: + strategy: + matrix: + go-version: [1.21.x] + os: [ubuntu-latest] + runs-on: ${{ matrix.os }} + steps: + - name: Check out code into the Go module directory + uses: actions/checkout@v2 + + - name: Set up Go 1.x in order to write go.list file + uses: actions/setup-go@v2 + with: + go-version: ${{ matrix.go-version }} + + - name: Go mod tidy + run: go mod tidy + + - name: WriteGoList + run: go list -json -deps ./... > go.list + + - name: Nancy + uses: sonatype-nexus-community/nancy-github-action@main + with: + nancyCommand: sleuth --loud From 70adb6077ab0b5a1b1234a9a1794836fd10cd3d2 Mon Sep 17 00:00:00 2001 From: zjubfd <296179868@qq.com> Date: Mon, 19 Feb 2024 12:56:09 +0800 Subject: [PATCH 27/28] fix the double sign testcase --- core/vm/contracts_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/vm/contracts_test.go b/core/vm/contracts_test.go index a3de8ea9b9..f9b48e132b 100644 --- a/core/vm/contracts_test.go +++ b/core/vm/contracts_test.go @@ -411,7 +411,7 @@ func TestDoubleSignSlash(t *testing.T) { tc := precompiledTest{ Input: "f906278202cab9030ff9030ca01062d3d5015b9242bc193a9b0769f3d3780ecb55f97f40a752ae26d0b68cd0d8a0fae1a05fcb14bfd9b8a9f2b65007a9b6c2000de0627a73be644dd993d32342c494976ea74026e726554db657fa54763abd0c3a0aa9a0f385cc58ed297ff0d66eb5580b02853d3478ba418b1819ac659ee05df49b9794a0bf88464af369ed6b8cf02db00f0b9556ffa8d49cd491b00952a7f83431446638a00a6d0870e586a76278fbfdcedf76ef6679af18fc1f9137cfad495f434974ea81b901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001820cdf830f4240830f4240846555fa64b90111d983010301846765746888676f312e32302e378664617277696e00007abd731ef8ae07b86091cb8836d58f5444b883422a18825d899035d3e6ea39ad1a50069bf0b86da8b5573dde1cb4a0a34f19ce94e0ef78ff7518c80265b8a3ca56e3c60167523590d4e8dcc324900559465fc0fa403774096614e135de280949b58a45cc96f2ba9e17f848820d41a08429d0d8b33ee72a84f750fefea846cbca54e487129c7961c680bb72309ca888820d42a08c9db14d938b19f9e2261bbeca2679945462be2b58103dfff73665d0d150fb8a804ae755e0fe64b59753f4db6308a1f679747bce186aa2c62b95fa6eeff3fbd08f3b0667e45428a54ade15bad19f49641c499b431b36f65803ea71b379e6b61de501a0232c9ba2d41b40d36ed794c306747bcbc49bf61a0f37409c18bfe2b5bef26a2d880000000000000000b9030ff9030ca01062d3d5015b9242bc193a9b0769f3d3780ecb55f97f40a752ae26d0b68cd0d8a0b2789a5357827ed838335283e15c4dcc42b9bebcbf2919a18613246787e2f96094976ea74026e726554db657fa54763abd0c3a0aa9a071ce4c09ee275206013f0063761bc19c93c13990582f918cc57333634c94ce89a00e095703e5c9b149f253fe89697230029e32484a410b4b1f2c61442d73c3095aa0d317ae19ede7c8a2d3ac9ef98735b049bcb7278d12f48c42b924538b60a25e12b901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001820cdf830f4240830f4240846555fa64b90111d983010301846765746888676f312e32302e378664617277696e00007abd731ef8ae07b86091cb8836d58f5444b883422a18825d899035d3e6ea39ad1a50069bf0b86da8b5573dde1cb4a0a34f19ce94e0ef78ff7518c80265b8a3ca56e3c60167523590d4e8dcc324900559465fc0fa403774096614e135de280949b58a45cc96f2ba9e17f848820d41a08429d0d8b33ee72a84f750fefea846cbca54e487129c7961c680bb72309ca888820d42a08c9db14d938b19f9e2261bbeca2679945462be2b58103dfff73665d0d150fb8a80c0b17bfe88534296ff064cb7156548f6deba2d6310d5044ed6485f087dc6ef232e051c28e1909c2b50a3b4f29345d66681c319bef653e52e5d746480d5a3983b00a0b56228685be711834d0f154292d07826dea42a0fad3e4f56c31470b7fbfbea26880000000000000000", Expected: "15d34aaf54267db7d7c367839aaf71a00a2c6a650000000000000000000000000000000000000000000000000000000000000cdf", - Gas: 1000, + Gas: 10000, Name: "", } From 0574452b4dbf527d04330846079a8bc62d83aa03 Mon Sep 17 00:00:00 2001 From: Roshan <48975233+Pythonberg1997@users.noreply.github.com> Date: Mon, 26 Feb 2024 16:08:50 +0800 Subject: [PATCH 28/28] upgrade: update testnet contracts bytecode and hardfork time for Feynman (#2237) --- consensus/parlia/abi.go | 1087 ++++++++++++++++++------------- consensus/parlia/feynmanfork.go | 5 +- core/systemcontracts/upgrade.go | 142 ++-- params/config.go | 4 +- 4 files changed, 684 insertions(+), 554 deletions(-) diff --git a/consensus/parlia/abi.go b/consensus/parlia/abi.go index d196f5bf4e..0d9ab54cd5 100644 --- a/consensus/parlia/abi.go +++ b/consensus/parlia/abi.go @@ -1391,7 +1391,6 @@ const validatorSetABIBeforeLuban = ` ] ` -// TODO: update ABI to the latest version const validatorSetABI = ` [ { @@ -2238,7 +2237,7 @@ const validatorSetABI = ` "name": "getCurrentValidatorIndex", "inputs": [ { - "name": "_validator", + "name": "validator", "type": "address", "internalType": "address" } @@ -2932,6 +2931,19 @@ const validatorSetABI = ` ], "anonymous": false }, + { + "type": "event", + "name": "tmpValidatorSetUpdated", + "inputs": [ + { + "name": "validatorsNum", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, { "type": "event", "name": "unexpectedPackage", @@ -3072,893 +3084,964 @@ const validatorSetABI = ` const slashABI = ` [ { - "anonymous": false, + "type": "function", + "name": "BC_FUSION_CHANNELID", "inputs": [], - "name": "crashResponse", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "validator", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "slashCount", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "bytes", - "name": "failReason", - "type": "bytes" - } - ], - "name": "failedFelony", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "voteAddrSlice", - "type": "bytes32" - }, + "outputs": [ { - "indexed": false, - "internalType": "bytes", - "name": "failReason", - "type": "bytes" + "name": "", + "type": "uint8", + "internalType": "uint8" } ], - "name": "failedMaliciousVoteSlash", - "type": "event" + "stateMutability": "view" }, { - "anonymous": false, + "type": "function", + "name": "BIND_CHANNELID", "inputs": [], - "name": "indicatorCleaned", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ + "outputs": [ { - "indexed": false, - "internalType": "uint32", - "name": "code", - "type": "uint32" + "name": "", + "type": "uint8", + "internalType": "uint8" } ], - "name": "knownResponse", - "type": "event" + "stateMutability": "view" }, { - "anonymous": false, - "inputs": [ + "type": "function", + "name": "CODE_OK", + "inputs": [], + "outputs": [ { - "indexed": true, - "internalType": "bytes32", - "name": "voteAddrSlice", - "type": "bytes32" + "name": "", + "type": "uint32", + "internalType": "uint32" } ], - "name": "maliciousVoteSlashed", - "type": "event" + "stateMutability": "view" }, { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "string", - "name": "key", - "type": "string" - }, + "type": "function", + "name": "CROSS_CHAIN_CONTRACT_ADDR", + "inputs": [], + "outputs": [ { - "indexed": false, - "internalType": "bytes", - "name": "value", - "type": "bytes" + "name": "", + "type": "address", + "internalType": "address" } ], - "name": "paramChange", - "type": "event" + "stateMutability": "view" }, { - "anonymous": false, - "inputs": [ + "type": "function", + "name": "CROSS_STAKE_CHANNELID", + "inputs": [], + "outputs": [ { - "indexed": false, - "internalType": "uint32", - "name": "code", - "type": "uint32" + "name": "", + "type": "uint8", + "internalType": "uint8" } ], - "name": "unKnownResponse", - "type": "event" + "stateMutability": "view" }, { - "anonymous": false, - "inputs": [ + "type": "function", + "name": "DECREASE_RATE", + "inputs": [], + "outputs": [ { - "indexed": true, - "internalType": "address", - "name": "validator", - "type": "address" + "name": "", + "type": "uint256", + "internalType": "uint256" } ], - "name": "validatorSlashed", - "type": "event" + "stateMutability": "view" }, { + "type": "function", + "name": "ERROR_FAIL_DECODE", "inputs": [], - "name": "BIND_CHANNELID", "outputs": [ { - "internalType": "uint8", "name": "", - "type": "uint8" + "type": "uint32", + "internalType": "uint32" } ], - "stateMutability": "view", - "type": "function" + "stateMutability": "view" }, { + "type": "function", + "name": "FELONY_THRESHOLD", "inputs": [], - "name": "BSC_RELAYER_REWARD", "outputs": [ { - "internalType": "uint256", "name": "", - "type": "uint256" + "type": "uint256", + "internalType": "uint256" } ], - "stateMutability": "view", - "type": "function" + "stateMutability": "view" }, { + "type": "function", + "name": "GOVERNOR_ADDR", "inputs": [], - "name": "CODE_OK", "outputs": [ { - "internalType": "uint32", "name": "", - "type": "uint32" + "type": "address", + "internalType": "address" } ], - "stateMutability": "view", - "type": "function" + "stateMutability": "view" }, { + "type": "function", + "name": "GOV_CHANNELID", "inputs": [], - "name": "CROSS_CHAIN_CONTRACT_ADDR", "outputs": [ { - "internalType": "address", "name": "", - "type": "address" + "type": "uint8", + "internalType": "uint8" } ], - "stateMutability": "view", - "type": "function" + "stateMutability": "view" }, { + "type": "function", + "name": "GOV_HUB_ADDR", "inputs": [], - "name": "CROSS_STAKE_CHANNELID", "outputs": [ { - "internalType": "uint8", "name": "", - "type": "uint8" + "type": "address", + "internalType": "address" } ], - "stateMutability": "view", - "type": "function" + "stateMutability": "view" }, { + "type": "function", + "name": "GOV_TOKEN_ADDR", "inputs": [], - "name": "DECREASE_RATE", "outputs": [ { - "internalType": "uint256", "name": "", - "type": "uint256" + "type": "address", + "internalType": "address" } ], - "stateMutability": "view", - "type": "function" + "stateMutability": "view" }, { + "type": "function", + "name": "INCENTIVIZE_ADDR", "inputs": [], - "name": "ERROR_FAIL_DECODE", "outputs": [ { - "internalType": "uint32", "name": "", - "type": "uint32" + "type": "address", + "internalType": "address" } ], - "stateMutability": "view", - "type": "function" + "stateMutability": "view" }, { + "type": "function", + "name": "INIT_FELONY_SLASH_REWARD_RATIO", "inputs": [], - "name": "FELONY_THRESHOLD", "outputs": [ { - "internalType": "uint256", "name": "", - "type": "uint256" + "type": "uint256", + "internalType": "uint256" } ], - "stateMutability": "view", - "type": "function" + "stateMutability": "view" }, { + "type": "function", + "name": "INIT_FELONY_SLASH_SCOPE", "inputs": [], - "name": "GOV_CHANNELID", "outputs": [ { - "internalType": "uint8", "name": "", - "type": "uint8" + "type": "uint256", + "internalType": "uint256" } ], - "stateMutability": "view", - "type": "function" + "stateMutability": "view" }, { + "type": "function", + "name": "LIGHT_CLIENT_ADDR", "inputs": [], - "name": "GOV_HUB_ADDR", "outputs": [ { - "internalType": "address", "name": "", - "type": "address" + "type": "address", + "internalType": "address" } ], - "stateMutability": "view", - "type": "function" + "stateMutability": "view" }, { + "type": "function", + "name": "MISDEMEANOR_THRESHOLD", "inputs": [], - "name": "INCENTIVIZE_ADDR", "outputs": [ { - "internalType": "address", "name": "", - "type": "address" + "type": "uint256", + "internalType": "uint256" } ], - "stateMutability": "view", - "type": "function" + "stateMutability": "view" }, { + "type": "function", + "name": "RELAYERHUB_CONTRACT_ADDR", "inputs": [], - "name": "INIT_FINALITY_SLASH_REWARD_RATIO", "outputs": [ { - "internalType": "uint256", "name": "", - "type": "uint256" + "type": "address", + "internalType": "address" } ], - "stateMutability": "view", - "type": "function" + "stateMutability": "view" }, { + "type": "function", + "name": "SLASH_CHANNELID", "inputs": [], - "name": "LIGHT_CLIENT_ADDR", "outputs": [ { - "internalType": "address", "name": "", - "type": "address" + "type": "uint8", + "internalType": "uint8" } ], - "stateMutability": "view", - "type": "function" + "stateMutability": "view" }, { + "type": "function", + "name": "SLASH_CONTRACT_ADDR", "inputs": [], - "name": "MISDEMEANOR_THRESHOLD", "outputs": [ { - "internalType": "uint256", "name": "", - "type": "uint256" + "type": "address", + "internalType": "address" } ], - "stateMutability": "view", - "type": "function" + "stateMutability": "view" }, { + "type": "function", + "name": "STAKE_CREDIT_ADDR", "inputs": [], - "name": "RELAYERHUB_CONTRACT_ADDR", "outputs": [ { - "internalType": "address", "name": "", - "type": "address" + "type": "address", + "internalType": "address" } ], - "stateMutability": "view", - "type": "function" + "stateMutability": "view" }, { + "type": "function", + "name": "STAKE_HUB_ADDR", "inputs": [], - "name": "SLASH_CHANNELID", "outputs": [ { - "internalType": "uint8", "name": "", - "type": "uint8" + "type": "address", + "internalType": "address" } ], - "stateMutability": "view", - "type": "function" + "stateMutability": "view" }, { + "type": "function", + "name": "STAKING_CHANNELID", "inputs": [], - "name": "SLASH_CONTRACT_ADDR", "outputs": [ { - "internalType": "address", "name": "", - "type": "address" + "type": "uint8", + "internalType": "uint8" } ], - "stateMutability": "view", - "type": "function" + "stateMutability": "view" }, { + "type": "function", + "name": "STAKING_CONTRACT_ADDR", "inputs": [], - "name": "STAKE_HUB_ADDR", "outputs": [ { - "internalType": "address", "name": "", - "type": "address" + "type": "address", + "internalType": "address" } ], - "stateMutability": "view", - "type": "function" + "stateMutability": "view" }, { + "type": "function", + "name": "SYSTEM_REWARD_ADDR", "inputs": [], - "name": "STAKING_CHANNELID", "outputs": [ { - "internalType": "uint8", "name": "", - "type": "uint8" + "type": "address", + "internalType": "address" } ], - "stateMutability": "view", - "type": "function" + "stateMutability": "view" }, { + "type": "function", + "name": "TIMELOCK_ADDR", "inputs": [], - "name": "STAKING_CONTRACT_ADDR", "outputs": [ { - "internalType": "address", "name": "", - "type": "address" + "type": "address", + "internalType": "address" } ], - "stateMutability": "view", - "type": "function" + "stateMutability": "view" }, { + "type": "function", + "name": "TOKEN_HUB_ADDR", "inputs": [], - "name": "SYSTEM_REWARD_ADDR", "outputs": [ { - "internalType": "address", "name": "", - "type": "address" + "type": "address", + "internalType": "address" } ], - "stateMutability": "view", - "type": "function" + "stateMutability": "view" }, { + "type": "function", + "name": "TOKEN_MANAGER_ADDR", "inputs": [], - "name": "TOKEN_HUB_ADDR", "outputs": [ { - "internalType": "address", "name": "", - "type": "address" + "type": "address", + "internalType": "address" } ], - "stateMutability": "view", - "type": "function" + "stateMutability": "view" }, { + "type": "function", + "name": "TOKEN_RECOVER_PORTAL_ADDR", "inputs": [], - "name": "TOKEN_MANAGER_ADDR", "outputs": [ { - "internalType": "address", "name": "", - "type": "address" + "type": "address", + "internalType": "address" } ], - "stateMutability": "view", - "type": "function" + "stateMutability": "view" }, { - "inputs": [], + "type": "function", "name": "TRANSFER_IN_CHANNELID", + "inputs": [], "outputs": [ { - "internalType": "uint8", "name": "", - "type": "uint8" + "type": "uint8", + "internalType": "uint8" } ], - "stateMutability": "view", - "type": "function" + "stateMutability": "view" }, { - "inputs": [], + "type": "function", "name": "TRANSFER_OUT_CHANNELID", + "inputs": [], "outputs": [ { - "internalType": "uint8", "name": "", - "type": "uint8" + "type": "uint8", + "internalType": "uint8" } ], - "stateMutability": "view", - "type": "function" + "stateMutability": "view" }, { - "inputs": [], + "type": "function", "name": "VALIDATOR_CONTRACT_ADDR", + "inputs": [], "outputs": [ { - "internalType": "address", "name": "", - "type": "address" + "type": "address", + "internalType": "address" } ], - "stateMutability": "view", - "type": "function" + "stateMutability": "view" }, { - "inputs": [], + "type": "function", "name": "alreadyInit", + "inputs": [], "outputs": [ { - "internalType": "bool", "name": "", - "type": "bool" + "type": "bool", + "internalType": "bool" } ], - "stateMutability": "view", - "type": "function" + "stateMutability": "view" }, { - "inputs": [], + "type": "function", "name": "bscChainID", + "inputs": [], "outputs": [ { - "internalType": "uint16", "name": "", - "type": "uint16" + "type": "uint16", + "internalType": "uint16" } ], - "stateMutability": "view", - "type": "function" + "stateMutability": "view" }, { - "inputs": [], + "type": "function", "name": "clean", + "inputs": [], "outputs": [], - "stateMutability": "nonpayable", - "type": "function" + "stateMutability": "nonpayable" }, { + "type": "function", + "name": "downtimeSlash", "inputs": [ { - "internalType": "address", "name": "validator", - "type": "address" + "type": "address", + "internalType": "address" }, { - "internalType": "uint256", "name": "count", - "type": "uint256" + "type": "uint256", + "internalType": "uint256" } ], - "name": "downtimeSlash", "outputs": [], - "stateMutability": "nonpayable", - "type": "function" + "stateMutability": "nonpayable" }, { - "inputs": [], + "type": "function", "name": "enableMaliciousVoteSlash", + "inputs": [], "outputs": [ { - "internalType": "bool", "name": "", - "type": "bool" + "type": "bool", + "internalType": "bool" } ], - "stateMutability": "view", - "type": "function" + "stateMutability": "view" }, { + "type": "function", + "name": "felonySlashRewardRatio", "inputs": [], - "name": "felonyThreshold", "outputs": [ { - "internalType": "uint256", "name": "", - "type": "uint256" + "type": "uint256", + "internalType": "uint256" } ], - "stateMutability": "view", - "type": "function" + "stateMutability": "view" }, { + "type": "function", + "name": "felonySlashScope", "inputs": [], - "name": "finalitySlashRewardRatio", "outputs": [ { - "internalType": "uint256", "name": "", - "type": "uint256" + "type": "uint256", + "internalType": "uint256" } ], - "stateMutability": "view", - "type": "function" + "stateMutability": "view" }, { + "type": "function", + "name": "felonyThreshold", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getSlashIndicator", "inputs": [ { - "internalType": "address", "name": "validator", - "type": "address" + "type": "address", + "internalType": "address" } ], - "name": "getSlashIndicator", "outputs": [ { - "internalType": "uint256", "name": "", - "type": "uint256" + "type": "uint256", + "internalType": "uint256" }, { - "internalType": "uint256", "name": "", - "type": "uint256" + "type": "uint256", + "internalType": "uint256" } ], - "stateMutability": "view", - "type": "function" + "stateMutability": "view" }, { - "inputs": [], + "type": "function", "name": "getSlashThresholds", + "inputs": [], "outputs": [ { - "internalType": "uint256", "name": "", - "type": "uint256" + "type": "uint256", + "internalType": "uint256" }, { - "internalType": "uint256", "name": "", - "type": "uint256" + "type": "uint256", + "internalType": "uint256" } ], - "stateMutability": "view", - "type": "function" + "stateMutability": "view" }, { + "type": "function", + "name": "handleAckPackage", "inputs": [ { - "internalType": "uint8", "name": "", - "type": "uint8" + "type": "uint8", + "internalType": "uint8" }, { - "internalType": "bytes", "name": "msgBytes", - "type": "bytes" + "type": "bytes", + "internalType": "bytes" } ], - "name": "handleAckPackage", "outputs": [], - "stateMutability": "nonpayable", - "type": "function" + "stateMutability": "nonpayable" }, { + "type": "function", + "name": "handleFailAckPackage", "inputs": [ { - "internalType": "uint8", "name": "", - "type": "uint8" + "type": "uint8", + "internalType": "uint8" }, { - "internalType": "bytes", "name": "", - "type": "bytes" + "type": "bytes", + "internalType": "bytes" } ], - "name": "handleFailAckPackage", "outputs": [], - "stateMutability": "nonpayable", - "type": "function" + "stateMutability": "nonpayable" }, { + "type": "function", + "name": "handleSynPackage", "inputs": [ { - "internalType": "uint8", "name": "", - "type": "uint8" + "type": "uint8", + "internalType": "uint8" }, { - "internalType": "bytes", "name": "", - "type": "bytes" + "type": "bytes", + "internalType": "bytes" } ], - "name": "handleSynPackage", "outputs": [ { - "internalType": "bytes", "name": "", - "type": "bytes" + "type": "bytes", + "internalType": "bytes" } ], - "stateMutability": "nonpayable", - "type": "function" + "stateMutability": "nonpayable" }, { + "type": "function", + "name": "indicators", "inputs": [ { - "internalType": "address", "name": "", - "type": "address" + "type": "address", + "internalType": "address" } ], - "name": "indicators", "outputs": [ { - "internalType": "uint256", "name": "height", - "type": "uint256" + "type": "uint256", + "internalType": "uint256" }, { - "internalType": "uint256", "name": "count", - "type": "uint256" + "type": "uint256", + "internalType": "uint256" }, { - "internalType": "bool", "name": "exist", - "type": "bool" + "type": "bool", + "internalType": "bool" } ], - "stateMutability": "view", - "type": "function" + "stateMutability": "view" }, { - "inputs": [], + "type": "function", "name": "init", + "inputs": [], "outputs": [], - "stateMutability": "nonpayable", - "type": "function" + "stateMutability": "nonpayable" }, { - "inputs": [], + "type": "function", "name": "misdemeanorThreshold", + "inputs": [], "outputs": [ { - "internalType": "uint256", "name": "", - "type": "uint256" + "type": "uint256", + "internalType": "uint256" } ], - "stateMutability": "view", - "type": "function" + "stateMutability": "view" }, { - "inputs": [], + "type": "function", "name": "previousHeight", + "inputs": [], "outputs": [ { - "internalType": "uint256", "name": "", - "type": "uint256" + "type": "uint256", + "internalType": "uint256" } ], - "stateMutability": "view", - "type": "function" + "stateMutability": "view" }, { + "type": "function", + "name": "sendFelonyPackage", "inputs": [ { - "internalType": "address", "name": "validator", - "type": "address" + "type": "address", + "internalType": "address" } ], - "name": "sendFelonyPackage", "outputs": [], - "stateMutability": "nonpayable", - "type": "function" + "stateMutability": "nonpayable" }, { + "type": "function", + "name": "slash", "inputs": [ { - "internalType": "address", "name": "validator", - "type": "address" + "type": "address", + "internalType": "address" } ], - "name": "slash", "outputs": [], - "stateMutability": "nonpayable", - "type": "function" + "stateMutability": "nonpayable" }, { + "type": "function", + "name": "submitDoubleSignEvidence", "inputs": [ { - "internalType": "bytes", "name": "header1", - "type": "bytes" + "type": "bytes", + "internalType": "bytes" }, { - "internalType": "bytes", "name": "header2", - "type": "bytes" + "type": "bytes", + "internalType": "bytes" } ], - "name": "submitDoubleSignEvidence", "outputs": [], - "stateMutability": "nonpayable", - "type": "function" + "stateMutability": "nonpayable" }, { + "type": "function", + "name": "submitFinalityViolationEvidence", "inputs": [ { + "name": "_evidence", + "type": "tuple", + "internalType": "struct SlashIndicator.FinalityEvidence", "components": [ { + "name": "voteA", + "type": "tuple", + "internalType": "struct SlashIndicator.VoteData", "components": [ { - "internalType": "uint256", "name": "srcNum", - "type": "uint256" + "type": "uint256", + "internalType": "uint256" }, { - "internalType": "bytes32", "name": "srcHash", - "type": "bytes32" + "type": "bytes32", + "internalType": "bytes32" }, { - "internalType": "uint256", "name": "tarNum", - "type": "uint256" + "type": "uint256", + "internalType": "uint256" }, { - "internalType": "bytes32", "name": "tarHash", - "type": "bytes32" + "type": "bytes32", + "internalType": "bytes32" }, { - "internalType": "bytes", "name": "sig", - "type": "bytes" + "type": "bytes", + "internalType": "bytes" } - ], - "internalType": "struct SlashIndicator.VoteData", - "name": "voteA", - "type": "tuple" + ] }, { + "name": "voteB", + "type": "tuple", + "internalType": "struct SlashIndicator.VoteData", "components": [ { - "internalType": "uint256", "name": "srcNum", - "type": "uint256" + "type": "uint256", + "internalType": "uint256" }, { - "internalType": "bytes32", "name": "srcHash", - "type": "bytes32" + "type": "bytes32", + "internalType": "bytes32" }, { - "internalType": "uint256", "name": "tarNum", - "type": "uint256" + "type": "uint256", + "internalType": "uint256" }, { - "internalType": "bytes32", "name": "tarHash", - "type": "bytes32" + "type": "bytes32", + "internalType": "bytes32" }, { - "internalType": "bytes", "name": "sig", - "type": "bytes" + "type": "bytes", + "internalType": "bytes" } - ], - "internalType": "struct SlashIndicator.VoteData", - "name": "voteB", - "type": "tuple" + ] }, { - "internalType": "bytes", "name": "voteAddr", - "type": "bytes" + "type": "bytes", + "internalType": "bytes" } - ], - "internalType": "struct SlashIndicator.FinalityEvidence", - "name": "_evidence", - "type": "tuple" + ] + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "updateParam", + "inputs": [ + { + "name": "key", + "type": "string", + "internalType": "string" + }, + { + "name": "value", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "validators", + "inputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "event", + "name": "crashResponse", + "inputs": [], + "anonymous": false + }, + { + "type": "event", + "name": "failedFelony", + "inputs": [ + { + "name": "validator", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "slashCount", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "failReason", + "type": "bytes", + "indexed": false, + "internalType": "bytes" } ], - "name": "submitFinalityViolationEvidence", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" + "anonymous": false + }, + { + "type": "event", + "name": "indicatorCleaned", + "inputs": [], + "anonymous": false + }, + { + "type": "event", + "name": "knownResponse", + "inputs": [ + { + "name": "code", + "type": "uint32", + "indexed": false, + "internalType": "uint32" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "maliciousVoteSlashed", + "inputs": [ + { + "name": "voteAddrSlice", + "type": "bytes32", + "indexed": true, + "internalType": "bytes32" + } + ], + "anonymous": false }, { + "type": "event", + "name": "paramChange", "inputs": [ { - "internalType": "string", "name": "key", - "type": "string" + "type": "string", + "indexed": false, + "internalType": "string" }, { - "internalType": "bytes", "name": "value", - "type": "bytes" + "type": "bytes", + "indexed": false, + "internalType": "bytes" } ], - "name": "updateParam", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" + "anonymous": false }, { + "type": "event", + "name": "unKnownResponse", "inputs": [ { - "internalType": "uint256", - "name": "", - "type": "uint256" + "name": "code", + "type": "uint32", + "indexed": false, + "internalType": "uint32" } ], - "name": "validators", - "outputs": [ + "anonymous": false + }, + { + "type": "event", + "name": "validatorSlashed", + "inputs": [ { - "internalType": "address", - "name": "", - "type": "address" + "name": "validator", + "type": "address", + "indexed": true, + "internalType": "address" } ], - "stateMutability": "view", - "type": "function" + "anonymous": false } ] ` -// TODO: update ABI to the latest version const stakeABI = ` [ { @@ -4056,19 +4139,6 @@ const stakeABI = ` "outputs": [], "stateMutability": "nonpayable" }, - { - "type": "function", - "name": "assetProtector", - "inputs": [], - "outputs": [ - { - "name": "", - "type": "address", - "internalType": "address" - } - ], - "stateMutability": "view" - }, { "type": "function", "name": "blackList", @@ -4433,26 +4503,11 @@ const stakeABI = ` } ], "outputs": [ - { - "name": "consensusAddress", - "type": "address", - "internalType": "address" - }, - { - "name": "creditContract", - "type": "address", - "internalType": "address" - }, { "name": "createdTime", "type": "uint256", "internalType": "uint256" }, - { - "name": "voteAddress", - "type": "bytes", - "internalType": "bytes" - }, { "name": "jailed", "type": "bool", @@ -4502,6 +4557,44 @@ const stakeABI = ` ], "stateMutability": "view" }, + { + "type": "function", + "name": "getValidatorConsensusAddress", + "inputs": [ + { + "name": "operatorAddress", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "consensusAddress", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getValidatorCreditContract", + "inputs": [ + { + "name": "operatorAddress", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "creditContract", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, { "type": "function", "name": "getValidatorDescription", @@ -4630,6 +4723,25 @@ const stakeABI = ` ], "stateMutability": "view" }, + { + "type": "function", + "name": "getValidatorVoteAddress", + "inputs": [ + { + "name": "operatorAddress", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "voteAddress", + "type": "bytes", + "internalType": "bytes" + } + ], + "stateMutability": "view" + }, { "type": "function", "name": "getValidators", @@ -5021,6 +5133,19 @@ const stakeABI = ` ], "stateMutability": "view" }, + { + "type": "event", + "name": "BlackListed", + "inputs": [ + { + "name": "target", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, { "type": "event", "name": "Claimed", @@ -5164,10 +5289,10 @@ const stakeABI = ` "internalType": "uint256" }, { - "name": "status", + "name": "respCode", "type": "uint8", "indexed": false, - "internalType": "enum StakeHub.StakeMigrationStatus" + "internalType": "enum StakeHub.StakeMigrationRespCode" } ], "anonymous": false @@ -5228,6 +5353,25 @@ const stakeABI = ` "inputs": [], "anonymous": false }, + { + "type": "event", + "name": "ProtectorChanged", + "inputs": [ + { + "name": "oldProtector", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "newProtector", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, { "type": "event", "name": "Redelegated", @@ -5315,6 +5459,38 @@ const stakeABI = ` ], "anonymous": false }, + { + "type": "event", + "name": "StakeCreditInitialized", + "inputs": [ + { + "name": "operatorAddress", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "creditContract", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "UnBlackListed", + "inputs": [ + { + "name": "target", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, { "type": "event", "name": "Undelegated", @@ -5346,6 +5522,25 @@ const stakeABI = ` ], "anonymous": false }, + { + "type": "event", + "name": "UnexpectedPackage", + "inputs": [ + { + "name": "channelId", + "type": "uint8", + "indexed": false, + "internalType": "uint8" + }, + { + "name": "msgBytes", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + } + ], + "anonymous": false + }, { "type": "event", "name": "ValidatorCreated", @@ -5467,23 +5662,9 @@ const stakeABI = ` "anonymous": false }, { - "type": "event", - "name": "unexpectedPackage", - "inputs": [ - { - "name": "channelId", - "type": "uint8", - "indexed": false, - "internalType": "uint8" - }, - { - "name": "msgBytes", - "type": "bytes", - "indexed": false, - "internalType": "bytes" - } - ], - "anonymous": false + "type": "error", + "name": "AlreadyPaused", + "inputs": [] }, { "type": "error", @@ -5578,7 +5759,7 @@ const stakeABI = ` }, { "type": "error", - "name": "OnlyAssetProtector", + "name": "NotPaused", "inputs": [] }, { @@ -5586,6 +5767,11 @@ const stakeABI = ` "name": "OnlyCoinbase", "inputs": [] }, + { + "type": "error", + "name": "OnlyProtector", + "inputs": [] + }, { "type": "error", "name": "OnlySelfDelegation", @@ -5617,11 +5803,6 @@ const stakeABI = ` "name": "SelfDelegationNotEnough", "inputs": [] }, - { - "type": "error", - "name": "StakeHubPaused", - "inputs": [] - }, { "type": "error", "name": "TransferFailed", @@ -5655,7 +5836,7 @@ const stakeABI = ` }, { "type": "error", - "name": "ValidatorNotExist", + "name": "ValidatorNotExisted", "inputs": [] }, { diff --git a/consensus/parlia/feynmanfork.go b/consensus/parlia/feynmanfork.go index 1d55f90a0c..d430a916d2 100644 --- a/consensus/parlia/feynmanfork.go +++ b/consensus/parlia/feynmanfork.go @@ -18,10 +18,7 @@ import ( "github.com/ethereum/go-ethereum/rpc" ) -// TODO: SecondsPerDay represents the seconds in a day, it should be 86400 -// We set it to 60 for testing purpose and we will change it back to 86400 when launching -// const SecondsPerDay uint64 = 86400 -const SecondsPerDay uint64 = 60 +const SecondsPerDay uint64 = 86400 // the params should be two blocks' time(timestamp) func sameDayInUTC(first, second uint64) bool { diff --git a/core/systemcontracts/upgrade.go b/core/systemcontracts/upgrade.go index 0837c4fe8e..973c023e16 100644 --- a/core/systemcontracts/upgrade.go +++ b/core/systemcontracts/upgrade.go @@ -533,114 +533,68 @@ func init() { } // TODO: update mainNet and chapelNet to latest version - feynmanUpgrade[mainNet] = &Upgrade{ + feynmanUpgrade[chapelNet] = &Upgrade{ UpgradeName: "feynman", Configs: []*UpgradeConfig{ { ContractAddr: common.HexToAddress(ValidatorContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/cfc0bd1127186a917ddc38fd38d22903034d3f0b", - Code: "6080604052600436106104da5760003560e01c80638a7beb0111610281578063c6d339451161015a578063e40716a1116100cc578063f92eb86b11610085578063f92eb86b14610cb8578063f9a2bbc714610ccd578063fc3e590814610ce2578063fccc281314610cf7578063fd4ad81f14610d0c578063fd6a687914610d3b576104e1565b8063e40716a114610c1b578063e589b61e14610c30578063ea321e4914610c50578063eb57e20214610c70578063eda5868c14610c90578063f340fa0114610ca5576104e1565b8063d86222d51161011e578063d86222d514610b9d578063daacdb6614610bb2578063dc927faf14610bc7578063df8079e914610bdc578063e086c7b114610bf1578063e1c7392a14610c06576104e1565b8063c6d3394514610b3e578063c81b166214610b53578063c8509d811461090d578063ce910b0c14610b68578063d68fb56a14610b88576104e1565b8063aa82dce1116101f3578063ad3c9da6116101b7578063ad3c9da614610abd578063aef198a914610add578063b7ab4db514610af2578063b8cf4ef114610b14578063bf9f4995146106bd578063c466689d14610b29576104e1565b8063aa82dce114610a49578063aad5606314610a5e578063aaf5eb6814610a73578063ab51bb9614610a88578063ac43175114610a9d576104e1565b80639dc09262116102455780639dc09262146109cb5780639fe0f816146109e0578063a0dc2758146109f5578063a1a11bf514610a0a578063a5422d5c14610a1f578063a78abc1614610a34576104e1565b80638a7beb01146109575780638b5ad0c91461096c5780638d19a410146109815780639369d7de146109a157806396713da9146109b6576104e1565b806351e80672116103b357806370fd5bad116103255780637a84ca2a116102e95780637a84ca2a146108e357806381650b62146108f8578063831d65d11461090d578063853230aa146108b9578063862498821461092d57806388b32f1114610942576104e1565b806370fd5bad1461087a578063718a8aa81461088f57806375d47a0a146108a457806378dfed4a146108b95780637942fd05146108ce576104e1565b80635de1e22c116103775780635de1e22c146107e9578063603d86d3146106a857806360eba4fe146107fe57806362b72cf51461081e5780636969a25c146108335780636e47b48214610865576104e1565b806351e806721461076a57806355614fcc1461077f578063565c56b31461079f5780635667515a146107bf5780635d77156c146107d4576104e1565b80633365af3a1161044c57806343756e5c1161041057806343756e5c146106df57806345cf9daf146106f4578063493279b1146107095780634bf6c8821461072b5780634df6e0c3146107405780635192c82c14610755576104e1565b80633365af3a1461064557806335409f7f146106655780633b071dcc146106855780633de0f0d8146106a85780633dffc387146106bd576104e1565b8063152ad3b81161049e578063152ad3b8146105995780631e4c1524146105bb5780631ff18069146105db578063219f22d5146105f0578063300c356714610605578063321d398a14610625576104e1565b806304c4fec6146104e657806307a56847146104fd5780630bee7a67146105285780630e2374a51461054a5780631182b8751461056c576104e1565b366104e157005b600080fd5b3480156104f257600080fd5b506104fb610d50565b005b34801561050957600080fd5b50610512610dc2565b60405161051f9190618c1b565b60405180910390f35b34801561053457600080fd5b5061053d610dc8565b60405161051f9190618c45565b34801561055657600080fd5b5061055f610dcd565b60405161051f9190617f97565b34801561057857600080fd5b5061058c610587366004617e7d565b610dd3565b60405161051f919061812a565b3480156105a557600080fd5b506105ae6110b6565b60405161051f919061811f565b3480156105c757600080fd5b506104fb6105d6366004617c8b565b6110bf565b3480156105e757600080fd5b5061051261175f565b3480156105fc57600080fd5b5061053d611765565b34801561061157600080fd5b506104fb610620366004617c23565b61176a565b34801561063157600080fd5b506105ae610640366004617e2a565b611ab3565b34801561065157600080fd5b506105ae610660366004617e2a565b611b82565b34801561067157600080fd5b506104fb610680366004617beb565b611c33565b34801561069157600080fd5b5061069a611d8c565b60405161051f929190618035565b3480156106b457600080fd5b50610512612068565b3480156106c957600080fd5b506106d261206e565b60405161051f9190618c56565b3480156106eb57600080fd5b5061055f612073565b34801561070057600080fd5b50610512612079565b34801561071557600080fd5b5061071e61207f565b60405161051f9190618c0c565b34801561073757600080fd5b506106d2612085565b34801561074c57600080fd5b5061069a61208a565b34801561076157600080fd5b50610512612208565b34801561077657600080fd5b5061055f61220e565b34801561078b57600080fd5b506105ae61079a366004617beb565b612214565b3480156107ab57600080fd5b506105126107ba366004617beb565b612249565b3480156107cb57600080fd5b506106d261229a565b3480156107e057600080fd5b5061053d61229f565b3480156107f557600080fd5b506105126122a4565b34801561080a57600080fd5b5061058c610819366004617e2a565b6122aa565b34801561082a57600080fd5b50610512612350565b34801561083f57600080fd5b5061085361084e366004617e2a565b612356565b60405161051f96959493929190617fc4565b34801561087157600080fd5b5061055f6123ba565b34801561088657600080fd5b506106d26123c0565b34801561089b57600080fd5b506106d26123c5565b3480156108b057600080fd5b5061055f6123ca565b3480156108c557600080fd5b506105126123d0565b3480156108da57600080fd5b506106d26123d6565b3480156108ef57600080fd5b506105126123db565b34801561090457600080fd5b5061053d6123e1565b34801561091957600080fd5b506104fb610928366004617e7d565b6123e6565b34801561093957600080fd5b50610512612447565b34801561094e57600080fd5b5061051261244d565b34801561096357600080fd5b506105ae612453565b34801561097857600080fd5b5061051261245c565b34801561098d57600080fd5b5061051261099c366004617beb565b612462565b3480156109ad57600080fd5b506104fb6124a2565b3480156109c257600080fd5b506106d26125b6565b3480156109d757600080fd5b5061055f6125bb565b3480156109ec57600080fd5b506105126125c1565b348015610a0157600080fd5b506105126125c6565b348015610a1657600080fd5b5061055f6125cb565b348015610a2b57600080fd5b5061058c6125d1565b348015610a4057600080fd5b506105ae6125f0565b348015610a5557600080fd5b5061055f6125f9565b348015610a6a57600080fd5b5061055f6125ff565b348015610a7f57600080fd5b50610512612605565b348015610a9457600080fd5b5061053d61229a565b348015610aa957600080fd5b506104fb610ab8366004617dce565b61260e565b348015610ac957600080fd5b50610512610ad8366004617beb565b612eac565b348015610ae957600080fd5b50610512612ebe565b348015610afe57600080fd5b50610b07612ecb565b60405161051f9190618022565b348015610b2057600080fd5b50610512612fb7565b348015610b3557600080fd5b50610512612fbc565b348015610b4a57600080fd5b506105126123c0565b348015610b5f57600080fd5b5061055f612fc2565b348015610b7457600080fd5b5061058c610b83366004617e2a565b612fc8565b348015610b9457600080fd5b50610512612fd5565b348015610ba957600080fd5b50610512613014565b348015610bbe57600080fd5b50610512613020565b348015610bd357600080fd5b5061055f613026565b348015610be857600080fd5b5061055f61302c565b348015610bfd57600080fd5b50610512610dc8565b348015610c1257600080fd5b506104fb613032565b348015610c2757600080fd5b506105126131e1565b348015610c3c57600080fd5b506104fb610c4b366004617beb565b6131e7565b348015610c5c57600080fd5b506105ae610c6b366004617d8f565b61332c565b348015610c7c57600080fd5b506104fb610c8b366004617beb565b6134b2565b348015610c9c57600080fd5b5061053d6135b6565b6104fb610cb3366004617beb565b6135bb565b348015610cc457600080fd5b50610512613923565b348015610cd957600080fd5b5061055f613929565b348015610cee57600080fd5b506106d26125c1565b348015610d0357600080fd5b5061055f61392f565b348015610d1857600080fd5b50610d2c610d27366004617e2a565b613935565b60405161051f93929190618c24565b348015610d4757600080fd5b5061055f6139f7565b6000610d5b33612462565b9050600b8181548110610d6a57fe5b600091825260209091206001601690920201015460ff16610da65760405162461bcd60e51b8152600401610d9d9061888f565b60405180910390fd5b6000610db0612fd5565b9050610dbd3383836139fd565b505050565b60095481565b606481565b61200181565b60005460609060ff16610df85760405162461bcd60e51b8152600401610d9d906182e9565b600b54610eb657610e07617797565b60015460005b81811015610eb257600b80546001810182556000919091528351600080516020618ed38339815191526016909202918201908155602080860151600080516020618f138339815191528401805460ff1916911515919091179055604086015180518794610e8e93600080516020618ef38339815191529091019201906177c6565b506060820151610ea49060038301906013617840565b505050806001019050610e0d565b5050505b610ebe61786d565b6000610eff85858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250613cce92505050565b9150915080610f1b57610f126064613e8a565b925050506110af565b815160009060ff16610f4057610f3983602001518460400151613eeb565b905061107b565b825160ff166001141561107757826020015151600114610f8557600080516020618eb3833981519152604051610f7590618748565b60405180910390a1506067611072565b6000600460008560200151600081518110610f9c57fe5b6020026020010151600001516001600160a01b03166001600160a01b0316815260200190815260200160002054905080600014806110045750600180820381548110610fe457fe5b9060005260206000209060040201600201601c9054906101000a900460ff165b1561106457836020015160008151811061101a57fe5b6020026020010151600001516001600160a01b03167fe209c46bebf57cf265d5d9009a00870e256d9150f3ed5281ab9d9eb3cec6e4be60405160405180910390a260009150611070565b61106d8161504f565b91505b505b61107b565b5060655b63ffffffff81166110a057505060408051600081526020810190915291506110af9050565b6110a981613e8a565b93505050505b9392505050565b60075460ff1681565b3341146110de5760405162461bcd60e51b8152600401610d9d90618a77565b3a156110fc5760405162461bcd60e51b8152600401610d9d906187ce565b825160408051828152602080840282010190915260609082801561113a57816020015b611127617891565b81526020019060019003908161111f5790505b50905060005b828110156111e4576040518060c0016040528087838151811061115f57fe5b60200260200101516001600160a01b0316815260200160006001600160a01b0316815260200160006001600160a01b031681526020018683815181106111a157fe5b60200260200101516001600160401b0316815260200160001515815260200160008152508282815181106111d157fe5b6020908102919091010152600101611140565b5060405163d31f968d60e01b81526120009063d31f968d9061120f9061100090600890600401618006565b60206040518083038186803b15801561122757600080fd5b505afa15801561123b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061125f9190617d6f565b156115585780518061127357505050610dbd565b6015548181111561130e57815b8181101561130c57601580548061129357fe5b60008281526020812060046000199093019283020180546001600160a01b0319908116825560018201805490911690556002810180546001600160e81b031916905560030155905560168054806112e657fe5b60019003818190600052602060002001600061130291906178c6565b9055600101611280565b505b60005b8281101561154e5781811061143657601584828151811061132e57fe5b602090810291909101810151825460018181018555600094855293839020825160049092020180546001600160a01b039283166001600160a01b0319918216178255938301519481018054958316958516959095179094556040820151600285018054606085015160808601511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b199590961692909716919091179290921692909217169290921790915560a0015160039091015585516016908790839081106113fe57fe5b6020908102919091018101518254600181018455600093845292829020815161143094919091019291909101906177c6565b50611546565b83818151811061144257fe5b60200260200101516015828154811061145757fe5b6000918252602091829020835160049092020180546001600160a01b039283166001600160a01b0319918216178255928401516001820180549184169185169190911790556040840151600282018054606087015160808801511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b1995909716929097169190911792909216939093171692909217905560a090910151600390910155855186908290811061151257fe5b60200260200101516016828154811061152757fe5b9060005260206000200190805190602001906115449291906177c6565b505b600101611311565b5050505050610dbd565b6060806115658386615163565b9150915060005b60015481101561164f576001818154811061158357fe5b906000526020600020906004020160030154600014611647576120026001600160a01b031663092193ab600183815481106115ba57fe5b906000526020600020906004020160030154600184815481106115d957fe5b60009182526020909120600491820201546040516001600160e01b031960e086901b168152611614926001600160a01b039092169101617f97565b6000604051808303818588803b15801561162d57600080fd5b505af1158015611641573d6000803e3d6000fd5b50505050505b60010161156c565b5047156116bd577f6ecc855f9440a9282c90913bbc91619fd44f5ec0b462af28d127b116f130aa4d476040516116859190618c1b565b60405180910390a1604051611002904780156108fc02916000818181858888f193505050501580156116bb573d6000803e3d6000fd5b505b600060038190556005558151156116d8576116d8828261539c565b6110016001600160a01b031663fc4333cd6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561171557600080fd5b505af1158015611729573d6000803e3d6000fd5b50506040517fedd8d7296956dd970ab4de3f2fc03be2b0ffc615d20cd4c72c6e44f928630ebf925060009150a150505050505050565b60035481565b606881565b3341146117895760405162461bcd60e51b8152600401610d9d90618a77565b60105443116117aa5760405162461bcd60e51b8152600401610d9d90618445565b3a156117c85760405162461bcd60e51b8152600401610d9d906187ce565b60005460ff166117ea5760405162461bcd60e51b8152600401610d9d906182e9565b60006110023168056bc75e2d631000008111156118215761181a8168056bc75e2d6310000063ffffffff615ba316565b9150611828565b5050611aa9565b6040516309a99b4f60e41b815261100290639a99b4f09061184f9030908690600401617fab565b602060405180830381600087803b15801561186957600080fd5b505af115801561187d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a19190617e42565b9150816118af575050611aa9565b6000805b848110156118dd578585828181106118c757fe5b90506020020135820191508060010190506118b3565b50806118eb57505050611aa9565b6000806000805b89811015611aa1578489898381811061190757fe5b9050602002013588028161191757fe5b0493508a8a8281811061192657fe5b905060200201602081019061193b9190617beb565b6001600160a01b03811660009081526004602052604090205490935091508115611a5757600060018084038154811061197057fe5b9060005260206000209060040201905080600201601c9054906101000a900460ff16156119dd57836001600160a01b03167fb9c75cbbfde137c4281689580799ef5f52144e78858f776a5979b2b212137d85866040516119d09190618c1b565b60405180910390a2611a51565b6003546119f0908663ffffffff615be516565b6003908155810154611a08908663ffffffff615be516565b60038201556040516001600160a01b038516907fcb0aad6cf9cd03bdf6137e359f541c42f38b39f007cae8e89e88aa7d8c6617b290611a48908890618c1b565b60405180910390a25b50611a99565b826001600160a01b03167fb9c75cbbfde137c4281689580799ef5f52144e78858f776a5979b2b212137d8585604051611a909190618c1b565b60405180910390a25b6001016118f2565b505050505050505b5050436010555050565b6001546000908210611ac757506000611b7d565b60006001600160a01b031660018381548110611adf57fe5b60009182526020909120600490910201546001600160a01b03161480611b0f57506008541580611b0f5750600a54155b80611b1e575060085460095410155b80611b2f5750611b2d82611b82565b155b80611b5857506000600b8381548110611b4457fe5b906000526020600020906016020160000154115b80611b6c57506001611b68612ecb565b5111155b15611b7957506000611b7d565b5060015b919050565b6001546000908210611b9657506000611b7d565b600b548210611bd35760018281548110611bac57fe5b9060005260206000209060040201600201601c9054906101000a900460ff16159050611b7d565b60018281548110611be057fe5b9060005260206000209060040201600201601c9054906101000a900460ff16158015611c2d5750600b8281548110611c1457fe5b600091825260209091206001601690920201015460ff16155b92915050565b3361100114611c545760405162461bcd60e51b8152600401610d9d90618b8c565b600b54611d1257611c63617797565b60015460005b81811015611d0e57600b80546001810182556000919091528351600080516020618ed38339815191526016909202918201908155602080860151600080516020618f138339815191528401805460ff1916911515919091179055604086015180518794611cea93600080516020618ef38339815191529091019201906177c6565b506060820151611d009060038301906013617840565b505050806001019050611c69565b5050505b6001600160a01b03811660009081526004602052604090205480611d365750611d89565b6001810390506000600b8281548110611d4b57fe5b600091825260209091206001601690920201015460ff169050611d6e8383615c0a565b8015611d775750805b15610dbd576009805460001901905550505b50565b60015460609081906000805b82811015611ddf5760018181548110611dad57fe5b9060005260206000209060040201600201601c9054906101000a900460ff16611dd7576001909101905b600101611d98565b50606081604051908082528060200260200182016040528015611e0c578160200160208202803683370190505b509050606082604051908082528060200260200182016040528015611e4557816020015b6060815260200190600190039081611e305790505b50600b5460009450909150841415611fc05760005b84811015611fba5760018181548110611e6f57fe5b9060005260206000209060040201600201601c9054906101000a900460ff16611fb25760018181548110611e9f57fe5b600091825260209091206004909102015483516001600160a01b0390911690849086908110611eca57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050600b8181548110611ef757fe5b600091825260209182902060026016909202018101805460408051601f600019610100600186161502019093169490940491820185900485028401850190528083529192909190830182828015611f8f5780601f10611f6457610100808354040283529160200191611f8f565b820191906000526020600020905b815481529060010190602001808311611f7257829003601f168201915b5050505050828581518110611fa057fe5b60209081029190910101526001909301925b600101611e5a565b5061205c565b60005b8481101561205a5760018181548110611fd857fe5b9060005260206000209060040201600201601c9054906101000a900460ff16612052576001818154811061200857fe5b600091825260209091206004909102015483516001600160a01b039091169084908690811061203357fe5b6001600160a01b03909216602092830291909101909101526001909301925b600101611fc3565b505b909450925050505b9091565b61271081565b600181565b61100181565b60085481565b6102ca81565b600881565b600e54600c5460609182918061209e575060155b60606120a8612ecb565b905060606120b582615fbd565b9050828251116120cc579094509250612064915050565b838383510310156120de578282510393505b83156121145760c843046120fa83838388880360008a8a61612b565b6121128383838888038989038a8b8b8b51030161612b565b505b606083604051908082528060200260200182016040528015612140578160200160208202803683370190505b50905060608460405190808252806020026020018201604052801561217957816020015b60608152602001906001900390816121645790505b50905060005b858110156121fa5784818151811061219357fe5b60200260200101518382815181106121a757fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508381815181106121d357fe5b60200260200101518282815181106121e757fe5b602090810291909101015260010161217f565b509096509450505050509091565b60065481565b61200081565b6001600160a01b0381166000908152600460205260408120548061223c576000915050611b7d565b600019016110af81611b82565b6001600160a01b03811660009081526004602052604081205480612271576000915050611b7d565b60018082038154811061228057fe5b906000526020600020906004020160030154915050919050565b600081565b606781565b600f5481565b601281815481106122b757fe5b600091825260209182902001805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152935090918301828280156123485780601f1061231d57610100808354040283529160200191612348565b820191906000526020600020905b81548152906001019060200180831161232b57829003601f168201915b505050505081565b60105481565b6001818154811061236357fe5b600091825260209091206004909102018054600182015460028301546003909301546001600160a01b0392831694509082169291821691600160a01b81046001600160401b031691600160e01b90910460ff169086565b61100581565b600281565b601081565b61100881565b6103e881565b600b81565b600c5481565b606681565b33612000146124075760405162461bcd60e51b8152600401610d9d90618a28565b7f41ce201247b6ceb957dcdb217d0b8acb50b9ea0e12af9af4f5e7f3890210160583838360405161243a93929190618c64565b60405180910390a1505050565b60025481565b60115481565b60145460ff1681565b600a5481565b6001600160a01b038116600090815260046020526040812054806124985760405162461bcd60e51b8152600401610d9d906189b0565b6000190192915050565b600b54612560576124b1617797565b60015460005b8181101561255c57600b80546001810182556000919091528351600080516020618ed38339815191526016909202918201908155602080860151600080516020618f138339815191528401805460ff191691151591909117905560408601518051879461253893600080516020618ef38339815191529091019201906177c6565b50606082015161254e9060038301906013617840565b5050508060010190506124b7565b5050505b60085461256d5760036008555b600a5461257a576002600a555b600061258533612462565b905061259081611ab3565b6125ac5760405162461bcd60e51b8152600401610d9d90618705565b611d893382616282565b600981565b61100781565b600381565b60c881565b61100681565b604051806101e001604052806101ab8152602001618d086101ab913981565b60005460ff1681565b61200281565b61300081565b6402540be40081565b60005460ff166126305760405162461bcd60e51b8152600401610d9d906182e9565b33611007146126515760405162461bcd60e51b8152600401610d9d906187fc565b6126bb84848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080518082019091526013815272065787069726554696d655365636f6e6447617606c1b6020820152915061631a9050565b1561275857602081146126e05760405162461bcd60e51b8152600401610d9d9061896a565b604080516020601f840181900481028201810190925282815260009161271e9185858083850183828082843760009201919091525061637392505050565b9050606481101580156127345750620186a08111155b6127505760405162461bcd60e51b8152600401610d9d906185f5565b600255612e69565b6127b884848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260098152686275726e526174696f60b81b6020820152915061631a9050565b1561284757602081146127dd5760405162461bcd60e51b8152600401610d9d9061816f565b604080516020601f840181900481028201810190925282815260009161281b9185858083850183828082843760009201919091525061637392505050565b905061271081111561283f5760405162461bcd60e51b8152600401610d9d90618487565b600655612e69565b6128b184848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260138152726d61784e756d4f664d61696e7461696e696e6760681b6020820152915061631a9050565b1561294b57602081146128d65760405162461bcd60e51b8152600401610d9d906181a6565b604080516020601f84018190048102820181019092528281526000916129149185858083850183828082843760009201919091525061637392505050565b600c5490915080612923575060155b8082106129425760405162461bcd60e51b8152600401610d9d906184fa565b50600855612e69565b6129b484848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260128152716d61696e7461696e536c6173685363616c6560701b6020820152915061631a9050565b15612a4d57602081146129d95760405162461bcd60e51b8152600401610d9d9061826f565b604080516020601f8401819004810282018101909252828152600091612a179185858083850183828082843760009201919091525061637392505050565b9050600081118015612a295750600a81105b612a455760405162461bcd60e51b8152600401610d9d90618b08565b600a55612e69565b612ac184848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601981527f6d61784e756d4f66576f726b696e6743616e64696461746573000000000000006020820152915061631a9050565b15612b505760208114612ae65760405162461bcd60e51b8152600401610d9d90618223565b604080516020601f8401819004810282018101909252828152600091612b249185858083850183828082843760009201919091525061637392505050565b9050600d54811115612b485760405162461bcd60e51b8152600401610d9d9061866b565b600e55612e69565b612bb984848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260128152716d61784e756d4f6643616e6469646174657360701b6020820152915061631a9050565b15612c3b5760208114612bde5760405162461bcd60e51b8152600401610d9d9061884a565b604080516020601f8401819004810282018101909252828152600091612c1c9185858083850183828082843760009201919091525061637392505050565b600d819055600e54909150811015612c3557600d54600e555b50612e69565b612c9f84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600d81526c6e756d4f66436162696e65747360981b6020820152915061631a9050565b15612d4d5760208114612cc45760405162461bcd60e51b8152600401610d9d906182b4565b604080516020601f8401819004810282018101909252828152600091612d029185858083850183828082843760009201919091525061637392505050565b905060008111612d245760405162461bcd60e51b8152600401610d9d90618357565b6064811115612d455760405162461bcd60e51b8152600401610d9d9061839f565b600c55612e69565b612db584848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601181527073797374656d526577617264526174696f60781b6020820152915061631a9050565b15612e515760208114612dda5760405162461bcd60e51b8152600401610d9d90618ac4565b604080516020601f8401819004810282018101909252828152600091612e189185858083850183828082843760009201919091525061637392505050565b905060018110158015612e2d57506127108111155b612e495760405162461bcd60e51b8152600401610d9d906185a2565b600f55612e69565b60405162461bcd60e51b8152600401610d9d90618b65565b7f6cdb0ac70ab7f2e2d035cca5be60d89906f2dede7648ddbd7402189c1eeed17a84848484604051612e9e949392919061813d565b60405180910390a150505050565b60046020526000908152604090205481565b68056bc75e2d6310000081565b6001546060906000805b82811015612efa57612ee681611b82565b15612ef2578160010191505b600101612ed5565b50606081604051908082528060200260200182016040528015612f27578160200160208202803683370190505b5090506000915060005b83811015612fae57612f4281611b82565b15612fa65760018181548110612f5457fe5b600091825260209091206004909102015482516001600160a01b0390911690839085908110612f7f57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508260010192505b600101612f31565b50925050505b90565b601581565b61027181565b61100281565b601381815481106122b757fe5b6000612fdf612ecb565b519050600080600c5411612ff4576015612ff8565b600c545b905080821115613006578091505b8161301057600191505b5090565b67016345785d8a000081565b60055481565b61100381565b61200481565b60005460ff16156130555760405162461bcd60e51b8152600401610d9d906188fc565b61305d61786d565b6000613083604051806101e001604052806101ab8152602001618d086101ab9139613cce565b91509150806130a45760405162461bcd60e51b8152600401610d9d906189e7565b60005b8260200151518110156131c9576001836020015182815181106130c657fe5b60209081029190910181015182546001818101855560009485528385208351600493840290910180546001600160a01b039283166001600160a01b03199182161782558587015182850180549185169183169190911790556040860151600283018054606089015160808a01511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b199590981692909516919091179290921694909417161790915560a09093015160039093019290925591860151805191850193918590811061319c57fe5b602090810291909101810151516001600160a01b03168252810191909152604001600020556001016130a7565b50506103e8600255506000805460ff19166001179055565b600d5481565b33612002146132085760405162461bcd60e51b8152600401610d9d90618bd5565b60005b60155481101561329057816001600160a01b03166015828154811061322c57fe5b60009182526020909120600490910201546001600160a01b031614156132885760016015828154811061325b57fe5b9060005260206000209060040201600201601c6101000a81548160ff021916908315150217905550613290565b60010161320b565b506001600160a01b0381166000908152600460205260409020548015806132e157506001808203815481106132c157fe5b9060005260206000209060040201600201601c9054906101000a900460ff165b1561331f576040516001600160a01b038316907fe209c46bebf57cf265d5d9009a00870e256d9150f3ed5281ab9d9eb3cec6e4be90600090a2613328565b610dbd8161504f565b5050565b601354600090815b818110156134355761341d85858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060138054909250859150811061338557fe5b600091825260209182902001805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156134135780601f106133e857610100808354040283529160200191613413565b820191906000526020600020905b8154815290600101906020018083116133f657829003601f168201915b5050505050616378565b1561342d57600192505050611c2d565b600101613334565b5060125460005b818110156134a65761348d86868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060128054909250859150811061338557fe5b1561349e5760019350505050611c2d565b60010161343c565b50600095945050505050565b33611001146134d35760405162461bcd60e51b8152600401610d9d90618b8c565b600b54613591576134e2617797565b60015460005b8181101561358d57600b80546001810182556000919091528351600080516020618ed38339815191526016909202918201908155602080860151600080516020618f138339815191528401805460ff191691151591909117905560408601518051879461356993600080516020618ef38339815191529091019201906177c6565b50606082015161357f9060038301906013617840565b5050508060010190506134e8565b5050505b600061359c826163dc565b90506135a781611ab3565b15613328576133288282616282565b606581565b3341146135da5760405162461bcd60e51b8152600401610d9d90618a77565b60005460ff166135fc5760405162461bcd60e51b8152600401610d9d906182e9565b6000341161361c5760405162461bcd60e51b8152600401610d9d9061863c565b3a1561363a5760405162461bcd60e51b8152600401610d9d906187ce565b6001600160a01b03811660009081526004602052604090205460145434919060ff1661367a57610271600f556103aa6006556014805460ff191660011790555b60006136a3612710613697600f548661657f90919063ffffffff16565b9063ffffffff6165b916565b90508015613713576040516110029082156108fc029083906000818181858888f193505050501580156136da573d6000803e3d6000fd5b507f6ecc855f9440a9282c90913bbc91619fd44f5ec0b462af28d127b116f130aa4d8160405161370a9190618c1b565b60405180910390a15b60008311801561372557506000600654115b156137cb5760006137476127106136976006548761657f90919063ffffffff16565b905080156137c95760405161dead9082156108fc029083906000818181858888f1935050505015801561377e573d6000803e3d6000fd5b507f627059660ea01c4733a328effb2294d2f86905bf806da763a89cee254de8bee5816040516137ae9190618c1b565b60405180910390a16137c6848263ffffffff615ba316565b93505b505b6137db838263ffffffff615ba316565b925081156138db5760006001808403815481106137f457fe5b9060005260206000209060040201905080600201601c9054906101000a900460ff161561386157846001600160a01b03167ff177e5d6c5764d79c32883ed824111d9b13f5668cf6ab1cc12dd36791dd955b4856040516138549190618c1b565b60405180910390a26138d5565b600354613874908563ffffffff615be516565b600390815581015461388c908563ffffffff615be516565b60038201556040516001600160a01b038616907f93a090ecc682c002995fad3c85b30c5651d7fd29b0be5da9d784a3302aedc055906138cc908790618c1b565b60405180910390a25b5061391d565b836001600160a01b03167ff177e5d6c5764d79c32883ed824111d9b13f5668cf6ab1cc12dd36791dd955b4846040516139149190618c1b565b60405180910390a25b50505050565b600e5481565b61100081565b61dead81565b600b818154811061394257fe5b6000918252602091829020601691909102018054600180830154600280850180546040805161010096831615969096026000190190911692909204601f810188900488028501880190925281845293965060ff909116949192918301828280156139ed5780601f106139c2576101008083540402835291602001916139ed565b820191906000526020600020905b8154815290600101906020018083116139d057829003601f168201915b5050505050905083565b61100481565b6000600a5460001480613a0e575081155b80613a195750600954155b15613a26575060006110af565b60096000815460019003919050819055506000613a71600a5461369785613697600b8981548110613a5357fe5b6000918252602090912060169091020154439063ffffffff615ba316565b90506000600b8581548110613a8257fe5b906000526020600020906016020160010160006101000a81548160ff0219169083151502179055506000806110016001600160a01b0316638256ace66040518163ffffffff1660e01b8152600401604080518083038186803b158015613ae757600080fd5b505afa158015613afb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b1f9190617e5a565b9150915060009350808310613c7e57613b388787615c0a565b506040516333c1892360e21b81526000906120029063cf06248c90613b61908b90600401617f97565b60206040518083038186803b158015613b7957600080fd5b505afa158015613b8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613bb19190617c07565b6001600160a01b031614613c1d576040516313d13bdb60e31b815261100190639e89ded890613be6908a908790600401617fab565b600060405180830381600087803b158015613c0057600080fd5b505af1158015613c14573d6000803e3d6000fd5b50505050613c75565b6040516305bfb49960e41b815261100190635bfb499090613c42908a90600401617f97565b600060405180830381600087803b158015613c5c57600080fd5b505af1158015613c70573d6000803e3d6000fd5b505050505b60019350613c90565b818310613c9057613c8e876163dc565b505b6040516001600160a01b038816907fb9d38178dc641ff1817967a63c9078cbcd955a9f1fcd75e0e3636de615d44d3b90600090a25050509392505050565b613cd661786d565b6000613ce061786d565b613ce861790a565b613cf9613cf4866165fb565b616620565b90506000805b613d088361666a565b15613e7c5780613d2d57613d23613d1e8461668b565b6166d9565b60ff168452613e74565b8060011415613e6f576060613d49613d448561668b565b616759565b90508051604051908082528060200260200182016040528015613d8657816020015b613d73617891565b815260200190600190039081613d6b5790505b5085602001819052508051604051908082528060200260200182016040528015613dc457816020015b6060815260200190600190039081613daf5790505b50604086015260005b8151811015613e6457613dde617891565b60606000613dfe858581518110613df157fe5b602002602001015161682a565b92509250925080613e1e578860009a509a50505050505050505050613e85565b8289602001518581518110613e2f57fe5b60200260200101819052508189604001518581518110613e4b57fe5b6020026020010181905250505050806001019050613dcd565b506001925050613e74565b613e7c565b600101613cff565b50919350909150505b915091565b604080516001808252818301909252606091829190816020015b6060815260200190600190039081613ea4579050509050613eca8363ffffffff16616944565b81600081518110613ed757fe5b60200260200101819052506110af81616957565b6000606483511115613f2257600080516020618eb3833981519152604051613f12906183fc565b60405180910390a1506066611c2d565b60005b8351811015613fc05760005b81811015613fb757848181518110613f4557fe5b6020026020010151600001516001600160a01b0316858381518110613f6657fe5b6020026020010151600001516001600160a01b03161415613faf57600080516020618eb3833981519152604051613f9c90618557565b60405180910390a1606692505050611c2d565b600101613f31565b50600101613f25565b5060608060606015805480602002602001604051908101604052809291908181526020016000905b828210156140725760008481526020908190206040805160c0810182526004860290920180546001600160a01b039081168452600180830154821685870152600283015491821693850193909352600160a01b81046001600160401b03166060850152600160e01b900460ff16151560808401526003015460a08301529083529092019101613fe8565b50505050905060606016805480602002602001604051908101604052809291908181526020016000905b828210156141475760008481526020908190208301805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156141335780601f1061410857610100808354040283529160200191614133565b820191906000526020600020905b81548152906001019060200180831161411657829003601f168201915b50505050508152602001906001019061409c565b50505050905060005b82518110156141a45782818151811061416557fe5b60200260200101516060015160020283828151811061418057fe5b60209081029190910101516001600160401b03909116606090910152600101614150565b506060806141b4898986866169e1565b915091506141c28282615163565b60015460408051828152602080840282010190915292985090965060009550859450925060609150828015614201578160200160208202803683370190505b50905060005b828110156143925760006001600160a01b03166120026001600160a01b031663cf06248c6001848154811061423857fe5b60009182526020909120600491820201546040516001600160e01b031960e085901b168152614273926001600160a01b039092169101617f97565b60206040518083038186803b15801561428b57600080fd5b505afa15801561429f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142c39190617c07565b6001600160a01b0316146143255760018282815181106142df57fe5b602002602001019060ff16908160ff16815250506001818154811061430057fe5b906000526020600020906004020160030154600014614320578360010193505b61438a565b67016345785d8a00006001828154811061433b57fe5b9060005260206000209060040201600301541061435d5784600101945061438a565b6001818154811061436a57fe5b90600052602060002090600402016003015460001461438a578360010193505b600101614207565b506060846040519080825280602002602001820160405280156143bf578160200160208202803683370190505b5090506060856040519080825280602002602001820160405280156143ee578160200160208202803683370190505b50905060608660405190808252806020026020018201604052801561441d578160200160208202803683370190505b50905060608760405190808252806020026020018201604052801561444c578160200160208202803683370190505b509050600060608860405190808252806020026020018201604052801561447d578160200160208202803683370190505b5090506060896040519080825280602002602001820160405280156144ac578160200160208202803683370190505b50905060009a506000995060006110046001600160a01b031663149d14d96040518163ffffffff1660e01b815260040160206040518083038186803b1580156144f457600080fd5b505afa158015614508573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061452c9190617e42565b905067016345785d8a000081111561457857600080516020618eb3833981519152604051614559906188bb565b60405180910390a160689e505050505050505050505050505050611c2d565b60005b8a81101561490c5789818151811061458f57fe5b602002602001015160ff166001141561468557600181815481106145af57fe5b90600052602060002090600402016003015460001461468057600181815481106145d557fe5b600091825260209091206004909102015484516001600160a01b039091169085908e90811061460057fe5b60200260200101906001600160a01b031690816001600160a01b0316815250506001818154811061462d57fe5b906000526020600020906004020160030154838d8151811061464b57fe5b60200260200101818152505060018a8d8151811061466557fe5b602002602001019060ff16908160ff16815250508b6001019b505b614904565b67016345785d8a00006001828154811061469b57fe5b9060005260206000209060040201600301541061482057600181815481106146bf57fe5b906000526020600020906004020160020160009054906101000a90046001600160a01b0316898e815181106146f057fe5b60200260200101906001600160a01b031690816001600160a01b03168152505060006402540be4006001838154811061472557fe5b9060005260206000209060040201600301548161473e57fe5b066001838154811061474c57fe5b9060005260206000209060040201600301540390506147748382615ba390919063ffffffff16565b898f8151811061478057fe5b6020026020010181815250506001828154811061479957fe5b906000526020600020906004020160010160009054906101000a90046001600160a01b0316878f815181106147ca57fe5b60200260200101906001600160a01b031690816001600160a01b03168152505081888f815181106147f757fe5b6020908102919091010152614812868263ffffffff615be516565b95508d6001019d5050614904565b6001818154811061482d57fe5b906000526020600020906004020160030154600014614904576001818154811061485357fe5b906000526020600020906004020160010160009054906101000a90046001600160a01b0316848d8151811061488457fe5b60200260200101906001600160a01b031690816001600160a01b031681525050600181815481106148b157fe5b906000526020600020906004020160030154838d815181106148cf57fe5b60200260200101818152505060008a8d815181106148e957fe5b602002602001019060ff16908160ff16815250508b6001019b505b60010161457b565b5060008415614b82576002546040516303702b2960e51b815261100491636e056520918891614946918e918e918d914201906004016180a5565b6020604051808303818588803b15801561495f57600080fd5b505af193505050508015614990575060408051601f3d908101601f1916820190925261498d91810190617d6f565b60015b614b07576040516000815260443d10156149ac57506000614a47565b60046000803e60005160e01c6308c379a081146149cd576000915050614a47565b60043d036004833e81513d60248201116001600160401b03821117156149f857600092505050614a47565b80830180516001600160401b03811115614a19576000945050505050614a47565b8060208301013d8601811115614a3757600095505050505050614a47565b601f01601f191660405250925050505b80614a525750614a94565b60019150857fa7cdeed7d0db45e3219a6e5d60838824c16f1d39991fcfe3f963029c844bf28082604051614a86919061812a565b60405180910390a250614b02565b3d808015614abe576040519150601f19603f3d011682016040523d82523d6000602084013e614ac3565b606091505b5060019150857fbfa884552dd8921b6ce90bfe906952ae5b3b29be0cc1a951d4f62697635a3a4582604051614af8919061812a565b60405180910390a2505b614b82565b8015614b49577fa217d08e65f80c73121cd9db834d81652d544bfbf452f6d04922b16c90a37b7086604051614b3c9190618c1b565b60405180910390a1614b80565b857fa7cdeed7d0db45e3219a6e5d60838824c16f1d39991fcfe3f963029c844bf280604051614b77906181ec565b60405180910390a25b505b8015614d385760005b8751811015614d36576000888281518110614ba257fe5b60200260200101519050600060018281548110614bbb57fe5b60009182526020909120600160049092020181015481546001600160a01b03909116916108fc9185908110614bec57fe5b9060005260206000209060040201600301549081150290604051600060405180830381858888f1935050505090508015614ca85760018281548110614c2d57fe5b60009182526020909120600160049092020181015481546001600160a01b03909116917f6c61d60f69a7beb3e1c80db7f39f37b208537cbb19da3174511b477812b2fc7d9185908110614c7c57fe5b906000526020600020906004020160030154604051614c9b9190618c1b565b60405180910390a2614d2c565b60018281548110614cb557fe5b60009182526020909120600160049092020181015481546001600160a01b03909116917f25d0ce7d2f0cec669a8c17efe49d195c13455bb8872b65fa610ac7f53fe4ca7d9185908110614d0457fe5b906000526020600020906004020160030154604051614d239190618c1b565b60405180910390a25b5050600101614b8b565b505b835115614f2e5760005b8451811015614f2c578a8181518110614d5757fe5b602002602001015160ff1660011415614df6576120026001600160a01b031663092193ab858381518110614d8757fe5b6020026020010151878481518110614d9b57fe5b60200260200101516040518363ffffffff1660e01b8152600401614dbf9190617f97565b6000604051808303818588803b158015614dd857600080fd5b505af1158015614dec573d6000803e3d6000fd5b5050505050614f24565b6000858281518110614e0457fe5b60200260200101516001600160a01b03166108fc868481518110614e2457fe5b60200260200101519081150290604051600060405180830381858888f1935050505090508015614eba57858281518110614e5a57fe5b60200260200101516001600160a01b03167f6c61d60f69a7beb3e1c80db7f39f37b208537cbb19da3174511b477812b2fc7d868481518110614e9857fe5b6020026020010151604051614ead9190618c1b565b60405180910390a2614f22565b858281518110614ec657fe5b60200260200101516001600160a01b03167f25d0ce7d2f0cec669a8c17efe49d195c13455bb8872b65fa610ac7f53fe4ca7d868481518110614f0457fe5b6020026020010151604051614f199190618c1b565b60405180910390a25b505b600101614d42565b505b505050505050505050505050506000471115614fab577f6ecc855f9440a9282c90913bbc91619fd44f5ec0b462af28d127b116f130aa4d47604051614f739190618c1b565b60405180910390a1604051611002904780156108fc02916000818181858888f19350505050158015614fa9573d6000803e3d6000fd5b505b60006003819055600555815115614fc657614fc6828261539c565b6110016001600160a01b031663fc4333cd6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561500357600080fd5b505af1158015615017573d6000803e3d6000fd5b50506040517fedd8d7296956dd970ab4de3f2fc03be2b0ffc615d20cd4c72c6e44f928630ebf925060009150a1506000949350505050565b600154600554600091906000198201118015906150c25760018085038154811061507557fe5b600091825260208220600490910201546040516001600160a01b03909116917fe209c46bebf57cf265d5d9009a00870e256d9150f3ed5281ab9d9eb3cec6e4be91a2600092505050611b7d565b6005805460019081019091558054819060001987019081106150e057fe5b9060005260206000209060040201600201601c6101000a81548160ff02191690831515021790555060018085038154811061511757fe5b600091825260208220600490910201546040516001600160a01b03909116917ff226e7d8f547ff903d9d419cf5f54e0d7d07efa9584135a53a057c5f1f27f49a91a25060009392505050565b606080600080808080615174612fd5565b6001549091505b801561528257600181039250600b838154811061519457fe5b600091825260209091206001601690920201015460ff166151b457615279565b600183815481106151c157fe5b60009182526020909120600490910201546001600160a01b031694506151e88584846139fd565b93508315806151fb575060018a51038610155b1561520557615279565b60005b8a5181101561527757856001600160a01b03168b828151811061522757fe5b6020026020010151600001516001600160a01b0316141561526f5760018b828151811061525057fe5b6020908102919091010151901515608090910152600190960195615277565b600101615208565b505b6000190161517b565b50848951036040519080825280602002602001820160405280156152c057816020015b6152ad617891565b8152602001906001900390816152a55790505b509650848951036040519080825280602002602001820160405280156152fa57816020015b60608152602001906001900390816152e55790505b5095506000915060005b895181101561538e5789818151811061531957fe5b6020026020010151608001516153865789818151811061533557fe5b602002602001015188848151811061534957fe5b602002602001018190525088818151811061536057fe5b602002602001015187848151811061537457fe5b60200260200101819052508260010192505b600101615304565b5050505050505b9250929050565b600154825160005b828110156154b95760016153b6617891565b600183815481106153c357fe5b600091825260208083206040805160c08101825260049490940290910180546001600160a01b0390811685526001820154811693850193909352600281015492831691840191909152600160a01b82046001600160401b03166060840152600160e01b90910460ff16151560808301526003015460a082015291505b8481101561548d5787818151811061545357fe5b6020026020010151600001516001600160a01b031682600001516001600160a01b03161415615485576000925061548d565b60010161543f565b5081156154af5780516001600160a01b03166000908152600460205260408120555b50506001016153a4565b508082111561557857805b828110156155765760018054806154d757fe5b60008281526020812060046000199093019283020180546001600160a01b0319908116825560018201805490911690556002810180546001600160e81b0319169055600301559055600b80548061552a57fe5b60008281526020812060166000199093019283020181815560018101805460ff191690559061555c60028301826178c6565b61556a60038301600061792a565b505090556001016154c4565b505b60008183106155875781615589565b825b905060005b818110156159455761563b8682815181106155a557fe5b6020026020010151600183815481106155ba57fe5b60009182526020918290206040805160c08101825260049390930290910180546001600160a01b0390811684526001820154811694840194909452600281015493841691830191909152600160a01b83046001600160401b03166060830152600160e01b90920460ff161515608082015260039091015460a0820152616dad565b6157ef57806001016004600088848151811061565357fe5b6020026020010151600001516001600160a01b03166001600160a01b031681526020019081526020016000208190555085818151811061568f57fe5b6020026020010151600182815481106156a457fe5b6000918252602091829020835160049092020180546001600160a01b039283166001600160a01b0319918216178255928401516001820180549184169185169190911790556040840151600282018054606087015160808801511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b1995909716929097169190911792909216939093171692909217905560a090910151600390910155845185908290811061575f57fe5b6020026020010151600b828154811061577457fe5b906000526020600020906016020160020190805190602001906157989291906177c6565b506000600b82815481106157a857fe5b60009182526020822060169190910201600101805460ff191692151592909217909155600b8054839081106157d957fe5b600091825260209091206016909102015561593d565b6158808582815181106157fe57fe5b6020026020010151600b838154811061581357fe5b600091825260209182902060026016909202018101805460408051601f6000196101006001861615020190931694909404918201859004850284018501905280835291929091908301828280156134135780601f106133e857610100808354040283529160200191613413565b6158cb5784818151811061589057fe5b6020026020010151600b82815481106158a557fe5b906000526020600020906016020160020190805190602001906158c99291906177c6565b505b6000600182815481106158da57fe5b9060005260206000209060040201600301819055508581815181106158fb57fe5b6020026020010151608001516001828154811061591457fe5b9060005260206000209060040201600201601c6101000a81548160ff0219169083151502179055505b60010161558e565b5082821115615b1d57615956617797565b835b83811015615b1a5785818151811061596c57fe5b60200260200101518260400181905250600187828151811061598a57fe5b6020908102919091018101518254600181810185556000948552838520835160049093020180546001600160a01b039384166001600160a01b0319918216178255848601518284018054918616918316919091179055604080860151600284018054606089015160808a01511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b1995909a1692909616919091179290921696909617169190911790935560a090930151600390930192909255600b8054928301815590935284516016909102600080516020618ed3833981519152810191825585830151600080516020618f138339815191528201805491151560ff1990921691909117905592850151805186949293615ac093600080516020618ef3833981519152019201906177c6565b506060820151615ad69060038301906013617840565b5050508060010160046000898481518110615aed57fe5b602090810291909101810151516001600160a01b0316825281019190915260400160002055600101615958565b50505b615b25616e2e565b615b2d617010565b6000600981905560015493505b83811015615b9b576000600b8281548110615b5157fe5b60009182526020822060169190910201600101805460ff191692151592909217909155600b805483908110615b8257fe5b6000918252602090912060169091020155600101615b3a565b505050505050565b60006110af83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506171fe565b6000828201838110156110af5760405162461bcd60e51b8152600401610d9d90618320565b60008060018381548110615c1a57fe5b90600052602060002090600402016003015490506000600180805490500390506001615c44612ecb565b5111615c7957600060018581548110615c5957fe5b906000526020600020906004020160030181905550600092505050611c2d565b846001600160a01b03167f3b6f9ef90462b512a1293ecec018670bf7b7f1876fb727590a8a6d7643130a7083604051615cb29190618c1b565b60405180910390a26001600160a01b038516600090815260046020526040812055835b60015460001901811015615e9f5760018160010181548110615cf357fe5b906000526020600020906004020160018281548110615d0e57fe5b60009182526020909120825460049092020180546001600160a01b03199081166001600160a01b0393841617825560018085015481840180548416918616919091179055600280860180549185018054909416919095161780835584546001600160401b03600160a01b91829004160267ffffffffffffffff60a01b1990911617808355935460ff600160e01b918290041615150260ff60e01b19909416939093179055600392830154920191909155600b805490918301908110615dcf57fe5b9060005260206000209060160201600b8281548110615dea57fe5b600091825260209091208254601690920201908155600180830154818301805460ff909216151560ff1990921691909117905560028084018054615e41938386019390821615610100026000190190911604617939565b50615e54600382810190840160136179ae565b50905050806001016004600060018481548110615e6d57fe5b600091825260208083206004909202909101546001600160a01b03168352820192909252604001902055600101615cd5565b506001805480615eab57fe5b60008281526020812060046000199093019283020180546001600160a01b0319908116825560018201805490911690556002810180546001600160e81b0319169055600301559055600b805480615efe57fe5b60008281526020812060166000199093019283020181815560018101805460ff1916905590615f3060028301826178c6565b615f3e60038301600061792a565b505090556000818381615f4d57fe5b0490508015615fb15760015460005b81811015615fae578260018281548110615f7257fe5b9060005260206000209060040201600301540160018281548110615f9257fe5b6000918252602090912060036004909202010155600101615f5c565b50505b50600195945050505050565b600154815160408051828152602080840282010190915260609291908390828015615ffc57816020015b6060815260200190600190039081615fe75790505b50600b549091508314616013579250611b7d915050565b60005b8281101561612257600b60016004600089858151811061603257fe5b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054038154811061606657fe5b600091825260209182902060026016909202018101805460408051601f6000196101006001861615020190931694909404918201859004850284018501905280835291929091908301828280156160fe5780601f106160d3576101008083540402835291602001916160fe565b820191906000526020600020905b8154815290600101906020018083116160e157829003601f168201915b505050505082828151811061610f57fe5b6020908102919091010152600101616016565b50949350505050565b60005b82811015616278576000828783880160405160200161614e929190617f89565b6040516020818303038152906040528051906020012060001c8161616e57fe5b0690508085018287011461626f576000898388018151811061618c57fe5b60200260200101519050606089848901815181106161a657fe5b602002602001015190508a838801815181106161be57fe5b60200260200101518b858a01815181106161d457fe5b60200260200101906001600160a01b031690816001600160a01b031681525050818b8489018151811061620357fe5b60200260200101906001600160a01b031690816001600160a01b031681525050898388018151811061623157fe5b60200260200101518a858a018151811061624757fe5b6020026020010181905250808a8489018151811061626157fe5b602002602001018190525050505b5060010161612e565b5050505050505050565b600980546001908101909155600b80548390811061629c57fe5b906000526020600020906016020160010160006101000a81548160ff02191690831515021790555043600b82815481106162d257fe5b600091825260208220601690910201919091556040516001600160a01b038416917ff62981a567ec3cec866c6fa93c55bcdf841d6292d18b8d522ececa769375d82d91a25050565b60008160405160200161632d9190617f6d565b60405160208183030381529060405280519060200120836040516020016163549190617f6d565b6040516020818303038152906040528051906020012014905092915050565b015190565b81518151600091600191811480831461639457600092506163d2565b600160208701838101602088015b6002848385100114156163cd5780518351146163c15760009650600093505b602092830192016163a2565b505050505b5090949350505050565b6001600160a01b0381166000908152600460205260408120548061640557506000199050611b7d565b60018103905060006001828154811061641a57fe5b906000526020600020906004020160030154905060006001838154811061643d57fe5b6000918252602090912060036004909202010155600154604051600019909101906001600160a01b038616907f8cd4e147d8af98a9e3b6724021b8bf6aed2e5dac71c38f2dce8161b82585b25d90616496908590618c1b565b60405180910390a2806164ae57829350505050611b7d565b60008183816164b957fe5b04905080156165755760005b848110156165175781600182815481106164db57fe5b90600052602060002090600402016003015401600182815481106164fb57fe5b60009182526020909120600360049092020101556001016164c5565b50600180549085015b8181101561657257826001828154811061653657fe5b906000526020600020906004020160030154016001828154811061655657fe5b6000918252602090912060036004909202010155600101616520565b50505b5091949350505050565b60008261658e57506000611c2d565b8282028284828161659b57fe5b04146110af5760405162461bcd60e51b8152600401610d9d9061878d565b60006110af83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061722a565b6166036179d8565b506040805180820190915281518152602082810190820152919050565b61662861790a565b61663182617261565b61663a57600080fd5b6000616649836020015161729b565b60208085015160408051808201909152868152920190820152915050919050565b60006166746179d8565b505080518051602091820151919092015191011190565b6166936179d8565b61669c8261666a565b6166a557600080fd5b602082015160006166b5826172fe565b80830160209586015260408051808201909152908152938401919091525090919050565b8051600090158015906166ee57508151602110155b6166f757600080fd5b6000616706836020015161729b565b9050808360000151101561672c5760405162461bcd60e51b8152600401610d9d90618933565b82516020808501518301805192849003929183101561612257506020919091036101000a90049392505050565b606061676482617261565b61676d57600080fd5b6000616778836173df565b90506060816040519080825280602002602001820160405280156167b657816020015b6167a36179d8565b81526020019060019003908161679b5790505b50905060006167c8856020015161729b565b60208601510190506000805b8481101561681f576167e5836172fe565b915060405180604001604052808381526020018481525084828151811061680857fe5b6020908102919091010152918101916001016167d4565b509195945050505050565b616832617891565b6060600061683e617891565b606061684861790a565b61685187616620565b90506000805b6168608361666a565b15616935578061688b5761687b6168768461668b565b61743b565b6001600160a01b0316855261692d565b80600114156168b3576168a06168768461668b565b6001600160a01b0316602086015261692d565b80600214156168db576168c86168768461668b565b6001600160a01b0316604086015261692d565b8060031415616907576168f0613d1e8461668b565b6001600160401b031660608601526001915061692d565b80600414156169285761692161691c8461668b565b617455565b935061692d565b616935565b600101616857565b50929791965091945092505050565b6060611c2d616952836174c5565b6175ab565b60608151600014156169785750604080516000815260208101909152611b7d565b60608260008151811061698757fe5b602002602001015190506000600190505b83518110156169c8576169be828583815181106169b157fe5b60200260200101516175fd565b9150600101616998565b506110af6169db825160c060ff1661767a565b826175fd565b60608060006120026001600160a01b031663c473318f6040518163ffffffff1660e01b815260040160206040518083038186803b158015616a2157600080fd5b505afa158015616a35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190616a599190617e42565b90508085518851011015616a6e575083518651015b606081604051908082528060200260200182016040528015616aaa57816020015b616a97617891565b815260200190600190039081616a8f5790505b509050606082604051908082528060200260200182016040528015616ae357816020015b6060815260200190600190039081616ace5790505b50905060008060005b8b51831080616afb5750895182105b8015616b0657508581105b15616d9b578b51831415616b7657898281518110616b2057fe5b6020026020010151858281518110616b3457fe5b6020026020010181905250888281518110616b4b57fe5b6020026020010151848281518110616b5f57fe5b602090810291909101015260019182019101616aec565b8951821415616be1578b8381518110616b8b57fe5b6020026020010151858281518110616b9f57fe5b60200260200101819052508a8381518110616bb657fe5b6020026020010151848281518110616bca57fe5b602090810291909101015260019283019201616aec565b898281518110616bed57fe5b6020026020010151606001516001600160401b03168c8481518110616c0e57fe5b6020026020010151606001516001600160401b03161115616c8a578b8381518110616c3557fe5b6020026020010151858281518110616c4957fe5b60200260200101819052508a8381518110616c6057fe5b6020026020010151848281518110616c7457fe5b6020026020010181905250826001019250616d93565b898281518110616c9657fe5b6020026020010151606001516001600160401b03168c8481518110616cb757fe5b6020026020010151606001516001600160401b03161015616d3357898281518110616cde57fe5b6020026020010151858281518110616cf257fe5b6020026020010181905250888281518110616d0957fe5b6020026020010151848281518110616d1d57fe5b6020026020010181905250816001019150616d93565b898281518110616d3f57fe5b6020026020010151600001516001600160a01b03168c8481518110616d6057fe5b6020026020010151600001516001600160a01b03161015616d87578b8381518110616c3557fe5b898281518110616b2057fe5b600101616aec565b50929a91995090975050505050505050565b805182516000916001600160a01b039182169116148015616de7575081602001516001600160a01b031683602001516001600160a01b0316145b8015616e0c575081604001516001600160a01b031683604001516001600160a01b0316145b80156110af5750506060908101519101516001600160401b0390811691161490565b60125460135480821115616e7957805b82811015616e77576012805480616e5157fe5b600190038181906000526020600020016000616e6d91906178c6565b9055600101616e3e565b505b6000818310616e885781616e8a565b825b905060005b81811015616fa257616f4760128281548110616ea757fe5b600091825260209182902001805460408051601f6002600019610100600187161502019094169390930492830185900485028101850190915281815292830182828015616f355780601f10616f0a57610100808354040283529160200191616f35565b820191906000526020600020905b815481529060010190602001808311616f1857829003601f168201915b50505050506013838154811061338557fe5b616f9a5760138181548110616f5857fe5b9060005260206000200160128281548110616f6f57fe5b906000526020600020019080546001816001161561010002031660029004616f98929190617939565b505b600101616e8f565b5082821115610dbd57825b8281101561391d57601260138281548110616fc457fe5b6000918252602080832084546001818101875595855291909320929091018054617007949390920192909160026101009282161592909202600019011604617939565b50600101616fad565b601354600b548082111561705b57805b8281101561705957601380548061703357fe5b60019003818190600052602060002001600061704f91906178c6565b9055600101617020565b505b600081831061706a578161706c565b825b905060005b8181101561718b576171296013828154811061708957fe5b600091825260209182902001805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156171175780601f106170ec57610100808354040283529160200191617117565b820191906000526020600020905b8154815290600101906020018083116170fa57829003601f168201915b5050505050600b838154811061581357fe5b61718357600b818154811061713a57fe5b90600052602060002090601602016002016013828154811061715857fe5b906000526020600020019080546001816001161561010002031660029004617181929190617939565b505b600101617071565b5082821115610dbd57825b8281101561391d576013600b82815481106171ad57fe5b6000918252602080832084546001808201875595855291909320601692909202909201600290810180546171f595939094019390926000199082161561010002011604617939565b50600101617196565b600081848411156172225760405162461bcd60e51b8152600401610d9d919061812a565b505050900390565b6000818361724b5760405162461bcd60e51b8152600401610d9d919061812a565b50600083858161725757fe5b0495945050505050565b805160009061727257506000611b7d565b6020820151805160001a9060c082101561729157600092505050611b7d565b5060019392505050565b8051600090811a60808110156172b5576000915050611b7d565b60b88110806172d0575060c081108015906172d0575060f881105b156172df576001915050611b7d565b60c08110156172f35760b519019050611b7d565b60f519019050611b7d565b80516000908190811a608081101561731957600191506173d8565b60b881101561732e57607e19810191506173d8565b60c081101561737f57600060b78203600186019550806020036101000a8651049150600181018201935050808310156173795760405162461bcd60e51b8152600401610d9d906186da565b506173d8565b60f88110156173945760be19810191506173d8565b600060f78203600186019550806020036101000a8651049150600181018201935050808310156173d65760405162461bcd60e51b8152600401610d9d906186da565b505b5092915050565b80516000906173f057506000611b7d565b60008090506000617404846020015161729b565b602085015185519181019250015b8082101561743257617423826172fe565b82019150826001019250617412565b50909392505050565b805160009060151461744c57600080fd5b611c2d826166d9565b805160609061746357600080fd5b6000617472836020015161729b565b83516040805191839003808352601f19601f82011683016020019091529192506060908280156174a9576020820181803683370190505b509050600081602001905061612284876020015101828561774c565b604080516020808252818301909252606091829190602082018180368337505050602081018490529050600067ffffffffffffffff1984166175095750601861752d565b6fffffffffffffffffffffffffffffffff1984166175295750601061752d565b5060005b60208110156175635781818151811061754257fe5b01602001516001600160f81b0319161561755b57617563565b60010161752d565b60008160200390506060816040519080825280601f01601f191660200182016040528015617598576020820181803683370190505b5080830196909652508452509192915050565b6060815160011480156175dd5750607f60f81b826000815181106175cb57fe5b01602001516001600160f81b03191611155b156175e9575080611b7d565b611c2d6175fb8351608060ff1661767a565b835b6060806040519050835180825260208201818101602087015b8183101561762e578051835260209283019201617616565b50855184518101855292509050808201602086015b8183101561765b578051835260209283019201617643565b508651929092011591909101601f01601f191660405250905092915050565b60606801000000000000000083106176a45760405162461bcd60e51b8152600401610d9d906184d2565b604080516001808252818301909252606091602082018180368337019050509050603784116176fe5782840160f81b816000815181106176e057fe5b60200101906001600160f81b031916908160001a9053509050611c2d565b6060617709856174c5565b90508381510160370160f81b8260008151811061772257fe5b60200101906001600160f81b031916908160001a90535061774382826175fd565b95945050505050565b8061775657610dbd565b5b60208110617776578251825260209283019290910190601f1901617757565b915181516020939093036101000a6000190180199091169216919091179052565b604051806080016040528060008152602001600015158152602001606081526020016177c16179f2565b905290565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061780757805160ff1916838001178555617834565b82800160010185558215617834579182015b82811115617834578251825591602001919060010190617819565b50613010929150617a11565b82601381019282156178345791602002820182811115617834578251825591602001919060010190617819565b6040518060600160405280600060ff16815260200160608152602001606081525090565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a081019190915290565b50805460018160011615610100020316600290046000825580601f106178ec5750611d89565b601f016020900490600052602060002090810190611d899190617a11565b604051806040016040528061791d6179d8565b8152602001600081525090565b50611d89906013810190617a11565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106179725780548555617834565b8280016001018555821561783457600052602060002091601f016020900482015b82811115617834578254825591600101919060010190617993565b82601381019282156178345791820182811115617834578254825591600101919060010190617993565b604051806040016040528060008152602001600081525090565b6040518061026001604052806013906020820280368337509192915050565b612fb491905b808211156130105760008155600101617a17565b8035611c2d81618cf2565b60008083601f840112617a47578182fd5b5081356001600160401b03811115617a5d578182fd5b602083019150836020808302850101111561539557600080fd5b6000601f8381840112617a88578182fd5b8235617a9b617a9682618ca7565b618c81565b818152925060208084019085810160005b84811015617b2d578135880189603f820112617ac757600080fd5b838101356001600160401b03811115617adf57600080fd5b617af0818901601f19168601618c81565b81815260408c81848601011115617b0657600080fd5b82818501888401375060009181018601919091528552509282019290820190600101617aac565b50505050505092915050565b600082601f830112617b49578081fd5b8135617b57617a9682618ca7565b818152915060208083019084810181840286018201871015617b7857600080fd5b6000805b85811015617b2d5782356001600160401b0381168114617b9a578283fd5b85529383019391830191600101617b7c565b60008083601f840112617bbd578182fd5b5081356001600160401b03811115617bd3578182fd5b60208301915083602082850101111561539557600080fd5b600060208284031215617bfc578081fd5b81356110af81618cf2565b600060208284031215617c18578081fd5b81516110af81618cf2565b60008060008060408587031215617c38578283fd5b84356001600160401b0380821115617c4e578485fd5b617c5a88838901617a36565b90965094506020870135915080821115617c72578384fd5b50617c7f87828801617a36565b95989497509550505050565b600080600060608486031215617c9f578283fd5b83356001600160401b0380821115617cb5578485fd5b81860187601f820112617cc6578586fd5b80359250617cd6617a9684618ca7565b80848252602080830192508084018b828389028701011115617cf657898afd5b8994505b86851015617d2057617d0c8c82617a2b565b845260019490940193928101928101617cfa565b509097508801359350505080821115617d37578384fd5b617d4387838801617b39565b93506040860135915080821115617d58578283fd5b50617d6586828701617a77565b9150509250925092565b600060208284031215617d80578081fd5b815180151581146110af578182fd5b60008060208385031215617da1578182fd5b82356001600160401b03811115617db6578283fd5b617dc285828601617bac565b90969095509350505050565b60008060008060408587031215617de3578384fd5b84356001600160401b0380821115617df9578586fd5b617e0588838901617bac565b90965094506020870135915080821115617e1d578384fd5b50617c7f87828801617bac565b600060208284031215617e3b578081fd5b5035919050565b600060208284031215617e53578081fd5b5051919050565b60008060408385031215617e6c578182fd5b505080516020909101519092909150565b600080600060408486031215617e91578081fd5b833560ff81168114617ea1578182fd5b925060208401356001600160401b03811115617ebb578182fd5b617ec786828701617bac565b9497909650939450505050565b6000815180845260208085019450808401835b83811015617f0c5781516001600160a01b031687529582019590820190600101617ee7565b509495945050505050565b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b60008151808452617f59816020860160208601618cc6565b601f01601f19169290920160200192915050565b60008251617f7f818460208701618cc6565b9190910192915050565b918252602082015260400190565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b03968716815294861660208601529290941660408401526001600160401b03166060830152911515608082015260a081019190915260c00190565b6001600160a01b0392909216825260ff16602082015260400190565b6000602082526110af6020830184617ed4565b6000604082526180486040830185617ed4565b602083820381850152818551808452828401915082838202850101838801865b8381101561809657601f19878403018552618084838351617f41565b94860194925090850190600101618068565b50909998505050505050505050565b6000608082526180b86080830187617ed4565b828103602084810191909152865180835287820192820190845b818110156180ee578451835293830193918301916001016180d2565b505084810360408601526181028188617ed4565b93505050506001600160401b038316606083015295945050505050565b901515815260200190565b6000602082526110af6020830184617f41565b600060408252618151604083018688617f17565b8281036020840152618164818587617f17565b979650505050505050565b6020808252601c908201527f6c656e677468206f66206275726e526174696f206d69736d6174636800000000604082015260600190565b60208082526026908201527f6c656e677468206f66206d61784e756d4f664d61696e7461696e696e67206d696040820152650e6dac2e8c6d60d31b606082015260800190565b6020808252601b908201527f6261746368207472616e736665722072657475726e2066616c73650000000000604082015260600190565b6020808252602c908201527f6c656e677468206f66206d61784e756d4f66576f726b696e6743616e6469646160408201526b0e8cae640dad2e6dac2e8c6d60a31b606082015260800190565b60208082526025908201527f6c656e677468206f66206d61696e7461696e536c6173685363616c65206d69736040820152640dac2e8c6d60db1b606082015260800190565b6020808252818101527f6c656e677468206f66206e756d4f66436162696e657473206d69736d61746368604082015260600190565b60208082526019908201527f74686520636f6e7472616374206e6f7420696e69742079657400000000000000604082015260600190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b60208082526028908201527f746865206e756d4f66436162696e657473206d75737420626520677265617465604082015267072207468616e20360c41b606082015260800190565b60208082526039908201527f746865206e756d4f66436162696e657473206d757374206265206c657373207460408201527f68616e204d41585f4e554d5f4f465f56414c494441544f525300000000000000606082015260800190565b60208082526029908201527f746865206e756d626572206f662076616c696461746f727320657863656564206040820152681d1a19481b1a5b5a5d60ba1b606082015260800190565b60208082526022908201527f63616e206e6f7420646f207468697320747769636520696e206f6e6520626c6f604082015261636b60f01b606082015260800190565b6020808252602b908201527f746865206275726e526174696f206d757374206265206e6f206772656174657260408201526a0207468616e2031303030360ac1b606082015260800190565b6020808252600e908201526d696e70757420746f6f206c6f6e6760901b604082015260600190565b60208082526037908201527f746865206d61784e756d4f664d61696e7461696e696e67206d7573742062652060408201527f6c657373207468616e206e756d4f66436162696e657473000000000000000000606082015260800190565b6020808252602b908201527f6475706c696361746520636f6e73656e7375732061646472657373206f66207660408201526a185b1a59185d1bdc94d95d60aa1b606082015260800190565b60208082526033908201527f7468652073797374656d526577617264526174696f206d757374206265206e6f60408201527202067726561746572207468616e20313030303606c1b606082015260800190565b60208082526027908201527f7468652065787069726554696d655365636f6e64476170206973206f7574206f604082015266662072616e676560c81b606082015260800190565b6020808252601590820152746465706f7369742076616c7565206973207a65726f60581b604082015260600190565b60208082526049908201527f746865206d61784e756d4f66576f726b696e6743616e64696461746573206d7560408201527f7374206265206e6f742067726561746572207468616e206d61784e756d4f6643606082015268616e6469646174657360b81b608082015260a00190565b6020808252601190820152706164646974696f6e206f766572666c6f7760781b604082015260600190565b60208082526023908201527f63616e206e6f7420656e7465722054656d706f72617279204d61696e74656e616040820152626e636560e81b606082015260800190565b60208082526025908201527f6c656e677468206f66206a61696c2076616c696461746f7273206d757374206260408201526465206f6e6560d81b606082015260800190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252601490820152736761737072696365206973206e6f74207a65726f60601b604082015260600190565b6020808252602e908201527f746865206d6573736167652073656e646572206d75737420626520676f76657260408201526d1b985b98d94818dbdb9d1c9858dd60921b606082015260800190565b60208082526025908201527f6c656e677468206f66206d61784e756d4f6643616e64696461746573206d69736040820152640dac2e8c6d60db1b606082015260800190565b6020808252601290820152716e6f7420696e206d61696e74656e616e636560701b604082015260600190565b60208082526021908201527f666565206973206c6172676572207468616e2044555354595f494e434f4d494e6040820152604760f81b606082015260800190565b60208082526019908201527f74686520636f6e747261637420616c726561647920696e697400000000000000604082015260600190565b6020808252601a908201527f6c656e677468206973206c657373207468616e206f6666736574000000000000604082015260600190565b60208082526026908201527f6c656e677468206f662065787069726554696d655365636f6e64476170206d696040820152650e6dac2e8c6d60d31b606082015260800190565b60208082526017908201527f6f6e6c792063757272656e742076616c696461746f7273000000000000000000604082015260600190565b60208082526021908201527f6661696c656420746f20706172736520696e69742076616c696461746f7253656040820152601d60fa1b606082015260800190565b6020808252602f908201527f746865206d6573736167652073656e646572206d7573742062652063726f737360408201526e0818da185a5b8818dbdb9d1c9858dd608a1b606082015260800190565b6020808252602d908201527f746865206d6573736167652073656e646572206d75737420626520746865206260408201526c3637b1b590383937b23ab1b2b960991b606082015260800190565b60208082526024908201527f6c656e677468206f662073797374656d526577617264526174696f206d69736d6040820152630c2e8c6d60e31b606082015260800190565b6020808252603e908201527f746865206d61696e7461696e536c6173685363616c65206d757374206265206760408201527f726561746572207468616e203020616e64206c657373207468616e2031300000606082015260800190565b6020808252600d908201526c756e6b6e6f776e20706172616d60981b604082015260600190565b60208082526029908201527f746865206d6573736167652073656e646572206d75737420626520736c6173686040820152680818dbdb9d1c9858dd60ba1b606082015260800190565b6020808252601f908201527f746865206d73672073656e646572206d757374206265207374616b6548756200604082015260600190565b61ffff91909116815260200190565b90815260200190565b60008482528315156020830152606060408301526177436060830184617f41565b63ffffffff91909116815260200190565b60ff91909116815260200190565b600060ff8516825260406020830152617743604083018486617f17565b6040518181016001600160401b0381118282101715618c9f57600080fd5b604052919050565b60006001600160401b03821115618cbc578081fd5b5060209081020190565b60005b83811015618ce1578181015183820152602001618cc9565b8381111561391d5750506000910152565b6001600160a01b0381168114611d8957600080fdfef901a880f901a4f844941284214b9b9c85549ab3d2b972df0deef66ac2c9946ddf42a51534fc98d0c0a3b42c963cace8441ddf946ddf42a51534fc98d0c0a3b42c963cace8441ddf8410000000f84494a2959d3f95eae5dc7d70144ce1b73b403b7eb6e0948081ef03f1d9e0bb4a5bf38f16285c879299f07f948081ef03f1d9e0bb4a5bf38f16285c879299f07f8410000000f8449435552c16704d214347f29fa77f77da6d75d7c75294dc4973e838e3949c77aced16ac2315dc2d7ab11194dc4973e838e3949c77aced16ac2315dc2d7ab1118410000000f84494980a75ecd1309ea12fa2ed87a8744fbfc9b863d594cc6ac05c95a99c1f7b5f88de0e3486c82293b27094cc6ac05c95a99c1f7b5f88de0e3486c82293b2708410000000f84494f474cf03cceff28abc65c9cbae594f725c80e12d94e61a183325a18a173319dd8e19c8d069459e217594e61a183325a18a173319dd8e19c8d069459e21758410000000f84494b71b214cb885500844365e95cd9942c7276e7fd894d22ca3ba2141d23adab65ce4940eb7665ea2b6a794d22ca3ba2141d23adab65ce4940eb7665ea2b6a7841000000070e72399380dcfb0338abc03dc8d47f9f470ada8e769c9a78d644ea97385ecb20175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db90175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01dbb0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01dbaa164736f6c6343000604000a", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/9d09d0a3d6332460a810188261ec8195e05aa218", + Code: "6080604052600436106104fb5760003560e01c806388b32f111161028c578063c6d339451161015a578063e40716a1116100cc578063f92eb86b11610085578063f92eb86b14610d2d578063f9a2bbc714610d42578063fc3e590814610d57578063fccc281314610d6c578063fd4ad81f14610d81578063fd6a687914610db057610502565b8063e40716a114610c9b578063ea321e4914610cb0578063eb57e20214610cd0578063eda5868c14610cf0578063f1fad10414610d05578063f340fa0114610d1a57610502565b8063d86222d51161011e578063d86222d514610c1d578063daacdb6614610c32578063dc927faf14610c47578063df8079e914610c5c578063e086c7b114610c71578063e1c7392a14610c8657610502565b8063c6d3394514610bbe578063c81b166214610bd3578063c8509d811461098d578063ce910b0c14610be8578063d68fb56a14610c0857610502565b8063a78abc16116101fe578063ad3c9da6116101b7578063ad3c9da614610b3d578063aef198a914610b5d578063b7ab4db514610b72578063b8cf4ef114610b94578063bf9f4995146106fe578063c466689d14610ba957610502565b8063a78abc1614610ab4578063aa82dce114610ac9578063aad5606314610ade578063aaf5eb6814610af3578063ab51bb9614610b08578063ac43175114610b1d57610502565b806396713da91161025057806396713da914610a365780639dc0926214610a4b5780639fe0f81614610a60578063a0dc275814610a75578063a1a11bf514610a8a578063a5422d5c14610a9f57610502565b806388b32f11146109c25780638a7beb01146109d75780638b5ad0c9146109ec5780638d19a41014610a015780639369d7de14610a2157610502565b806351b4dce3116103c957806370fd5bad1161033b5780637e434d54116102f45780637e434d541461094e57806381650b6214610963578063820dcaa814610978578063831d65d11461098d578063853230aa1461090f57806386249882146109ad57610502565b806370fd5bad146108d0578063718a8aa8146108e557806375d47a0a146108fa57806378dfed4a1461090f5780637942fd05146109245780637a84ca2a1461093957610502565b80635d77156c1161038d5780635d77156c1461082a5780635de1e22c1461083f57806360eba4fe1461085457806362b72cf5146108745780636969a25c146108895780636e47b482146108bb57610502565b806351b4dce3146107ab57806351e80672146107c057806355614fcc146107d5578063565c56b3146107f55780635667515a1461081557610502565b8063300c35671161046d57806343756e5c1161042657806343756e5c1461072057806345cf9daf14610735578063493279b11461074a5780634bf6c8821461076c5780634df6e0c3146107815780635192c82c1461079657610502565b8063300c35671461065b578063321d398a1461067b5780633365af3a1461069b57806335409f7f146106bb5780633b071dcc146106db5780633dffc387146106fe57610502565b8063152ad3b8116104bf578063152ad3b8146105ba5780631e4c1524146105dc5780631ff18069146105fc578063219f22d51461061157806328087028146106265780632a0ffb6e1461063b57610502565b806304c4fec61461050757806307a568471461051e5780630bee7a67146105495780630e2374a51461056b5780631182b8751461058d57610502565b3661050257005b600080fd5b34801561051357600080fd5b5061051c610dc5565b005b34801561052a57600080fd5b50610533610e37565b6040516105409190618ee4565b60405180910390f35b34801561055557600080fd5b5061055e610e3d565b6040516105409190618f0e565b34801561057757600080fd5b50610580610e42565b60405161054091906181f7565b34801561059957600080fd5b506105ad6105a83660046180dd565b610e48565b604051610540919061838a565b3480156105c657600080fd5b506105cf611165565b604051610540919061837f565b3480156105e857600080fd5b5061051c6105f7366004617eeb565b61116e565b34801561060857600080fd5b50610533611844565b34801561061d57600080fd5b5061055e61184a565b34801561063257600080fd5b5061058061184f565b34801561064757600080fd5b5061051c610656366004617e4b565b611855565b34801561066757600080fd5b5061051c610676366004617e83565b611902565b34801561068757600080fd5b506105cf61069636600461808a565b611c4b565b3480156106a757600080fd5b506105cf6106b636600461808a565b611d1a565b3480156106c757600080fd5b5061051c6106d6366004617e4b565b611dcb565b3480156106e757600080fd5b506106f0611f30565b604051610540929190618295565b34801561070a57600080fd5b5061071361220c565b6040516105409190618f1f565b34801561072c57600080fd5b50610580612211565b34801561074157600080fd5b50610533612217565b34801561075657600080fd5b5061075f61221d565b6040516105409190618ed5565b34801561077857600080fd5b50610713612222565b34801561078d57600080fd5b506106f0612227565b3480156107a257600080fd5b506105336123b3565b3480156107b757600080fd5b506105806123b9565b3480156107cc57600080fd5b506105806123bf565b3480156107e157600080fd5b506105cf6107f0366004617e4b565b6123c5565b34801561080157600080fd5b50610533610810366004617e4b565b6123fa565b34801561082157600080fd5b5061071361244b565b34801561083657600080fd5b5061055e612450565b34801561084b57600080fd5b50610533612455565b34801561086057600080fd5b506105ad61086f36600461808a565b61245b565b34801561088057600080fd5b50610533612501565b34801561089557600080fd5b506108a96108a436600461808a565b612507565b60405161054096959493929190618224565b3480156108c757600080fd5b5061058061256b565b3480156108dc57600080fd5b50610713612571565b3480156108f157600080fd5b50610713612576565b34801561090657600080fd5b5061058061257b565b34801561091b57600080fd5b50610533612581565b34801561093057600080fd5b50610713612587565b34801561094557600080fd5b5061053361258c565b34801561095a57600080fd5b50610580612592565b34801561096f57600080fd5b5061055e612598565b34801561098457600080fd5b5061053361259d565b34801561099957600080fd5b5061051c6109a83660046180dd565b6125a3565b3480156109b957600080fd5b50610533612604565b3480156109ce57600080fd5b5061053361260a565b3480156109e357600080fd5b506105cf612610565b3480156109f857600080fd5b50610533612619565b348015610a0d57600080fd5b50610533610a1c366004617e4b565b61261f565b348015610a2d57600080fd5b5061051c61265f565b348015610a4257600080fd5b50610713612773565b348015610a5757600080fd5b50610580612778565b348015610a6c57600080fd5b5061053361277e565b348015610a8157600080fd5b50610533612783565b348015610a9657600080fd5b50610580612788565b348015610aab57600080fd5b506105ad61278e565b348015610ac057600080fd5b506105cf6127ad565b348015610ad557600080fd5b506105806127b6565b348015610aea57600080fd5b506105806127bc565b348015610aff57600080fd5b506105336127c2565b348015610b1457600080fd5b5061055e61244b565b348015610b2957600080fd5b5061051c610b3836600461802e565b6127cb565b348015610b4957600080fd5b50610533610b58366004617e4b565b613084565b348015610b6957600080fd5b50610533613096565b348015610b7e57600080fd5b50610b876130a3565b6040516105409190618282565b348015610ba057600080fd5b5061053361318f565b348015610bb557600080fd5b50610533613194565b348015610bca57600080fd5b50610533612571565b348015610bdf57600080fd5b5061058061319a565b348015610bf457600080fd5b506105ad610c0336600461808a565b6131a0565b348015610c1457600080fd5b506105336131ad565b348015610c2957600080fd5b506105336131ec565b348015610c3e57600080fd5b506105336131f8565b348015610c5357600080fd5b506105806131fe565b348015610c6857600080fd5b50610580613204565b348015610c7d57600080fd5b50610533610e3d565b348015610c9257600080fd5b5061051c61320a565b348015610ca757600080fd5b506105336133b9565b348015610cbc57600080fd5b506105cf610ccb366004617fef565b6133bf565b348015610cdc57600080fd5b5061051c610ceb366004617e4b565b613545565b348015610cfc57600080fd5b5061055e613649565b348015610d1157600080fd5b5061071361364e565b61051c610d28366004617e4b565b613653565b348015610d3957600080fd5b506105336139d2565b348015610d4e57600080fd5b506105806139d8565b348015610d6357600080fd5b5061071361277e565b348015610d7857600080fd5b506105806139de565b348015610d8d57600080fd5b50610da1610d9c36600461808a565b6139e4565b60405161054093929190618eed565b348015610dbc57600080fd5b50610580613aa6565b6000610dd03361261f565b9050600b8181548110610ddf57fe5b600091825260209091206001601690920201015460ff16610e1b5760405162461bcd60e51b8152600401610e1290618af0565b60405180910390fd5b6000610e256131ad565b9050610e32338383613aac565b505050565b60095481565b606481565b61200181565b60005460609060ff16610e6d5760405162461bcd60e51b8152600401610e12906185b1565b3361200014610e8e5760405162461bcd60e51b8152600401610e1290618cf1565b600b54610f4c57610e9d6179f7565b60015460005b81811015610f4857600b8054600181018255600091909152835160008051602061919c83398151915260169092029182019081556020808601516000805160206191dc8339815191528401805460ff1916911515919091179055604086015180518794610f24936000805160206191bc833981519152909101920190617a26565b506060820151610f3a9060038301906013617aa0565b505050806001019050610ea3565b5050505b610f54617acd565b6000610f9585858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250613d7d92505050565b9150915080610fb157610fa86064613f39565b9250505061115e565b815160009060ff16610fd657610fcf83602001518460400151613f9a565b905061112a565b825160ff16600114156111265782602001515160011461101b5760008051602061917c83398151915260405161100b906189a9565b60405180910390a1506067611121565b6000836020015160008151811061102e57fe5b602090810291909101810151516001600160a01b0381166000908152600490925260409091205490915080158061108f575060018082038154811061106f57fe5b9060005260206000209060040201600201601c9054906101000a900460ff165b156110cd576040516001600160a01b038316907fe209c46bebf57cf265d5d9009a00870e256d9150f3ed5281ab9d9eb3cec6e4be90600090a261111a565b60006110dc836001840361515c565b905080611118576040516001600160a01b038416907fe209c46bebf57cf265d5d9009a00870e256d9150f3ed5281ab9d9eb3cec6e4be90600090a25b505b6000925050505b61112a565b5060655b63ffffffff811661114f575050604080516000815260208101909152915061115e9050565b61115881613f39565b93505050505b9392505050565b60075460ff1681565b33411461118d5760405162461bcd60e51b8152600401610e1290618d40565b3a156111ab5760405162461bcd60e51b8152600401610e1290618a2f565b82516040805182815260208084028201019091526060908280156111e957816020015b6111d6617af1565b8152602001906001900390816111ce5790505b50905060005b82811015611293576040518060c0016040528087838151811061120e57fe5b60200260200101516001600160a01b0316815260200160006001600160a01b0316815260200160006001600160a01b0316815260200186838151811061125057fe5b60200260200101516001600160401b03168152602001600015158152602001600081525082828151811061128057fe5b60209081029190910101526001016111ef565b5060405163d31f968d60e01b81526120009063d31f968d906112be9061100090600890600401618266565b60206040518083038186803b1580156112d657600080fd5b505afa1580156112ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061130e9190617fcf565b15611631578051601554818111156113b057815b818110156113ae57601580548061133557fe5b60008281526020812060046000199093019283020180546001600160a01b0319908116825560018201805490911690556002810180546001600160e81b0319169055600301559055601680548061138857fe5b6001900381819060005260206000200160006113a49190617b26565b9055600101611322565b505b60005b828110156115f0578181106114d85760158482815181106113d057fe5b602090810291909101810151825460018181018555600094855293839020825160049092020180546001600160a01b039283166001600160a01b0319918216178255938301519481018054958316958516959095179094556040820151600285018054606085015160808601511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b199590961692909716919091179290921692909217169290921790915560a0015160039091015585516016908790839081106114a057fe5b602090810291909101810151825460018101845560009384529282902081516114d29491909101929190910190617a26565b506115e8565b8381815181106114e457fe5b6020026020010151601582815481106114f957fe5b6000918252602091829020835160049092020180546001600160a01b039283166001600160a01b0319918216178255928401516001820180549184169185169190911790556040840151600282018054606087015160808801511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b1995909716929097169190911792909216939093171692909217905560a09091015160039091015585518690829081106115b457fe5b6020026020010151601682815481106115c957fe5b9060005260206000200190805190602001906115e6929190617a26565b505b6001016113b3565b507fb8e726330a0dad1cf3d04e925663b17e391f1ed547d79b7f4e5f344119b44246826040516116209190618ee4565b60405180910390a150505050610e32565b60608061163e838661551f565b9150915060005b6001548110156117345760006001828154811061165e57fe5b90600052602060002090600402016003015490508060001461172b5760006001838154811061168957fe5b9060005260206000209060040201600301819055506120026001600160a01b031663092193ab82600185815481106116bd57fe5b60009182526020909120600491820201546040516001600160e01b031960e086901b1681526116f8926001600160a01b0390921691016181f7565b6000604051808303818588803b15801561171157600080fd5b505af1158015611725573d6000803e3d6000fd5b50505050505b50600101611645565b5047156117a2577f6ecc855f9440a9282c90913bbc91619fd44f5ec0b462af28d127b116f130aa4d4760405161176a9190618ee4565b60405180910390a1604051611002904780156108fc02916000818181858888f193505050501580156117a0573d6000803e3d6000fd5b505b600060038190556005558151156117bd576117bd8282615a06565b6110016001600160a01b031663fc4333cd6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156117fa57600080fd5b505af115801561180e573d6000803e3d6000fd5b50506040517fedd8d7296956dd970ab4de3f2fc03be2b0ffc615d20cd4c72c6e44f928630ebf925060009150a150505050505050565b60035481565b606881565b61200581565b33612002146118765760405162461bcd60e51b8152600401610e1290618e9e565b60005b6015548110156118fe57816001600160a01b03166015828154811061189a57fe5b60009182526020909120600490910201546001600160a01b031614156118f6576001601582815481106118c957fe5b9060005260206000209060040201600201601c6101000a81548160ff0219169083151502179055506118fe565b600101611879565b5050565b3341146119215760405162461bcd60e51b8152600401610e1290618d40565b60105443116119425760405162461bcd60e51b8152600401610e1290618744565b3a156119605760405162461bcd60e51b8152600401610e1290618a2f565b60005460ff166119825760405162461bcd60e51b8152600401610e12906185b1565b60006110023168056bc75e2d631000008111156119b9576119b28168056bc75e2d6310000063ffffffff6161f516565b91506119c0565b5050611c41565b6040516309a99b4f60e41b815261100290639a99b4f0906119e7903090869060040161820b565b602060405180830381600087803b158015611a0157600080fd5b505af1158015611a15573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a3991906180a2565b915081611a47575050611c41565b6000805b84811015611a7557858582818110611a5f57fe5b9050602002013582019150806001019050611a4b565b5080611a8357505050611c41565b6000806000805b89811015611c395784898983818110611a9f57fe5b90506020020135880281611aaf57fe5b0493508a8a82818110611abe57fe5b9050602002016020810190611ad39190617e4b565b6001600160a01b03811660009081526004602052604090205490935091508115611bef576000600180840381548110611b0857fe5b9060005260206000209060040201905080600201601c9054906101000a900460ff1615611b7557836001600160a01b03167fb9c75cbbfde137c4281689580799ef5f52144e78858f776a5979b2b212137d8586604051611b689190618ee4565b60405180910390a2611be9565b600354611b88908663ffffffff61623716565b6003908155810154611ba0908663ffffffff61623716565b60038201556040516001600160a01b038516907fcb0aad6cf9cd03bdf6137e359f541c42f38b39f007cae8e89e88aa7d8c6617b290611be0908890618ee4565b60405180910390a25b50611c31565b826001600160a01b03167fb9c75cbbfde137c4281689580799ef5f52144e78858f776a5979b2b212137d8585604051611c289190618ee4565b60405180910390a25b600101611a8a565b505050505050505b5050436010555050565b6001546000908210611c5f57506000611d15565b60006001600160a01b031660018381548110611c7757fe5b60009182526020909120600490910201546001600160a01b03161480611ca757506008541580611ca75750600a54155b80611cb6575060085460095410155b80611cc75750611cc582611d1a565b155b80611cf057506000600b8381548110611cdc57fe5b906000526020600020906016020160000154115b80611d0457506001611d006130a3565b5111155b15611d1157506000611d15565b5060015b919050565b6001546000908210611d2e57506000611d15565b600b548210611d6b5760018281548110611d4457fe5b9060005260206000209060040201600201601c9054906101000a900460ff16159050611d15565b60018281548110611d7857fe5b9060005260206000209060040201600201601c9054906101000a900460ff16158015611dc55750600b8281548110611dac57fe5b600091825260209091206001601690920201015460ff16155b92915050565b600b54611e8957611dda6179f7565b60015460005b81811015611e8557600b8054600181018255600091909152835160008051602061919c83398151915260169092029182019081556020808601516000805160206191dc8339815191528401805460ff1916911515919091179055604086015180518794611e61936000805160206191bc833981519152909101920190617a26565b506060820151611e779060038301906013617aa0565b505050806001019050611de0565b5050505b336110011480611e9a575033612002145b611eb65760405162461bcd60e51b8152600401610e12906185e8565b6001600160a01b03811660009081526004602052604090205480611eda5750611f2d565b6001810390506000600b8281548110611eef57fe5b600091825260209091206001601690920201015460ff169050611f12838361515c565b8015611f1b5750805b15610e32576009805460001901905550505b50565b60015460609081906000805b82811015611f835760018181548110611f5157fe5b9060005260206000209060040201600201601c9054906101000a900460ff16611f7b576001909101905b600101611f3c565b50606081604051908082528060200260200182016040528015611fb0578160200160208202803683370190505b509050606082604051908082528060200260200182016040528015611fe957816020015b6060815260200190600190039081611fd45790505b50600b54600094509091508414156121645760005b8481101561215e576001818154811061201357fe5b9060005260206000209060040201600201601c9054906101000a900460ff16612156576001818154811061204357fe5b600091825260209091206004909102015483516001600160a01b039091169084908690811061206e57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050600b818154811061209b57fe5b600091825260209182902060026016909202018101805460408051601f6000196101006001861615020190931694909404918201859004850284018501905280835291929091908301828280156121335780601f1061210857610100808354040283529160200191612133565b820191906000526020600020905b81548152906001019060200180831161211657829003601f168201915b505050505082858151811061214457fe5b60209081029190910101526001909301925b600101611ffe565b50612200565b60005b848110156121fe576001818154811061217c57fe5b9060005260206000209060040201600201601c9054906101000a900460ff166121f657600181815481106121ac57fe5b600091825260209091206004909102015483516001600160a01b03909116908490869081106121d757fe5b6001600160a01b03909216602092830291909101909101526001909301925b600101612167565b505b909450925050505b9091565b600181565b61100181565b60085481565b606181565b600881565b6060806000600e549050600080600c5411612243576015612247565b600c545b905060606122536130a3565b905060606122608261625c565b905082825111612277579094509250612208915050565b83838351031015612289578282510393505b83156122bf5760c843046122a583838388880360008a8a6163ca565b6122bd8383838888038989038a8b8b8b5103016163ca565b505b6060836040519080825280602002602001820160405280156122eb578160200160208202803683370190505b50905060608460405190808252806020026020018201604052801561232457816020015b606081526020019060019003908161230f5790505b50905060005b858110156123a55784818151811061233e57fe5b602002602001015183828151811061235257fe5b60200260200101906001600160a01b031690816001600160a01b03168152505083818151811061237e57fe5b602002602001015182828151811061239257fe5b602090810291909101015260010161232a565b509096509450505050509091565b60065481565b61200681565b61200081565b6001600160a01b038116600090815260046020526040812054806123ed576000915050611d15565b6000190161115e81611d1a565b6001600160a01b03811660009081526004602052604081205480612422576000915050611d15565b60018082038154811061243157fe5b906000526020600020906004020160030154915050919050565b600081565b606781565b600f5481565b6012818154811061246857fe5b600091825260209182902001805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152935090918301828280156124f95780601f106124ce576101008083540402835291602001916124f9565b820191906000526020600020905b8154815290600101906020018083116124dc57829003601f168201915b505050505081565b60105481565b6001818154811061251457fe5b600091825260209091206004909102018054600182015460028301546003909301546001600160a01b0392831694509082169291821691600160a01b81046001600160401b031691600160e01b90910460ff169086565b61100581565b600281565b601081565b61100881565b6103e881565b600b81565b600c5481565b61200381565b606681565b61271081565b33612000146125c45760405162461bcd60e51b8152600401610e1290618cf1565b7f41ce201247b6ceb957dcdb217d0b8acb50b9ea0e12af9af4f5e7f389021016058383836040516125f793929190618f2d565b60405180910390a1505050565b60025481565b60115481565b60145460ff1681565b600a5481565b6001600160a01b038116600090815260046020526040812054806126555760405162461bcd60e51b8152600401610e1290618c79565b6000190192915050565b600b5461271d5761266e6179f7565b60015460005b8181101561271957600b8054600181018255600091909152835160008051602061919c83398151915260169092029182019081556020808601516000805160206191dc8339815191528401805460ff19169115159190911790556040860151805187946126f5936000805160206191bc833981519152909101920190617a26565b50606082015161270b9060038301906013617aa0565b505050806001019050612674565b5050505b60085461272a5760036008555b600a54612737576002600a555b60006127423361261f565b905061274d81611c4b565b6127695760405162461bcd60e51b8152600401610e1290618966565b611f2d3382616521565b600981565b61100781565b600381565b60c881565b61100681565b604051806101e001604052806101ab8152602001618fd16101ab913981565b60005460ff1681565b61200281565b61300081565b6402540be40081565b60005460ff166127ed5760405162461bcd60e51b8152600401610e12906185b1565b336110071461280e5760405162461bcd60e51b8152600401610e1290618a5d565b61287884848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080518082019091526013815272065787069726554696d655365636f6e6447617606c1b602082015291506165b99050565b15612915576020811461289d5760405162461bcd60e51b8152600401610e1290618c33565b604080516020601f84018190048102820181019092528281526000916128db9185858083850183828082843760009201919091525061661292505050565b9050606481101580156128f15750620186a08111155b61290d5760405162461bcd60e51b8152600401610e1290618856565b600255613041565b61297584848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260098152686275726e526174696f60b81b602082015291506165b99050565b15612a18576020811461299a5760405162461bcd60e51b8152600401610e12906183cf565b604080516020601f84018190048102820181019092528281526000916129d89185858083850183828082843760009201919091525061661292505050565b90506127106129f2600f548361623790919063ffffffff16565b1115612a105760405162461bcd60e51b8152600401610e1290618406565b600655613041565b612a8284848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260138152726d61784e756d4f664d61696e7461696e696e6760681b602082015291506165b99050565b15612b1c5760208114612aa75760405162461bcd60e51b8152600401610e129061846e565b604080516020601f8401819004810282018101909252828152600091612ae59185858083850183828082843760009201919091525061661292505050565b600c5490915080612af4575060155b808210612b135760405162461bcd60e51b8152600401610e12906187ae565b50600855613041565b612b8584848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260128152716d61696e7461696e536c6173685363616c6560701b602082015291506165b99050565b15612c1e5760208114612baa5760405162461bcd60e51b8152600401610e1290618537565b604080516020601f8401819004810282018101909252828152600091612be89185858083850183828082843760009201919091525061661292505050565b9050600081118015612bfa5750600a81105b612c165760405162461bcd60e51b8152600401610e1290618dd1565b600a55613041565b612c9284848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601981527f6d61784e756d4f66576f726b696e6743616e6469646174657300000000000000602082015291506165b99050565b15612d215760208114612cb75760405162461bcd60e51b8152600401610e12906184eb565b604080516020601f8401819004810282018101909252828152600091612cf59185858083850183828082843760009201919091525061661292505050565b9050600d54811115612d195760405162461bcd60e51b8152600401610e12906188cc565b600e55613041565b612d8a84848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260128152716d61784e756d4f6643616e6469646174657360701b602082015291506165b99050565b15612e0c5760208114612daf5760405162461bcd60e51b8152600401610e1290618aab565b604080516020601f8401819004810282018101909252828152600091612ded9185858083850183828082843760009201919091525061661292505050565b600d819055600e54909150811015612e0657600d54600e555b50613041565b612e7084848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600d81526c6e756d4f66436162696e65747360981b602082015291506165b99050565b15612f1e5760208114612e955760405162461bcd60e51b8152600401610e129061857c565b604080516020601f8401819004810282018101909252828152600091612ed39185858083850183828082843760009201919091525061661292505050565b905060008111612ef55760405162461bcd60e51b8152600401610e1290618656565b6064811115612f165760405162461bcd60e51b8152600401610e129061869e565b600c55613041565b612f8684848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601181527073797374656d526577617264526174696f60781b602082015291506165b99050565b156130295760208114612fab5760405162461bcd60e51b8152600401610e1290618d8d565b604080516020601f8401819004810282018101909252828152600091612fe99185858083850183828082843760009201919091525061661292505050565b90506127106130036006548361623790919063ffffffff16565b11156130215760405162461bcd60e51b8152600401610e1290618b94565b600f55613041565b60405162461bcd60e51b8152600401610e1290618e2e565b7f6cdb0ac70ab7f2e2d035cca5be60d89906f2dede7648ddbd7402189c1eeed17a84848484604051613076949392919061839d565b60405180910390a150505050565b60046020526000908152604090205481565b68056bc75e2d6310000081565b6001546060906000805b828110156130d2576130be81611d1a565b156130ca578160010191505b6001016130ad565b506060816040519080825280602002602001820160405280156130ff578160200160208202803683370190505b5090506000915060005b838110156131865761311a81611d1a565b1561317e576001818154811061312c57fe5b600091825260209091206004909102015482516001600160a01b039091169083908590811061315757fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508260010192505b600101613109565b50925050505b90565b601581565b61027181565b61100281565b6013818154811061246857fe5b60006131b76130a3565b519050600080600c54116131cc5760156131d0565b600c545b9050808211156131de578091505b816131e857600191505b5090565b67016345785d8a000081565b60055481565b61100381565b61200481565b60005460ff161561322d5760405162461bcd60e51b8152600401610e1290618b5d565b613235617acd565b600061325b604051806101e001604052806101ab8152602001618fd16101ab9139613d7d565b915091508061327c5760405162461bcd60e51b8152600401610e1290618cb0565b60005b8260200151518110156133a15760018360200151828151811061329e57fe5b60209081029190910181015182546001818101855560009485528385208351600493840290910180546001600160a01b039283166001600160a01b03199182161782558587015182850180549185169183169190911790556040860151600283018054606089015160808a01511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b199590981692909516919091179290921694909417161790915560a09093015160039093019290925591860151805191850193918590811061337457fe5b602090810291909101810151516001600160a01b031682528101919091526040016000205560010161327f565b50506103e8600255506000805460ff19166001179055565b600d5481565b601354600090815b818110156134c8576134b085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060138054909250859150811061341857fe5b600091825260209182902001805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156134a65780601f1061347b576101008083540402835291602001916134a6565b820191906000526020600020905b81548152906001019060200180831161348957829003601f168201915b5050505050616617565b156134c057600192505050611dc5565b6001016133c7565b5060125460005b818110156135395761352086868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060128054909250859150811061341857fe5b156135315760019350505050611dc5565b6001016134cf565b50600095945050505050565b33611001146135665760405162461bcd60e51b8152600401610e1290618e55565b600b54613624576135756179f7565b60015460005b8181101561362057600b8054600181018255600091909152835160008051602061919c83398151915260169092029182019081556020808601516000805160206191dc8339815191528401805460ff19169115159190911790556040860151805187946135fc936000805160206191bc833981519152909101920190617a26565b5060608201516136129060038301906013617aa0565b50505080600101905061357b565b5050505b600061362f8261667b565b905061363a81611c4b565b156118fe576118fe8282616521565b606581565b601181565b3341146136725760405162461bcd60e51b8152600401610e1290618d40565b60005460ff166136945760405162461bcd60e51b8152600401610e12906185b1565b600034116136b45760405162461bcd60e51b8152600401610e129061889d565b3a156136d25760405162461bcd60e51b8152600401610e1290618a2f565b6001600160a01b03811660009081526004602052604090205460145434919060ff1661371257610271600f556103e86006556014805460ff191660011790555b60008211801561372457506000600f54115b156137d6576000613752612710613746600f54346167fe90919063ffffffff16565b9063ffffffff61683816565b905080156137d4576040516110029082156108fc029083906000818181858888f19350505050158015613789573d6000803e3d6000fd5b507f6ecc855f9440a9282c90913bbc91619fd44f5ec0b462af28d127b116f130aa4d816040516137b99190618ee4565b60405180910390a16137d1838263ffffffff6161f516565b92505b505b6000821180156137e857506000600654115b1561388e57600061380a612710613746600654346167fe90919063ffffffff16565b9050801561388c5760405161dead9082156108fc029083906000818181858888f19350505050158015613841573d6000803e3d6000fd5b507f627059660ea01c4733a328effb2294d2f86905bf806da763a89cee254de8bee5816040516138719190618ee4565b60405180910390a1613889838263ffffffff6161f516565b92505b505b801561398c5760006001808303815481106138a557fe5b9060005260206000209060040201905080600201601c9054906101000a900460ff161561391257836001600160a01b03167ff177e5d6c5764d79c32883ed824111d9b13f5668cf6ab1cc12dd36791dd955b4846040516139059190618ee4565b60405180910390a2613986565b600354613925908463ffffffff61623716565b600390815581015461393d908463ffffffff61623716565b60038201556040516001600160a01b038516907f93a090ecc682c002995fad3c85b30c5651d7fd29b0be5da9d784a3302aedc0559061397d908690618ee4565b60405180910390a25b50610e32565b826001600160a01b03167ff177e5d6c5764d79c32883ed824111d9b13f5668cf6ab1cc12dd36791dd955b4836040516139c59190618ee4565b60405180910390a2505050565b600e5481565b61100081565b61dead81565b600b81815481106139f157fe5b6000918252602091829020601691909102018054600180830154600280850180546040805161010096831615969096026000190190911692909204601f810188900488028501880190925281845293965060ff90911694919291830182828015613a9c5780601f10613a7157610100808354040283529160200191613a9c565b820191906000526020600020905b815481529060010190602001808311613a7f57829003601f168201915b5050505050905083565b61100481565b6000600a5460001480613abd575081155b80613ac85750600954155b15613ad55750600061115e565b60096000815460019003919050819055506000613b20600a5461374685613746600b8981548110613b0257fe5b6000918252602090912060169091020154439063ffffffff6161f516565b90506000600b8581548110613b3157fe5b906000526020600020906016020160010160006101000a81548160ff0219169083151502179055506000806110016001600160a01b0316638256ace66040518163ffffffff1660e01b8152600401604080518083038186803b158015613b9657600080fd5b505afa158015613baa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613bce91906180ba565b9150915060009350808310613d2d57613be7878761515c565b5060405163436aa28360e11b8152600090612002906386d5450690613c10908b906004016181f7565b60206040518083038186803b158015613c2857600080fd5b505afa158015613c3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c609190617e67565b6001600160a01b031614613ccc576040516313d13bdb60e31b815261100190639e89ded890613c95908a90879060040161820b565b600060405180830381600087803b158015613caf57600080fd5b505af1158015613cc3573d6000803e3d6000fd5b50505050613d24565b6040516305bfb49960e41b815261100190635bfb499090613cf1908a906004016181f7565b600060405180830381600087803b158015613d0b57600080fd5b505af1158015613d1f573d6000803e3d6000fd5b505050505b60019350613d3f565b818310613d3f57613d3d8761667b565b505b6040516001600160a01b038816907fb9d38178dc641ff1817967a63c9078cbcd955a9f1fcd75e0e3636de615d44d3b90600090a25050509392505050565b613d85617acd565b6000613d8f617acd565b613d97617b6a565b613da8613da38661687a565b61689f565b90506000805b613db7836168e9565b15613f2b5780613ddc57613dd2613dcd8461690a565b616958565b60ff168452613f23565b8060011415613f1e576060613df8613df38561690a565b6169d8565b90508051604051908082528060200260200182016040528015613e3557816020015b613e22617af1565b815260200190600190039081613e1a5790505b5085602001819052508051604051908082528060200260200182016040528015613e7357816020015b6060815260200190600190039081613e5e5790505b50604086015260005b8151811015613f1357613e8d617af1565b60606000613ead858581518110613ea057fe5b6020026020010151616aa9565b92509250925080613ecd578860009a509a50505050505050505050613f34565b8289602001518581518110613ede57fe5b60200260200101819052508189604001518581518110613efa57fe5b6020026020010181905250505050806001019050613e7c565b506001925050613f23565b613f2b565b600101613dae565b50919350909150505b915091565b604080516001808252818301909252606091829190816020015b6060815260200190600190039081613f53579050509050613f798363ffffffff16616bc3565b81600081518110613f8657fe5b602002602001018190525061115e81616bd6565b6000606483511115613fd15760008051602061917c833981519152604051613fc1906186fb565b60405180910390a1506066611dc5565b60005b835181101561406f5760005b8181101561406657848181518110613ff457fe5b6020026020010151600001516001600160a01b031685838151811061401557fe5b6020026020010151600001516001600160a01b0316141561405e5760008051602061917c83398151915260405161404b9061880b565b60405180910390a1606692505050611dc5565b600101613fe0565b50600101613fd4565b5060608060606015805480602002602001604051908101604052809291908181526020016000905b828210156141215760008481526020908190206040805160c0810182526004860290920180546001600160a01b039081168452600180830154821685870152600283015491821693850193909352600160a01b81046001600160401b03166060850152600160e01b900460ff16151560808401526003015460a08301529083529092019101614097565b50505050905060606016805480602002602001604051908101604052809291908181526020016000905b828210156141f65760008481526020908190208301805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156141e25780601f106141b7576101008083540402835291602001916141e2565b820191906000526020600020905b8154815290600101906020018083116141c557829003601f168201915b50505050508152602001906001019061414b565b50505050905060005b82518110156142535782818151811061421457fe5b60200260200101516060015160030283828151811061422f57fe5b60209081029190910101516001600160401b039091166060909101526001016141ff565b5060608061426389898686616c60565b91509150614271828261551f565b600154604080518281526020808402820101909152929850909650600095508594509250606091508280156142b0578160200160208202803683370190505b50905060005b828110156144415760006001600160a01b03166120026001600160a01b03166386d54506600184815481106142e757fe5b60009182526020909120600491820201546040516001600160e01b031960e085901b168152614322926001600160a01b0390921691016181f7565b60206040518083038186803b15801561433a57600080fd5b505afa15801561434e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143729190617e67565b6001600160a01b0316146143d457600182828151811061438e57fe5b602002602001019060ff16908160ff1681525050600181815481106143af57fe5b9060005260206000209060040201600301546000146143cf578360010193505b614439565b67016345785d8a0000600182815481106143ea57fe5b9060005260206000209060040201600301541061440c57846001019450614439565b6001818154811061441957fe5b906000526020600020906004020160030154600014614439578360010193505b6001016142b6565b5060608460405190808252806020026020018201604052801561446e578160200160208202803683370190505b50905060608560405190808252806020026020018201604052801561449d578160200160208202803683370190505b5090506060866040519080825280602002602001820160405280156144cc578160200160208202803683370190505b5090506060876040519080825280602002602001820160405280156144fb578160200160208202803683370190505b509050600060608860405190808252806020026020018201604052801561452c578160200160208202803683370190505b50905060608960405190808252806020026020018201604052801561455b578160200160208202803683370190505b50905060009a506000995060006110046001600160a01b031663149d14d96040518163ffffffff1660e01b815260040160206040518083038186803b1580156145a357600080fd5b505afa1580156145b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906145db91906180a2565b905067016345785d8a00008111156146275760008051602061917c83398151915260405161460890618b1c565b60405180910390a160689e505050505050505050505050505050611dc5565b60005b8a8110156149bb5789818151811061463e57fe5b602002602001015160ff1660011415614734576001818154811061465e57fe5b90600052602060002090600402016003015460001461472f576001818154811061468457fe5b600091825260209091206004909102015484516001600160a01b039091169085908e9081106146af57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050600181815481106146dc57fe5b906000526020600020906004020160030154838d815181106146fa57fe5b60200260200101818152505060018a8d8151811061471457fe5b602002602001019060ff16908160ff16815250508b6001019b505b6149b3565b67016345785d8a00006001828154811061474a57fe5b906000526020600020906004020160030154106148cf576001818154811061476e57fe5b906000526020600020906004020160020160009054906101000a90046001600160a01b0316898e8151811061479f57fe5b60200260200101906001600160a01b031690816001600160a01b03168152505060006402540be400600183815481106147d457fe5b906000526020600020906004020160030154816147ed57fe5b06600183815481106147fb57fe5b90600052602060002090600402016003015403905061482383826161f590919063ffffffff16565b898f8151811061482f57fe5b6020026020010181815250506001828154811061484857fe5b906000526020600020906004020160010160009054906101000a90046001600160a01b0316878f8151811061487957fe5b60200260200101906001600160a01b031690816001600160a01b03168152505081888f815181106148a657fe5b60209081029190910101526148c1868263ffffffff61623716565b95508d6001019d50506149b3565b600181815481106148dc57fe5b9060005260206000209060040201600301546000146149b3576001818154811061490257fe5b906000526020600020906004020160010160009054906101000a90046001600160a01b0316848d8151811061493357fe5b60200260200101906001600160a01b031690816001600160a01b0316815250506001818154811061496057fe5b906000526020600020906004020160030154838d8151811061497e57fe5b60200260200101818152505060008a8d8151811061499857fe5b602002602001019060ff16908160ff16815250508b6001019b505b60010161462a565b5060008415614c31576002546040516303702b2960e51b815261100491636e0565209188916149f5918e918e918d91420190600401618305565b6020604051808303818588803b158015614a0e57600080fd5b505af193505050508015614a3f575060408051601f3d908101601f19168201909252614a3c91810190617fcf565b60015b614bb6576040516000815260443d1015614a5b57506000614af6565b60046000803e60005160e01c6308c379a08114614a7c576000915050614af6565b60043d036004833e81513d60248201116001600160401b0382111715614aa757600092505050614af6565b80830180516001600160401b03811115614ac8576000945050505050614af6565b8060208301013d8601811115614ae657600095505050505050614af6565b601f01601f191660405250925050505b80614b015750614b43565b60019150857fa7cdeed7d0db45e3219a6e5d60838824c16f1d39991fcfe3f963029c844bf28082604051614b35919061838a565b60405180910390a250614bb1565b3d808015614b6d576040519150601f19603f3d011682016040523d82523d6000602084013e614b72565b606091505b5060019150857fbfa884552dd8921b6ce90bfe906952ae5b3b29be0cc1a951d4f62697635a3a4582604051614ba7919061838a565b60405180910390a2505b614c31565b8015614bf8577fa217d08e65f80c73121cd9db834d81652d544bfbf452f6d04922b16c90a37b7086604051614beb9190618ee4565b60405180910390a1614c2f565b857fa7cdeed7d0db45e3219a6e5d60838824c16f1d39991fcfe3f963029c844bf280604051614c26906184b4565b60405180910390a25b505b8015614de75760005b8751811015614de5576000888281518110614c5157fe5b60200260200101519050600060018281548110614c6a57fe5b60009182526020909120600160049092020181015481546001600160a01b03909116916108fc9185908110614c9b57fe5b9060005260206000209060040201600301549081150290604051600060405180830381858888f1935050505090508015614d575760018281548110614cdc57fe5b60009182526020909120600160049092020181015481546001600160a01b03909116917f6c61d60f69a7beb3e1c80db7f39f37b208537cbb19da3174511b477812b2fc7d9185908110614d2b57fe5b906000526020600020906004020160030154604051614d4a9190618ee4565b60405180910390a2614ddb565b60018281548110614d6457fe5b60009182526020909120600160049092020181015481546001600160a01b03909116917f25d0ce7d2f0cec669a8c17efe49d195c13455bb8872b65fa610ac7f53fe4ca7d9185908110614db357fe5b906000526020600020906004020160030154604051614dd29190618ee4565b60405180910390a25b5050600101614c3a565b505b835115614fdd5760005b8451811015614fdb578a8181518110614e0657fe5b602002602001015160ff1660011415614ea5576120026001600160a01b031663092193ab858381518110614e3657fe5b6020026020010151878481518110614e4a57fe5b60200260200101516040518363ffffffff1660e01b8152600401614e6e91906181f7565b6000604051808303818588803b158015614e8757600080fd5b505af1158015614e9b573d6000803e3d6000fd5b5050505050614fd3565b6000858281518110614eb357fe5b60200260200101516001600160a01b03166108fc868481518110614ed357fe5b60200260200101519081150290604051600060405180830381858888f1935050505090508015614f6957858281518110614f0957fe5b60200260200101516001600160a01b03167f6c61d60f69a7beb3e1c80db7f39f37b208537cbb19da3174511b477812b2fc7d868481518110614f4757fe5b6020026020010151604051614f5c9190618ee4565b60405180910390a2614fd1565b858281518110614f7557fe5b60200260200101516001600160a01b03167f25d0ce7d2f0cec669a8c17efe49d195c13455bb8872b65fa610ac7f53fe4ca7d868481518110614fb357fe5b6020026020010151604051614fc89190618ee4565b60405180910390a25b505b600101614df1565b505b5050505050505050505050505060005b60015481101561504a576001818154811061500457fe5b9060005260206000209060040201600301546000146150425760006001828154811061502c57fe5b9060005260206000209060040201600301819055505b600101614fed565b5047156150b8577f6ecc855f9440a9282c90913bbc91619fd44f5ec0b462af28d127b116f130aa4d476040516150809190618ee4565b60405180910390a1604051611002904780156108fc02916000818181858888f193505050501580156150b6573d6000803e3d6000fd5b505b600060038190556005558151156150d3576150d38282615a06565b6110016001600160a01b031663fc4333cd6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561511057600080fd5b505af1158015615124573d6000803e3d6000fd5b50506040517fedd8d7296956dd970ab4de3f2fc03be2b0ffc615d20cd4c72c6e44f928630ebf925060009150a1506000949350505050565b6000806001838154811061516c57fe5b906000526020600020906004020160030154905060006001808054905003905060016151966130a3565b51116151cb576000600185815481106151ab57fe5b906000526020600020906004020160030181905550600092505050611dc5565b846001600160a01b03167f3b6f9ef90462b512a1293ecec018670bf7b7f1876fb727590a8a6d7643130a70836040516152049190618ee4565b60405180910390a26001600160a01b038516600090815260046020526040812055835b600154600019018110156153f1576001816001018154811061524557fe5b90600052602060002090600402016001828154811061526057fe5b60009182526020909120825460049092020180546001600160a01b03199081166001600160a01b0393841617825560018085015481840180548416918616919091179055600280860180549185018054909416919095161780835584546001600160401b03600160a01b91829004160267ffffffffffffffff60a01b1990911617808355935460ff600160e01b918290041615150260ff60e01b19909416939093179055600392830154920191909155600b80549091830190811061532157fe5b9060005260206000209060160201600b828154811061533c57fe5b600091825260209091208254601690920201908155600180830154818301805460ff909216151560ff1990921691909117905560028084018054615393938386019390821615610100026000190190911604617b8a565b506153a660038281019084016013617bff565b509050508060010160046000600184815481106153bf57fe5b600091825260208083206004909202909101546001600160a01b03168352820192909252604001902055600101615227565b5060018054806153fd57fe5b60008281526020812060046000199093019283020180546001600160a01b0319908116825560018201805490911690556002810180546001600160e81b0319169055600301559055600b80548061545057fe5b60008281526020812060166000199093019283020181815560018101805460ff19169055906154826002830182617b26565b615490600383016000617c29565b50509055600081838161549f57fe5b04905080156155135760015460005b81811015615510576154e783600183815481106154c757fe5b90600052602060002090600402016003015461623790919063ffffffff16565b600182815481106154f457fe5b60009182526020909120600360049092020101556001016154ae565b50505b50600195945050505050565b6060806000808080806155306131ad565b6001549091505b801561575f57600181039250600b838154811061555057fe5b600091825260209091206001601690920201015460ff1661557057615756565b6001838154811061557d57fe5b60009182526020909120600490910201546001600160a01b031694506155a4858484613aac565b9350836155b057615756565b60405163436aa28360e11b81526000908190612002906386d54506906155da908a906004016181f7565b60206040518083038186803b1580156155f257600080fd5b505afa158015615606573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061562a9190617e67565b90506001600160a01b038116156156b3576040516302ceee9160e11b81526120029063059ddd22906156609084906004016181f7565b60206040518083038186803b15801561567857600080fd5b505afa15801561568c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906156b09190617e67565b91505b60005b8c5181101561575257876001600160a01b03168d82815181106156d557fe5b6020026020010151600001516001600160a01b0316148061571e5750826001600160a01b03168d828151811061570757fe5b6020026020010151600001516001600160a01b0316145b1561574a5760018d828151811061573157fe5b6020908102919091010151901515608090910152615752565b6001016156b6565b5050505b60001901615537565b5060005b89518110156157cc5789818151811061577857fe5b602002602001015160800151806157b8575060006001600160a01b03168a82815181106157a157fe5b6020026020010151600001516001600160a01b0316145b156157c4578560010195505b600101615763565b50885185106158b45760408051600180825281830190925290816020015b6157f2617af1565b8152602001906001900390816157ea575050604080516001808252818301909252919850602082015b606081526020019060019003908161581b5790505095508860008151811061583f57fe5b60200260200101518760008151811061585457fe5b60200260200101819052508760008151811061586c57fe5b60200260200101518660008151811061588157fe5b602002602001018190525060008760008151811061589b57fe5b60209081029190910101519015156080909101526159f9565b848951036040519080825280602002602001820160405280156158f157816020015b6158de617af1565b8152602001906001900390816158d65790505b5096508489510360405190808252806020026020018201604052801561592b57816020015b60608152602001906001900390816159165790505b5095506000915060005b89518110156159f75789818151811061594a57fe5b60200260200101516080015115801561598d575060006001600160a01b03168a828151811061597557fe5b6020026020010151600001516001600160a01b031614155b156159ef5789818151811061599e57fe5b60200260200101518884815181106159b257fe5b60200260200101819052508881815181106159c957fe5b60200260200101518784815181106159dd57fe5b60200260200101819052508260010192505b600101615935565b505b50505050505b9250929050565b600154825160005b82811015615b23576001615a20617af1565b60018381548110615a2d57fe5b600091825260208083206040805160c08101825260049490940290910180546001600160a01b0390811685526001820154811693850193909352600281015492831691840191909152600160a01b82046001600160401b03166060840152600160e01b90910460ff16151560808301526003015460a082015291505b84811015615af757878181518110615abd57fe5b6020026020010151600001516001600160a01b031682600001516001600160a01b03161415615aef5760009250615af7565b600101615aa9565b508115615b195780516001600160a01b03166000908152600460205260408120555b5050600101615a0e565b5080821115615be257805b82811015615be0576001805480615b4157fe5b60008281526020812060046000199093019283020180546001600160a01b0319908116825560018201805490911690556002810180546001600160e81b0319169055600301559055600b805480615b9457fe5b60008281526020812060166000199093019283020181815560018101805460ff1916905590615bc66002830182617b26565b615bd4600383016000617c29565b50509055600101615b2e565b505b6000818310615bf15781615bf3565b825b905060005b81811015615f9757615ca5868281518110615c0f57fe5b602002602001015160018381548110615c2457fe5b60009182526020918290206040805160c08101825260049390930290910180546001600160a01b0390811684526001820154811694840194909452600281015493841691830191909152600160a01b83046001600160401b03166060830152600160e01b90920460ff161515608082015260039091015460a082015261702c565b615e59578060010160046000888481518110615cbd57fe5b6020026020010151600001516001600160a01b03166001600160a01b0316815260200190815260200160002081905550858181518110615cf957fe5b602002602001015160018281548110615d0e57fe5b6000918252602091829020835160049092020180546001600160a01b039283166001600160a01b0319918216178255928401516001820180549184169185169190911790556040840151600282018054606087015160808801511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b1995909716929097169190911792909216939093171692909217905560a0909101516003909101558451859082908110615dc957fe5b6020026020010151600b8281548110615dde57fe5b90600052602060002090601602016002019080519060200190615e02929190617a26565b506000600b8281548110615e1257fe5b60009182526020822060169190910201600101805460ff191692151592909217909155600b805483908110615e4357fe5b6000918252602090912060169091020155615f8f565b858181518110615e6557fe5b60200260200101516060015160018281548110615e7e57fe5b906000526020600020906004020160020160146101000a8154816001600160401b0302191690836001600160401b03160217905550615f44858281518110615ec257fe5b6020026020010151600b8381548110615ed757fe5b600091825260209182902060026016909202018101805460408051601f6000196101006001861615020190931694909404918201859004850284018501905280835291929091908301828280156134a65780601f1061347b576101008083540402835291602001916134a6565b615f8f57848181518110615f5457fe5b6020026020010151600b8281548110615f6957fe5b90600052602060002090601602016002019080519060200190615f8d929190617a26565b505b600101615bf8565b508282111561616f57615fa86179f7565b835b8381101561616c57858181518110615fbe57fe5b602002602001015182604001819052506001878281518110615fdc57fe5b6020908102919091018101518254600181810185556000948552838520835160049093020180546001600160a01b039384166001600160a01b0319918216178255848601518284018054918616918316919091179055604080860151600284018054606089015160808a01511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b1995909a1692909616919091179290921696909617169190911790935560a090930151600390930192909255600b805492830181559093528451601690910260008051602061919c8339815191528101918255858301516000805160206191dc8339815191528201805491151560ff1990921691909117905592850151805186949293616112936000805160206191bc83398151915201920190617a26565b5060608201516161289060038301906013617aa0565b505050806001016004600089848151811061613f57fe5b602090810291909101810151516001600160a01b0316825281019190915260400160002055600101615faa565b50505b616177617088565b61617f617270565b6000600981905560015493505b838110156161ed576000600b82815481106161a357fe5b60009182526020822060169190910201600101805460ff191692151592909217909155600b8054839081106161d457fe5b600091825260209091206016909102015560010161618c565b505050505050565b600061115e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061745e565b60008282018381101561115e5760405162461bcd60e51b8152600401610e129061861f565b60015481516040805182815260208084028201019091526060929190839082801561629b57816020015b60608152602001906001900390816162865790505b50600b5490915083146162b2579250611d15915050565b60005b828110156163c157600b6001600460008985815181106162d157fe5b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054038154811061630557fe5b600091825260209182902060026016909202018101805460408051601f60001961010060018616150201909316949094049182018590048502840185019052808352919290919083018282801561639d5780601f106163725761010080835404028352916020019161639d565b820191906000526020600020905b81548152906001019060200180831161638057829003601f168201915b50505050508282815181106163ae57fe5b60209081029190910101526001016162b5565b50949350505050565b60005b8281101561651757600082878388016040516020016163ed9291906181e9565b6040516020818303038152906040528051906020012060001c8161640d57fe5b0690508085018287011461650e576000898388018151811061642b57fe5b602002602001015190506060898489018151811061644557fe5b602002602001015190508a8388018151811061645d57fe5b60200260200101518b858a018151811061647357fe5b60200260200101906001600160a01b031690816001600160a01b031681525050818b848901815181106164a257fe5b60200260200101906001600160a01b031690816001600160a01b03168152505089838801815181106164d057fe5b60200260200101518a858a01815181106164e657fe5b6020026020010181905250808a8489018151811061650057fe5b602002602001018190525050505b506001016163cd565b5050505050505050565b600980546001908101909155600b80548390811061653b57fe5b906000526020600020906016020160010160006101000a81548160ff02191690831515021790555043600b828154811061657157fe5b600091825260208220601690910201919091556040516001600160a01b038416917ff62981a567ec3cec866c6fa93c55bcdf841d6292d18b8d522ececa769375d82d91a25050565b6000816040516020016165cc91906181cd565b60405160208183030381529060405280519060200120836040516020016165f391906181cd565b6040516020818303038152906040528051906020012014905092915050565b015190565b8151815160009160019181148083146166335760009250616671565b600160208701838101602088015b60028483851001141561666c5780518351146166605760009650600093505b60209283019201616641565b505050505b5090949350505050565b6001600160a01b038116600090815260046020526040812054806166a457506000199050611d15565b6001810390506000600182815481106166b957fe5b90600052602060002090600402016003015490506000600183815481106166dc57fe5b6000918252602090912060036004909202010155600154604051600019909101906001600160a01b038616907f8cd4e147d8af98a9e3b6724021b8bf6aed2e5dac71c38f2dce8161b82585b25d90616735908590618ee4565b60405180910390a28061674d57829350505050611d15565b600081838161675857fe5b04905080156167f45760005b848110156167a65761677d82600183815481106154c757fe5b6001828154811061678a57fe5b6000918252602090912060036004909202010155600101616764565b50600180549085015b818110156167f1576167c883600183815481106154c757fe5b600182815481106167d557fe5b60009182526020909120600360049092020101556001016167af565b50505b5091949350505050565b60008261680d57506000611dc5565b8282028284828161681a57fe5b041461115e5760405162461bcd60e51b8152600401610e12906189ee565b600061115e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061748a565b616882617c38565b506040805180820190915281518152602082810190820152919050565b6168a7617b6a565b6168b0826174c1565b6168b957600080fd5b60006168c883602001516174fb565b60208085015160408051808201909152868152920190820152915050919050565b60006168f3617c38565b505080518051602091820151919092015191011190565b616912617c38565b61691b826168e9565b61692457600080fd5b602082015160006169348261755e565b80830160209586015260408051808201909152908152938401919091525090919050565b80516000901580159061696d57508151602110155b61697657600080fd5b600061698583602001516174fb565b905080836000015110156169ab5760405162461bcd60e51b8152600401610e1290618bfc565b8251602080850151830180519284900392918310156163c157506020919091036101000a90049392505050565b60606169e3826174c1565b6169ec57600080fd5b60006169f78361763f565b9050606081604051908082528060200260200182016040528015616a3557816020015b616a22617c38565b815260200190600190039081616a1a5790505b5090506000616a4785602001516174fb565b60208601510190506000805b84811015616a9e57616a648361755e565b9150604051806040016040528083815260200184815250848281518110616a8757fe5b602090810291909101015291810191600101616a53565b509195945050505050565b616ab1617af1565b60606000616abd617af1565b6060616ac7617b6a565b616ad08761689f565b90506000805b616adf836168e9565b15616bb45780616b0a57616afa616af58461690a565b61769b565b6001600160a01b03168552616bac565b8060011415616b3257616b1f616af58461690a565b6001600160a01b03166020860152616bac565b8060021415616b5a57616b47616af58461690a565b6001600160a01b03166040860152616bac565b8060031415616b8657616b6f613dcd8461690a565b6001600160401b0316606086015260019150616bac565b8060041415616ba757616ba0616b9b8461690a565b6176b5565b9350616bac565b616bb4565b600101616ad6565b50929791965091945092505050565b6060611dc5616bd183617725565b61780b565b6060815160001415616bf75750604080516000815260208101909152611d15565b606082600081518110616c0657fe5b602002602001015190506000600190505b8351811015616c4757616c3d82858381518110616c3057fe5b602002602001015161785d565b9150600101616c17565b5061115e616c5a825160c060ff166178da565b8261785d565b60608060006120026001600160a01b031663c473318f6040518163ffffffff1660e01b815260040160206040518083038186803b158015616ca057600080fd5b505afa158015616cb4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190616cd891906180a2565b90508085518851011015616ced575083518651015b606081604051908082528060200260200182016040528015616d2957816020015b616d16617af1565b815260200190600190039081616d0e5790505b509050606082604051908082528060200260200182016040528015616d6257816020015b6060815260200190600190039081616d4d5790505b50905060008060005b8b51831080616d7a5750895182105b8015616d8557508581105b1561701a578b51831415616df557898281518110616d9f57fe5b6020026020010151858281518110616db357fe5b6020026020010181905250888281518110616dca57fe5b6020026020010151848281518110616dde57fe5b602090810291909101015260019182019101616d6b565b8951821415616e60578b8381518110616e0a57fe5b6020026020010151858281518110616e1e57fe5b60200260200101819052508a8381518110616e3557fe5b6020026020010151848281518110616e4957fe5b602090810291909101015260019283019201616d6b565b898281518110616e6c57fe5b6020026020010151606001516001600160401b03168c8481518110616e8d57fe5b6020026020010151606001516001600160401b03161115616f09578b8381518110616eb457fe5b6020026020010151858281518110616ec857fe5b60200260200101819052508a8381518110616edf57fe5b6020026020010151848281518110616ef357fe5b6020026020010181905250826001019250617012565b898281518110616f1557fe5b6020026020010151606001516001600160401b03168c8481518110616f3657fe5b6020026020010151606001516001600160401b03161015616fb257898281518110616f5d57fe5b6020026020010151858281518110616f7157fe5b6020026020010181905250888281518110616f8857fe5b6020026020010151848281518110616f9c57fe5b6020026020010181905250816001019150617012565b898281518110616fbe57fe5b6020026020010151600001516001600160a01b03168c8481518110616fdf57fe5b6020026020010151600001516001600160a01b03161015617006578b8381518110616eb457fe5b898281518110616d9f57fe5b600101616d6b565b50929a91995090975050505050505050565b805182516000916001600160a01b039182169116148015617066575081602001516001600160a01b031683602001516001600160a01b0316145b801561115e5750506040908101519101516001600160a01b0390811691161490565b601254601354808211156170d357805b828110156170d15760128054806170ab57fe5b6001900381819060005260206000200160006170c79190617b26565b9055600101617098565b505b60008183106170e257816170e4565b825b905060005b818110156171fc576171a16012828154811061710157fe5b600091825260209182902001805460408051601f600260001961010060018716150201909416939093049283018590048502810185019091528181529283018282801561718f5780601f106171645761010080835404028352916020019161718f565b820191906000526020600020905b81548152906001019060200180831161717257829003601f168201915b50505050506013838154811061341857fe5b6171f457601381815481106171b257fe5b90600052602060002001601282815481106171c957fe5b9060005260206000200190805460018160011615610100020316600290046171f2929190617b8a565b505b6001016170e9565b5082821115610e3257825b8281101561726a5760126013828154811061721e57fe5b6000918252602080832084546001818101875595855291909320929091018054617261949390920192909160026101009282161592909202600019011604617b8a565b50600101617207565b50505050565b601354600b54808211156172bb57805b828110156172b957601380548061729357fe5b6001900381819060005260206000200160006172af9190617b26565b9055600101617280565b505b60008183106172ca57816172cc565b825b905060005b818110156173eb57617389601382815481106172e957fe5b600091825260209182902001805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156173775780601f1061734c57610100808354040283529160200191617377565b820191906000526020600020905b81548152906001019060200180831161735a57829003601f168201915b5050505050600b8381548110615ed757fe5b6173e357600b818154811061739a57fe5b9060005260206000209060160201600201601382815481106173b857fe5b9060005260206000200190805460018160011615610100020316600290046173e1929190617b8a565b505b6001016172d1565b5082821115610e3257825b8281101561726a576013600b828154811061740d57fe5b60009182526020808320845460018082018755958552919093206016929092029092016002908101805461745595939094019390926000199082161561010002011604617b8a565b506001016173f6565b600081848411156174825760405162461bcd60e51b8152600401610e12919061838a565b505050900390565b600081836174ab5760405162461bcd60e51b8152600401610e12919061838a565b5060008385816174b757fe5b0495945050505050565b80516000906174d257506000611d15565b6020820151805160001a9060c08210156174f157600092505050611d15565b5060019392505050565b8051600090811a6080811015617515576000915050611d15565b60b8811080617530575060c08110801590617530575060f881105b1561753f576001915050611d15565b60c08110156175535760b519019050611d15565b60f519019050611d15565b80516000908190811a60808110156175795760019150617638565b60b881101561758e57607e1981019150617638565b60c08110156175df57600060b78203600186019550806020036101000a8651049150600181018201935050808310156175d95760405162461bcd60e51b8152600401610e129061893b565b50617638565b60f88110156175f45760be1981019150617638565b600060f78203600186019550806020036101000a8651049150600181018201935050808310156176365760405162461bcd60e51b8152600401610e129061893b565b505b5092915050565b805160009061765057506000611d15565b6000809050600061766484602001516174fb565b602085015185519181019250015b80821015617692576176838261755e565b82019150826001019250617672565b50909392505050565b80516000906015146176ac57600080fd5b611dc582616958565b80516060906176c357600080fd5b60006176d283602001516174fb565b83516040805191839003808352601f19601f8201168301602001909152919250606090828015617709576020820181803683370190505b50905060008160200190506163c18487602001510182856179ac565b604080516020808252818301909252606091829190602082018180368337505050602081018490529050600067ffffffffffffffff1984166177695750601861778d565b6fffffffffffffffffffffffffffffffff1984166177895750601061778d565b5060005b60208110156177c3578181815181106177a257fe5b01602001516001600160f81b031916156177bb576177c3565b60010161778d565b60008160200390506060816040519080825280601f01601f1916602001820160405280156177f8576020820181803683370190505b5080830196909652508452509192915050565b60608151600114801561783d5750607f60f81b8260008151811061782b57fe5b01602001516001600160f81b03191611155b15617849575080611d15565b611dc561785b8351608060ff166178da565b835b6060806040519050835180825260208201818101602087015b8183101561788e578051835260209283019201617876565b50855184518101855292509050808201602086015b818310156178bb5780518352602092830192016178a3565b508651929092011591909101601f01601f191660405250905092915050565b60606801000000000000000083106179045760405162461bcd60e51b8152600401610e1290618786565b6040805160018082528183019092526060916020820181803683370190505090506037841161795e5782840160f81b8160008151811061794057fe5b60200101906001600160f81b031916908160001a9053509050611dc5565b606061796985617725565b90508381510160370160f81b8260008151811061798257fe5b60200101906001600160f81b031916908160001a9053506179a3828261785d565b95945050505050565b806179b657610e32565b5b602081106179d6578251825260209283019290910190601f19016179b7565b915181516020939093036101000a6000190180199091169216919091179052565b60405180608001604052806000815260200160001515815260200160608152602001617a21617c52565b905290565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10617a6757805160ff1916838001178555617a94565b82800160010185558215617a94579182015b82811115617a94578251825591602001919060010190617a79565b506131e8929150617c71565b8260138101928215617a945791602002820182811115617a94578251825591602001919060010190617a79565b6040518060600160405280600060ff16815260200160608152602001606081525090565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a081019190915290565b50805460018160011615610100020316600290046000825580601f10617b4c5750611f2d565b601f016020900490600052602060002090810190611f2d9190617c71565b6040518060400160405280617b7d617c38565b8152602001600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10617bc35780548555617a94565b82800160010185558215617a9457600052602060002091601f016020900482015b82811115617a94578254825591600101919060010190617be4565b8260138101928215617a945791820182811115617a94578254825591600101919060010190617be4565b50611f2d906013810190617c71565b604051806040016040528060008152602001600081525090565b6040518061026001604052806013906020820280368337509192915050565b61318c91905b808211156131e85760008155600101617c77565b8035611dc581618fbb565b60008083601f840112617ca7578182fd5b5081356001600160401b03811115617cbd578182fd5b60208301915083602080830285010111156159ff57600080fd5b6000601f8381840112617ce8578182fd5b8235617cfb617cf682618f70565b618f4a565b818152925060208084019085810160005b84811015617d8d578135880189603f820112617d2757600080fd5b838101356001600160401b03811115617d3f57600080fd5b617d50818901601f19168601618f4a565b81815260408c81848601011115617d6657600080fd5b82818501888401375060009181018601919091528552509282019290820190600101617d0c565b50505050505092915050565b600082601f830112617da9578081fd5b8135617db7617cf682618f70565b818152915060208083019084810181840286018201871015617dd857600080fd5b6000805b85811015617d8d5782356001600160401b0381168114617dfa578283fd5b85529383019391830191600101617ddc565b60008083601f840112617e1d578182fd5b5081356001600160401b03811115617e33578182fd5b6020830191508360208285010111156159ff57600080fd5b600060208284031215617e5c578081fd5b813561115e81618fbb565b600060208284031215617e78578081fd5b815161115e81618fbb565b60008060008060408587031215617e98578283fd5b84356001600160401b0380821115617eae578485fd5b617eba88838901617c96565b90965094506020870135915080821115617ed2578384fd5b50617edf87828801617c96565b95989497509550505050565b600080600060608486031215617eff578283fd5b83356001600160401b0380821115617f15578485fd5b81860187601f820112617f26578586fd5b80359250617f36617cf684618f70565b80848252602080830192508084018b828389028701011115617f5657898afd5b8994505b86851015617f8057617f6c8c82617c8b565b845260019490940193928101928101617f5a565b509097508801359350505080821115617f97578384fd5b617fa387838801617d99565b93506040860135915080821115617fb8578283fd5b50617fc586828701617cd7565b9150509250925092565b600060208284031215617fe0578081fd5b8151801515811461115e578182fd5b60008060208385031215618001578182fd5b82356001600160401b03811115618016578283fd5b61802285828601617e0c565b90969095509350505050565b60008060008060408587031215618043578384fd5b84356001600160401b0380821115618059578586fd5b61806588838901617e0c565b9096509450602087013591508082111561807d578384fd5b50617edf87828801617e0c565b60006020828403121561809b578081fd5b5035919050565b6000602082840312156180b3578081fd5b5051919050565b600080604083850312156180cc578182fd5b505080516020909101519092909150565b6000806000604084860312156180f1578081fd5b833560ff81168114618101578182fd5b925060208401356001600160401b0381111561811b578182fd5b61812786828701617e0c565b9497909650939450505050565b6000815180845260208085019450808401835b8381101561816c5781516001600160a01b031687529582019590820190600101618147565b509495945050505050565b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b600081518084526181b9816020860160208601618f8f565b601f01601f19169290920160200192915050565b600082516181df818460208701618f8f565b9190910192915050565b918252602082015260400190565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b03968716815294861660208601529290941660408401526001600160401b03166060830152911515608082015260a081019190915260c00190565b6001600160a01b0392909216825260ff16602082015260400190565b60006020825261115e6020830184618134565b6000604082526182a86040830185618134565b602083820381850152818551808452828401915082838202850101838801865b838110156182f657601f198784030185526182e48383516181a1565b948601949250908501906001016182c8565b50909998505050505050505050565b6000608082526183186080830187618134565b828103602084810191909152865180835287820192820190845b8181101561834e57845183529383019391830191600101618332565b505084810360408601526183628188618134565b93505050506001600160401b038316606083015295945050505050565b901515815260200190565b60006020825261115e60208301846181a1565b6000604082526183b1604083018688618177565b82810360208401526183c4818587618177565b979650505050505050565b6020808252601c908201527f6c656e677468206f66206275726e526174696f206d69736d6174636800000000604082015260600190565b60208082526042908201527f746865206275726e526174696f20706c75732073797374656d5265776172645260408201527f6174696f206d757374206265206e6f2067726561746572207468616e20313030606082015261030360f41b608082015260a00190565b60208082526026908201527f6c656e677468206f66206d61784e756d4f664d61696e7461696e696e67206d696040820152650e6dac2e8c6d60d31b606082015260800190565b6020808252601b908201527f6261746368207472616e736665722072657475726e2066616c73650000000000604082015260600190565b6020808252602c908201527f6c656e677468206f66206d61784e756d4f66576f726b696e6743616e6469646160408201526b0e8cae640dad2e6dac2e8c6d60a31b606082015260800190565b60208082526025908201527f6c656e677468206f66206d61696e7461696e536c6173685363616c65206d69736040820152640dac2e8c6d60db1b606082015260800190565b6020808252818101527f6c656e677468206f66206e756d4f66436162696e657473206d69736d61746368604082015260600190565b60208082526019908201527f74686520636f6e7472616374206e6f7420696e69742079657400000000000000604082015260600190565b6020808252601f908201527f6f6e6c7920736c617368206f72207374616b6548756220636f6e747261637400604082015260600190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b60208082526028908201527f746865206e756d4f66436162696e657473206d75737420626520677265617465604082015267072207468616e20360c41b606082015260800190565b60208082526039908201527f746865206e756d4f66436162696e657473206d757374206265206c657373207460408201527f68616e204d41585f4e554d5f4f465f56414c494441544f525300000000000000606082015260800190565b60208082526029908201527f746865206e756d626572206f662076616c696461746f727320657863656564206040820152681d1a19481b1a5b5a5d60ba1b606082015260800190565b60208082526022908201527f63616e206e6f7420646f207468697320747769636520696e206f6e6520626c6f604082015261636b60f01b606082015260800190565b6020808252600e908201526d696e70757420746f6f206c6f6e6760901b604082015260600190565b60208082526037908201527f746865206d61784e756d4f664d61696e7461696e696e67206d7573742062652060408201527f6c657373207468616e206e756d4f66436162696e657473000000000000000000606082015260800190565b6020808252602b908201527f6475706c696361746520636f6e73656e7375732061646472657373206f66207660408201526a185b1a59185d1bdc94d95d60aa1b606082015260800190565b60208082526027908201527f7468652065787069726554696d655365636f6e64476170206973206f7574206f604082015266662072616e676560c81b606082015260800190565b6020808252601590820152746465706f7369742076616c7565206973207a65726f60581b604082015260600190565b60208082526049908201527f746865206d61784e756d4f66576f726b696e6743616e64696461746573206d7560408201527f7374206265206e6f742067726561746572207468616e206d61784e756d4f6643606082015268616e6469646174657360b81b608082015260a00190565b6020808252601190820152706164646974696f6e206f766572666c6f7760781b604082015260600190565b60208082526023908201527f63616e206e6f7420656e7465722054656d706f72617279204d61696e74656e616040820152626e636560e81b606082015260800190565b60208082526025908201527f6c656e677468206f66206a61696c2076616c696461746f7273206d757374206260408201526465206f6e6560d81b606082015260800190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252601490820152736761737072696365206973206e6f74207a65726f60601b604082015260600190565b6020808252602e908201527f746865206d6573736167652073656e646572206d75737420626520676f76657260408201526d1b985b98d94818dbdb9d1c9858dd60921b606082015260800190565b60208082526025908201527f6c656e677468206f66206d61784e756d4f6643616e64696461746573206d69736040820152640dac2e8c6d60db1b606082015260800190565b6020808252601290820152716e6f7420696e206d61696e74656e616e636560701b604082015260600190565b60208082526021908201527f666565206973206c6172676572207468616e2044555354595f494e434f4d494e6040820152604760f81b606082015260800190565b60208082526019908201527f74686520636f6e747261637420616c726561647920696e697400000000000000604082015260600190565b60208082526042908201527f7468652073797374656d526577617264526174696f20706c7573206275726e5260408201527f6174696f206d757374206265206e6f2067726561746572207468616e20313030606082015261030360f41b608082015260a00190565b6020808252601a908201527f6c656e677468206973206c657373207468616e206f6666736574000000000000604082015260600190565b60208082526026908201527f6c656e677468206f662065787069726554696d655365636f6e64476170206d696040820152650e6dac2e8c6d60d31b606082015260800190565b60208082526017908201527f6f6e6c792063757272656e742076616c696461746f7273000000000000000000604082015260600190565b60208082526021908201527f6661696c656420746f20706172736520696e69742076616c696461746f7253656040820152601d60fa1b606082015260800190565b6020808252602f908201527f746865206d6573736167652073656e646572206d7573742062652063726f737360408201526e0818da185a5b8818dbdb9d1c9858dd608a1b606082015260800190565b6020808252602d908201527f746865206d6573736167652073656e646572206d75737420626520746865206260408201526c3637b1b590383937b23ab1b2b960991b606082015260800190565b60208082526024908201527f6c656e677468206f662073797374656d526577617264526174696f206d69736d6040820152630c2e8c6d60e31b606082015260800190565b6020808252603e908201527f746865206d61696e7461696e536c6173685363616c65206d757374206265206760408201527f726561746572207468616e203020616e64206c657373207468616e2031300000606082015260800190565b6020808252600d908201526c756e6b6e6f776e20706172616d60981b604082015260600190565b60208082526029908201527f746865206d6573736167652073656e646572206d75737420626520736c6173686040820152680818dbdb9d1c9858dd60ba1b606082015260800190565b6020808252601f908201527f746865206d73672073656e646572206d757374206265207374616b6548756200604082015260600190565b61ffff91909116815260200190565b90815260200190565b60008482528315156020830152606060408301526179a360608301846181a1565b63ffffffff91909116815260200190565b60ff91909116815260200190565b600060ff85168252604060208301526179a3604083018486618177565b6040518181016001600160401b0381118282101715618f6857600080fd5b604052919050565b60006001600160401b03821115618f85578081fd5b5060209081020190565b60005b83811015618faa578181015183820152602001618f92565b8381111561726a5750506000910152565b6001600160a01b0381168114611f2d57600080fdfef901a880f901a4f844941284214b9b9c85549ab3d2b972df0deef66ac2c9946ddf42a51534fc98d0c0a3b42c963cace8441ddf946ddf42a51534fc98d0c0a3b42c963cace8441ddf8410000000f84494a2959d3f95eae5dc7d70144ce1b73b403b7eb6e0948081ef03f1d9e0bb4a5bf38f16285c879299f07f948081ef03f1d9e0bb4a5bf38f16285c879299f07f8410000000f8449435552c16704d214347f29fa77f77da6d75d7c75294dc4973e838e3949c77aced16ac2315dc2d7ab11194dc4973e838e3949c77aced16ac2315dc2d7ab1118410000000f84494980a75ecd1309ea12fa2ed87a8744fbfc9b863d594cc6ac05c95a99c1f7b5f88de0e3486c82293b27094cc6ac05c95a99c1f7b5f88de0e3486c82293b2708410000000f84494f474cf03cceff28abc65c9cbae594f725c80e12d94e61a183325a18a173319dd8e19c8d069459e217594e61a183325a18a173319dd8e19c8d069459e21758410000000f84494b71b214cb885500844365e95cd9942c7276e7fd894d22ca3ba2141d23adab65ce4940eb7665ea2b6a794d22ca3ba2141d23adab65ce4940eb7665ea2b6a7841000000070e72399380dcfb0338abc03dc8d47f9f470ada8e769c9a78d644ea97385ecb20175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db90175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01dbb0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01dbaa164736f6c6343000604000a", }, { ContractAddr: common.HexToAddress(SlashContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/cfc0bd1127186a917ddc38fd38d22903034d3f0b", - Code: "608060405234801561001057600080fd5b50600436106102f15760003560e01c8063831d65d11161019d578063c81b1662116100e9578063df8079e9116100a2578063f9a2bbc71161007c578063f9a2bbc714610575578063fc3e59081461057d578063fc4333cd14610585578063fd6a68791461058d576102f1565b8063df8079e91461055d578063e1c7392a14610565578063eb57bff71461056d576102f1565b8063c81b16621461050c578063c8509d8114610514578063c96be4cb14610527578063cc844b731461053a578063d2a42e4b1461054d578063dc927faf14610555576102f1565b8063aa82dce111610156578063ac0af62911610130578063ac0af629146104e1578063ac431751146104e9578063ae61dc3b146104fc578063c80d4b8f14610504576102f1565b8063aa82dce1146104c9578063aad56063146104d1578063ab51bb96146104d9576102f1565b8063831d65d11461048357806396713da9146104965780639dc092621461049e5780639e89ded8146104a6578063a1a11bf5146104b9578063a78abc16146104c1576102f1565b8063493279b11161025c5780636e47b4821161021557806375d47a0a116101ef57806375d47a0a146104635780637912a65d1461046b5780637942fd05146104735780638256ace61461047b576102f1565b80636e47b4821461044b57806370fd5bad14610453578063718a8aa81461045b576102f1565b8063493279b1146104035780634bf6c8821461041857806351e8067214610420578063567a372d146104285780635bfb49901461043057806362b72cf514610443576102f1565b806335aa2e44116102ae57806335aa2e441461039557806337c8dab9146103a8578063389f4f71146103c95780633a63f4b1146103de5780633dffc387146103e657806343756e5c146103fb576102f1565b80630bee7a67146102f65780630e2374a5146103145780631182b8751461032957806322d1e80b1461034957806323bac5a21461035e5780632796211814610380575b600080fd5b6102fe610595565b60405161030b9190613ddc565b60405180910390f35b61031c61059a565b60405161030b91906135af565b61033c6103373660046134e5565b6105a0565b60405161030b91906135e7565b610351610606565b60405161030b91906135dc565b61037161036c3660046131fc565b61060f565b60405161030b93929190613dc4565b61039361038e366004613342565b610632565b005b61031c6103a33660046134b5565b610a4d565b6103bb6103b63660046131fc565b610a74565b60405161030b929190613db6565b6103d1610acb565b60405161030b9190613d8c565b6103d1610ad1565b6103ee610ad7565b60405161030b9190613ded565b61031c610adc565b61040b610ae2565b60405161030b9190613d7d565b6103ee610ae8565b61031c610aed565b6103d1610af3565b61039361043e3660046131fc565b610af9565b6103d1610ba4565b61031c610baa565b6103ee610bb0565b6103ee610bb5565b61031c610bba565b6103d1610bc0565b6103ee610bc5565b6103bb610bca565b6103936104913660046134e5565b610bd4565b6103ee610ce7565b61031c610cec565b6103936104b4366004613234565b610cf2565b61031c610d21565b610351610d27565b61031c610d30565b61031c610d36565b6102fe610d3c565b6103d1610d41565b6103936104f7366004613399565b610d46565b6103d16112f6565b6103d16112fd565b61031c611302565b6103936105223660046134e5565b611308565b6103936105353660046131fc565b611379565b610393610548366004613402565b6117fa565b6103d1611e45565b61031c611e4a565b61031c611e50565b610393611e56565b6103d1611e93565b61031c611e99565b6103ee611e9f565b610393611ea4565b61031c6122ed565b606481565b61200181565b606033612000146105cc5760405162461bcd60e51b81526004016105c390613bd5565b60405180910390fd5b60005460ff166105ee5760405162461bcd60e51b81526004016105c390613705565b60405162461bcd60e51b81526004016105c390613cc6565b60075460ff1681565b600260208190526000918252604090912080546001820154919092015460ff1683565b60005460ff166106545760405162461bcd60e51b81526004016105c390613705565b8151158015906106645750805115155b6106805760405162461bcd60e51b81526004016105c390613b33565b60408051600380825260808201909252606091816020015b60608152602001906001900390816106985790505090506106ba6102ca6122f3565b816000815181106106c757fe5b60200260200101819052506106db8361230e565b816001815181106106e857fe5b60200260200101819052506106fc8261230e565b8160028151811061070957fe5b6020026020010181905250606061071f82612364565b60408051603480825260608281019093529293509091602082018180368337019050509050815160346020830182602086016068600019fa61076057600080fd5b50601481015160348201516040516333c1892360e21b81526000906120029063cf06248c906107939086906004016135af565b60206040518083038186803b1580156107ab57600080fd5b505afa1580156107bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107e39190613218565b6001600160a01b0316141561080a5760405162461bcd60e51b81526004016105c3906136d5565b4281621baf8001101561082f5760405162461bcd60e51b81526004016105c390613676565b60606110006001600160a01b0316633b071dcc6040518163ffffffff1660e01b815260040160006040518083038186803b15801561086c57600080fd5b505afa158015610880573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526108a8919081019061325f565b50905060005b81518110156109eb578181815181106108c357fe5b60200260200101516001600160a01b0316846001600160a01b031614156109e3576006546040516309a99b4f60e41b815260646110028031909302049190639a99b4f09061091790339085906004016135c3565b602060405180830381600087803b15801561093157600080fd5b505af1158015610945573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061096991906134cd565b506110006001600160a01b03166335409f7f84848151811061098757fe5b60200260200101516040518263ffffffff1660e01b81526004016109ab91906135af565b600060405180830381600087803b1580156109c557600080fd5b505af11580156109d9573d6000803e3d6000fd5b50505050506109eb565b6001016108ae565b50604051631871f7d960e31b81526120029063c38fbec890610a119086906004016135af565b600060405180830381600087803b158015610a2b57600080fd5b505af1158015610a3f573d6000803e3d6000fd5b505050505050505050505050565b60018181548110610a5a57fe5b6000918252602090912001546001600160a01b0316905081565b600080610a7f612fe3565b5050506001600160a01b0316600090815260026020818152604092839020835160608101855281548082526001830154938201849052919093015460ff16151592909301919091529091565b60055481565b60065481565b600181565b61100181565b6102ca81565b600881565b61200081565b60045481565b3361100014610b1a5760405162461bcd60e51b81526004016105c390613994565b60005460ff16610b3c5760405162461bcd60e51b81526004016105c390613705565b61200063f7a251d7600b610b4f846123f5565b60006040518463ffffffff1660e01b8152600401610b6f93929190613dfb565b600060405180830381600087803b158015610b8957600080fd5b505af1158015610b9d573d6000803e3d6000fd5b5050505050565b60035481565b61100581565b600281565b601081565b61100881565b600581565b600b81565b6004546005549091565b3361200014610bf55760405162461bcd60e51b81526004016105c390613bd5565b60005460ff16610c175760405162461bcd60e51b81526004016105c390613705565b610c1f613006565b6000610c6084848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506124bf92505050565b915091508015610ca75781516040517f7f0956d47419b9525356e7111652b653b530ec6f5096dccc04589bc38e62996791610c9a91613ddc565b60405180910390a1610b9d565b81516040517f7d45f62d17443dd4547bca8a8112c60e2385669318dc300ec61a5d2492f262e791610cd791613ddc565b60405180910390a150505b505050565b600981565b61100781565b3361100014610d135760405162461bcd60e51b81526004016105c390613994565b610d1d828261253f565b5050565b61100681565b60005460ff1681565b61200281565b61300081565b600081565b600481565b60005460ff16610d685760405162461bcd60e51b81526004016105c390613705565b3361100714610d895760405162461bcd60e51b81526004016105c390613a6c565b610df484848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260148152731b5a5cd9195b59585b9bdc951a1c995cda1bdb1960621b602082015291506127169050565b15610e8f5760208114610e195760405162461bcd60e51b81526004016105c390613920565b604080516020601f8401819004810282018101909252828152600091610e579185858083850183828082843760009201919091525061277092505050565b905060018110158015610e6b575060055481105b610e875760405162461bcd60e51b81526004016105c390613b90565b6004556112b3565b610ef584848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600f81526e19995b1bdb9e551a1c995cda1bdb19608a1b602082015291506127169050565b15610f915760208114610f1a5760405162461bcd60e51b81526004016105c390613aba565b604080516020601f8401819004810282018101909252828152600091610f589185858083850183828082843760009201919091525061277092505050565b90506103e88111158015610f6d575060045481115b610f895760405162461bcd60e51b81526004016105c3906137be565b6005556112b3565b61100584848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601881527f66696e616c697479536c617368526577617264526174696f0000000000000000602082015291506127169050565b1561109f576020811461102a5760405162461bcd60e51b81526004016105c390613cfd565b604080516020601f84018190048102820181019092528281526000916110689185858083850183828082843760009201919091525061277092505050565b9050600a811015801561107b5750606481105b6110975760405162461bcd60e51b81526004016105c3906138d4565b6006556112b3565b61111384848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601881527f656e61626c654d616c6963696f7573566f7465536c6173680000000000000000602082015291506127169050565b1561118a57602081146111385760405162461bcd60e51b81526004016105c3906137f3565b604080516020601f8401819004810282018101909252828152611174919084848083850183828082843760009201919091525061277592505050565b6007805460ff19169115159190911790556112b3565b6111fe84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601781527f6d616c6963696f7573566f7465536c61736853636f7065000000000000000000602082015291506127169050565b1561129b57602081146112235760405162461bcd60e51b81526004016105c39061362c565b604080516020601f84018190048102820181019092528281526000916112619185858083850183828082843760009201919091525061277092505050565b905061708081101580156112775750620d2f0081105b6112935760405162461bcd60e51b81526004016105c39061373c565b6008556112b3565b60405162461bcd60e51b81526004016105c390613c71565b7f6cdb0ac70ab7f2e2d035cca5be60d89906f2dede7648ddbd7402189c1eeed17a848484846040516112e894939291906135fa565b60405180910390a150505050565b6201518081565b600a81565b61100281565b33612000146113295760405162461bcd60e51b81526004016105c390613bd5565b60005460ff1661134b5760405162461bcd60e51b81526004016105c390613705565b6040517f07db600eebe2ac176be8dcebad61858c245a4961bb32ca2aa3d159b09aa0810e90600090a1505050565b3341146113985760405162461bcd60e51b81526004016105c390613c24565b60005460ff166113ba5760405162461bcd60e51b81526004016105c390613705565b60035443116113db5760405162461bcd60e51b81526004016105c390613d48565b3a156113f95760405162461bcd60e51b81526004016105c390613a0f565b60405163155853f360e21b8152611000906355614fcc9061141e9084906004016135af565b60206040518083038186803b15801561143657600080fd5b505afa15801561144a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061146e9190613322565b611477576117f3565b61147f612fe3565b506001600160a01b0381166000908152600260208181526040928390208351606081018552815481526001820154928101929092529091015460ff1615801592820192909252906114da576020810180516001019052611533565b60016040820181905260208201819052805480820182556000919091527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180546001600160a01b0319166001600160a01b0384161790555b43815260055460208201518161154557fe5b0661172157600060208201526040516335409f7f60e01b8152611000906335409f7f906115769085906004016135af565b600060405180830381600087803b15801561159057600080fd5b505af11580156115a4573d6000803e3d6000fd5b50506040516333c1892360e21b815260009250612002915063cf06248c906115d09086906004016135af565b60206040518083038186803b1580156115e857600080fd5b505afa1580156115fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116209190613218565b6001600160a01b0316146116415761163c82826020015161253f565b61171c565b61200063f7a251d7600b611654856123f5565b60006040518463ffffffff1660e01b815260040161167493929190613dfb565b600060405180830381600087803b15801561168e57600080fd5b505af192505050801561169f575060015b61171c573d8080156116cd576040519150601f19603f3d011682016040523d82523d6000602084013e6116d2565b606091505b50826001600160a01b03167fd7bc86ff5d08c8ab043edec743302aba2520e6635172a428bc956721db9e2d1c836020015183604051611712929190613d95565b60405180910390a2505b61178d565b60045481602001518161173057fe5b0661178d576040516375abf10160e11b81526110009063eb57e2029061175a9085906004016135af565b600060405180830381600087803b15801561177457600080fd5b505af1158015611788573d6000803e3d6000fd5b505050505b6001600160a01b0382166000818152600260208181526040808420865181559186015160018301558581015191909201805460ff1916911515919091179055517fddb6012116e51abf5436d956a4f0ebd927e92c576ff96d7918290c8782291e3e9190a2505b5043600355565b60005460ff1661181c5760405162461bcd60e51b81526004016105c390613705565b60075460ff1661183e5760405162461bcd60e51b81526004016105c3906136a0565b60065461184b5760146006555b60085461185a57620151806008555b60085481516040015143910111801561187e57504360085482602001516040015101115b61189a5760405162461bcd60e51b81526004016105c390613c98565b8060200151602001518160000151602001511480156118c85750806020015160600151816000015160600151145b156118e55760405162461bcd60e51b81526004016105c390613967565b8051604081015190511080156119045750602081015160408101519051105b6119205760405162461bcd60e51b81526004016105c39061389d565b6020810151518151511080156119455750806000015160400151816020015160400151105b8061197057508051516020820151511080156119705750806020015160400151816000015160400151105b8061198a5750806020015160400151816000015160400151145b6119a65760405162461bcd60e51b81526004016105c390613787565b604080820151905163ea321e4960e01b81526110009163ea321e49916119cf91906004016135e7565b60206040518083038186803b1580156119e757600080fd5b505afa1580156119fb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a1f9190613322565b611a3b5760405162461bcd60e51b81526004016105c390613a3d565b611a4d8160000151826040015161279d565b8015611a665750611a668160200151826040015161279d565b611a825760405162461bcd60e51b81526004016105c39061383e565b6060806110006001600160a01b0316633b071dcc6040518163ffffffff1660e01b815260040160006040518083038186803b158015611ac057600080fd5b505afa158015611ad4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611afc919081019061325f565b9150915060005b8151811015611c3957611b2d828281518110611b1b57fe5b60200260200101518560400151612975565b15611c31576006546040516309a99b4f60e41b815260646110028031909302049190639a99b4f090611b6590339085906004016135c3565b602060405180830381600087803b158015611b7f57600080fd5b505af1158015611b93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bb791906134cd565b506110006001600160a01b03166335409f7f858481518110611bd557fe5b60200260200101516040518263ffffffff1660e01b8152600401611bf991906135af565b600060405180830381600087803b158015611c1357600080fd5b505af1158015611c27573d6000803e3d6000fd5b5050505050611c39565b600101611b03565b506040808401519051630f5b9efd60e31b815260009161200291637adcf7e891611c65916004016135e7565b60206040518083038186803b158015611c7d57600080fd5b505afa158015611c91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cb59190613218565b6001600160a01b031614611d23576040808401519051630e9fbf5160e01b815261200291630e9fbf5191611cec91906004016135e7565b600060405180830381600087803b158015611d0657600080fd5b505af1158015611d1a573d6000803e3d6000fd5b50505050610ce2565b6000611d34846040015160006129d9565b90506120006001600160a01b031663f7a251d7600b611d5687604001516129f5565b60006040518463ffffffff1660e01b8152600401611d7693929190613dfb565b600060405180830381600087803b158015611d9057600080fd5b505af1925050508015611da1575060015b611e13573d808015611dcf576040519150601f19603f3d011682016040523d82523d6000602084013e611dd4565b606091505b50817fd58d1183100bd0932c0588f31c4205d6bc6168909765a96c41adbed3115f362882604051611e0591906135e7565b60405180910390a250611e3f565b60405181907f7b78aadacff901d8b63d0dba4f86283d4db8aef27f9ed70413dd860f1c9532b690600090a25b50505050565b601481565b61100381565b61200481565b60005460ff1615611e795760405162461bcd60e51b81526004016105c390613afc565b60056004819055600a90556000805460ff19166001179055565b60085481565b61100081565b600381565b3361100014611ec55760405162461bcd60e51b81526004016105c390613994565b60005460ff16611ee75760405162461bcd60e51b81526004016105c390613705565b600154611ef3576122eb565b600154600090600019015b8082116122bf576000805b8284101561202257611f19612fe3565b6002600060018781548110611f2a57fe5b60009182526020808320909101546001600160a01b0316835282810193909352604091820190208151606081018352815481526001820154938101939093526002015460ff16151590820152600554909150600490048160200151111561200c57600460055481611f9757fe5b04816020015103816020018181525050806002600060018881548110611fb957fe5b6000918252602080832091909101546001600160a01b0316835282810193909352604091820190208351815591830151600183015591909101516002909101805460ff1916911515919091179055612016565b6001925050612022565b50836001019350611f09565b8284116121b957612031612fe3565b600260006001868154811061204257fe5b60009182526020808320909101546001600160a01b0316835282810193909352604091820190208151606081018352815481526001820154938101939093526002015460ff16151590820152600554909150600490048160200151111561212a576004600554816120af57fe5b048160200151038160200181815250508060026000600187815481106120d157fe5b6000918252602080832091909101546001600160a01b03168352828101939093526040918201902083518155918301516001808401919091559201516002909101805460ff191691151591909117905591506121b99050565b600260006001868154811061213b57fe5b60009182526020808320909101546001600160a01b031683528201929092526040018120818155600181810192909255600201805460ff1916905580548061217f57fe5b600082815260209020810160001990810180546001600160a01b0319169055019055836121ac57506121b9565b5060001990920191612022565b8180156121c35750805b156122a25760026000600186815481106121d957fe5b60009182526020808320909101546001600160a01b031683528201929092526040018120818155600181810192909255600201805460ff1916905580548490811061222057fe5b600091825260209091200154600180546001600160a01b03909216918690811061224657fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600180548061227f57fe5b600082815260209020810160001990810180546001600160a01b03191690550190555b826122ae5750506122bf565b505060019091019060001901611efe565b6040517fcfdb3b6ccaeccbdc68be3c59c840e3b3c90f0a7c491f5fff1cf56cfda200dd9c90600090a150505b565b61100481565b606061230661230183612a30565b61230e565b90505b919050565b6060815160011480156123405750607f60f81b8260008151811061232e57fe5b01602001516001600160f81b03191611155b1561234c575080612309565b61230661235e8351608060ff16612b16565b83612be8565b60608151600014156123855750604080516000815260208101909152612309565b60608260008151811061239457fe5b602002602001015190506000600190505b83518110156123d5576123cb828583815181106123be57fe5b6020026020010151612be8565b91506001016123a5565b506123ee6123e8825160c060ff16612b16565b82612be8565b9392505050565b60408051600480825260a08201909252606091829190816020015b6060815260200190600190039081612410579050509050612439836001600160a01b0316612c65565b8160008151811061244657fe5b602002602001018190525061245a436122f3565b8160018151811061246757fe5b602090810291909101015261247d6102ca6122f3565b8160028151811061248a57fe5b602002602001018190525061249e426122f3565b816003815181106124ab57fe5b60200260200101819052506123ee81612364565b6124c7613006565b60006124d1613006565b6124d9613018565b6124ea6124e586612c88565b612cad565b90506000805b6124f983612cf7565b1561253257806125255761251461250f84612d18565b612d66565b63ffffffff1684526001915061252a565b612532565b6001016124f0565b5091935090915050915091565b6040516375cc7d8960e01b8152612002906375cc7d89906125649085906004016135af565b600060405180830381600087803b15801561257e57600080fd5b505af192505050801561258f575060015b610d1d576040516000815260443d10156125ab57506000612648565b60046000803e60005160e01c6308c379a081146125cc576000915050612648565b60043d036004833e81513d602482011167ffffffffffffffff821117156125f857600092505050612648565b808301805167ffffffffffffffff81111561261a576000945050505050612648565b8060208301013d860181111561263857600095505050505050612648565b601f01601f191660405250925050505b80612653575061269c565b826001600160a01b03167fd7bc86ff5d08c8ab043edec743302aba2520e6635172a428bc956721db9e2d1c838360405161268e929190613d95565b60405180910390a250612711565b3d8080156126c6576040519150601f19603f3d011682016040523d82523d6000602084013e6126cb565b606091505b50826001600160a01b03167fd7bc86ff5d08c8ab043edec743302aba2520e6635172a428bc956721db9e2d1c8383604051612707929190613d95565b60405180910390a2505b610d1d565b6000816040516020016127299190613593565b60405160208183030381529060405280519060200120836040516020016127509190613593565b604051602081830303815290604052805190602001201490505b92915050565b015190565b8082015160009060ff81161561278f576001915081612795565b60009150815b505092915050565b60408051600480825260a0820190925260009160609190816020015b60608152602001906001900390816127b95750506040805160208082528183019092529192506060919080820181803683370190505090506127fe85600001516122f3565b8260008151811061280b57fe5b60200260200101819052506128266020866020015183612de8565b61282f8161230e565b8260018151811061283c57fe5b602002602001018190525061285485604001516122f3565b8260028151811061286157fe5b602002602001018190525061287c6020866060015183612de8565b6128858161230e565b8260038151811061289257fe5b60200260200101819052506128b860206128ab84612364565b8051906020012083612de8565b6040805160b080825260e082019092526060916020820181803683370190505090506128e8818360006020612df8565b6128fa81876080015160206060612df8565b612908818660806030612df8565b604080516001808252818301909252606091602082018180368337019050509050815160016020830182602086016066600019fa61294557600080fd5b506001612953826000612e4b565b60ff161461296857600094505050505061276a565b5060019695505050505050565b81518151600091600191811480831461299157600092506129cf565b600160208701838101602088015b6002848385100114156129ca5780518351146129be5760009650600093505b6020928301920161299f565b505050505b5090949350505050565b600081602001835110156129ec57600080fd5b50016020015190565b60408051600480825260a08201909252606091829190816020015b6060815260200190600190039081612a105790505090506124398361230e565b604080516020808252818301909252606091829190602082018180368337505050602081018490529050600067ffffffffffffffff198416612a7457506018612a98565b6fffffffffffffffffffffffffffffffff198416612a9457506010612a98565b5060005b6020811015612ace57818181518110612aad57fe5b01602001516001600160f81b03191615612ac657612ace565b600101612a98565b60008160200390506060816040519080825280601f01601f191660200182016040528015612b03576020820181803683370190505b5080830196909652508452509192915050565b6060680100000000000000008310612b405760405162461bcd60e51b81526004016105c390613875565b60408051600180825281830190925260609160208201818036833701905050905060378411612b9a5782840160f81b81600081518110612b7c57fe5b60200101906001600160f81b031916908160001a905350905061276a565b6060612ba585612a30565b90508381510160370160f81b82600081518110612bbe57fe5b60200101906001600160f81b031916908160001a905350612bdf8282612be8565b95945050505050565b6060806040519050835180825260208201818101602087015b81831015612c19578051835260209283019201612c01565b50855184518101855292509050808201602086015b81831015612c46578051835260209283019201612c2e565b508651929092011591909101601f01601f191660405250905092915050565b60408051600560a21b83186014820152603481019091526060906123ee8161230e565b612c90613038565b506040805180820190915281518152602082810190820152919050565b612cb5613018565b612cbe82612e67565b612cc757600080fd5b6000612cd68360200151612ea1565b60208085015160408051808201909152868152920190820152915050919050565b6000612d01613038565b505080518051602091820151919092015191011190565b612d20613038565b612d2982612cf7565b612d3257600080fd5b60208201516000612d4282612f04565b80830160209586015260408051808201909152908152938401919091525090919050565b805160009015801590612d7b57508151602110155b612d8457600080fd5b6000612d938360200151612ea1565b90508083600001511015612db95760405162461bcd60e51b81526004016105c390613b59565b825160208085015183018051928490039291831015612ddf57826020036101000a820491505b50949350505050565b9091018181526020918201910152565b60005b81811015610b9d57838181518110612e0f57fe5b602001015160f81c60f81b858480600101955081518110612e2c57fe5b60200101906001600160f81b031916908160001a905350600101612dfb565b60008160010183511015612e5e57600080fd5b50016001015190565b8051600090612e7857506000612309565b6020820151805160001a9060c0821015612e9757600092505050612309565b5060019392505050565b8051600090811a6080811015612ebb576000915050612309565b60b8811080612ed6575060c08110801590612ed6575060f881105b15612ee5576001915050612309565b60c0811015612ef95760b519019050612309565b60f519019050612309565b80516000908190811a6080811015612f1f5760019150612fdc565b60b8811015612f3457607e1981019150612fdc565b60c0811015612f8557600060b78203600186019550806020036101000a865104915060018101820193505080831015612f7f5760405162461bcd60e51b81526004016105c3906139e4565b50612fdc565b60f8811015612f9a5760be1981019150612fdc565b600060f78203600186019550806020036101000a8651049150600181018201935050808310156127955760405162461bcd60e51b81526004016105c3906139e4565b5092915050565b604051806060016040528060008152602001600081526020016000151581525090565b60408051602081019091526000815290565b604051806040016040528061302b613038565b8152602001600081525090565b604051806040016040528060008152602001600081525090565b600082601f830112613062578081fd5b815161307561307082613e4e565b613e27565b818152915060208083019084810160005b848110156130eb578151870188603f8201126130a157600080fd5b838101516130b161307082613e6e565b81815260408b818486010111156130c757600080fd5b6130d683888401838701613e92565b50865250509282019290820190600101613086565b505050505092915050565b60008083601f840112613107578182fd5b50813567ffffffffffffffff81111561311e578182fd5b60208301915083602082850101111561313657600080fd5b9250929050565b600082601f83011261314d578081fd5b813561315b61307082613e6e565b915080825283602082850101111561317257600080fd5b8060208401602084013760009082016020015292915050565b600060a0828403121561319c578081fd5b6131a660a0613e27565b905081358152602082013560208201526040820135604082015260608201356060820152608082013567ffffffffffffffff8111156131e457600080fd5b6131f08482850161313d565b60808301525092915050565b60006020828403121561320d578081fd5b81356123ee81613ebe565b600060208284031215613229578081fd5b81516123ee81613ebe565b60008060408385031215613246578081fd5b823561325181613ebe565b946020939093013593505050565b60008060408385031215613271578182fd5b825167ffffffffffffffff80821115613288578384fd5b81850186601f820112613299578485fd5b805192506132a961307084613e4e565b80848252602080830192508084018a8283890287010111156132c9578889fd5b8894505b868510156132f45780516132e081613ebe565b8452600194909401939281019281016132cd565b50880151909650935050508082111561330b578283fd5b5061331885828601613052565b9150509250929050565b600060208284031215613333578081fd5b815180151581146123ee578182fd5b60008060408385031215613354578182fd5b823567ffffffffffffffff8082111561336b578384fd5b6133778683870161313d565b9350602085013591508082111561338c578283fd5b506133188582860161313d565b600080600080604085870312156133ae578182fd5b843567ffffffffffffffff808211156133c5578384fd5b6133d1888389016130f6565b909650945060208701359150808211156133e9578384fd5b506133f6878288016130f6565b95989497509550505050565b600060208284031215613413578081fd5b813567ffffffffffffffff8082111561342a578283fd5b8184016060818703121561343c578384fd5b6134466060613e27565b9250803582811115613456578485fd5b6134628782840161318b565b845250602081013582811115613476578485fd5b6134828782840161318b565b602085015250604081013582811115613499578485fd5b6134a58782840161313d565b6040850152509195945050505050565b6000602082840312156134c6578081fd5b5035919050565b6000602082840312156134de578081fd5b5051919050565b6000806000604084860312156134f9578081fd5b833560ff81168114613509578182fd5b9250602084013567ffffffffffffffff811115613524578182fd5b613530868287016130f6565b9497909650939450505050565b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b6000815180845261357f816020860160208601613e92565b601f01601f19169290920160200192915050565b600082516135a5818460208701613e92565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b901515815260200190565b6000602082526123ee6020830184613567565b60006040825261360e60408301868861353d565b828103602084015261362181858761353d565b979650505050505050565b6020808252602a908201527f6c656e677468206f66206d616c6963696f7573566f7465536c61736853636f706040820152690ca40dad2e6dac2e8c6d60b31b606082015260800190565b60208082526010908201526f195d9a59195b98d9481d1bdbc81bdb1960821b604082015260600190565b6020808252818101527f6d616c6963696f757320766f746520736c617368206e6f7420656e61626c6564604082015260600190565b6020808252601690820152751d985b1a59185d1bdc881b9bdd081b5a59dc985d195960521b604082015260600190565b60208082526019908201527f74686520636f6e7472616374206e6f7420696e69742079657400000000000000604082015260600190565b6020808252602b908201527f746865206d616c6963696f757320766f746520736c6173682073636f7065206f60408201526a7574206f662072616e676560a81b606082015260800190565b6020808252601a908201527f6e6f2076696f6c6174696f6e206f6620766f74652072756c6573000000000000604082015260600190565b6020808252818101527f7468652066656c6f6e795468726573686f6c64206f7574206f662072616e6765604082015260600190565b6020808252602b908201527f6c656e677468206f6620656e61626c654d616c6963696f7573566f7465536c6160408201526a0e6d040dad2e6dac2e8c6d60ab1b606082015260800190565b60208082526017908201527f766572696679207369676e6174757265206661696c6564000000000000000000604082015260600190565b6020808252600e908201526d696e70757420746f6f206c6f6e6760901b604082015260600190565b60208082526019908201527f7372634e756d20626967676572207468616e207461724e756d00000000000000604082015260600190565b6020808252602c908201527f7468652066696e616c69747920736c6173682072657761726420726174696f2060408201526b6f7574206f662072616e676560a01b606082015260800190565b60208082526027908201527f6c656e677468206f66206d697364656d65616e6f725468726573686f6c64206d6040820152660d2e6dac2e8c6d60cb1b606082015260800190565b60208082526013908201527274776f206964656e746963616c20766f74657360681b604082015260600190565b60208082526030908201527f746865206d6573736167652073656e646572206d7573742062652076616c696460408201526f185d1bdc94d95d0818dbdb9d1c9858dd60821b606082015260800190565b6020808252601190820152706164646974696f6e206f766572666c6f7760781b604082015260600190565b6020808252601490820152736761737072696365206973206e6f74207a65726f60601b604082015260600190565b6020808252601590820152741d9bdd195059191c881a5cc81b9bdd08199bdd5b99605a1b604082015260600190565b6020808252602e908201527f746865206d6573736167652073656e646572206d75737420626520676f76657260408201526d1b985b98d94818dbdb9d1c9858dd60921b606082015260800190565b60208082526022908201527f6c656e677468206f662066656c6f6e795468726573686f6c64206d69736d61746040820152610c6d60f31b606082015260800190565b60208082526019908201527f74686520636f6e747261637420616c726561647920696e697400000000000000604082015260600190565b6020808252600c908201526b32b6b83a3c903432b0b232b960a11b604082015260600190565b6020808252601a908201527f6c656e677468206973206c657373207468616e206f6666736574000000000000604082015260600190565b60208082526025908201527f746865206d697364656d65616e6f725468726573686f6c64206f7574206f662060408201526472616e676560d81b606082015260800190565b6020808252602f908201527f746865206d6573736167652073656e646572206d7573742062652063726f737360408201526e0818da185a5b8818dbdb9d1c9858dd608a1b606082015260800190565b6020808252602d908201527f746865206d6573736167652073656e646572206d75737420626520746865206260408201526c3637b1b590383937b23ab1b2b960991b606082015260800190565b6020808252600d908201526c756e6b6e6f776e20706172616d60981b604082015260600190565b6020808252601490820152731d185c99d95d08189b1bd8dac81d1bdbc81bdb1960621b604082015260600190565b6020808252601e908201527f7265636569766520756e65787065637465642073796e207061636b6167650000604082015260600190565b6020808252602b908201527f6c656e677468206f662066696e616c697479536c61736852657761726452617460408201526a0d2de40dad2e6dac2e8c6d60ab1b606082015260800190565b6020808252818101527f63616e206e6f7420736c61736820747769636520696e206f6e6520626c6f636b604082015260600190565b61ffff91909116815260200190565b90815260200190565b600083825260406020830152613dae6040830184613567565b949350505050565b918252602082015260400190565b92835260208301919091521515604082015260600190565b63ffffffff91909116815260200190565b60ff91909116815260200190565b600060ff8516825260606020830152613e176060830185613567565b9050826040830152949350505050565b60405181810167ffffffffffffffff81118282101715613e4657600080fd5b604052919050565b600067ffffffffffffffff821115613e64578081fd5b5060209081020190565b600067ffffffffffffffff821115613e84578081fd5b50601f01601f191660200190565b60005b83811015613ead578181015183820152602001613e95565b83811115611e3f5750506000910152565b6001600160a01b0381168114613ed357600080fd5b5056fea164736f6c6343000604000a", - }, - { - ContractAddr: common.HexToAddress(StakingContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/cfc0bd1127186a917ddc38fd38d22903034d3f0b", - Code: "6080604052600436106103a65760003560e01c8063718a8aa8116101e7578063b88a802f1161010d578063dc927faf116100a0578063f9a2bbc71161006f578063f9a2bbc714610ca0578063fa03f79714610cb5578063fc3e590814610692578063fd6a687914610cca576103ad565b8063dc927faf14610c1c578063df8079e914610c31578063edc1a5b014610c46578063f45fd80b14610c5b576103ad565b8063c81b1662116100dc578063c81b166214610b47578063c8509d8114610b5c578063d61b9b9314610be1578063d7ecfcb61461083a576103ad565b8063b88a802f14610acd578063baaafd3b14610ae2578063bf8546ca14610af7578063c2117d8214610b32576103ad565b80639dc0926211610185578063aad5606311610154578063aad56063146109c3578063ab51bb96146109d8578063ac431751146109ed578063b14315df14610ab8576103ad565b80639dc092621461095b578063a1a11bf514610970578063a78abc1614610985578063aa82dce1146109ae576103ad565b80637942fd05116101c15780637942fd05146108ac578063831d65d1146108c157806392b888a41461063e57806396713da914610946576103ad565b8063718a8aa81461084f57806375aca5931461086457806375d47a0a14610897576103ad565b8063413d9c3a116102cc5780635d17c8bd1161026a5780636bd8f804116102395780636bd8f804146107bc5780636e47b482146107f25780636fb7f7eb1461080757806370fd5bad1461083a576103ad565b80635d17c8bd146107685780635d499b1b1461077d57806362b171d21461079257806369b635b6146107a7576103ad565b80634bf6c882116102a65780634bf6c882146106fd5780634d99dd161461071257806351e806721461073e578063552aaf9314610753576103ad565b8063413d9c3a146106a757806343756e5c146106bc578063493279b1146106d1576103ad565b806311fe9ec611610344578063333ad3e711610313578063333ad3e71461066857806334c433541461067d5780633dffc3871461063e5780633fdfa7e414610692576103ad565b806311fe9ec6146105e0578063151817e31461061357806317c9efb01461063e5780632fdeb11114610653576103ad565b80630bee7a67116103805780630bee7a67146104725780630c795715146104a05780630e2374a5146104b55780631182b875146104e6576103ad565b8063026e402b146103b257806302985992146103e0578063047636d114610407576103ad565b366103ad57005b600080fd5b6103de600480360360408110156103c857600080fd5b506001600160a01b038135169060200135610cdf565b005b3480156103ec57600080fd5b506103f5610d1c565b60408051918252519081900360200190f35b34801561041357600080fd5b5061043a6004803603602081101561042a57600080fd5b50356001600160a01b0316610d22565b6040518082606080838360005b8381101561045f578181015183820152602001610447565b5050505090500191505060405180910390f35b34801561047e57600080fd5b50610487610d76565b6040805163ffffffff9092168252519081900360200190f35b3480156104ac57600080fd5b506103f5610d7b565b3480156104c157600080fd5b506104ca610d81565b604080516001600160a01b039092168252519081900360200190f35b3480156104f257600080fd5b5061056b6004803603604081101561050957600080fd5b60ff8235169190810190604081016020820135600160201b81111561052d57600080fd5b82018360208201111561053f57600080fd5b803590602001918460018302840111600160201b8311171561056057600080fd5b509092509050610d87565b6040805160208082528351818301528351919283929083019185019080838360005b838110156105a557818101518382015260200161058d565b50505050905090810190601f1680156105d25780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156105ec57600080fd5b506103f56004803603602081101561060357600080fd5b50356001600160a01b0316610f43565b34801561061f57600080fd5b50610628610f5e565b6040805160ff9092168252519081900360200190f35b34801561064a57600080fd5b50610628610f63565b34801561065f57600080fd5b506103f5610f68565b34801561067457600080fd5b50610487610f6e565b34801561068957600080fd5b506103f5610f73565b34801561069e57600080fd5b50610628610f7e565b3480156106b357600080fd5b506103f5610f83565b3480156106c857600080fd5b506104ca610f8a565b3480156106dd57600080fd5b506106e6610f90565b6040805161ffff9092168252519081900360200190f35b34801561070957600080fd5b50610628610f96565b6103de6004803603604081101561072857600080fd5b506001600160a01b038135169060200135610f9b565b34801561074a57600080fd5b506104ca6115c8565b34801561075f57600080fd5b506106286115ce565b34801561077457600080fd5b506103f56115d3565b34801561078957600080fd5b506103f56115d9565b34801561079e57600080fd5b506103f56115e2565b3480156107b357600080fd5b506103f5611782565b6103de600480360360608110156107d257600080fd5b506001600160a01b03813581169160208101359091169060400135610cdf565b3480156107fe57600080fd5b506104ca611788565b34801561081357600080fd5b506103f56004803603602081101561082a57600080fd5b50356001600160a01b031661178e565b34801561084657600080fd5b506106286117a9565b34801561085b57600080fd5b506106286117ae565b34801561087057600080fd5b506103f56004803603602081101561088757600080fd5b50356001600160a01b03166117b3565b3480156108a357600080fd5b506104ca6117ce565b3480156108b857600080fd5b506106286117d4565b3480156108cd57600080fd5b506103de600480360360408110156108e457600080fd5b60ff8235169190810190604081016020820135600160201b81111561090857600080fd5b82018360208201111561091a57600080fd5b803590602001918460018302840111600160201b8311171561093b57600080fd5b5090925090506117d9565b34801561095257600080fd5b50610628611aa1565b34801561096757600080fd5b506104ca611aa6565b34801561097c57600080fd5b506104ca611aac565b34801561099157600080fd5b5061099a611ab2565b604080519115158252519081900360200190f35b3480156109ba57600080fd5b506104ca611abb565b3480156109cf57600080fd5b506104ca611ac1565b3480156109e457600080fd5b506104876115ce565b3480156109f957600080fd5b506103de60048036036040811015610a1057600080fd5b810190602081018135600160201b811115610a2a57600080fd5b820183602082011115610a3c57600080fd5b803590602001918460018302840111600160201b83111715610a5d57600080fd5b919390929091602081019035600160201b811115610a7a57600080fd5b820183602082011115610a8c57600080fd5b803590602001918460018302840111600160201b83111715610aad57600080fd5b509092509050611ac7565b348015610ac457600080fd5b50610628612259565b348015610ad957600080fd5b506103f561225e565b348015610aee57600080fd5b506103f56123fb565b348015610b0357600080fd5b506103f560048036036040811015610b1a57600080fd5b506001600160a01b0381358116916020013516612406565b348015610b3e57600080fd5b506103f5612433565b348015610b5357600080fd5b506104ca612439565b348015610b6857600080fd5b506103de60048036036040811015610b7f57600080fd5b60ff8235169190810190604081016020820135600160201b811115610ba357600080fd5b820183602082011115610bb557600080fd5b803590602001918460018302840111600160201b83111715610bd657600080fd5b50909250905061243f565b348015610bed57600080fd5b506103f560048036036040811015610c0457600080fd5b506001600160a01b0381358116916020013516612662565b348015610c2857600080fd5b506104ca61268d565b348015610c3d57600080fd5b506104ca612693565b348015610c5257600080fd5b506103f5612699565b348015610c6757600080fd5b506103f560048036036060811015610c7e57600080fd5b506001600160a01b0381358116916020810135821691604090910135166126a6565b348015610cac57600080fd5b506104ca6126db565b348015610cc157600080fd5b506103f56126e1565b348015610cd657600080fd5b506104ca6126e7565b6040805162461bcd60e51b815260206004820152600d60248201526c1b9bdd081cdd5c1c1bdc9d1959609a1b604482015290519081900360640190fd5b60035481565b610d2a614622565b610d32614622565b6001600160a01b0383166000818152600b60209081526040808320548552838352600c82528083205485830152928252600d9052819020549082015290505b919050565b606481565b6108fc81565b61200181565b60603361200014610dc95760405162461bcd60e51b815260040180806020018281038252602f815260200180614805602f913960400191505060405180910390fd5b60005460ff16610e0c576638d7ea4c6800006001908155662386f26fc1000060025568056bc75e2d631000006003556108fc6011556000805460ff191690911790555b610e14614640565b610e5b610e5685858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506126ed92505050565b612712565b90506000610e70610e6b8361275c565b6127aa565b90506000606060ff831660041415610e9557610e8b84612861565b9092509050610eec565b60ff831660051415610eaa57610e8b84612a41565b6040805162461bcd60e51b8152602060048201526012602482015271756e6b6e6f776e206576656e74207479706560701b604482015290519081900360640190fd5b63ffffffff821615610f38576040805163ffffffff84168152905160ff8516917f391d6e5ea6ab6c49b9a0abb1782cae5def8d711f973b00c729658c0b2a80b31b919081900360200190a25b979650505050505050565b6001600160a01b031660009081526006602052604090205490565b600581565b600181565b60015481565b606581565b662386f26fc1000081565b600381565b620a8c0081565b61100181565b6102ca81565b600881565b60105460ff1660021415610fe7576040805162461bcd60e51b815260206004820152600e60248201526d4e6f2072652d656e7472616e637960901b604482015290519081900360640190fd5b6010805460ff19166002179055806402540be400340615801561100f57506402540be4008106155b611060576040805162461bcd60e51b815260206004820152601c60248201527f707265636973696f6e206c6f737320696e20636f6e76657273696f6e00000000604482015290519081900360640190fd5b60005460ff166110a3576638d7ea4c6800006001908155662386f26fc1000060025568056bc75e2d631000006003556108fc6011556000805460ff191690911790555b6001543410156110f1576040805162461bcd60e51b81526020600482015260146024820152736e6f7420656e6f7567682072656c61792066656560601b604482015290519081900360640190fd5b6003548210156111ac573360009081526005602090815260408083206001600160a01b03871684529091529020548214611163576040805162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a5908185b5bdd5b9d60921b604482015290519081900360640190fd5b60025482116111ac576040805162461bcd60e51b815260206004820152601060248201526f6e6f7420656e6f7567682066756e647360801b604482015290519081900360640190fd5b3360009081526007602090815260408083206001600160a01b0387168452909152902054421015611224576040805162461bcd60e51b815260206004820152601a60248201527f70656e64696e6720756e64656c65676174696f6e206578697374000000000000604482015290519081900360640190fd5b604080518082018252601081526f6e6f7420656e6f7567682066756e647360801b602080830191909152336000908152600582528381206001600160a01b03881682529091529182205461127f91859063ffffffff612c5d16565b905080156112c75760025481116112c75760405162461bcd60e51b81526004018080602001828103825260258152602001806147e06025913960400191505060405180910390fd5b60006112de846402540be40063ffffffff612cf416565b60025490915034906000906112fa90839063ffffffff612d3d16565b6040805160038082526080820190925291925060609190816020015b606081526020019060019003908161131657905050905061133633612d7f565b8160008151811061134357fe5b6020026020010181905250611360886001600160a01b0316612d7f565b8160018151811061136d57fe5b602002602001018190525061138184612da2565b8160028151811061138e57fe5b602002602001018190525060606113ae60026113a984612db5565b612e3f565b8051602080830191909120600f80546000908152600a845260408082209390935581546001908101909255338152600c90935291208054909101905590506113ff42620a8c0063ffffffff612ec516565b3360009081526007602090815260408083206001600160a01b038e16845290915290205561200063f7a251d7601083611443876402540be40063ffffffff612cf416565b6040518463ffffffff1660e01b8152600401808460ff1660ff16815260200180602001838152602001828103825284818151815260200191508051906020019080838360005b838110156114a1578181015183820152602001611489565b50505050905090810190601f1680156114ce5780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b1580156114ef57600080fd5b505af1158015611503573d6000803e3d6000fd5b5050604051611004925085156108fc02915085906000818181858888f19350505050158015611536573d6000803e3d6000fd5b506002546040516110029180156108fc02916000818181858888f19350505050158015611567573d6000803e3d6000fd5b50604080518981526020810185905281516001600160a01b038c169233927fdf0b6ac27f3f3bb31cee3dab0f4fe40cc19c6a3f8daaec52e06b261e58a12519929081900390910190a350506010805460ff1916600117905550505050505050565b61200081565b600081565b60025481565b6402540be40081565b60105460009060ff1660021415611631576040805162461bcd60e51b815260206004820152600e60248201526d4e6f2072652d656e7472616e637960901b604482015290519081900360640190fd5b506010805460ff191660021790553360009081526008602052604090205480611698576040805162461bcd60e51b81526020600482015260146024820152736e6f20756e64656c6567617465642066756e647360601b604482015290519081900360640190fd5b336000818152600860205260408082208290556011549051919291849084818181858888f193505050503d80600081146116ee576040519150601f19603f3d011682016040523d82523d6000602084013e6116f3565b606091505b505090508061173b576040805162461bcd60e51b815260206004820152600f60248201526e1d1c985b9cd9995c8819985a5b1959608a1b604482015290519081900360640190fd5b60408051838152905133917fc712d133b8d448221aaed2198ed1f0db6dfc860fb01bc3a630916fe6cbef946f919081900360200190a2506010805460ff1916600117905590565b60035490565b61100581565b6001600160a01b031660009081526004602052604090205490565b600281565b601081565b6001600160a01b031660009081526008602052604090205490565b61100881565b600b81565b33612000146118195760405162461bcd60e51b815260040180806020018281038252602f815260200180614805602f913960400191505060405180910390fd5b60005460ff1661185c576638d7ea4c6800006001908155662386f26fc1000060025568056bc75e2d631000006003556108fc6011556000805460ff191690911790555b611864614640565b6118a6610e5684848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506126ed92505050565b905060008060606000805b6118ba86612f1f565b1561192557806118d7576118d0610e6b8761275c565b945061191d565b80600114156118f3576118ec610e6b8761275c565b935061191d565b80600214156119185761190d6119088761275c565b612f40565b92506001915061191d565b611925565b6001016118b1565b8161196b576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b61197483612fb0565b6119b7576040805162461bcd60e51b815260206004820152600f60248201526e0eee4dedcce40e0c2c6d640d0c2e6d608b1b604482015290519081900360640190fd5b6119c3610e56846126ed565b955060006119d3610e6b8861275c565b90506119dd614640565b6119e688612f1f565b15611a0957611a02610e566119fd6119088b61275c565b6126ed565b9050611a4a565b6040805162461bcd60e51b8152602060048201526011602482015270656d7074792061636b207061636b61676560781b604482015290519081900360640190fd5b60ff821660011415611a6657611a61818888613004565b611a94565b60ff821660021415611a7d57611a618188886133bb565b60ff821660031415610eaa57611a61818888613688565b5050505050505050505050565b600981565b61100781565b61100681565b60005460ff1681565b61200281565b61300081565b60005460ff16611b1e576040805162461bcd60e51b815260206004820152601960248201527f74686520636f6e7472616374206e6f7420696e69742079657400000000000000604482015290519081900360640190fd5b3361100714611b5e5760405162461bcd60e51b815260040180806020018281038252602e815260200180614756602e913960400191505060405180910390fd5b611bbf84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600a81526972656c6179657246656560b01b602082015291506139ed9050565b15611d255760208114611c19576040805162461bcd60e51b815260206004820152601d60248201527f6c656e677468206f662072656c61796572466565206d69736d61746368000000604482015290519081900360640190fd5b604080516020601f8401819004810282018101909252828152600091611c5791858580838501838280828437600092019190915250613ad492505050565b90506003548110611c995760405162461bcd60e51b815260040180806020018281038252602e815260200180614784602e913960400191505060405180910390fd5b6002548111611cd95760405162461bcd60e51b815260040180806020018281038252602e8152602001806147b2602e913960400191505060405180910390fd5b6402540be400810615611d1d5760405162461bcd60e51b815260040180806020018281038252602c81526020018061472a602c913960400191505060405180910390fd5b6001556121c7565b611d8984848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600d81526c62534352656c6179657246656560981b602082015291506139ed9050565b15611eeb5760208114611de3576040805162461bcd60e51b815260206004820181905260248201527f6c656e677468206f662062534352656c61796572466565206d69736d61746368604482015290519081900360640190fd5b604080516020601f8401819004810282018101909252828152600091611e2191858580838501838280828437600092019190915250613ad492505050565b905080611e5f5760405162461bcd60e51b81526004018080602001828103825260228152602001806148346022913960400191505060405180910390fd5b6001548110611e9f5760405162461bcd60e51b815260040180806020018281038252602e8152602001806146aa602e913960400191505060405180910390fd5b6402540be400810615611ee35760405162461bcd60e51b815260040180806020018281038252602f81526020018061467b602f913960400191505060405180910390fd5b6002556121c7565b611f4f84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600d81526c36b4b72232b632b3b0ba34b7b760991b602082015291506139ed9050565b156120315760208114611fa9576040805162461bcd60e51b815260206004820181905260248201527f6c656e677468206f66206d696e44656c65676174696f6e206d69736d61746368604482015290519081900360640190fd5b604080516020601f8401819004810282018101909252828152600091611fe791858580838501838280828437600092019190915250613ad492505050565b905060015481116120295760405162461bcd60e51b81526004018080602001828103825260318152602001806146d86031913960400191505060405180910390fd5b6003556121c7565b61209384848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600b81526a7472616e7366657247617360a81b602082015291506139ed9050565b1561218a57602081146120ed576040805162461bcd60e51b815260206004820152601e60248201527f6c656e677468206f66207472616e73666572476173206d69736d617463680000604482015290519081900360640190fd5b604080516020601f840181900481028201810190925282815260009161212b91858580838501838280828437600092019190915250613ad492505050565b905060008111612182576040805162461bcd60e51b815260206004820152601e60248201527f746865207472616e736665724761732063616e6e6f74206265207a65726f0000604482015290519081900360640190fd5b6011556121c7565b6040805162461bcd60e51b815260206004820152600d60248201526c756e6b6e6f776e20706172616d60981b604482015290519081900360640190fd5b7f6cdb0ac70ab7f2e2d035cca5be60d89906f2dede7648ddbd7402189c1eeed17a848484846040518080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600083820152604051601f909101601f19169092018290039850909650505050505050a150505050565b600481565b60105460009060ff16600214156122ad576040805162461bcd60e51b815260206004820152600e60248201526d4e6f2072652d656e7472616e637960901b604482015290519081900360640190fd5b506010805460ff191660021790553360009081526006602052604090205480612311576040805162461bcd60e51b81526020600482015260116024820152701b9bc81c195b991a5b99c81c995dd85c99607a1b604482015290519081900360640190fd5b336000818152600660205260408082208290556011549051919291849084818181858888f193505050503d8060008114612367576040519150601f19603f3d011682016040523d82523d6000602084013e61236c565b606091505b50509050806123b4576040805162461bcd60e51b815260206004820152600f60248201526e1d1c985b9cd9995c8819985a5b1959608a1b604482015290519081900360640190fd5b60408051838152905133917f83b78188b13346b2ffb484da70d42ee27de7fbf9f2bd8045269e10ed643ccd76919081900360200190a2506010805460ff1916600117905590565b6638d7ea4c68000081565b6001600160a01b038083166000908152600760209081526040808320938516835292905220545b92915050565b60015490565b61100281565b336120001461247f5760405162461bcd60e51b815260040180806020018281038252602f815260200180614805602f913960400191505060405180910390fd5b60005460ff166124c2576638d7ea4c6800006001908155662386f26fc1000060025568056bc75e2d631000006003556108fc6011556000805460ff191690911790555b61250182828080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612fb092505050565b612544576040805162461bcd60e51b815260206004820152600f60248201526e0eee4dedcce40e0c2c6d640d0c2e6d608b1b604482015290519081900360640190fd5b61254c614640565b61258e610e5684848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506126ed92505050565b9050600061259e610e6b8361275c565b90506125a8614640565b6125b183612f1f565b156125cf576125c8610e566119fd6119088661275c565b9050612615565b6040805162461bcd60e51b8152602060048201526016602482015275656d707479206661696c2061636b207061636b61676560501b604482015290519081900360640190fd5b60ff82166001141561262f5761262a81613ad9565b612659565b60ff8216600214156126445761262a81613cf3565b60ff821660031415610eaa5761262a81613e1d565b5050505b505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b61100381565b61200481565b68056bc75e2d6310000081565b6001600160a01b0392831660009081526009602090815260408083209486168352938152838220929094168152925290205490565b61100081565b60115481565b61100481565b6126f5614660565b506040805180820190915281518152602082810190820152919050565b61271a614640565b61272382613f82565b61272c57600080fd5b600061273b8360200151613fbc565b60208085015160408051808201909152868152920190820152915050919050565b612764614660565b61276d82612f1f565b61277657600080fd5b602082015160006127868261401f565b80830160209586015260408051808201909152908152938401919091525090919050565b8051600090158015906127bf57508151602110155b6127c857600080fd5b60006127d78360200151613fbc565b90508083600001511015612832576040805162461bcd60e51b815260206004820152601a60248201527f6c656e677468206973206c657373207468616e206f6666736574000000000000604482015290519081900360640190fd5b82516020808501518301805192849003929183101561285857826020036101000a820491505b50949350505050565b600060606000806000805b61287587612f1f565b156128c757826128975761289061288b8861275c565b614152565b91506128bc565b82600114156128b7576128ac610e6b8861275c565b9050600193506128bc565b6128c7565b82600101925061286c565b8361290d576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b60006110046001600160a01b031663727be1f8836040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b15801561295757600080fd5b505af115801561296b573d6000803e3d6000fd5b505050506040513d602081101561298157600080fd5b50519050806129a65761299860048484606561416c565b965096505050505050612a3c565b6001600160a01b0383166000908152600660205260409020546129cf908363ffffffff612ec516565b6001600160a01b038416600081815260066020908152604091829020939093558051858152905191927f7cc266c7b444f808013fa187f7b904d470a051a6564e78f482aa496581ba4bf892918290030190a260408051600080825260208201909252909750955050505050505b915091565b6000606060008060008060005b612a5788612f1f565b15612ac05783612a7457612a6d61288b8961275c565b9250612ab5565b8360011415612a9057612a8961288b8961275c565b9150612ab5565b8360021415612ab057612aa5610e6b8961275c565b905060019450612ab5565b612ac0565b836001019350612a4e565b84612b06576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b60006110046001600160a01b031663727be1f8836040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b158015612b5057600080fd5b505af1158015612b64573d6000803e3d6000fd5b505050506040513d6020811015612b7a57600080fd5b5051905080612ba057612b9160058584606561416c565b97509750505050505050612a3c565b6001600160a01b038085166000818152600760209081526040808320948816835293815283822082905591815260089091522054612be4908363ffffffff612ec516565b6001600160a01b0380861660008181526008602090815260409182902094909455805186815290519287169391927f35a799836f74fac7eccf5c73902823b970543d2274d3b93d8da3d37a255772a2929181900390910190a3604080516000808252602082019092529098509650505050505050915091565b60008184841115612cec5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612cb1578181015183820152602001612c99565b50505050905090810190601f168015612cde5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000612d3683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614268565b9392505050565b6000612d3683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612c5d565b60408051600560a21b8318601482015260348101909152606090612d36816142cd565b606061242d612db083614323565b6142cd565b6060815160001415612dd65750604080516000815260208101909152610d71565b606082600081518110612de557fe5b602002602001015190506000600190505b8351811015612e2657612e1c82858381518110612e0f57fe5b6020026020010151614409565b9150600101612df6565b50612d36612e39825160c060ff16614486565b82614409565b6040805160028082526060828101909352829190816020015b6060815260200190600190039081612e58579050509050612e7b8460ff16612da2565b81600081518110612e8857fe5b6020026020010181905250612e9c836142cd565b81600181518110612ea957fe5b6020026020010181905250612ebd81612db5565b949350505050565b600082820183811015612d36576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000612f29614660565b505080518051602091820151919092015191011190565b8051606090612f4e57600080fd5b6000612f5d8360200151613fbc565b83516040805191839003808352601f19601f8201168301602001909152919250606090828015612f94576020820181803683370190505b509050600081602001905061285884876020015101828561457e565b8051602080830191909120600e546000908152600a9092526040822054808214612fdf57600092505050610d71565b5050600e80546000908152600a60205260408120558054600190810190915592915050565b60008060008060005b61301688612f1f565b1561307f57836130335761302c61288b8961275c565b9250613074565b836001141561304f5761304861288b8961275c565b9150613074565b836002141561306f57613064610e6b8961275c565b905060019450613074565b61307f565b83600101935061300d565b846130c5576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b60006130dc826402540be40063ffffffff6145c916565b6001600160a01b0385166000908152600b602052604090208054600019019055905060ff8816600114156132225760ff87161561314f576040805162461bcd60e51b815260206004820152600c60248201526b77726f6e672073746174757360a01b604482015290519081900360640190fd5b6001600160a01b038416600090815260046020526040902054613178908263ffffffff612ec516565b6001600160a01b038086166000908152600460209081526040808320949094556005815283822092871682529190915220546131ba908263ffffffff612ec516565b6001600160a01b038086166000818152600560209081526040808320948916808452948252918290209490945580518581529051929391927f9a57c81564ab02642f34fd87e41baa9b074c18342cec3b7268b62bf752018fd1929181900390910190a36133b0565b60ff8816613374576001600160a01b038416600090815260086020526040902054613253908263ffffffff612ec516565b6001600160a01b0385166000908152600860209081526040808320939093558251630e4f7c3f60e31b81526004810185905292516110049363727be1f89360248083019493928390030190829087803b1580156132af57600080fd5b505af11580156132c3573d6000803e3d6000fd5b505050506040513d60208110156132d957600080fd5b5051613322576040805162461bcd60e51b81526020600482015260136024820152721dda5d1a191c985dc8189b988819985a5b1959606a1b604482015290519081900360640190fd5b6040805182815260ff8916602082015281516001600160a01b0380871693908816927fcbd481ae600289fad8c0484d07ce0ffe4f010d7c844ecfdeaf2a13fead52886e929081900390910190a36133b0565b6040805162461bcd60e51b815260206004820152600c60248201526b77726f6e672073746174757360a01b604482015290519081900360640190fd5b505050505050505050565b60008060008060005b6133cd88612f1f565b1561343657836133ea576133e361288b8961275c565b925061342b565b8360011415613406576133ff61288b8961275c565b915061342b565b83600214156134265761341b610e6b8961275c565b90506001945061342b565b613436565b8360010193506133c4565b8461347c576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b6000613493826402540be40063ffffffff6145c916565b6001600160a01b0385166000908152600c602052604090208054600019019055905060ff8816600114156136125760ff871615613506576040805162461bcd60e51b815260206004820152600c60248201526b77726f6e672073746174757360a01b604482015290519081900360640190fd5b6001600160a01b03841660009081526004602052604090205461352f908263ffffffff612d3d16565b6001600160a01b03808616600090815260046020908152604080832094909455600581528382209287168252919091522054613571908263ffffffff612d3d16565b6001600160a01b038086166000908152600560209081526040808320938816835292905220556135aa42620a8c0063ffffffff612ec516565b6001600160a01b038086166000818152600760209081526040808320948916808452948252918290209490945580518581529051929391927fd6f878a5bcbbe79a64e6418bb0d56aaa20b9a60587d45749819df88dfc7c3c44929181900390910190a36133b0565b60ff8816613374576001600160a01b03808516600081815260076020908152604080832094881680845294825280832092909255815185815260ff8c169181019190915281517f4417d10c1e33efa83a770b8d4f47176e78c08c1298d534901ad3b16bb585fa2e929181900390910190a36133b0565b6000806000806000805b61369b89612f1f565b1561372057846136b8576136b161288b8a61275c565b9350613715565b84600114156136d4576136cd61288b8a61275c565b9250613715565b84600214156136f0576136e961288b8a61275c565b9150613715565b846003141561371057613705610e6b8a61275c565b905060019550613715565b613720565b846001019450613692565b85613766576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b600061377d826402540be40063ffffffff6145c916565b6001600160a01b0386166000908152600d602052604090208054600019019055905060ff8916600114156139505760ff8816156137f0576040805162461bcd60e51b815260206004820152600c60248201526b77726f6e672073746174757360a01b604482015290519081900360640190fd5b6001600160a01b03808616600090815260056020908152604080832093881683529290522054613826908263ffffffff612d3d16565b6001600160a01b038681166000908152600560209081526040808320898516845290915280822093909355908516815220546138629082612ec5565b6001600160a01b0380871660009081526005602090815260408083209388168352929052205561389b42620a8c0063ffffffff612ec516565b6001600160a01b03808716600090815260096020908152604080832089851684528252808320938816835292905220556138de42620a8c0063ffffffff612ec516565b6001600160a01b038087166000818152600960209081526040808320898616808552908352818420958b1680855295835292819020959095558451868152945191947f78bffae3f8c6691ac7fc1a3bff800cb2d612f5ad9ae5b0444cfe2eb15c189e18929081900390910190a46139e1565b60ff8916613374576001600160a01b038581166000818152600960209081526040808320898616808552818452828520968a16808652968452828520859055908352818420818552835281842093909355805186815260ff8e169281019290925280519293927fb93bee5c59f85ede6b074a99f4ffcd3e3fc0d5c3d8156de331de89a49e0ce77c9281900390910190a45b50505050505050505050565b6000816040516020018082805190602001908083835b60208310613a225780518252601f199092019160209182019101613a03565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405280519060200120836040516020018082805190602001908083835b60208310613a905780518252601f199092019160209182019101613a71565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040528051906020012014905092915050565b015190565b60008060008060005b613aeb86612f1f565b15613b545783613b0857613b0161288b8761275c565b9250613b49565b8360011415613b2457613b1d61288b8761275c565b9150613b49565b8360021415613b4457613b39610e6b8761275c565b905060019450613b49565b613b54565b836001019350613ae2565b84613b9a576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b6000613bb1826402540be40063ffffffff6145c916565b6001600160a01b0385166000908152600b6020908152604080832080546000190190556008909152902054909150613bef908263ffffffff612ec516565b6001600160a01b0385166000908152600860209081526040808320939093558251630e4f7c3f60e31b81526004810185905292516110049363727be1f89360248083019493928390030190829087803b158015613c4b57600080fd5b505af1158015613c5f573d6000803e3d6000fd5b505050506040513d6020811015613c7557600080fd5b5051613cbe576040805162461bcd60e51b81526020600482015260136024820152721dda5d1a191c985dc8189b988819985a5b1959606a1b604482015290519081900360640190fd5b6040516001907ff83de021914a4585482db5ca47d520a5657165b443fa2c7ef8ed4635f054da9b90600090a250505050505050565b60008060008060005b613d0586612f1f565b15613d6e5783613d2257613d1b61288b8761275c565b9250613d63565b8360011415613d3e57613d3761288b8761275c565b9150613d63565b8360021415613d5e57613d53610e6b8761275c565b905060019450613d63565b613d6e565b836001019350613cfc565b84613db4576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b6001600160a01b038084166000908152600c60209081526040808320805460001901905560078252808320938616835292905281812081905590516002917ff83de021914a4585482db5ca47d520a5657165b443fa2c7ef8ed4635f054da9b91a2505050505050565b6000806000806000805b613e3087612f1f565b15613eb55784613e4d57613e4661288b8861275c565b9350613eaa565b8460011415613e6957613e6261288b8861275c565b9250613eaa565b8460021415613e8557613e7e61288b8861275c565b9150613eaa565b8460031415613ea557613e9a610e6b8861275c565b905060019550613eaa565b613eb5565b846001019450613e27565b85613efb576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b6001600160a01b038481166000908152600d602090815260408083208054600019019055600982528083208785168085528184528285209588168552948352818420849055825280832093835292905281812081905590516003917ff83de021914a4585482db5ca47d520a5657165b443fa2c7ef8ed4635f054da9b91a250505050505050565b8051600090613f9357506000610d71565b6020820151805160001a9060c0821015613fb257600092505050610d71565b5060019392505050565b8051600090811a6080811015613fd6576000915050610d71565b60b8811080613ff1575060c08110801590613ff1575060f881105b15614000576001915050610d71565b60c08110156140145760b519019050610d71565b60f519019050610d71565b80516000908190811a608081101561403a576001915061414b565b60b881101561404f57607e198101915061414b565b60c08110156140c957600060b78203600186019550806020036101000a8651049150600181018201935050808310156140c3576040805162461bcd60e51b81526020600482015260116024820152706164646974696f6e206f766572666c6f7760781b604482015290519081900360640190fd5b5061414b565b60f88110156140de5760be198101915061414b565b600060f78203600186019550806020036101000a865104915060018101820193505080831015614149576040805162461bcd60e51b81526020600482015260116024820152706164646974696f6e206f766572666c6f7760781b604482015290519081900360640190fd5b505b5092915050565b805160009060151461416357600080fd5b61242d826127aa565b60006060614185846402540be40063ffffffff612cf416565b60408051600480825260a0820190925291955060609190816020015b60608152602001906001900390816141a15790505090506141c48760ff16612da2565b816000815181106141d157fe5b60200260200101819052506141ee866001600160a01b0316612d7f565b816001815181106141fb57fe5b602002602001018190525061420f85612da2565b8160028151811061421c57fe5b60200260200101819052506142368463ffffffff16612da2565b8160038151811061424357fe5b6020026020010181905250606061425982612db5565b94989497509395505050505050565b600081836142b75760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315612cb1578181015183820152602001612c99565b5060008385816142c357fe5b0495945050505050565b6060815160011480156142ff5750607f60f81b826000815181106142ed57fe5b01602001516001600160f81b03191611155b1561430b575080610d71565b61242d61431d8351608060ff16614486565b83614409565b604080516020808252818301909252606091829190602082018180368337505050602081018490529050600067ffffffffffffffff1984166143675750601861438b565b6fffffffffffffffffffffffffffffffff1984166143875750601061438b565b5060005b60208110156143c1578181815181106143a057fe5b01602001516001600160f81b031916156143b9576143c1565b60010161438b565b60008160200390506060816040519080825280601f01601f1916602001820160405280156143f6576020820181803683370190505b5080830196909652508452509192915050565b6060806040519050835180825260208201818101602087015b8183101561443a578051835260209283019201614422565b50855184518101855292509050808201602086015b8183101561446757805183526020928301920161444f565b508651929092011591909101601f01601f191660405250905092915050565b60606801000000000000000083106144d6576040805162461bcd60e51b815260206004820152600e60248201526d696e70757420746f6f206c6f6e6760901b604482015290519081900360640190fd5b604080516001808252818301909252606091602082018180368337019050509050603784116145305782840160f81b8160008151811061451257fe5b60200101906001600160f81b031916908160001a905350905061242d565b606061453b85614323565b90508381510160370160f81b8260008151811061455457fe5b60200101906001600160f81b031916908160001a9053506145758282614409565b95945050505050565b806145885761265d565b5b602081106145a8578251825260209283019290910190601f1901614589565b915181516020939093036101000a6000190180199091169216919091179052565b6000826145d85750600061242d565b828202828482816145e557fe5b0414612d365760405162461bcd60e51b81526004018080602001828103825260218152602001806147096021913960400191505060405180910390fd5b60405180606001604052806003906020820280368337509192915050565b6040518060400160405280614653614660565b8152602001600081525090565b60405180604001604052806000815260200160008152509056fe7468652042534352656c61796572466565206d6f642074656e20646563696d616c73206d757374206265207a65726f7468652042534352656c61796572466565206d757374206265206c657373207468616e2072656c61796572466565746865206d696e44656c65676174696f6e206d7573742062652067726561746572207468616e2072656c61796572466565536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f777468652072656c61796572466565206d6f642074656e20646563696d616c73206d757374206265207a65726f746865206d6573736167652073656e646572206d75737420626520676f7665726e616e636520636f6e74726163747468652072656c61796572466565206d757374206265206c657373207468616e206d696e44656c65676174696f6e7468652072656c61796572466565206d757374206265206d6f7265207468616e2042534352656c61796572466565696e73756666696369656e742062616c616e636520616674657220756e64656c6567617465746865206d6573736167652073656e646572206d7573742062652063726f737320636861696e20636f6e74726163747468652042534352656c61796572466565206d757374206e6f74206265207a65726fa164736f6c6343000604000a", - }, - { - ContractAddr: common.HexToAddress(StakeHubContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/cfc0bd1127186a917ddc38fd38d22903034d3f0b", - Code: "6080604052600436106200029f5760003560e01c8063982ef0a7116200015f578063cf06248c11620000c5578063de88700b1162000084578063de88700b146200083d578063e8f67c3b146200085f578063e992aaf51462000877578063f1f74d84146200088f578063fb50b31f14620008a7578063fc0c5ff114620008cc57600080fd5b8063cf06248c1462000793578063d115a20614620007d0578063d6ca429d14620007e8578063d8ca511f146200080d578063daacdb66146200082557600080fd5b8063b187bd26116200011e578063b187bd2614620006c1578063baa7199e14620006e1578063bdceadf31462000706578063c38fbec8146200071e578063c473318f1462000743578063cbb04d9d146200075b57600080fd5b8063982ef0a7146200060e578063a43569b31462000625578063aad3ec961462000659578063ac431751146200067e578063ae0f336d14620006a357600080fd5b80634e6fd6c411620002055780636ec01b2711620001c45780636ec01b27146200052457806375cc7d89146200057c57806376e7d6d614620005a15780637adcf7e814620005b95780638129fc1c14620005de5780638456cb5914620005f657600080fd5b80634e6fd6c4146200045b57806359491871146200048c5780635e7cc1c914620004b157806363a036b514620004d657806364028fbd146200050d57600080fd5b8063417c73a7116200025e578063417c73a7146200035d578063449ecfe6146200038257806345211bfd14620003a75780634838d16514620003cc5780634a49ac4c14620004115780634d99dd16146200043657600080fd5b8063046f7da214620002c65780630661806e14620002de578063092193ab14620003095780630e9fbf51146200032057806338409988146200034557600080fd5b36620002c1576000546301000000900460ff16600114620002bf57600080fd5b005b600080fd5b348015620002d357600080fd5b50620002bf620008e4565b348015620002eb57600080fd5b50620002f660025481565b6040519081526020015b60405180910390f35b620002bf6200031a36600462006971565b62000945565b3480156200032d57600080fd5b50620002bf6200033f366004620069d5565b62000ec1565b3480156200035257600080fd5b50620002f660035481565b3480156200036a57600080fd5b50620002bf6200037c36600462006971565b6200113f565b3480156200038f57600080fd5b50620002bf620003a136600462006971565b6200118f565b348015620003b457600080fd5b50620002bf620003c636600462006971565b62001342565b348015620003d957600080fd5b5062000400620003eb36600462006971565b60176020526000908152604090205460ff1681565b604051901515815260200162000300565b3480156200041e57600080fd5b50620002bf6200043036600462006971565b62001505565b3480156200044357600080fd5b50620002bf6200045536600462006a1a565b62001552565b3480156200046857600080fd5b506200047361dead81565b6040516001600160a01b03909116815260200162000300565b3480156200049957600080fd5b50620002bf620004ab36600462006a5f565b62001b70565b348015620004be57600080fd5b50620002bf620004d036600462006acd565b62002942565b348015620004e357600080fd5b50620004fb620004f536600462006aed565b62002b49565b60405162000300949392919062006baa565b620002bf6200051e36600462006c79565b620031d1565b3480156200053157600080fd5b50620005496200054336600462006971565b620036a1565b6040805182516001600160401b039081168252602080850151821690830152928201519092169082015260600162000300565b3480156200058957600080fd5b50620002bf6200059b36600462006971565b6200374b565b348015620005ae57600080fd5b50620002f660095481565b348015620005c657600080fd5b5062000473620005d8366004620069d5565b6200391e565b348015620005eb57600080fd5b50620002bf62003956565b3480156200060357600080fd5b50620002bf62003c6c565b620002bf6200061f36600462006d4b565b62003cd2565b3480156200063257600080fd5b506200064a6200064436600462006971565b62004377565b60405162000300919062006d85565b3480156200066657600080fd5b50620002bf6200067836600462006a1a565b62004664565b3480156200068b57600080fd5b50620002bf6200069d36600462006e0b565b620047cd565b348015620006b057600080fd5b50620002f6670de0b6b3a764000081565b348015620006ce57600080fd5b5060005462010000900460ff1662000400565b348015620006ee57600080fd5b50620002bf6200070036600462006e7d565b6200562b565b3480156200071357600080fd5b50620002f660085481565b3480156200072b57600080fd5b50620002bf6200073d36600462006971565b620057f8565b3480156200075057600080fd5b50620002f660045481565b3480156200076857600080fd5b50620007806200077a36600462006971565b62005a16565b6040516200030095949392919062006f09565b348015620007a057600080fd5b5062000473620007b236600462006971565b6001600160a01b039081166000908152600f60205260409020541690565b348015620007dd57600080fd5b50620002f661271081565b348015620007f557600080fd5b50620002bf6200080736600462006f4b565b62005e75565b3480156200081a57600080fd5b50620002f660075481565b3480156200083257600080fd5b50620002f660135481565b3480156200084a57600080fd5b5060165462000473906001600160a01b031681565b3480156200086c57600080fd5b50620002f660015481565b3480156200088457600080fd5b50620002f660065481565b3480156200089c57600080fd5b50620002f6600a5481565b348015620008b457600080fd5b50620002bf620008c636600462006e0b565b62005fc4565b348015620008d957600080fd5b50620002f660055481565b6016546001600160a01b03163314620009105760405163f2771a9960e01b815260040160405180910390fd5b6000805462ff0000191681556040517f62451d457bc659158be6e6247f56ec1df424a5c7597f71c20c2bc44e0965c8f99190a1565b33611000146200097157604051630f22c43960e41b815261100060048201526024015b60405180910390fd5b6001600160a01b038082166000908152600f60209081526040808320548416808452600d83528184208251610140810184528154871681526001820154871694810194909452600281015490951691830191909152600384018054919491606084019190620009e09062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462000a0e9062006f83565b801562000a5f5780601f1062000a335761010080835404028352916020019162000a5f565b820191906000526020600020905b81548152906001019060200180831162000a4157829003601f168201915b505050505081526020016004820160405180608001604052908160008201805462000a8a9062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462000ab89062006f83565b801562000b095780601f1062000add5761010080835404028352916020019162000b09565b820191906000526020600020905b81548152906001019060200180831162000aeb57829003601f168201915b5050505050815260200160018201805462000b249062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462000b529062006f83565b801562000ba35780601f1062000b775761010080835404028352916020019162000ba3565b820191906000526020600020905b81548152906001019060200180831162000b8557829003601f168201915b5050505050815260200160028201805462000bbe9062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462000bec9062006f83565b801562000c3d5780601f1062000c115761010080835404028352916020019162000c3d565b820191906000526020600020905b81548152906001019060200180831162000c1f57829003601f168201915b5050505050815260200160038201805462000c589062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462000c869062006f83565b801562000cd75780601f1062000cab5761010080835404028352916020019162000cd7565b820191906000526020600020905b81548152906001019060200180831162000cb957829003601f168201915b505050919092525050508152604080516060808201835260088501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600984015460ff16151582840152600a84015490830152600b8301546080830152805161028081019182905260a09092019190600c84019060149082845b81548152602001906001019080831162000d63575050509190925250505060408101519091506001600160a01b0316158062000da057508060c001515b1562000e1157816001600160a01b03167ffc8bff675087dd2da069cc3fb517b9ed001e19750c0865241a5542dba1ba170d60405162000e049060208082526011908201527024a72b20a624a22fab20a624a220aa27a960791b604082015260600190565b60405180910390a2505050565b60408181015160a0830151519151632f303ebb60e11b81526001600160401b0390921660048301526001600160a01b031690635e607d769034906024016000604051808303818588803b15801562000e6857600080fd5b505af115801562000e7d573d6000803e3d6000fd5b5050505050816001600160a01b03167fe34918ff1c7084970068b53fd71ad6d8b04e9f15d3886cbf006443e6cdc52ea63460405162000e0491815260200190565b50565b336110011462000ee957604051630f22c43960e41b8152611001600482015260240162000968565b6000600e838360405162000eff92919062006fb9565b908152604051908190036020019020546001600160a01b0316905062000f27600b82620061e6565b62000f455760405163fdf4600b60e01b815260040160405180910390fd5b6001600160a01b0381166000908152600d602052604081209062000f6d620151804262006fdf565b6014546000828152601560205260409020549192501162000fa15760405163413361db60e01b815260040160405180910390fd5b600081815260156020526040812080546001929062000fc290849062007002565b90915550600090508062000fd88560026200620b565b915091508162000ffb57604051631b919bb160e11b815260040160405180910390fd5b600284015460085460405163045bc4d160e41b815260048101919091526000916001600160a01b0316906345bc4d10906024016020604051808303816000875af11580156200104e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001074919062007018565b905062001082858362006295565b856001600160a01b03167f6e9a2ee7aee95665e3a774a212eb11441b217e3e4656ab9563793094689aabb283836002604051620010c29392919062007032565b60405180910390a26002850154604051633041949b60e01b81526001600160a01b039182166004820152908716602482015261200590633041949b90604401600060405180830381600087803b1580156200111c57600080fd5b505af115801562001131573d6000803e3d6000fd5b505050505050505050505050565b6016546001600160a01b031633146200116b5760405163f2771a9960e01b815260040160405180910390fd5b6001600160a01b03166000908152601760205260409020805460ff19166001179055565b60005462010000900460ff1615620011ba5760405163d7485e8f60e01b815260040160405180910390fd5b80620011c8600b82620061e6565b620011e65760405163fdf4600b60e01b815260040160405180910390fd5b6001600160a01b0382166000908152600d60205260409020600981015460ff166200122457604051634b6b857d60e01b815260040160405180910390fd5b6002805490820154604051630913db4760e01b81526001600160a01b03868116600483015290911690630913db4790602401602060405180830381865afa15801562001274573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200129a919062007018565b1015620012ba576040516317b204bf60e11b815260040160405180910390fd5b4281600a01541115620012e05760405163170cb76760e21b815260040160405180910390fd5b60098101805460ff191690556013805460019190600090620013049084906200706d565b90915550506040516001600160a01b038416907f9390b453426557da5ebdc31f19a37753ca04addf656d32f35232211bb2af3f1990600090a2505050565b60005462010000900460ff16156200136d5760405163d7485e8f60e01b815260040160405180910390fd5b3360009081526017602052604090205460ff16156200139f5760405163b1d02c3d60e01b815260040160405180910390fd5b33620013ad600b82620061e6565b620013cb5760405163fdf4600b60e01b815260040160405180910390fd5b6001600160a01b038216620013f357604051636520611b60e11b815260040160405180910390fd5b6001600160a01b038281166000908152600f6020526040902054161515806200143457506001600160a01b03821660009081526011602052604090205460ff165b156200145357604051631e6f587560e11b815260040160405180910390fd5b336000818152600d60205260409020600b810154429062001478906201518062007002565b11156200149857604051631f92cdbd60e11b815260040160405180910390fd5b80546001600160a01b038086166001600160a01b03199283168117845542600b8501556000818152600f60205260408082208054948816949095168417909455925190927f6e4e747ca35203f16401c69805c7dd52fff67ef60b0ebc5c7fe16890530f223591a350505050565b6016546001600160a01b03163314620015315760405163f2771a9960e01b815260040160405180910390fd5b6001600160a01b03166000908152601760205260409020805460ff19169055565b60005462010000900460ff16156200157d5760405163d7485e8f60e01b815260040160405180910390fd5b3360009081526017602052604090205460ff1615620015af5760405163b1d02c3d60e01b815260040160405180910390fd5b81620015bd600b82620061e6565b620015db5760405163fdf4600b60e01b815260040160405180910390fd5b81600003620015fd57604051639811e0c760e01b815260040160405180910390fd5b6001600160a01b038084166000908152600d60209081526040808320815161014081018352815486168152600182015486169381019390935260028101549094169082015260038301805433949160608401916200165b9062006f83565b80601f0160208091040260200160405190810160405280929190818152602001828054620016899062006f83565b8015620016da5780601f10620016ae57610100808354040283529160200191620016da565b820191906000526020600020905b815481529060010190602001808311620016bc57829003601f168201915b5050505050815260200160048201604051806080016040529081600082018054620017059062006f83565b80601f0160208091040260200160405190810160405280929190818152602001828054620017339062006f83565b8015620017845780601f10620017585761010080835404028352916020019162001784565b820191906000526020600020905b8154815290600101906020018083116200176657829003601f168201915b505050505081526020016001820180546200179f9062006f83565b80601f0160208091040260200160405190810160405280929190818152602001828054620017cd9062006f83565b80156200181e5780601f10620017f2576101008083540402835291602001916200181e565b820191906000526020600020905b8154815290600101906020018083116200180057829003601f168201915b50505050508152602001600282018054620018399062006f83565b80601f0160208091040260200160405190810160405280929190818152602001828054620018679062006f83565b8015620018b85780601f106200188c57610100808354040283529160200191620018b8565b820191906000526020600020905b8154815290600101906020018083116200189a57829003601f168201915b50505050508152602001600382018054620018d39062006f83565b80601f0160208091040260200160405190810160405280929190818152602001828054620019019062006f83565b8015620019525780601f10620019265761010080835404028352916020019162001952565b820191906000526020600020905b8154815290600101906020018083116200193457829003601f168201915b505050919092525050508152604080516060808201835260088501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600984015460ff16151582840152600a84015490830152600b8301546080830152805161028081019182905260a09092019190600c84019060149082845b815481526020019060010190808311620019de575050509190925250505060408082015190516326ccee8b60e11b81526001600160a01b0385811660048301526024820188905292935060009290911690634d99dd16906044016020604051808303816000875af115801562001a58573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001a7e919062007018565b9050826001600160a01b0316866001600160a01b03167f3aace7340547de7b9156593a7652dc07ee900cea3fd8f82cb6c9d38b40829802878460405162001acf929190918252602082015260400190565b60405180910390a3856001600160a01b0316836001600160a01b03160362001afc5762001afc866200638a565b6040828101519051633041949b60e01b81526001600160a01b039182166004820152908416602482015261200590633041949b906044015b600060405180830381600087803b15801562001b4f57600080fd5b505af115801562001b64573d6000803e3d6000fd5b50505050505050505050565b60005462010000900460ff161562001b9b5760405163d7485e8f60e01b815260040160405180910390fd5b3360009081526017602052604090205460ff161562001bcd5760405163b1d02c3d60e01b815260040160405180910390fd5b8362001bdb600b82620061e6565b62001bf95760405163fdf4600b60e01b815260040160405180910390fd5b8362001c07600b82620061e6565b62001c255760405163fdf4600b60e01b815260040160405180910390fd5b8360000362001c4757604051639811e0c760e01b815260040160405180910390fd5b846001600160a01b0316866001600160a01b03160362001c7a5760405163f0e3e62960e01b815260040160405180910390fd5b6001600160a01b038087166000908152600d602090815260408083208151610140810183528154861681526001820154861693810193909352600281015490941690820152600383018054339491606084019162001cd89062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462001d069062006f83565b801562001d575780601f1062001d2b5761010080835404028352916020019162001d57565b820191906000526020600020905b81548152906001019060200180831162001d3957829003601f168201915b505050505081526020016004820160405180608001604052908160008201805462001d829062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462001db09062006f83565b801562001e015780601f1062001dd55761010080835404028352916020019162001e01565b820191906000526020600020905b81548152906001019060200180831162001de357829003601f168201915b5050505050815260200160018201805462001e1c9062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462001e4a9062006f83565b801562001e9b5780601f1062001e6f5761010080835404028352916020019162001e9b565b820191906000526020600020905b81548152906001019060200180831162001e7d57829003601f168201915b5050505050815260200160028201805462001eb69062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462001ee49062006f83565b801562001f355780601f1062001f095761010080835404028352916020019162001f35565b820191906000526020600020905b81548152906001019060200180831162001f1757829003601f168201915b5050505050815260200160038201805462001f509062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462001f7e9062006f83565b801562001fcf5780601f1062001fa35761010080835404028352916020019162001fcf565b820191906000526020600020905b81548152906001019060200180831162001fb157829003601f168201915b505050919092525050508152604080516060808201835260088501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600984015460ff16151582840152600a84015490830152600b8301546080830152805161028081019182905260a09092019190600c84019060149082845b8154815260200190600101908083116200205b57505050919092525050506001600160a01b038089166000908152600d60209081526040808320815161014081018352815486168152600182015486169381019390935260028101549094169082015260038301805494955091939092916060840191620020dc9062006f83565b80601f01602080910402602001604051908101604052809291908181526020018280546200210a9062006f83565b80156200215b5780601f106200212f576101008083540402835291602001916200215b565b820191906000526020600020905b8154815290600101906020018083116200213d57829003601f168201915b5050505050815260200160048201604051806080016040529081600082018054620021869062006f83565b80601f0160208091040260200160405190810160405280929190818152602001828054620021b49062006f83565b8015620022055780601f10620021d95761010080835404028352916020019162002205565b820191906000526020600020905b815481529060010190602001808311620021e757829003601f168201915b50505050508152602001600182018054620022209062006f83565b80601f01602080910402602001604051908101604052809291908181526020018280546200224e9062006f83565b80156200229f5780601f1062002273576101008083540402835291602001916200229f565b820191906000526020600020905b8154815290600101906020018083116200228157829003601f168201915b50505050508152602001600282018054620022ba9062006f83565b80601f0160208091040260200160405190810160405280929190818152602001828054620022e89062006f83565b8015620023395780601f106200230d5761010080835404028352916020019162002339565b820191906000526020600020905b8154815290600101906020018083116200231b57829003601f168201915b50505050508152602001600382018054620023549062006f83565b80601f0160208091040260200160405190810160405280929190818152602001828054620023829062006f83565b8015620023d35780601f10620023a757610100808354040283529160200191620023d3565b820191906000526020600020905b815481529060010190602001808311620023b557829003601f168201915b505050919092525050508152604080516060808201835260088501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600984015460ff16151582840152600a84015490830152600b8301546080830152805161028081019182905260a09092019190600c84019060149082845b8154815260200190600101908083116200245f5750505050508152505090508060c001518015620024a25750876001600160a01b0316836001600160a01b031614155b15620024c157604051636468920360e01b815260040160405180910390fd5b6000805463ff0000001916630100000017815560408381015190516352e82ce560e11b81526001600160a01b038681166004830152602482018b90529091169063a5d059ca906044016020604051808303816000875af11580156200252a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002550919062007018565b9050600354811015620025765760405163dc6f0bdd60e01b815260040160405180910390fd5b896001600160a01b0316846001600160a01b03161480156200260b57506002546040808501519051630913db4760e01b81526001600160a01b038d8116600483015290911690630913db4790602401602060405180830381865afa158015620025e3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002609919062007018565b105b156200262a576040516317b204bf60e11b815260040160405180910390fd5b6000612710600654836200263f919062007083565b6200264b919062006fdf565b9050600083604001516001600160a01b03168260405160006040518083038185875af1925050503d8060008114620026a0576040519150601f19603f3d011682016040523d82523d6000602084013e620026a5565b606091505b5050905080620026c8576040516312171d8360e31b815260040160405180910390fd5b620026d482846200706d565b60408086015190516317066a5760e21b81526001600160a01b03898116600483015292955060009290911690635c19a95c90869060240160206040518083038185885af11580156200272a573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019062002751919062007018565b905060008060036101000a81548160ff021916908360ff160217905550866001600160a01b03168c6001600160a01b03168e6001600160a01b03167ffdac6e81913996d95abcc289e90f2d8bd235487ce6fe6f821e7d21002a1915b48e8589604051620027d1939291909283526020830191909152604082015260600190565b60405180910390a4604080516002808252606082018352600092602083019080368337019050509050866040015181600081518110620028155762002815620070b3565b60200260200101906001600160a01b031690816001600160a01b031681525050856040015181600181518110620028505762002850620070b3565b6001600160a01b0390921660209283029190910190910152604051634484077560e01b815261200590634484077590620028919084908c90600401620070c9565b600060405180830381600087803b158015620028ac57600080fd5b505af1158015620028c1573d6000803e3d6000fd5b505050508a1562002932576040516372f6ad8f60e11b81526001600160a01b0389811660048301528e1660248201526120059063e5ed5b1e90604401600060405180830381600087803b1580156200291857600080fd5b505af11580156200292d573d6000803e3d6000fd5b505050505b5050505050505050505050505050565b60005462010000900460ff16156200296d5760405163d7485e8f60e01b815260040160405180910390fd5b3360009081526017602052604090205460ff16156200299f5760405163b1d02c3d60e01b815260040160405180910390fd5b33620029ad600b82620061e6565b620029cb5760405163fdf4600b60e01b815260040160405180910390fd5b336000818152600d60205260409020600b8101544290620029f0906201518062007002565b111562002a1057604051631f92cdbd60e11b815260040160405180910390fd5b60088101546001600160401b03600160401b9091048116908516111562002a4a5760405163dc81db8560e01b815260040160405180910390fd5b60088101546000906001600160401b03908116908616101562002a8857600882015462002a829086906001600160401b0316620070f5565b62002aa2565b600882015462002aa2906001600160401b031686620070f5565b60088301546001600160401b039182169250600160801b90041681111562002add5760405163dc81db8560e01b815260040160405180910390fd5b60088201805467ffffffffffffffff19166001600160401b03871690811790915542600b8401556040519081526001600160a01b038416907f78cdd96edf59e09cfd4d26ef6ef6c92d166effe6a40970c54821206d541932cb9060200160405180910390a25050505050565b6060806060600062002b5c600b620064a3565b905080861015620031c857841562002b75578462002b77565b805b945060008562002b8888846200706d565b1162002ba05762002b9a87836200706d565b62002ba2565b855b9050806001600160401b0381111562002bbf5762002bbf6200709d565b60405190808252806020026020018201604052801562002be9578160200160208202803683370190505b509450806001600160401b0381111562002c075762002c076200709d565b60405190808252806020026020018201604052801562002c31578160200160208202803683370190505b509350806001600160401b0381111562002c4f5762002c4f6200709d565b60405190808252806020026020018201604052801562002c8457816020015b606081526020019060019003908162002c6e5790505b50925060005b81811015620031c557600062002cae62002ca5838b62007002565b600b90620064ae565b6001600160a01b038082166000908152600d6020908152604080832081516101408101835281548616815260018201548616938101939093526002810154909416908201526003830180549495509193909291606084019162002d119062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462002d3f9062006f83565b801562002d905780601f1062002d645761010080835404028352916020019162002d90565b820191906000526020600020905b81548152906001019060200180831162002d7257829003601f168201915b505050505081526020016004820160405180608001604052908160008201805462002dbb9062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462002de99062006f83565b801562002e3a5780601f1062002e0e5761010080835404028352916020019162002e3a565b820191906000526020600020905b81548152906001019060200180831162002e1c57829003601f168201915b5050505050815260200160018201805462002e559062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462002e839062006f83565b801562002ed45780601f1062002ea85761010080835404028352916020019162002ed4565b820191906000526020600020905b81548152906001019060200180831162002eb657829003601f168201915b5050505050815260200160028201805462002eef9062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462002f1d9062006f83565b801562002f6e5780601f1062002f425761010080835404028352916020019162002f6e565b820191906000526020600020905b81548152906001019060200180831162002f5057829003601f168201915b5050505050815260200160038201805462002f899062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462002fb79062006f83565b8015620030085780601f1062002fdc5761010080835404028352916020019162003008565b820191906000526020600020905b81548152906001019060200180831162002fea57829003601f168201915b505050919092525050508152604080516060808201835260088501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600984015460ff16151582840152600a84015490830152600b8301546080830152805161028081019182905260a09092019190600c84019060149082845b815481526020019060010190808311620030945750505050508152505090508060000151888481518110620030cd57620030cd620070b3565b60200260200101906001600160a01b031690816001600160a01b0316815250508060c00151620031665780604001516001600160a01b03166315d1f8986040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200313a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003160919062007018565b62003169565b60005b8784815181106200317e576200317e620070b3565b6020026020010181815250508060600151868481518110620031a457620031a4620070b3565b6020026020010181905250505080620031bd906200711f565b905062002c8a565b50505b92959194509250565b60005462010000900460ff1615620031fc5760405163d7485e8f60e01b815260040160405180910390fd5b3360009081526017602052604090205460ff16156200322e5760405163b1d02c3d60e01b815260040160405180910390fd5b336200323c600b82620061e6565b156200325b57604051635f28f62b60e01b815260040160405180910390fd5b6001600160a01b038881166000908152600f6020526040902054161515806200329c57506001600160a01b03881660009081526011602052604090205460ff165b15620032bb57604051631e6f587560e11b815260040160405180910390fd5b60006001600160a01b0316600e8888604051620032da92919062006fb9565b908152604051908190036020019020546001600160a01b0316141580620033245750601287876040516200331092919062006fb9565b9081526040519081900360200190205460ff165b1562003343576040516311fdb94760e01b815260040160405180910390fd5b60025434906200335d90670de0b6b3a76400009062007002565b8110156200337e576040516317b204bf60e11b815260040160405180910390fd5b6001600160a01b038916620033a657604051636520611b60e11b815260040160405180910390fd5b611388620033bb604086016020870162006acd565b6001600160401b03161180620034015750620033de604085016020860162006acd565b6001600160401b0316620033f6602086018662006acd565b6001600160401b0316115b806200344057506200341a604085016020860162006acd565b6001600160401b031662003435606086016040870162006acd565b6001600160401b0316115b156200345f5760405163dc81db8560e01b815260040160405180910390fd5b620034aa6200346f84806200713b565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250620064bc92505050565b620034c857604051635dba5ad760e01b815260040160405180910390fd5b620034d6888888886200665e565b620034f457604051631647e3cb60e11b815260040160405180910390fd5b600062003542836200350786806200713b565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506200678b92505050565b905062003551600b8462006855565b506001600160a01b038381166000818152600d6020526040902080546001600160a01b03199081168e8516178255600182018054821690931790925560028101805490921692841692909217905560038101620035b08a8c83620071ce565b508460048201620035c282826200729b565b5086905060088201620035d68282620073d8565b505042600b8201556001600160a01b038b81166000908152600f60205260409081902080546001600160a01b03191692871692909217909155518490600e9062003624908d908d9062006fb9565b90815260405190819003602001812080546001600160a01b039384166001600160a01b03199091161790558382169186811691908e16907faecd9fb95e79c75a3a1de93362c6be5fe6ab65770d8614be583884161cd8228d906200368c908f908f90620074a8565b60405180910390a45050505050505050505050565b604080516060810182526000808252602082018190529181019190915281620036cc600b82620061e6565b620036ea5760405163fdf4600b60e01b815260040160405180910390fd5b6001600160a01b0383166000908152600d602090815260409182902082516060810184526008909101546001600160401b038082168352600160401b8204811693830193909352600160801b90049091169181019190915291505b50919050565b33611001146200377357604051630f22c43960e41b8152611001600482015260240162000968565b6001600160a01b038082166000908152600f6020526040902054166200379b600b82620061e6565b620037b95760405163fdf4600b60e01b815260040160405180910390fd5b6001600160a01b038181166000908152600d60205260408082206002810154600754925163045bc4d160e41b81526004810193909352909316906345bc4d10906024016020604051808303816000875af11580156200381c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003842919062007018565b905060006009544262003856919062007002565b905062003864838262006295565b836001600160a01b03167f6e9a2ee7aee95665e3a774a212eb11441b217e3e4656ab9563793094689aabb282846001604051620038a49392919062007032565b60405180910390a26002830154604051633041949b60e01b81526001600160a01b039182166004820152908516602482015261200590633041949b90604401600060405180830381600087803b158015620038fe57600080fd5b505af115801562003913573d6000803e3d6000fd5b505050505050505050565b6000600e83836040516200393492919062006fb9565b908152604051908190036020019020546001600160a01b031690505b92915050565b600054610100900460ff1615808015620039775750600054600160ff909116105b80620039935750303b15801562003993575060005460ff166001145b620039f85760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840162000968565b6000805460ff19166001179055801562003a1c576000805461ff0019166101001790555b33411462003a3d5760405163022d8c9560e31b815260040160405180910390fd5b3a1562003a5d576040516383f1b1d360e01b815260040160405180910390fd5b611388600155686c6b935b8bbd4000006002908155670de0b6b3a7640000600355601d60045562093a806005556006819055678ac7230489e80000600755680ad78ebc5ac62000006008556202a30060095562278d00600a5560145560408051606081810183528282529182919062008671602083013980602001905181019062003ae9919062007517565b9150604051806060016040528060408152602001620086716040913980602001905181019062003b1a9190620075c1565b905060005b825181101562003b895760016011600085848151811062003b445762003b44620070b3565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905562003b81816200711f565b905062003b1f565b5060005b815181101562003bfa576001601283838151811062003bb05762003bb0620070b3565b602002602001015160405162003bc79190620076d7565b908152604051908190036020019020805491151560ff1990921691909117905562003bf2816200711f565b905062003b8d565b5050601680546001600160a01b03191673df87f0e2b8519ea2dd4abd8b639cdd628497ed2517905550801562000ebe576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b6016546001600160a01b0316331462003c985760405163f2771a9960e01b815260040160405180910390fd5b6000805462ff00001916620100001781556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e7529190a1565b60005462010000900460ff161562003cfd5760405163d7485e8f60e01b815260040160405180910390fd5b3360009081526017602052604090205460ff161562003d2f5760405163b1d02c3d60e01b815260040160405180910390fd5b8162003d3d600b82620061e6565b62003d5b5760405163fdf4600b60e01b815260040160405180910390fd5b600354349081101562003d815760405163dc6f0bdd60e01b815260040160405180910390fd5b6001600160a01b038085166000908152600d602090815260408083208151610140810183528154861681526001820154861693810193909352600281015490941690820152600383018054339491606084019162003ddf9062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462003e0d9062006f83565b801562003e5e5780601f1062003e325761010080835404028352916020019162003e5e565b820191906000526020600020905b81548152906001019060200180831162003e4057829003601f168201915b505050505081526020016004820160405180608001604052908160008201805462003e899062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462003eb79062006f83565b801562003f085780601f1062003edc5761010080835404028352916020019162003f08565b820191906000526020600020905b81548152906001019060200180831162003eea57829003601f168201915b5050505050815260200160018201805462003f239062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462003f519062006f83565b801562003fa25780601f1062003f765761010080835404028352916020019162003fa2565b820191906000526020600020905b81548152906001019060200180831162003f8457829003601f168201915b5050505050815260200160028201805462003fbd9062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462003feb9062006f83565b80156200403c5780601f1062004010576101008083540402835291602001916200403c565b820191906000526020600020905b8154815290600101906020018083116200401e57829003601f168201915b50505050508152602001600382018054620040579062006f83565b80601f0160208091040260200160405190810160405280929190818152602001828054620040859062006f83565b8015620040d65780601f10620040aa57610100808354040283529160200191620040d6565b820191906000526020600020905b815481529060010190602001808311620040b857829003601f168201915b505050919092525050508152604080516060808201835260088501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600984015460ff16151582840152600a84015490830152600b8301546080830152805161028081019182905260a09092019190600c84019060149082845b815481526020019060010190808311620041625750505050508152505090508060c001518015620041a55750856001600160a01b0316826001600160a01b031614155b15620041c457604051636468920360e01b815260040160405180910390fd5b60408082015190516317066a5760e21b81526001600160a01b0384811660048301526000921690635c19a95c90869060240160206040518083038185885af115801562004215573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906200423c919062007018565b9050826001600160a01b0316876001600160a01b03167f24d7bda8602b916d64417f0dbfe2e2e88ec9b1157bd9f596dfdb91ba26624e0483876040516200428d929190918252602082015260400190565b60405180910390a36040828101519051633041949b60e01b81526001600160a01b039182166004820152908416602482015261200590633041949b90604401600060405180830381600087803b158015620042e757600080fd5b505af1158015620042fc573d6000803e3d6000fd5b5050505085156200436e576040516372f6ad8f60e11b81526001600160a01b038085166004830152881660248201526120059063e5ed5b1e906044015b600060405180830381600087803b1580156200435457600080fd5b505af115801562004369573d6000803e3d6000fd5b505050505b50505050505050565b620043a36040518060800160405280606081526020016060815260200160608152602001606081525090565b81620043b1600b82620061e6565b620043cf5760405163fdf4600b60e01b815260040160405180910390fd5b6001600160a01b0383166000908152600d602052604090819020815160808101909252600401805482908290620044069062006f83565b80601f0160208091040260200160405190810160405280929190818152602001828054620044349062006f83565b8015620044855780601f10620044595761010080835404028352916020019162004485565b820191906000526020600020905b8154815290600101906020018083116200446757829003601f168201915b50505050508152602001600182018054620044a09062006f83565b80601f0160208091040260200160405190810160405280929190818152602001828054620044ce9062006f83565b80156200451f5780601f10620044f3576101008083540402835291602001916200451f565b820191906000526020600020905b8154815290600101906020018083116200450157829003601f168201915b505050505081526020016002820180546200453a9062006f83565b80601f0160208091040260200160405190810160405280929190818152602001828054620045689062006f83565b8015620045b95780601f106200458d57610100808354040283529160200191620045b9565b820191906000526020600020905b8154815290600101906020018083116200459b57829003601f168201915b50505050508152602001600382018054620045d49062006f83565b80601f0160208091040260200160405190810160405280929190818152602001828054620046029062006f83565b8015620046535780601f10620046275761010080835404028352916020019162004653565b820191906000526020600020905b8154815290600101906020018083116200463557829003601f168201915b505050505081525050915050919050565b60005462010000900460ff16156200468f5760405163d7485e8f60e01b815260040160405180910390fd5b3360009081526017602052604090205460ff1615620046c15760405163b1d02c3d60e01b815260040160405180910390fd5b81620046cf600b82620061e6565b620046ed5760405163fdf4600b60e01b815260040160405180910390fd5b6001600160a01b038381166000908152600d6020526040808220600201549051635569f64b60e11b8152336004820152602481018690529192169063aad3ec96906044016020604051808303816000875af115801562004751573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004777919062007018565b9050336001600160a01b0316846001600160a01b03167ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd399268383604051620047bf91815260200190565b60405180910390a350505050565b3361100714620047f557604051630f22c43960e41b8152611007600482015260240162000968565b620048626040518060400160405280601081526020016f1d1c985b9cd9995c91d85cd31a5b5a5d60821b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200686c9050565b15620049105760208114620048945783838383604051630a5a604160e01b8152600401620009689493929190620076f5565b604080516020601f8401819004810282018101909252828152600091620048d7918585808385018382808284376000920191909152509293925050620068c99050565b90506108fc811015620049075784848484604051630a5a604160e01b8152600401620009689493929190620076f5565b600155620055e6565b620049816040518060400160405280601481526020017336b4b729b2b6332232b632b3b0ba34b7b721272160611b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200686c9050565b1562004a365760208114620049b35783838383604051630a5a604160e01b8152600401620009689493929190620076f5565b604080516020601f8401819004810282018101909252828152600091620049f6918585808385018382808284376000920191909152509293925050620068c99050565b9050683635c9adc5dea0000081101562004a2d5784848484604051630a5a604160e01b8152600401620009689493929190620076f5565b600255620055e6565b62004aa9604051806040016040528060168152602001756d696e44656c65676174696f6e424e424368616e676560501b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200686c9050565b1562004b5d576020811462004adb5783838383604051630a5a604160e01b8152600401620009689493929190620076f5565b604080516020601f840181900481028201810190925282815260009162004b1e918585808385018382808284376000920191909152509293925050620068c99050565b905067016345785d8a000081101562004b545784848484604051630a5a604160e01b8152600401620009689493929190620076f5565b600355620055e6565b62004bce604051806040016040528060148152602001736d6178456c656374656456616c696461746f727360601b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200686c9050565b1562004c88576020811462004c005783838383604051630a5a604160e01b8152600401620009689493929190620076f5565b604080516020601f840181900481028201810190925282815260009162004c43918585808385018382808284376000920191909152509293925050620068c99050565b9050600181108062004c5657506101f481115b1562004c7f5784848484604051630a5a604160e01b8152600401620009689493929190620076f5565b600455620055e6565b62004cf16040518060400160405280600c81526020016b1d5b989bdb9914195c9a5bd960a21b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200686c9050565b1562004da0576020811462004d235783838383604051630a5a604160e01b8152600401620009689493929190620076f5565b604080516020601f840181900481028201810190925282815260009162004d66918585808385018382808284376000920191909152509293925050620068c99050565b90506203f48081101562004d975784848484604051630a5a604160e01b8152600401620009689493929190620076f5565b600555620055e6565b62004e0e60405180604001604052806011815260200170726564656c65676174654665655261746560781b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200686c9050565b1562004ebb576020811462004e405783838383604051630a5a604160e01b8152600401620009689493929190620076f5565b604080516020601f840181900481028201810190925282815260009162004e83918585808385018382808284376000920191909152509293925050620068c99050565b9050606481111562004eb25784848484604051630a5a604160e01b8152600401620009689493929190620076f5565b600655620055e6565b62004f2b60405180604001604052806013815260200172191bdddb9d1a5b5954db185cda105b5bdd5b9d606a1b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200686c9050565b1562004fec576020811462004f5d5783838383604051630a5a604160e01b8152600401620009689493929190620076f5565b604080516020601f840181900481028201810190925282815260009162004fa0918585808385018382808284376000920191909152509293925050620068c99050565b9050674563918244f4000081108062004fba575060085481115b1562004fe35784848484604051630a5a604160e01b8152600401620009689493929190620076f5565b600755620055e6565b6200505a6040518060400160405280601181526020017019995b1bdb9e54db185cda105b5bdd5b9d607a1b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200686c9050565b156200511d57602081146200508c5783838383604051630a5a604160e01b8152600401620009689493929190620076f5565b604080516020601f8401819004810282018101909252828152600091620050cf918585808385018382808284376000920191909152509293925050620068c99050565b905068056bc75e2d63100000811080620050eb57506007548111155b15620051145784848484604051630a5a604160e01b8152600401620009689493929190620076f5565b600855620055e6565b6200518a6040518060400160405280601081526020016f646f776e74696d654a61696c54696d6560801b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200686c9050565b15620052475760208114620051bc5783838383604051630a5a604160e01b8152600401620009689493929190620076f5565b604080516020601f8401819004810282018101909252828152600091620051ff918585808385018382808284376000920191909152509293925050620068c99050565b90506202a300811080620052155750600a548110155b156200523e5784848484604051630a5a604160e01b8152600401620009689493929190620076f5565b600955620055e6565b620052b26040518060400160405280600e81526020016d66656c6f6e794a61696c54696d6560901b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200686c9050565b156200536f5760208114620052e45783838383604051630a5a604160e01b8152600401620009689493929190620076f5565b604080516020601f840181900481028201810190925282815260009162005327918585808385018382808284376000920191909152509293925050620068c99050565b9050620d2f008110806200533d57506009548111155b15620053665784848484604051630a5a604160e01b8152600401620009689493929190620076f5565b600a55620055e6565b620053d86040518060400160405280600c81526020016b66656c6f6e7950657244617960a01b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200686c9050565b156200548457602081146200540a5783838383604051630a5a604160e01b8152600401620009689493929190620076f5565b604080516020601f84018190048102820181019092528281526000916200544d918585808385018382808284376000920191909152509293925050620068c99050565b9050806000036200547b5784848484604051630a5a604160e01b8152600401620009689493929190620076f5565b601455620055e6565b620054ef6040518060400160405280600e81526020016d30b9b9b2ba283937ba32b1ba37b960911b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200686c9050565b15620055c35760148114620055215783838383604051630a5a604160e01b8152600401620009689493929190620076f5565b600062005569601484848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050620068c99050565b90506001600160a01b0381166200559d5784848484604051630a5a604160e01b8152600401620009689493929190620076f5565b601680546001600160a01b0319166001600160a01b0392909216919091179055620055e6565b838383836040516325ee20d560e21b8152600401620009689493929190620076f5565b7ff1ce9b2cbf50eeb05769a29e2543fd350cab46894a7dd9978a12d534bb20e633848484846040516200561d9493929190620076f5565b60405180910390a150505050565b60005462010000900460ff1615620056565760405163d7485e8f60e01b815260040160405180910390fd5b3360009081526017602052604090205460ff1615620056885760405163b1d02c3d60e01b815260040160405180910390fd5b816000816001600160401b03811115620056a657620056a66200709d565b604051908082528060200260200182016040528015620056d0578160200160208202803683370190505b5090506000805b83811015620057ce5762005719878783818110620056f957620056f9620070b3565b905060200201602081019062005710919062006971565b600b90620061e6565b620057375760405163fdf4600b60e01b815260040160405180910390fd5b600d6000888884818110620057505762005750620070b3565b905060200201602081019062005767919062006971565b6001600160a01b0390811682526020820192909252604001600020600201548451911692508290849083908110620057a357620057a3620070b3565b6001600160a01b0390921660209283029190910190910152620057c6816200711f565b9050620056d7565b50604051634484077560e01b81526120059063448407759062001b349085908890600401620070c9565b33611001146200582057604051630f22c43960e41b8152611001600482015260240162000968565b6001600160a01b038082166000908152600f60205260409020541662005848600b82620061e6565b620058665760405163fdf4600b60e01b815260040160405180910390fd5b6001600160a01b0381166000908152600d60209081526040808320601454428086526015909452919093205410620058b15760405163413361db60e01b815260040160405180910390fd5b6000818152601560205260408120805460019290620058d290849062007002565b909155506000905080620058e785826200620b565b91509150816200590a57604051631b919bb160e11b815260040160405180910390fd5b600284015460085460405163045bc4d160e41b815260048101919091526000916001600160a01b0316906345bc4d10906024016020604051808303816000875af11580156200595d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005983919062007018565b905062005991858362006295565b856001600160a01b03167f6e9a2ee7aee95665e3a774a212eb11441b217e3e4656ab9563793094689aabb283836000604051620059d19392919062007032565b60405180910390a26002850154604051633041949b60e01b81526001600160a01b039182166004820152908716602482015261200590633041949b9060440162004339565b600080606081808562005a2b600b82620061e6565b62005a495760405163fdf4600b60e01b815260040160405180910390fd5b6001600160a01b038088166000908152600d6020908152604080832081516101408101835281548616815260018201548616938101939093526002810154909416908201526003830180549293919260608401919062005aa99062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462005ad79062006f83565b801562005b285780601f1062005afc5761010080835404028352916020019162005b28565b820191906000526020600020905b81548152906001019060200180831162005b0a57829003601f168201915b505050505081526020016004820160405180608001604052908160008201805462005b539062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462005b819062006f83565b801562005bd25780601f1062005ba65761010080835404028352916020019162005bd2565b820191906000526020600020905b81548152906001019060200180831162005bb457829003601f168201915b5050505050815260200160018201805462005bed9062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462005c1b9062006f83565b801562005c6c5780601f1062005c405761010080835404028352916020019162005c6c565b820191906000526020600020905b81548152906001019060200180831162005c4e57829003601f168201915b5050505050815260200160028201805462005c879062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462005cb59062006f83565b801562005d065780601f1062005cda5761010080835404028352916020019162005d06565b820191906000526020600020905b81548152906001019060200180831162005ce857829003601f168201915b5050505050815260200160038201805462005d219062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462005d4f9062006f83565b801562005da05780601f1062005d745761010080835404028352916020019162005da0565b820191906000526020600020905b81548152906001019060200180831162005d8257829003601f168201915b505050919092525050508152604080516060808201835260088501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600984015460ff16151582840152600a84015490830152600b8301546080830152805161028081019182905260a09092019190600c84019060149082845b81548152602001906001019080831162005e2c5750505091909252505081516040830151606084015160c085015160e090950151929d919c509a50929850965090945050505050565b60005462010000900460ff161562005ea05760405163d7485e8f60e01b815260040160405180910390fd5b3360009081526017602052604090205460ff161562005ed25760405163b1d02c3d60e01b815260040160405180910390fd5b3362005ee0600b82620061e6565b62005efe5760405163fdf4600b60e01b815260040160405180910390fd5b62005f0e6200346f83806200713b565b62005f2c57604051635dba5ad760e01b815260040160405180910390fd5b336000818152600d60205260409020600b810154429062005f51906201518062007002565b111562005f7157604051631f92cdbd60e11b815260040160405180910390fd5b836004820162005f8282826200729b565b505042600b8201556040516001600160a01b038316907f85d6366b336ade7f106987ec7a8eac1e8799e508aeab045a39d2f63e0dc969d990600090a250505050565b60005462010000900460ff161562005fef5760405163d7485e8f60e01b815260040160405180910390fd5b3360009081526017602052604090205460ff1615620060215760405163b1d02c3d60e01b815260040160405180910390fd5b336200602f600b82620061e6565b6200604d5760405163fdf4600b60e01b815260040160405180910390fd5b6200605b858585856200665e565b6200607957604051631647e3cb60e11b815260040160405180910390fd5b60006001600160a01b0316600e86866040516200609892919062006fb9565b908152604051908190036020019020546001600160a01b0316141580620060e2575060128585604051620060ce92919062006fb9565b9081526040519081900360200190205460ff165b1562006101576040516311fdb94760e01b815260040160405180910390fd5b336000818152600d60205260409020600b810154429062006126906201518062007002565b11156200614657604051631f92cdbd60e11b815260040160405180910390fd5b6003810162006157878983620071ce565b5042600b8201556040518290600e9062006175908a908a9062006fb9565b90815260405190819003602001812080546001600160a01b039384166001600160a01b0319909116179055908316907f783156582145bd0ff7924fae6953ba054cf1233eb60739a200ddb10de068ff0d90620061d5908a908a90620074a8565b60405180910390a250505050505050565b6001600160a01b038116600090815260018301602052604081205415155b9392505050565b600080600084846040516020016200622592919062007720565b60408051601f198184030181529181528151602092830120600081815260109093529120549091504281111562006265576000809350935050506200628e565b600a5462006274904262007002565b600092835260106020526040909220829055506001925090505b9250929050565b60006001620062a5600b620064a3565b620062b191906200706d565b6013541080159150620062fd5760018301546040516001600160a01b03909116907f2afdc18061ac21cff7d9f11527ab9c8dec6fabd4edf6f894ed634bebd6a20d4590600090a2505050565b82600a01548211156200631257600a83018290555b600983015460ff16620063855760098301805460ff19166001908117909155601380546000906200634590849062007002565b909155505060018301546040516001600160a01b03909116907f4905ac32602da3fb8b4b7b00c285e5fc4c6c2308cc908b4a1e4e9625a29c90a390600090a25b505050565b6001600160a01b0381166000908152600d60205260409020600981015460ff1615620063b4575050565b6002805490820154604051630913db4760e01b81526001600160a01b03858116600483015290911690630913db4790602401602060405180830381865afa15801562006404573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200642a919062007018565b10156200649f576200643e81600062006295565b80546040516372c4db0f60e11b81526001600160a01b0390911660048201526110009063e589b61e90602401600060405180830381600087803b1580156200648557600080fd5b505af11580156200649a573d6000803e3d6000fd5b505050505b5050565b600062003950825490565b6000620062048383620068ce565b600080829050600381511080620064d4575060098151115b15620064e35750600092915050565b604181600081518110620064fb57620064fb620070b3565b016020015160f81c10806200652d5750605a81600081518110620065235762006523620070b3565b016020015160f81c115b156200653c5750600092915050565b60015b815181101562006654576030828281518110620065605762006560620070b3565b016020015160f81c10806200659157506039828281518110620065875762006587620070b3565b016020015160f81c115b8015620065e157506041828281518110620065b057620065b0620070b3565b016020015160f81c1080620065e15750605a828281518110620065d757620065d7620070b3565b016020015160f81c115b80156200663157506061828281518110620066005762006600620070b3565b016020015160f81c1080620066315750607a828281518110620066275762006627620070b3565b016020015160f81c115b1562006641575060009392505050565b6200664c816200711f565b90506200653f565b5060019392505050565b600060308414158062006672575060608214155b15620066815750600062006783565b60008585466040516020016200669a939291906200776a565b60408051808303601f1901815282825280516020918201208184528383019092529092506000919060208201818036833701905050905081602082015260008186868a8a604051602001620066f49594939291906200777c565b60408051808303601f190181526001808452838301909252925060009190602082018180368337019050509050815160016020830182602086016066600019fa6200673e57600080fd5b50600081600081518110620067575762006757620070b3565b016020015160f81c905060018114620067795760009550505050505062006783565b6001955050505050505b949350505050565b60008061200361dead604051620067a2906200694d565b6001600160a01b03928316815291166020820152606060408201819052600090820152608001604051809103906000f080158015620067e5573d6000803e3d6000fd5b509050806001600160a01b031663f399e22e3486866040518463ffffffff1660e01b815260040162006819929190620077b4565b6000604051808303818588803b1580156200683357600080fd5b505af115801562006848573d6000803e3d6000fd5b5093979650505050505050565b600062006204836001600160a01b038416620068fb565b600081604051602001620068819190620076d7565b6040516020818303038152906040528051906020012083604051602001620068aa9190620076d7565b6040516020818303038152906040528051906020012014905092915050565b015190565b6000826000018281548110620068e857620068e8620070b3565b9060005260206000200154905092915050565b6000818152600183016020526040812054620069445750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915562003950565b50600062003950565b610e9680620077db83390190565b6001600160a01b038116811462000ebe57600080fd5b6000602082840312156200698457600080fd5b813562006204816200695b565b60008083601f840112620069a457600080fd5b5081356001600160401b03811115620069bc57600080fd5b6020830191508360208285010111156200628e57600080fd5b60008060208385031215620069e957600080fd5b82356001600160401b0381111562006a0057600080fd5b62006a0e8582860162006991565b90969095509350505050565b6000806040838503121562006a2e57600080fd5b823562006a3b816200695b565b946020939093013593505050565b8035801515811462006a5a57600080fd5b919050565b6000806000806080858703121562006a7657600080fd5b843562006a83816200695b565b9350602085013562006a95816200695b565b92506040850135915062006aac6060860162006a49565b905092959194509250565b6001600160401b038116811462000ebe57600080fd5b60006020828403121562006ae057600080fd5b8135620062048162006ab7565b6000806040838503121562006b0157600080fd5b50508035926020909101359150565b600081518084526020808501945080840160005b8381101562006b4b5781516001600160a01b03168752958201959082019060010162006b24565b509495945050505050565b60005b8381101562006b7357818101518382015260200162006b59565b50506000910152565b6000815180845262006b9681602086016020860162006b56565b601f01601f19169290920160200192915050565b60808152600062006bbf608083018762006b10565b82810360208481019190915286518083528782019282019060005b8181101562006bf85784518352938301939183019160010162006bda565b5050848103604086015286518082528282019350600581901b8201830183890160005b8381101562006c4d57601f1985840301875262006c3a83835162006b7c565b9686019692509085019060010162006c1b565b5050809550505050505082606083015295945050505050565b6000608082840312156200374557600080fd5b600080600080600080600087890360e081121562006c9657600080fd5b883562006ca3816200695b565b975060208901356001600160401b038082111562006cc057600080fd5b62006cce8c838d0162006991565b909950975060408b013591508082111562006ce857600080fd5b62006cf68c838d0162006991565b90975095508591506060605f198401121562006d1157600080fd5b60608b01945060c08b013592508083111562006d2c57600080fd5b505062006d3c8a828b0162006c66565b91505092959891949750929550565b6000806040838503121562006d5f57600080fd5b823562006d6c816200695b565b915062006d7c6020840162006a49565b90509250929050565b60208152600082516080602084015262006da360a084018262006b7c565b90506020840151601f198085840301604086015262006dc3838362006b7c565b9250604086015191508085840301606086015262006de2838362006b7c565b925060608601519150808584030160808601525062006e02828262006b7c565b95945050505050565b6000806000806040858703121562006e2257600080fd5b84356001600160401b038082111562006e3a57600080fd5b62006e488883890162006991565b9096509450602087013591508082111562006e6257600080fd5b5062006e718782880162006991565b95989497509550505050565b60008060006040848603121562006e9357600080fd5b83356001600160401b038082111562006eab57600080fd5b818601915086601f83011262006ec057600080fd5b81358181111562006ed057600080fd5b8760208260051b850101111562006ee657600080fd5b6020928301955093505084013562006efe816200695b565b809150509250925092565b6001600160a01b0386811682528516602082015260a06040820181905260009062006f379083018662006b7c565b931515606083015250608001529392505050565b60006020828403121562006f5e57600080fd5b81356001600160401b0381111562006f7557600080fd5b620067838482850162006c66565b600181811c9082168062006f9857607f821691505b6020821081036200374557634e487b7160e01b600052602260045260246000fd5b8183823760009101908152919050565b634e487b7160e01b600052601160045260246000fd5b60008262006ffd57634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111562003950576200395062006fc9565b6000602082840312156200702b57600080fd5b5051919050565b8381526020810183905260608101600383106200705f57634e487b7160e01b600052602160045260246000fd5b826040830152949350505050565b8181038181111562003950576200395062006fc9565b808202811582820484141762003950576200395062006fc9565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b604081526000620070de604083018562006b10565b905060018060a01b03831660208301529392505050565b6001600160401b0382811682821603908082111562007118576200711862006fc9565b5092915050565b60006001820162007134576200713462006fc9565b5060010190565b6000808335601e198436030181126200715357600080fd5b8301803591506001600160401b038211156200716e57600080fd5b6020019150368190038213156200628e57600080fd5b601f8211156200638557600081815260208120601f850160051c81016020861015620071ad5750805b601f850160051c820191505b818110156200649a57828155600101620071b9565b6001600160401b03831115620071e857620071e86200709d565b6200720083620071f9835462006f83565b8362007184565b6000601f8411600181146200723757600085156200721e5750838201355b600019600387901b1c1916600186901b17835562007294565b600083815260209020601f19861690835b828110156200726a578685013582556020948501946001909201910162007248565b5086821015620072885760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b620072a782836200713b565b6001600160401b03811115620072c157620072c16200709d565b620072d981620072d2855462006f83565b8562007184565b6000601f821160018114620073105760008315620072f75750838201355b600019600385901b1c1916600184901b1785556200736d565b600085815260209020601f19841690835b8281101562007343578685013582556020948501946001909201910162007321565b5084821015620073615760001960f88660031b161c19848701351681555b505060018360011b0185555b505050506200738060208301836200713b565b62007390818360018601620071ce565b5050620073a160408301836200713b565b620073b1818360028601620071ce565b5050620073c260608301836200713b565b620073d2818360038601620071ce565b50505050565b8135620073e58162006ab7565b6001600160401b03811690508154816001600160401b031982161783556020840135620074128162006ab7565b6fffffffffffffffff0000000000000000604091821b166fffffffffffffffffffffffffffffffff19831684178117855590850135620074528162006ab7565b6001600160c01b0319929092169092179190911760809190911b67ffffffffffffffff60801b1617905550565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b602081526000620067836020830184866200747f565b604051601f8201601f191681016001600160401b0381118282101715620074e957620074e96200709d565b604052919050565b60006001600160401b038211156200750d576200750d6200709d565b5060051b60200190565b600060208083850312156200752b57600080fd5b82516001600160401b038111156200754257600080fd5b8301601f810185136200755457600080fd5b80516200756b6200756582620074f1565b620074be565b81815260059190911b820183019083810190878311156200758b57600080fd5b928401925b82841015620075b6578351620075a6816200695b565b8252928401929084019062007590565b979650505050505050565b60006020808385031215620075d557600080fd5b82516001600160401b0380821115620075ed57600080fd5b8185019150601f86818401126200760357600080fd5b8251620076146200756582620074f1565b81815260059190911b840185019085810190898311156200763457600080fd5b8686015b83811015620076c957805186811115620076525760008081fd5b8701603f81018c13620076655760008081fd5b888101516040888211156200767e576200767e6200709d565b62007691828901601f19168c01620074be565b8281528e82848601011115620076a75760008081fd5b620076b8838d830184870162006b56565b865250505091870191870162007638565b509998505050505050505050565b60008251620076eb81846020870162006b56565b9190910192915050565b6040815260006200770b6040830186886200747f565b8281036020840152620075b68185876200747f565b6bffffffffffffffffffffffff198360601b1681526000600383106200775657634e487b7160e01b600052602160045260246000fd5b5060f89190911b6014820152601501919050565b82848237909101908152602001919050565b6000865162007790818460208b0162006b56565b82018587823760009086019081528385823760009301928352509095945050505050565b6001600160a01b0383168152604060208201819052600090620067839083018462006b7c56fe608060405260405162000e9638038062000e96833981016040819052620000269162000497565b828162000036828260006200004d565b50620000449050826200008a565b505050620005ca565b6200005883620000e5565b600082511180620000665750805b1562000085576200008383836200012760201b620001691760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f620000b562000156565b604080516001600160a01b03928316815291841660208301520160405180910390a1620000e2816200018f565b50565b620000f08162000244565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606200014f838360405180606001604052806027815260200162000e6f60279139620002f8565b9392505050565b60006200018060008051602062000e4f83398151915260001b6200037760201b620001951760201c565b546001600160a01b0316919050565b6001600160a01b038116620001fa5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b806200022360008051602062000e4f83398151915260001b6200037760201b620001951760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6200025a816200037a60201b620001981760201c565b620002be5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401620001f1565b80620002237f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b6200037760201b620001951760201c565b6060600080856001600160a01b03168560405162000317919062000577565b600060405180830381855af49150503d806000811462000354576040519150601f19603f3d011682016040523d82523d6000602084013e62000359565b606091505b5090925090506200036d8683838762000389565b9695505050505050565b90565b6001600160a01b03163b151590565b60608315620003fd578251600003620003f5576001600160a01b0385163b620003f55760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401620001f1565b508162000409565b62000409838362000411565b949350505050565b815115620004225781518083602001fd5b8060405162461bcd60e51b8152600401620001f1919062000595565b80516001600160a01b03811681146200045657600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200048e57818101518382015260200162000474565b50506000910152565b600080600060608486031215620004ad57600080fd5b620004b8846200043e565b9250620004c8602085016200043e565b60408501519092506001600160401b0380821115620004e657600080fd5b818601915086601f830112620004fb57600080fd5b8151818111156200051057620005106200045b565b604051601f8201601f19908116603f011681019083821181831017156200053b576200053b6200045b565b816040528281528960208487010111156200055557600080fd5b6200056883602083016020880162000471565b80955050505050509250925092565b600082516200058b81846020870162000471565b9190910192915050565b6020815260008251806020840152620005b681604085016020870162000471565b601f01601f19169190910160400192915050565b61087580620005da6000396000f3fe60806040523661001357610011610017565b005b6100115b61001f6101a7565b6001600160a01b0316330361015f5760606001600160e01b0319600035166364d3180d60e11b810161005a576100536101da565b9150610157565b63587086bd60e11b6001600160e01b031982160161007a57610053610231565b63070d7c6960e41b6001600160e01b031982160161009a57610053610277565b621eb96f60e61b6001600160e01b03198216016100b9576100536102a8565b63a39f25e560e01b6001600160e01b03198216016100d9576100536102e8565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101676102fc565b565b606061018e83836040518060600160405280602781526020016108426027913961030c565b9392505050565b90565b6001600160a01b03163b151590565b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101e4610384565b60006101f33660048184610695565b81019061020091906106db565b905061021d8160405180602001604052806000815250600061038f565b505060408051602081019091526000815290565b60606000806102433660048184610695565b810190610250919061070c565b915091506102608282600161038f565b604051806020016040528060008152509250505090565b6060610281610384565b60006102903660048184610695565b81019061029d91906106db565b905061021d816103bb565b60606102b2610384565b60006102bc6101a7565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102f2610384565b60006102bc610412565b610167610307610412565b610421565b6060600080856001600160a01b03168560405161032991906107f2565b600060405180830381855af49150503d8060008114610364576040519150601f19603f3d011682016040523d82523d6000602084013e610369565b606091505b509150915061037a86838387610445565b9695505050505050565b341561016757600080fd5b610398836104c6565b6000825111806103a55750805b156103b6576103b48383610169565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103e46101a7565b604080516001600160a01b03928316815291841660208301520160405180910390a161040f81610506565b50565b600061041c6105af565b905090565b3660008037600080366000845af43d6000803e808015610440573d6000f35b3d6000fd5b606083156104b45782516000036104ad576001600160a01b0385163b6104ad5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014e565b50816104be565b6104be83836105d7565b949350505050565b6104cf81610601565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b03811661056b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014e565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101cb565b8151156105e75781518083602001fd5b8060405162461bcd60e51b815260040161014e919061080e565b6001600160a01b0381163b61066e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014e565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61058e565b600080858511156106a557600080fd5b838611156106b257600080fd5b5050820193919092039150565b80356001600160a01b03811681146106d657600080fd5b919050565b6000602082840312156106ed57600080fd5b61018e826106bf565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561071f57600080fd5b610728836106bf565b9150602083013567ffffffffffffffff8082111561074557600080fd5b818501915085601f83011261075957600080fd5b81358181111561076b5761076b6106f6565b604051601f8201601f19908116603f01168101908382118183101715610793576107936106f6565b816040528281528860208487010111156107ac57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60005b838110156107e95781810151838201526020016107d1565b50506000910152565b600082516108048184602087016107ce565b9190910192915050565b602081526000825180602084015261082d8160408501602087016107ce565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000ab53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c656400000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000a164736f6c6343000811000a", - }, - { - ContractAddr: common.HexToAddress(StakeCreditContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/cfc0bd1127186a917ddc38fd38d22903034d3f0b", - Code: "6080604052600436106101855760003560e01c80635e607d76116100d1578063a5d059ca1161008a578063c2cde2b211610064578063c2cde2b2146104af578063d241c1ea146104cf578063dd62ed3e14610516578063f399e22e1461053657600080fd5b8063a5d059ca1461044f578063a9059cbb1461046f578063aad3ec961461048f57600080fd5b80635e607d761461038f578063647df759146103a457806370a08231146103c457806391faf0b4146103fa57806395d89b411461041a578063a457c2d71461042f57600080fd5b8063313ce5671161013e5780634056852d116101185780634056852d1461031c57806345bc4d101461033c5780634d99dd161461035c5780635c19a95c1461037c57600080fd5b8063313ce567146102a857806339509351146102c45780633a5381b5146102e457600080fd5b806306fdde03146101d45780630913db47146101ff578063095ea7b31461022d57806315d1f8981461025d57806318160ddd1461027357806323b872dd1461028857600080fd5b366101cf5733612002146101b557604051630f22c43960e41b815261200260048201526024015b60405180910390fd5b34609860008282546101c791906119f0565b925050819055005b600080fd5b3480156101e057600080fd5b506101e9610549565b6040516101f69190611a03565b60405180910390f35b34801561020b57600080fd5b5061021f61021a366004611a69565b6105db565b6040519081526020016101f6565b34801561023957600080fd5b5061024d610248366004611a8d565b610603565b60405190151581526020016101f6565b34801561026957600080fd5b5061021f60985481565b34801561027f57600080fd5b5060675461021f565b34801561029457600080fd5b5061024d6102a3366004611ab9565b61061b565b3480156102b457600080fd5b50604051601281526020016101f6565b3480156102d057600080fd5b5061024d6102df366004611a8d565b61063f565b3480156102f057600080fd5b50609754610304906001600160a01b031681565b6040516001600160a01b0390911681526020016101f6565b34801561032857600080fd5b5061021f610337366004611a69565b610661565b34801561034857600080fd5b5061021f610357366004611afa565b610728565b34801561036857600080fd5b5061021f610377366004611a8d565b61081b565b61021f61038a366004611a69565b610a02565b6103a261039d366004611b13565b610a55565b005b3480156103b057600080fd5b5061021f6103bf366004611afa565b610b1d565b3480156103d057600080fd5b5061021f6103df366004611a69565b6001600160a01b031660009081526065602052604090205490565b34801561040657600080fd5b5061021f610415366004611afa565b610b5c565b34801561042657600080fd5b506101e9610b97565b34801561043b57600080fd5b5061024d61044a366004611a8d565b610ba6565b34801561045b57600080fd5b5061021f61046a366004611a8d565b610c21565b34801561047b57600080fd5b5061024d61048a366004611a8d565b610d22565b34801561049b57600080fd5b5061021f6104aa366004611a8d565b610d30565b3480156104bb57600080fd5b5061021f6104ca366004611a69565b610ff2565b3480156104db57600080fd5b506104ef6104ea366004611a8d565b611010565b604080518351815260208085015190820152928101519083015260608201526080016101f6565b34801561052257600080fd5b5061021f610531366004611b3d565b6110c0565b6103a2610544366004611b76565b6110eb565b60606068805461055890611bfb565b80601f016020809104026020016040519081016040528092919081815260200182805461058490611bfb565b80156105d15780601f106105a6576101008083540402835291602001916105d1565b820191906000526020600020905b8154815290600101906020018083116105b457829003601f168201915b5050505050905090565b6001600160a01b0381166000908152606560205260408120546105fd90610b5c565b92915050565b600033610611818585611295565b5060019392505050565b6000336106298582856112ae565b610634858585611322565b506001949350505050565b60003361061181858561065283836110c0565b61065c91906119f0565b611295565b6001600160a01b0381166000908152609a6020526040812054600f81810b600160801b909204900b0380820361069a5750600092915050565b6000805b82811015610720576001600160a01b0385166000908152609a602052604081206106c79061133b565b6000818152609960209081526040918290208251606081018452815481526001820154928101839052600290910154928101929092529192509061070b90856119f0565b935050508061071990611c2f565b905061069e565b509392505050565b6000336120021461075057604051630f22c43960e41b815261200260048201526024016101ac565b6097546001600160a01b03166000908152606560205260408120549061077584610b1d565b90508181116107845780610786565b815b6097549091506000906107a2906001600160a01b03168361138f565b6040519091506000906110029083908381818185875af1925050503d80600081146107e9576040519150601f19603f3d011682016040523d82523d6000602084013e6107ee565b606091505b5050905080610810576040516312171d8360e31b815260040160405180910390fd5b50925050505b919050565b6000336120021461084357604051630f22c43960e41b815261200260048201526024016101ac565b8160000361086457604051631f2a200560e01b815260040160405180910390fd5b6001600160a01b03831660009081526065602052604090205482111561089d57604051631e9acf1760e31b815260040160405180910390fd5b6108a7838361138f565b905060006120026001600160a01b031663fc0c5ff16040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061090f9190611c48565b61091990426119f0565b6040805160608101825285815260208101859052908101829052909150600085610942816113c4565b60405160609290921b6bffffffffffffffffffffffff19166020830152603482015260540160408051601f19818403018152918152815160209283012060008181526099845282812086518155868501516001820155868401516002909101556001600160a01b038a168152609a90935291209091506109f990828154600160801b90819004600f0b6000818152600180860160205260409091209390935583546001600160801b03908116939091011602179055565b50505092915050565b60003361200214610a2a57604051630f22c43960e41b815261200260048201526024016101ac565b34600003610a4b57604051631f2a200560e01b815260040160405180910390fd5b6105fd82346113ec565b3361200214610a7b57604051630f22c43960e41b815261200260048201526024016101ac565b346000612710610a9567ffffffffffffffff851684611c61565b610a9f9190611c78565b90506000610aad8284611c9a565b90508060986000828254610ac191906119f0565b9091555050609754610adc906001600160a01b0316836113ec565b5060408051828152602081018490527ffb0e1482d62102ab9594f69d4c6d693749e3e2bf1c21af272f5456b2d5a4f6b591015b60405180910390a150505050565b6000609854600003610b42576040516307b76ce760e51b815260040160405180910390fd5b609854606754610b529084611c61565b6105fd9190611c78565b6000610b6760675490565b600003610b8757604051632fe8dae960e01b815260040160405180910390fd5b606754609854610b529084611c61565b60606069805461055890611bfb565b60003381610bb482866110c0565b905083811015610c145760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016101ac565b6106348286868403611295565b60003361200214610c4957604051630f22c43960e41b815261200260048201526024016101ac565b81600003610c6a57604051631f2a200560e01b815260040160405180910390fd5b6001600160a01b038316600090815260656020526040902054821115610ca357604051631e9acf1760e31b815260040160405180910390fd5b610cad838361138f565b6040519091506000906120029083908381818185875af1925050503d8060008114610cf4576040519150601f19603f3d011682016040523d82523d6000602084013e610cf9565b606091505b5050905080610d1b576040516312171d8360e31b815260040160405180910390fd5b5092915050565b600033610611818585611322565b60003361200214610d5857604051630f22c43960e41b815261200260048201526024016101ac565b610d60611415565b6001600160a01b0383166000908152609a6020526040902054600f81810b600160801b909204900b03600003610da95760405163ad41893760e01b815260040160405180910390fd5b811580610ddd57506001600160a01b0383166000908152609a6020526040902054600f81810b600160801b909204900b0382115b610de75781610e11565b6001600160a01b0383166000908152609a6020526040902054600f81810b600160801b909204900b035b915060005b8215610ee6576001600160a01b0384166000908152609a60205260408120610e3d9061133b565b60008181526099602090815260409182902082516060810184528154815260018201549281019290925260020154918101829052919250421015610e82575050610ee6565b6001600160a01b0386166000908152609a60205260409020610ea39061146e565b50600082815260996020908152604082208281556001810183905560020191909155810151610ed290846119f0565b9250610edd85611cad565b94505050610e16565b80600003610f07576040516303cd8e0960e21b815260040160405180910390fd5b60006120026001600160a01b031663e8f67c3b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f6d9190611c48565b90506000856001600160a01b03168284604051600060405180830381858888f193505050503d8060008114610fbe576040519150601f19603f3d011682016040523d82523d6000602084013e610fc3565b606091505b5050905080610fe5576040516312171d8360e31b815260040160405180910390fd5b50506001805590506105fd565b6001600160a01b0381166000908152609b60205260408120546105fd565b61103460405180606001604052806000815260200160008152602001600081525090565b6001600160a01b0383166000908152609a60205260408120819061105890856114ed565b60008181526099602090815260408083206001600160a01b038a168452609a9092529091205491925090600f81810b600160801b909204900b036040805160608101825283548152600184015460208201526002909301549083015290969095509350505050565b6001600160a01b03918216600090815260666020908152604080832093909416825291909152205490565b600054610100900460ff161580801561110b5750600054600160ff909116105b806111255750303b158015611125575060005460ff166001145b6111885760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016101ac565b6000805460ff1916600117905580156111ab576000805461ff0019166101001790555b33612002146111d157604051630f22c43960e41b815261200260048201526024016101ac565b600083836040516020016111e6929190611cc4565b60405160208183030381529060405290506000848460405160200161120c929190611cf4565b6040516020818303038152906040529050611227828261155e565b609780546001600160a01b0319166001600160a01b03881617905561124b346115a3565b5050801561128f576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602001610b0f565b50505050565b604051632028747160e01b815260040160405180910390fd5b60006112ba84846110c0565b9050600019811461128f57818110156113155760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016101ac565b61128f8484848403611295565b604051638cd22d1960e01b815260040160405180910390fd5b60006113568254600f81810b600160801b909204900b131590565b1561137457604051631ed9509560e11b815260040160405180910390fd5b508054600f0b60009081526001909101602052604090205490565b600061139a82610b5c565b90506113a68383611713565b80609860008282546113b89190611c9a565b90915550909392505050565b6001600160a01b0381166000908152609b602052604090208054600181018255905b50919050565b60006113f782610b1d565b90506114038382611847565b81609860008282546113b891906119f0565b6002600154036114675760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016101ac565b6002600155565b60006114898254600f81810b600160801b909204900b131590565b156114a757604051631ed9509560e11b815260040160405180910390fd5b508054600f0b6000818152600180840160205260408220805492905583546fffffffffffffffffffffffffffffffff191692016001600160801b03169190911790915590565b6000806115106114fc84611908565b855461150b9190600f0b611d12565b611976565b8454909150600160801b9004600f90810b9082900b1261154357604051632d0483c560e21b815260040160405180910390fd5b600f0b60009081526001939093016020525050604090205490565b600054610100900460ff166115855760405162461bcd60e51b81526004016101ac90611d3a565b60686115918382611de9565b50606961159e8282611de9565b505050565b600054610100900460ff166115ca5760405162461bcd60e51b81526004016101ac90611d3a565b60006120026001600160a01b031663ae0f336d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561160c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116309190611c48565b9050808211158061164a57506097546001600160a01b0316155b80611656575060675415155b1561167457604051632163e6b960e21b815260040160405180910390fd5b60006120026001600160a01b0316634e6fd6c46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116da9190611ea9565b90506116e68183611847565b60006116f28385611c9a565b60975490915061170b906001600160a01b031682611847565b505050609855565b6001600160a01b0382166117735760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016101ac565b6001600160a01b038216600090815260656020526040902054818110156117e75760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016101ac565b6001600160a01b03831660008181526065602090815260408083208686039055606780548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b6001600160a01b03821661189d5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016101ac565b80606760008282546118af91906119f0565b90915550506001600160a01b0382166000818152606560209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b60006001600160ff1b038211156119725760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b60648201526084016101ac565b5090565b80600f81900b81146108165760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20316044820152663238206269747360c81b60648201526084016101ac565b634e487b7160e01b600052601160045260246000fd5b808201808211156105fd576105fd6119da565b600060208083528351808285015260005b81811015611a3057858101830151858201604001528201611a14565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611a6657600080fd5b50565b600060208284031215611a7b57600080fd5b8135611a8681611a51565b9392505050565b60008060408385031215611aa057600080fd5b8235611aab81611a51565b946020939093013593505050565b600080600060608486031215611ace57600080fd5b8335611ad981611a51565b92506020840135611ae981611a51565b929592945050506040919091013590565b600060208284031215611b0c57600080fd5b5035919050565b600060208284031215611b2557600080fd5b813567ffffffffffffffff81168114611a8657600080fd5b60008060408385031215611b5057600080fd5b8235611b5b81611a51565b91506020830135611b6b81611a51565b809150509250929050565b600080600060408486031215611b8b57600080fd5b8335611b9681611a51565b9250602084013567ffffffffffffffff80821115611bb357600080fd5b818601915086601f830112611bc757600080fd5b813581811115611bd657600080fd5b876020828501011115611be857600080fd5b6020830194508093505050509250925092565b600181811c90821680611c0f57607f821691505b6020821081036113e657634e487b7160e01b600052602260045260246000fd5b600060018201611c4157611c416119da565b5060010190565b600060208284031215611c5a57600080fd5b5051919050565b80820281158282048414176105fd576105fd6119da565b600082611c9557634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156105fd576105fd6119da565b600081611cbc57611cbc6119da565b506000190190565b65029ba30b5b2960d51b815281836006830137660810dc99591a5d60ca1b91016006810191909152600d01919050565b611cdd60f21b81528183600283013760009101600201908152919050565b8082018281126000831280158216821582161715611d3257611d326119da565b505092915050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b634e487b7160e01b600052604160045260246000fd5b601f82111561159e57600081815260208120601f850160051c81016020861015611dc25750805b601f850160051c820191505b81811015611de157828155600101611dce565b505050505050565b815167ffffffffffffffff811115611e0357611e03611d85565b611e1781611e118454611bfb565b84611d9b565b602080601f831160018114611e4c5760008415611e345750858301515b600019600386901b1c1916600185901b178555611de1565b600085815260208120601f198616915b82811015611e7b57888601518255948401946001909101908401611e5c565b5085821015611e995787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060208284031215611ebb57600080fd5b8151611a8681611a5156fea164736f6c6343000811000a", - }, - { - ContractAddr: common.HexToAddress(GovernorContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/cfc0bd1127186a917ddc38fd38d22903034d3f0b", - Code: "6080604052600436106103bc5760003560e01c80637b3c71d3116101f2578063c28bc2fa1161010d578063e23a9a52116100a0578063f23a6e611161006f578063f23a6e6114610d73578063f8ce560a14610d9f578063fc0c546a14610dbf578063fe0d94c114610de057600080fd5b8063e23a9a5214610c48578063ea0217cf14610d13578063eb9019d414610d33578063ece40cc114610d5357600080fd5b8063da95691a116100dc578063da95691a14610b8e578063dd4e2ba514610bae578063ddf0b00914610bf4578063deaaa7cc14610c1457600080fd5b8063c28bc2fa14610b1c578063c59057e414610b2f578063d07f91e914610b4f578063d33219b414610b6f57600080fd5b8063a7713a7011610185578063b58131b011610154578063b58131b014610aa0578063bc197c8114610ab5578063c01f9e3714610ae1578063c170ec0b14610b0157600080fd5b8063a7713a7014610a2b578063a890c91014610a40578063ab58fb8e14610a60578063ac43175114610a8057600080fd5b806384b0196e116101c157806384b0196e146109a357806391ddadf4146109cb57806397c3d334146109f75780639a802a6d14610a0b57600080fd5b80637b3c71d3146109395780637d5e81e2146109595780638129fc1c146109795780638456cb591461098e57600080fd5b806332b8113e116102e2578063533ddd14116102755780635f398a14116102445780635f398a14146108b257806360c4247f146108d257806363d42b38146108f257806370b0f6601461091957600080fd5b8063533ddd141461081757806354fd4d501461084857806356781388146108725780635c975abb1461089257600080fd5b806340e58ee5116102b157806340e58ee5146107775780634385963214610797578063452115d6146107e25780634bf5d7e91461080257600080fd5b806332b8113e146106eb5780633932abb1146107145780633bccf4fd1461072a5780633e4f49e61461074a57600080fd5b8063143489d01161035a5780632656227d116103295780632656227d1461063d5780632d63f693146106505780632fe3e26114610687578063328dd982146106bb57600080fd5b8063143489d01461056e578063150b7a02146105c4578063160cbed71461060857806324bc1a641461062857600080fd5b8063034201811161039657806303420181146104f7578063046f7da21461051757806306f3f9e61461052c57806306fdde031461054c57600080fd5b8063013cf08b1461042c57806301ffc9a7146104a757806302a251a3146104d757600080fd5b3661042757306103ca610df3565b6001600160a01b0316146104255760405162461bcd60e51b815260206004820152601f60248201527f476f7665726e6f723a206d7573742073656e6420746f206578656375746f720060448201526064015b60405180910390fd5b005b600080fd5b34801561043857600080fd5b5061044c61044736600461585e565b610e0d565b604080519a8b526001600160a01b0390991660208b0152978901969096526060880194909452608087019290925260a086015260c085015260e084015215156101008301521515610120820152610140015b60405180910390f35b3480156104b357600080fd5b506104c76104c2366004615877565b610ec8565b604051901515815260200161049e565b3480156104e357600080fd5b50610162545b60405190815260200161049e565b34801561050357600080fd5b506104e96105123660046159bd565b610ed9565b34801561052357600080fd5b50610425610fd1565b34801561053857600080fd5b5061042561054736600461585e565b61103a565b34801561055857600080fd5b506105616110c5565b60405161049e9190615ab3565b34801561057a57600080fd5b506105ac61058936600461585e565b60009081526101306020526040902054600160401b90046001600160a01b031690565b6040516001600160a01b03909116815260200161049e565b3480156105d057600080fd5b506105ef6105df366004615adb565b630a85bd0160e11b949350505050565b6040516001600160e01b0319909116815260200161049e565b34801561061457600080fd5b506104e9610623366004615cb2565b611158565b34801561063457600080fd5b506104e961135d565b6104e961064b366004615cb2565b611383565b34801561065c57600080fd5b506104e961066b36600461585e565b600090815261013060205260409020546001600160401b031690565b34801561069357600080fd5b506104e97fb3b3f3b703cd84ce352197dcff232b1b5d3cfb2025ce47cf04742d0651f1af8881565b3480156106c757600080fd5b506106db6106d636600461585e565b611476565b60405161049e9493929190615e0a565b3480156106f757600080fd5b5061025c546040516001600160401b03909116815260200161049e565b34801561072057600080fd5b50610161546104e9565b34801561073657600080fd5b506104e9610745366004615e57565b611708565b34801561075657600080fd5b5061076a61076536600461585e565b61177e565b60405161049e9190615ebb565b34801561078357600080fd5b5061042561079236600461585e565b611789565b3480156107a357600080fd5b506104c76107b2366004615ee3565b6000828152610193602090815260408083206001600160a01b038516845260080190915290205460ff1692915050565b3480156107ee57600080fd5b506104e96107fd366004615cb2565b6117b4565b34801561080e57600080fd5b506105616117cb565b34801561082357600080fd5b506104c7610832366004615f13565b61028e6020526000908152604090205460ff1681565b34801561085457600080fd5b506040805180820190915260018152603160f81b6020820152610561565b34801561087e57600080fd5b506104e961088d366004615f30565b611878565b34801561089e57600080fd5b5061028f546104c790610100900460ff1681565b3480156108be57600080fd5b506104e96108cd366004615f5c565b6118a1565b3480156108de57600080fd5b506104e96108ed36600461585e565b6118eb565b3480156108fe57600080fd5b5061028f546105ac906201000090046001600160a01b031681565b34801561092557600080fd5b5061042561093436600461585e565b6119a0565b34801561094557600080fd5b506104e9610954366004615fdf565b611a28565b34801561096557600080fd5b506104e9610974366004616038565b611a7a565b34801561098557600080fd5b50610425611b0a565b34801561099a57600080fd5b50610425611f60565b3480156109af57600080fd5b506109b8611fcd565b60405161049e97969594939291906160d8565b3480156109d757600080fd5b506109e061206b565b60405165ffffffffffff909116815260200161049e565b348015610a0357600080fd5b5060646104e9565b348015610a1757600080fd5b506104e9610a2636600461613a565b6120df565b348015610a3757600080fd5b506104e96120f6565b348015610a4c57600080fd5b50610425610a5b366004615f13565b612123565b348015610a6c57600080fd5b506104e9610a7b36600461585e565b6121ab565b348015610a8c57600080fd5b50610425610a9b366004616192565b612247565b348015610aac57600080fd5b506104e9612826565b348015610ac157600080fd5b506105ef610ad03660046161f1565b63bc197c8160e01b95945050505050565b348015610aed57600080fd5b506104e9610afc36600461585e565b612832565b348015610b0d57600080fd5b5061028f546104c79060ff1681565b610425610b2a366004616284565b61283d565b348015610b3b57600080fd5b506104e9610b4a366004615cb2565b61294d565b348015610b5b57600080fd5b50610425610b6a3660046162c7565b612987565b348015610b7b57600080fd5b506101f8546001600160a01b03166105ac565b348015610b9a57600080fd5b506104e9610ba93660046162f0565b612a0f565b348015610bba57600080fd5b5060408051808201909152601a81527f737570706f72743d627261766f2671756f72756d3d627261766f0000000000006020820152610561565b348015610c0057600080fd5b50610425610c0f36600461585e565b612a96565b348015610c2057600080fd5b506104e97f150214d74d59b7d1e90c73fc22ef3d991dd0a76b046543d4d80ab92d2a50328f81565b348015610c5457600080fd5b50610ce3610c63366004615ee3565b6040805160608101825260008082526020820181905291810191909152506000918252610193602090815260408084206001600160a01b0393909316845260089092018152918190208151606081018352905460ff8082161515835261010082041693820193909352620100009092046001600160601b03169082015290565b6040805182511515815260208084015160ff1690820152918101516001600160601b03169082015260600161049e565b348015610d1f57600080fd5b50610425610d2e36600461585e565b612ab9565b348015610d3f57600080fd5b506104e9610d4e366004616391565b612b41565b348015610d5f57600080fd5b50610425610d6e36600461585e565b612b62565b348015610d7f57600080fd5b506105ef610d8e3660046163bd565b63f23a6e6160e01b95945050505050565b348015610dab57600080fd5b506104e9610dba36600461585e565b612bea565b348015610dcb57600080fd5b506101c5546105ac906001600160a01b031681565b610425610dee36600461585e565b612c79565b6000610e086101f8546001600160a01b031690565b905090565b8060008080808080808080610e218a6121ab565b60008c815261013060205260409020549098506001600160401b03169650610e488b612832565b60008c81526101936020526040812080546005820154600683015460078401546001600160a01b039093169e50949a509850929650919450610e898d61177e565b90506002816007811115610e9f57610e9f615ea5565b1493506007816007811115610eb657610eb6615ea5565b14925050509193959799509193959799565b6000610ed382612c9c565b92915050565b600080610f7d610f757fb3b3f3b703cd84ce352197dcff232b1b5d3cfb2025ce47cf04742d0651f1af888c8c8c8c604051610f15929190616425565b60405180910390208b80519060200120604051602001610f5a959493929190948552602085019390935260ff9190911660408401526060830152608082015260a00190565b60405160208183030381529060405280519060200120612cc1565b868686612cee565b9050610fc38a828b8b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508d9250612d0c915050565b9a9950505050505050505050565b61028f546201000090046001600160a01b0316331461100357604051631431806f60e11b815260040160405180910390fd5b61028f805461ff00191690556040517f62451d457bc659158be6e6247f56ec1df424a5c7597f71c20c2bc44e0965c8f990600090a1565b611042610df3565b6001600160a01b0316336001600160a01b0316146110725760405162461bcd60e51b815260040161041c90616435565b3061107b610df3565b6001600160a01b0316146110b9576000803660405161109b929190616425565b604051809103902090505b806110b2610131612d1b565b036110a657505b6110c281612d9a565b50565b606061012f80546110d59061646c565b80601f01602080910402602001604051908101604052809291908181526020018280546111019061646c565b801561114e5780601f106111235761010080835404028352916020019161114e565b820191906000526020600020905b81548152906001019060200180831161113157829003601f168201915b5050505050905090565b6000806111678686868661294d565b905060046111748261177e565b600781111561118557611185615ea5565b146111a25760405162461bcd60e51b815260040161041c906164a6565b6101f8546040805163793d064960e11b815290516000926001600160a01b03169163f27a0c929160048083019260209291908290030181865afa1580156111ed573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061121191906164e7565b6101f85460405163b1c5f42760e01b81529192506001600160a01b03169063b1c5f4279061124c908a908a908a906000908b90600401616500565b602060405180830381865afa158015611269573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061128d91906164e7565b60008381526101f96020526040808220929092556101f85491516308f2a0bb60e41b81526001600160a01b0390921691638f2a0bb0916112da918b918b918b91908b90899060040161654e565b600060405180830381600087803b1580156112f457600080fd5b505af1158015611308573d6000803e3d6000fd5b505050507f9a2e42fd6722813d69113e7d0079d3d940171428df7373df9c7f7617cfda289282824261133a91906165bc565b604080519283526020830191909152015b60405180910390a15095945050505050565b6000610e08600161136c61206b565b61137691906165cf565b65ffffffffffff16612bea565b6000806113928686868661294d565b9050600061139f8261177e565b905060048160078111156113b5576113b5615ea5565b14806113d2575060058160078111156113d0576113d0615ea5565b145b6113ee5760405162461bcd60e51b815260040161041c906164a6565b6000828152610130602052604090819020600201805460ff19166001179055517f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f9061143d9084815260200190565b60405180910390a16114528288888888612f0b565b61145f8288888888612fac565b61146c828888888861305d565b5095945050505050565b60608060608060006101936000878152602001908152602001600020905080600101816002018260030183600401838054806020026020016040519081016040528092919081815260200182805480156114f957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116114db575b505050505093508280548060200260200160405190810160405280929190818152602001828054801561154b57602002820191906000526020600020905b815481526020019060010190808311611537575b5050505050925081805480602002602001604051908101604052809291908181526020016000905b8282101561161f5783829060005260206000200180546115929061646c565b80601f01602080910402602001604051908101604052809291908181526020018280546115be9061646c565b801561160b5780601f106115e05761010080835404028352916020019161160b565b820191906000526020600020905b8154815290600101906020018083116115ee57829003601f168201915b505050505081526020019060010190611573565b50505050915080805480602002602001604051908101604052809291908181526020016000905b828210156116f25783829060005260206000200180546116659061646c565b80601f01602080910402602001604051908101604052809291908181526020018280546116919061646c565b80156116de5780601f106116b3576101008083540402835291602001916116de565b820191906000526020600020905b8154815290600101906020018083116116c157829003601f168201915b505050505081526020019060010190611646565b5050505090509450945094509450509193509193565b604080517f150214d74d59b7d1e90c73fc22ef3d991dd0a76b046543d4d80ab92d2a50328f602082015290810186905260ff85166060820152600090819061175690610f7590608001610f5a565b905061177387828860405180602001604052806000815250613098565b979650505050505050565b6000610ed3826130bb565b60008060008061179885613208565b93509350935093506117ac848484846117b4565b505050505050565b60006117c285858585613499565b95945050505050565b6101c55460408051634bf5d7e960e01b815290516060926001600160a01b031691634bf5d7e99160048083019260009291908290030181865afa92505050801561183757506040513d6000823e601f3d908101601f1916820160405261183491908101906165f5565b60015b611873575060408051808201909152601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c74000000602082015290565b919050565b60008033905061189984828560405180602001604052806000815250613098565b949350505050565b60008033905061177387828888888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a9250612d0c915050565b61022b5460009080820361190457505061022a54919050565b600061022b611914600184616662565b8154811061192457611924616675565b60009182526020918290206040805180820190915291015463ffffffff8116808352600160201b9091046001600160e01b0316928201929092529150841061197a57602001516001600160e01b03169392505050565b61198f61198685613564565b61022b906135cd565b6001600160e01b0316949350505050565b6119a8610df3565b6001600160a01b0316336001600160a01b0316146119d85760405162461bcd60e51b815260040161041c90616435565b306119e1610df3565b6001600160a01b031614611a1f5760008036604051611a01929190616425565b604051809103902090505b80611a18610131612d1b565b03611a0c57505b6110c281613680565b600080339050611a7086828787878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061309892505050565b9695505050505050565b6000611a846136c3565b60005b8551811015611afd5761028e6000878381518110611aa757611aa7616675565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16611aeb57604051630b094f2760e31b815260040160405180910390fd5b80611af58161668b565b915050611a87565b506117c28585858561376e565b600054610100900460ff1615808015611b2a5750600054600160ff909116105b80611b445750303b158015611b44575060005460ff166001145b611ba75760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161041c565b6000805460ff191660011790558015611bca576000805461ff0019166101001790555b334114611bea5760405163022d8c9560e31b815260040160405180910390fd5b3a15611c09576040516383f1b1d360e01b815260040160405180910390fd5b611c356040518060400160405280600b81526020016a2129a1a3b7bb32b93737b960a91b8152506137d6565b611c4f620151806212750068056bc75e2d6310000061382d565b611c57613864565b611c6261200561388b565b611c6d6120066138bb565b611c77600a6138eb565b611c836201518061391b565b61028e6020527ff0f52cefb444f33092ac77280e2ff9c808a9c078a96d3cd7513137548137ed8f8054600160ff1991821681179092557fb2c9e894c6f17bfc84a6708e0ea85c2729271d7cae0a8d875cd1080fb415e7a080548216831790557fd8ceb939a734f5a4e0a6fede9e31504e16ac856b555e8bac20ad743b9ff2976a80548216831790557f2a7b967fc66f4b36023165170b23a76f880d3dbbf244a856aeee9e670cef725980548216831790557fdb1a1113bac2e4f0e6f8c2f2bc4f6dbecf1fccb033d5df1b55b5c5ad6c20ac7980548216831790557f8b1888b379fb3b749668d86c5bf8aaada8e2276c6ced3a4efcc1e877827ce0b380548216831790557feeeea8d485053a64711f2c5802d2cc63251dd394956c140a2e30db7cef242ec580548216831790557f4cdb1a6c4b56f62f27f7202d75e865c2405f138cb32ec45019c0f2ca8f91e47280548216831790557f49d6c403a3197b15e024f109c83eb730d7af1a8b49fc6f820e09bad2597c14c980548216831790557f7a41b38ceb33f296c1ff3db5ffcc6542acb091d5fb27586f3c551dd2ebac063880548216831790557f701fe333ee20fad5d5a6a9930dddd3fb815af1d976d5250e394e39d6e4123e3880548216831790557fee7ba9842df249188adc0fc380980c3099f608b602924e083dd61e8e70845b4a80548216831790557f29973aeebf3c17f2c3a9cf7ace17f2798aa544e1ea7427938024cde6df46bac180548216831790557f74c0d6e29c82d6628d5f083f86fc15f0c6acef97321252a1eee0bd893dae276580548216831790556120066000527f1bdfc01e60036e5be56ae85d8394ddf727e1021b3d74de5b554fedea2de437678054909116909117905561028f805462010000600160b01b03191663dead000017905580156110c2576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b61028f546201000090046001600160a01b03163314611f9257604051631431806f60e11b815260040160405180910390fd5b61028f805461ff0019166101001790556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e75290600090a1565b6000606080600080600060606065546000801b148015611fed5750606654155b6120315760405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b604482015260640161041c565b61203961394b565b61204161395a565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b6101c554604080516324776b7d60e21b815290516000926001600160a01b0316916391ddadf49160048083019260209291908290030181865afa9250505080156120d2575060408051601f3d908101601f191682019092526120cf918101906166a4565b60015b61187357610e0843613969565b60006120ec8484846139d0565b90505b9392505050565b61022b546000901561211b5761210d61022b613a47565b6001600160e01b0316905090565b5061022a5490565b61212b610df3565b6001600160a01b0316336001600160a01b03161461215b5760405162461bcd60e51b815260040161041c90616435565b30612164610df3565b6001600160a01b0316146121a25760008036604051612184929190616425565b604051809103902090505b8061219b610131612d1b565b0361218f57505b6110c281613a77565b6101f85460008281526101f9602052604080822054905163d45c443560e01b81526004810191909152909182916001600160a01b039091169063d45c443590602401602060405180830381865afa15801561220a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061222e91906164e7565b90508060011461223e57806120ef565b60009392505050565b336110071461226d57604051630f22c43960e41b8152611007600482015260240161041c565b6122d36040518060400160405280600b81526020016a766f74696e6744656c617960a81b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613ae29050565b1561237c57602081146123015783838383604051630a5a604160e01b815260040161041c94939291906166f5565b604080516020601f8401819004810282018101909252828152600091612342918585808385018382808284376000920191909152509293925050613b3b9050565b90508060000361236d5784848484604051630a5a604160e01b815260040161041c94939291906166f5565b61237681613680565b506127e3565b6123e36040518060400160405280600c81526020016b1d9bdd1a5b99d4195c9a5bd960a21b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613ae29050565b1561248657602081146124115783838383604051630a5a604160e01b815260040161041c94939291906166f5565b604080516020601f8401819004810282018101909252828152600091612452918585808385018382808284376000920191909152509293925050613b3b9050565b90508060000361247d5784848484604051630a5a604160e01b815260040161041c94939291906166f5565b61237681613b40565b6124f2604051806040016040528060118152602001701c1c9bdc1bdcd85b151a1c995cda1bdb19607a1b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613ae29050565b1561259557602081146125205783838383604051630a5a604160e01b815260040161041c94939291906166f5565b604080516020601f8401819004810282018101909252828152600091612561918585808385018382808284376000920191909152509293925050613b3b9050565b90508060000361258c5784848484604051630a5a604160e01b815260040161041c94939291906166f5565b61237681613be3565b6125ff6040518060400160405280600f81526020016e38bab7b93ab6a73ab6b2b930ba37b960891b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613ae29050565b156126a2576020811461262d5783838383604051630a5a604160e01b815260040161041c94939291906166f5565b604080516020601f840181900481028201810190925282815260009161266e918585808385018382808284376000920191909152509293925050613b3b9050565b9050806000036126995784848484604051630a5a604160e01b815260040161041c94939291906166f5565b61237681612d9a565b612711604051806040016040528060148152602001736d696e506572696f64416674657251756f72756d60601b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613ae29050565b156127c2576008811461273f5783838383604051630a5a604160e01b815260040161041c94939291906166f5565b6000612785600884848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613b3b9050565b9050806001600160401b03166000036127b95784848484604051630a5a604160e01b815260040161041c94939291906166f5565b61237681613c26565b838383836040516325ee20d560e21b815260040161041c94939291906166f5565b7ff1ce9b2cbf50eeb05769a29e2543fd350cab46894a7dd9978a12d534bb20e6338484848460405161281894939291906166f5565b60405180910390a150505050565b6000610e086101635490565b6000610ed382613c92565b612845610df3565b6001600160a01b0316336001600160a01b0316146128755760405162461bcd60e51b815260040161041c90616435565b3061287e610df3565b6001600160a01b0316146128bc576000803660405161289e929190616425565b604051809103902090505b806128b5610131612d1b565b036128a957505b600080856001600160a01b03168585856040516128da929190616425565b60006040518083038185875af1925050503d8060008114612917576040519150601f19603f3d011682016040523d82523d6000602084013e61291c565b606091505b50915091506129448282604051806060016040528060288152602001616add60289139613cd0565b50505050505050565b600084848484604051602001612966949392919061671c565b60408051601f19818403018152919052805160209091012095945050505050565b61298f610df3565b6001600160a01b0316336001600160a01b0316146129bf5760405162461bcd60e51b815260040161041c90616435565b306129c8610df3565b6001600160a01b031614612a0657600080366040516129e8929190616425565b604051809103902090505b806129ff610131612d1b565b036129f357505b6110c281613c26565b60008251845114612a735760405162461bcd60e51b815260206004820152602860248201527f476f7665726e6f72427261766f3a20696e76616c6964207369676e61747572656044820152670e640d8cadccee8d60c31b606482015260840161041c565b612a81338787878787613ce9565b611a708686612a908787613da7565b85611a7a565b600080600080612aa585613208565b93509350935093506117ac84848484611158565b612ac1610df3565b6001600160a01b0316336001600160a01b031614612af15760405162461bcd60e51b815260040161041c90616435565b30612afa610df3565b6001600160a01b031614612b385760008036604051612b1a929190616425565b604051809103902090505b80612b31610131612d1b565b03612b2557505b6110c281613b40565b60006120ef8383612b5d60408051602081019091526000815290565b6139d0565b612b6a610df3565b6001600160a01b0316336001600160a01b031614612b9a5760405162461bcd60e51b815260040161041c90616435565b30612ba3610df3565b6001600160a01b031614612be15760008036604051612bc3929190616425565b604051809103902090505b80612bda610131612d1b565b03612bce57505b6110c281613be3565b60006064612bf7836118eb565b6101c554604051632394e7a360e21b8152600481018690526001600160a01b0390911690638e539e8c90602401602060405180830381865afa158015612c41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c6591906164e7565b612c6f9190616767565b610ed39190616794565b600080600080612c8885613208565b93509350935093506117ac84848484611383565b60006001600160e01b03198216636e665ced60e01b1480610ed35750610ed382613ed9565b6000610ed3612cce613f75565b8360405161190160f01b8152600281019290925260228201526042902090565b6000806000612cff87878787613f7f565b9150915061146c81614043565b6000611a70868686868661418d565b6000612d368254600f81810b600160801b909204900b131590565b15612d5457604051631ed9509560e11b815260040160405180910390fd5b508054600f0b6000818152600180840160205260408220805492905583546fffffffffffffffffffffffffffffffff191692016001600160801b03169190911790915590565b6064811115612e1d5760405162461bcd60e51b815260206004820152604360248201527f476f7665726e6f72566f74657351756f72756d4672616374696f6e3a2071756f60448201527f72756d4e756d657261746f72206f7665722071756f72756d44656e6f6d696e616064820152623a37b960e91b608482015260a40161041c565b6000612e276120f6565b90508015801590612e39575061022b54155b15612e9e57604080518082019091526000815261022b9060208101612e5d84614290565b6001600160e01b039081169091528254600181018455600093845260209384902083519490930151909116600160201b0263ffffffff909316929092179101555b612ecc612eb9612eac61206b565b65ffffffffffff16613564565b612ec284614290565b61022b91906142f9565b505060408051828152602081018490527f0553476bf02ef2726e8ce5ced78d63e26e602e4a2257b1f559418e24b4633997910160405180910390a15050565b30612f14610df3565b6001600160a01b031614612fa55760005b84518110156117ac57306001600160a01b0316858281518110612f4a57612f4a616675565b60200260200101516001600160a01b031603612f9557612f95838281518110612f7557612f75616675565b60200260200101518051906020012061013161431490919063ffffffff16565b612f9e8161668b565b9050612f25565b5050505050565b61028f54610100900460ff1615612fd65760405163e96776bf60e01b815260040160405180910390fd5b60005b845181101561304f5761028e6000868381518110612ff957612ff9616675565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff1661303d57604051630b094f2760e31b815260040160405180910390fd5b806130478161668b565b915050612fd9565b50612fa58585858585614350565b30613066610df3565b6001600160a01b031614612fa55761013154600f81810b600160801b909204900b1315612fa557600061013155612fa5565b60006117c2858585856130b660408051602081019091526000815290565b612d0c565b6000806130c7836143c5565b905060048160078111156130dd576130dd615ea5565b146130e85792915050565b60008381526101f9602052604090205480613104575092915050565b6101f854604051632ab0f52960e01b8152600481018390526001600160a01b0390911690632ab0f52990602401602060405180830381865afa15801561314e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061317291906167b6565b15613181575060079392505050565b6101f854604051632c258a9f60e11b8152600481018390526001600160a01b039091169063584b153e90602401602060405180830381865afa1580156131cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131ef91906167b6565b156131fe575060059392505050565b5060029392505050565b60608060606000806101936000878152602001908152602001600020905080600101816002016133da83600301805480602002602001604051908101604052809291908181526020016000905b828210156133015783829060005260206000200180546132749061646c565b80601f01602080910402602001604051908101604052809291908181526020018280546132a09061646c565b80156132ed5780601f106132c2576101008083540402835291602001916132ed565b820191906000526020600020905b8154815290600101906020018083116132d057829003601f168201915b505050505081526020019060010190613255565b50505060048601805460408051602080840282018101909252828152935060009084015b828210156133d15783829060005260206000200180546133449061646c565b80601f01602080910402602001604051908101604052809291908181526020018280546133709061646c565b80156133bd5780601f10613392576101008083540402835291602001916133bd565b820191906000526020600020905b8154815290600101906020018083116133a057829003601f168201915b505050505081526020019060010190613325565b50505050613da7565b600984015483546040805160208084028201810190925282815291869183018282801561343057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311613412575b505050505093508280548060200260200160405190810160405280929190818152602001828054801561348257602002820191906000526020600020905b81548152602001906001019080831161346e575b505050505092509450945094509450509193509193565b6000806134a88686868661294d565b600081815261019360205260409020549091506001600160a01b0316338114806134fc57506134d5612826565b6134fa8260016134e361206b565b6134ed91906165cf565b65ffffffffffff16612b41565b105b6135585760405162461bcd60e51b815260206004820152602760248201527f476f7665726e6f72427261766f3a2070726f706f7365722061626f76652074686044820152661c995cda1bdb1960ca1b606482015260840161041c565b611773878787876144fd565b600063ffffffff8211156135c95760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201526532206269747360d01b606482015260840161041c565b5090565b81546000908181600581111561362a5760006135e88461450b565b6135f29085616662565b60008881526020902090915081015463ffffffff908116908716101561361a57809150613628565b6136258160016165bc565b92505b505b6000613638878785856145f3565b905080156136735761365d8761364f600184616662565b600091825260209091200190565b54600160201b90046001600160e01b0316611773565b6000979650505050505050565b6101615460408051918252602082018390527fc565b045403dc03c2eea82b81a0465edad9e2e7fc4d97e11421c209da93d7a93910160405180910390a161016155565b61028f5460ff1661376c576a084595161401484a0000006120056001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561371a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061373e91906164e7565b101561375d576040516311b6707f60e01b815260040160405180910390fd5b61028f805460ff191660011790555b565b60006137ca33868686516001600160401b0381111561378f5761378f6158fa565b6040519080825280602002602001820160405280156137c257816020015b60608152602001906001900390816137ad5790505b508787613ce9565b6117c285858585614649565b600054610100900460ff166137fd5760405162461bcd60e51b815260040161041c906167d8565b6138248161381f6040805180820190915260018152603160f81b602082015290565b614a28565b6110c281614a77565b600054610100900460ff166138545760405162461bcd60e51b815260040161041c906167d8565b61385f838383614aaf565b505050565b600054610100900460ff1661376c5760405162461bcd60e51b815260040161041c906167d8565b600054610100900460ff166138b25760405162461bcd60e51b815260040161041c906167d8565b6110c281614af1565b600054610100900460ff166138e25760405162461bcd60e51b815260040161041c906167d8565b6110c281614b3b565b600054610100900460ff166139125760405162461bcd60e51b815260040161041c906167d8565b6110c281614b62565b600054610100900460ff166139425760405162461bcd60e51b815260040161041c906167d8565b6110c281614b89565b6060606780546110d59061646c565b6060606880546110d59061646c565b600065ffffffffffff8211156135c95760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203460448201526538206269747360d01b606482015260840161041c565b6101c554604051630748d63560e31b81526001600160a01b038581166004830152602482018590526000921690633a46b1a890604401602060405180830381865afa158015613a23573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120ec91906164e7565b8054600090801561223e57613a618361364f600184616662565b54600160201b90046001600160e01b03166120ef565b6101f854604080516001600160a01b03928316815291831660208301527f08f74ea46ef7894f65eabfb5e6e695de773a000b47c529ab559178069b226401910160405180910390a16101f880546001600160a01b0319166001600160a01b0392909216919091179055565b600081604051602001613af59190616823565b6040516020818303038152906040528051906020012083604051602001613b1c9190616823565b6040516020818303038152906040528051906020012014905092915050565b015190565b60008111613ba05760405162461bcd60e51b815260206004820152602760248201527f476f7665726e6f7253657474696e67733a20766f74696e6720706572696f6420604482015266746f6f206c6f7760c81b606482015260840161041c565b6101625460408051918252602082018390527f7e3f7f0708a84de9203036abaa450dccc85ad5ff52f78c170f3edb55cf5e8828910160405180910390a161016255565b6101635460408051918252602082018390527fccb45da8d5717e6c4544694297c4ba5cf151d455c9bb0ed4fc7a38411bc05461910160405180910390a161016355565b61025c54604080516001600160401b03928316815291831660208301527f7ca4ac117ed3cdce75c1161d8207c440389b1a15d69d096831664657c07dafc2910160405180910390a161025c805467ffffffffffffffff19166001600160401b0392909216919091179055565b60008181526101306020526040812060010154610ed3906001600160401b0316600084815261025d60205260409020546001600160401b0316614bb0565b60608315613cdf5750816120ef565b6120ef8383614bc6565b805160208201206000613d078787613d018888613da7565b8561294d565b600081815261019360205260409020600981015491925090613d9c5780546001600160a01b0319166001600160a01b038a161781558751613d5190600183019060208b0190615695565b508651613d6790600283019060208a01906156f6565b508551613d7d9060038301906020890190615731565b508451613d939060048301906020880190615783565b50600981018390555b505050505050505050565b6060600082516001600160401b03811115613dc457613dc46158fa565b604051908082528060200260200182016040528015613df757816020015b6060815260200190600190039081613de25790505b50905060005b8151811015613ed157848181518110613e1857613e18616675565b602002602001015151600014613e8857848181518110613e3a57613e3a616675565b602002602001015180519060200120848281518110613e5b57613e5b616675565b6020026020010151604051602001613e7492919061683f565b604051602081830303815290604052613ea3565b838181518110613e9a57613e9a616675565b60200260200101515b828281518110613eb557613eb5616675565b602002602001018190525080613eca9061668b565b9050613dfd565b509392505050565b600063288ace0360e11b6318df743f60e31b63bf26d89760e01b6379dd796f60e01b6001600160e01b03198616821480613f1f57506001600160e01b0319868116908216145b80613f3657506001600160e01b0319868116908516145b80613f5157506001600160e01b03198616630271189760e51b145b80611a7057506301ffc9a760e01b6001600160e01b03198716149695505050505050565b6000610e08614bf0565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115613fb6575060009050600361403a565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa15801561400a573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166140335760006001925092505061403a565b9150600090505b94509492505050565b600081600481111561405757614057615ea5565b0361405f5750565b600181600481111561407357614073615ea5565b036140c05760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640161041c565b60028160048111156140d4576140d4615ea5565b036141215760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161041c565b600381600481111561413557614135615ea5565b036110c25760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b606482015260840161041c565b60008061419d8787878787614c64565b600088815261025d60205260409020549091506001600160401b03161580156141ca57506141ca87614dba565b15611a705760006141e461025c546001600160401b031690565b6141ec61206b565b65ffffffffffff166141fe9190616870565b905061420988612832565b816001600160401b03161115614258576040516001600160401b038216815288907f541f725fb9f7c98a30cc9c0ff32fbb14358cd7159c847a3aa20a2bdc442ba5119060200160405180910390a25b600088815261025d60205260409020805467ffffffffffffffff19166001600160401b03929092169190911790559695505050505050565b60006001600160e01b038211156135c95760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20326044820152663234206269747360c81b606482015260840161041c565b600080614307858585614dfa565b915091505b935093915050565b8154600160801b90819004600f0b6000818152600180860160205260409091209390935583546001600160801b03908116939091011602179055565b6101f85460405163e38335e560e01b81526001600160a01b039091169063e38335e590349061438c908890889088906000908990600401616500565b6000604051808303818588803b1580156143a557600080fd5b505af11580156143b9573d6000803e3d6000fd5b50505050505050505050565b600081815261013060205260408120600281015460ff16156143ea5750600792915050565b6002810154610100900460ff16156144055750600292915050565b600083815261013060205260408120546001600160401b03169081900361446e5760405162461bcd60e51b815260206004820152601d60248201527f476f7665726e6f723a20756e6b6e6f776e2070726f706f73616c206964000000604482015260640161041c565b600061447861206b565b65ffffffffffff16905080821061449457506000949350505050565b600061449f86612832565b90508181106144b45750600195945050505050565b6144bd86614dba565b80156144e057506000868152610193602052604090206006810154600590910154115b156144f15750600495945050505050565b50600395945050505050565b60006117c285858585614f99565b60008160000361451d57506000919050565b6000600161452a8461504f565b901c6001901b905060018184816145435761454361677e565b048201901c9050600181848161455b5761455b61677e565b048201901c905060018184816145735761457361677e565b048201901c9050600181848161458b5761458b61677e565b048201901c905060018184816145a3576145a361677e565b048201901c905060018184816145bb576145bb61677e565b048201901c905060018184816145d3576145d361677e565b048201901c90506120ef818285816145ed576145ed61677e565b046150e3565b60005b81831015613ed157600061460a84846150f2565b60008781526020902090915063ffffffff86169082015463ffffffff16111561463557809250614643565b6146408160016165bc565b93505b506145f6565b600033614656818461510d565b6146a25760405162461bcd60e51b815260206004820152601d60248201527f476f7665726e6f723a2070726f706f7365722072657374726963746564000000604482015260640161041c565b60006146ac61206b565b65ffffffffffff1690506146be612826565b6146cd83610d4e600185616662565b10156147355760405162461bcd60e51b815260206004820152603160248201527f476f7665726e6f723a2070726f706f73657220766f7465732062656c6f7720706044820152701c9bdc1bdcd85b081d1a1c995cda1bdb19607a1b606482015260840161041c565b600061474a888888888051906020012061294d565b9050865188511461476d5760405162461bcd60e51b815260040161041c90616890565b855188511461478e5760405162461bcd60e51b815260040161041c90616890565b60008851116147df5760405162461bcd60e51b815260206004820152601860248201527f476f7665726e6f723a20656d7074792070726f706f73616c0000000000000000604482015260640161041c565b600081815261013060205260409020546001600160401b03161561484f5760405162461bcd60e51b815260206004820152602160248201527f476f7665726e6f723a2070726f706f73616c20616c72656164792065786973746044820152607360f81b606482015260840161041c565b600061485b6101615490565b61486590846165bc565b905060006148736101625490565b61487d90836165bc565b90506040518060e00160405280614893846151fe565b6001600160401b031681526001600160a01b0387166020820152600060408201526060016148c0836151fe565b6001600160401b03908116825260006020808401829052604080850183905260609485018390528883526101308252918290208551815492870151878501519186166001600160e01b031990941693909317600160401b6001600160a01b039094168402176001600160e01b0316600160e01b60e09290921c91909102178155938501516080860151908416921c0217600183015560a08301516002909201805460c09094015161ffff1990941692151561ff00191692909217610100931515939093029290921790558a517f7d84a6263ae0d98d3329bd7b46bb4e8d6f98cd35a7adb45c274c8b7fd5ebd5e091859188918e918e918111156149c5576149c56158fa565b6040519080825280602002602001820160405280156149f857816020015b60608152602001906001900390816149e35790505b508d88888f604051614a12999897969594939291906168d1565b60405180910390a1509098975050505050505050565b600054610100900460ff16614a4f5760405162461bcd60e51b815260040161041c906167d8565b6067614a5b83826169af565b506068614a6882826169af565b50506000606581905560665550565b600054610100900460ff16614a9e5760405162461bcd60e51b815260040161041c906167d8565b61012f614aab82826169af565b5050565b600054610100900460ff16614ad65760405162461bcd60e51b815260040161041c906167d8565b614adf83613680565b614ae882613b40565b61385f81613be3565b600054610100900460ff16614b185760405162461bcd60e51b815260040161041c906167d8565b6101c580546001600160a01b0319166001600160a01b0392909216919091179055565b600054610100900460ff166121a25760405162461bcd60e51b815260040161041c906167d8565b600054610100900460ff166110b95760405162461bcd60e51b815260040161041c906167d8565b600054610100900460ff16612a065760405162461bcd60e51b815260040161041c906167d8565b6000818311614bbf57816120ef565b5090919050565b815115614bd65781518083602001fd5b8060405162461bcd60e51b815260040161041c9190615ab3565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f614c1b615266565b614c236152bf565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b6000858152610130602052604081206001614c7e8861177e565b6007811115614c8f57614c8f615ea5565b14614ce85760405162461bcd60e51b815260206004820152602360248201527f476f7665726e6f723a20766f7465206e6f742063757272656e746c792061637460448201526269766560e81b606482015260840161041c565b8054600090614d029088906001600160401b0316866139d0565b9050614d1188888884886152f0565b8351600003614d6657866001600160a01b03167fb8e138887d0aa13bab447e82de9d5c1777041ecd21ca36ba824ff1e6c07ddda489888489604051614d599493929190616a6e565b60405180910390a2611773565b866001600160a01b03167fe2babfbac5889a709b63bb7f598b324e08bc5a4fb9ec647fb3cbc9ec07eb87128988848989604051614da7959493929190616a96565b60405180910390a2979650505050505050565b6000818152610193602052604081206005810154614df1610dba85600090815261013060205260409020546001600160401b031690565b11159392505050565b825460009081908015614f40576000614e188761364f600185616662565b60408051808201909152905463ffffffff808216808452600160201b9092046001600160e01b031660208401529192509087161015614e995760405162461bcd60e51b815260206004820152601b60248201527f436865636b706f696e743a2064656372656173696e67206b6579730000000000604482015260640161041c565b805163ffffffff808816911603614ee15784614eba8861364f600186616662565b80546001600160e01b0392909216600160201b0263ffffffff909216919091179055614f30565b6040805180820190915263ffffffff80881682526001600160e01b0380881660208085019182528b54600181018d5560008d81529190912094519151909216600160201b029216919091179101555b60200151925083915061430c9050565b50506040805180820190915263ffffffff80851682526001600160e01b0380851660208085019182528854600181018a5560008a815291822095519251909316600160201b02919093161792019190915590508161430c565b600080614fa88686868661548e565b60008181526101f96020526040902054909150156117c2576101f85460008281526101f960205260409081902054905163c4d252f560e01b81526001600160a01b039092169163c4d252f5916150049160040190815260200190565b600060405180830381600087803b15801561501e57600080fd5b505af1158015615032573d6000803e3d6000fd5b50505060008281526101f960205260408120555095945050505050565b600080608083901c1561506457608092831c92015b604083901c1561507657604092831c92015b602083901c1561508857602092831c92015b601083901c1561509a57601092831c92015b600883901c156150ac57600892831c92015b600483901c156150be57600492831c92015b600283901c156150d057600292831c92015b600183901c15610ed35760010192915050565b6000818310614bbf57816120ef565b60006151016002848418616794565b6120ef908484166165bc565b80516000906034811015615125576001915050610ed3565b82810160131901516001600160a01b031981166b046e0e4dee0dee6cae47a60f60a31b1461515857600192505050610ed3565b600080615166602885616662565b90505b838110156151dd5760008061519d88848151811061518957615189616675565b01602001516001600160f81b03191661559b565b91509150816151b55760019650505050505050610ed3565b8060ff166004856001600160a01b0316901b1793505050806151d69061668b565b9050615169565b50856001600160a01b0316816001600160a01b031614935050505092915050565b60006001600160401b038211156135c95760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203660448201526534206269747360d01b606482015260840161041c565b60008061527161394b565b805190915015615288578051602090910120919050565b60655480156152975792915050565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4709250505090565b6000806152ca61395a565b8051909150156152e1578051602090910120919050565b60665480156152975792915050565b6000858152610193602090815260408083206001600160a01b038816845260088101909252909120805460ff16156153805760405162461bcd60e51b815260206004820152602d60248201527f476f7665726e6f72436f6d7061746962696c697479427261766f3a20766f746560448201526c08185b1c9958591e4818d85cdd609a1b606482015260840161041c565b805460ff86166101000261ffff199091161760011781556153a08461562d565b81546001600160601b039190911662010000026dffffffffffffffffffffffff00001990911617815560ff85166153f057838260060160008282546153e591906165bc565b909155506129449050565b60001960ff86160161541057838260050160008282546153e591906165bc565b60011960ff86160161543057838260070160008282546153e591906165bc565b60405162461bcd60e51b815260206004820152602d60248201527f476f7665726e6f72436f6d7061746962696c697479427261766f3a20696e766160448201526c6c696420766f7465207479706560981b606482015260840161041c565b60008061549d8686868661294d565b905060006154aa8261177e565b905060028160078111156154c0576154c0615ea5565b141580156154e0575060068160078111156154dd576154dd615ea5565b14155b80156154fe575060078160078111156154fb576154fb615ea5565b14155b61554a5760405162461bcd60e51b815260206004820152601d60248201527f476f7665726e6f723a2070726f706f73616c206e6f7420616374697665000000604482015260640161041c565b6000828152610130602052604090819020600201805461ff001916610100179055517f789cf55be980739dad1d0699b93b58e806b51c9d96619bfa8fe0a28abaa7b30c9061134b9084815260200190565b60008060f883901c602f811180156155b65750603a8160ff16105b156155cb57600194602f199091019350915050565b8060ff1660401080156155e1575060478160ff16105b156155f6576001946036199091019350915050565b8060ff16606010801561560c575060678160ff16105b15615621576001946056199091019350915050565b50600093849350915050565b60006001600160601b038211156135c95760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203960448201526536206269747360d01b606482015260840161041c565b8280548282559060005260206000209081019282156156ea579160200282015b828111156156ea57825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906156b5565b506135c99291506157d5565b8280548282559060005260206000209081019282156156ea579160200282015b828111156156ea578251825591602001919060010190615716565b828054828255906000526020600020908101928215615777579160200282015b82811115615777578251829061576790826169af565b5091602001919060010190615751565b506135c99291506157ea565b8280548282559060005260206000209081019282156157c9579160200282015b828111156157c957825182906157b990826169af565b50916020019190600101906157a3565b506135c9929150615807565b5b808211156135c957600081556001016157d6565b808211156135c95760006157fe8282615824565b506001016157ea565b808211156135c957600061581b8282615824565b50600101615807565b5080546158309061646c565b6000825580601f10615840575050565b601f0160209004906000526020600020908101906110c291906157d5565b60006020828403121561587057600080fd5b5035919050565b60006020828403121561588957600080fd5b81356001600160e01b0319811681146120ef57600080fd5b803560ff8116811461187357600080fd5b60008083601f8401126158c457600080fd5b5081356001600160401b038111156158db57600080fd5b6020830191508360208285010111156158f357600080fd5b9250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715615938576159386158fa565b604052919050565b60006001600160401b03821115615959576159596158fa565b50601f01601f191660200190565b600082601f83011261597857600080fd5b813561598b61598682615940565b615910565b8181528460208386010111156159a057600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060008060008060e0898b0312156159d957600080fd5b883597506159e960208a016158a1565b965060408901356001600160401b0380821115615a0557600080fd5b615a118c838d016158b2565b909850965060608b0135915080821115615a2a57600080fd5b50615a378b828c01615967565b945050615a4660808a016158a1565b925060a0890135915060c089013590509295985092959890939650565b60005b83811015615a7e578181015183820152602001615a66565b50506000910152565b60008151808452615a9f816020860160208601615a63565b601f01601f19169290920160200192915050565b6020815260006120ef6020830184615a87565b6001600160a01b03811681146110c257600080fd5b60008060008060808587031215615af157600080fd5b8435615afc81615ac6565b93506020850135615b0c81615ac6565b92506040850135915060608501356001600160401b03811115615b2e57600080fd5b615b3a87828801615967565b91505092959194509250565b60006001600160401b03821115615b5f57615b5f6158fa565b5060051b60200190565b600082601f830112615b7a57600080fd5b81356020615b8a61598683615b46565b82815260059290921b84018101918181019086841115615ba957600080fd5b8286015b84811015615bcd578035615bc081615ac6565b8352918301918301615bad565b509695505050505050565b600082601f830112615be957600080fd5b81356020615bf961598683615b46565b82815260059290921b84018101918181019086841115615c1857600080fd5b8286015b84811015615bcd5780358352918301918301615c1c565b600082601f830112615c4457600080fd5b81356020615c5461598683615b46565b82815260059290921b84018101918181019086841115615c7357600080fd5b8286015b84811015615bcd5780356001600160401b03811115615c965760008081fd5b615ca48986838b0101615967565b845250918301918301615c77565b60008060008060808587031215615cc857600080fd5b84356001600160401b0380821115615cdf57600080fd5b615ceb88838901615b69565b95506020870135915080821115615d0157600080fd5b615d0d88838901615bd8565b94506040870135915080821115615d2357600080fd5b50615d3087828801615c33565b949793965093946060013593505050565b600081518084526020808501945080840160005b83811015615d7a5781516001600160a01b031687529582019590820190600101615d55565b509495945050505050565b600081518084526020808501945080840160005b83811015615d7a57815187529582019590820190600101615d99565b600081518084526020808501808196508360051b8101915082860160005b85811015615dfd578284038952615deb848351615a87565b98850198935090840190600101615dd3565b5091979650505050505050565b608081526000615e1d6080830187615d41565b8281036020840152615e2f8187615d85565b90508281036040840152615e438186615db5565b905082810360608401526117738185615db5565b600080600080600060a08688031215615e6f57600080fd5b85359450615e7f602087016158a1565b9350615e8d604087016158a1565b94979396509394606081013594506080013592915050565b634e487b7160e01b600052602160045260246000fd5b6020810160088310615edd57634e487b7160e01b600052602160045260246000fd5b91905290565b60008060408385031215615ef657600080fd5b823591506020830135615f0881615ac6565b809150509250929050565b600060208284031215615f2557600080fd5b81356120ef81615ac6565b60008060408385031215615f4357600080fd5b82359150615f53602084016158a1565b90509250929050565b600080600080600060808688031215615f7457600080fd5b85359450615f84602087016158a1565b935060408601356001600160401b0380821115615fa057600080fd5b615fac89838a016158b2565b90955093506060880135915080821115615fc557600080fd5b50615fd288828901615967565b9150509295509295909350565b60008060008060608587031215615ff557600080fd5b84359350616005602086016158a1565b925060408501356001600160401b0381111561602057600080fd5b61602c878288016158b2565b95989497509550505050565b6000806000806080858703121561604e57600080fd5b84356001600160401b038082111561606557600080fd5b61607188838901615b69565b9550602087013591508082111561608757600080fd5b61609388838901615bd8565b945060408701359150808211156160a957600080fd5b6160b588838901615c33565b935060608701359150808211156160cb57600080fd5b50615b3a87828801615967565b60ff60f81b8816815260e0602082015260006160f760e0830189615a87565b82810360408401526161098189615a87565b606084018890526001600160a01b038716608085015260a0840186905283810360c08501529050610fc38185615d85565b60008060006060848603121561614f57600080fd5b833561615a81615ac6565b92506020840135915060408401356001600160401b0381111561617c57600080fd5b61618886828701615967565b9150509250925092565b600080600080604085870312156161a857600080fd5b84356001600160401b03808211156161bf57600080fd5b6161cb888389016158b2565b909650945060208701359150808211156161e457600080fd5b5061602c878288016158b2565b600080600080600060a0868803121561620957600080fd5b853561621481615ac6565b9450602086013561622481615ac6565b935060408601356001600160401b038082111561624057600080fd5b61624c89838a01615bd8565b9450606088013591508082111561626257600080fd5b61626e89838a01615bd8565b93506080880135915080821115615fc557600080fd5b6000806000806060858703121561629a57600080fd5b84356162a581615ac6565b93506020850135925060408501356001600160401b0381111561602057600080fd5b6000602082840312156162d957600080fd5b81356001600160401b03811681146120ef57600080fd5b600080600080600060a0868803121561630857600080fd5b85356001600160401b038082111561631f57600080fd5b61632b89838a01615b69565b9650602088013591508082111561634157600080fd5b61634d89838a01615bd8565b9550604088013591508082111561636357600080fd5b61636f89838a01615c33565b9450606088013591508082111561638557600080fd5b61626e89838a01615c33565b600080604083850312156163a457600080fd5b82356163af81615ac6565b946020939093013593505050565b600080600080600060a086880312156163d557600080fd5b85356163e081615ac6565b945060208601356163f081615ac6565b9350604086013592506060860135915060808601356001600160401b0381111561641957600080fd5b615fd288828901615967565b8183823760009101908152919050565b60208082526018908201527f476f7665726e6f723a206f6e6c79476f7665726e616e63650000000000000000604082015260600190565b600181811c9082168061648057607f821691505b6020821081036164a057634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526021908201527f476f7665726e6f723a2070726f706f73616c206e6f74207375636365737366756040820152601b60fa1b606082015260800190565b6000602082840312156164f957600080fd5b5051919050565b60a08152600061651360a0830188615d41565b82810360208401526165258188615d85565b905082810360408401526165398187615db5565b60608401959095525050608001529392505050565b60c08152600061656160c0830189615d41565b82810360208401526165738189615d85565b905082810360408401526165878188615db5565b60608401969096525050608081019290925260a0909101529392505050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610ed357610ed36165a6565b65ffffffffffff8281168282160390808211156165ee576165ee6165a6565b5092915050565b60006020828403121561660757600080fd5b81516001600160401b0381111561661d57600080fd5b8201601f8101841361662e57600080fd5b805161663c61598682615940565b81815285602083850101111561665157600080fd5b6117c2826020830160208601615a63565b81810381811115610ed357610ed36165a6565b634e487b7160e01b600052603260045260246000fd5b60006001820161669d5761669d6165a6565b5060010190565b6000602082840312156166b657600080fd5b815165ffffffffffff811681146120ef57600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6040815260006167096040830186886166cc565b82810360208401526117738185876166cc565b60808152600061672f6080830187615d41565b82810360208401526167418187615d85565b905082810360408401526167558186615db5565b91505082606083015295945050505050565b8082028115828204841417610ed357610ed36165a6565b634e487b7160e01b600052601260045260246000fd5b6000826167b157634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156167c857600080fd5b815180151581146120ef57600080fd5b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60008251616835818460208701615a63565b9190910192915050565b6001600160e01b0319831681528151600090616862816004850160208701615a63565b919091016004019392505050565b6001600160401b038181168382160190808211156165ee576165ee6165a6565b60208082526021908201527f476f7665726e6f723a20696e76616c69642070726f706f73616c206c656e67746040820152600d60fb1b606082015260800190565b8981526001600160a01b0389166020820152610120604082018190526000906168fc8382018b615d41565b90508281036060840152616910818a615d85565b905082810360808401526169248189615db5565b905082810360a08401526169388188615db5565b90508560c08401528460e08401528281036101008401526169598185615a87565b9c9b505050505050505050505050565b601f82111561385f57600081815260208120601f850160051c810160208610156169905750805b601f850160051c820191505b818110156117ac5782815560010161699c565b81516001600160401b038111156169c8576169c86158fa565b6169dc816169d6845461646c565b84616969565b602080601f831160018114616a1157600084156169f95750858301515b600019600386901b1c1916600185901b1785556117ac565b600085815260208120601f198616915b82811015616a4057888601518255948401946001909101908401616a21565b5085821015616a5e5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b84815260ff84166020820152826040820152608060608201526000611a706080830184615a87565b85815260ff8516602082015283604082015260a060608201526000616abe60a0830185615a87565b8281036080840152616ad08185615a87565b9897505050505050505056fe476f7665726e6f723a2072656c617920726576657274656420776974686f7574206d657373616765a164736f6c6343000811000a", - }, - { - ContractAddr: common.HexToAddress(GovTokenContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/cfc0bd1127186a917ddc38fd38d22903034d3f0b", - Code: "608060405234801561001057600080fd5b50600436106101f05760003560e01c806370a082311161010f5780639ab24eb0116100a2578063d505accf11610071578063d505accf1461047e578063dd62ed3e14610491578063e5ed5b1e146104a4578063f1127ed8146104b757600080fd5b80639ab24eb014610432578063a457c2d714610445578063a9059cbb14610458578063c3cda5201461046b57600080fd5b806384b0196e116100de57806384b0196e146103dd5780638e539e8c146103f857806391ddadf41461040b57806395d89b411461042a57600080fd5b806370a082311461038657806379cc6790146103af5780637ecebe00146103c25780638129fc1c146103d557600080fd5b806339509351116101875780634bf5d7e9116101565780634bf5d7e9146102ff578063587cde1e146103075780635c19a95c1461034b5780636fcfff451461035e57600080fd5b806339509351146102b35780633a46b1a8146102c657806342966c68146102d957806344840775146102ec57600080fd5b806323b872dd116101c357806323b872dd146102745780633041949b14610287578063313ce5671461029c5780633644e515146102ab57600080fd5b8063039c91fc146101f557806306fdde0314610234578063095ea7b31461024957806318160ddd1461026c575b600080fd5b610221610203366004612099565b61013060209081526000928352604080842090915290825290205481565b6040519081526020015b60405180910390f35b61023c6104f4565b60405161022b9190612112565b61025c610257366004612125565b610586565b604051901515815260200161022b565b603554610221565b61025c61028236600461214f565b6105a0565b61029a610295366004612099565b6105c4565b005b6040516012815260200161022b565b6102216105fd565b61025c6102c1366004612125565b61060c565b6102216102d4366004612125565b61062e565b61029a6102e736600461218b565b6106b3565b61029a6102fa3660046121a4565b6106c0565b61023c610739565b610333610315366004612228565b6001600160a01b03908116600090815260fe60205260409020541690565b6040516001600160a01b03909116815260200161022b565b61029a610359366004612228565b6107d1565b61037161036c366004612228565b6107db565b60405163ffffffff909116815260200161022b565b610221610394366004612228565b6001600160a01b031660009081526033602052604090205490565b61029a6103bd366004612125565b6107fd565b6102216103d0366004612228565b610812565b61029a610830565b6103e5610a10565b60405161022b9796959493929190612243565b61022161040636600461218b565b610aae565b610413610b16565b60405165ffffffffffff909116815260200161022b565b61023c610b21565b610221610440366004612228565b610b30565b61025c610453366004612125565b610bb2565b61025c610466366004612125565b610c2d565b61029a6104793660046122ea565b610c3b565b61029a61048c366004612342565b610d71565b61022161049f366004612099565b610ed5565b61029a6104b2366004612099565b610f00565b6104ca6104c53660046123ac565b610f30565b60408051825163ffffffff1681526020928301516001600160e01b0316928101929092520161022b565b606060368054610503906123ec565b80601f016020809104026020016040519081016040528092919081815260200182805461052f906123ec565b801561057c5780601f106105515761010080835404028352916020019161057c565b820191906000526020600020905b81548152906001019060200180831161055f57829003601f168201915b5050505050905090565b600033610594818585610fb4565b60019150505b92915050565b6000336105ae858285610fcd565b6105b9858585611047565b506001949350505050565b33612002146105ef57604051630f22c43960e41b815261200260048201526024015b60405180910390fd5b6105f98282611060565b5050565b6000610607611190565b905090565b60003361059481858561061f8383610ed5565b6106299190612436565b610fb4565b6000610638610b16565b65ffffffffffff16821061068a5760405162461bcd60e51b815260206004820152601960248201527804552433230566f7465733a20667574757265206c6f6f6b757603c1b60448201526064016105e6565b6001600160a01b038316600090815260ff602052604090206106ac908361119a565b9392505050565b6106bd3382611283565b50565b33612002146106e657604051630f22c43960e41b815261200260048201526024016105e6565b8160005b818110156107325761072285858381811061070757610707612449565b905060200201602081019061071c9190612228565b84611060565b61072b8161245f565b90506106ea565b5050505050565b606043610744610b16565b65ffffffffffff16146107995760405162461bcd60e51b815260206004820152601d60248201527f4552433230566f7465733a2062726f6b656e20636c6f636b206d6f646500000060448201526064016105e6565b5060408051808201909152601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c74000000602082015290565b6106bd338261128d565b6001600160a01b038116600090815260ff602052604081205461059a90611307565b610808823383610fcd565b6105f98282611283565b6001600160a01b038116600090815260cb602052604081205461059a565b600054610100900460ff16158080156108505750600054600160ff909116105b8061086a5750303b15801561086a575060005460ff166001145b6108cd5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016105e6565b6000805460ff1916600117905580156108f0576000805461ff0019166101001790555b3341146109105760405163022d8c9560e31b815260040160405180910390fd5b3a1561092f576040516383f1b1d360e01b815260040160405180910390fd5b610983604051806040016040528060148152602001732129a19023b7bb32b93730b731b2902a37b5b2b760611b8152506040518060400160405280600681526020016533b7bb21272160d11b815250611370565b61098b6113a1565b6109c0604051806040016040528060148152602001732129a19023b7bb32b93730b731b2902a37b5b2b760611b8152506113ca565b6109c86113a1565b80156106bd576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b6000606080600080600060606097546000801b148015610a305750609854155b610a745760405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b60448201526064016105e6565b610a7c611414565b610a84611423565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b6000610ab8610b16565b65ffffffffffff168210610b0a5760405162461bcd60e51b815260206004820152601960248201527804552433230566f7465733a20667574757265206c6f6f6b757603c1b60448201526064016105e6565b61059a6101008361119a565b600061060743611432565b606060378054610503906123ec565b6001600160a01b038116600090815260ff60205260408120548015610b9f576001600160a01b038316600090815260ff6020526040902080546000198301908110610b7d57610b7d612449565b60009182526020909120015464010000000090046001600160e01b0316610ba2565b60005b6001600160e01b03169392505050565b60003381610bc08286610ed5565b905083811015610c205760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016105e6565b6105b98286868403610fb4565b600033610594818585611047565b83421115610c8b5760405162461bcd60e51b815260206004820152601d60248201527f4552433230566f7465733a207369676e6174757265206578706972656400000060448201526064016105e6565b604080517fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60208201526001600160a01b038816918101919091526060810186905260808101859052600090610d0590610cfd9060a00160405160208183030381529060405280519060200120611499565b8585856114c6565b9050610d10816114ee565b8614610d5e5760405162461bcd60e51b815260206004820152601960248201527f4552433230566f7465733a20696e76616c6964206e6f6e63650000000000000060448201526064016105e6565b610d68818861128d565b50505050505050565b83421115610dc15760405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e6500000060448201526064016105e6565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9888888610df08c6114ee565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090506000610e4b82611499565b90506000610e5b828787876114c6565b9050896001600160a01b0316816001600160a01b031614610ebe5760405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e6174757265000060448201526064016105e6565b610ec98a8a8a610fb4565b50505050505050505050565b6001600160a01b03918216600090815260346020908152604080832093909416825291909152205490565b3361200214610f2657604051630f22c43960e41b815261200260048201526024016105e6565b6105f9828261128d565b60408051808201909152600080825260208201526001600160a01b038316600090815260ff60205260409020805463ffffffff8416908110610f7457610f74612449565b60009182526020918290206040805180820190915291015463ffffffff8116825264010000000090046001600160e01b0316918101919091529392505050565b604051632028747160e01b815260040160405180910390fd5b6000610fd98484610ed5565b9050600019811461104157818110156110345760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016105e6565b6110418484848403610fb4565b50505050565b604051638cd22d1960e01b815260040160405180910390fd5b604051630913db4760e01b81526001600160a01b03828116600483015260009190841690630913db4790602401602060405180830381865afa1580156110aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110ce919061248e565b6001600160a01b03808516600090815261013060209081526040808320938716835292905220549091508181101561114757600061110c82846124a7565b6001600160a01b0380871660009081526101306020908152604080832093891683529290522084905590506111418482611516565b50611041565b8181111561104157600061115b83836124a7565b6001600160a01b0380871660009081526101306020908152604080832093891683529290522084905590506107328482611283565b6000610607611520565b8154600090818160058111156111f45760006111b584611594565b6111bf90856124a7565b600088815260209020909150869082015463ffffffff1611156111e4578091506111f2565b6111ef816001612436565b92505b505b80821015611241576000611208838361167c565b600088815260209020909150869082015463ffffffff16111561122d5780915061123b565b611238816001612436565b92505b506111f4565b801561126d576000868152602090208101600019015464010000000090046001600160e01b0316611270565b60005b6001600160e01b03169695505050505050565b6105f98282611697565b6001600160a01b03828116600081815260fe6020818152604080842080546033845282862054949093528787166001600160a01b03198416811790915590519190951694919391928592917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a46110418284836116b0565b600063ffffffff82111561136c5760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201526532206269747360d01b60648201526084016105e6565b5090565b600054610100900460ff166113975760405162461bcd60e51b81526004016105e6906124ba565b6105f982826117ee565b600054610100900460ff166113c85760405162461bcd60e51b81526004016105e6906124ba565b565b600054610100900460ff166113f15760405162461bcd60e51b81526004016105e6906124ba565b6106bd81604051806040016040528060018152602001603160f81b81525061182e565b606060998054610503906123ec565b6060609a8054610503906123ec565b600065ffffffffffff82111561136c5760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203460448201526538206269747360d01b60648201526084016105e6565b600061059a6114a6611190565b8360405161190160f01b8152600281019290925260228201526042902090565b60008060006114d78787878761187d565b915091506114e481611941565b5095945050505050565b6001600160a01b038116600090815260cb602052604090208054600181018255905b50919050565b6105f98282611a8b565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f61154b611b16565b611553611b6f565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b6000816000036115a657506000919050565b600060016115b384611ba0565b901c6001901b905060018184816115cc576115cc612505565b048201901c905060018184816115e4576115e4612505565b048201901c905060018184816115fc576115fc612505565b048201901c9050600181848161161457611614612505565b048201901c9050600181848161162c5761162c612505565b048201901c9050600181848161164457611644612505565b048201901c9050600181848161165c5761165c612505565b048201901c90506106ac8182858161167657611676612505565b04611c34565b600061168b600284841861251b565b6106ac90848416612436565b6116a18282611c4a565b611041610100611d8583611d91565b816001600160a01b0316836001600160a01b0316141580156116d25750600081115b156117e9576001600160a01b03831615611760576001600160a01b038316600090815260ff60205260408120819061170d90611d8585611d91565b91509150846001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248383604051611755929190918252602082015260400190565b60405180910390a250505b6001600160a01b038216156117e9576001600160a01b038216600090815260ff60205260408120819061179690611f0685611d91565b91509150836001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72483836040516117de929190918252602082015260400190565b60405180910390a250505b505050565b600054610100900460ff166118155760405162461bcd60e51b81526004016105e6906124ba565b6036611821838261258b565b5060376117e9828261258b565b600054610100900460ff166118555760405162461bcd60e51b81526004016105e6906124ba565b6099611861838261258b565b50609a61186e828261258b565b50506000609781905560985550565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156118b45750600090506003611938565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611908573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661193157600060019250925050611938565b9150600090505b94509492505050565b60008160048111156119555761195561264b565b0361195d5750565b60018160048111156119715761197161264b565b036119be5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016105e6565b60028160048111156119d2576119d261264b565b03611a1f5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016105e6565b6003816004811115611a3357611a3361264b565b036106bd5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016105e6565b611a958282611f12565b6035546001600160e01b031015611b075760405162461bcd60e51b815260206004820152603060248201527f4552433230566f7465733a20746f74616c20737570706c79207269736b73206f60448201526f766572666c6f77696e6720766f74657360801b60648201526084016105e6565b611041610100611f0683611d91565b600080611b21611414565b805190915015611b38578051602090910120919050565b6097548015611b475792915050565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4709250505090565b600080611b7a611423565b805190915015611b91578051602090910120919050565b6098548015611b475792915050565b600080608083901c15611bb557608092831c92015b604083901c15611bc757604092831c92015b602083901c15611bd957602092831c92015b601083901c15611beb57601092831c92015b600883901c15611bfd57600892831c92015b600483901c15611c0f57600492831c92015b600283901c15611c2157600292831c92015b600183901c1561059a5760010192915050565b6000818310611c4357816106ac565b5090919050565b6001600160a01b038216611caa5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016105e6565b6001600160a01b03821660009081526033602052604090205481811015611d1e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016105e6565b6001600160a01b03831660008181526033602090815260408083208686039055603580548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36117e983600084611fd7565b60006106ac82846124a7565b82546000908190818115611dde5760008781526020902082016000190160408051808201909152905463ffffffff8116825264010000000090046001600160e01b03166020820152611df3565b60408051808201909152600080825260208201525b905080602001516001600160e01b03169350611e1384868863ffffffff16565b9250600082118015611e3d5750611e28610b16565b65ffffffffffff16816000015163ffffffff16145b15611e8257611e4b83611fe2565b60008881526020902083016000190180546001600160e01b03929092166401000000000263ffffffff909216919091179055611efc565b866040518060400160405280611ea6611e99610b16565b65ffffffffffff16611307565b63ffffffff168152602001611eba86611fe2565b6001600160e01b0390811690915282546001810184556000938452602093849020835194909301519091166401000000000263ffffffff909316929092179101555b5050935093915050565b60006106ac8284612436565b6001600160a01b038216611f685760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016105e6565b8060356000828254611f7a9190612436565b90915550506001600160a01b0382166000818152603360209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36105f9600083835b6117e983838361204b565b60006001600160e01b0382111561136c5760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20326044820152663234206269747360c81b60648201526084016105e6565b6001600160a01b03838116600090815260fe60205260408082205485841683529120546117e9929182169116836116b0565b80356001600160a01b038116811461209457600080fd5b919050565b600080604083850312156120ac57600080fd5b6120b58361207d565b91506120c36020840161207d565b90509250929050565b6000815180845260005b818110156120f2576020818501810151868301820152016120d6565b506000602082860101526020601f19601f83011685010191505092915050565b6020815260006106ac60208301846120cc565b6000806040838503121561213857600080fd5b6121418361207d565b946020939093013593505050565b60008060006060848603121561216457600080fd5b61216d8461207d565b925061217b6020850161207d565b9150604084013590509250925092565b60006020828403121561219d57600080fd5b5035919050565b6000806000604084860312156121b957600080fd5b833567ffffffffffffffff808211156121d157600080fd5b818601915086601f8301126121e557600080fd5b8135818111156121f457600080fd5b8760208260051b850101111561220957600080fd5b60209283019550935061221f918601905061207d565b90509250925092565b60006020828403121561223a57600080fd5b6106ac8261207d565b60ff60f81b881681526000602060e08184015261226360e084018a6120cc565b8381036040850152612275818a6120cc565b606085018990526001600160a01b038816608086015260a0850187905284810360c0860152855180825283870192509083019060005b818110156122c7578351835292840192918401916001016122ab565b50909c9b505050505050505050505050565b803560ff8116811461209457600080fd5b60008060008060008060c0878903121561230357600080fd5b61230c8761207d565b95506020870135945060408701359350612328606088016122d9565b92506080870135915060a087013590509295509295509295565b600080600080600080600060e0888a03121561235d57600080fd5b6123668861207d565b96506123746020890161207d565b95506040880135945060608801359350612390608089016122d9565b925060a0880135915060c0880135905092959891949750929550565b600080604083850312156123bf57600080fd5b6123c88361207d565b9150602083013563ffffffff811681146123e157600080fd5b809150509250929050565b600181811c9082168061240057607f821691505b60208210810361151057634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b8082018082111561059a5761059a612420565b634e487b7160e01b600052603260045260246000fd5b60006001820161247157612471612420565b5060010190565b634e487b7160e01b600052604160045260246000fd5b6000602082840312156124a057600080fd5b5051919050565b8181038181111561059a5761059a612420565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b634e487b7160e01b600052601260045260246000fd5b60008261253857634e487b7160e01b600052601260045260246000fd5b500490565b601f8211156117e957600081815260208120601f850160051c810160208610156125645750805b601f850160051c820191505b8181101561258357828155600101612570565b505050505050565b815167ffffffffffffffff8111156125a5576125a5612478565b6125b9816125b384546123ec565b8461253d565b602080601f8311600181146125ee57600084156125d65750858301515b600019600386901b1c1916600185901b178555612583565b600085815260208120601f198616915b8281101561261d578886015182559484019460019091019084016125fe565b508582101561263b5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052602160045260246000fdfea164736f6c6343000811000a", - }, - { - ContractAddr: common.HexToAddress(TimelockContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/cfc0bd1127186a917ddc38fd38d22903034d3f0b", - Code: "6080604052600436106101d15760003560e01c80638129fc1c116100f7578063b1c5f42711610095578063d547741f11610064578063d547741f14610584578063e38335e5146105a4578063f23a6e61146105b7578063f27a0c92146105e357600080fd5b8063b1c5f427146104eb578063bc197c811461050b578063c4d252f514610537578063d45c44351461055757600080fd5b806391d14854116100d157806391d1485414610474578063a217fddf14610494578063ac431751146104a9578063b08e51c0146104c957600080fd5b80638129fc1c1461041d5780638f2a0bb0146104325780638f61f4f51461045257600080fd5b8063248a9ca31161016f57806336568abe1161013e57806336568abe1461039d578063584b153e146103bd57806364d62353146103dd5780638065657f146103fd57600080fd5b8063248a9ca3146102fd5780632ab0f5291461032d5780632f2ff15d1461035d57806331d507501461037d57600080fd5b80630d3cf6fc116101ab5780630d3cf6fc14610264578063134008d31461028657806313bc9f2014610299578063150b7a02146102b957600080fd5b806301d5062a146101dd57806301ffc9a7146101ff57806307bd02651461023457600080fd5b366101d857005b600080fd5b3480156101e957600080fd5b506101fd6101f8366004611a54565b6105f8565b005b34801561020b57600080fd5b5061021f61021a366004611ac8565b6106bc565b60405190151581526020015b60405180910390f35b34801561024057600080fd5b5061025660008051602061253b83398151915281565b60405190815260200161022b565b34801561027057600080fd5b506102566000805160206124fb83398151915281565b6101fd610294366004611af2565b6106e7565b3480156102a557600080fd5b5061021f6102b4366004611b5d565b61078a565b3480156102c557600080fd5b506102e46102d4366004611c2b565b630a85bd0160e11b949350505050565b6040516001600160e01b0319909116815260200161022b565b34801561030957600080fd5b50610256610318366004611b5d565b60009081526065602052604090206001015490565b34801561033957600080fd5b5061021f610348366004611b5d565b60009081526097602052604090205460011490565b34801561036957600080fd5b506101fd610378366004611c92565b6107b0565b34801561038957600080fd5b5061021f610398366004611b5d565b6107da565b3480156103a957600080fd5b506101fd6103b8366004611c92565b6107f3565b3480156103c957600080fd5b5061021f6103d8366004611b5d565b610876565b3480156103e957600080fd5b506101fd6103f8366004611b5d565b61088d565b34801561040957600080fd5b50610256610418366004611af2565b610931565b34801561042957600080fd5b506101fd610970565b34801561043e57600080fd5b506101fd61044d366004611d02565b610b22565b34801561045e57600080fd5b5061025660008051602061251b83398151915281565b34801561048057600080fd5b5061021f61048f366004611c92565b610ca3565b3480156104a057600080fd5b50610256600081565b3480156104b557600080fd5b506101fd6104c4366004611db3565b610cce565b3480156104d557600080fd5b5061025660008051602061255b83398151915281565b3480156104f757600080fd5b50610256610506366004611e1e565b610eb8565b34801561051757600080fd5b506102e4610526366004611f45565b63bc197c8160e01b95945050505050565b34801561054357600080fd5b506101fd610552366004611b5d565b610efd565b34801561056357600080fd5b50610256610572366004611b5d565b60009081526097602052604090205490565b34801561059057600080fd5b506101fd61059f366004611c92565b610fc0565b6101fd6105b2366004611e1e565b610fe5565b3480156105c357600080fd5b506102e46105d2366004611fee565b63f23a6e6160e01b95945050505050565b3480156105ef57600080fd5b50609854610256565b60008051602061251b8339815191526106108161115d565b6000610620898989898989610931565b905061062c8184611167565b6000817f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8b8b8b8b8b8a6040516106689695949392919061207b565b60405180910390a383156106b157807f20fda5fd27a1ea7bf5b9567f143ac5470bb059374a27e8f67cb44f946f6d0387856040516106a891815260200190565b60405180910390a25b505050505050505050565b60006001600160e01b03198216630271189760e51b14806106e157506106e182611256565b92915050565b60008051602061253b833981519152610701816000610ca3565b61070f5761070f813361128b565b600061071f888888888888610931565b905061072b81856112e4565b6107378888888861137f565b6000817fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b588a8a8a8a60405161076f94939291906120b8565b60405180910390a361078081611452565b5050505050505050565b6000818152609760205260408120546001811180156107a95750428111155b9392505050565b6000828152606560205260409020600101546107cb8161115d565b6107d5838361148b565b505050565b60008181526097602052604081205481905b1192915050565b6001600160a01b03811633146108685760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b6108728282611511565b5050565b6000818152609760205260408120546001906107ec565b3330146108f05760405162461bcd60e51b815260206004820152602b60248201527f54696d656c6f636b436f6e74726f6c6c65723a2063616c6c6572206d7573742060448201526a62652074696d656c6f636b60a81b606482015260840161085f565b60985460408051918252602082018390527f11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d5910160405180910390a1609855565b600086868686868660405160200161094e9695949392919061207b565b6040516020818303038152906040528051906020012090509695505050505050565b600054610100900460ff16158080156109905750600054600160ff909116105b806109aa5750303b1580156109aa575060005460ff166001145b610a0d5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161085f565b6000805460ff191660011790558015610a30576000805461ff0019166101001790555b334114610a505760405163022d8c9560e31b815260040160405180910390fd5b3a15610a6f576040516383f1b1d360e01b815260040160405180910390fd5b6040805160018082528183019092526000916020808301908036833701905050905061200481600081518110610aa757610aa76120ea565b60200260200101906001600160a01b031690816001600160a01b031681525050610ad8620151808283612004611578565b508015610b1f576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b60008051602061251b833981519152610b3a8161115d565b888714610b595760405162461bcd60e51b815260040161085f90612100565b888514610b785760405162461bcd60e51b815260040161085f90612100565b6000610b8a8b8b8b8b8b8b8b8b610eb8565b9050610b968184611167565b60005b8a811015610c545780827f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8e8e85818110610bd657610bd66120ea565b9050602002016020810190610beb9190612143565b8d8d86818110610bfd57610bfd6120ea565b905060200201358c8c87818110610c1657610c166120ea565b9050602002810190610c28919061215e565b8c8b604051610c3c9695949392919061207b565b60405180910390a3610c4d816121ba565b9050610b99565b508315610c9657807f20fda5fd27a1ea7bf5b9567f143ac5470bb059374a27e8f67cb44f946f6d038785604051610c8d91815260200190565b60405180910390a25b5050505050505050505050565b60009182526065602090815260408084206001600160a01b0393909316845291905290205460ff1690565b3361100714610cf457604051630f22c43960e41b8152611007600482015260240161085f565b610d57604051806040016040528060088152602001676d696e44656c617960c01b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506115b19050565b15610e545760208114610d855783838383604051630a5a604160e01b815260040161085f94939291906121d3565b604080516020601f8401819004810282018101909252828152600091610dc691858580838501838280828437600092019190915250929392505061160a9050565b9050801580610dd757506212750081115b15610dfd5784848484604051630a5a604160e01b815260040161085f94939291906121d3565b6040516364d6235360e01b81526004810182905230906364d6235390602401600060405180830381600087803b158015610e3657600080fd5b505af1158015610e4a573d6000803e3d6000fd5b5050505050610e75565b838383836040516325ee20d560e21b815260040161085f94939291906121d3565b7ff1ce9b2cbf50eeb05769a29e2543fd350cab46894a7dd9978a12d534bb20e63384848484604051610eaa94939291906121d3565b60405180910390a150505050565b60008888888888888888604051602001610ed998979695949392919061228b565b60405160208183030381529060405280519060200120905098975050505050505050565b60008051602061255b833981519152610f158161115d565b610f1e82610876565b610f845760405162461bcd60e51b815260206004820152603160248201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e2063616044820152701b9b9bdd0818994818d85b98d95b1b1959607a1b606482015260840161085f565b6000828152609760205260408082208290555183917fbaa1eb22f2a492ba1a5fea61b8df4d27c6c8b5f3971e63bb58fa14ff72eedb7091a25050565b600082815260656020526040902060010154610fdb8161115d565b6107d58383611511565b60008051602061253b833981519152610fff816000610ca3565b61100d5761100d813361128b565b87861461102c5760405162461bcd60e51b815260040161085f90612100565b87841461104b5760405162461bcd60e51b815260040161085f90612100565b600061105d8a8a8a8a8a8a8a8a610eb8565b905061106981856112e4565b60005b898110156111475760008b8b83818110611088576110886120ea565b905060200201602081019061109d9190612143565b905060008a8a848181106110b3576110b36120ea565b9050602002013590503660008a8a868181106110d1576110d16120ea565b90506020028101906110e3919061215e565b915091506110f38484848461137f565b84867fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b588686868660405161112a94939291906120b8565b60405180910390a35050505080611140906121ba565b905061106c565b5061115181611452565b50505050505050505050565b610b1f813361128b565b611170826107da565b156111d55760405162461bcd60e51b815260206004820152602f60248201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e20616c60448201526e1c9958591e481cd8da19591d5b1959608a1b606482015260840161085f565b6098548110156112365760405162461bcd60e51b815260206004820152602660248201527f54696d656c6f636b436f6e74726f6c6c65723a20696e73756666696369656e746044820152652064656c617960d01b606482015260840161085f565b611240814261232c565b6000928352609760205260409092209190915550565b60006001600160e01b03198216637965db0b60e01b14806106e157506301ffc9a760e01b6001600160e01b03198316146106e1565b6112958282610ca3565b610872576112a28161160f565b6112ad836020611621565b6040516020016112be929190612363565b60408051601f198184030181529082905262461bcd60e51b825261085f916004016123d8565b6112ed8261078a565b6113095760405162461bcd60e51b815260040161085f9061240b565b80158061132457506000818152609760205260409020546001145b6108725760405162461bcd60e51b815260206004820152602660248201527f54696d656c6f636b436f6e74726f6c6c65723a206d697373696e6720646570656044820152656e64656e637960d01b606482015260840161085f565b6000846001600160a01b031684848460405161139c929190612455565b60006040518083038185875af1925050503d80600081146113d9576040519150601f19603f3d011682016040523d82523d6000602084013e6113de565b606091505b505090508061144b5760405162461bcd60e51b815260206004820152603360248201527f54696d656c6f636b436f6e74726f6c6c65723a20756e6465726c79696e6720746044820152721c985b9cd858dd1a5bdb881c995d995c9d1959606a1b606482015260840161085f565b5050505050565b61145b8161078a565b6114775760405162461bcd60e51b815260040161085f9061240b565b600090815260976020526040902060019055565b6114958282610ca3565b6108725760008281526065602090815260408083206001600160a01b03851684529091529020805460ff191660011790556114cd3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b61151b8282610ca3565b156108725760008281526065602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b600054610100900460ff1661159f5760405162461bcd60e51b815260040161085f90612465565b6115ab848484846117bc565b50505050565b6000816040516020016115c491906124b0565b60405160208183030381529060405280519060200120836040516020016115eb91906124b0565b6040516020818303038152906040528051906020012014905092915050565b015190565b60606106e16001600160a01b03831660145b606060006116308360026124cc565b61163b90600261232c565b6001600160401b0381111561165257611652611b76565b6040519080825280601f01601f19166020018201604052801561167c576020820181803683370190505b509050600360fc1b81600081518110611697576116976120ea565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106116c6576116c66120ea565b60200101906001600160f81b031916908160001a90535060006116ea8460026124cc565b6116f590600161232c565b90505b600181111561176d576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110611729576117296120ea565b1a60f81b82828151811061173f5761173f6120ea565b60200101906001600160f81b031916908160001a90535060049490941c93611766816124e3565b90506116f8565b5083156107a95760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161085f565b600054610100900460ff166117e35760405162461bcd60e51b815260040161085f90612465565b6117fb6000805160206124fb8339815191528061199b565b61182160008051602061251b8339815191526000805160206124fb83398151915261199b565b61184760008051602061253b8339815191526000805160206124fb83398151915261199b565b61186d60008051602061255b8339815191526000805160206124fb83398151915261199b565b6118856000805160206124fb833981519152306119e6565b6001600160a01b038116156118ac576118ac6000805160206124fb833981519152826119e6565b60005b835181101561191d576118e960008051602061251b8339815191528583815181106118dc576118dc6120ea565b60200260200101516119e6565b61190d60008051602061255b8339815191528583815181106118dc576118dc6120ea565b611916816121ba565b90506118af565b5060005b825181101561195e5761194e60008051602061253b8339815191528483815181106118dc576118dc6120ea565b611957816121ba565b9050611921565b5060988490556040805160008152602081018690527f11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d59101610eaa565b600082815260656020526040808220600101805490849055905190918391839186917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a4505050565b610872828261148b565b80356001600160a01b0381168114611a0757600080fd5b919050565b60008083601f840112611a1e57600080fd5b5081356001600160401b03811115611a3557600080fd5b602083019150836020828501011115611a4d57600080fd5b9250929050565b600080600080600080600060c0888a031215611a6f57600080fd5b611a78886119f0565b96506020880135955060408801356001600160401b03811115611a9a57600080fd5b611aa68a828b01611a0c565b989b979a50986060810135976080820135975060a09091013595509350505050565b600060208284031215611ada57600080fd5b81356001600160e01b0319811681146107a957600080fd5b60008060008060008060a08789031215611b0b57600080fd5b611b14876119f0565b95506020870135945060408701356001600160401b03811115611b3657600080fd5b611b4289828a01611a0c565b979a9699509760608101359660809091013595509350505050565b600060208284031215611b6f57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715611bb457611bb4611b76565b604052919050565b600082601f830112611bcd57600080fd5b81356001600160401b03811115611be657611be6611b76565b611bf9601f8201601f1916602001611b8c565b818152846020838601011115611c0e57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060808587031215611c4157600080fd5b611c4a856119f0565b9350611c58602086016119f0565b92506040850135915060608501356001600160401b03811115611c7a57600080fd5b611c8687828801611bbc565b91505092959194509250565b60008060408385031215611ca557600080fd5b82359150611cb5602084016119f0565b90509250929050565b60008083601f840112611cd057600080fd5b5081356001600160401b03811115611ce757600080fd5b6020830191508360208260051b8501011115611a4d57600080fd5b600080600080600080600080600060c08a8c031215611d2057600080fd5b89356001600160401b0380821115611d3757600080fd5b611d438d838e01611cbe565b909b50995060208c0135915080821115611d5c57600080fd5b611d688d838e01611cbe565b909950975060408c0135915080821115611d8157600080fd5b50611d8e8c828d01611cbe565b9a9d999c50979a969997986060880135976080810135975060a0013595509350505050565b60008060008060408587031215611dc957600080fd5b84356001600160401b0380821115611de057600080fd5b611dec88838901611a0c565b90965094506020870135915080821115611e0557600080fd5b50611e1287828801611a0c565b95989497509550505050565b60008060008060008060008060a0898b031215611e3a57600080fd5b88356001600160401b0380821115611e5157600080fd5b611e5d8c838d01611cbe565b909a50985060208b0135915080821115611e7657600080fd5b611e828c838d01611cbe565b909850965060408b0135915080821115611e9b57600080fd5b50611ea88b828c01611cbe565b999c989b509699959896976060870135966080013595509350505050565b600082601f830112611ed757600080fd5b813560206001600160401b03821115611ef257611ef2611b76565b8160051b611f01828201611b8c565b9283528481018201928281019087851115611f1b57600080fd5b83870192505b84831015611f3a57823582529183019190830190611f21565b979650505050505050565b600080600080600060a08688031215611f5d57600080fd5b611f66866119f0565b9450611f74602087016119f0565b935060408601356001600160401b0380821115611f9057600080fd5b611f9c89838a01611ec6565b94506060880135915080821115611fb257600080fd5b611fbe89838a01611ec6565b93506080880135915080821115611fd457600080fd5b50611fe188828901611bbc565b9150509295509295909350565b600080600080600060a0868803121561200657600080fd5b61200f866119f0565b945061201d602087016119f0565b9350604086013592506060860135915060808601356001600160401b0381111561204657600080fd5b611fe188828901611bbc565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60018060a01b038716815285602082015260a0604082015260006120a360a083018688612052565b60608301949094525060800152949350505050565b60018060a01b03851681528360208201526060604082015260006120e0606083018486612052565b9695505050505050565b634e487b7160e01b600052603260045260246000fd5b60208082526023908201527f54696d656c6f636b436f6e74726f6c6c65723a206c656e677468206d69736d616040820152620e8c6d60eb1b606082015260800190565b60006020828403121561215557600080fd5b6107a9826119f0565b6000808335601e1984360301811261217557600080fd5b8301803591506001600160401b0382111561218f57600080fd5b602001915036819003821315611a4d57600080fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016121cc576121cc6121a4565b5060010190565b6040815260006121e7604083018688612052565b8281036020840152611f3a818587612052565b81835260006020808501808196508560051b810191508460005b8781101561227e5782840389528135601e1988360301811261223557600080fd5b870185810190356001600160401b0381111561225057600080fd5b80360382131561225f57600080fd5b61226a868284612052565b9a87019a9550505090840190600101612214565b5091979650505050505050565b60a0808252810188905260008960c08301825b8b8110156122cc576001600160a01b036122b7846119f0565b1682526020928301929091019060010161229e565b5083810360208501528881526001600160fb1b038911156122ec57600080fd5b8860051b9150818a6020830137018281036020908101604085015261231490820187896121fa565b60608401959095525050608001529695505050505050565b808201808211156106e1576106e16121a4565b60005b8381101561235a578181015183820152602001612342565b50506000910152565b7f416363657373436f6e74726f6c3a206163636f756e742000000000000000000081526000835161239b81601785016020880161233f565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516123cc81602884016020880161233f565b01602801949350505050565b60208152600082518060208401526123f781604085016020870161233f565b601f01601f19169190910160400192915050565b6020808252602a908201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e206973604082015269206e6f7420726561647960b01b606082015260800190565b8183823760009101908152919050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b600082516124c281846020870161233f565b9190910192915050565b80820281158282048414176106e1576106e16121a4565b6000816124f2576124f26121a4565b50600019019056fe5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca5b09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc1d8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e63fd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f783a164736f6c6343000811000a", - }, - { - ContractAddr: common.HexToAddress(TokenRecoverPortalContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/cfc0bd1127186a917ddc38fd38d22903034d3f0b", - Code: "608060405234801561001057600080fd5b50600436106100a95760003560e01c80639fcb5012116100715780639fcb50121461012f578063ac4317511461014c578063bfb5a6a11461015f578063de88700b14610172578063e33f8d321461019d578063f4b88300146101c057600080fd5b8063046f7da2146100ae5780632eb4a7ab146100b85780634c335368146100d4578063572c9980146101145780638456cb5914610127575b600080fd5b6100b66101d3565b005b6100c160345481565b6040519081526020015b60405180910390f35b6101076040518060400160405280601481526020017342696e616e63652d436861696e2d47616e67657360601b81525081565b6040516100cb91906113eb565b6100b661012236600461141e565b610236565b6100b66102c7565b60355461013c9060ff1681565b60405190151581526020016100cb565b6100b661015a36600461149c565b610330565b6100b661016d36600461154d565b610756565b603754610185906001600160a01b031681565b6040516001600160a01b0390911681526020016100cb565b61013c6101ab366004611627565b60009081526036602052604090205460ff1690565b603354610185906001600160a01b031681565b6037546001600160a01b031633146101fe5760405163f2771a9960e01b815260040160405180910390fd5b6037805460ff60a01b191690556040517f62451d457bc659158be6e6247f56ec1df424a5c7597f71c20c2bc44e0965c8f990600090a1565b6037546001600160a01b031633146102615760405163f2771a9960e01b815260040160405180910390fd5b604051638525db0360e01b8152600481018390526001600160a01b038216602482015261100490638525db0390604401600060405180830381600087803b1580156102ab57600080fd5b505af11580156102bf573d6000803e3d6000fd5b505050505050565b6037546001600160a01b031633146102f25760405163f2771a9960e01b815260040160405180910390fd5b6037805460ff60a01b1916600160a01b1790556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e75290600090a1565b336110071461035b57604051630f22c43960e41b815261100760048201526024015b60405180910390fd5b6103c56040518060400160405280600f81526020016e617070726f7665724164647265737360881b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610a989050565b1561048d57601481146103f35783838383604051630a5a604160e01b81526004016103529493929190611669565b600061043783838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060149250610af2915050565b90506001600160a01b0381166104685784848484604051630a5a604160e01b81526004016103529493929190611669565b603380546001600160a01b0319166001600160a01b0392909216919091179055610713565b6104f26040518060400160405280600a8152602001691b595c9adb19549bdbdd60b21b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610a989050565b156105bf5760355460ff161561051b576040516379b3306f60e11b815260040160405180910390fd5b602081146105445783838383604051630a5a604160e01b81526004016103529493929190611669565b604080516020601f840181900481028201810190925282815260009161058491858580838501838280828437600092019190915250869250610af7915050565b806105aa5784848484604051630a5a604160e01b81526004016103529493929190611669565b6034556035805460ff19166001179055610713565b6106286040518060400160405280600e81526020016d30b9b9b2ba283937ba32b1ba37b960911b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610a989050565b156106f257601481146106565783838383604051630a5a604160e01b81526004016103529493929190611669565b600061069c601484848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610af29050565b90506001600160a01b0381166106cd5784848484604051630a5a604160e01b81526004016103529493929190611669565b603780546001600160a01b0319166001600160a01b0392909216919091179055610713565b838383836040516325ee20d560e21b81526004016103529493929190611669565b7ff1ce9b2cbf50eeb05769a29e2543fd350cab46894a7dd9978a12d534bb20e633848484846040516107489493929190611669565b60405180910390a150505050565b60355460ff1661077957604051635740729760e01b815260040160405180910390fd5b60345461079957604051635740729760e01b815260040160405180910390fd5b603754600160a01b900460ff16156107c45760405163c629ac8160e01b815260040160405180910390fd5b6107cc610b06565b600061085a89898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8d018190048102820181019092528b815292508b91508a9081908401838280828437600081840152601f19601f820116905080830192505050505050506108558e8e33610b5f565b610c80565b90506000818c8c6040516020016108739392919061169b565b6040516020818303038152906040528051906020012090506108a48160009081526036602052604090205460ff1690565b156108c157604051623e493160e81b815260040160405180910390fd5b6109693389898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8d018190048102820181019092528b815292508b91508a908190840183828082843760009201919091525050604080516020808c0282810182019093528b82528994509092508b918b91829190850190849080828437600092019190915250610d7492505050565b6109aa848480806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250506034549150849050610e7f565b6109c7576040516309bde33960e01b815260040160405180910390fd5b60008181526036602052604090819020805460ff191660011790555163799758b960e01b8152600481018d9052336024820152604481018c90526110049063799758b990606401600060405180830381600087803b158015610a2857600080fd5b505af1158015610a3c573d6000803e3d6000fd5b5050604080518f81523360208201529081018e90527f717c40d7a8dbe67bb6371e964c24423645711d1624980e1c74e6956fc21088059250606001905060405180910390a15050610a8c60018055565b50505050505050505050565b600081604051602001610aab91906116c2565b6040516020818303038152906040528051906020012083604051602001610ad291906116c2565b604051602081830303815290604052805190602001201490505b92915050565b015190565b91018082526020908101910152565b600260015403610b585760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610352565b6002600155565b600060026040518060400160405280601481526020017342696e616e63652d436861696e2d47616e67657360601b815250610bbc85604051602001610ba691815260200190565b6040516020818303038152906040526000610e95565b6040516bffffffffffffffffffffffff19606087901b166020820152610bf5906034016040516020818303038152906040526001610e95565b610c0b88604051602001610ba691815260200190565b604051602001610c1e94939291906116de565b60408051601f1981840301815290829052610c38916116c2565b602060405180830381855afa158015610c55573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610c78919061180d565b949350505050565b60608351602114610ca457604051638152ea1b60e01b815260040160405180910390fd5b8251604014610cc657604051635e4bd79760e11b815260040160405180910390fd5b60408051608180825260c08201909252600091602082018180368337019050509050610cf6818660006021611067565b610d04818560216040611067565b610d338184604051602001610d1b91815260200190565b60405160208183030381529060405260616020611067565b604080516014808252818301909252600091602082018180368337019050509050815160148282856069600019fa610d6a57600080fd5b5095945050505050565b606060005b8251811015610dd25781838281518110610d9557610d9561183c565b6020026020010151604051602001610dae929190611852565b60405160208183030381529060405291508080610dca9061188a565b915050610d79565b5060006040518060400160405280601481526020017342696e616e63652d436861696e2d47616e67657360601b81525087878660345486604051602001610e1e969594939291906118a3565b60408051601f1981840301815291905280516020909101206033549091506001600160a01b0316610e4f82876110de565b6001600160a01b031614610e7657604051636eb5c6cb60e11b815260040160405180910390fd5b50505050505050565b600082610e8c85846110fa565b14949350505050565b6060600083516002610ea79190611914565b67ffffffffffffffff811115610ebf57610ebf611826565b6040519080825280601f01601f191660200182016040528015610ee9576020820181803683370190505b5060408051808201909152601081526f181899199a1a9b1b9c1cb0b131b232b360811b602082015290915060005b855181101561102f57818251878381518110610f3557610f3561183c565b0160200151610f47919060f81c611941565b81518110610f5757610f5761183c565b01602001516001600160f81b03191683610f72836002611914565b81518110610f8257610f8261183c565b60200101906001600160f81b031916908160001a905350818251878381518110610fae57610fae61183c565b0160200151610fc0919060f81c611955565b81518110610fd057610fd061183c565b01602001516001600160f81b03191683610feb836002611914565b610ff6906001611969565b815181106110065761100661183c565b60200101906001600160f81b031916908160001a905350806110278161188a565b915050610f17565b50831561105f5781604051602001611047919061197c565b60405160208183030381529060405292505050610aec565b509392505050565b60005b818110156110d7578381815181106110845761108461183c565b01602001516001600160f81b031916858461109e8161188a565b9550815181106110b0576110b061183c565b60200101906001600160f81b031916908160001a9053506110d08161188a565b905061106a565b5050505050565b60008060006110ed858561113f565b9150915061105f81611184565b600081815b845181101561105f5761112b8286838151811061111e5761111e61183c565b60200260200101516112d1565b9150806111378161188a565b9150506110ff565b60008082516041036111755760208301516040840151606085015160001a61116987828585611303565b9450945050505061117d565b506000905060025b9250929050565b6000816004811115611198576111986119a6565b036111a05750565b60018160048111156111b4576111b46119a6565b036112015760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610352565b6002816004811115611215576112156119a6565b036112625760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610352565b6003816004811115611276576112766119a6565b036112ce5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610352565b50565b60008183106112ed5760008281526020849052604090206112fc565b60008381526020839052604090205b9392505050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561133a57506000905060036113be565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa15801561138e573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166113b7576000600192509250506113be565b9150600090505b94509492505050565b60005b838110156113e25781810151838201526020016113ca565b50506000910152565b602081526000825180602084015261140a8160408501602087016113c7565b601f01601f19169190910160400192915050565b6000806040838503121561143157600080fd5b8235915060208301356001600160a01b038116811461144f57600080fd5b809150509250929050565b60008083601f84011261146c57600080fd5b50813567ffffffffffffffff81111561148457600080fd5b60208301915083602082850101111561117d57600080fd5b600080600080604085870312156114b257600080fd5b843567ffffffffffffffff808211156114ca57600080fd5b6114d68883890161145a565b909650945060208701359150808211156114ef57600080fd5b506114fc8782880161145a565b95989497509550505050565b60008083601f84011261151a57600080fd5b50813567ffffffffffffffff81111561153257600080fd5b6020830191508360208260051b850101111561117d57600080fd5b60008060008060008060008060008060c08b8d03121561156c57600080fd5b8a35995060208b0135985060408b013567ffffffffffffffff8082111561159257600080fd5b61159e8e838f0161145a565b909a50985060608d01359150808211156115b757600080fd5b6115c38e838f0161145a565b909850965060808d01359150808211156115dc57600080fd5b6115e88e838f0161145a565b909650945060a08d013591508082111561160157600080fd5b5061160e8d828e01611508565b915080935050809150509295989b9194979a5092959850565b60006020828403121561163957600080fd5b5035919050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60408152600061167d604083018688611640565b8281036020840152611690818587611640565b979650505050505050565b600084516116ad8184602089016113c7565b91909101928352506020820152604001919050565b600082516116d48184602087016113c7565b9190910192915050565b7f7b226163636f756e745f6e756d626572223a2230222c22636861696e5f6964228152611d1160f11b602082015260008551611721816022850160208a016113c7565b7f222c2264617461223a6e756c6c2c226d656d6f223a22222c226d736773223a5b6022918401918201526a3d9130b6b7bab73a111d1160a91b6042820152855161177281604d840160208a016113c7565b6e1116113932b1b4b834b2b73a111d1160891b604d929091019182015284516117a281605c8401602089016113c7565b711116113a37b5b2b72fb9bcb6b137b6111d1160711b605c929091019182015283516117d581606e8401602088016113c7565b7f227d5d2c2273657175656e6365223a2230222c22736f75726365223a2230227d606e9290910191820152608e019695505050505050565b60006020828403121561181f57600080fd5b5051919050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b600083516118648184602088016113c7565b9190910191825250602001919050565b634e487b7160e01b600052601160045260246000fd5b60006001820161189c5761189c611874565b5060010190565b600087516118b5818460208c016113c7565b606088901b6bffffffffffffffffffffffff191690830190815286516118e2816014840160208b016113c7565b01601481018690526034810185905283516119048160548401602088016113c7565b0160540198975050505050505050565b8082028115828204841417610aec57610aec611874565b634e487b7160e01b600052601260045260246000fd5b6000826119505761195061192b565b500490565b6000826119645761196461192b565b500690565b80820180821115610aec57610aec611874565b61060f60f31b8152600082516119998160028501602087016113c7565b9190910160020192915050565b634e487b7160e01b600052602160045260246000fdfea164736f6c6343000811000a", - }, - }, - } - - feynmanUpgrade[chapelNet] = &Upgrade{ - UpgradeName: "feynman", - Configs: []*UpgradeConfig{ - { - ContractAddr: common.HexToAddress(ValidatorContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/cfc0bd1127186a917ddc38fd38d22903034d3f0b", - Code: "6080604052600436106104da5760003560e01c80638a7beb0111610281578063c6d339451161015a578063e40716a1116100cc578063f92eb86b11610085578063f92eb86b14610cb8578063f9a2bbc714610ccd578063fc3e590814610ce2578063fccc281314610cf7578063fd4ad81f14610d0c578063fd6a687914610d3b576104e1565b8063e40716a114610c1b578063e589b61e14610c30578063ea321e4914610c50578063eb57e20214610c70578063eda5868c14610c90578063f340fa0114610ca5576104e1565b8063d86222d51161011e578063d86222d514610b9d578063daacdb6614610bb2578063dc927faf14610bc7578063df8079e914610bdc578063e086c7b114610bf1578063e1c7392a14610c06576104e1565b8063c6d3394514610b3e578063c81b166214610b53578063c8509d811461090d578063ce910b0c14610b68578063d68fb56a14610b88576104e1565b8063aa82dce1116101f3578063ad3c9da6116101b7578063ad3c9da614610abd578063aef198a914610add578063b7ab4db514610af2578063b8cf4ef114610b14578063bf9f4995146106bd578063c466689d14610b29576104e1565b8063aa82dce114610a49578063aad5606314610a5e578063aaf5eb6814610a73578063ab51bb9614610a88578063ac43175114610a9d576104e1565b80639dc09262116102455780639dc09262146109cb5780639fe0f816146109e0578063a0dc2758146109f5578063a1a11bf514610a0a578063a5422d5c14610a1f578063a78abc1614610a34576104e1565b80638a7beb01146109575780638b5ad0c91461096c5780638d19a410146109815780639369d7de146109a157806396713da9146109b6576104e1565b806351e80672116103b357806370fd5bad116103255780637a84ca2a116102e95780637a84ca2a146108e357806381650b62146108f8578063831d65d11461090d578063853230aa146108b9578063862498821461092d57806388b32f1114610942576104e1565b806370fd5bad1461087a578063718a8aa81461088f57806375d47a0a146108a457806378dfed4a146108b95780637942fd05146108ce576104e1565b80635de1e22c116103775780635de1e22c146107e9578063603d86d3146106a857806360eba4fe146107fe57806362b72cf51461081e5780636969a25c146108335780636e47b48214610865576104e1565b806351e806721461076a57806355614fcc1461077f578063565c56b31461079f5780635667515a146107bf5780635d77156c146107d4576104e1565b80633365af3a1161044c57806343756e5c1161041057806343756e5c146106df57806345cf9daf146106f4578063493279b1146107095780634bf6c8821461072b5780634df6e0c3146107405780635192c82c14610755576104e1565b80633365af3a1461064557806335409f7f146106655780633b071dcc146106855780633de0f0d8146106a85780633dffc387146106bd576104e1565b8063152ad3b81161049e578063152ad3b8146105995780631e4c1524146105bb5780631ff18069146105db578063219f22d5146105f0578063300c356714610605578063321d398a14610625576104e1565b806304c4fec6146104e657806307a56847146104fd5780630bee7a67146105285780630e2374a51461054a5780631182b8751461056c576104e1565b366104e157005b600080fd5b3480156104f257600080fd5b506104fb610d50565b005b34801561050957600080fd5b50610512610dc2565b60405161051f9190618c1b565b60405180910390f35b34801561053457600080fd5b5061053d610dc8565b60405161051f9190618c45565b34801561055657600080fd5b5061055f610dcd565b60405161051f9190617f97565b34801561057857600080fd5b5061058c610587366004617e7d565b610dd3565b60405161051f919061812a565b3480156105a557600080fd5b506105ae6110b6565b60405161051f919061811f565b3480156105c757600080fd5b506104fb6105d6366004617c8b565b6110bf565b3480156105e757600080fd5b5061051261175f565b3480156105fc57600080fd5b5061053d611765565b34801561061157600080fd5b506104fb610620366004617c23565b61176a565b34801561063157600080fd5b506105ae610640366004617e2a565b611ab3565b34801561065157600080fd5b506105ae610660366004617e2a565b611b82565b34801561067157600080fd5b506104fb610680366004617beb565b611c33565b34801561069157600080fd5b5061069a611d8c565b60405161051f929190618035565b3480156106b457600080fd5b50610512612068565b3480156106c957600080fd5b506106d261206e565b60405161051f9190618c56565b3480156106eb57600080fd5b5061055f612073565b34801561070057600080fd5b50610512612079565b34801561071557600080fd5b5061071e61207f565b60405161051f9190618c0c565b34801561073757600080fd5b506106d2612085565b34801561074c57600080fd5b5061069a61208a565b34801561076157600080fd5b50610512612208565b34801561077657600080fd5b5061055f61220e565b34801561078b57600080fd5b506105ae61079a366004617beb565b612214565b3480156107ab57600080fd5b506105126107ba366004617beb565b612249565b3480156107cb57600080fd5b506106d261229a565b3480156107e057600080fd5b5061053d61229f565b3480156107f557600080fd5b506105126122a4565b34801561080a57600080fd5b5061058c610819366004617e2a565b6122aa565b34801561082a57600080fd5b50610512612350565b34801561083f57600080fd5b5061085361084e366004617e2a565b612356565b60405161051f96959493929190617fc4565b34801561087157600080fd5b5061055f6123ba565b34801561088657600080fd5b506106d26123c0565b34801561089b57600080fd5b506106d26123c5565b3480156108b057600080fd5b5061055f6123ca565b3480156108c557600080fd5b506105126123d0565b3480156108da57600080fd5b506106d26123d6565b3480156108ef57600080fd5b506105126123db565b34801561090457600080fd5b5061053d6123e1565b34801561091957600080fd5b506104fb610928366004617e7d565b6123e6565b34801561093957600080fd5b50610512612447565b34801561094e57600080fd5b5061051261244d565b34801561096357600080fd5b506105ae612453565b34801561097857600080fd5b5061051261245c565b34801561098d57600080fd5b5061051261099c366004617beb565b612462565b3480156109ad57600080fd5b506104fb6124a2565b3480156109c257600080fd5b506106d26125b6565b3480156109d757600080fd5b5061055f6125bb565b3480156109ec57600080fd5b506105126125c1565b348015610a0157600080fd5b506105126125c6565b348015610a1657600080fd5b5061055f6125cb565b348015610a2b57600080fd5b5061058c6125d1565b348015610a4057600080fd5b506105ae6125f0565b348015610a5557600080fd5b5061055f6125f9565b348015610a6a57600080fd5b5061055f6125ff565b348015610a7f57600080fd5b50610512612605565b348015610a9457600080fd5b5061053d61229a565b348015610aa957600080fd5b506104fb610ab8366004617dce565b61260e565b348015610ac957600080fd5b50610512610ad8366004617beb565b612eac565b348015610ae957600080fd5b50610512612ebe565b348015610afe57600080fd5b50610b07612ecb565b60405161051f9190618022565b348015610b2057600080fd5b50610512612fb7565b348015610b3557600080fd5b50610512612fbc565b348015610b4a57600080fd5b506105126123c0565b348015610b5f57600080fd5b5061055f612fc2565b348015610b7457600080fd5b5061058c610b83366004617e2a565b612fc8565b348015610b9457600080fd5b50610512612fd5565b348015610ba957600080fd5b50610512613014565b348015610bbe57600080fd5b50610512613020565b348015610bd357600080fd5b5061055f613026565b348015610be857600080fd5b5061055f61302c565b348015610bfd57600080fd5b50610512610dc8565b348015610c1257600080fd5b506104fb613032565b348015610c2757600080fd5b506105126131e1565b348015610c3c57600080fd5b506104fb610c4b366004617beb565b6131e7565b348015610c5c57600080fd5b506105ae610c6b366004617d8f565b61332c565b348015610c7c57600080fd5b506104fb610c8b366004617beb565b6134b2565b348015610c9c57600080fd5b5061053d6135b6565b6104fb610cb3366004617beb565b6135bb565b348015610cc457600080fd5b50610512613923565b348015610cd957600080fd5b5061055f613929565b348015610cee57600080fd5b506106d26125c1565b348015610d0357600080fd5b5061055f61392f565b348015610d1857600080fd5b50610d2c610d27366004617e2a565b613935565b60405161051f93929190618c24565b348015610d4757600080fd5b5061055f6139f7565b6000610d5b33612462565b9050600b8181548110610d6a57fe5b600091825260209091206001601690920201015460ff16610da65760405162461bcd60e51b8152600401610d9d9061888f565b60405180910390fd5b6000610db0612fd5565b9050610dbd3383836139fd565b505050565b60095481565b606481565b61200181565b60005460609060ff16610df85760405162461bcd60e51b8152600401610d9d906182e9565b600b54610eb657610e07617797565b60015460005b81811015610eb257600b80546001810182556000919091528351600080516020618ed38339815191526016909202918201908155602080860151600080516020618f138339815191528401805460ff1916911515919091179055604086015180518794610e8e93600080516020618ef38339815191529091019201906177c6565b506060820151610ea49060038301906013617840565b505050806001019050610e0d565b5050505b610ebe61786d565b6000610eff85858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250613cce92505050565b9150915080610f1b57610f126064613e8a565b925050506110af565b815160009060ff16610f4057610f3983602001518460400151613eeb565b905061107b565b825160ff166001141561107757826020015151600114610f8557600080516020618eb3833981519152604051610f7590618748565b60405180910390a1506067611072565b6000600460008560200151600081518110610f9c57fe5b6020026020010151600001516001600160a01b03166001600160a01b0316815260200190815260200160002054905080600014806110045750600180820381548110610fe457fe5b9060005260206000209060040201600201601c9054906101000a900460ff165b1561106457836020015160008151811061101a57fe5b6020026020010151600001516001600160a01b03167fe209c46bebf57cf265d5d9009a00870e256d9150f3ed5281ab9d9eb3cec6e4be60405160405180910390a260009150611070565b61106d8161504f565b91505b505b61107b565b5060655b63ffffffff81166110a057505060408051600081526020810190915291506110af9050565b6110a981613e8a565b93505050505b9392505050565b60075460ff1681565b3341146110de5760405162461bcd60e51b8152600401610d9d90618a77565b3a156110fc5760405162461bcd60e51b8152600401610d9d906187ce565b825160408051828152602080840282010190915260609082801561113a57816020015b611127617891565b81526020019060019003908161111f5790505b50905060005b828110156111e4576040518060c0016040528087838151811061115f57fe5b60200260200101516001600160a01b0316815260200160006001600160a01b0316815260200160006001600160a01b031681526020018683815181106111a157fe5b60200260200101516001600160401b0316815260200160001515815260200160008152508282815181106111d157fe5b6020908102919091010152600101611140565b5060405163d31f968d60e01b81526120009063d31f968d9061120f9061100090600890600401618006565b60206040518083038186803b15801561122757600080fd5b505afa15801561123b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061125f9190617d6f565b156115585780518061127357505050610dbd565b6015548181111561130e57815b8181101561130c57601580548061129357fe5b60008281526020812060046000199093019283020180546001600160a01b0319908116825560018201805490911690556002810180546001600160e81b031916905560030155905560168054806112e657fe5b60019003818190600052602060002001600061130291906178c6565b9055600101611280565b505b60005b8281101561154e5781811061143657601584828151811061132e57fe5b602090810291909101810151825460018181018555600094855293839020825160049092020180546001600160a01b039283166001600160a01b0319918216178255938301519481018054958316958516959095179094556040820151600285018054606085015160808601511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b199590961692909716919091179290921692909217169290921790915560a0015160039091015585516016908790839081106113fe57fe5b6020908102919091018101518254600181018455600093845292829020815161143094919091019291909101906177c6565b50611546565b83818151811061144257fe5b60200260200101516015828154811061145757fe5b6000918252602091829020835160049092020180546001600160a01b039283166001600160a01b0319918216178255928401516001820180549184169185169190911790556040840151600282018054606087015160808801511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b1995909716929097169190911792909216939093171692909217905560a090910151600390910155855186908290811061151257fe5b60200260200101516016828154811061152757fe5b9060005260206000200190805190602001906115449291906177c6565b505b600101611311565b5050505050610dbd565b6060806115658386615163565b9150915060005b60015481101561164f576001818154811061158357fe5b906000526020600020906004020160030154600014611647576120026001600160a01b031663092193ab600183815481106115ba57fe5b906000526020600020906004020160030154600184815481106115d957fe5b60009182526020909120600491820201546040516001600160e01b031960e086901b168152611614926001600160a01b039092169101617f97565b6000604051808303818588803b15801561162d57600080fd5b505af1158015611641573d6000803e3d6000fd5b50505050505b60010161156c565b5047156116bd577f6ecc855f9440a9282c90913bbc91619fd44f5ec0b462af28d127b116f130aa4d476040516116859190618c1b565b60405180910390a1604051611002904780156108fc02916000818181858888f193505050501580156116bb573d6000803e3d6000fd5b505b600060038190556005558151156116d8576116d8828261539c565b6110016001600160a01b031663fc4333cd6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561171557600080fd5b505af1158015611729573d6000803e3d6000fd5b50506040517fedd8d7296956dd970ab4de3f2fc03be2b0ffc615d20cd4c72c6e44f928630ebf925060009150a150505050505050565b60035481565b606881565b3341146117895760405162461bcd60e51b8152600401610d9d90618a77565b60105443116117aa5760405162461bcd60e51b8152600401610d9d90618445565b3a156117c85760405162461bcd60e51b8152600401610d9d906187ce565b60005460ff166117ea5760405162461bcd60e51b8152600401610d9d906182e9565b60006110023168056bc75e2d631000008111156118215761181a8168056bc75e2d6310000063ffffffff615ba316565b9150611828565b5050611aa9565b6040516309a99b4f60e41b815261100290639a99b4f09061184f9030908690600401617fab565b602060405180830381600087803b15801561186957600080fd5b505af115801561187d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a19190617e42565b9150816118af575050611aa9565b6000805b848110156118dd578585828181106118c757fe5b90506020020135820191508060010190506118b3565b50806118eb57505050611aa9565b6000806000805b89811015611aa1578489898381811061190757fe5b9050602002013588028161191757fe5b0493508a8a8281811061192657fe5b905060200201602081019061193b9190617beb565b6001600160a01b03811660009081526004602052604090205490935091508115611a5757600060018084038154811061197057fe5b9060005260206000209060040201905080600201601c9054906101000a900460ff16156119dd57836001600160a01b03167fb9c75cbbfde137c4281689580799ef5f52144e78858f776a5979b2b212137d85866040516119d09190618c1b565b60405180910390a2611a51565b6003546119f0908663ffffffff615be516565b6003908155810154611a08908663ffffffff615be516565b60038201556040516001600160a01b038516907fcb0aad6cf9cd03bdf6137e359f541c42f38b39f007cae8e89e88aa7d8c6617b290611a48908890618c1b565b60405180910390a25b50611a99565b826001600160a01b03167fb9c75cbbfde137c4281689580799ef5f52144e78858f776a5979b2b212137d8585604051611a909190618c1b565b60405180910390a25b6001016118f2565b505050505050505b5050436010555050565b6001546000908210611ac757506000611b7d565b60006001600160a01b031660018381548110611adf57fe5b60009182526020909120600490910201546001600160a01b03161480611b0f57506008541580611b0f5750600a54155b80611b1e575060085460095410155b80611b2f5750611b2d82611b82565b155b80611b5857506000600b8381548110611b4457fe5b906000526020600020906016020160000154115b80611b6c57506001611b68612ecb565b5111155b15611b7957506000611b7d565b5060015b919050565b6001546000908210611b9657506000611b7d565b600b548210611bd35760018281548110611bac57fe5b9060005260206000209060040201600201601c9054906101000a900460ff16159050611b7d565b60018281548110611be057fe5b9060005260206000209060040201600201601c9054906101000a900460ff16158015611c2d5750600b8281548110611c1457fe5b600091825260209091206001601690920201015460ff16155b92915050565b3361100114611c545760405162461bcd60e51b8152600401610d9d90618b8c565b600b54611d1257611c63617797565b60015460005b81811015611d0e57600b80546001810182556000919091528351600080516020618ed38339815191526016909202918201908155602080860151600080516020618f138339815191528401805460ff1916911515919091179055604086015180518794611cea93600080516020618ef38339815191529091019201906177c6565b506060820151611d009060038301906013617840565b505050806001019050611c69565b5050505b6001600160a01b03811660009081526004602052604090205480611d365750611d89565b6001810390506000600b8281548110611d4b57fe5b600091825260209091206001601690920201015460ff169050611d6e8383615c0a565b8015611d775750805b15610dbd576009805460001901905550505b50565b60015460609081906000805b82811015611ddf5760018181548110611dad57fe5b9060005260206000209060040201600201601c9054906101000a900460ff16611dd7576001909101905b600101611d98565b50606081604051908082528060200260200182016040528015611e0c578160200160208202803683370190505b509050606082604051908082528060200260200182016040528015611e4557816020015b6060815260200190600190039081611e305790505b50600b5460009450909150841415611fc05760005b84811015611fba5760018181548110611e6f57fe5b9060005260206000209060040201600201601c9054906101000a900460ff16611fb25760018181548110611e9f57fe5b600091825260209091206004909102015483516001600160a01b0390911690849086908110611eca57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050600b8181548110611ef757fe5b600091825260209182902060026016909202018101805460408051601f600019610100600186161502019093169490940491820185900485028401850190528083529192909190830182828015611f8f5780601f10611f6457610100808354040283529160200191611f8f565b820191906000526020600020905b815481529060010190602001808311611f7257829003601f168201915b5050505050828581518110611fa057fe5b60209081029190910101526001909301925b600101611e5a565b5061205c565b60005b8481101561205a5760018181548110611fd857fe5b9060005260206000209060040201600201601c9054906101000a900460ff16612052576001818154811061200857fe5b600091825260209091206004909102015483516001600160a01b039091169084908690811061203357fe5b6001600160a01b03909216602092830291909101909101526001909301925b600101611fc3565b505b909450925050505b9091565b61271081565b600181565b61100181565b60085481565b6102ca81565b600881565b600e54600c5460609182918061209e575060155b60606120a8612ecb565b905060606120b582615fbd565b9050828251116120cc579094509250612064915050565b838383510310156120de578282510393505b83156121145760c843046120fa83838388880360008a8a61612b565b6121128383838888038989038a8b8b8b51030161612b565b505b606083604051908082528060200260200182016040528015612140578160200160208202803683370190505b50905060608460405190808252806020026020018201604052801561217957816020015b60608152602001906001900390816121645790505b50905060005b858110156121fa5784818151811061219357fe5b60200260200101518382815181106121a757fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508381815181106121d357fe5b60200260200101518282815181106121e757fe5b602090810291909101015260010161217f565b509096509450505050509091565b60065481565b61200081565b6001600160a01b0381166000908152600460205260408120548061223c576000915050611b7d565b600019016110af81611b82565b6001600160a01b03811660009081526004602052604081205480612271576000915050611b7d565b60018082038154811061228057fe5b906000526020600020906004020160030154915050919050565b600081565b606781565b600f5481565b601281815481106122b757fe5b600091825260209182902001805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152935090918301828280156123485780601f1061231d57610100808354040283529160200191612348565b820191906000526020600020905b81548152906001019060200180831161232b57829003601f168201915b505050505081565b60105481565b6001818154811061236357fe5b600091825260209091206004909102018054600182015460028301546003909301546001600160a01b0392831694509082169291821691600160a01b81046001600160401b031691600160e01b90910460ff169086565b61100581565b600281565b601081565b61100881565b6103e881565b600b81565b600c5481565b606681565b33612000146124075760405162461bcd60e51b8152600401610d9d90618a28565b7f41ce201247b6ceb957dcdb217d0b8acb50b9ea0e12af9af4f5e7f3890210160583838360405161243a93929190618c64565b60405180910390a1505050565b60025481565b60115481565b60145460ff1681565b600a5481565b6001600160a01b038116600090815260046020526040812054806124985760405162461bcd60e51b8152600401610d9d906189b0565b6000190192915050565b600b54612560576124b1617797565b60015460005b8181101561255c57600b80546001810182556000919091528351600080516020618ed38339815191526016909202918201908155602080860151600080516020618f138339815191528401805460ff191691151591909117905560408601518051879461253893600080516020618ef38339815191529091019201906177c6565b50606082015161254e9060038301906013617840565b5050508060010190506124b7565b5050505b60085461256d5760036008555b600a5461257a576002600a555b600061258533612462565b905061259081611ab3565b6125ac5760405162461bcd60e51b8152600401610d9d90618705565b611d893382616282565b600981565b61100781565b600381565b60c881565b61100681565b604051806101e001604052806101ab8152602001618d086101ab913981565b60005460ff1681565b61200281565b61300081565b6402540be40081565b60005460ff166126305760405162461bcd60e51b8152600401610d9d906182e9565b33611007146126515760405162461bcd60e51b8152600401610d9d906187fc565b6126bb84848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080518082019091526013815272065787069726554696d655365636f6e6447617606c1b6020820152915061631a9050565b1561275857602081146126e05760405162461bcd60e51b8152600401610d9d9061896a565b604080516020601f840181900481028201810190925282815260009161271e9185858083850183828082843760009201919091525061637392505050565b9050606481101580156127345750620186a08111155b6127505760405162461bcd60e51b8152600401610d9d906185f5565b600255612e69565b6127b884848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260098152686275726e526174696f60b81b6020820152915061631a9050565b1561284757602081146127dd5760405162461bcd60e51b8152600401610d9d9061816f565b604080516020601f840181900481028201810190925282815260009161281b9185858083850183828082843760009201919091525061637392505050565b905061271081111561283f5760405162461bcd60e51b8152600401610d9d90618487565b600655612e69565b6128b184848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260138152726d61784e756d4f664d61696e7461696e696e6760681b6020820152915061631a9050565b1561294b57602081146128d65760405162461bcd60e51b8152600401610d9d906181a6565b604080516020601f84018190048102820181019092528281526000916129149185858083850183828082843760009201919091525061637392505050565b600c5490915080612923575060155b8082106129425760405162461bcd60e51b8152600401610d9d906184fa565b50600855612e69565b6129b484848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260128152716d61696e7461696e536c6173685363616c6560701b6020820152915061631a9050565b15612a4d57602081146129d95760405162461bcd60e51b8152600401610d9d9061826f565b604080516020601f8401819004810282018101909252828152600091612a179185858083850183828082843760009201919091525061637392505050565b9050600081118015612a295750600a81105b612a455760405162461bcd60e51b8152600401610d9d90618b08565b600a55612e69565b612ac184848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601981527f6d61784e756d4f66576f726b696e6743616e64696461746573000000000000006020820152915061631a9050565b15612b505760208114612ae65760405162461bcd60e51b8152600401610d9d90618223565b604080516020601f8401819004810282018101909252828152600091612b249185858083850183828082843760009201919091525061637392505050565b9050600d54811115612b485760405162461bcd60e51b8152600401610d9d9061866b565b600e55612e69565b612bb984848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260128152716d61784e756d4f6643616e6469646174657360701b6020820152915061631a9050565b15612c3b5760208114612bde5760405162461bcd60e51b8152600401610d9d9061884a565b604080516020601f8401819004810282018101909252828152600091612c1c9185858083850183828082843760009201919091525061637392505050565b600d819055600e54909150811015612c3557600d54600e555b50612e69565b612c9f84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600d81526c6e756d4f66436162696e65747360981b6020820152915061631a9050565b15612d4d5760208114612cc45760405162461bcd60e51b8152600401610d9d906182b4565b604080516020601f8401819004810282018101909252828152600091612d029185858083850183828082843760009201919091525061637392505050565b905060008111612d245760405162461bcd60e51b8152600401610d9d90618357565b6064811115612d455760405162461bcd60e51b8152600401610d9d9061839f565b600c55612e69565b612db584848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601181527073797374656d526577617264526174696f60781b6020820152915061631a9050565b15612e515760208114612dda5760405162461bcd60e51b8152600401610d9d90618ac4565b604080516020601f8401819004810282018101909252828152600091612e189185858083850183828082843760009201919091525061637392505050565b905060018110158015612e2d57506127108111155b612e495760405162461bcd60e51b8152600401610d9d906185a2565b600f55612e69565b60405162461bcd60e51b8152600401610d9d90618b65565b7f6cdb0ac70ab7f2e2d035cca5be60d89906f2dede7648ddbd7402189c1eeed17a84848484604051612e9e949392919061813d565b60405180910390a150505050565b60046020526000908152604090205481565b68056bc75e2d6310000081565b6001546060906000805b82811015612efa57612ee681611b82565b15612ef2578160010191505b600101612ed5565b50606081604051908082528060200260200182016040528015612f27578160200160208202803683370190505b5090506000915060005b83811015612fae57612f4281611b82565b15612fa65760018181548110612f5457fe5b600091825260209091206004909102015482516001600160a01b0390911690839085908110612f7f57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508260010192505b600101612f31565b50925050505b90565b601581565b61027181565b61100281565b601381815481106122b757fe5b6000612fdf612ecb565b519050600080600c5411612ff4576015612ff8565b600c545b905080821115613006578091505b8161301057600191505b5090565b67016345785d8a000081565b60055481565b61100381565b61200481565b60005460ff16156130555760405162461bcd60e51b8152600401610d9d906188fc565b61305d61786d565b6000613083604051806101e001604052806101ab8152602001618d086101ab9139613cce565b91509150806130a45760405162461bcd60e51b8152600401610d9d906189e7565b60005b8260200151518110156131c9576001836020015182815181106130c657fe5b60209081029190910181015182546001818101855560009485528385208351600493840290910180546001600160a01b039283166001600160a01b03199182161782558587015182850180549185169183169190911790556040860151600283018054606089015160808a01511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b199590981692909516919091179290921694909417161790915560a09093015160039093019290925591860151805191850193918590811061319c57fe5b602090810291909101810151516001600160a01b03168252810191909152604001600020556001016130a7565b50506103e8600255506000805460ff19166001179055565b600d5481565b33612002146132085760405162461bcd60e51b8152600401610d9d90618bd5565b60005b60155481101561329057816001600160a01b03166015828154811061322c57fe5b60009182526020909120600490910201546001600160a01b031614156132885760016015828154811061325b57fe5b9060005260206000209060040201600201601c6101000a81548160ff021916908315150217905550613290565b60010161320b565b506001600160a01b0381166000908152600460205260409020548015806132e157506001808203815481106132c157fe5b9060005260206000209060040201600201601c9054906101000a900460ff165b1561331f576040516001600160a01b038316907fe209c46bebf57cf265d5d9009a00870e256d9150f3ed5281ab9d9eb3cec6e4be90600090a2613328565b610dbd8161504f565b5050565b601354600090815b818110156134355761341d85858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060138054909250859150811061338557fe5b600091825260209182902001805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156134135780601f106133e857610100808354040283529160200191613413565b820191906000526020600020905b8154815290600101906020018083116133f657829003601f168201915b5050505050616378565b1561342d57600192505050611c2d565b600101613334565b5060125460005b818110156134a65761348d86868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060128054909250859150811061338557fe5b1561349e5760019350505050611c2d565b60010161343c565b50600095945050505050565b33611001146134d35760405162461bcd60e51b8152600401610d9d90618b8c565b600b54613591576134e2617797565b60015460005b8181101561358d57600b80546001810182556000919091528351600080516020618ed38339815191526016909202918201908155602080860151600080516020618f138339815191528401805460ff191691151591909117905560408601518051879461356993600080516020618ef38339815191529091019201906177c6565b50606082015161357f9060038301906013617840565b5050508060010190506134e8565b5050505b600061359c826163dc565b90506135a781611ab3565b15613328576133288282616282565b606581565b3341146135da5760405162461bcd60e51b8152600401610d9d90618a77565b60005460ff166135fc5760405162461bcd60e51b8152600401610d9d906182e9565b6000341161361c5760405162461bcd60e51b8152600401610d9d9061863c565b3a1561363a5760405162461bcd60e51b8152600401610d9d906187ce565b6001600160a01b03811660009081526004602052604090205460145434919060ff1661367a57610271600f556103aa6006556014805460ff191660011790555b60006136a3612710613697600f548661657f90919063ffffffff16565b9063ffffffff6165b916565b90508015613713576040516110029082156108fc029083906000818181858888f193505050501580156136da573d6000803e3d6000fd5b507f6ecc855f9440a9282c90913bbc91619fd44f5ec0b462af28d127b116f130aa4d8160405161370a9190618c1b565b60405180910390a15b60008311801561372557506000600654115b156137cb5760006137476127106136976006548761657f90919063ffffffff16565b905080156137c95760405161dead9082156108fc029083906000818181858888f1935050505015801561377e573d6000803e3d6000fd5b507f627059660ea01c4733a328effb2294d2f86905bf806da763a89cee254de8bee5816040516137ae9190618c1b565b60405180910390a16137c6848263ffffffff615ba316565b93505b505b6137db838263ffffffff615ba316565b925081156138db5760006001808403815481106137f457fe5b9060005260206000209060040201905080600201601c9054906101000a900460ff161561386157846001600160a01b03167ff177e5d6c5764d79c32883ed824111d9b13f5668cf6ab1cc12dd36791dd955b4856040516138549190618c1b565b60405180910390a26138d5565b600354613874908563ffffffff615be516565b600390815581015461388c908563ffffffff615be516565b60038201556040516001600160a01b038616907f93a090ecc682c002995fad3c85b30c5651d7fd29b0be5da9d784a3302aedc055906138cc908790618c1b565b60405180910390a25b5061391d565b836001600160a01b03167ff177e5d6c5764d79c32883ed824111d9b13f5668cf6ab1cc12dd36791dd955b4846040516139149190618c1b565b60405180910390a25b50505050565b600e5481565b61100081565b61dead81565b600b818154811061394257fe5b6000918252602091829020601691909102018054600180830154600280850180546040805161010096831615969096026000190190911692909204601f810188900488028501880190925281845293965060ff909116949192918301828280156139ed5780601f106139c2576101008083540402835291602001916139ed565b820191906000526020600020905b8154815290600101906020018083116139d057829003601f168201915b5050505050905083565b61100481565b6000600a5460001480613a0e575081155b80613a195750600954155b15613a26575060006110af565b60096000815460019003919050819055506000613a71600a5461369785613697600b8981548110613a5357fe5b6000918252602090912060169091020154439063ffffffff615ba316565b90506000600b8581548110613a8257fe5b906000526020600020906016020160010160006101000a81548160ff0219169083151502179055506000806110016001600160a01b0316638256ace66040518163ffffffff1660e01b8152600401604080518083038186803b158015613ae757600080fd5b505afa158015613afb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b1f9190617e5a565b9150915060009350808310613c7e57613b388787615c0a565b506040516333c1892360e21b81526000906120029063cf06248c90613b61908b90600401617f97565b60206040518083038186803b158015613b7957600080fd5b505afa158015613b8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613bb19190617c07565b6001600160a01b031614613c1d576040516313d13bdb60e31b815261100190639e89ded890613be6908a908790600401617fab565b600060405180830381600087803b158015613c0057600080fd5b505af1158015613c14573d6000803e3d6000fd5b50505050613c75565b6040516305bfb49960e41b815261100190635bfb499090613c42908a90600401617f97565b600060405180830381600087803b158015613c5c57600080fd5b505af1158015613c70573d6000803e3d6000fd5b505050505b60019350613c90565b818310613c9057613c8e876163dc565b505b6040516001600160a01b038816907fb9d38178dc641ff1817967a63c9078cbcd955a9f1fcd75e0e3636de615d44d3b90600090a25050509392505050565b613cd661786d565b6000613ce061786d565b613ce861790a565b613cf9613cf4866165fb565b616620565b90506000805b613d088361666a565b15613e7c5780613d2d57613d23613d1e8461668b565b6166d9565b60ff168452613e74565b8060011415613e6f576060613d49613d448561668b565b616759565b90508051604051908082528060200260200182016040528015613d8657816020015b613d73617891565b815260200190600190039081613d6b5790505b5085602001819052508051604051908082528060200260200182016040528015613dc457816020015b6060815260200190600190039081613daf5790505b50604086015260005b8151811015613e6457613dde617891565b60606000613dfe858581518110613df157fe5b602002602001015161682a565b92509250925080613e1e578860009a509a50505050505050505050613e85565b8289602001518581518110613e2f57fe5b60200260200101819052508189604001518581518110613e4b57fe5b6020026020010181905250505050806001019050613dcd565b506001925050613e74565b613e7c565b600101613cff565b50919350909150505b915091565b604080516001808252818301909252606091829190816020015b6060815260200190600190039081613ea4579050509050613eca8363ffffffff16616944565b81600081518110613ed757fe5b60200260200101819052506110af81616957565b6000606483511115613f2257600080516020618eb3833981519152604051613f12906183fc565b60405180910390a1506066611c2d565b60005b8351811015613fc05760005b81811015613fb757848181518110613f4557fe5b6020026020010151600001516001600160a01b0316858381518110613f6657fe5b6020026020010151600001516001600160a01b03161415613faf57600080516020618eb3833981519152604051613f9c90618557565b60405180910390a1606692505050611c2d565b600101613f31565b50600101613f25565b5060608060606015805480602002602001604051908101604052809291908181526020016000905b828210156140725760008481526020908190206040805160c0810182526004860290920180546001600160a01b039081168452600180830154821685870152600283015491821693850193909352600160a01b81046001600160401b03166060850152600160e01b900460ff16151560808401526003015460a08301529083529092019101613fe8565b50505050905060606016805480602002602001604051908101604052809291908181526020016000905b828210156141475760008481526020908190208301805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156141335780601f1061410857610100808354040283529160200191614133565b820191906000526020600020905b81548152906001019060200180831161411657829003601f168201915b50505050508152602001906001019061409c565b50505050905060005b82518110156141a45782818151811061416557fe5b60200260200101516060015160020283828151811061418057fe5b60209081029190910101516001600160401b03909116606090910152600101614150565b506060806141b4898986866169e1565b915091506141c28282615163565b60015460408051828152602080840282010190915292985090965060009550859450925060609150828015614201578160200160208202803683370190505b50905060005b828110156143925760006001600160a01b03166120026001600160a01b031663cf06248c6001848154811061423857fe5b60009182526020909120600491820201546040516001600160e01b031960e085901b168152614273926001600160a01b039092169101617f97565b60206040518083038186803b15801561428b57600080fd5b505afa15801561429f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142c39190617c07565b6001600160a01b0316146143255760018282815181106142df57fe5b602002602001019060ff16908160ff16815250506001818154811061430057fe5b906000526020600020906004020160030154600014614320578360010193505b61438a565b67016345785d8a00006001828154811061433b57fe5b9060005260206000209060040201600301541061435d5784600101945061438a565b6001818154811061436a57fe5b90600052602060002090600402016003015460001461438a578360010193505b600101614207565b506060846040519080825280602002602001820160405280156143bf578160200160208202803683370190505b5090506060856040519080825280602002602001820160405280156143ee578160200160208202803683370190505b50905060608660405190808252806020026020018201604052801561441d578160200160208202803683370190505b50905060608760405190808252806020026020018201604052801561444c578160200160208202803683370190505b509050600060608860405190808252806020026020018201604052801561447d578160200160208202803683370190505b5090506060896040519080825280602002602001820160405280156144ac578160200160208202803683370190505b50905060009a506000995060006110046001600160a01b031663149d14d96040518163ffffffff1660e01b815260040160206040518083038186803b1580156144f457600080fd5b505afa158015614508573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061452c9190617e42565b905067016345785d8a000081111561457857600080516020618eb3833981519152604051614559906188bb565b60405180910390a160689e505050505050505050505050505050611c2d565b60005b8a81101561490c5789818151811061458f57fe5b602002602001015160ff166001141561468557600181815481106145af57fe5b90600052602060002090600402016003015460001461468057600181815481106145d557fe5b600091825260209091206004909102015484516001600160a01b039091169085908e90811061460057fe5b60200260200101906001600160a01b031690816001600160a01b0316815250506001818154811061462d57fe5b906000526020600020906004020160030154838d8151811061464b57fe5b60200260200101818152505060018a8d8151811061466557fe5b602002602001019060ff16908160ff16815250508b6001019b505b614904565b67016345785d8a00006001828154811061469b57fe5b9060005260206000209060040201600301541061482057600181815481106146bf57fe5b906000526020600020906004020160020160009054906101000a90046001600160a01b0316898e815181106146f057fe5b60200260200101906001600160a01b031690816001600160a01b03168152505060006402540be4006001838154811061472557fe5b9060005260206000209060040201600301548161473e57fe5b066001838154811061474c57fe5b9060005260206000209060040201600301540390506147748382615ba390919063ffffffff16565b898f8151811061478057fe5b6020026020010181815250506001828154811061479957fe5b906000526020600020906004020160010160009054906101000a90046001600160a01b0316878f815181106147ca57fe5b60200260200101906001600160a01b031690816001600160a01b03168152505081888f815181106147f757fe5b6020908102919091010152614812868263ffffffff615be516565b95508d6001019d5050614904565b6001818154811061482d57fe5b906000526020600020906004020160030154600014614904576001818154811061485357fe5b906000526020600020906004020160010160009054906101000a90046001600160a01b0316848d8151811061488457fe5b60200260200101906001600160a01b031690816001600160a01b031681525050600181815481106148b157fe5b906000526020600020906004020160030154838d815181106148cf57fe5b60200260200101818152505060008a8d815181106148e957fe5b602002602001019060ff16908160ff16815250508b6001019b505b60010161457b565b5060008415614b82576002546040516303702b2960e51b815261100491636e056520918891614946918e918e918d914201906004016180a5565b6020604051808303818588803b15801561495f57600080fd5b505af193505050508015614990575060408051601f3d908101601f1916820190925261498d91810190617d6f565b60015b614b07576040516000815260443d10156149ac57506000614a47565b60046000803e60005160e01c6308c379a081146149cd576000915050614a47565b60043d036004833e81513d60248201116001600160401b03821117156149f857600092505050614a47565b80830180516001600160401b03811115614a19576000945050505050614a47565b8060208301013d8601811115614a3757600095505050505050614a47565b601f01601f191660405250925050505b80614a525750614a94565b60019150857fa7cdeed7d0db45e3219a6e5d60838824c16f1d39991fcfe3f963029c844bf28082604051614a86919061812a565b60405180910390a250614b02565b3d808015614abe576040519150601f19603f3d011682016040523d82523d6000602084013e614ac3565b606091505b5060019150857fbfa884552dd8921b6ce90bfe906952ae5b3b29be0cc1a951d4f62697635a3a4582604051614af8919061812a565b60405180910390a2505b614b82565b8015614b49577fa217d08e65f80c73121cd9db834d81652d544bfbf452f6d04922b16c90a37b7086604051614b3c9190618c1b565b60405180910390a1614b80565b857fa7cdeed7d0db45e3219a6e5d60838824c16f1d39991fcfe3f963029c844bf280604051614b77906181ec565b60405180910390a25b505b8015614d385760005b8751811015614d36576000888281518110614ba257fe5b60200260200101519050600060018281548110614bbb57fe5b60009182526020909120600160049092020181015481546001600160a01b03909116916108fc9185908110614bec57fe5b9060005260206000209060040201600301549081150290604051600060405180830381858888f1935050505090508015614ca85760018281548110614c2d57fe5b60009182526020909120600160049092020181015481546001600160a01b03909116917f6c61d60f69a7beb3e1c80db7f39f37b208537cbb19da3174511b477812b2fc7d9185908110614c7c57fe5b906000526020600020906004020160030154604051614c9b9190618c1b565b60405180910390a2614d2c565b60018281548110614cb557fe5b60009182526020909120600160049092020181015481546001600160a01b03909116917f25d0ce7d2f0cec669a8c17efe49d195c13455bb8872b65fa610ac7f53fe4ca7d9185908110614d0457fe5b906000526020600020906004020160030154604051614d239190618c1b565b60405180910390a25b5050600101614b8b565b505b835115614f2e5760005b8451811015614f2c578a8181518110614d5757fe5b602002602001015160ff1660011415614df6576120026001600160a01b031663092193ab858381518110614d8757fe5b6020026020010151878481518110614d9b57fe5b60200260200101516040518363ffffffff1660e01b8152600401614dbf9190617f97565b6000604051808303818588803b158015614dd857600080fd5b505af1158015614dec573d6000803e3d6000fd5b5050505050614f24565b6000858281518110614e0457fe5b60200260200101516001600160a01b03166108fc868481518110614e2457fe5b60200260200101519081150290604051600060405180830381858888f1935050505090508015614eba57858281518110614e5a57fe5b60200260200101516001600160a01b03167f6c61d60f69a7beb3e1c80db7f39f37b208537cbb19da3174511b477812b2fc7d868481518110614e9857fe5b6020026020010151604051614ead9190618c1b565b60405180910390a2614f22565b858281518110614ec657fe5b60200260200101516001600160a01b03167f25d0ce7d2f0cec669a8c17efe49d195c13455bb8872b65fa610ac7f53fe4ca7d868481518110614f0457fe5b6020026020010151604051614f199190618c1b565b60405180910390a25b505b600101614d42565b505b505050505050505050505050506000471115614fab577f6ecc855f9440a9282c90913bbc91619fd44f5ec0b462af28d127b116f130aa4d47604051614f739190618c1b565b60405180910390a1604051611002904780156108fc02916000818181858888f19350505050158015614fa9573d6000803e3d6000fd5b505b60006003819055600555815115614fc657614fc6828261539c565b6110016001600160a01b031663fc4333cd6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561500357600080fd5b505af1158015615017573d6000803e3d6000fd5b50506040517fedd8d7296956dd970ab4de3f2fc03be2b0ffc615d20cd4c72c6e44f928630ebf925060009150a1506000949350505050565b600154600554600091906000198201118015906150c25760018085038154811061507557fe5b600091825260208220600490910201546040516001600160a01b03909116917fe209c46bebf57cf265d5d9009a00870e256d9150f3ed5281ab9d9eb3cec6e4be91a2600092505050611b7d565b6005805460019081019091558054819060001987019081106150e057fe5b9060005260206000209060040201600201601c6101000a81548160ff02191690831515021790555060018085038154811061511757fe5b600091825260208220600490910201546040516001600160a01b03909116917ff226e7d8f547ff903d9d419cf5f54e0d7d07efa9584135a53a057c5f1f27f49a91a25060009392505050565b606080600080808080615174612fd5565b6001549091505b801561528257600181039250600b838154811061519457fe5b600091825260209091206001601690920201015460ff166151b457615279565b600183815481106151c157fe5b60009182526020909120600490910201546001600160a01b031694506151e88584846139fd565b93508315806151fb575060018a51038610155b1561520557615279565b60005b8a5181101561527757856001600160a01b03168b828151811061522757fe5b6020026020010151600001516001600160a01b0316141561526f5760018b828151811061525057fe5b6020908102919091010151901515608090910152600190960195615277565b600101615208565b505b6000190161517b565b50848951036040519080825280602002602001820160405280156152c057816020015b6152ad617891565b8152602001906001900390816152a55790505b509650848951036040519080825280602002602001820160405280156152fa57816020015b60608152602001906001900390816152e55790505b5095506000915060005b895181101561538e5789818151811061531957fe5b6020026020010151608001516153865789818151811061533557fe5b602002602001015188848151811061534957fe5b602002602001018190525088818151811061536057fe5b602002602001015187848151811061537457fe5b60200260200101819052508260010192505b600101615304565b5050505050505b9250929050565b600154825160005b828110156154b95760016153b6617891565b600183815481106153c357fe5b600091825260208083206040805160c08101825260049490940290910180546001600160a01b0390811685526001820154811693850193909352600281015492831691840191909152600160a01b82046001600160401b03166060840152600160e01b90910460ff16151560808301526003015460a082015291505b8481101561548d5787818151811061545357fe5b6020026020010151600001516001600160a01b031682600001516001600160a01b03161415615485576000925061548d565b60010161543f565b5081156154af5780516001600160a01b03166000908152600460205260408120555b50506001016153a4565b508082111561557857805b828110156155765760018054806154d757fe5b60008281526020812060046000199093019283020180546001600160a01b0319908116825560018201805490911690556002810180546001600160e81b0319169055600301559055600b80548061552a57fe5b60008281526020812060166000199093019283020181815560018101805460ff191690559061555c60028301826178c6565b61556a60038301600061792a565b505090556001016154c4565b505b60008183106155875781615589565b825b905060005b818110156159455761563b8682815181106155a557fe5b6020026020010151600183815481106155ba57fe5b60009182526020918290206040805160c08101825260049390930290910180546001600160a01b0390811684526001820154811694840194909452600281015493841691830191909152600160a01b83046001600160401b03166060830152600160e01b90920460ff161515608082015260039091015460a0820152616dad565b6157ef57806001016004600088848151811061565357fe5b6020026020010151600001516001600160a01b03166001600160a01b031681526020019081526020016000208190555085818151811061568f57fe5b6020026020010151600182815481106156a457fe5b6000918252602091829020835160049092020180546001600160a01b039283166001600160a01b0319918216178255928401516001820180549184169185169190911790556040840151600282018054606087015160808801511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b1995909716929097169190911792909216939093171692909217905560a090910151600390910155845185908290811061575f57fe5b6020026020010151600b828154811061577457fe5b906000526020600020906016020160020190805190602001906157989291906177c6565b506000600b82815481106157a857fe5b60009182526020822060169190910201600101805460ff191692151592909217909155600b8054839081106157d957fe5b600091825260209091206016909102015561593d565b6158808582815181106157fe57fe5b6020026020010151600b838154811061581357fe5b600091825260209182902060026016909202018101805460408051601f6000196101006001861615020190931694909404918201859004850284018501905280835291929091908301828280156134135780601f106133e857610100808354040283529160200191613413565b6158cb5784818151811061589057fe5b6020026020010151600b82815481106158a557fe5b906000526020600020906016020160020190805190602001906158c99291906177c6565b505b6000600182815481106158da57fe5b9060005260206000209060040201600301819055508581815181106158fb57fe5b6020026020010151608001516001828154811061591457fe5b9060005260206000209060040201600201601c6101000a81548160ff0219169083151502179055505b60010161558e565b5082821115615b1d57615956617797565b835b83811015615b1a5785818151811061596c57fe5b60200260200101518260400181905250600187828151811061598a57fe5b6020908102919091018101518254600181810185556000948552838520835160049093020180546001600160a01b039384166001600160a01b0319918216178255848601518284018054918616918316919091179055604080860151600284018054606089015160808a01511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b1995909a1692909616919091179290921696909617169190911790935560a090930151600390930192909255600b8054928301815590935284516016909102600080516020618ed3833981519152810191825585830151600080516020618f138339815191528201805491151560ff1990921691909117905592850151805186949293615ac093600080516020618ef3833981519152019201906177c6565b506060820151615ad69060038301906013617840565b5050508060010160046000898481518110615aed57fe5b602090810291909101810151516001600160a01b0316825281019190915260400160002055600101615958565b50505b615b25616e2e565b615b2d617010565b6000600981905560015493505b83811015615b9b576000600b8281548110615b5157fe5b60009182526020822060169190910201600101805460ff191692151592909217909155600b805483908110615b8257fe5b6000918252602090912060169091020155600101615b3a565b505050505050565b60006110af83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506171fe565b6000828201838110156110af5760405162461bcd60e51b8152600401610d9d90618320565b60008060018381548110615c1a57fe5b90600052602060002090600402016003015490506000600180805490500390506001615c44612ecb565b5111615c7957600060018581548110615c5957fe5b906000526020600020906004020160030181905550600092505050611c2d565b846001600160a01b03167f3b6f9ef90462b512a1293ecec018670bf7b7f1876fb727590a8a6d7643130a7083604051615cb29190618c1b565b60405180910390a26001600160a01b038516600090815260046020526040812055835b60015460001901811015615e9f5760018160010181548110615cf357fe5b906000526020600020906004020160018281548110615d0e57fe5b60009182526020909120825460049092020180546001600160a01b03199081166001600160a01b0393841617825560018085015481840180548416918616919091179055600280860180549185018054909416919095161780835584546001600160401b03600160a01b91829004160267ffffffffffffffff60a01b1990911617808355935460ff600160e01b918290041615150260ff60e01b19909416939093179055600392830154920191909155600b805490918301908110615dcf57fe5b9060005260206000209060160201600b8281548110615dea57fe5b600091825260209091208254601690920201908155600180830154818301805460ff909216151560ff1990921691909117905560028084018054615e41938386019390821615610100026000190190911604617939565b50615e54600382810190840160136179ae565b50905050806001016004600060018481548110615e6d57fe5b600091825260208083206004909202909101546001600160a01b03168352820192909252604001902055600101615cd5565b506001805480615eab57fe5b60008281526020812060046000199093019283020180546001600160a01b0319908116825560018201805490911690556002810180546001600160e81b0319169055600301559055600b805480615efe57fe5b60008281526020812060166000199093019283020181815560018101805460ff1916905590615f3060028301826178c6565b615f3e60038301600061792a565b505090556000818381615f4d57fe5b0490508015615fb15760015460005b81811015615fae578260018281548110615f7257fe5b9060005260206000209060040201600301540160018281548110615f9257fe5b6000918252602090912060036004909202010155600101615f5c565b50505b50600195945050505050565b600154815160408051828152602080840282010190915260609291908390828015615ffc57816020015b6060815260200190600190039081615fe75790505b50600b549091508314616013579250611b7d915050565b60005b8281101561612257600b60016004600089858151811061603257fe5b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054038154811061606657fe5b600091825260209182902060026016909202018101805460408051601f6000196101006001861615020190931694909404918201859004850284018501905280835291929091908301828280156160fe5780601f106160d3576101008083540402835291602001916160fe565b820191906000526020600020905b8154815290600101906020018083116160e157829003601f168201915b505050505082828151811061610f57fe5b6020908102919091010152600101616016565b50949350505050565b60005b82811015616278576000828783880160405160200161614e929190617f89565b6040516020818303038152906040528051906020012060001c8161616e57fe5b0690508085018287011461626f576000898388018151811061618c57fe5b60200260200101519050606089848901815181106161a657fe5b602002602001015190508a838801815181106161be57fe5b60200260200101518b858a01815181106161d457fe5b60200260200101906001600160a01b031690816001600160a01b031681525050818b8489018151811061620357fe5b60200260200101906001600160a01b031690816001600160a01b031681525050898388018151811061623157fe5b60200260200101518a858a018151811061624757fe5b6020026020010181905250808a8489018151811061626157fe5b602002602001018190525050505b5060010161612e565b5050505050505050565b600980546001908101909155600b80548390811061629c57fe5b906000526020600020906016020160010160006101000a81548160ff02191690831515021790555043600b82815481106162d257fe5b600091825260208220601690910201919091556040516001600160a01b038416917ff62981a567ec3cec866c6fa93c55bcdf841d6292d18b8d522ececa769375d82d91a25050565b60008160405160200161632d9190617f6d565b60405160208183030381529060405280519060200120836040516020016163549190617f6d565b6040516020818303038152906040528051906020012014905092915050565b015190565b81518151600091600191811480831461639457600092506163d2565b600160208701838101602088015b6002848385100114156163cd5780518351146163c15760009650600093505b602092830192016163a2565b505050505b5090949350505050565b6001600160a01b0381166000908152600460205260408120548061640557506000199050611b7d565b60018103905060006001828154811061641a57fe5b906000526020600020906004020160030154905060006001838154811061643d57fe5b6000918252602090912060036004909202010155600154604051600019909101906001600160a01b038616907f8cd4e147d8af98a9e3b6724021b8bf6aed2e5dac71c38f2dce8161b82585b25d90616496908590618c1b565b60405180910390a2806164ae57829350505050611b7d565b60008183816164b957fe5b04905080156165755760005b848110156165175781600182815481106164db57fe5b90600052602060002090600402016003015401600182815481106164fb57fe5b60009182526020909120600360049092020101556001016164c5565b50600180549085015b8181101561657257826001828154811061653657fe5b906000526020600020906004020160030154016001828154811061655657fe5b6000918252602090912060036004909202010155600101616520565b50505b5091949350505050565b60008261658e57506000611c2d565b8282028284828161659b57fe5b04146110af5760405162461bcd60e51b8152600401610d9d9061878d565b60006110af83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061722a565b6166036179d8565b506040805180820190915281518152602082810190820152919050565b61662861790a565b61663182617261565b61663a57600080fd5b6000616649836020015161729b565b60208085015160408051808201909152868152920190820152915050919050565b60006166746179d8565b505080518051602091820151919092015191011190565b6166936179d8565b61669c8261666a565b6166a557600080fd5b602082015160006166b5826172fe565b80830160209586015260408051808201909152908152938401919091525090919050565b8051600090158015906166ee57508151602110155b6166f757600080fd5b6000616706836020015161729b565b9050808360000151101561672c5760405162461bcd60e51b8152600401610d9d90618933565b82516020808501518301805192849003929183101561612257506020919091036101000a90049392505050565b606061676482617261565b61676d57600080fd5b6000616778836173df565b90506060816040519080825280602002602001820160405280156167b657816020015b6167a36179d8565b81526020019060019003908161679b5790505b50905060006167c8856020015161729b565b60208601510190506000805b8481101561681f576167e5836172fe565b915060405180604001604052808381526020018481525084828151811061680857fe5b6020908102919091010152918101916001016167d4565b509195945050505050565b616832617891565b6060600061683e617891565b606061684861790a565b61685187616620565b90506000805b6168608361666a565b15616935578061688b5761687b6168768461668b565b61743b565b6001600160a01b0316855261692d565b80600114156168b3576168a06168768461668b565b6001600160a01b0316602086015261692d565b80600214156168db576168c86168768461668b565b6001600160a01b0316604086015261692d565b8060031415616907576168f0613d1e8461668b565b6001600160401b031660608601526001915061692d565b80600414156169285761692161691c8461668b565b617455565b935061692d565b616935565b600101616857565b50929791965091945092505050565b6060611c2d616952836174c5565b6175ab565b60608151600014156169785750604080516000815260208101909152611b7d565b60608260008151811061698757fe5b602002602001015190506000600190505b83518110156169c8576169be828583815181106169b157fe5b60200260200101516175fd565b9150600101616998565b506110af6169db825160c060ff1661767a565b826175fd565b60608060006120026001600160a01b031663c473318f6040518163ffffffff1660e01b815260040160206040518083038186803b158015616a2157600080fd5b505afa158015616a35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190616a599190617e42565b90508085518851011015616a6e575083518651015b606081604051908082528060200260200182016040528015616aaa57816020015b616a97617891565b815260200190600190039081616a8f5790505b509050606082604051908082528060200260200182016040528015616ae357816020015b6060815260200190600190039081616ace5790505b50905060008060005b8b51831080616afb5750895182105b8015616b0657508581105b15616d9b578b51831415616b7657898281518110616b2057fe5b6020026020010151858281518110616b3457fe5b6020026020010181905250888281518110616b4b57fe5b6020026020010151848281518110616b5f57fe5b602090810291909101015260019182019101616aec565b8951821415616be1578b8381518110616b8b57fe5b6020026020010151858281518110616b9f57fe5b60200260200101819052508a8381518110616bb657fe5b6020026020010151848281518110616bca57fe5b602090810291909101015260019283019201616aec565b898281518110616bed57fe5b6020026020010151606001516001600160401b03168c8481518110616c0e57fe5b6020026020010151606001516001600160401b03161115616c8a578b8381518110616c3557fe5b6020026020010151858281518110616c4957fe5b60200260200101819052508a8381518110616c6057fe5b6020026020010151848281518110616c7457fe5b6020026020010181905250826001019250616d93565b898281518110616c9657fe5b6020026020010151606001516001600160401b03168c8481518110616cb757fe5b6020026020010151606001516001600160401b03161015616d3357898281518110616cde57fe5b6020026020010151858281518110616cf257fe5b6020026020010181905250888281518110616d0957fe5b6020026020010151848281518110616d1d57fe5b6020026020010181905250816001019150616d93565b898281518110616d3f57fe5b6020026020010151600001516001600160a01b03168c8481518110616d6057fe5b6020026020010151600001516001600160a01b03161015616d87578b8381518110616c3557fe5b898281518110616b2057fe5b600101616aec565b50929a91995090975050505050505050565b805182516000916001600160a01b039182169116148015616de7575081602001516001600160a01b031683602001516001600160a01b0316145b8015616e0c575081604001516001600160a01b031683604001516001600160a01b0316145b80156110af5750506060908101519101516001600160401b0390811691161490565b60125460135480821115616e7957805b82811015616e77576012805480616e5157fe5b600190038181906000526020600020016000616e6d91906178c6565b9055600101616e3e565b505b6000818310616e885781616e8a565b825b905060005b81811015616fa257616f4760128281548110616ea757fe5b600091825260209182902001805460408051601f6002600019610100600187161502019094169390930492830185900485028101850190915281815292830182828015616f355780601f10616f0a57610100808354040283529160200191616f35565b820191906000526020600020905b815481529060010190602001808311616f1857829003601f168201915b50505050506013838154811061338557fe5b616f9a5760138181548110616f5857fe5b9060005260206000200160128281548110616f6f57fe5b906000526020600020019080546001816001161561010002031660029004616f98929190617939565b505b600101616e8f565b5082821115610dbd57825b8281101561391d57601260138281548110616fc457fe5b6000918252602080832084546001818101875595855291909320929091018054617007949390920192909160026101009282161592909202600019011604617939565b50600101616fad565b601354600b548082111561705b57805b8281101561705957601380548061703357fe5b60019003818190600052602060002001600061704f91906178c6565b9055600101617020565b505b600081831061706a578161706c565b825b905060005b8181101561718b576171296013828154811061708957fe5b600091825260209182902001805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156171175780601f106170ec57610100808354040283529160200191617117565b820191906000526020600020905b8154815290600101906020018083116170fa57829003601f168201915b5050505050600b838154811061581357fe5b61718357600b818154811061713a57fe5b90600052602060002090601602016002016013828154811061715857fe5b906000526020600020019080546001816001161561010002031660029004617181929190617939565b505b600101617071565b5082821115610dbd57825b8281101561391d576013600b82815481106171ad57fe5b6000918252602080832084546001808201875595855291909320601692909202909201600290810180546171f595939094019390926000199082161561010002011604617939565b50600101617196565b600081848411156172225760405162461bcd60e51b8152600401610d9d919061812a565b505050900390565b6000818361724b5760405162461bcd60e51b8152600401610d9d919061812a565b50600083858161725757fe5b0495945050505050565b805160009061727257506000611b7d565b6020820151805160001a9060c082101561729157600092505050611b7d565b5060019392505050565b8051600090811a60808110156172b5576000915050611b7d565b60b88110806172d0575060c081108015906172d0575060f881105b156172df576001915050611b7d565b60c08110156172f35760b519019050611b7d565b60f519019050611b7d565b80516000908190811a608081101561731957600191506173d8565b60b881101561732e57607e19810191506173d8565b60c081101561737f57600060b78203600186019550806020036101000a8651049150600181018201935050808310156173795760405162461bcd60e51b8152600401610d9d906186da565b506173d8565b60f88110156173945760be19810191506173d8565b600060f78203600186019550806020036101000a8651049150600181018201935050808310156173d65760405162461bcd60e51b8152600401610d9d906186da565b505b5092915050565b80516000906173f057506000611b7d565b60008090506000617404846020015161729b565b602085015185519181019250015b8082101561743257617423826172fe565b82019150826001019250617412565b50909392505050565b805160009060151461744c57600080fd5b611c2d826166d9565b805160609061746357600080fd5b6000617472836020015161729b565b83516040805191839003808352601f19601f82011683016020019091529192506060908280156174a9576020820181803683370190505b509050600081602001905061612284876020015101828561774c565b604080516020808252818301909252606091829190602082018180368337505050602081018490529050600067ffffffffffffffff1984166175095750601861752d565b6fffffffffffffffffffffffffffffffff1984166175295750601061752d565b5060005b60208110156175635781818151811061754257fe5b01602001516001600160f81b0319161561755b57617563565b60010161752d565b60008160200390506060816040519080825280601f01601f191660200182016040528015617598576020820181803683370190505b5080830196909652508452509192915050565b6060815160011480156175dd5750607f60f81b826000815181106175cb57fe5b01602001516001600160f81b03191611155b156175e9575080611b7d565b611c2d6175fb8351608060ff1661767a565b835b6060806040519050835180825260208201818101602087015b8183101561762e578051835260209283019201617616565b50855184518101855292509050808201602086015b8183101561765b578051835260209283019201617643565b508651929092011591909101601f01601f191660405250905092915050565b60606801000000000000000083106176a45760405162461bcd60e51b8152600401610d9d906184d2565b604080516001808252818301909252606091602082018180368337019050509050603784116176fe5782840160f81b816000815181106176e057fe5b60200101906001600160f81b031916908160001a9053509050611c2d565b6060617709856174c5565b90508381510160370160f81b8260008151811061772257fe5b60200101906001600160f81b031916908160001a90535061774382826175fd565b95945050505050565b8061775657610dbd565b5b60208110617776578251825260209283019290910190601f1901617757565b915181516020939093036101000a6000190180199091169216919091179052565b604051806080016040528060008152602001600015158152602001606081526020016177c16179f2565b905290565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061780757805160ff1916838001178555617834565b82800160010185558215617834579182015b82811115617834578251825591602001919060010190617819565b50613010929150617a11565b82601381019282156178345791602002820182811115617834578251825591602001919060010190617819565b6040518060600160405280600060ff16815260200160608152602001606081525090565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a081019190915290565b50805460018160011615610100020316600290046000825580601f106178ec5750611d89565b601f016020900490600052602060002090810190611d899190617a11565b604051806040016040528061791d6179d8565b8152602001600081525090565b50611d89906013810190617a11565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106179725780548555617834565b8280016001018555821561783457600052602060002091601f016020900482015b82811115617834578254825591600101919060010190617993565b82601381019282156178345791820182811115617834578254825591600101919060010190617993565b604051806040016040528060008152602001600081525090565b6040518061026001604052806013906020820280368337509192915050565b612fb491905b808211156130105760008155600101617a17565b8035611c2d81618cf2565b60008083601f840112617a47578182fd5b5081356001600160401b03811115617a5d578182fd5b602083019150836020808302850101111561539557600080fd5b6000601f8381840112617a88578182fd5b8235617a9b617a9682618ca7565b618c81565b818152925060208084019085810160005b84811015617b2d578135880189603f820112617ac757600080fd5b838101356001600160401b03811115617adf57600080fd5b617af0818901601f19168601618c81565b81815260408c81848601011115617b0657600080fd5b82818501888401375060009181018601919091528552509282019290820190600101617aac565b50505050505092915050565b600082601f830112617b49578081fd5b8135617b57617a9682618ca7565b818152915060208083019084810181840286018201871015617b7857600080fd5b6000805b85811015617b2d5782356001600160401b0381168114617b9a578283fd5b85529383019391830191600101617b7c565b60008083601f840112617bbd578182fd5b5081356001600160401b03811115617bd3578182fd5b60208301915083602082850101111561539557600080fd5b600060208284031215617bfc578081fd5b81356110af81618cf2565b600060208284031215617c18578081fd5b81516110af81618cf2565b60008060008060408587031215617c38578283fd5b84356001600160401b0380821115617c4e578485fd5b617c5a88838901617a36565b90965094506020870135915080821115617c72578384fd5b50617c7f87828801617a36565b95989497509550505050565b600080600060608486031215617c9f578283fd5b83356001600160401b0380821115617cb5578485fd5b81860187601f820112617cc6578586fd5b80359250617cd6617a9684618ca7565b80848252602080830192508084018b828389028701011115617cf657898afd5b8994505b86851015617d2057617d0c8c82617a2b565b845260019490940193928101928101617cfa565b509097508801359350505080821115617d37578384fd5b617d4387838801617b39565b93506040860135915080821115617d58578283fd5b50617d6586828701617a77565b9150509250925092565b600060208284031215617d80578081fd5b815180151581146110af578182fd5b60008060208385031215617da1578182fd5b82356001600160401b03811115617db6578283fd5b617dc285828601617bac565b90969095509350505050565b60008060008060408587031215617de3578384fd5b84356001600160401b0380821115617df9578586fd5b617e0588838901617bac565b90965094506020870135915080821115617e1d578384fd5b50617c7f87828801617bac565b600060208284031215617e3b578081fd5b5035919050565b600060208284031215617e53578081fd5b5051919050565b60008060408385031215617e6c578182fd5b505080516020909101519092909150565b600080600060408486031215617e91578081fd5b833560ff81168114617ea1578182fd5b925060208401356001600160401b03811115617ebb578182fd5b617ec786828701617bac565b9497909650939450505050565b6000815180845260208085019450808401835b83811015617f0c5781516001600160a01b031687529582019590820190600101617ee7565b509495945050505050565b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b60008151808452617f59816020860160208601618cc6565b601f01601f19169290920160200192915050565b60008251617f7f818460208701618cc6565b9190910192915050565b918252602082015260400190565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b03968716815294861660208601529290941660408401526001600160401b03166060830152911515608082015260a081019190915260c00190565b6001600160a01b0392909216825260ff16602082015260400190565b6000602082526110af6020830184617ed4565b6000604082526180486040830185617ed4565b602083820381850152818551808452828401915082838202850101838801865b8381101561809657601f19878403018552618084838351617f41565b94860194925090850190600101618068565b50909998505050505050505050565b6000608082526180b86080830187617ed4565b828103602084810191909152865180835287820192820190845b818110156180ee578451835293830193918301916001016180d2565b505084810360408601526181028188617ed4565b93505050506001600160401b038316606083015295945050505050565b901515815260200190565b6000602082526110af6020830184617f41565b600060408252618151604083018688617f17565b8281036020840152618164818587617f17565b979650505050505050565b6020808252601c908201527f6c656e677468206f66206275726e526174696f206d69736d6174636800000000604082015260600190565b60208082526026908201527f6c656e677468206f66206d61784e756d4f664d61696e7461696e696e67206d696040820152650e6dac2e8c6d60d31b606082015260800190565b6020808252601b908201527f6261746368207472616e736665722072657475726e2066616c73650000000000604082015260600190565b6020808252602c908201527f6c656e677468206f66206d61784e756d4f66576f726b696e6743616e6469646160408201526b0e8cae640dad2e6dac2e8c6d60a31b606082015260800190565b60208082526025908201527f6c656e677468206f66206d61696e7461696e536c6173685363616c65206d69736040820152640dac2e8c6d60db1b606082015260800190565b6020808252818101527f6c656e677468206f66206e756d4f66436162696e657473206d69736d61746368604082015260600190565b60208082526019908201527f74686520636f6e7472616374206e6f7420696e69742079657400000000000000604082015260600190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b60208082526028908201527f746865206e756d4f66436162696e657473206d75737420626520677265617465604082015267072207468616e20360c41b606082015260800190565b60208082526039908201527f746865206e756d4f66436162696e657473206d757374206265206c657373207460408201527f68616e204d41585f4e554d5f4f465f56414c494441544f525300000000000000606082015260800190565b60208082526029908201527f746865206e756d626572206f662076616c696461746f727320657863656564206040820152681d1a19481b1a5b5a5d60ba1b606082015260800190565b60208082526022908201527f63616e206e6f7420646f207468697320747769636520696e206f6e6520626c6f604082015261636b60f01b606082015260800190565b6020808252602b908201527f746865206275726e526174696f206d757374206265206e6f206772656174657260408201526a0207468616e2031303030360ac1b606082015260800190565b6020808252600e908201526d696e70757420746f6f206c6f6e6760901b604082015260600190565b60208082526037908201527f746865206d61784e756d4f664d61696e7461696e696e67206d7573742062652060408201527f6c657373207468616e206e756d4f66436162696e657473000000000000000000606082015260800190565b6020808252602b908201527f6475706c696361746520636f6e73656e7375732061646472657373206f66207660408201526a185b1a59185d1bdc94d95d60aa1b606082015260800190565b60208082526033908201527f7468652073797374656d526577617264526174696f206d757374206265206e6f60408201527202067726561746572207468616e20313030303606c1b606082015260800190565b60208082526027908201527f7468652065787069726554696d655365636f6e64476170206973206f7574206f604082015266662072616e676560c81b606082015260800190565b6020808252601590820152746465706f7369742076616c7565206973207a65726f60581b604082015260600190565b60208082526049908201527f746865206d61784e756d4f66576f726b696e6743616e64696461746573206d7560408201527f7374206265206e6f742067726561746572207468616e206d61784e756d4f6643606082015268616e6469646174657360b81b608082015260a00190565b6020808252601190820152706164646974696f6e206f766572666c6f7760781b604082015260600190565b60208082526023908201527f63616e206e6f7420656e7465722054656d706f72617279204d61696e74656e616040820152626e636560e81b606082015260800190565b60208082526025908201527f6c656e677468206f66206a61696c2076616c696461746f7273206d757374206260408201526465206f6e6560d81b606082015260800190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252601490820152736761737072696365206973206e6f74207a65726f60601b604082015260600190565b6020808252602e908201527f746865206d6573736167652073656e646572206d75737420626520676f76657260408201526d1b985b98d94818dbdb9d1c9858dd60921b606082015260800190565b60208082526025908201527f6c656e677468206f66206d61784e756d4f6643616e64696461746573206d69736040820152640dac2e8c6d60db1b606082015260800190565b6020808252601290820152716e6f7420696e206d61696e74656e616e636560701b604082015260600190565b60208082526021908201527f666565206973206c6172676572207468616e2044555354595f494e434f4d494e6040820152604760f81b606082015260800190565b60208082526019908201527f74686520636f6e747261637420616c726561647920696e697400000000000000604082015260600190565b6020808252601a908201527f6c656e677468206973206c657373207468616e206f6666736574000000000000604082015260600190565b60208082526026908201527f6c656e677468206f662065787069726554696d655365636f6e64476170206d696040820152650e6dac2e8c6d60d31b606082015260800190565b60208082526017908201527f6f6e6c792063757272656e742076616c696461746f7273000000000000000000604082015260600190565b60208082526021908201527f6661696c656420746f20706172736520696e69742076616c696461746f7253656040820152601d60fa1b606082015260800190565b6020808252602f908201527f746865206d6573736167652073656e646572206d7573742062652063726f737360408201526e0818da185a5b8818dbdb9d1c9858dd608a1b606082015260800190565b6020808252602d908201527f746865206d6573736167652073656e646572206d75737420626520746865206260408201526c3637b1b590383937b23ab1b2b960991b606082015260800190565b60208082526024908201527f6c656e677468206f662073797374656d526577617264526174696f206d69736d6040820152630c2e8c6d60e31b606082015260800190565b6020808252603e908201527f746865206d61696e7461696e536c6173685363616c65206d757374206265206760408201527f726561746572207468616e203020616e64206c657373207468616e2031300000606082015260800190565b6020808252600d908201526c756e6b6e6f776e20706172616d60981b604082015260600190565b60208082526029908201527f746865206d6573736167652073656e646572206d75737420626520736c6173686040820152680818dbdb9d1c9858dd60ba1b606082015260800190565b6020808252601f908201527f746865206d73672073656e646572206d757374206265207374616b6548756200604082015260600190565b61ffff91909116815260200190565b90815260200190565b60008482528315156020830152606060408301526177436060830184617f41565b63ffffffff91909116815260200190565b60ff91909116815260200190565b600060ff8516825260406020830152617743604083018486617f17565b6040518181016001600160401b0381118282101715618c9f57600080fd5b604052919050565b60006001600160401b03821115618cbc578081fd5b5060209081020190565b60005b83811015618ce1578181015183820152602001618cc9565b8381111561391d5750506000910152565b6001600160a01b0381168114611d8957600080fdfef901a880f901a4f844941284214b9b9c85549ab3d2b972df0deef66ac2c9946ddf42a51534fc98d0c0a3b42c963cace8441ddf946ddf42a51534fc98d0c0a3b42c963cace8441ddf8410000000f84494a2959d3f95eae5dc7d70144ce1b73b403b7eb6e0948081ef03f1d9e0bb4a5bf38f16285c879299f07f948081ef03f1d9e0bb4a5bf38f16285c879299f07f8410000000f8449435552c16704d214347f29fa77f77da6d75d7c75294dc4973e838e3949c77aced16ac2315dc2d7ab11194dc4973e838e3949c77aced16ac2315dc2d7ab1118410000000f84494980a75ecd1309ea12fa2ed87a8744fbfc9b863d594cc6ac05c95a99c1f7b5f88de0e3486c82293b27094cc6ac05c95a99c1f7b5f88de0e3486c82293b2708410000000f84494f474cf03cceff28abc65c9cbae594f725c80e12d94e61a183325a18a173319dd8e19c8d069459e217594e61a183325a18a173319dd8e19c8d069459e21758410000000f84494b71b214cb885500844365e95cd9942c7276e7fd894d22ca3ba2141d23adab65ce4940eb7665ea2b6a794d22ca3ba2141d23adab65ce4940eb7665ea2b6a7841000000070e72399380dcfb0338abc03dc8d47f9f470ada8e769c9a78d644ea97385ecb20175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db90175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01dbb0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01dbaa164736f6c6343000604000a", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/9d09d0a3d6332460a810188261ec8195e05aa218", + Code: "608060405234801561001057600080fd5b506004361061035d5760003560e01c80637e434d54116101d3578063c80d4b8f11610104578063df8079e9116100a2578063f9a2bbc71161007c578063f9a2bbc714610601578063fc3e590814610609578063fc4333cd14610611578063fd6a6879146106195761035d565b8063df8079e9146105e9578063e1c7392a146105f1578063f1fad104146105f95761035d565b8063c96be4cb116100de578063c96be4cb146105b3578063cc844b73146105c6578063dc927faf146105d9578063dcc6f156146105e15761035d565b8063c80d4b8f14610590578063c81b166214610598578063c8509d81146105a05761035d565b8063a1a11bf511610171578063aad560631161014b578063aad5606314610565578063ab51bb961461056d578063ac0af62914610575578063ac4317511461057d5761035d565b8063a1a11bf51461054d578063a78abc1614610555578063aa82dce11461055d5761035d565b806396713da9116101ad57806396713da9146105225780639dc092621461052a5780639e89ded8146105325780639f804f5f146105455761035d565b80637e434d54146104ff5780638256ace614610507578063831d65d11461050f5761035d565b8063493279b1116102ad57806362b72cf51161024b578063718a8aa811610225578063718a8aa8146104df57806375d47a0a146104e75780637912a65d146104ef5780637942fd05146104f75761035d565b806362b72cf5146104c75780636e47b482146104cf57806370fd5bad146104d75761035d565b806351b4dce31161028757806351b4dce31461049c57806351e80672146104a4578063567a372d146104ac5780635bfb4990146104b45761035d565b8063493279b1146104775780634bf6c8821461048c57806350055f90146104945761035d565b8063280870281161031a57806337c8dab9116102f457806337c8dab914610431578063389f4f71146104525780633dffc3871461045a57806343756e5c1461046f5761035d565b806328087028146104015780633306ccca1461040957806335aa2e441461041e5761035d565b80630bee7a67146103625780630e2374a5146103805780631182b8751461039557806322d1e80b146103b557806323bac5a2146103ca57806327962118146103ec575b600080fd5b61036a610621565b6040516103779190613d56565b60405180910390f35b610388610626565b6040516103779190613534565b6103a86103a336600461346a565b61062c565b604051610377919061356c565b6103bd610692565b6040516103779190613561565b6103dd6103d8366004613181565b61069b565b60405161037793929190613d3e565b6103ff6103fa3660046132c7565b6106be565b005b610388610a13565b610411610a19565b6040516103779190613d27565b61038861042c36600461343a565b610a1f565b61044461043f366004613181565b610a46565b604051610377929190613d30565b610411610a9d565b610462610aa3565b6040516103779190613d67565b610388610aa8565b61047f610aae565b6040516103779190613d18565b610462610ab3565b610411610ab8565b610388610abe565b610388610ac4565b610411610aca565b6103ff6104c2366004613181565b610ad0565b610411610bdc565b610388610be2565b610462610be8565b610462610bed565b610388610bf2565b610411610bf8565b610462610bfd565b610388610c02565b610444610c08565b6103ff61051d36600461346a565b610c12565b610462610d26565b610388610d2b565b6103ff6105403660046131b9565b610d31565b610411610d60565b610388610d66565b6103bd610d6c565b610388610d75565b610388610d7b565b61036a610d81565b610411610d86565b6103ff61058b36600461331e565b610d8b565b610411611327565b61038861132c565b6103ff6105ae36600461346a565b611332565b6103ff6105c1366004613181565b6113a3565b6103ff6105d4366004613387565b611812565b610388611df1565b610411611df7565b610388611dfc565b6103ff611e02565b610462611e3e565b610388611e43565b610462611e49565b6103ff611e4e565b610388612297565b606481565b61200181565b606033612000146106585760405162461bcd60e51b815260040161064f90613bbb565b60405180910390fd5b60005460ff1661067a5760405162461bcd60e51b815260040161064f90613661565b60405162461bcd60e51b815260040161064f90613cac565b60075460ff1681565b600260208190526000918252604090912080546001820154919092015460ff1683565b60005460ff166106e05760405162461bcd60e51b815260040161064f90613661565b6006546106ed5760146006555b6008546106fb576170806008555b81511580159061070b5750805115155b6107275760405162461bcd60e51b815260040161064f90613b19565b60408051600380825260808201909252606091816020015b606081526020019060019003908161073f579050509050610760606161229d565b8160008151811061076d57fe5b6020026020010181905250610781836122b8565b8160018151811061078e57fe5b60200260200101819052506107a2826122b8565b816002815181106107af57fe5b602002602001018190525060606107c58261230e565b60408051603480825260608281019093529293509091602082018180368337019050509050815160346020830182602086016068600019fa61080657600080fd5b506014810151603482015160405163436aa28360e11b8152600090612002906386d5450690610839908690600401613534565b60206040518083038186803b15801561085157600080fd5b505afa158015610865573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610889919061319d565b6001600160a01b031614156108b05760405162461bcd60e51b815260040161064f90613631565b43600854820110156108d45760405162461bcd60e51b815260040161064f906135d2565b604051631871f7d960e31b81526120029063c38fbec8906108f9908590600401613534565b600060405180830381600087803b15801561091357600080fd5b505af1158015610927573d6000803e3d6000fd5b50506040516335409f7f60e01b815261100092506335409f7f9150610950908590600401613534565b600060405180830381600087803b15801561096a57600080fd5b505af115801561097e573d6000803e3d6000fd5b50506006546040516309a99b4f60e41b815260646110028031909302049350909150639a99b4f0906109b69033908590600401613548565b602060405180830381600087803b1580156109d057600080fd5b505af11580156109e4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a089190613452565b505050505050505050565b61200581565b61708081565b60018181548110610a2c57fe5b6000918252602090912001546001600160a01b0316905081565b600080610a51612f68565b5050506001600160a01b0316600090815260026020818152604092839020835160608101855281548082526001830154938201849052919093015460ff16151592909301919091529091565b60055481565b600181565b61100181565b606181565b600881565b60065481565b61200681565b61200081565b60045481565b3361100014610af15760405162461bcd60e51b815260040161064f906138a4565b60005460ff16610b135760405162461bcd60e51b815260040161064f90613661565b61200063f7a251d7600b610b268461239f565b60006040518463ffffffff1660e01b8152600401610b4693929190613d75565b600060405180830381600087803b158015610b6057600080fd5b505af1925050508015610b71575060015b610bd9573d808015610b9f576040519150601f19603f3d011682016040523d82523d6000602084013e610ba4565b606091505b50816001600160a01b0316600080516020613e52833981519152600083604051610bcf92919061357f565b60405180910390a2505b50565b60035481565b61100581565b600281565b601081565b61100881565b603281565b600b81565b61200381565b6004546005549091565b3361200014610c335760405162461bcd60e51b815260040161064f90613bbb565b60005460ff16610c555760405162461bcd60e51b815260040161064f90613661565b610c5d612f8b565b6000610c9e84848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061246892505050565b915091508015610ce55781516040517f7f0956d47419b9525356e7111652b653b530ec6f5096dccc04589bc38e62996791610cd891613d56565b60405180910390a1610d1e565b81516040517f7d45f62d17443dd4547bca8a8112c60e2385669318dc300ec61a5d2492f262e791610d1591613d56565b60405180910390a15b50505b505050565b600981565b61100781565b3361100014610d525760405162461bcd60e51b815260040161064f906138a4565b610d5c82826124e8565b5050565b60085481565b61100681565b60005460ff1681565b61200281565b61300081565b600081565b600481565b60005460ff16610dad5760405162461bcd60e51b815260040161064f90613661565b3361100714610dce5760405162461bcd60e51b815260040161064f90613a08565b610e3984848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260148152731b5a5cd9195b59585b9bdc951a1c995cda1bdb1960621b6020820152915061269b9050565b15610ed45760208114610e5e5760405162461bcd60e51b815260040161064f90613830565b604080516020601f8401819004810282018101909252828152600091610e9c918585808385018382808284376000920191909152506126f592505050565b905060018110158015610eb0575060055481105b610ecc5760405162461bcd60e51b815260040161064f90613b76565b6004556112e4565b610f3a84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600f81526e19995b1bdb9e551a1c995cda1bdb19608a1b6020820152915061269b9050565b15610fd65760208114610f5f5760405162461bcd60e51b815260040161064f90613a56565b604080516020601f8401819004810282018101909252828152600091610f9d918585808385018382808284376000920191909152506126f592505050565b90506103e88111158015610fb2575060045481115b610fce5760405162461bcd60e51b815260040161064f9061371a565b6005556112e4565b61104384848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601681527566656c6f6e79536c617368526577617264526174696f60501b6020820152915061269b9050565b156110dd57602081146110685760405162461bcd60e51b815260040161064f90613990565b604080516020601f84018190048102820181019092528281526000916110a6918585808385018382808284376000920191909152506126f592505050565b9050600a81101580156110b95750606481105b6110d55760405162461bcd60e51b815260040161064f90613a98565b6006556112e4565b61115184848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601881527f656e61626c654d616c6963696f7573566f7465536c61736800000000000000006020820152915061269b9050565b156111c857602081146111765760405162461bcd60e51b815260040161064f9061374f565b604080516020601f84018190048102820181019092528281526111b291908484808385018382808284376000920191909152506126fa92505050565b6007805460ff19169115159190911790556112e4565b61122f84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601081526f66656c6f6e79536c61736853636f706560801b6020820152915061269b9050565b156112cc57602081146112545760405162461bcd60e51b815260040161064f9061391f565b604080516020601f8401819004810282018101909252828152600091611292918585808385018382808284376000920191909152506126f592505050565b905061708081101580156112a85750620d2f0081105b6112c45760405162461bcd60e51b815260040161064f90613698565b6008556112e4565b60405162461bcd60e51b815260040161064f90613c57565b7f6cdb0ac70ab7f2e2d035cca5be60d89906f2dede7648ddbd7402189c1eeed17a8484848460405161131994939291906135a0565b60405180910390a150505050565b609681565b61100281565b33612000146113535760405162461bcd60e51b815260040161064f90613bbb565b60005460ff166113755760405162461bcd60e51b815260040161064f90613661565b6040517f07db600eebe2ac176be8dcebad61858c245a4961bb32ca2aa3d159b09aa0810e90600090a1505050565b3341146113c25760405162461bcd60e51b815260040161064f90613c0a565b60005460ff166113e45760405162461bcd60e51b815260040161064f90613661565b60035443116114055760405162461bcd60e51b815260040161064f90613ce3565b3a156114235760405162461bcd60e51b815260040161064f90613962565b60405163155853f360e21b8152611000906355614fcc90611448908490600401613534565b60206040518083038186803b15801561146057600080fd5b505afa158015611474573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061149891906132a7565b6114a15761180b565b6114a9612f68565b506001600160a01b0381166000908152600260208181526040928390208351606081018552815481526001820154928101929092529091015460ff16158015928201929092529061150457602081018051600101905261155d565b60016040820181905260208201819052805480820182556000919091527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180546001600160a01b0319166001600160a01b0384161790555b43815260055460208201518161156f57fe5b0661173957600060208201526040516335409f7f60e01b8152611000906335409f7f906115a0908590600401613534565b600060405180830381600087803b1580156115ba57600080fd5b505af11580156115ce573d6000803e3d6000fd5b505060405163436aa28360e11b81526000925061200291506386d54506906115fa908690600401613534565b60206040518083038186803b15801561161257600080fd5b505afa158015611626573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061164a919061319d565b6001600160a01b03161461166b576116668282602001516124e8565b611734565b61200063f7a251d7600b61167e8561239f565b60006040518463ffffffff1660e01b815260040161169e93929190613d75565b600060405180830381600087803b1580156116b857600080fd5b505af19250505080156116c9575060015b611734573d8080156116f7576040519150601f19603f3d011682016040523d82523d6000602084013e6116fc565b606091505b50826001600160a01b0316600080516020613e5283398151915283602001518360405161172a92919061357f565b60405180910390a2505b6117a5565b60045481602001518161174857fe5b066117a5576040516375abf10160e11b81526110009063eb57e20290611772908590600401613534565b600060405180830381600087803b15801561178c57600080fd5b505af11580156117a0573d6000803e3d6000fd5b505050505b6001600160a01b0382166000818152600260208181526040808420865181559186015160018301558581015191909201805460ff1916911515919091179055517fddb6012116e51abf5436d956a4f0ebd927e92c576ff96d7918290c8782291e3e9190a2505b5043600355565b60005460ff166118345760405162461bcd60e51b815260040161064f90613661565b60075460ff166118565760405162461bcd60e51b815260040161064f906135fc565b6006546118635760146006555b600854611871576170806008555b60085481516040015143910111801561189557504360085482602001516040015101115b6118b15760405162461bcd60e51b815260040161064f90613c7e565b8060200151602001518160000151602001511480156118df5750806020015160600151816000015160600151145b156118fc5760405162461bcd60e51b815260040161064f90613877565b80516040810151905110801561191b5750602081015160408101519051105b6119375760405162461bcd60e51b815260040161064f906137f9565b60208101515181515110801561195c5750806000015160400151816020015160400151105b8061198757508051516020820151511080156119875750806020015160400151816000015160400151105b806119a15750806020015160400151816000015160400151145b6119bd5760405162461bcd60e51b815260040161064f906136e3565b604080820151905163ea321e4960e01b81526110009163ea321e49916119e6919060040161356c565b60206040518083038186803b1580156119fe57600080fd5b505afa158015611a12573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a3691906132a7565b611a525760405162461bcd60e51b815260040161064f906139d9565b611a6481600001518260400151612722565b8015611a7d5750611a7d81602001518260400151612722565b611a995760405162461bcd60e51b815260040161064f9061379a565b6060806110006001600160a01b0316633b071dcc6040518163ffffffff1660e01b815260040160006040518083038186803b158015611ad757600080fd5b505afa158015611aeb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611b1391908101906131e4565b9150915060005b8151811015611c5057611b44828281518110611b3257fe5b602002602001015185604001516128fa565b15611c48576006546040516309a99b4f60e41b815260646110028031909302049190639a99b4f090611b7c9033908590600401613548565b602060405180830381600087803b158015611b9657600080fd5b505af1158015611baa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bce9190613452565b506110006001600160a01b03166335409f7f858481518110611bec57fe5b60200260200101516040518263ffffffff1660e01b8152600401611c109190613534565b600060405180830381600087803b158015611c2a57600080fd5b505af1158015611c3e573d6000803e3d6000fd5b5050505050611c50565b600101611b1a565b5060408084015190516317b4f35360e01b8152600091612002916317b4f35391611c7c9160040161356c565b60206040518083038186803b158015611c9457600080fd5b505afa158015611ca8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ccc919061319d565b6001600160a01b031614611d3a576040808401519051630e9fbf5160e01b815261200291630e9fbf5191611d03919060040161356c565b600060405180830381600087803b158015611d1d57600080fd5b505af1158015611d31573d6000803e3d6000fd5b50505050610d21565b6120006001600160a01b031663f7a251d7600b611d5a866040015161295e565b60006040518463ffffffff1660e01b8152600401611d7a93929190613d75565b600060405180830381600087803b158015611d9457600080fd5b505af1158015611da8573d6000803e3d6000fd5b505050506000611dbd84604001516000612999565b60405190915081907f7b78aadacff901d8b63d0dba4f86283d4db8aef27f9ed70413dd860f1c9532b690600090a250505050565b61100381565b601481565b61200481565b60005460ff1615611e255760405162461bcd60e51b815260040161064f90613ae2565b603260045560966005556000805460ff19166001179055565b601181565b61100081565b600381565b3361100014611e6f5760405162461bcd60e51b815260040161064f906138a4565b60005460ff16611e915760405162461bcd60e51b815260040161064f90613661565b600154611e9d57612295565b600154600090600019015b808211612269576000805b82841015611fcc57611ec3612f68565b6002600060018781548110611ed457fe5b60009182526020808320909101546001600160a01b0316835282810193909352604091820190208151606081018352815481526001820154938101939093526002015460ff161515908201526005549091506004900481602001511115611fb657600460055481611f4157fe5b04816020015103816020018181525050806002600060018881548110611f6357fe5b6000918252602080832091909101546001600160a01b0316835282810193909352604091820190208351815591830151600183015591909101516002909101805460ff1916911515919091179055611fc0565b6001925050611fcc565b50836001019350611eb3565b82841161216357611fdb612f68565b6002600060018681548110611fec57fe5b60009182526020808320909101546001600160a01b0316835282810193909352604091820190208151606081018352815481526001820154938101939093526002015460ff1615159082015260055490915060049004816020015111156120d45760046005548161205957fe5b0481602001510381602001818152505080600260006001878154811061207b57fe5b6000918252602080832091909101546001600160a01b03168352828101939093526040918201902083518155918301516001808401919091559201516002909101805460ff191691151591909117905591506121639050565b60026000600186815481106120e557fe5b60009182526020808320909101546001600160a01b031683528201929092526040018120818155600181810192909255600201805460ff1916905580548061212957fe5b600082815260209020810160001990810180546001600160a01b0319169055019055836121565750612163565b5060001990920191611fcc565b81801561216d5750805b1561224c57600260006001868154811061218357fe5b60009182526020808320909101546001600160a01b031683528201929092526040018120818155600181810192909255600201805460ff191690558054849081106121ca57fe5b600091825260209091200154600180546001600160a01b0390921691869081106121f057fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600180548061222957fe5b600082815260209020810160001990810180546001600160a01b03191690550190555b82612258575050612269565b505060019091019060001901611ea8565b6040517fcfdb3b6ccaeccbdc68be3c59c840e3b3c90f0a7c491f5fff1cf56cfda200dd9c90600090a150505b565b61100481565b60606122b06122ab836129b5565b6122b8565b90505b919050565b6060815160011480156122ea5750607f60f81b826000815181106122d857fe5b01602001516001600160f81b03191611155b156122f65750806122b3565b6122b06123088351608060ff16612a9b565b83612b6d565b606081516000141561232f57506040805160008152602081019091526122b3565b60608260008151811061233e57fe5b602002602001015190506000600190505b835181101561237f576123758285838151811061236857fe5b6020026020010151612b6d565b915060010161234f565b50612398612392825160c060ff16612a9b565b82612b6d565b9392505050565b60408051600480825260a08201909252606091829190816020015b60608152602001906001900390816123ba5790505090506123e3836001600160a01b0316612bea565b816000815181106123f057fe5b60200260200101819052506124044361229d565b8160018151811061241157fe5b6020908102919091010152612426606161229d565b8160028151811061243357fe5b60200260200101819052506124474261229d565b8160038151811061245457fe5b60200260200101819052506123988161230e565b612470612f8b565b600061247a612f8b565b612482612f9d565b61249361248e86612c0d565b612c32565b90506000805b6124a283612c7c565b156124db57806124ce576124bd6124b884612c9d565b612ceb565b63ffffffff168452600191506124d3565b6124db565b600101612499565b5091935090915050915091565b6040516375cc7d8960e01b8152612002906375cc7d899061250d908590600401613534565b600060405180830381600087803b15801561252757600080fd5b505af1925050508015612538575060015b610d5c576040516000815260443d1015612554575060006125f1565b60046000803e60005160e01c6308c379a081146125755760009150506125f1565b60043d036004833e81513d602482011167ffffffffffffffff821117156125a1576000925050506125f1565b808301805167ffffffffffffffff8111156125c35760009450505050506125f1565b8060208301013d86018111156125e1576000955050505050506125f1565b601f01601f191660405250925050505b806125fc5750612633565b826001600160a01b0316600080516020613e52833981519152838360405161262592919061357f565b60405180910390a250612696565b3d80801561265d576040519150601f19603f3d011682016040523d82523d6000602084013e612662565b606091505b50826001600160a01b0316600080516020613e52833981519152838360405161268c92919061357f565b60405180910390a2505b610d5c565b6000816040516020016126ae9190613518565b60405160208183030381529060405280519060200120836040516020016126d59190613518565b604051602081830303815290604052805190602001201490505b92915050565b015190565b8082015160009060ff81161561271457600191508161271a565b60009150815b505092915050565b60408051600480825260a0820190925260009160609190816020015b606081526020019060019003908161273e575050604080516020808252818301909252919250606091908082018180368337019050509050612783856000015161229d565b8260008151811061279057fe5b60200260200101819052506127ab6020866020015183612d6d565b6127b4816122b8565b826001815181106127c157fe5b60200260200101819052506127d9856040015161229d565b826002815181106127e657fe5b60200260200101819052506128016020866060015183612d6d565b61280a816122b8565b8260038151811061281757fe5b602002602001018190525061283d60206128308461230e565b8051906020012083612d6d565b6040805160b080825260e0820190925260609160208201818036833701905050905061286d818360006020612d7d565b61287f81876080015160206060612d7d565b61288d818660806030612d7d565b604080516001808252818301909252606091602082018180368337019050509050815160016020830182602086016066600019fa6128ca57600080fd5b5060016128d8826000612dd0565b60ff16146128ed5760009450505050506126ef565b5060019695505050505050565b8151815160009160019181148083146129165760009250612954565b600160208701838101602088015b60028483851001141561294f5780518351146129435760009650600093505b60209283019201612924565b505050505b5090949350505050565b60408051600480825260a08201909252606091829190816020015b60608152602001906001900390816129795790505090506123e3836122b8565b600081602001835110156129ac57600080fd5b50016020015190565b604080516020808252818301909252606091829190602082018180368337505050602081018490529050600067ffffffffffffffff1984166129f957506018612a1d565b6fffffffffffffffffffffffffffffffff198416612a1957506010612a1d565b5060005b6020811015612a5357818181518110612a3257fe5b01602001516001600160f81b03191615612a4b57612a53565b600101612a1d565b60008160200390506060816040519080825280601f01601f191660200182016040528015612a88576020820181803683370190505b5080830196909652508452509192915050565b6060680100000000000000008310612ac55760405162461bcd60e51b815260040161064f906137d1565b60408051600180825281830190925260609160208201818036833701905050905060378411612b1f5782840160f81b81600081518110612b0157fe5b60200101906001600160f81b031916908160001a90535090506126ef565b6060612b2a856129b5565b90508381510160370160f81b82600081518110612b4357fe5b60200101906001600160f81b031916908160001a905350612b648282612b6d565b95945050505050565b6060806040519050835180825260208201818101602087015b81831015612b9e578051835260209283019201612b86565b50855184518101855292509050808201602086015b81831015612bcb578051835260209283019201612bb3565b508651929092011591909101601f01601f191660405250905092915050565b60408051600560a21b8318601482015260348101909152606090612398816122b8565b612c15612fbd565b506040805180820190915281518152602082810190820152919050565b612c3a612f9d565b612c4382612dec565b612c4c57600080fd5b6000612c5b8360200151612e26565b60208085015160408051808201909152868152920190820152915050919050565b6000612c86612fbd565b505080518051602091820151919092015191011190565b612ca5612fbd565b612cae82612c7c565b612cb757600080fd5b60208201516000612cc782612e89565b80830160209586015260408051808201909152908152938401919091525090919050565b805160009015801590612d0057508151602110155b612d0957600080fd5b6000612d188360200151612e26565b90508083600001511015612d3e5760405162461bcd60e51b815260040161064f90613b3f565b825160208085015183018051928490039291831015612d6457826020036101000a820491505b50949350505050565b9091018181526020918201910152565b60005b81811015610d1e57838181518110612d9457fe5b602001015160f81c60f81b858480600101955081518110612db157fe5b60200101906001600160f81b031916908160001a905350600101612d80565b60008160010183511015612de357600080fd5b50016001015190565b8051600090612dfd575060006122b3565b6020820151805160001a9060c0821015612e1c576000925050506122b3565b5060019392505050565b8051600090811a6080811015612e405760009150506122b3565b60b8811080612e5b575060c08110801590612e5b575060f881105b15612e6a5760019150506122b3565b60c0811015612e7e5760b5190190506122b3565b60f5190190506122b3565b80516000908190811a6080811015612ea45760019150612f61565b60b8811015612eb957607e1981019150612f61565b60c0811015612f0a57600060b78203600186019550806020036101000a865104915060018101820193505080831015612f045760405162461bcd60e51b815260040161064f906138f4565b50612f61565b60f8811015612f1f5760be1981019150612f61565b600060f78203600186019550806020036101000a86510491506001810182019350508083101561271a5760405162461bcd60e51b815260040161064f906138f4565b5092915050565b604051806060016040528060008152602001600081526020016000151581525090565b60408051602081019091526000815290565b6040518060400160405280612fb0612fbd565b8152602001600081525090565b604051806040016040528060008152602001600081525090565b600082601f830112612fe7578081fd5b8151612ffa612ff582613dc8565b613da1565b818152915060208083019084810160005b84811015613070578151870188603f82011261302657600080fd5b83810151613036612ff582613de8565b81815260408b8184860101111561304c57600080fd5b61305b83888401838701613e0c565b5086525050928201929082019060010161300b565b505050505092915050565b60008083601f84011261308c578182fd5b50813567ffffffffffffffff8111156130a3578182fd5b6020830191508360208285010111156130bb57600080fd5b9250929050565b600082601f8301126130d2578081fd5b81356130e0612ff582613de8565b91508082528360208285010111156130f757600080fd5b8060208401602084013760009082016020015292915050565b600060a08284031215613121578081fd5b61312b60a0613da1565b905081358152602082013560208201526040820135604082015260608201356060820152608082013567ffffffffffffffff81111561316957600080fd5b613175848285016130c2565b60808301525092915050565b600060208284031215613192578081fd5b813561239881613e3c565b6000602082840312156131ae578081fd5b815161239881613e3c565b600080604083850312156131cb578081fd5b82356131d681613e3c565b946020939093013593505050565b600080604083850312156131f6578182fd5b825167ffffffffffffffff8082111561320d578384fd5b81850186601f82011261321e578485fd5b8051925061322e612ff584613dc8565b80848252602080830192508084018a82838902870101111561324e578889fd5b8894505b8685101561327957805161326581613e3c565b845260019490940193928101928101613252565b508801519096509350505080821115613290578283fd5b5061329d85828601612fd7565b9150509250929050565b6000602082840312156132b8578081fd5b81518015158114612398578182fd5b600080604083850312156132d9578182fd5b823567ffffffffffffffff808211156132f0578384fd5b6132fc868387016130c2565b93506020850135915080821115613311578283fd5b5061329d858286016130c2565b60008060008060408587031215613333578182fd5b843567ffffffffffffffff8082111561334a578384fd5b6133568883890161307b565b9096509450602087013591508082111561336e578384fd5b5061337b8782880161307b565b95989497509550505050565b600060208284031215613398578081fd5b813567ffffffffffffffff808211156133af578283fd5b818401606081870312156133c1578384fd5b6133cb6060613da1565b92508035828111156133db578485fd5b6133e787828401613110565b8452506020810135828111156133fb578485fd5b61340787828401613110565b60208501525060408101358281111561341e578485fd5b61342a878284016130c2565b6040850152509195945050505050565b60006020828403121561344b578081fd5b5035919050565b600060208284031215613463578081fd5b5051919050565b60008060006040848603121561347e578081fd5b833560ff8116811461348e578182fd5b9250602084013567ffffffffffffffff8111156134a9578182fd5b6134b58682870161307b565b9497909650939450505050565b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b60008151808452613504816020860160208601613e0c565b601f01601f19169290920160200192915050565b6000825161352a818460208701613e0c565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b901515815260200190565b60006020825261239860208301846134ec565b60008382526040602083015261359860408301846134ec565b949350505050565b6000604082526135b46040830186886134c2565b82810360208401526135c78185876134c2565b979650505050505050565b60208082526010908201526f195d9a59195b98d9481d1bdbc81bdb1960821b604082015260600190565b6020808252818101527f6d616c6963696f757320766f746520736c617368206e6f7420656e61626c6564604082015260600190565b6020808252601690820152751d985b1a59185d1bdc881b9bdd081b5a59dc985d195960521b604082015260600190565b60208082526019908201527f74686520636f6e7472616374206e6f7420696e69742079657400000000000000604082015260600190565b6020808252602b908201527f746865206d616c6963696f757320766f746520736c6173682073636f7065206f60408201526a7574206f662072616e676560a81b606082015260800190565b6020808252601a908201527f6e6f2076696f6c6174696f6e206f6620766f74652072756c6573000000000000604082015260600190565b6020808252818101527f7468652066656c6f6e795468726573686f6c64206f7574206f662072616e6765604082015260600190565b6020808252602b908201527f6c656e677468206f6620656e61626c654d616c6963696f7573566f7465536c6160408201526a0e6d040dad2e6dac2e8c6d60ab1b606082015260800190565b60208082526017908201527f766572696679207369676e6174757265206661696c6564000000000000000000604082015260600190565b6020808252600e908201526d696e70757420746f6f206c6f6e6760901b604082015260600190565b60208082526019908201527f7372634e756d20626967676572207468616e207461724e756d00000000000000604082015260600190565b60208082526027908201527f6c656e677468206f66206d697364656d65616e6f725468726573686f6c64206d6040820152660d2e6dac2e8c6d60cb1b606082015260800190565b60208082526013908201527274776f206964656e746963616c20766f74657360681b604082015260600190565b60208082526030908201527f746865206d6573736167652073656e646572206d7573742062652076616c696460408201526f185d1bdc94d95d0818dbdb9d1c9858dd60821b606082015260800190565b6020808252601190820152706164646974696f6e206f766572666c6f7760781b604082015260600190565b60208082526023908201527f6c656e677468206f662066656c6f6e79536c61736853636f7065206d69736d616040820152620e8c6d60eb1b606082015260800190565b6020808252601490820152736761737072696365206973206e6f74207a65726f60601b604082015260600190565b60208082526029908201527f6c656e677468206f662066656c6f6e79536c617368526577617264526174696f604082015268040dad2e6dac2e8c6d60bb1b606082015260800190565b6020808252601590820152741d9bdd195059191c881a5cc81b9bdd08199bdd5b99605a1b604082015260600190565b6020808252602e908201527f746865206d6573736167652073656e646572206d75737420626520676f76657260408201526d1b985b98d94818dbdb9d1c9858dd60921b606082015260800190565b60208082526022908201527f6c656e677468206f662066656c6f6e795468726573686f6c64206d69736d61746040820152610c6d60f31b606082015260800190565b6020808252602a908201527f7468652066656c6f6e7920736c6173682072657761726420726174696f206f7560408201526974206f662072616e676560b01b606082015260800190565b60208082526019908201527f74686520636f6e747261637420616c726561647920696e697400000000000000604082015260600190565b6020808252600c908201526b32b6b83a3c903432b0b232b960a11b604082015260600190565b6020808252601a908201527f6c656e677468206973206c657373207468616e206f6666736574000000000000604082015260600190565b60208082526025908201527f746865206d697364656d65616e6f725468726573686f6c64206f7574206f662060408201526472616e676560d81b606082015260800190565b6020808252602f908201527f746865206d6573736167652073656e646572206d7573742062652063726f737360408201526e0818da185a5b8818dbdb9d1c9858dd608a1b606082015260800190565b6020808252602d908201527f746865206d6573736167652073656e646572206d75737420626520746865206260408201526c3637b1b590383937b23ab1b2b960991b606082015260800190565b6020808252600d908201526c756e6b6e6f776e20706172616d60981b604082015260600190565b6020808252601490820152731d185c99d95d08189b1bd8dac81d1bdbc81bdb1960621b604082015260600190565b6020808252601e908201527f7265636569766520756e65787065637465642073796e207061636b6167650000604082015260600190565b6020808252818101527f63616e206e6f7420736c61736820747769636520696e206f6e6520626c6f636b604082015260600190565b61ffff91909116815260200190565b90815260200190565b918252602082015260400190565b92835260208301919091521515604082015260600190565b63ffffffff91909116815260200190565b60ff91909116815260200190565b600060ff8516825260606020830152613d9160608301856134ec565b9050826040830152949350505050565b60405181810167ffffffffffffffff81118282101715613dc057600080fd5b604052919050565b600067ffffffffffffffff821115613dde578081fd5b5060209081020190565b600067ffffffffffffffff821115613dfe578081fd5b50601f01601f191660200190565b60005b83811015613e27578181015183820152602001613e0f565b83811115613e36576000848401525b50505050565b6001600160a01b0381168114610bd957600080fdfed7bc86ff5d08c8ab043edec743302aba2520e6635172a428bc956721db9e2d1ca164736f6c6343000604000a", }, { - ContractAddr: common.HexToAddress(SlashContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/cfc0bd1127186a917ddc38fd38d22903034d3f0b", - Code: "608060405234801561001057600080fd5b50600436106102f15760003560e01c8063831d65d11161019d578063c81b1662116100e9578063df8079e9116100a2578063f9a2bbc71161007c578063f9a2bbc714610575578063fc3e59081461057d578063fc4333cd14610585578063fd6a68791461058d576102f1565b8063df8079e91461055d578063e1c7392a14610565578063eb57bff71461056d576102f1565b8063c81b16621461050c578063c8509d8114610514578063c96be4cb14610527578063cc844b731461053a578063d2a42e4b1461054d578063dc927faf14610555576102f1565b8063aa82dce111610156578063ac0af62911610130578063ac0af629146104e1578063ac431751146104e9578063ae61dc3b146104fc578063c80d4b8f14610504576102f1565b8063aa82dce1146104c9578063aad56063146104d1578063ab51bb96146104d9576102f1565b8063831d65d11461048357806396713da9146104965780639dc092621461049e5780639e89ded8146104a6578063a1a11bf5146104b9578063a78abc16146104c1576102f1565b8063493279b11161025c5780636e47b4821161021557806375d47a0a116101ef57806375d47a0a146104635780637912a65d1461046b5780637942fd05146104735780638256ace61461047b576102f1565b80636e47b4821461044b57806370fd5bad14610453578063718a8aa81461045b576102f1565b8063493279b1146104035780634bf6c8821461041857806351e8067214610420578063567a372d146104285780635bfb49901461043057806362b72cf514610443576102f1565b806335aa2e44116102ae57806335aa2e441461039557806337c8dab9146103a8578063389f4f71146103c95780633a63f4b1146103de5780633dffc387146103e657806343756e5c146103fb576102f1565b80630bee7a67146102f65780630e2374a5146103145780631182b8751461032957806322d1e80b1461034957806323bac5a21461035e5780632796211814610380575b600080fd5b6102fe610595565b60405161030b9190613ddc565b60405180910390f35b61031c61059a565b60405161030b91906135af565b61033c6103373660046134e5565b6105a0565b60405161030b91906135e7565b610351610606565b60405161030b91906135dc565b61037161036c3660046131fc565b61060f565b60405161030b93929190613dc4565b61039361038e366004613342565b610632565b005b61031c6103a33660046134b5565b610a4d565b6103bb6103b63660046131fc565b610a74565b60405161030b929190613db6565b6103d1610acb565b60405161030b9190613d8c565b6103d1610ad1565b6103ee610ad7565b60405161030b9190613ded565b61031c610adc565b61040b610ae2565b60405161030b9190613d7d565b6103ee610ae8565b61031c610aed565b6103d1610af3565b61039361043e3660046131fc565b610af9565b6103d1610ba4565b61031c610baa565b6103ee610bb0565b6103ee610bb5565b61031c610bba565b6103d1610bc0565b6103ee610bc5565b6103bb610bca565b6103936104913660046134e5565b610bd4565b6103ee610ce7565b61031c610cec565b6103936104b4366004613234565b610cf2565b61031c610d21565b610351610d27565b61031c610d30565b61031c610d36565b6102fe610d3c565b6103d1610d41565b6103936104f7366004613399565b610d46565b6103d16112f6565b6103d16112fd565b61031c611302565b6103936105223660046134e5565b611308565b6103936105353660046131fc565b611379565b610393610548366004613402565b6117fa565b6103d1611e45565b61031c611e4a565b61031c611e50565b610393611e56565b6103d1611e93565b61031c611e99565b6103ee611e9f565b610393611ea4565b61031c6122ed565b606481565b61200181565b606033612000146105cc5760405162461bcd60e51b81526004016105c390613bd5565b60405180910390fd5b60005460ff166105ee5760405162461bcd60e51b81526004016105c390613705565b60405162461bcd60e51b81526004016105c390613cc6565b60075460ff1681565b600260208190526000918252604090912080546001820154919092015460ff1683565b60005460ff166106545760405162461bcd60e51b81526004016105c390613705565b8151158015906106645750805115155b6106805760405162461bcd60e51b81526004016105c390613b33565b60408051600380825260808201909252606091816020015b60608152602001906001900390816106985790505090506106ba6102ca6122f3565b816000815181106106c757fe5b60200260200101819052506106db8361230e565b816001815181106106e857fe5b60200260200101819052506106fc8261230e565b8160028151811061070957fe5b6020026020010181905250606061071f82612364565b60408051603480825260608281019093529293509091602082018180368337019050509050815160346020830182602086016068600019fa61076057600080fd5b50601481015160348201516040516333c1892360e21b81526000906120029063cf06248c906107939086906004016135af565b60206040518083038186803b1580156107ab57600080fd5b505afa1580156107bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107e39190613218565b6001600160a01b0316141561080a5760405162461bcd60e51b81526004016105c3906136d5565b4281621baf8001101561082f5760405162461bcd60e51b81526004016105c390613676565b60606110006001600160a01b0316633b071dcc6040518163ffffffff1660e01b815260040160006040518083038186803b15801561086c57600080fd5b505afa158015610880573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526108a8919081019061325f565b50905060005b81518110156109eb578181815181106108c357fe5b60200260200101516001600160a01b0316846001600160a01b031614156109e3576006546040516309a99b4f60e41b815260646110028031909302049190639a99b4f09061091790339085906004016135c3565b602060405180830381600087803b15801561093157600080fd5b505af1158015610945573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061096991906134cd565b506110006001600160a01b03166335409f7f84848151811061098757fe5b60200260200101516040518263ffffffff1660e01b81526004016109ab91906135af565b600060405180830381600087803b1580156109c557600080fd5b505af11580156109d9573d6000803e3d6000fd5b50505050506109eb565b6001016108ae565b50604051631871f7d960e31b81526120029063c38fbec890610a119086906004016135af565b600060405180830381600087803b158015610a2b57600080fd5b505af1158015610a3f573d6000803e3d6000fd5b505050505050505050505050565b60018181548110610a5a57fe5b6000918252602090912001546001600160a01b0316905081565b600080610a7f612fe3565b5050506001600160a01b0316600090815260026020818152604092839020835160608101855281548082526001830154938201849052919093015460ff16151592909301919091529091565b60055481565b60065481565b600181565b61100181565b6102ca81565b600881565b61200081565b60045481565b3361100014610b1a5760405162461bcd60e51b81526004016105c390613994565b60005460ff16610b3c5760405162461bcd60e51b81526004016105c390613705565b61200063f7a251d7600b610b4f846123f5565b60006040518463ffffffff1660e01b8152600401610b6f93929190613dfb565b600060405180830381600087803b158015610b8957600080fd5b505af1158015610b9d573d6000803e3d6000fd5b5050505050565b60035481565b61100581565b600281565b601081565b61100881565b600581565b600b81565b6004546005549091565b3361200014610bf55760405162461bcd60e51b81526004016105c390613bd5565b60005460ff16610c175760405162461bcd60e51b81526004016105c390613705565b610c1f613006565b6000610c6084848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506124bf92505050565b915091508015610ca75781516040517f7f0956d47419b9525356e7111652b653b530ec6f5096dccc04589bc38e62996791610c9a91613ddc565b60405180910390a1610b9d565b81516040517f7d45f62d17443dd4547bca8a8112c60e2385669318dc300ec61a5d2492f262e791610cd791613ddc565b60405180910390a150505b505050565b600981565b61100781565b3361100014610d135760405162461bcd60e51b81526004016105c390613994565b610d1d828261253f565b5050565b61100681565b60005460ff1681565b61200281565b61300081565b600081565b600481565b60005460ff16610d685760405162461bcd60e51b81526004016105c390613705565b3361100714610d895760405162461bcd60e51b81526004016105c390613a6c565b610df484848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260148152731b5a5cd9195b59585b9bdc951a1c995cda1bdb1960621b602082015291506127169050565b15610e8f5760208114610e195760405162461bcd60e51b81526004016105c390613920565b604080516020601f8401819004810282018101909252828152600091610e579185858083850183828082843760009201919091525061277092505050565b905060018110158015610e6b575060055481105b610e875760405162461bcd60e51b81526004016105c390613b90565b6004556112b3565b610ef584848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600f81526e19995b1bdb9e551a1c995cda1bdb19608a1b602082015291506127169050565b15610f915760208114610f1a5760405162461bcd60e51b81526004016105c390613aba565b604080516020601f8401819004810282018101909252828152600091610f589185858083850183828082843760009201919091525061277092505050565b90506103e88111158015610f6d575060045481115b610f895760405162461bcd60e51b81526004016105c3906137be565b6005556112b3565b61100584848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601881527f66696e616c697479536c617368526577617264526174696f0000000000000000602082015291506127169050565b1561109f576020811461102a5760405162461bcd60e51b81526004016105c390613cfd565b604080516020601f84018190048102820181019092528281526000916110689185858083850183828082843760009201919091525061277092505050565b9050600a811015801561107b5750606481105b6110975760405162461bcd60e51b81526004016105c3906138d4565b6006556112b3565b61111384848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601881527f656e61626c654d616c6963696f7573566f7465536c6173680000000000000000602082015291506127169050565b1561118a57602081146111385760405162461bcd60e51b81526004016105c3906137f3565b604080516020601f8401819004810282018101909252828152611174919084848083850183828082843760009201919091525061277592505050565b6007805460ff19169115159190911790556112b3565b6111fe84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601781527f6d616c6963696f7573566f7465536c61736853636f7065000000000000000000602082015291506127169050565b1561129b57602081146112235760405162461bcd60e51b81526004016105c39061362c565b604080516020601f84018190048102820181019092528281526000916112619185858083850183828082843760009201919091525061277092505050565b905061708081101580156112775750620d2f0081105b6112935760405162461bcd60e51b81526004016105c39061373c565b6008556112b3565b60405162461bcd60e51b81526004016105c390613c71565b7f6cdb0ac70ab7f2e2d035cca5be60d89906f2dede7648ddbd7402189c1eeed17a848484846040516112e894939291906135fa565b60405180910390a150505050565b6201518081565b600a81565b61100281565b33612000146113295760405162461bcd60e51b81526004016105c390613bd5565b60005460ff1661134b5760405162461bcd60e51b81526004016105c390613705565b6040517f07db600eebe2ac176be8dcebad61858c245a4961bb32ca2aa3d159b09aa0810e90600090a1505050565b3341146113985760405162461bcd60e51b81526004016105c390613c24565b60005460ff166113ba5760405162461bcd60e51b81526004016105c390613705565b60035443116113db5760405162461bcd60e51b81526004016105c390613d48565b3a156113f95760405162461bcd60e51b81526004016105c390613a0f565b60405163155853f360e21b8152611000906355614fcc9061141e9084906004016135af565b60206040518083038186803b15801561143657600080fd5b505afa15801561144a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061146e9190613322565b611477576117f3565b61147f612fe3565b506001600160a01b0381166000908152600260208181526040928390208351606081018552815481526001820154928101929092529091015460ff1615801592820192909252906114da576020810180516001019052611533565b60016040820181905260208201819052805480820182556000919091527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180546001600160a01b0319166001600160a01b0384161790555b43815260055460208201518161154557fe5b0661172157600060208201526040516335409f7f60e01b8152611000906335409f7f906115769085906004016135af565b600060405180830381600087803b15801561159057600080fd5b505af11580156115a4573d6000803e3d6000fd5b50506040516333c1892360e21b815260009250612002915063cf06248c906115d09086906004016135af565b60206040518083038186803b1580156115e857600080fd5b505afa1580156115fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116209190613218565b6001600160a01b0316146116415761163c82826020015161253f565b61171c565b61200063f7a251d7600b611654856123f5565b60006040518463ffffffff1660e01b815260040161167493929190613dfb565b600060405180830381600087803b15801561168e57600080fd5b505af192505050801561169f575060015b61171c573d8080156116cd576040519150601f19603f3d011682016040523d82523d6000602084013e6116d2565b606091505b50826001600160a01b03167fd7bc86ff5d08c8ab043edec743302aba2520e6635172a428bc956721db9e2d1c836020015183604051611712929190613d95565b60405180910390a2505b61178d565b60045481602001518161173057fe5b0661178d576040516375abf10160e11b81526110009063eb57e2029061175a9085906004016135af565b600060405180830381600087803b15801561177457600080fd5b505af1158015611788573d6000803e3d6000fd5b505050505b6001600160a01b0382166000818152600260208181526040808420865181559186015160018301558581015191909201805460ff1916911515919091179055517fddb6012116e51abf5436d956a4f0ebd927e92c576ff96d7918290c8782291e3e9190a2505b5043600355565b60005460ff1661181c5760405162461bcd60e51b81526004016105c390613705565b60075460ff1661183e5760405162461bcd60e51b81526004016105c3906136a0565b60065461184b5760146006555b60085461185a57620151806008555b60085481516040015143910111801561187e57504360085482602001516040015101115b61189a5760405162461bcd60e51b81526004016105c390613c98565b8060200151602001518160000151602001511480156118c85750806020015160600151816000015160600151145b156118e55760405162461bcd60e51b81526004016105c390613967565b8051604081015190511080156119045750602081015160408101519051105b6119205760405162461bcd60e51b81526004016105c39061389d565b6020810151518151511080156119455750806000015160400151816020015160400151105b8061197057508051516020820151511080156119705750806020015160400151816000015160400151105b8061198a5750806020015160400151816000015160400151145b6119a65760405162461bcd60e51b81526004016105c390613787565b604080820151905163ea321e4960e01b81526110009163ea321e49916119cf91906004016135e7565b60206040518083038186803b1580156119e757600080fd5b505afa1580156119fb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a1f9190613322565b611a3b5760405162461bcd60e51b81526004016105c390613a3d565b611a4d8160000151826040015161279d565b8015611a665750611a668160200151826040015161279d565b611a825760405162461bcd60e51b81526004016105c39061383e565b6060806110006001600160a01b0316633b071dcc6040518163ffffffff1660e01b815260040160006040518083038186803b158015611ac057600080fd5b505afa158015611ad4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611afc919081019061325f565b9150915060005b8151811015611c3957611b2d828281518110611b1b57fe5b60200260200101518560400151612975565b15611c31576006546040516309a99b4f60e41b815260646110028031909302049190639a99b4f090611b6590339085906004016135c3565b602060405180830381600087803b158015611b7f57600080fd5b505af1158015611b93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bb791906134cd565b506110006001600160a01b03166335409f7f858481518110611bd557fe5b60200260200101516040518263ffffffff1660e01b8152600401611bf991906135af565b600060405180830381600087803b158015611c1357600080fd5b505af1158015611c27573d6000803e3d6000fd5b5050505050611c39565b600101611b03565b506040808401519051630f5b9efd60e31b815260009161200291637adcf7e891611c65916004016135e7565b60206040518083038186803b158015611c7d57600080fd5b505afa158015611c91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cb59190613218565b6001600160a01b031614611d23576040808401519051630e9fbf5160e01b815261200291630e9fbf5191611cec91906004016135e7565b600060405180830381600087803b158015611d0657600080fd5b505af1158015611d1a573d6000803e3d6000fd5b50505050610ce2565b6000611d34846040015160006129d9565b90506120006001600160a01b031663f7a251d7600b611d5687604001516129f5565b60006040518463ffffffff1660e01b8152600401611d7693929190613dfb565b600060405180830381600087803b158015611d9057600080fd5b505af1925050508015611da1575060015b611e13573d808015611dcf576040519150601f19603f3d011682016040523d82523d6000602084013e611dd4565b606091505b50817fd58d1183100bd0932c0588f31c4205d6bc6168909765a96c41adbed3115f362882604051611e0591906135e7565b60405180910390a250611e3f565b60405181907f7b78aadacff901d8b63d0dba4f86283d4db8aef27f9ed70413dd860f1c9532b690600090a25b50505050565b601481565b61100381565b61200481565b60005460ff1615611e795760405162461bcd60e51b81526004016105c390613afc565b60056004819055600a90556000805460ff19166001179055565b60085481565b61100081565b600381565b3361100014611ec55760405162461bcd60e51b81526004016105c390613994565b60005460ff16611ee75760405162461bcd60e51b81526004016105c390613705565b600154611ef3576122eb565b600154600090600019015b8082116122bf576000805b8284101561202257611f19612fe3565b6002600060018781548110611f2a57fe5b60009182526020808320909101546001600160a01b0316835282810193909352604091820190208151606081018352815481526001820154938101939093526002015460ff16151590820152600554909150600490048160200151111561200c57600460055481611f9757fe5b04816020015103816020018181525050806002600060018881548110611fb957fe5b6000918252602080832091909101546001600160a01b0316835282810193909352604091820190208351815591830151600183015591909101516002909101805460ff1916911515919091179055612016565b6001925050612022565b50836001019350611f09565b8284116121b957612031612fe3565b600260006001868154811061204257fe5b60009182526020808320909101546001600160a01b0316835282810193909352604091820190208151606081018352815481526001820154938101939093526002015460ff16151590820152600554909150600490048160200151111561212a576004600554816120af57fe5b048160200151038160200181815250508060026000600187815481106120d157fe5b6000918252602080832091909101546001600160a01b03168352828101939093526040918201902083518155918301516001808401919091559201516002909101805460ff191691151591909117905591506121b99050565b600260006001868154811061213b57fe5b60009182526020808320909101546001600160a01b031683528201929092526040018120818155600181810192909255600201805460ff1916905580548061217f57fe5b600082815260209020810160001990810180546001600160a01b0319169055019055836121ac57506121b9565b5060001990920191612022565b8180156121c35750805b156122a25760026000600186815481106121d957fe5b60009182526020808320909101546001600160a01b031683528201929092526040018120818155600181810192909255600201805460ff1916905580548490811061222057fe5b600091825260209091200154600180546001600160a01b03909216918690811061224657fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600180548061227f57fe5b600082815260209020810160001990810180546001600160a01b03191690550190555b826122ae5750506122bf565b505060019091019060001901611efe565b6040517fcfdb3b6ccaeccbdc68be3c59c840e3b3c90f0a7c491f5fff1cf56cfda200dd9c90600090a150505b565b61100481565b606061230661230183612a30565b61230e565b90505b919050565b6060815160011480156123405750607f60f81b8260008151811061232e57fe5b01602001516001600160f81b03191611155b1561234c575080612309565b61230661235e8351608060ff16612b16565b83612be8565b60608151600014156123855750604080516000815260208101909152612309565b60608260008151811061239457fe5b602002602001015190506000600190505b83518110156123d5576123cb828583815181106123be57fe5b6020026020010151612be8565b91506001016123a5565b506123ee6123e8825160c060ff16612b16565b82612be8565b9392505050565b60408051600480825260a08201909252606091829190816020015b6060815260200190600190039081612410579050509050612439836001600160a01b0316612c65565b8160008151811061244657fe5b602002602001018190525061245a436122f3565b8160018151811061246757fe5b602090810291909101015261247d6102ca6122f3565b8160028151811061248a57fe5b602002602001018190525061249e426122f3565b816003815181106124ab57fe5b60200260200101819052506123ee81612364565b6124c7613006565b60006124d1613006565b6124d9613018565b6124ea6124e586612c88565b612cad565b90506000805b6124f983612cf7565b1561253257806125255761251461250f84612d18565b612d66565b63ffffffff1684526001915061252a565b612532565b6001016124f0565b5091935090915050915091565b6040516375cc7d8960e01b8152612002906375cc7d89906125649085906004016135af565b600060405180830381600087803b15801561257e57600080fd5b505af192505050801561258f575060015b610d1d576040516000815260443d10156125ab57506000612648565b60046000803e60005160e01c6308c379a081146125cc576000915050612648565b60043d036004833e81513d602482011167ffffffffffffffff821117156125f857600092505050612648565b808301805167ffffffffffffffff81111561261a576000945050505050612648565b8060208301013d860181111561263857600095505050505050612648565b601f01601f191660405250925050505b80612653575061269c565b826001600160a01b03167fd7bc86ff5d08c8ab043edec743302aba2520e6635172a428bc956721db9e2d1c838360405161268e929190613d95565b60405180910390a250612711565b3d8080156126c6576040519150601f19603f3d011682016040523d82523d6000602084013e6126cb565b606091505b50826001600160a01b03167fd7bc86ff5d08c8ab043edec743302aba2520e6635172a428bc956721db9e2d1c8383604051612707929190613d95565b60405180910390a2505b610d1d565b6000816040516020016127299190613593565b60405160208183030381529060405280519060200120836040516020016127509190613593565b604051602081830303815290604052805190602001201490505b92915050565b015190565b8082015160009060ff81161561278f576001915081612795565b60009150815b505092915050565b60408051600480825260a0820190925260009160609190816020015b60608152602001906001900390816127b95750506040805160208082528183019092529192506060919080820181803683370190505090506127fe85600001516122f3565b8260008151811061280b57fe5b60200260200101819052506128266020866020015183612de8565b61282f8161230e565b8260018151811061283c57fe5b602002602001018190525061285485604001516122f3565b8260028151811061286157fe5b602002602001018190525061287c6020866060015183612de8565b6128858161230e565b8260038151811061289257fe5b60200260200101819052506128b860206128ab84612364565b8051906020012083612de8565b6040805160b080825260e082019092526060916020820181803683370190505090506128e8818360006020612df8565b6128fa81876080015160206060612df8565b612908818660806030612df8565b604080516001808252818301909252606091602082018180368337019050509050815160016020830182602086016066600019fa61294557600080fd5b506001612953826000612e4b565b60ff161461296857600094505050505061276a565b5060019695505050505050565b81518151600091600191811480831461299157600092506129cf565b600160208701838101602088015b6002848385100114156129ca5780518351146129be5760009650600093505b6020928301920161299f565b505050505b5090949350505050565b600081602001835110156129ec57600080fd5b50016020015190565b60408051600480825260a08201909252606091829190816020015b6060815260200190600190039081612a105790505090506124398361230e565b604080516020808252818301909252606091829190602082018180368337505050602081018490529050600067ffffffffffffffff198416612a7457506018612a98565b6fffffffffffffffffffffffffffffffff198416612a9457506010612a98565b5060005b6020811015612ace57818181518110612aad57fe5b01602001516001600160f81b03191615612ac657612ace565b600101612a98565b60008160200390506060816040519080825280601f01601f191660200182016040528015612b03576020820181803683370190505b5080830196909652508452509192915050565b6060680100000000000000008310612b405760405162461bcd60e51b81526004016105c390613875565b60408051600180825281830190925260609160208201818036833701905050905060378411612b9a5782840160f81b81600081518110612b7c57fe5b60200101906001600160f81b031916908160001a905350905061276a565b6060612ba585612a30565b90508381510160370160f81b82600081518110612bbe57fe5b60200101906001600160f81b031916908160001a905350612bdf8282612be8565b95945050505050565b6060806040519050835180825260208201818101602087015b81831015612c19578051835260209283019201612c01565b50855184518101855292509050808201602086015b81831015612c46578051835260209283019201612c2e565b508651929092011591909101601f01601f191660405250905092915050565b60408051600560a21b83186014820152603481019091526060906123ee8161230e565b612c90613038565b506040805180820190915281518152602082810190820152919050565b612cb5613018565b612cbe82612e67565b612cc757600080fd5b6000612cd68360200151612ea1565b60208085015160408051808201909152868152920190820152915050919050565b6000612d01613038565b505080518051602091820151919092015191011190565b612d20613038565b612d2982612cf7565b612d3257600080fd5b60208201516000612d4282612f04565b80830160209586015260408051808201909152908152938401919091525090919050565b805160009015801590612d7b57508151602110155b612d8457600080fd5b6000612d938360200151612ea1565b90508083600001511015612db95760405162461bcd60e51b81526004016105c390613b59565b825160208085015183018051928490039291831015612ddf57826020036101000a820491505b50949350505050565b9091018181526020918201910152565b60005b81811015610b9d57838181518110612e0f57fe5b602001015160f81c60f81b858480600101955081518110612e2c57fe5b60200101906001600160f81b031916908160001a905350600101612dfb565b60008160010183511015612e5e57600080fd5b50016001015190565b8051600090612e7857506000612309565b6020820151805160001a9060c0821015612e9757600092505050612309565b5060019392505050565b8051600090811a6080811015612ebb576000915050612309565b60b8811080612ed6575060c08110801590612ed6575060f881105b15612ee5576001915050612309565b60c0811015612ef95760b519019050612309565b60f519019050612309565b80516000908190811a6080811015612f1f5760019150612fdc565b60b8811015612f3457607e1981019150612fdc565b60c0811015612f8557600060b78203600186019550806020036101000a865104915060018101820193505080831015612f7f5760405162461bcd60e51b81526004016105c3906139e4565b50612fdc565b60f8811015612f9a5760be1981019150612fdc565b600060f78203600186019550806020036101000a8651049150600181018201935050808310156127955760405162461bcd60e51b81526004016105c3906139e4565b5092915050565b604051806060016040528060008152602001600081526020016000151581525090565b60408051602081019091526000815290565b604051806040016040528061302b613038565b8152602001600081525090565b604051806040016040528060008152602001600081525090565b600082601f830112613062578081fd5b815161307561307082613e4e565b613e27565b818152915060208083019084810160005b848110156130eb578151870188603f8201126130a157600080fd5b838101516130b161307082613e6e565b81815260408b818486010111156130c757600080fd5b6130d683888401838701613e92565b50865250509282019290820190600101613086565b505050505092915050565b60008083601f840112613107578182fd5b50813567ffffffffffffffff81111561311e578182fd5b60208301915083602082850101111561313657600080fd5b9250929050565b600082601f83011261314d578081fd5b813561315b61307082613e6e565b915080825283602082850101111561317257600080fd5b8060208401602084013760009082016020015292915050565b600060a0828403121561319c578081fd5b6131a660a0613e27565b905081358152602082013560208201526040820135604082015260608201356060820152608082013567ffffffffffffffff8111156131e457600080fd5b6131f08482850161313d565b60808301525092915050565b60006020828403121561320d578081fd5b81356123ee81613ebe565b600060208284031215613229578081fd5b81516123ee81613ebe565b60008060408385031215613246578081fd5b823561325181613ebe565b946020939093013593505050565b60008060408385031215613271578182fd5b825167ffffffffffffffff80821115613288578384fd5b81850186601f820112613299578485fd5b805192506132a961307084613e4e565b80848252602080830192508084018a8283890287010111156132c9578889fd5b8894505b868510156132f45780516132e081613ebe565b8452600194909401939281019281016132cd565b50880151909650935050508082111561330b578283fd5b5061331885828601613052565b9150509250929050565b600060208284031215613333578081fd5b815180151581146123ee578182fd5b60008060408385031215613354578182fd5b823567ffffffffffffffff8082111561336b578384fd5b6133778683870161313d565b9350602085013591508082111561338c578283fd5b506133188582860161313d565b600080600080604085870312156133ae578182fd5b843567ffffffffffffffff808211156133c5578384fd5b6133d1888389016130f6565b909650945060208701359150808211156133e9578384fd5b506133f6878288016130f6565b95989497509550505050565b600060208284031215613413578081fd5b813567ffffffffffffffff8082111561342a578283fd5b8184016060818703121561343c578384fd5b6134466060613e27565b9250803582811115613456578485fd5b6134628782840161318b565b845250602081013582811115613476578485fd5b6134828782840161318b565b602085015250604081013582811115613499578485fd5b6134a58782840161313d565b6040850152509195945050505050565b6000602082840312156134c6578081fd5b5035919050565b6000602082840312156134de578081fd5b5051919050565b6000806000604084860312156134f9578081fd5b833560ff81168114613509578182fd5b9250602084013567ffffffffffffffff811115613524578182fd5b613530868287016130f6565b9497909650939450505050565b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b6000815180845261357f816020860160208601613e92565b601f01601f19169290920160200192915050565b600082516135a5818460208701613e92565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b901515815260200190565b6000602082526123ee6020830184613567565b60006040825261360e60408301868861353d565b828103602084015261362181858761353d565b979650505050505050565b6020808252602a908201527f6c656e677468206f66206d616c6963696f7573566f7465536c61736853636f706040820152690ca40dad2e6dac2e8c6d60b31b606082015260800190565b60208082526010908201526f195d9a59195b98d9481d1bdbc81bdb1960821b604082015260600190565b6020808252818101527f6d616c6963696f757320766f746520736c617368206e6f7420656e61626c6564604082015260600190565b6020808252601690820152751d985b1a59185d1bdc881b9bdd081b5a59dc985d195960521b604082015260600190565b60208082526019908201527f74686520636f6e7472616374206e6f7420696e69742079657400000000000000604082015260600190565b6020808252602b908201527f746865206d616c6963696f757320766f746520736c6173682073636f7065206f60408201526a7574206f662072616e676560a81b606082015260800190565b6020808252601a908201527f6e6f2076696f6c6174696f6e206f6620766f74652072756c6573000000000000604082015260600190565b6020808252818101527f7468652066656c6f6e795468726573686f6c64206f7574206f662072616e6765604082015260600190565b6020808252602b908201527f6c656e677468206f6620656e61626c654d616c6963696f7573566f7465536c6160408201526a0e6d040dad2e6dac2e8c6d60ab1b606082015260800190565b60208082526017908201527f766572696679207369676e6174757265206661696c6564000000000000000000604082015260600190565b6020808252600e908201526d696e70757420746f6f206c6f6e6760901b604082015260600190565b60208082526019908201527f7372634e756d20626967676572207468616e207461724e756d00000000000000604082015260600190565b6020808252602c908201527f7468652066696e616c69747920736c6173682072657761726420726174696f2060408201526b6f7574206f662072616e676560a01b606082015260800190565b60208082526027908201527f6c656e677468206f66206d697364656d65616e6f725468726573686f6c64206d6040820152660d2e6dac2e8c6d60cb1b606082015260800190565b60208082526013908201527274776f206964656e746963616c20766f74657360681b604082015260600190565b60208082526030908201527f746865206d6573736167652073656e646572206d7573742062652076616c696460408201526f185d1bdc94d95d0818dbdb9d1c9858dd60821b606082015260800190565b6020808252601190820152706164646974696f6e206f766572666c6f7760781b604082015260600190565b6020808252601490820152736761737072696365206973206e6f74207a65726f60601b604082015260600190565b6020808252601590820152741d9bdd195059191c881a5cc81b9bdd08199bdd5b99605a1b604082015260600190565b6020808252602e908201527f746865206d6573736167652073656e646572206d75737420626520676f76657260408201526d1b985b98d94818dbdb9d1c9858dd60921b606082015260800190565b60208082526022908201527f6c656e677468206f662066656c6f6e795468726573686f6c64206d69736d61746040820152610c6d60f31b606082015260800190565b60208082526019908201527f74686520636f6e747261637420616c726561647920696e697400000000000000604082015260600190565b6020808252600c908201526b32b6b83a3c903432b0b232b960a11b604082015260600190565b6020808252601a908201527f6c656e677468206973206c657373207468616e206f6666736574000000000000604082015260600190565b60208082526025908201527f746865206d697364656d65616e6f725468726573686f6c64206f7574206f662060408201526472616e676560d81b606082015260800190565b6020808252602f908201527f746865206d6573736167652073656e646572206d7573742062652063726f737360408201526e0818da185a5b8818dbdb9d1c9858dd608a1b606082015260800190565b6020808252602d908201527f746865206d6573736167652073656e646572206d75737420626520746865206260408201526c3637b1b590383937b23ab1b2b960991b606082015260800190565b6020808252600d908201526c756e6b6e6f776e20706172616d60981b604082015260600190565b6020808252601490820152731d185c99d95d08189b1bd8dac81d1bdbc81bdb1960621b604082015260600190565b6020808252601e908201527f7265636569766520756e65787065637465642073796e207061636b6167650000604082015260600190565b6020808252602b908201527f6c656e677468206f662066696e616c697479536c61736852657761726452617460408201526a0d2de40dad2e6dac2e8c6d60ab1b606082015260800190565b6020808252818101527f63616e206e6f7420736c61736820747769636520696e206f6e6520626c6f636b604082015260600190565b61ffff91909116815260200190565b90815260200190565b600083825260406020830152613dae6040830184613567565b949350505050565b918252602082015260400190565b92835260208301919091521515604082015260600190565b63ffffffff91909116815260200190565b60ff91909116815260200190565b600060ff8516825260606020830152613e176060830185613567565b9050826040830152949350505050565b60405181810167ffffffffffffffff81118282101715613e4657600080fd5b604052919050565b600067ffffffffffffffff821115613e64578081fd5b5060209081020190565b600067ffffffffffffffff821115613e84578081fd5b50601f01601f191660200190565b60005b83811015613ead578181015183820152602001613e95565b83811115611e3f5750506000910152565b6001600160a01b0381168114613ed357600080fd5b5056fea164736f6c6343000604000a", + ContractAddr: common.HexToAddress(TokenHubContract), + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/9d09d0a3d6332460a810188261ec8195e05aa218", + Code: "6080604052600436106104405760003560e01c80639509b98011610234578063c81b16621161012e578063ebf71d53116100b6578063fb063e8f1161007a578063fb063e8f146110d3578063fc1a598f146110e8578063fc3e590814610cca578063fd6a68791461111b578063ff9c0027146108a057610488565b8063ebf71d531461106a578063f01484721461107f578063f1fad10414611094578063f9a2bbc7146110a9578063fa9e9159146110be57610488565b8063dc927faf116100fd578063dc927faf14610fce578063df8079e914610fe3578063e04c83a714610ff8578063e1c7392a14611022578063e8f35cea1461103757610488565b8063c81b166214610ef9578063c8509d8114610f0e578063cf41984414610f93578063d9e6dae91461080d57610488565b8063aa7415f5116101bc578063b99328c511610180578063b99328c514610e30578063b9fd21e314610e69578063ba35ead614610e7e578063bbface1f14610e93578063bd46646114610ec657610488565b8063aa7415f514610cdf578063aa82dce114610d26578063aad5606314610d3b578063ab51bb9614610d50578063ac43175114610d6557610488565b80639dc09262116102035780639dc0926214610c76578063a1a11bf514610c8b578063a496fba214610ca0578063a78abc1614610cb5578063a7c9f02d14610cca57610488565b80639509b98014610bda57806396713da914610c135780639a854bbd14610c285780639a99b4f014610c3d57610488565b806359b9278911610345578063727be1f8116102cd578063831d65d111610291578063831d65d114610ac85780638525db0314610b4d5780638b87b21f146107625780638eff336c14610b8657806393ab703f14610bc557610488565b8063727be1f814610a2057806375d47a0a14610a4a5780637942fd0514610a5f578063799758b914610a745780637e434d5414610ab357610488565b80636e056520116103145780636e056520146108b55780636e47b482146109e157806370fd5bad146108a0578063718a8aa8146109f657806371d3086314610a0b57610488565b806359b92789146108615780635d499b1b1461088b578063613684751461080d57806366dea52a146108a057610488565b80633fd8b02f116103c85780634a3acdf4116103975780634a3acdf4146107f85780634bf6c8821461080d57806350432d321461082257806351b4dce31461083757806351e806721461084c57610488565b80633fd8b02f1461078d57806343756e5c146107a257806343a368b9146107b7578063493279b1146107cc57610488565b8063149d14d91161040f578063149d14d91461062157806328087028146106485780632ae454831461065d5780633d713223146106b15780633dffc3871461076257610488565b80630bee7a671461048d5780630e2374a5146104bb5780631182b875146104ec57806312234582146105e657610488565b36610488573415610486576040805133815234602082015281517f6c98249d85d88c3753a04a22230f595e4dc8d3dc86c34af35deeeedc861b89db929181900390910190a15b005b600080fd5b34801561049957600080fd5b506104a2611130565b6040805163ffffffff9092168252519081900360200190f35b3480156104c757600080fd5b506104d0611135565b604080516001600160a01b039092168252519081900360200190f35b3480156104f857600080fd5b506105716004803603604081101561050f57600080fd5b60ff8235169190810190604081016020820135600160201b81111561053357600080fd5b82018360208201111561054557600080fd5b803590602001918460018302840111600160201b8311171561056657600080fd5b50909250905061113b565b6040805160208082528351818301528351919283929083019185019080838360005b838110156105ab578181015183820152602001610593565b50505050905090810190601f1680156105d85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156105f257600080fd5b506104866004803603604081101561060957600080fd5b506001600160a01b0381358116916020013516611269565b34801561062d57600080fd5b50610636611363565b60408051918252519081900360200190f35b34801561065457600080fd5b506104d0611369565b34801561066957600080fd5b506106986004803603604081101561068057600080fd5b506001600160a01b038135811691602001351661136f565b6040805192835260208301919091528051918290030190f35b3480156106bd57600080fd5b506104d0600480360360208110156106d457600080fd5b810190602081018135600160201b8111156106ee57600080fd5b82018360208201111561070057600080fd5b803590602001918460018302840111600160201b8311171561072157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611393945050505050565b34801561076e57600080fd5b506107776113b7565b6040805160ff9092168252519081900360200190f35b34801561079957600080fd5b506106366113bc565b3480156107ae57600080fd5b506104d06113c2565b3480156107c357600080fd5b506106366113c8565b3480156107d857600080fd5b506107e16113d4565b6040805161ffff9092168252519081900360200190f35b34801561080457600080fd5b506106366113d9565b34801561081957600080fd5b506107776113df565b34801561082e57600080fd5b506106366113e4565b34801561084357600080fd5b506104d06113ef565b34801561085857600080fd5b506104d06113f5565b34801561086d57600080fd5b506104d06004803603602081101561088457600080fd5b50356113fb565b34801561089757600080fd5b50610636611416565b3480156108ac57600080fd5b5061077761141f565b6109cd600480360360808110156108cb57600080fd5b810190602081018135600160201b8111156108e557600080fd5b8201836020820111156108f757600080fd5b803590602001918460208302840111600160201b8311171561091857600080fd5b919390929091602081019035600160201b81111561093557600080fd5b82018360208201111561094757600080fd5b803590602001918460208302840111600160201b8311171561096857600080fd5b919390929091602081019035600160201b81111561098557600080fd5b82018360208201111561099757600080fd5b803590602001918460208302840111600160201b831117156109b857600080fd5b91935091503567ffffffffffffffff16611424565b604080519115158252519081900360200190f35b3480156109ed57600080fd5b506104d06118f9565b348015610a0257600080fd5b506107776118ff565b348015610a1757600080fd5b50610636611904565b348015610a2c57600080fd5b506109cd60048036036020811015610a4357600080fd5b503561190a565b348015610a5657600080fd5b506104d061198b565b348015610a6b57600080fd5b50610777611991565b348015610a8057600080fd5b5061048660048036036060811015610a9757600080fd5b508035906001600160a01b036020820135169060400135611996565b348015610abf57600080fd5b506104d0611c46565b348015610ad457600080fd5b5061048660048036036040811015610aeb57600080fd5b60ff8235169190810190604081016020820135600160201b811115610b0f57600080fd5b820183602082011115610b2157600080fd5b803590602001918460018302840111600160201b83111715610b4257600080fd5b509092509050611c4c565b348015610b5957600080fd5b5061048660048036036040811015610b7057600080fd5b50803590602001356001600160a01b0316611d94565b348015610b9257600080fd5b5061048660048036036060811015610ba957600080fd5b508035906001600160a01b036020820135169060400135611efd565b348015610bd157600080fd5b50610636611f83565b348015610be657600080fd5b5061048660048036036040811015610bfd57600080fd5b506001600160a01b038135169060200135611f8a565b348015610c1f57600080fd5b50610777612147565b348015610c3457600080fd5b5061063661214c565b348015610c4957600080fd5b5061063660048036036040811015610c6057600080fd5b506001600160a01b038135169060200135612158565b348015610c8257600080fd5b506104d0612296565b348015610c9757600080fd5b506104d061229c565b348015610cac57600080fd5b506107776122a2565b348015610cc157600080fd5b506109cd6122a7565b348015610cd657600080fd5b506107776122b0565b6109cd60048036036080811015610cf557600080fd5b5080356001600160a01b03908116916020810135909116906040810135906060013567ffffffffffffffff166122b5565b348015610d3257600080fd5b506104d0612335565b348015610d4757600080fd5b506104d061233b565b348015610d5c57600080fd5b506104a26122a2565b348015610d7157600080fd5b5061048660048036036040811015610d8857600080fd5b810190602081018135600160201b811115610da257600080fd5b820183602082011115610db457600080fd5b803590602001918460018302840111600160201b83111715610dd557600080fd5b919390929091602081019035600160201b811115610df257600080fd5b820183602082011115610e0457600080fd5b803590602001918460018302840111600160201b83111715610e2557600080fd5b509092509050612341565b348015610e3c57600080fd5b5061048660048036036040811015610e5357600080fd5b50803590602001356001600160a01b03166127e9565b348015610e7557600080fd5b50610636612869565b348015610e8a57600080fd5b50610636612873565b348015610e9f57600080fd5b5061063660048036036020811015610eb657600080fd5b50356001600160a01b0316612879565b348015610ed257600080fd5b5061063660048036036020811015610ee957600080fd5b50356001600160a01b031661288b565b348015610f0557600080fd5b506104d06128a6565b348015610f1a57600080fd5b5061048660048036036040811015610f3157600080fd5b60ff8235169190810190604081016020820135600160201b811115610f5557600080fd5b820183602082011115610f6757600080fd5b803590602001918460018302840111600160201b83111715610f8857600080fd5b5090925090506128ac565b348015610f9f57600080fd5b5061048660048036036040811015610fb657600080fd5b506001600160a01b038135811691602001351661297c565b348015610fda57600080fd5b506104d0612c50565b348015610fef57600080fd5b506104d0612c56565b34801561100457600080fd5b506109cd6004803603602081101561101b57600080fd5b5035612c5c565b34801561102e57600080fd5b50610486612cfc565b34801561104357600080fd5b506106366004803603602081101561105a57600080fd5b50356001600160a01b0316612d9c565b34801561107657600080fd5b50610777612dae565b34801561108b57600080fd5b50610777612db3565b3480156110a057600080fd5b50610777612db8565b3480156110b557600080fd5b506104d0612dbd565b3480156110ca57600080fd5b50610636612dc3565b3480156110df57600080fd5b50610636612dc9565b3480156110f457600080fd5b506105716004803603602081101561110b57600080fd5b50356001600160a01b0316612dd7565b34801561112757600080fd5b506104d0612efe565b606481565b61200181565b60005460609060ff16611183576040805162461bcd60e51b815260206004820152601960248201526000805160206153e4833981519152604482015290519081900360640190fd5b33612000146111c35760405162461bcd60e51b815260040180806020018281038252602f815260200180615392602f913960400191505060405180910390fd5b60ff8416600214156112155761120e83838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612f0492505050565b9050611262565b6040805162461bcd60e51b815260206004820152601860248201527f756e7265636f676e697a65642073796e207061636b6167650000000000000000604482015290519081900360640190fd5b9392505050565b33612000146112a95760405162461bcd60e51b815260040180806020018281038252602f815260200180615392602f913960400191505060405180910390fd5b6001600160a01b0380831660009081526007602090815260408083209385168352929052208054611314576040805162461bcd60e51b815260206004820152601060248201526f1b9bc81b1bd8dad95908185b5bdd5b9d60821b604482015290519081900360640190fd5b8054600082556040805182815290516001600160a01b0380861692908716917f152fb15aa5d80f843e1e4bd5f2fc9161714f169945024decec7e84fb910fdd519181900360200190a350505050565b60015490565b61200581565b60076020908152600092835260408084209091529082529020805460019091015482565b6020818101516000908152600490915260409020546001600160a01b03165b919050565b600181565b60055481565b61100181565b670de0b6b3a764000081565b606181565b61a8c081565b600881565b66071afd498d000081565b61200681565b61200081565b6000908152600460205260409020546001600160a01b031690565b6402540be40081565b600281565b6000805460ff1661146a576040805162461bcd60e51b815260206004820152601960248201526000805160206153e4833981519152604482015290519081900360640190fd5b8685146114a85760405162461bcd60e51b815260040180806020018281038252603b815260200180615357603b913960400191505060405180910390fd5b8683146114e65760405162461bcd60e51b815260040180806020018281038252603f815260200180615269603f913960400191505060405180910390fd5b426078018267ffffffffffffffff1610156115325760405162461bcd60e51b81526004018080602001828103825260248152602001806151e56024913960400191505060405180910390fd5b6402540be4003406156115765760405162461bcd60e51b815260040180806020018281038252604081526020018061545a6040913960400191505060405180910390fd5b604080518681526020808802820101909152859060009081906060908480156115a9578160200160208202803683370190505b50905060005b84811015611684576402540be4008b8b838181106115c957fe5b90506020020135816115d757fe5b06156116145760405162461bcd60e51b815260040180806020018281038252603c8152602001806152a8603c913960400191505060405180910390fd5b6116398b8b8381811061162357fe5b905060200201358561302890919063ffffffff16565b93506116656402540be4008c8c8481811061165057fe5b9050602002013561308290919063ffffffff16565b82828151811061167157fe5b60209081029190910101526001016115af565b506001546116a99061169c908663ffffffff6130c416565b849063ffffffff61302816565b3410156116e75760405162461bcd60e51b81526004018080602001828103825260568152602001806154046056913960600191505060405180910390fd5b6116f7348463ffffffff61311d16565b9150611701615023565b6040518060c001604052806221272160e91b60001b815260200160006001600160a01b031681526020018381526020018e8e808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152505050908252506040805160208c810282810182019093528c82529283019290918d918d91829185019084908082843760009201919091525050509082525067ffffffffffffffff8916602090910152905061200063f7a251d760036117c58461315f565b6117da876402540be40063ffffffff61308216565b6040518463ffffffff1660e01b8152600401808460ff1660ff16815260200180602001838152602001828103825284818151815260200191508051906020019080838360005b83811015611838578181015183820152602001611820565b50505050905090810190601f1680156118655780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b15801561188657600080fd5b505af115801561189a573d6000803e3d6000fd5b505060408051600081523360208201528082018890526060810187905290517f74eab09b0e53aefc23f2e1b16da593f95c2dd49c6f5a23720463d10d9c330b2a9350908190036080019150a15060019c9b505050505050505050505050565b61100581565b601081565b60015481565b6000336120011461194c5760405162461bcd60e51b815260040180806020018281038252603381526020018061513d6033913960400191505060405180910390fd5b8115611983576040516120019083156108fc029084906000818181858888f19350505050158015611981573d6000803e3d6000fd5b505b506001919050565b61100881565b600b81565b60005460ff166119db576040805162461bcd60e51b815260206004820152601960248201526000805160206153e4833981519152604482015290519081900360640190fd5b3361300014611a1b5760405162461bcd60e51b815260040180806020018281038252602b81526020018061523e602b913960400191505060405180910390fd5b677ce66c50e2840000811115611a625760405162461bcd60e51b81526004018080602001828103825260358152602001806152096035913960400191505060405180910390fd5b60006221272160e91b8414611bcc576000848152600460205260409020546001600160a01b031680611ad5576040805184815290516001600160a01b0386169187917fc16ee9013bf67c846d37735983debb0acc5b2d1419cb5931c9843ad4689505499181900360200190a35050611c41565b6001600160a01b038116600090815260026020526040902054611af8848261341a565b604080516370a0823160e01b8152306004820152905191945084916001600160a01b038516916370a08231916024808301926020929190829003018186803b158015611b4357600080fd5b505afa158015611b57573d6000803e3d6000fd5b505050506040513d6020811015611b6d57600080fd5b50511015611bb9576040805162461bcd60e51b8152602060048201526014602482015273696e73756666696369656e742062616c616e636560601b604482015290519081900360640190fd5b611bc58683858861345a565b5050611c3f565b611be1826402540be40063ffffffff6130c416565b905080471015611c2f576040805162461bcd60e51b8152602060048201526014602482015273696e73756666696369656e742062616c616e636560601b604482015290519081900360640190fd5b6000611c3d8582848761345a565b505b505b505050565b61200381565b60005460ff16611c91576040805162461bcd60e51b815260206004820152601960248201526000805160206153e4833981519152604482015290519081900360640190fd5b3361200014611cd15760405162461bcd60e51b815260040180806020018281038252602f815260200180615392602f913960400191505060405180910390fd5b60ff831660031415611d2157611d1c82828080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506134f492505050565b611c41565b7f41ce201247b6ceb957dcdb217d0b8acb50b9ea0e12af9af4f5e7f38902101605838383604051808460ff1660ff168152602001806020018281038252848482818152602001925080828437600083820152604051601f909101601f1916909201829003965090945050505050a1505050565b3361300014611dd45760405162461bcd60e51b815260040180806020018281038252602b81526020018061523e602b913960400191505060405180910390fd5b60006221272160e91b8314611e3f57506000828152600460205260409020546001600160a01b031680611e3f576040805162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a59081cde5b589bdb60921b604482015290519081900360640190fd5b6001600160a01b0380821660009081526007602090815260408083209386168352929052208054611eaa576040805162461bcd60e51b815260206004820152601060248201526f1b9bc81b1bd8dad95908185b5bdd5b9d60821b604482015290519081900360640190fd5b8054600082556040805182815290516001600160a01b03808716929086169188917f8041a9a8704332594e2884f5e0f942281cdd7611854c365b4d0aa70b2295d6b6919081900360200190a45050505050565b3361100814611f3d5760405162461bcd60e51b81526004018080602001828103825260238152602001806153c16023913960400191505060405180910390fd5b600083815260046020908152604080832080546001600160a01b039096166001600160a01b03199096168617905593825260038152838220949094556002909352912055565b6201518081565b81806001600160a01b031663893d20e86040518163ffffffff1660e01b815260040160206040518083038186803b158015611fc457600080fd5b505afa158015611fd8573d6000803e3d6000fd5b505050506040513d6020811015611fee57600080fd5b50516001600160a01b0316331461204c576040805162461bcd60e51b815260206004820152601860248201527f6e6f74206f776e6572206f6620424550323020746f6b656e0000000000000000604482015290519081900360640190fd5b6000821161209a576040805162461bcd60e51b81526020600482015260166024820152751e995c9bc81b1a5b5a5d081b9bdd08185b1b1bddd95960521b604482015290519081900360640190fd5b6001600160a01b0383166000908152600360205260409020546120f0576040805162461bcd60e51b81526020600482015260096024820152681b9bdd08189bdd5b9960ba1b604482015290519081900360640190fd5b6001600160a01b038316600081815260066020908152604091829020859055815185815291513393927f9df3a90730dbf23b5cc18dbbd5f4af3fa94a0dffb6ff6841f98a9a9a6ac626a892908290030190a3505050565b600981565b677ce66c50e284000081565b6000805460ff1661219e576040805162461bcd60e51b815260206004820152601960248201526000805160206153e4833981519152604482015290519081900360640190fd5b33611005146121de5760405162461bcd60e51b815260040180806020018281038252602f815260200180615170602f913960400191505060405180910390fd5b60004783106121ed57476121ef565b825b9050670de0b6b3a764000081111561220b576000915050612290565b801561228d576040516001600160a01b0385169082156108fc029083906000818181858888f19350505050158015612247573d6000803e3d6000fd5b50604080516001600160a01b03861681526020810183905281517ff8b71c64315fc33b2ead2adfa487955065152a8ac33d9d5193aafd7f45dc15a0929181900390910190a15b90505b92915050565b61100781565b61100681565b600081565b60005460ff1681565b600381565b6000805460ff166122fb576040805162461bcd60e51b815260206004820152601960248201526000805160206153e4833981519152604482015290519081900360640190fd5b6040805162461bcd60e51b815260206004820152600a60248201526919195c1c9958d85d195960b21b604482015290519081900360640190fd5b61200281565b61300081565b33611007146123815760405162461bcd60e51b815260040180806020018281038252602e815260200180615305602e913960400191505060405180910390fd5b602081146123d6576040805162461bcd60e51b815260206004820152601b60248201527f65787065637465642076616c7565206c656e6774682069732033320000000000604482015290519081900360640190fd5b606084848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8801819004810282018101909252868152939450606093925086915085908190840183828082843760009201919091525050505060208301519091506772656c617946656560c01b8114156124de576020820151670de0b6b3a7640000811180159061248557506402540be4008106155b6124d6576040805162461bcd60e51b815260206004820152601960248201527f7468652072656c6179466565206f7574206f662072616e676500000000000000604482015290519081900360640190fd5b600155612754565b61255287878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601781527f6c617267655472616e736665724c6f636b506572696f64000000000000000000602082015291506135509050565b156125ee57604080516020601f87018190048102820181019092528581526000916125959188888083850183828082843760009201919091525061363792505050565b905062093a808111156125e6576040805162461bcd60e51b81526020600482015260146024820152736c6f636b20706572696f6420746f6f206c6f6e6760601b604482015290519081900360640190fd5b600555612754565b61265a87878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080518082019091526015815274189b9893185c99d9551c985b9cd9995c931a5b5a5d605a1b602082015291506135509050565b1561271757604080516020601f870181900481028201810190925285815260009161269d9188888083850183828082843760009201919091525061363792505050565b905068056bc75e2d631000008110156126e75760405162461bcd60e51b815260040180806020018281038252602281526020018061519f6022913960400191505060405180910390fd5b6000805260066020527f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f855612754565b6040805162461bcd60e51b815260206004820152600d60248201526c756e6b6e6f776e20706172616d60981b604482015290519081900360640190fd5b7f6cdb0ac70ab7f2e2d035cca5be60d89906f2dede7648ddbd7402189c1eeed17a878787876040518080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600083820152604051601f909101601f19169092018290039850909650505050505050a150505050505050565b33611008146128295760405162461bcd60e51b81526004018080602001828103825260238152602001806153c16023913960400191505060405180910390fd5b600091825260046020908152604080842080546001600160a01b03191690556001600160a01b039290921683526003815281832083905560029052812055565b6221272160e91b81565b61c35081565b60026020526000908152604090205481565b6001600160a01b031660009081526003602052604090205490565b61100281565b60005460ff166128f1576040805162461bcd60e51b815260206004820152601960248201526000805160206153e4833981519152604482015290519081900360640190fd5b33612000146129315760405162461bcd60e51b815260040180806020018281038252602f815260200180615392602f913960400191505060405180910390fd5b60ff831660031415611d2157611d1c82828080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061363c92505050565b60085460ff16600214156129c8576040805162461bcd60e51b815260206004820152600e60248201526d4e6f2072652d656e7472616e637960901b604482015290519081900360640190fd5b6008805460ff191660021790556001600160a01b0380831660009081526007602090815260408083209385168352929052208054612a40576040805162461bcd60e51b815260206004820152601060248201526f1b9bc81b1bd8dad95908185b5bdd5b9d60821b604482015290519081900360640190fd5b8060010154421015612a99576040805162461bcd60e51b815260206004820152601760248201527f7374696c6c206f6e206c6f636b696e6720706572696f64000000000000000000604482015290519081900360640190fd5b805460008083556001600160a01b038516612b0c576040516001600160a01b038516906127109084906000818181858888f193505050503d8060008114612afc576040519150601f19603f3d011682016040523d82523d6000602084013e612b01565b606091505b505080915050612b9f565b846001600160a01b031663a9059cbb61c35086856040518463ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600088803b158015612b6f57600080fd5b5087f1158015612b83573d6000803e3d6000fd5b50505050506040513d6020811015612b9a57600080fd5b505190505b80612bf1576040805162461bcd60e51b815260206004820152601e60248201527f776974686472617720756e6c6f636b656420746f6b656e206661696c65640000604482015290519081900360640190fd5b836001600160a01b0316856001600160a01b03167f832fc3e25f2b3e6fb0eb59419a73cba405f2a249fce75f7e31ea5a457a0323f1846040518082815260200191505060405180910390a350506008805460ff19166001179055505050565b61100381565b61200481565b60003361200214612cb4576040805162461bcd60e51b815260206004820152601f60248201527f746865206d73672073656e646572206d757374206265207374616b6548756200604482015290519081900360640190fd5b814710612cf4576040516120029083156108fc029084906000818181858888f19350505050158015612cea573d6000803e3d6000fd5b50600190506113b2565b506000919050565b60005460ff1615612d54576040805162461bcd60e51b815260206004820152601960248201527f74686520636f6e747261637420616c726561647920696e697400000000000000604482015290519081900360640190fd5b66071afd498d000060019081556000808052600260205260127fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b55805460ff19169091179055565b60066020526000908152604090205481565b600481565b600581565b601181565b61100081565b61271081565b69021e19e0c9bab240000081565b6001600160a01b03811660009081526003602090815260409182902054825182815280840190935260609290918391906020820181803683375050506020810183905290506000805b60208160ff161015612e6757828160ff1681518110612e3b57fe5b01602001516001600160f81b03191615612e5a57816001019150612e5f565b612e67565b600101612e20565b5060608160ff166040519080825280601f01601f191660200182016040528015612e98576020820181803683370190505b50905060005b8260ff168160ff161015612ef457838160ff1681518110612ebb57fe5b602001015160f81c60f81b828260ff1681518110612ed557fe5b60200101906001600160f81b031916908160001a905350600101612e9e565b5095945050505050565b61100481565b6060612f0e61506f565b6000612f1984613733565b9150915080612f6f576040805162461bcd60e51b815260206004820152601f60248201527f756e7265636f676e697a6564207472616e73666572496e207061636b61676500604482015290519081900360640190fd5b6000612f7a83613872565b905063ffffffff81161561300e576040808401516020808601516001600160a01b03166000908152600290915291822054612fb59190613bd8565b9050612fbf6150a4565b60405180608001604052808660000151815260200183815260200186608001516001600160a01b031681526020018463ffffffff16815250905061300281613c11565b955050505050506113b2565b505060408051600081526020810190915291506113b29050565b60008282018381101561228d576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600061228d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613ced565b6000826130d357506000612290565b828202828482816130e057fe5b041461228d5760405162461bcd60e51b81526004018080602001828103825260218152602001806152e46021913960400191505060405180910390fd5b600061228d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613d8f565b60408051600680825260e08201909252606091829190816020015b606081526020019060019003908161317a575050835190915061319c90613de9565b816000815181106131a957fe5b60200260200101819052506131ca83602001516001600160a01b0316613dfc565b816001815181106131d757fe5b60200260200101819052506000836040015151905060608160405190808252806020026020018201604052801561322257816020015b606081526020019060019003908161320d5790505b50905060005b8281101561326f576132508660400151828151811061324357fe5b6020026020010151613de9565b82828151811061325c57fe5b6020908102919091010152600101613228565b5061327981613e1f565b8360028151811061328657fe5b60200260200101819052506060826040519080825280602002602001820160405280156132c757816020015b60608152602001906001900390816132b25790505b50905060005b8381101561331d576132fe876060015182815181106132e857fe5b60200260200101516001600160a01b0316613dfc565b82828151811061330a57fe5b60209081029190910101526001016132cd565b5061332781613e1f565b8460038151811061333457fe5b602002602001018190525060608360405190808252806020026020018201604052801561337557816020015b60608152602001906001900390816133605790505b50905060005b848110156133b557613396886080015182815181106132e857fe5b8282815181106133a257fe5b602090810291909101015260010161337b565b506133bf81613e1f565b856004815181106133cc57fe5b60200260200101819052506133ee8760a0015167ffffffffffffffff16613de9565b856005815181106133fb57fe5b602002602001018190525061340f85613e1f565b979650505050505050565b600060088211156134435761343c836007198401600a0a63ffffffff6130c416565b9050612290565b61228d836008849003600a0a63ffffffff61308216565b6001600160a01b0380841660009081526007602090815260408083209385168352929052208054613491908463ffffffff61302816565b81554262015180016001820181905560408051858152602081019290925280516001600160a01b03808616939088169289927f446d1aa056e7b903901f49880e9f252762c1b81dc4301cf28db6dae526497eaa9281900390910190a45050505050565b6134fc6150cb565b600061350783613ea9565b91509150806135475760405162461bcd60e51b81526004018080602001828103825260248152602001806153336024913960400191505060405180910390fd5b611c4182614074565b6000816040516020018082805190602001908083835b602083106135855780518252601f199092019160209182019101613566565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405280519060200120836040516020018082805190602001908083835b602083106135f35780518252601f1990920191602091820191016135d4565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040528051906020012014905092915050565b015190565b613644615023565b600061364f836144f8565b915091508061368f5760405162461bcd60e51b81526004018080602001828103825260248152602001806151c16024913960400191505060405180910390fd5b6136976150cb565b602080840180516001600160a01b0390811684526040808701518585015291511660009081526002909252812054905b846040015151811015613718576136f5856040015182815181106136e757fe5b60200260200101518361341a565b8560400151828151811061370557fe5b60209081029190910101526001016136c7565b506080840151604083015260056060830152611c3d82614074565b61373b61506f565b600061374561506f565b61374d615102565b61375e6137598661475c565b614781565b90506000805b61376d836147cb565b15613865578061378f57613788613783846147ec565b61483a565b845261385d565b80600114156137bc576137a96137a4846147ec565b6148f1565b6001600160a01b0316602085015261385d565b80600214156137db576137d1613783846147ec565b604085015261385d565b8060031415613803576137f06137a4846147ec565b6001600160a01b0316606085015261385d565b806004141561382b576138186137a4846147ec565b6001600160a01b0316608085015261385d565b806005141561385857613840613783846147ec565b67ffffffffffffffff1660a08501526001915061385d565b613865565b600101613764565b5091935090915050915091565b60208101516000906001600160a01b03166139b6578160a0015167ffffffffffffffff164211156138a5575060016113b2565b81604001514710156138b9575060036113b2565b6138c28261490b565b61393757606082015160408084015190516000926001600160a01b0316916127109184818181858888f193505050503d806000811461391d576040519150601f19603f3d011682016040523d82523d6000602084013e613922565b606091505b50509050806139355750600490506113b2565b505b7f471eb9cc1ffe55ffadf15b32595415eb9d80f22e761d24bd6dffc607e1284d5982602001518360600151846040015160405180846001600160a01b03166001600160a01b03168152602001836001600160a01b03166001600160a01b03168152602001828152602001935050505060405180910390a15060006113b2565b8160a0015167ffffffffffffffff164211156139d4575060016113b2565b81516020808401516001600160a01b031660009081526003909152604090205414613a01575060026113b2565b602080830151604080516370a0823160e01b815230600482015290516000936001600160a01b03909316926370a082319261c3509260248083019392829003018187803b158015613a5157600080fd5b5086fa158015613a65573d6000803e3d6000fd5b50505050506040513d6020811015613a7c57600080fd5b50516040840151909150811015613a975750600390506113b2565b613aa08361490b565b613b5757600083602001516001600160a01b031663a9059cbb61c350866060015187604001516040518463ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600088803b158015613b1557600080fd5b5087f1158015613b29573d6000803e3d6000fd5b50505050506040513d6020811015613b4057600080fd5b5051905080613b555750600591506113b29050565b505b7f471eb9cc1ffe55ffadf15b32595415eb9d80f22e761d24bd6dffc607e1284d5983602001518460600151856040015160405180846001600160a01b03166001600160a01b03168152602001836001600160a01b03166001600160a01b03168152602001828152602001935050505060405180910390a150600090506113b2565b60006008821115613bfa5761343c836007198401600a0a63ffffffff61308216565b61228d836008849003600a0a63ffffffff6130c416565b60408051600480825260a08201909252606091829190816020015b6060815260200190600190039081613c2c5750508351909150613c4e90613de9565b81600081518110613c5b57fe5b6020026020010181905250613c738360200151613de9565b81600181518110613c8057fe5b6020026020010181905250613ca183604001516001600160a01b0316613dfc565b81600281518110613cae57fe5b6020026020010181905250613ccc836060015163ffffffff16613de9565b81600381518110613cd957fe5b602002602001018190525061126281613e1f565b60008183613d795760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613d3e578181015183820152602001613d26565b50505050905090810190601f168015613d6b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581613d8557fe5b0495945050505050565b60008184841115613de15760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315613d3e578181015183820152602001613d26565b505050900390565b6060612290613df783614a79565b614b5f565b60408051600560a21b831860148201526034810190915260609061126281614b5f565b6060815160001415613e4057506040805160008152602081019091526113b2565b606082600081518110613e4f57fe5b602002602001015190506000600190505b8351811015613e9057613e8682858381518110613e7957fe5b6020026020010151614bb1565b9150600101613e60565b50611262613ea3825160c060ff16614c2e565b82614bb1565b613eb16150cb565b6000613ebb6150cb565b613ec3615102565b613ecf6137598661475c565b90506000805b613ede836147cb565b156138655780613f0457613ef46137a4846147ec565b6001600160a01b0316845261406c565b8060011415613fa5576060613f20613f1b856147ec565b614d26565b90508051604051908082528060200260200182016040528015613f4d578160200160208202803683370190505b50602086015260005b8151811015613f9e57613f7b828281518110613f6e57fe5b602002602001015161483a565b86602001518281518110613f8b57fe5b6020908102919091010152600101613f56565b505061406c565b8060021415614047576060613fbc613f1b856147ec565b90508051604051908082528060200260200182016040528015613fe9578160200160208202803683370190505b50604086015260005b8151811015613f9e5761401782828151811061400a57fe5b60200260200101516148f1565b8660400151828151811061402757fe5b6001600160a01b0390921660209283029190910190910152600101613ff2565b80600314156138585761405c613783846147ec565b63ffffffff166060850152600191505b600101613ed5565b80516001600160a01b031661429e5760005b816020015151811015614298576000826040015182815181106140a557fe5b60200260200101516001600160a01b0316612710846020015184815181106140c957fe5b60209081029190910101516040516000818181858888f193505050503d8060008114614111576040519150601f19603f3d011682016040523d82523d6000602084013e614116565b606091505b50509050806141d9577f203f9f67a785f4f81be4d48b109aa0c498d1bc8097ecc2627063f480cc5fe73e83600001518460400151848151811061415557fe5b60200260200101518560200151858151811061416d57fe5b6020026020010151866060015160405180856001600160a01b03166001600160a01b03168152602001846001600160a01b03166001600160a01b031681526020018381526020018263ffffffff1663ffffffff16815260200194505050505060405180910390a161428f565b7fd468d4fa5e8fb4adc119b29a983fd0785e04af5cb8b7a3a69a47270c54b6901a83600001518460400151848151811061420f57fe5b60200260200101518560200151858151811061422757fe5b6020026020010151866060015160405180856001600160a01b03166001600160a01b03168152602001846001600160a01b03166001600160a01b031681526020018381526020018263ffffffff1663ffffffff16815260200194505050505060405180910390a15b50600101614086565b506144f5565b60005b8160200151518110156144f357600082600001516001600160a01b031663a9059cbb61c350856040015185815181106142d657fe5b6020026020010151866020015186815181106142ee57fe5b60200260200101516040518463ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600088803b15801561434557600080fd5b5087f1158015614359573d6000803e3d6000fd5b50505050506040513d602081101561437057600080fd5b505190508015614434577fd468d4fa5e8fb4adc119b29a983fd0785e04af5cb8b7a3a69a47270c54b6901a8360000151846040015184815181106143b057fe5b6020026020010151856020015185815181106143c857fe5b6020026020010151866060015160405180856001600160a01b03166001600160a01b03168152602001846001600160a01b03166001600160a01b031681526020018381526020018263ffffffff1663ffffffff16815260200194505050505060405180910390a16144ea565b7f203f9f67a785f4f81be4d48b109aa0c498d1bc8097ecc2627063f480cc5fe73e83600001518460400151848151811061446a57fe5b60200260200101518560200151858151811061448257fe5b6020026020010151866060015160405180856001600160a01b03166001600160a01b03168152602001846001600160a01b03166001600160a01b031681526020018381526020018263ffffffff1663ffffffff16815260200194505050505060405180910390a15b506001016142a1565b505b50565b614500615023565b600061450a615023565b614512615102565b61451e6137598661475c565b90506000805b61452d836147cb565b15613865578061454a57614543613783846147ec565b8452614754565b80600114156145725761455f6137a4846147ec565b6001600160a01b03166020850152614754565b8060021415614601576060614589613f1b856147ec565b905080516040519080825280602002602001820160405280156145b6578160200160208202803683370190505b50604086015260005b81518110156145fa576145d7828281518110613f6e57fe5b866040015182815181106145e757fe5b60209081029190910101526001016145bf565b5050614754565b8060031415614696576060614618613f1b856147ec565b90508051604051908082528060200260200182016040528015614645578160200160208202803683370190505b50606086015260005b81518110156145fa5761466682828151811061400a57fe5b8660600151828151811061467657fe5b6001600160a01b039092166020928302919091019091015260010161464e565b806004141561472b5760606146ad613f1b856147ec565b905080516040519080825280602002602001820160405280156146da578160200160208202803683370190505b50608086015260005b81518110156145fa576146fb82828151811061400a57fe5b8660800151828151811061470b57fe5b6001600160a01b03909216602092830291909101909101526001016146e3565b806005141561385857614740613783846147ec565b67ffffffffffffffff1660a0850152600191505b600101614524565b614764615122565b506040805180820190915281518152602082810190820152919050565b614789615102565b61479282614df7565b61479b57600080fd5b60006147aa8360200151614e31565b60208085015160408051808201909152868152920190820152915050919050565b60006147d5615122565b505080518051602091820151919092015191011190565b6147f4615122565b6147fd826147cb565b61480657600080fd5b6020820151600061481682614e94565b80830160209586015260408051808201909152908152938401919091525090919050565b80516000901580159061484f57508151602110155b61485857600080fd5b60006148678360200151614e31565b905080836000015110156148c2576040805162461bcd60e51b815260206004820152601a60248201527f6c656e677468206973206c657373207468616e206f6666736574000000000000604482015290519081900360640190fd5b8251602080850151830180519284900392918310156148e857826020036101000a820491505b50949350505050565b805160009060151461490257600080fd5b6122908261483a565b600080805260066020527f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f8541580156149445750600554155b156149865760008052600660205269021e19e0c9bab24000007f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f85561a8c06005555b6020808301516001600160a01b03166000908152600690915260409020548015806149b45750808360400151105b156149c35760009150506113b2565b6020808401516001600160a01b039081166000908152600783526040808220606088015190931682529190925290819020908401518154614a099163ffffffff61302816565b8155600554420160018201819055606085015160208087015160408089015181519081529283019490945283516001600160a01b039384169493909116927f3fb83143cd331170da18fb1e8564d97e8ec39264b6ecb1ba248ea7596ab07258928290030190a35060019392505050565b604080516020808252818301909252606091829190602082018180368337505050602081018490529050600067ffffffffffffffff198416614abd57506018614ae1565b6fffffffffffffffffffffffffffffffff198416614add57506010614ae1565b5060005b6020811015614b1757818181518110614af657fe5b01602001516001600160f81b03191615614b0f57614b17565b600101614ae1565b60008160200390506060816040519080825280601f01601f191660200182016040528015614b4c576020820181803683370190505b5080830196909652508452509192915050565b606081516001148015614b915750607f60f81b82600081518110614b7f57fe5b01602001516001600160f81b03191611155b15614b9d5750806113b2565b612290614baf8351608060ff16614c2e565b835b6060806040519050835180825260208201818101602087015b81831015614be2578051835260209283019201614bca565b50855184518101855292509050808201602086015b81831015614c0f578051835260209283019201614bf7565b508651929092011591909101601f01601f191660405250905092915050565b6060680100000000000000008310614c7e576040805162461bcd60e51b815260206004820152600e60248201526d696e70757420746f6f206c6f6e6760901b604482015290519081900360640190fd5b60408051600180825281830190925260609160208201818036833701905050905060378411614cd85782840160f81b81600081518110614cba57fe5b60200101906001600160f81b031916908160001a9053509050612290565b6060614ce385614a79565b90508381510160370160f81b82600081518110614cfc57fe5b60200101906001600160f81b031916908160001a905350614d1d8282614bb1565b95945050505050565b6060614d3182614df7565b614d3a57600080fd5b6000614d4583614fc7565b9050606081604051908082528060200260200182016040528015614d8357816020015b614d70615122565b815260200190600190039081614d685790505b5090506000614d958560200151614e31565b60208601510190506000805b84811015614dec57614db283614e94565b9150604051806040016040528083815260200184815250848281518110614dd557fe5b602090810291909101015291810191600101614da1565b509195945050505050565b8051600090614e08575060006113b2565b6020820151805160001a9060c0821015614e27576000925050506113b2565b5060019392505050565b8051600090811a6080811015614e4b5760009150506113b2565b60b8811080614e66575060c08110801590614e66575060f881105b15614e755760019150506113b2565b60c0811015614e895760b5190190506113b2565b60f5190190506113b2565b80516000908190811a6080811015614eaf5760019150614fc0565b60b8811015614ec457607e1981019150614fc0565b60c0811015614f3e57600060b78203600186019550806020036101000a865104915060018101820193505080831015614f38576040805162461bcd60e51b81526020600482015260116024820152706164646974696f6e206f766572666c6f7760781b604482015290519081900360640190fd5b50614fc0565b60f8811015614f535760be1981019150614fc0565b600060f78203600186019550806020036101000a865104915060018101820193505080831015614fbe576040805162461bcd60e51b81526020600482015260116024820152706164646974696f6e206f766572666c6f7760781b604482015290519081900360640190fd5b505b5092915050565b8051600090614fd8575060006113b2565b60008090506000614fec8460200151614e31565b602085015185519181019250015b8082101561501a5761500b82614e94565b82019150826001019250614ffa565b50909392505050565b6040518060c001604052806000801916815260200160006001600160a01b03168152602001606081526020016060815260200160608152602001600067ffffffffffffffff1681525090565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a081019190915290565b60408051608081018252600080825260208201819052918101829052606081019190915290565b604051806080016040528060006001600160a01b031681526020016060815260200160608152602001600063ffffffff1681525090565b6040518060400160405280615115615122565b8152602001600081525090565b60405180604001604052806000815260200160008152509056fe6f6e6c79207374616b696e672073797374656d20636f6e74726163742063616e2063616c6c20746869732066756e6374696f6e746865206d6573736167652073656e646572206d75737420626520696e63656e746976697a6520636f6e7472616374626e62206c61726765207472616e73666572206c696d697420746f6f20736d616c6c756e7265636f676e697a6564207472616e736665724f75742073796e207061636b61676565787069726554696d65206d7573742062652074776f206d696e75746573206c61746572616d6f756e7420697320746f6f206c617267652c20657863656564206d6178696d756d206265703220746f6b656e20616d6f756e74746865206d73672073656e646572206d75737420626520746f6b656e207265636f76657220706f7274616c4c656e677468206f6620726563697069656e74416464727320646f65736e277420657175616c20746f206c656e677468206f6620726566756e644164647273696e76616c6964207472616e7366657220616d6f756e743a20707265636973696f6e206c6f737320696e20616d6f756e7420636f6e76657273696f6e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77746865206d6573736167652073656e646572206d75737420626520676f7665726e616e636520636f6e7472616374756e7265636f676e697a6564207472616e736665724f75742061636b207061636b6167654c656e677468206f6620726563697069656e74416464727320646f65736e277420657175616c20746f206c656e677468206f6620616d6f756e7473746865206d6573736167652073656e646572206d7573742062652063726f737320636861696e20636f6e7472616374746865206d73672073656e646572206d75737420626520746f6b656e4d616e6167657274686520636f6e7472616374206e6f7420696e69742079657400000000000000726563656976656420424e4220616d6f756e742073686f756c64206265206e6f206c657373207468616e207468652073756d206f66207472616e7366657220424e4220616d6f756e7420616e642072656c6179466565696e76616c696420726563656976656420424e4220616d6f756e743a20707265636973696f6e206c6f737320696e20616d6f756e7420636f6e76657273696f6ea164736f6c6343000604000a", }, { - ContractAddr: common.HexToAddress(SystemRewardContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/cfc0bd1127186a917ddc38fd38d22903034d3f0b", - Code: "6080604052600436106101fd5760003560e01c806396713da91161010d578063ac431751116100a0578063f1fad1041161006f578063f1fad1041461062b578063f9a2bbc714610640578063fb5478b314610655578063fc3e59081461066a578063fd6a68791461067f57610241565b8063ac4317511461051d578063c81b1662146105ec578063dc927faf14610601578063df8079e91461061657610241565b8063a78abc16116100dc578063a78abc16146104c9578063aa82dce1146104de578063aad56063146104f3578063ab51bb961461050857610241565b806396713da9146104515780639a99b4f0146104665780639dc092621461049f578063a1a11bf5146104b457610241565b806351b4dce31161019057806370fd5bad1161015f57806370fd5bad146103e8578063718a8aa8146103fd57806375d47a0a146104125780637942fd05146104275780637e434d541461043c57610241565b806351b4dce31461036257806351e80672146103775780636d70f7ae1461038c5780636e47b482146103d357610241565b80633dffc387116101cc5780633dffc387146102e157806343756e5c1461030c578063493279b1146103215780634bf6c8821461034d57610241565b80630bee7a67146102465780630e2374a51461027457806328087028146102a55780633a0b0eff146102ba57610241565b3661024157341561023f5760408051348152905133917f6c98249d85d88c3753a04a22230f595e4dc8d3dc86c34af35deeeedc861b89db919081900360200190a25b005b600080fd5b34801561025257600080fd5b5061025b610694565b6040805163ffffffff9092168252519081900360200190f35b34801561028057600080fd5b50610289610699565b604080516001600160a01b039092168252519081900360200190f35b3480156102b157600080fd5b5061028961069f565b3480156102c657600080fd5b506102cf6106a5565b60408051918252519081900360200190f35b3480156102ed57600080fd5b506102f66106ab565b6040805160ff9092168252519081900360200190f35b34801561031857600080fd5b506102896106b0565b34801561032d57600080fd5b506103366106b6565b6040805161ffff9092168252519081900360200190f35b34801561035957600080fd5b506102f66106bc565b34801561036e57600080fd5b506102896106c1565b34801561038357600080fd5b506102896106c7565b34801561039857600080fd5b506103bf600480360360208110156103af57600080fd5b50356001600160a01b03166106cd565b604080519115158252519081900360200190f35b3480156103df57600080fd5b506102896106eb565b3480156103f457600080fd5b506102f66106f1565b34801561040957600080fd5b506102f66106f6565b34801561041e57600080fd5b506102896106fb565b34801561043357600080fd5b506102f6610701565b34801561044857600080fd5b50610289610706565b34801561045d57600080fd5b506102f661070c565b34801561047257600080fd5b506102cf6004803603604081101561048957600080fd5b506001600160a01b038135169060200135610711565b3480156104ab57600080fd5b50610289610911565b3480156104c057600080fd5b50610289610917565b3480156104d557600080fd5b506103bf61091d565b3480156104ea57600080fd5b50610289610926565b3480156104ff57600080fd5b5061028961092c565b34801561051457600080fd5b5061025b610932565b34801561052957600080fd5b5061023f6004803603604081101561054057600080fd5b81019060208101813564010000000081111561055b57600080fd5b82018360208201111561056d57600080fd5b8035906020019184600183028401116401000000008311171561058f57600080fd5b9193909290916020810190356401000000008111156105ad57600080fd5b8201836020820111156105bf57600080fd5b803590602001918460018302840111640100000000831117156105e157600080fd5b509092509050610937565b3480156105f857600080fd5b50610289610cba565b34801561060d57600080fd5b50610289610cc0565b34801561062257600080fd5b50610289610cc6565b34801561063757600080fd5b506102f6610ccc565b34801561064c57600080fd5b50610289610cd1565b34801561066157600080fd5b506102cf610cd7565b34801561067657600080fd5b506102f6610ce3565b34801561068b57600080fd5b50610289610ce8565b606481565b61200181565b61200581565b60015481565b600181565b61100181565b6102ca81565b600881565b61200681565b61200081565b6001600160a01b031660009081526002602052604090205460ff1690565b61100581565b600281565b601081565b61100881565b600b81565b61200381565b600981565b6000805460ff166107e35760026020527fe57bda0a954a7c7381b17b2c763e646ba2c60f67292d287ba583603e2c1c41668054600160ff1991821681179092557fe25235fc0de9d7165652bef0846fefda506174abb9a190f03d0f7bcc6146dbce80548216831790557ffcc09d5775472c6fa988b216f5ce189894c14e093527f732b9b65da0880b5f81805482168317905561100160009081527fd5856b6520af3fbaacead8d875ff5c4db19c2ad37c909e14d0ea394740e2ebc8805483168417905560048355805490911690911790555b3360009081526002602052604090205460ff166108315760405162461bcd60e51b815260040180806020018281038252602b815260200180610dd6602b913960400191505060405180910390fd5b60004783106108405747610842565b825b9050674563918244f4000081111561085f5750674563918244f400005b80156108e0576040516001600160a01b0385169082156108fc029083906000818181858888f1935050505015801561089b573d6000803e3d6000fd5b506040805182815290516001600160a01b038616917ff8b71c64315fc33b2ead2adfa487955065152a8ac33d9d5193aafd7f45dc15a0919081900360200190a261090a565b6040517fe589651933c2457488cc0d8e0941518abf748e799435e4e396d9c4d0b2db2d4d90600090a15b9392505050565b61100781565b61100681565b60005460ff1681565b61200281565b61300081565b600081565b33611007146109775760405162461bcd60e51b815260040180806020018281038252602e815260200180610e30602e913960400191505060405180910390fd5b6109d984848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600b81526a30b23227b832b930ba37b960a91b60208201529150610cee9050565b15610ab157606082828080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505082519293505060149091149050610a5c5760405162461bcd60e51b815260040180806020018281038252602c815260200180610e5e602c913960400191505060405180910390fd5b60148101516001600160a01b038116600081815260026020526040808220805460ff19166001179055517f9870d7fe5d112134c55844951dedf365363006d9c588db07c4c85af6322a06199190a25050610c28565b610b1684848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600e81526d3232b632ba32a7b832b930ba37b960911b60208201529150610cee9050565b15610beb57606082828080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505082519293505060149091149050610b995760405162461bcd60e51b815260040180806020018281038252602f815260200180610e01602f913960400191505060405180910390fd5b60148101516001600160a01b038116600081815260026020526040808220805460ff19169055517fb40992a19dba61ea600e87fce607102bf5908dc89076217b6ca6ae195224f7029190a25050610c28565b6040805162461bcd60e51b815260206004820152600d60248201526c756e6b6e6f776e20706172616d60981b604482015290519081900360640190fd5b7f6cdb0ac70ab7f2e2d035cca5be60d89906f2dede7648ddbd7402189c1eeed17a848484846040518080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600083820152604051601f909101601f19169092018290039850909650505050505050a150505050565b61100281565b61100381565b61200481565b601181565b61100081565b674563918244f4000081565b600381565b61100481565b6000816040516020018082805190602001908083835b60208310610d235780518252601f199092019160209182019101610d04565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405280519060200120836040516020018082805190602001908083835b60208310610d915780518252601f199092019160209182019101610d72565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051602081830303815290604052805190602001201490509291505056fe6f6e6c79206f70657261746f7220697320616c6c6f77656420746f2063616c6c20746865206d6574686f646c656e677468206f662076616c756520666f722064656c6574654f70657261746f722073686f756c64206265203230746865206d6573736167652073656e646572206d75737420626520676f7665726e616e636520636f6e74726163746c656e677468206f662076616c756520666f72206164644f70657261746f722073686f756c64206265203230a164736f6c6343000604000a", + ContractAddr: common.HexToAddress(GovHubContract), + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/9d09d0a3d6332460a810188261ec8195e05aa218", + Code: "608060405234801561001057600080fd5b506004361061021c5760003560e01c8063831d65d111610125578063ab51bb96116100ad578063df8079e91161007c578063df8079e914610615578063f1fad1041461061d578063f9a2bbc714610625578063fc3e59081461062d578063fd6a6879146106355761021c565b8063ab51bb9614610585578063c81b16621461058d578063c8509d8114610595578063dc927faf1461060d5761021c565b80639dc09262116100f45780639dc0926214610549578063a1a11bf514610551578063a78abc1614610559578063aa82dce114610575578063aad560631461057d5761021c565b8063831d65d1146103f857806388e4194e1461047257806396713da9146105395780639ab1a373146105415761021c565b80634bf6c882116101a857806370fd5bad1161017757806370fd5bad146103d0578063718a8aa8146103d857806375d47a0a146103e05780637942fd05146103e85780637e434d54146103f05761021c565b80634bf6c882146103b057806351b4dce3146103b857806351e80672146103c05780636e47b482146103c85761021c565b80633a21baae116101ef5780633a21baae1461035b5780633dffc3871461036357806343756e5c146103815780634900c4ea14610389578063493279b1146103915761021c565b80630bee7a67146102215780630e2374a5146102425780631182b875146102665780632808702814610353575b600080fd5b61022961063d565b6040805163ffffffff9092168252519081900360200190f35b61024a610642565b604080516001600160a01b039092168252519081900360200190f35b6102de6004803603604081101561027c57600080fd5b60ff8235169190810190604081016020820135600160201b8111156102a057600080fd5b8201836020820111156102b257600080fd5b803590602001918460018302840111600160201b831117156102d357600080fd5b509092509050610648565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610318578181015183820152602001610300565b50505050905090810190601f1680156103455780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61024a610737565b61022961073d565b61036b610742565b6040805160ff9092168252519081900360200190f35b61024a610747565b61036b61074d565b610399610752565b6040805161ffff9092168252519081900360200190f35b61036b610757565b61024a61075c565b61024a610762565b61024a610768565b61036b61076e565b61036b610773565b61024a610778565b61036b61077e565b61024a610783565b6104706004803603604081101561040e57600080fd5b60ff8235169190810190604081016020820135600160201b81111561043257600080fd5b82018360208201111561044457600080fd5b803590602001918460018302840111600160201b8311171561046557600080fd5b509092509050610789565b005b6104706004803603606081101561048857600080fd5b810190602081018135600160201b8111156104a257600080fd5b8201836020820111156104b457600080fd5b803590602001918460018302840111600160201b831117156104d557600080fd5b919390929091602081019035600160201b8111156104f257600080fd5b82018360208201111561050457600080fd5b803590602001918460018302840111600160201b8311171561052557600080fd5b9193509150356001600160a01b031661081b565b61036b610906565b61022961090b565b61024a610910565b61024a610916565b61056161091c565b604080519115158252519081900360200190f35b61024a610925565b61024a61092b565b61022961074d565b61024a610931565b610470600480360360408110156105ab57600080fd5b60ff8235169190810190604081016020820135600160201b8111156105cf57600080fd5b8201836020820111156105e157600080fd5b803590602001918460018302840111600160201b8311171561060257600080fd5b509092509050610937565b61024a6109ae565b61024a6109b4565b61036b6109ba565b61024a6109bf565b61036b6109c5565b61024a6109ca565b606481565b61200181565b6060336120001461068a5760405162461bcd60e51b815260040180806020018281038252602f81526020018061169d602f913960400191505060405180910390fd5b610692611638565b60006106d385858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506109d092505050565b91509150806106ef576106e66064610a96565b92505050610730565b60006106fa83610b00565b905063ffffffff811661072157505060408051600081526020810190915291506107309050565b61072a81610a96565b93505050505b9392505050565b61200581565b606681565b600181565b61100181565b600081565b606181565b600881565b61200681565b61200081565b61100581565b600281565b601081565b61100881565b600b81565b61200381565b33612000146107c95760405162461bcd60e51b815260040180806020018281038252602f81526020018061169d602f913960400191505060405180910390fd5b6040805162461bcd60e51b815260206004820152601e60248201527f7265636569766520756e65787065637465642061636b207061636b6167650000604482015290519081900360640190fd5b505050565b336120061461085b5760405162461bcd60e51b81526004018080602001828103825260318152602001806116cc6031913960400191505060405180910390fd5b610863611638565b604051806060016040528087878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250604080516020601f8801819004810282018101909252868152918101919087908790819084018382808284376000920191909152505050908252506001600160a01b03841660209091015290506108fd81610b00565b50505050505050565b600981565b606581565b61100781565b61100681565b60005460ff1681565b61200281565b61300081565b61100281565b33612000146109775760405162461bcd60e51b815260040180806020018281038252602f81526020018061169d602f913960400191505060405180910390fd5b60405162461bcd60e51b81526004018080602001828103825260238152602001806116fd6023913960400191505060405180910390fd5b61100381565b61200481565b601181565b61100081565b600381565b61100481565b6109d8611638565b60006109e2611638565b6109ea611662565b6109fb6109f686610ea1565b610ec6565b90506000805b610a0a83610f10565b15610a895780610a2c57610a25610a2084610f31565b610f7f565b8452610a81565b8060011415610a4b57610a41610a2084610f31565b6020850152610a81565b8060021415610a7c57610a65610a6084610f31565b610ff8565b6001600160a01b0316604085015260019150610a81565b610a89565b600101610a01565b5091935090915050915091565b604080516001808252818301909252606091829190816020015b6060815260200190600190039081610ab0579050509050610ad68363ffffffff16611018565b81600081518110610ae357fe5b6020026020010181905250610af78161102b565b9150505b919050565b6000610b0f82604001516110b5565b610b7b57604080516020808252601c908201527f74686520746172676574206973206e6f74206120636f6e7472616374000000008183015290517f70e72399380dcfb0338abc03dc8d47f9f470ada8e769c9a78d644ea97385ecb29181900360600190a1506065610afb565b81604001516001600160a01b031663ac431751836000015184602001516040518363ffffffff1660e01b8152600401808060200180602001838103835285818151815260200191508051906020019080838360005b83811015610be8578181015183820152602001610bd0565b50505050905090810190601f168015610c155780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015610c48578181015183820152602001610c30565b50505050905090810190601f168015610c755780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b158015610c9657600080fd5b505af1925050508015610ca7575060015b610e99576040516000815260443d1015610cc357506000610d60565b60046000803e60005160e01c6308c379a08114610ce4576000915050610d60565b60043d036004833e81513d602482011167ffffffffffffffff82111715610d1057600092505050610d60565b808301805167ffffffffffffffff811115610d32576000945050505050610d60565b8060208301013d8601811115610d5057600095505050505050610d60565b601f01601f191660405250925050505b80610d6b5750610e0e565b7f70e72399380dcfb0338abc03dc8d47f9f470ada8e769c9a78d644ea97385ecb2816040518080602001828103825283818151815260200191508051906020019080838360005b83811015610dca578181015183820152602001610db2565b50505050905090810190601f168015610df75780820380516001836020036101000a031916815260200191505b509250505060405180910390a16066915050610afb565b3d808015610e38576040519150601f19603f3d011682016040523d82523d6000602084013e610e3d565b606091505b5060408051602080825283518183015283517f1279f84165b4fd69c35e1f338ff107231b036c655cd1688851e011ce617c4e8d938593928392918301919085019080838360008315610dca578181015183820152602001610db2565b506000919050565b610ea9611682565b506040805180820190915281518152602082810190820152919050565b610ece611662565b610ed7826110bb565b610ee057600080fd5b6000610eef83602001516110f5565b60208085015160408051808201909152868152920190820152915050919050565b6000610f1a611682565b505080518051602091820151919092015191011190565b610f39611682565b610f4282610f10565b610f4b57600080fd5b60208201516000610f5b82611158565b80830160209586015260408051808201909152908152938401919091525090919050565b8051606090610f8d57600080fd5b6000610f9c83602001516110f5565b83516040805191839003808352601f19601f8201168301602001909152919250606090828015610fd3576020820181803683370190505b5090506000816020019050610fef84876020015101828561128b565b50949350505050565b805160009060151461100957600080fd5b611012826112d6565b92915050565b60606110126110268361138b565b611471565b606081516000141561104c5750604080516000815260208101909152610afb565b60608260008151811061105b57fe5b602002602001015190506000600190505b835181101561109c576110928285838151811061108557fe5b60200260200101516114c3565b915060010161106c565b50610af76110af825160c060ff16611540565b826114c3565b3b151590565b80516000906110cc57506000610afb565b6020820151805160001a9060c08210156110eb57600092505050610afb565b5060019392505050565b8051600090811a608081101561110f576000915050610afb565b60b881108061112a575060c0811080159061112a575060f881105b15611139576001915050610afb565b60c081101561114d5760b519019050610afb565b60f519019050610afb565b80516000908190811a60808110156111735760019150611284565b60b881101561118857607e1981019150611284565b60c081101561120257600060b78203600186019550806020036101000a8651049150600181018201935050808310156111fc576040805162461bcd60e51b81526020600482015260116024820152706164646974696f6e206f766572666c6f7760781b604482015290519081900360640190fd5b50611284565b60f88110156112175760be1981019150611284565b600060f78203600186019550806020036101000a865104915060018101820193505080831015611282576040805162461bcd60e51b81526020600482015260116024820152706164646974696f6e206f766572666c6f7760781b604482015290519081900360640190fd5b505b5092915050565b8061129557610816565b5b602081106112b5578251825260209283019290910190601f1901611296565b915181516020939093036101000a6000190180199091169216919091179052565b8051600090158015906112eb57508151602110155b6112f457600080fd5b600061130383602001516110f5565b9050808360000151101561135e576040805162461bcd60e51b815260206004820152601a60248201527f6c656e677468206973206c657373207468616e206f6666736574000000000000604482015290519081900360640190fd5b825160208085015183018051928490039291831015610fef57506020919091036101000a90049392505050565b604080516020808252818301909252606091829190602082018180368337505050602081018490529050600067ffffffffffffffff1984166113cf575060186113f3565b6fffffffffffffffffffffffffffffffff1984166113ef575060106113f3565b5060005b60208110156114295781818151811061140857fe5b01602001516001600160f81b0319161561142157611429565b6001016113f3565b60008160200390506060816040519080825280601f01601f19166020018201604052801561145e576020820181803683370190505b5080830196909652508452509192915050565b6060815160011480156114a35750607f60f81b8260008151811061149157fe5b01602001516001600160f81b03191611155b156114af575080610afb565b6110126114c18351608060ff16611540565b835b6060806040519050835180825260208201818101602087015b818310156114f45780518352602092830192016114dc565b50855184518101855292509050808201602086015b81831015611521578051835260209283019201611509565b508651929092011591909101601f01601f191660405250905092915050565b6060680100000000000000008310611590576040805162461bcd60e51b815260206004820152600e60248201526d696e70757420746f6f206c6f6e6760901b604482015290519081900360640190fd5b604080516001808252818301909252606091602082018180368337019050509050603784116115ea5782840160f81b816000815181106115cc57fe5b60200101906001600160f81b031916908160001a9053509050611012565b60606115f58561138b565b90508381510160370160f81b8260008151811061160e57fe5b60200101906001600160f81b031916908160001a90535061162f82826114c3565b95945050505050565b6040518060600160405280606081526020016060815260200160006001600160a01b031681525090565b6040518060400160405280611675611682565b8152602001600081525090565b60405180604001604052806000815260200160008152509056fe746865206d6573736167652073656e646572206d7573742062652063726f737320636861696e20636f6e7472616374746865206d73672073656e646572206d75737420626520676f7665726e6f722074696d656c6f636b20636f6e74726163747265636569766520756e6578706563746564206661696c2061636b207061636b616765a164736f6c6343000604000a", }, { ContractAddr: common.HexToAddress(CrossChainContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/cfc0bd1127186a917ddc38fd38d22903034d3f0b", - Code: "608060405234801561001057600080fd5b50600436106103e65760003560e01c806374f079b81161020a578063c27cdcfb11610125578063df8079e9116100b8578063f1fad10411610087578063f1fad10414610bac578063f7a251d714610bb4578063f9a2bbc714610c2c578063fc3e590814610c34578063fd6a687914610c3c576103e6565b8063df8079e914610b74578063e1c7392a14610b7c578063e3b0480514610b84578063e6400bbe14610ba4576103e6565b8063d31f968d116100f4578063d31f968d14610b2d578063d76a867514610b5c578063dc40433114610b64578063dc927faf14610b6c576103e6565b8063c27cdcfb14610af5578063c780e9de14610b15578063c81b166214610b1d578063ccc108d714610b25576103e6565b80639dc092621161019d578063aad560631161016c578063aad5606314610a27578063ab51bb9614610a2f578063ac43175114610a37578063b0355f5b146107d6576103e6565b80639dc0926214610a07578063a1a11bf514610a0f578063a78abc1614610a17578063aa82dce114610a1f576103e6565b806384013b6a116101d957806384013b6a1461091c578063863fe4ab146109f75780638cc8f561146108e457806396713da9146109ff576103e6565b806374f079b8146108fc57806375d47a0a146109045780637942fd051461090c5780637e434d5414610914576103e6565b806343756e5c116103055780636a3cb34d116102985780636e47a51a116102675780636e47a51a146108bc5780636e47b482146108dc57806370fd5bad146108e4578063718a8aa8146108ec578063719482d5146108f4576103e6565b80636a3cb34d146108645780636bacff2c1461086c5780636c46aa68146108645780636de380bd146108b4576103e6565b806351e80672116102d457806351e806721461081e5780635692ddd3146108265780635f8321771461082e57806363e1394e1461085c576103e6565b806343756e5c146107fe578063493279b1146108065780634bf6c8821461080e57806351b4dce314610816576103e6565b8063299b533d1161037d5780633a648b151161034c5780633a648b15146106725780633bdc47a6146106ae5780633dffc387146107d6578063422f9050146107de576103e6565b8063299b533d146105f85780632af6f3991461062c5780632ff32aea14610649578063308325f41461066a576103e6565b80631d130935116103b95780631d130935146104685780631e275ae11461048457806322556cdc146105e857806328087028146105f0576103e6565b806305e68258146103eb5780630bee7a67146104095780630e2374a51461042a57806314b3023b1461044e575b600080fd5b6103f3610c44565b6040805160ff9092168252519081900360200190f35b610411610c49565b6040805163ffffffff9092168252519081900360200190f35b610432610c4e565b604080516001600160a01b039092168252519081900360200190f35b610456610c54565b60408051918252519081900360200190f35b610470610c5a565b604080519115158252519081900360200190f35b6105e6600480360361010081101561049b57600080fd5b81018160a081016080820135600160201b8111156104b857600080fd5b8201836020820111156104ca57600080fd5b803590602001918460018302840111600160201b831117156104eb57600080fd5b919390929091602081019035600160201b81111561050857600080fd5b82018360208201111561051a57600080fd5b803590602001918460018302840111600160201b8311171561053b57600080fd5b919390929091602081019035600160201b81111561055857600080fd5b82018360208201111561056a57600080fd5b803590602001918460018302840111600160201b8311171561058b57600080fd5b919390929091602081019035600160201b8111156105a857600080fd5b8201836020820111156105ba57600080fd5b803590602001918460018302840111600160201b831117156105db57600080fd5b509092509050610c63565b005b610456611347565b61043261134c565b6106156004803603602081101561060e57600080fd5b5035611352565b6040805161ffff9092168252519081900360200190f35b6104706004803603602081101561064257600080fd5b5035611368565b61065161137d565b60408051600792830b90920b8252519081900360200190f35b610456611386565b6106926004803603602081101561068857600080fd5b503560ff1661138c565b604080516001600160401b039092168252519081900360200190f35b610761600480360360608110156106c457600080fd5b60ff82351691602081013591810190606081016040820135600160201b8111156106ed57600080fd5b8201836020820111156106ff57600080fd5b803590602001918460018302840111600160201b8311171561072057600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506113a7945050505050565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561079b578181015183820152602001610783565b50505050905090810190601f1680156107c85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103f361141d565b610470600480360360208110156107f457600080fd5b503560ff16611422565b610432611437565b61061561143d565b6103f3611443565b610432611448565b61043261144e565b610456611454565b6105e66004803603604081101561084457600080fd5b506001600160a01b0381358116916020013516611484565b6104566116e4565b61061561170c565b6108896004803603602081101561088257600080fd5b5035611711565b6040805161ffff90941684526001600160801b03909216602084015282820152519081900360600190f35b610456611740565b610432600480360360208110156108d257600080fd5b503560ff16611767565b610432611782565b6103f361170c565b6103f3611788565b61061561141d565b61045661178d565b610432611793565b6103f3611799565b61043261179e565b6105e6600480360360a081101561093257600080fd5b810190602081018135600160201b81111561094c57600080fd5b82018360208201111561095e57600080fd5b803590602001918460018302840111600160201b8311171561097f57600080fd5b919390929091602081019035600160201b81111561099c57600080fd5b8201836020820111156109ae57600080fd5b803590602001918460018302840111600160201b831117156109cf57600080fd5b919350915080356001600160401b03908116916020810135909116906040013560ff166117a4565b610456612a5e565b6103f3612a66565b610432612a6b565b610432612a71565b610470612a77565b610432612a80565b610432612a86565b610411610c44565b6105e660048036036040811015610a4d57600080fd5b810190602081018135600160201b811115610a6757600080fd5b820183602082011115610a7957600080fd5b803590602001918460018302840111600160201b83111715610a9a57600080fd5b919390929091602081019035600160201b811115610ab757600080fd5b820183602082011115610ac957600080fd5b803590602001918460018302840111600160201b83111715610aea57600080fd5b509092509050612a8c565b61069260048036036020811015610b0b57600080fd5b503560ff16613550565b61045661356b565b61043261358f565b6105e6613595565b61047060048036036040811015610b4357600080fd5b5080356001600160a01b0316906020013560ff166137e9565b610761613809565b610456613828565b61043261382e565b610432613834565b6105e661383a565b61069260048036036020811015610b9a57600080fd5b503560ff16613bf1565b6105e6613c0c565b6103f3613e2b565b6105e660048036036060811015610bca57600080fd5b60ff8235169190810190604081016020820135600160201b811115610bee57600080fd5b820183602082011115610c0057600080fd5b803590602001918460018302840111600160201b83111715610c2157600080fd5b919350915035613e30565b610432613f73565b6103f3613f79565b610432613f7e565b600081565b606481565b61200181565b60015481565b600b5460ff1681565b60005460ff16610ca8576040805162461bcd60e51b81526020600482015260196024820152600080516020614a62833981519152604482015290519081900360640190fd5b604080516337d7f9c160e21b81526001600160401b038b35166004820181905291516110039163df5fe704916024808301926020929190829003018186803b158015610cf357600080fd5b505afa158015610d07573d6000803e3d6000fd5b505050506040513d6020811015610d1d57600080fd5b5051610d5a5760405162461bcd60e51b8152600401808060200182810382526023815260200180614a826023913960400191505060405180910390fd5b604080516337d7f9c160e21b815260208c8101356001600160401b03166004830181905292516110039263df5fe704926024808301939192829003018186803b158015610da657600080fd5b505afa158015610dba573d6000803e3d6000fd5b505050506040513d6020811015610dd057600080fd5b5051610e0d5760405162461bcd60e51b8152600401808060200182810382526023815260200180614a826023913960400191505060405180910390fd5b60608b013560ff81166000908152600560205260409020546001600160401b03909116906001600160a01b0316610e86576040805162461bcd60e51b815260206004820152601860248201527718da185b9b995b081a5cc81b9bdd081cdd5c1c1bdc9d195960421b604482015290519081900360640190fd5b600b5460ff1615610eca576040805162461bcd60e51b81526020600482015260096024820152681cdd5cdc195b99195960ba1b604482015290519081900360640190fd5b8888604051808383808284376040519201829003822094508f93508e9250819050838380828437808301925050509250505060405180910390201415610f46576040805162461bcd60e51b815260206004820152600c60248201526b1cd85b59481c185e5b1bd85960a21b604482015290519081900360640190fd5b60606001600160401b0360408e01358116908e83013516610f678282613f84565b80516020808301919091206000818152600e9092526040909120549194509060ff1615610fd0576040805162461bcd60e51b8152602060048201526012602482015271185b1c9958591e4818da185b1b195b99d95960721b604482015290519081900360640190fd5b6000908152600e60205260408120805460ff191660011790558f8160200201356001600160401b0316905060608f8f8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050905060608c8c8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052506040805163cba510a960e01b81526001600160401b038a16600482015290519596509094611003945063cba510a9935060248083019350602092829003018186803b1580156110c657600080fd5b505afa1580156110da573d6000803e3d6000fd5b505050506040513d60208110156110f057600080fd5b505160408051808201909152600381526269626360e81b602082015290915061111d908290898686613fcc565b611166576040805162461bcd60e51b81526020600482015260156024820152740696e76616c6964206d65726b6c652070726f6f663605c1b604482015290519081900360640190fd5b5050505060008f60016004811061117957fe5b60200201356001600160401b0316905060608d8d8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8f018190048102820181019092528d815293945060609392508d91508c908190840183828082843760009201829052506040805163cba510a960e01b81526001600160401b038a16600482015290519596509094611003945063cba510a9935060248083019350602092829003018186803b15801561124557600080fd5b505afa158015611259573d6000803e3d6000fd5b505050506040513d602081101561126f57600080fd5b505160408051808201909152600381526269626360e81b602082015290915061129c908290898686613fcc565b6112e5576040805162461bcd60e51b8152602060048201526015602482015274696e76616c6964206d65726b6c652070726f6f663160581b604482015290519081900360640190fd5b505050506112f16140c9565b604080516001600160401b038416815260ff83166020820152815133927f039eb91179ffd7d3b6e97f8ea106e748e827f910b872375dbc9c14a362319c3c928290030190a2505050505050505050505050505050565b603281565b61200581565b600d6020526000908152604090205461ffff1681565b600e6020526000908152604090205460ff1681565b60045460070b81565b60025481565b600a602052600090815260409020546001600160401b031681565b60606000825160210190506060816040519080825280601f01601f1916602001820160405280156113df576020820181803683370190505b506021810186905260018101879052828152905060418101600061140286614147565b50905061141181838851614151565b50909695505050505050565b600181565b60096020526000908152604090205460ff1681565b61100181565b6102ca81565b600881565b61200681565b61200081565b604080517710d05390d15317d514905394d1915497d41493d413d4d05360421b8152905190819003601801902081565b60005460ff166114c9576040805162461bcd60e51b81526020600482015260196024820152600080516020614a62833981519152604482015290519081900360640190fd5b6040805163569e4ed360e11b815233600482015290516000916110009163ad3c9da691602480820192602092909190829003018186803b15801561150c57600080fd5b505afa158015611520573d6000803e3d6000fd5b505050506040513d602081101561153657600080fd5b505160408051633d42651560e11b8152905191925060009161100091637a84ca2a916004808301926020929190829003018186803b15801561157757600080fd5b505afa15801561158b573d6000803e3d6000fd5b505050506040513d60208110156115a157600080fd5b50519050806115ae575060155b6000821180156115be5750808211155b6115fd576040805162461bcd60e51b815260206004820152600b60248201526a1b9bdd0818d8589a5b995d60aa1b604482015290519081900360640190fd5b604080516001600160a01b038087166020808401919091529086168284015282518083038401815260608301808552815191909201207710d05390d15317d514905394d1915497d41493d413d4d05360421b909152915190819003607801902060009061166a9083614192565b905080156116dc5760408051630911a2c160e11b81526001600160a01b03888116600483015287166024820152905161100491631223458291604480830192600092919082900301818387803b1580156116c357600080fd5b505af11580156116d7573d6000803e3d6000fd5b505050505b505050505050565b604080516f14d554d411539117d41493d413d4d05360821b8152905190819003601001902081565b600281565b600c602052600090815260409020805460019091015461ffff8216916201000090046001600160801b03169083565b604080516e149153d4115397d41493d413d4d053608a1b8152905190819003600f01902081565b6005602052600090815260409020546001600160a01b031681565b61100581565b601081565b60035481565b61100881565b600b81565b61200381565b60005460ff166117e9576040805162461bcd60e51b81526020600482015260196024820152600080516020614a62833981519152604482015290519081900360640190fd5b60408051630a83aaa960e31b815233600482015290516110069163541d5548916024808301926020929190829003018186803b15801561182857600080fd5b505afa15801561183c573d6000803e3d6000fd5b505050506040513d602081101561185257600080fd5b50516118a5576040805162461bcd60e51b815260206004820152601f60248201527f746865206d73672073656e646572206973206e6f7420612072656c6179657200604482015290519081900360640190fd5b60ff8116600090815260086020526040902054829082906001600160401b039081169083168114611915576040805162461bcd60e51b815260206004820152601560248201527439b2b8bab2b731b2903737ba1034b71037b93232b960591b604482015290519081900360640190fd5b60ff8216600090815260086020908152604091829020805467ffffffffffffffff1916600185016001600160401b039081169190911790915582516337d7f9c160e21b81529089166004820152915188926110039263df5fe70492602480840193829003018186803b15801561198a57600080fd5b505afa15801561199e573d6000803e3d6000fd5b505050506040513d60208110156119b457600080fd5b50516119f15760405162461bcd60e51b8152600401808060200182810382526023815260200180614a826023913960400191505060405180910390fd5b60ff851660009081526005602052604090205485906001600160a01b0316611a5b576040805162461bcd60e51b815260206004820152601860248201527718da185b9b995b081a5cc81b9bdd081cdd5c1c1bdc9d195960421b604482015290519081900360640190fd5b60ff86166000908152600a6020526040902054889087906001600160401b039081169083161015611ac4576040805162461bcd60e51b815260206004820152600e60248201526d3a37b79037b632103432b0b232b960911b604482015290519081900360640190fd5b60ff81166000908152600a60205260409020546001600160401b03838116911614611b165760ff81166000908152600a60205260409020805467ffffffffffffffff19166001600160401b0384161790555b600b5460ff1615611b5a576040805162461bcd60e51b81526020600482015260096024820152681cdd5cdc195b99195960ba1b604482015290519081900360640190fd5b60608e8e8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050905060608d8d8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509050611c9e6110036001600160a01b031663cba510a98e6040518263ffffffff1660e01b815260040180826001600160401b03166001600160401b0316815260200191505060206040518083038186803b158015611c4757600080fd5b505afa158015611c5b573d6000803e3d6000fd5b505050506040513d6020811015611c7157600080fd5b505160408051808201909152600381526269626360e81b6020820152611c978e8e613f84565b8585613fcc565b611ce6576040805162461bcd60e51b815260206004820152601460248201527334b73b30b634b21036b2b935b63290383937b7b360611b604482015290519081900360640190fd5b60408051631bb5062960e31b81526001600160401b038e16600482015290516000916110039163dda8314891602480820192602092909190829003018186803b158015611d3257600080fd5b505afa158015611d46573d6000803e3d6000fd5b505050506040513d6020811015611d5c57600080fd5b505190508b8b600080806060611d7189614477565b935093509350935083611e33578460ff16866001600160401b03167ff7b2e42d694eb1100184aae86d4245d9e46966100b1dc7e723275b98326854ac8b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015611deb578181015183820152602001611dd3565b50505050905090810190601f168015611e185780820380516001836020036101000a031916815260200191505b509250505060405180910390a3505050505050505050612a4e565b6040805160ff85811682529151918716916001600160401b038916917f36afdaf439a8f43fe72135135d804ae620b37a474f0943b5b85f6788312cad40919081900360200190a360ff83166123b85760ff85166000818152600560209081526040808320548151631182b87560e01b815260048101958652602481019283528651604482015286516001600160a01b03909216958695631182b875958d958a9593949093606490910192918601918190849084905b83811015611f00578181015183820152602001611ee8565b50505050905090810190601f168015611f2d5780820380516001836020036101000a031916815260200191505b509350505050600060405180830381600087803b158015611f4d57600080fd5b505af192505050801561203157506040513d6000823e601f3d908101601f191682016040526020811015611f8057600080fd5b8101908080516040519392919084600160201b821115611f9f57600080fd5b908301906020820185811115611fb457600080fd5b8251600160201b811182820188101715611fcd57600080fd5b82525081516020918201929091019080838360005b83811015611ffa578181015183820152602001611fe2565b50505050905090810190601f1680156120275780820380516001836020036101000a031916815260200191505b5060405250505060015b612343576040516000815260443d101561204d575060006120e8565b60046000803e60005160e01c6308c379a0811461206e5760009150506120e8565b60043d036004833e81513d60248201116001600160401b0382111715612099576000925050506120e8565b80830180516001600160401b038111156120ba5760009450505050506120e8565b8060208301013d86018111156120d8576000955050505050506120e8565b601f01601f191660405250925050505b806120f35750612205565b60ff871660009081526007602052604081205461212a916001600160401b0390911690899061212590600290886113a7565b614527565b60ff8716600090815260076020908152604080832080546001600160401b038082166001011667ffffffffffffffff19909116179055805182815284518184015284516001600160a01b038716947ff91a8f63e5b3e0e89e5f93e1915a7805f3c52d9a73b3c09769785c2c7bf87acf948794849390840192918601918190849084905b838110156121c55781810151838201526020016121ad565b50505050905090810190601f1680156121f25780820380516001836020036101000a031916815260200191505b509250505060405180910390a25061233e565b3d80801561222f576040519150601f19603f3d011682016040523d82523d6000602084013e612234565b606091505b5060ff8716600090815260076020526040812054612267916001600160401b0390911690899061212590600290886113a7565b60ff8716600090815260076020908152604080832080546001600160401b038082166001011667ffffffffffffffff19909116179055805182815284518184015284516001600160a01b038716947f63ac299d6332d1cc4e61b81e59bc00c0ac7c798addadf33840f1307cd2977351948794849390840192918601918190849084905b838110156123025781810151838201526020016122ea565b50505050905090810190601f16801561232f5780820380516001836020036101000a031916815260200191505b509250505060405180910390a2505b6123b2565b8051156123b05760ff871660009081526007602052604081205461237c916001600160401b0390911690899061212590600190866113a7565b60ff8716600090815260076020526040902080546001600160401b038082166001011667ffffffffffffffff199091161790555b505b50612986565b60ff83166001141561265c5760ff8516600081815260056020908152604080832054815163831d65d160e01b815260048101958652602481019283528651604482015286516001600160a01b0390921695869563831d65d1958d958a9593949093606490910192918601918190849084905b8381101561244257818101518382015260200161242a565b50505050905090810190601f16801561246f5780820380516001836020036101000a031916815260200191505b509350505050600060405180830381600087803b15801561248f57600080fd5b505af19250505080156124a0575060015b6123b2576040516000815260443d10156124bc57506000612557565b60046000803e60005160e01c6308c379a081146124dd576000915050612557565b60043d036004833e81513d60248201116001600160401b038211171561250857600092505050612557565b80830180516001600160401b03811115612529576000945050505050612557565b8060208301013d860181111561254757600095505050505050612557565b601f01601f191660405250925050505b8061256257506125c7565b60408051602080825283518183015283516001600160a01b038616937ff91a8f63e5b3e0e89e5f93e1915a7805f3c52d9a73b3c09769785c2c7bf87acf93869390928392830191850190808383600083156121c55781810151838201526020016121ad565b3d8080156125f1576040519150601f19603f3d011682016040523d82523d6000602084013e6125f6565b606091505b5060408051602080825283518183015283516001600160a01b038616937f63ac299d6332d1cc4e61b81e59bc00c0ac7c798addadf33840f1307cd297735193869390928392830191850190808383600083156123025781810151838201526020016122ea565b60ff8316600214156129865760ff8516600081815260056020908152604080832054815163c8509d8160e01b815260048101958652602481019283528651604482015286516001600160a01b0390921695869563c8509d81958d958a9593949093606490910192918601918190849084905b838110156126e65781810151838201526020016126ce565b50505050905090810190601f1680156127135780820380516001836020036101000a031916815260200191505b509350505050600060405180830381600087803b15801561273357600080fd5b505af1925050508015612744575060015b612984576040516000815260443d1015612760575060006127fb565b60046000803e60005160e01c6308c379a081146127815760009150506127fb565b60043d036004833e81513d60248201116001600160401b03821117156127ac576000925050506127fb565b80830180516001600160401b038111156127cd5760009450505050506127fb565b8060208301013d86018111156127eb576000955050505050506127fb565b601f01601f191660405250925050505b8061280657506128af565b816001600160a01b03167ff91a8f63e5b3e0e89e5f93e1915a7805f3c52d9a73b3c09769785c2c7bf87acf826040518080602001828103825283818151815260200191508051906020019080838360005b8381101561286f578181015183820152602001612857565b50505050905090810190601f16801561289c5780820380516001836020036101000a031916815260200191505b509250505060405180910390a250612984565b3d8080156128d9576040519150601f19603f3d011682016040523d82523d6000602084013e6128de565b606091505b50816001600160a01b03167f63ac299d6332d1cc4e61b81e59bc00c0ac7c798addadf33840f1307cd2977351826040518080602001828103825283818151815260200191508051906020019080838360005b83811015612948578181015183820152602001612930565b50505050905090810190601f1680156129755780820380516001836020036101000a031916815260200191505b509250505060405180910390a2505b505b60ff80861660009081526009602052604090205461100591636f93d2e6918a913391879116806129b8575060ff881615155b604080516001600160e01b031960e088901b1681526001600160a01b039586166004820152939094166024840152604483019190915215156064820152905160848083019260209291908290030181600087803b158015612a1857600080fd5b505af1158015612a2c573d6000803e3d6000fd5b505050506040513d6020811015612a4257600080fd5b50505050505050505050505b5050505050505050505050505050565b630102ca0081565b600981565b61100781565b61100681565b60005460ff1681565b61200281565b61300081565b3361100714612acc5760405162461bcd60e51b815260040180806020018281038252602e8152602001806149b8602e913960400191505060405180910390fd5b600b5460ff1615612b10576040805162461bcd60e51b81526020600482015260096024820152681cdd5cdc195b99195960ba1b604482015290519081900360640190fd5b612b7984848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080518082019091526012815271626174636853697a65466f724f7261636c6560701b602082015291506146c29050565b15612c1457604080516020601f8401819004810282018101909252828152600091612bbc918585808385018382808284376000920191909152506147a992505050565b90506127108111158015612bd15750600a8110155b612c0c5760405162461bcd60e51b8152600401808060200182810382526032815260200180614a306032913960400191505060405180910390fd5b6001556134be565b612c7d84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601281527118591913dc955c19185d1950da185b9b995b60721b602082015291506146c29050565b15612e0557606082828080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505082519293505060169091149050612d005760405162461bcd60e51b815260040180806020018281038252605a8152602001806148d1605a913960600191505060405180910390fd5b60018101516002820151601683015160ff82161590612d1e816147ae565b612d6f576040805162461bcd60e51b815260206004820152601960248201527f61646472657373206973206e6f74206120636f6e747261637400000000000000604482015290519081900360640190fd5b60ff8416600081815260056020908152604080832080546001600160a01b0319166001600160a01b038716908117909155808452600683528184208585528352818420805460ff199081166001179091556009909352818420805490931687151517909255519092917f7e3b6af43092577ee20e60eaa1d9b114a7031305c895ee7dd3ffe17196d2e1e091a350505050506134be565b612e7284848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080518082019091526016815275195b98589b1953dc911a5cd8589b1950da185b9b995b60521b602082015291506146c29050565b15612fa357606082828080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505082519293505060029091149050612ef55760405162461bcd60e51b815260040180806020018281038252604a8152602001806149e6604a913960600191505060405180910390fd5b600181810151600283015160ff80831660009081526005602052604090205492939192908316909114906001600160a01b03168015612f99576001600160a01b038116600090815260066020908152604080832060ff881680855290835292819020805460ff1916861515908117909155815190815290517fa3132e3f9819fbddc7f0ed6d38d7feef59aa95112090b7c592f5cb5bc4aa4adc929181900390910190a25b50505050506134be565b61300784848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600d81526c73757370656e6451756f72756d60981b602082015291506146c29050565b1561313c576002811461304b5760405162461bcd60e51b815260040180806020018281038252602d81526020018061495f602d913960400191505060405180910390fd5b600061308e600284848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506147a992505050565b905060008161ffff161180156130a8575060648161ffff16105b6130f2576040805162461bcd60e51b8152602060048201526016602482015275696e76616c69642073757370656e642071756f72756d60501b604482015290519081900360640190fd5b604080516f14d554d411539117d41493d413d4d05360821b815281519081900360100190206000908152600d60205220805461ffff90921661ffff199092169190911790556134be565b61319f84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600c81526b72656f70656e51756f72756d60a01b602082015291506146c29050565b156132d257600281146131e35760405162461bcd60e51b815260040180806020018281038252602c81526020018061498c602c913960400191505060405180910390fd5b6000613226600284848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506147a992505050565b905060008161ffff16118015613240575060648161ffff16105b613289576040805162461bcd60e51b8152602060048201526015602482015274696e76616c69642072656f70656e2071756f72756d60581b604482015290519081900360640190fd5b604080516e149153d4115397d41493d413d4d053608a1b8152815190819003600f0190206000908152600d60205220805461ffff90921661ffff199092169190911790556134be565b61333d84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601481527363616e63656c5472616e7366657251756f72756d60601b602082015291506146c29050565b1561348157600281146133815760405162461bcd60e51b815260040180806020018281038252603481526020018061492b6034913960400191505060405180910390fd5b60006133c4600284848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506147a992505050565b905060008161ffff161180156133de575060648161ffff16105b61342f576040805162461bcd60e51b815260206004820152601e60248201527f696e76616c69642063616e63656c207472616e736665722071756f72756d0000604482015290519081900360640190fd5b604080517710d05390d15317d514905394d1915497d41493d413d4d05360421b815281519081900360180190206000908152600d60205220805461ffff90921661ffff199092169190911790556134be565b6040805162461bcd60e51b815260206004820152600d60248201526c756e6b6e6f776e20706172616d60981b604482015290519081900360640190fd5b7f6cdb0ac70ab7f2e2d035cca5be60d89906f2dede7648ddbd7402189c1eeed17a848484846040518080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600083820152604051601f909101601f19169092018290039850909650505050505050a150505050565b6008602052600090815260409020546001600160401b031681565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081565b61100281565b60005460ff166135da576040805162461bcd60e51b81526020600482015260196024820152600080516020614a62833981519152604482015290519081900360640190fd5b6040805163569e4ed360e11b815233600482015290516000916110009163ad3c9da691602480820192602092909190829003018186803b15801561361d57600080fd5b505afa158015613631573d6000803e3d6000fd5b505050506040513d602081101561364757600080fd5b505160408051633d42651560e11b8152905191925060009161100091637a84ca2a916004808301926020929190829003018186803b15801561368857600080fd5b505afa15801561369c573d6000803e3d6000fd5b505050506040513d60208110156136b257600080fd5b50519050806136bf575060155b6000821180156136cf5750808211155b61370e576040805162461bcd60e51b815260206004820152600b60248201526a1b9bdd0818d8589a5b995d60aa1b604482015290519081900360640190fd5b600b5460ff16613755576040805162461bcd60e51b815260206004820152600d60248201526c1b9bdd081cdd5cdc195b991959609a1b604482015290519081900360640190fd5b604080516e149153d4115397d41493d413d4d053608a1b8152905190819003600f0190206000906137a6907fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470614192565b905080156137e457600b805460ff1916905560405133907f899fe8c37dc61708a3aaa99c4bf143346c1d1da69af79be9e8920c0a6785b75290600090a25b505050565b600660209081526000928352604080842090915290825290205460ff1681565b6040518060400160405280600381526020016269626360e81b81525081565b610e1081565b61100381565b61200481565b60005460ff1615613892576040805162461bcd60e51b815260206004820152601960248201527f74686520636f6e747261637420616c726561647920696e697400000000000000604482015290519081900360640190fd5b7f1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b80546001600160a01b0319908116611008179091557f92e85d02570a8092d09a6e3a57665bc3815a2699a4074001bf1ccabf660f5a36805460ff199081169091557fd8af288fc1c8680b4f4706064cf021e264efb6828fcaf7eb5ca36818eb365bcc8054821660019081179091557f89832631fb3c3307a103ba2c84ab569c64d6182a18893dcd163f0f1c2090733a805484166110049081179091557f6cde3cea4b3a3fb2488b2808bae7556f4a405e50f65e1794383bc026131b13c38054841690557f72e4efa1513b071517c6c74dba31b5934a81aa83cddd400e7081df5529c9943680548416831790557fa9bc9a3a348c357ba16b37005d7e6b3236198c0e939f4af8c5f19b8deeb8ebc08054851690911790557fc575c31fea594a6eb97c8e9d3f9caee4c16218c6ef37e923234c0fe9014a61e78054831690557f4e523af77f034e9810f1c94057f5e931fb3d16a51511a4c3add793617d18610580548316821790557ffb33122aa9f93cc639ebe80a7bc4784c11e6053dde89c6f4f7e268c6a623da1e805484166110001790557fc7694af312c4f286114180fd0ba6a52461fcee8a381636770b19a343af92538a80548316821790557f01112dd68e482ba8d68a7e828cff8b3abcea08eab88941953c180a7e650e9cd480548316821790557fc0a4a8be475dfebc377ebef2d7c4ff47656f572a08dd92b81017efcdba0febe1805484166110071790557f87e8a52529e8ece4ef759037313542a6429ff494a9fab9027fb79db90124eba680548316821790557f4c7666bbcb22d46469f7cc282f70764a7012dca2cce630ff8d83db9a9cdd48f080548316821790557f40f28f99a40bc9f6beea1013afdbc3cdcc689eb76b82c4de06c0acf1e1932ed58054909316611001179092557f0d9cf2cd531699eed8dd34e40ff2884a14a698c4898184fba85194e6f6772d248054821683179055600b60009081527f23f68c9bd22b8a93d06adabe17481c87c016bcbd20adc8bfd707a4d813a572176020527fdf0d5d05428057f5455c2dc8e810dd86d1e9350faa72f16bda8a45443c5b39328054831684179055603283556004805467ffffffffffffffff19166001600160401b031790556002819055600381905580549091169091179055565b6007602052600090815260409020546001600160401b031681565b60005460ff16613c51576040805162461bcd60e51b81526020600482015260196024820152600080516020614a62833981519152604482015290519081900360640190fd5b6040805163569e4ed360e11b815233600482015290516000916110009163ad3c9da691602480820192602092909190829003018186803b158015613c9457600080fd5b505afa158015613ca8573d6000803e3d6000fd5b505050506040513d6020811015613cbe57600080fd5b505160408051633d42651560e11b8152905191925060009161100091637a84ca2a916004808301926020929190829003018186803b158015613cff57600080fd5b505afa158015613d13573d6000803e3d6000fd5b505050506040513d6020811015613d2957600080fd5b5051905080613d36575060155b600082118015613d465750808211155b613d85576040805162461bcd60e51b815260206004820152600b60248201526a1b9bdd0818d8589a5b995d60aa1b604482015290519081900360640190fd5b600b5460ff1615613dc9576040805162461bcd60e51b81526020600482015260096024820152681cdd5cdc195b99195960ba1b604482015290519081900360640190fd5b604080516f14d554d411539117d41493d413d4d05360821b81529051908190036010019020600090613e1b907fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470614192565b905080156137e4576137e46140c9565b601181565b60005460ff16613e75576040805162461bcd60e51b81526020600482015260196024820152600080516020614a62833981519152604482015290519081900360640190fd5b33600090815260066020908152604080832060ff8089168552925290912054859116613ed25760405162461bcd60e51b81526004018080602001828103825260318152602001806148a06031913960400191505060405180910390fd5b60ff85166000908152600760209081526040808320548151601f88018490048402810184019092528682526001600160401b031692613f379284928a9261212592909189918c908c90819084018382808284376000920191909152506113a792505050565b60ff959095166000908152600760205260409020805467ffffffffffffffff191660019096016001600160401b03169590951790945550505050565b61100081565b600381565b61100481565b60408051600e808252818301909252606091630102ca0060ff851617918391602082018180368337505050600e81810187905260068201939093529182525090505b92915050565b600085613fdb575060006140c0565b606082518451865160800101016040519080825280601f01601f191660200182016040528015614012576020820181803683370190505b5090506000614020826147b4565b60208089015182520190508660008061403889614147565b8086526020909501949092509050614051828583614151565b9283019261405e88614147565b8086526020909501949092509050614077828583614151565b9283018a81526020019261408a87614147565b909250905061409a828583614151565b5083516020016140a86147ba565b60208183886065600019fa5051600114955050505050505b95945050505050565b600b5460ff161561410d576040805162461bcd60e51b81526020600482015260096024820152681cdd5cdc195b99195960ba1b604482015290519081900360640190fd5b600b805460ff1916600117905560405133907f6f123d3d54c84a7960a573b31c221dcd86e13fd849c5adb0c6ca851468cc1ae490600090a2565b8051602090910191565b5b60208110614171578251825260209283019290910190601f1901614152565b915181516020939093036101000a6000190180199091169216919091179052565b6000828152600d602052604081205461ffff1661425b57604080516f14d554d411539117d41493d413d4d05360821b815281519081900360100181206000908152600d6020818152848320805461ffff199081166001179091556e149153d4115397d41493d413d4d053608a1b8552855194859003600f01852084528282528584208054821660029081179091557710d05390d15317d514905394d1915497d41493d413d4d05360421b8652865195869003601801909520845291905292902080549092161790555b6000838152600c6020526040902080546201000090046001600160801b03164210158061428c575082816001015414155b1561435f576000848152600d602090815260409182902054835461ffff90911661ffff199091161771ffffffffffffffffffffffffffffffff0000191662010000610e1042016001600160801b03160217835560018084018690558251918201909252338152614301916002840191906147d8565b5080546040805161ffff83168152620100009092046001600160801b0316602083015281810185905251339186917f9e109f0e55ef32e99e4880be2ec357f1ddb3469c79d0747ef4762da6e89fabe5916060908290030190a3614413565b60005b60028201548110156143ea57336001600160a01b031682600201828154811061438757fe5b6000918252602090912001546001600160a01b031614156143e2576040805162461bcd60e51b815260206004820152601060248201526f185b1c9958591e48185c1c1c9bdd995960821b604482015290519081900360640190fd5b600101614362565b50600281018054600181018255600091825260209091200180546001600160a01b031916331790555b8054600282015461ffff9091161161446d576000848152600c60205260408120805471ffffffffffffffffffffffffffffffffffff191681556001810182905590614461600283018261483d565b50506001915050613fc6565b5060009392505050565b600080600060606021855110156144a7575050604080516000808252602082019092529092508291508190614520565b600185015160218601518651604080516020198301808252601f19600119909401939093168101602001909152604189019392916060919080156144f2576020820181803683370190505b509050600061450082614147565b509050614512858260218d5103614151565b506001975091955093509150505b9193509193565b600b5460ff161561456b576040805162461bcd60e51b81526020600482015260096024820152681cdd5cdc195b99195960ba1b604482015290519081900360640190fd5b6002544311156145aa576004805467ffffffffffffffff1981166001600160401b036001600793840b810190930b1617909155600355436002556145eb565b600380546001908101918290555410156145eb576004805467ffffffffffffffff1981166001600160401b036001600793840b810190930b16179091556003555b8160ff16836001600160401b0316600460009054906101000a900460070b6001600160401b03167f3a6e0fc61675aa2a100bcba0568368bb92bcec91c97673391074f11138f0cffe6102ca85604051808361ffff1661ffff16815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561468257818101518382015260200161466a565b50505050905090810190601f1680156146af5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a4505050565b6000816040516020018082805190602001908083835b602083106146f75780518252601f1990920191602091820191016146d8565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405280519060200120836040516020018082805190602001908083835b602083106147655780518252601f199092019160209182019101614746565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040528051906020012014905092915050565b015190565b3b151590565b60200190565b60405180602001604052806001906020820280368337509192915050565b82805482825590600052602060002090810192821561482d579160200282015b8281111561482d57825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906147f8565b5061483992915061485e565b5090565b508054600082559060005260206000209081019061485b9190614885565b50565b61488291905b808211156148395780546001600160a01b0319168155600101614864565b90565b61488291905b80821115614839576000815560010161488b56fe74686520636f6e747261637420616e64206368616e6e656c2068617665206e6f74206265656e20726567697374657265646c656e677468206f662076616c756520666f72206164644f725570646174654368616e6e656c2073686f756c642062652032322c206368616e6e656c49643a697346726f6d53797374656d3a68616e646c6572416464726573736c656e677468206f662076616c756520666f722063616e63656c5472616e7366657251756f72756d2073686f756c6420626520326c656e677468206f662076616c756520666f722073757370656e6451756f72756d2073686f756c6420626520326c656e677468206f662076616c756520666f722072656f70656e51756f72756d2073686f756c642062652032746865206d6573736167652073656e646572206d75737420626520676f7665726e616e636520636f6e74726163746c656e677468206f662076616c756520666f7220656e61626c654f7244697361626c654368616e6e656c2073686f756c6420626520322c206368616e6e656c49643a6973456e61626c65746865206e6577426174636853697a65466f724f7261636c652073686f756c6420626520696e205b31302c2031303030305d74686520636f6e7472616374206e6f7420696e697420796574000000000000006c6967687420636c69656e74206e6f742073796e632074686520626c6f636b20796574a164736f6c6343000604000a", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/9d09d0a3d6332460a810188261ec8195e05aa218", + Code: "608060405234801561001057600080fd5b50600436106103e65760003560e01c806374f079b81161020a578063c27cdcfb11610125578063df8079e9116100b8578063f1fad10411610087578063f1fad10414610bac578063f7a251d714610bb4578063f9a2bbc714610c2c578063fc3e590814610c34578063fd6a687914610c3c576103e6565b8063df8079e914610b74578063e1c7392a14610b7c578063e3b0480514610b84578063e6400bbe14610ba4576103e6565b8063d31f968d116100f4578063d31f968d14610b2d578063d76a867514610b5c578063dc40433114610b64578063dc927faf14610b6c576103e6565b8063c27cdcfb14610af5578063c780e9de14610b15578063c81b166214610b1d578063ccc108d714610b25576103e6565b80639dc092621161019d578063aad560631161016c578063aad5606314610a27578063ab51bb9614610a2f578063ac43175114610a37578063b0355f5b146107d6576103e6565b80639dc0926214610a07578063a1a11bf514610a0f578063a78abc1614610a17578063aa82dce114610a1f576103e6565b806384013b6a116101d957806384013b6a1461091c578063863fe4ab146109f75780638cc8f561146108e457806396713da9146109ff576103e6565b806374f079b8146108fc57806375d47a0a146109045780637942fd051461090c5780637e434d5414610914576103e6565b806343756e5c116103055780636a3cb34d116102985780636e47a51a116102675780636e47a51a146108bc5780636e47b482146108dc57806370fd5bad146108e4578063718a8aa8146108ec578063719482d5146108f4576103e6565b80636a3cb34d146108645780636bacff2c1461086c5780636c46aa68146108645780636de380bd146108b4576103e6565b806351e80672116102d457806351e806721461081e5780635692ddd3146108265780635f8321771461082e57806363e1394e1461085c576103e6565b806343756e5c146107fe578063493279b1146108065780634bf6c8821461080e57806351b4dce314610816576103e6565b8063299b533d1161037d5780633a648b151161034c5780633a648b15146106725780633bdc47a6146106ae5780633dffc387146107d6578063422f9050146107de576103e6565b8063299b533d146105f85780632af6f3991461062c5780632ff32aea14610649578063308325f41461066a576103e6565b80631d130935116103b95780631d130935146104685780631e275ae11461048457806322556cdc146105e857806328087028146105f0576103e6565b806305e68258146103eb5780630bee7a67146104095780630e2374a51461042a57806314b3023b1461044e575b600080fd5b6103f3610c44565b6040805160ff9092168252519081900360200190f35b610411610c49565b6040805163ffffffff9092168252519081900360200190f35b610432610c4e565b604080516001600160a01b039092168252519081900360200190f35b610456610c54565b60408051918252519081900360200190f35b610470610c5a565b604080519115158252519081900360200190f35b6105e6600480360361010081101561049b57600080fd5b81018160a081016080820135600160201b8111156104b857600080fd5b8201836020820111156104ca57600080fd5b803590602001918460018302840111600160201b831117156104eb57600080fd5b919390929091602081019035600160201b81111561050857600080fd5b82018360208201111561051a57600080fd5b803590602001918460018302840111600160201b8311171561053b57600080fd5b919390929091602081019035600160201b81111561055857600080fd5b82018360208201111561056a57600080fd5b803590602001918460018302840111600160201b8311171561058b57600080fd5b919390929091602081019035600160201b8111156105a857600080fd5b8201836020820111156105ba57600080fd5b803590602001918460018302840111600160201b831117156105db57600080fd5b509092509050610c63565b005b610456611347565b61043261134c565b6106156004803603602081101561060e57600080fd5b5035611352565b6040805161ffff9092168252519081900360200190f35b6104706004803603602081101561064257600080fd5b5035611368565b61065161137d565b60408051600792830b90920b8252519081900360200190f35b610456611386565b6106926004803603602081101561068857600080fd5b503560ff1661138c565b604080516001600160401b039092168252519081900360200190f35b610761600480360360608110156106c457600080fd5b60ff82351691602081013591810190606081016040820135600160201b8111156106ed57600080fd5b8201836020820111156106ff57600080fd5b803590602001918460018302840111600160201b8311171561072057600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506113a7945050505050565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561079b578181015183820152602001610783565b50505050905090810190601f1680156107c85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103f361141d565b610470600480360360208110156107f457600080fd5b503560ff16611422565b610432611437565b61061561143d565b6103f3611442565b610432611447565b61043261144d565b610456611453565b6105e66004803603604081101561084457600080fd5b506001600160a01b0381358116916020013516611483565b6104566116e3565b61061561170b565b6108896004803603602081101561088257600080fd5b5035611710565b6040805161ffff90941684526001600160801b03909216602084015282820152519081900360600190f35b61045661173f565b610432600480360360208110156108d257600080fd5b503560ff16611766565b610432611781565b6103f361170b565b6103f3611787565b61061561141d565b61045661178c565b610432611792565b6103f3611798565b61043261179d565b6105e6600480360360a081101561093257600080fd5b810190602081018135600160201b81111561094c57600080fd5b82018360208201111561095e57600080fd5b803590602001918460018302840111600160201b8311171561097f57600080fd5b919390929091602081019035600160201b81111561099c57600080fd5b8201836020820111156109ae57600080fd5b803590602001918460018302840111600160201b831117156109cf57600080fd5b919350915080356001600160401b03908116916020810135909116906040013560ff166117a3565b610456612a5d565b6103f3612a65565b610432612a6a565b610432612a70565b610470612a76565b610432612a7f565b610432612a85565b610411610c44565b6105e660048036036040811015610a4d57600080fd5b810190602081018135600160201b811115610a6757600080fd5b820183602082011115610a7957600080fd5b803590602001918460018302840111600160201b83111715610a9a57600080fd5b919390929091602081019035600160201b811115610ab757600080fd5b820183602082011115610ac957600080fd5b803590602001918460018302840111600160201b83111715610aea57600080fd5b509092509050612a8b565b61069260048036036020811015610b0b57600080fd5b503560ff1661354f565b61045661356a565b61043261358e565b6105e6613594565b61047060048036036040811015610b4357600080fd5b5080356001600160a01b0316906020013560ff166137e8565b610761613808565b610456613827565b61043261382d565b610432613833565b6105e6613839565b61069260048036036020811015610b9a57600080fd5b503560ff16613bf0565b6105e6613c0b565b6103f3613e2a565b6105e660048036036060811015610bca57600080fd5b60ff8235169190810190604081016020820135600160201b811115610bee57600080fd5b820183602082011115610c0057600080fd5b803590602001918460018302840111600160201b83111715610c2157600080fd5b919350915035613e2f565b610432613f72565b6103f3613f78565b610432613f7d565b600081565b606481565b61200181565b60015481565b600b5460ff1681565b60005460ff16610ca8576040805162461bcd60e51b81526020600482015260196024820152600080516020614a60833981519152604482015290519081900360640190fd5b604080516337d7f9c160e21b81526001600160401b038b35166004820181905291516110039163df5fe704916024808301926020929190829003018186803b158015610cf357600080fd5b505afa158015610d07573d6000803e3d6000fd5b505050506040513d6020811015610d1d57600080fd5b5051610d5a5760405162461bcd60e51b8152600401808060200182810382526023815260200180614a806023913960400191505060405180910390fd5b604080516337d7f9c160e21b815260208c8101356001600160401b03166004830181905292516110039263df5fe704926024808301939192829003018186803b158015610da657600080fd5b505afa158015610dba573d6000803e3d6000fd5b505050506040513d6020811015610dd057600080fd5b5051610e0d5760405162461bcd60e51b8152600401808060200182810382526023815260200180614a806023913960400191505060405180910390fd5b60608b013560ff81166000908152600560205260409020546001600160401b03909116906001600160a01b0316610e86576040805162461bcd60e51b815260206004820152601860248201527718da185b9b995b081a5cc81b9bdd081cdd5c1c1bdc9d195960421b604482015290519081900360640190fd5b600b5460ff1615610eca576040805162461bcd60e51b81526020600482015260096024820152681cdd5cdc195b99195960ba1b604482015290519081900360640190fd5b8888604051808383808284376040519201829003822094508f93508e9250819050838380828437808301925050509250505060405180910390201415610f46576040805162461bcd60e51b815260206004820152600c60248201526b1cd85b59481c185e5b1bd85960a21b604482015290519081900360640190fd5b60606001600160401b0360408e01358116908e83013516610f678282613f83565b80516020808301919091206000818152600e9092526040909120549194509060ff1615610fd0576040805162461bcd60e51b8152602060048201526012602482015271185b1c9958591e4818da185b1b195b99d95960721b604482015290519081900360640190fd5b6000908152600e60205260408120805460ff191660011790558f8160200201356001600160401b0316905060608f8f8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050905060608c8c8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052506040805163cba510a960e01b81526001600160401b038a16600482015290519596509094611003945063cba510a9935060248083019350602092829003018186803b1580156110c657600080fd5b505afa1580156110da573d6000803e3d6000fd5b505050506040513d60208110156110f057600080fd5b505160408051808201909152600381526269626360e81b602082015290915061111d908290898686613fcb565b611166576040805162461bcd60e51b81526020600482015260156024820152740696e76616c6964206d65726b6c652070726f6f663605c1b604482015290519081900360640190fd5b5050505060008f60016004811061117957fe5b60200201356001600160401b0316905060608d8d8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8f018190048102820181019092528d815293945060609392508d91508c908190840183828082843760009201829052506040805163cba510a960e01b81526001600160401b038a16600482015290519596509094611003945063cba510a9935060248083019350602092829003018186803b15801561124557600080fd5b505afa158015611259573d6000803e3d6000fd5b505050506040513d602081101561126f57600080fd5b505160408051808201909152600381526269626360e81b602082015290915061129c908290898686613fcb565b6112e5576040805162461bcd60e51b8152602060048201526015602482015274696e76616c6964206d65726b6c652070726f6f663160581b604482015290519081900360640190fd5b505050506112f16140c8565b604080516001600160401b038416815260ff83166020820152815133927f039eb91179ffd7d3b6e97f8ea106e748e827f910b872375dbc9c14a362319c3c928290030190a2505050505050505050505050505050565b603281565b61200581565b600d6020526000908152604090205461ffff1681565b600e6020526000908152604090205460ff1681565b60045460070b81565b60025481565b600a602052600090815260409020546001600160401b031681565b60606000825160210190506060816040519080825280601f01601f1916602001820160405280156113df576020820181803683370190505b506021810186905260018101879052828152905060418101600061140286614146565b50905061141181838851614150565b50909695505050505050565b600181565b60096020526000908152604090205460ff1681565b61100181565b606181565b600881565b61200681565b61200081565b604080517710d05390d15317d514905394d1915497d41493d413d4d05360421b8152905190819003601801902081565b60005460ff166114c8576040805162461bcd60e51b81526020600482015260196024820152600080516020614a60833981519152604482015290519081900360640190fd5b6040805163569e4ed360e11b815233600482015290516000916110009163ad3c9da691602480820192602092909190829003018186803b15801561150b57600080fd5b505afa15801561151f573d6000803e3d6000fd5b505050506040513d602081101561153557600080fd5b505160408051633d42651560e11b8152905191925060009161100091637a84ca2a916004808301926020929190829003018186803b15801561157657600080fd5b505afa15801561158a573d6000803e3d6000fd5b505050506040513d60208110156115a057600080fd5b50519050806115ad575060155b6000821180156115bd5750808211155b6115fc576040805162461bcd60e51b815260206004820152600b60248201526a1b9bdd0818d8589a5b995d60aa1b604482015290519081900360640190fd5b604080516001600160a01b038087166020808401919091529086168284015282518083038401815260608301808552815191909201207710d05390d15317d514905394d1915497d41493d413d4d05360421b90915291519081900360780190206000906116699083614191565b905080156116db5760408051630911a2c160e11b81526001600160a01b03888116600483015287166024820152905161100491631223458291604480830192600092919082900301818387803b1580156116c257600080fd5b505af11580156116d6573d6000803e3d6000fd5b505050505b505050505050565b604080516f14d554d411539117d41493d413d4d05360821b8152905190819003601001902081565b600281565b600c602052600090815260409020805460019091015461ffff8216916201000090046001600160801b03169083565b604080516e149153d4115397d41493d413d4d053608a1b8152905190819003600f01902081565b6005602052600090815260409020546001600160a01b031681565b61100581565b601081565b60035481565b61100881565b600b81565b61200381565b60005460ff166117e8576040805162461bcd60e51b81526020600482015260196024820152600080516020614a60833981519152604482015290519081900360640190fd5b60408051630a83aaa960e31b815233600482015290516110069163541d5548916024808301926020929190829003018186803b15801561182757600080fd5b505afa15801561183b573d6000803e3d6000fd5b505050506040513d602081101561185157600080fd5b50516118a4576040805162461bcd60e51b815260206004820152601f60248201527f746865206d73672073656e646572206973206e6f7420612072656c6179657200604482015290519081900360640190fd5b60ff8116600090815260086020526040902054829082906001600160401b039081169083168114611914576040805162461bcd60e51b815260206004820152601560248201527439b2b8bab2b731b2903737ba1034b71037b93232b960591b604482015290519081900360640190fd5b60ff8216600090815260086020908152604091829020805467ffffffffffffffff1916600185016001600160401b039081169190911790915582516337d7f9c160e21b81529089166004820152915188926110039263df5fe70492602480840193829003018186803b15801561198957600080fd5b505afa15801561199d573d6000803e3d6000fd5b505050506040513d60208110156119b357600080fd5b50516119f05760405162461bcd60e51b8152600401808060200182810382526023815260200180614a806023913960400191505060405180910390fd5b60ff851660009081526005602052604090205485906001600160a01b0316611a5a576040805162461bcd60e51b815260206004820152601860248201527718da185b9b995b081a5cc81b9bdd081cdd5c1c1bdc9d195960421b604482015290519081900360640190fd5b60ff86166000908152600a6020526040902054889087906001600160401b039081169083161015611ac3576040805162461bcd60e51b815260206004820152600e60248201526d3a37b79037b632103432b0b232b960911b604482015290519081900360640190fd5b60ff81166000908152600a60205260409020546001600160401b03838116911614611b155760ff81166000908152600a60205260409020805467ffffffffffffffff19166001600160401b0384161790555b600b5460ff1615611b59576040805162461bcd60e51b81526020600482015260096024820152681cdd5cdc195b99195960ba1b604482015290519081900360640190fd5b60608e8e8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050905060608d8d8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509050611c9d6110036001600160a01b031663cba510a98e6040518263ffffffff1660e01b815260040180826001600160401b03166001600160401b0316815260200191505060206040518083038186803b158015611c4657600080fd5b505afa158015611c5a573d6000803e3d6000fd5b505050506040513d6020811015611c7057600080fd5b505160408051808201909152600381526269626360e81b6020820152611c968e8e613f83565b8585613fcb565b611ce5576040805162461bcd60e51b815260206004820152601460248201527334b73b30b634b21036b2b935b63290383937b7b360611b604482015290519081900360640190fd5b60408051631bb5062960e31b81526001600160401b038e16600482015290516000916110039163dda8314891602480820192602092909190829003018186803b158015611d3157600080fd5b505afa158015611d45573d6000803e3d6000fd5b505050506040513d6020811015611d5b57600080fd5b505190508b8b600080806060611d7089614476565b935093509350935083611e32578460ff16866001600160401b03167ff7b2e42d694eb1100184aae86d4245d9e46966100b1dc7e723275b98326854ac8b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015611dea578181015183820152602001611dd2565b50505050905090810190601f168015611e175780820380516001836020036101000a031916815260200191505b509250505060405180910390a3505050505050505050612a4d565b6040805160ff85811682529151918716916001600160401b038916917f36afdaf439a8f43fe72135135d804ae620b37a474f0943b5b85f6788312cad40919081900360200190a360ff83166123b75760ff85166000818152600560209081526040808320548151631182b87560e01b815260048101958652602481019283528651604482015286516001600160a01b03909216958695631182b875958d958a9593949093606490910192918601918190849084905b83811015611eff578181015183820152602001611ee7565b50505050905090810190601f168015611f2c5780820380516001836020036101000a031916815260200191505b509350505050600060405180830381600087803b158015611f4c57600080fd5b505af192505050801561203057506040513d6000823e601f3d908101601f191682016040526020811015611f7f57600080fd5b8101908080516040519392919084600160201b821115611f9e57600080fd5b908301906020820185811115611fb357600080fd5b8251600160201b811182820188101715611fcc57600080fd5b82525081516020918201929091019080838360005b83811015611ff9578181015183820152602001611fe1565b50505050905090810190601f1680156120265780820380516001836020036101000a031916815260200191505b5060405250505060015b612342576040516000815260443d101561204c575060006120e7565b60046000803e60005160e01c6308c379a0811461206d5760009150506120e7565b60043d036004833e81513d60248201116001600160401b0382111715612098576000925050506120e7565b80830180516001600160401b038111156120b95760009450505050506120e7565b8060208301013d86018111156120d7576000955050505050506120e7565b601f01601f191660405250925050505b806120f25750612204565b60ff8716600090815260076020526040812054612129916001600160401b0390911690899061212490600290886113a7565b614526565b60ff8716600090815260076020908152604080832080546001600160401b038082166001011667ffffffffffffffff19909116179055805182815284518184015284516001600160a01b038716947ff91a8f63e5b3e0e89e5f93e1915a7805f3c52d9a73b3c09769785c2c7bf87acf948794849390840192918601918190849084905b838110156121c45781810151838201526020016121ac565b50505050905090810190601f1680156121f15780820380516001836020036101000a031916815260200191505b509250505060405180910390a25061233d565b3d80801561222e576040519150601f19603f3d011682016040523d82523d6000602084013e612233565b606091505b5060ff8716600090815260076020526040812054612266916001600160401b0390911690899061212490600290886113a7565b60ff8716600090815260076020908152604080832080546001600160401b038082166001011667ffffffffffffffff19909116179055805182815284518184015284516001600160a01b038716947f63ac299d6332d1cc4e61b81e59bc00c0ac7c798addadf33840f1307cd2977351948794849390840192918601918190849084905b838110156123015781810151838201526020016122e9565b50505050905090810190601f16801561232e5780820380516001836020036101000a031916815260200191505b509250505060405180910390a2505b6123b1565b8051156123af5760ff871660009081526007602052604081205461237b916001600160401b0390911690899061212490600190866113a7565b60ff8716600090815260076020526040902080546001600160401b038082166001011667ffffffffffffffff199091161790555b505b50612985565b60ff83166001141561265b5760ff8516600081815260056020908152604080832054815163831d65d160e01b815260048101958652602481019283528651604482015286516001600160a01b0390921695869563831d65d1958d958a9593949093606490910192918601918190849084905b83811015612441578181015183820152602001612429565b50505050905090810190601f16801561246e5780820380516001836020036101000a031916815260200191505b509350505050600060405180830381600087803b15801561248e57600080fd5b505af192505050801561249f575060015b6123b1576040516000815260443d10156124bb57506000612556565b60046000803e60005160e01c6308c379a081146124dc576000915050612556565b60043d036004833e81513d60248201116001600160401b038211171561250757600092505050612556565b80830180516001600160401b03811115612528576000945050505050612556565b8060208301013d860181111561254657600095505050505050612556565b601f01601f191660405250925050505b8061256157506125c6565b60408051602080825283518183015283516001600160a01b038616937ff91a8f63e5b3e0e89e5f93e1915a7805f3c52d9a73b3c09769785c2c7bf87acf93869390928392830191850190808383600083156121c45781810151838201526020016121ac565b3d8080156125f0576040519150601f19603f3d011682016040523d82523d6000602084013e6125f5565b606091505b5060408051602080825283518183015283516001600160a01b038616937f63ac299d6332d1cc4e61b81e59bc00c0ac7c798addadf33840f1307cd297735193869390928392830191850190808383600083156123015781810151838201526020016122e9565b60ff8316600214156129855760ff8516600081815260056020908152604080832054815163c8509d8160e01b815260048101958652602481019283528651604482015286516001600160a01b0390921695869563c8509d81958d958a9593949093606490910192918601918190849084905b838110156126e55781810151838201526020016126cd565b50505050905090810190601f1680156127125780820380516001836020036101000a031916815260200191505b509350505050600060405180830381600087803b15801561273257600080fd5b505af1925050508015612743575060015b612983576040516000815260443d101561275f575060006127fa565b60046000803e60005160e01c6308c379a081146127805760009150506127fa565b60043d036004833e81513d60248201116001600160401b03821117156127ab576000925050506127fa565b80830180516001600160401b038111156127cc5760009450505050506127fa565b8060208301013d86018111156127ea576000955050505050506127fa565b601f01601f191660405250925050505b8061280557506128ae565b816001600160a01b03167ff91a8f63e5b3e0e89e5f93e1915a7805f3c52d9a73b3c09769785c2c7bf87acf826040518080602001828103825283818151815260200191508051906020019080838360005b8381101561286e578181015183820152602001612856565b50505050905090810190601f16801561289b5780820380516001836020036101000a031916815260200191505b509250505060405180910390a250612983565b3d8080156128d8576040519150601f19603f3d011682016040523d82523d6000602084013e6128dd565b606091505b50816001600160a01b03167f63ac299d6332d1cc4e61b81e59bc00c0ac7c798addadf33840f1307cd2977351826040518080602001828103825283818151815260200191508051906020019080838360005b8381101561294757818101518382015260200161292f565b50505050905090810190601f1680156129745780820380516001836020036101000a031916815260200191505b509250505060405180910390a2505b505b60ff80861660009081526009602052604090205461100591636f93d2e6918a913391879116806129b7575060ff881615155b604080516001600160e01b031960e088901b1681526001600160a01b039586166004820152939094166024840152604483019190915215156064820152905160848083019260209291908290030181600087803b158015612a1757600080fd5b505af1158015612a2b573d6000803e3d6000fd5b505050506040513d6020811015612a4157600080fd5b50505050505050505050505b5050505050505050505050505050565b630100610081565b600981565b61100781565b61100681565b60005460ff1681565b61200281565b61300081565b3361100714612acb5760405162461bcd60e51b815260040180806020018281038252602e8152602001806149b6602e913960400191505060405180910390fd5b600b5460ff1615612b0f576040805162461bcd60e51b81526020600482015260096024820152681cdd5cdc195b99195960ba1b604482015290519081900360640190fd5b612b7884848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080518082019091526012815271626174636853697a65466f724f7261636c6560701b602082015291506146c09050565b15612c1357604080516020601f8401819004810282018101909252828152600091612bbb918585808385018382808284376000920191909152506147a792505050565b90506127108111158015612bd05750600a8110155b612c0b5760405162461bcd60e51b8152600401808060200182810382526032815260200180614a2e6032913960400191505060405180910390fd5b6001556134bd565b612c7c84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601281527118591913dc955c19185d1950da185b9b995b60721b602082015291506146c09050565b15612e0457606082828080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505082519293505060169091149050612cff5760405162461bcd60e51b815260040180806020018281038252605a8152602001806148cf605a913960600191505060405180910390fd5b60018101516002820151601683015160ff82161590612d1d816147ac565b612d6e576040805162461bcd60e51b815260206004820152601960248201527f61646472657373206973206e6f74206120636f6e747261637400000000000000604482015290519081900360640190fd5b60ff8416600081815260056020908152604080832080546001600160a01b0319166001600160a01b038716908117909155808452600683528184208585528352818420805460ff199081166001179091556009909352818420805490931687151517909255519092917f7e3b6af43092577ee20e60eaa1d9b114a7031305c895ee7dd3ffe17196d2e1e091a350505050506134bd565b612e7184848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080518082019091526016815275195b98589b1953dc911a5cd8589b1950da185b9b995b60521b602082015291506146c09050565b15612fa257606082828080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505082519293505060029091149050612ef45760405162461bcd60e51b815260040180806020018281038252604a8152602001806149e4604a913960600191505060405180910390fd5b600181810151600283015160ff80831660009081526005602052604090205492939192908316909114906001600160a01b03168015612f98576001600160a01b038116600090815260066020908152604080832060ff881680855290835292819020805460ff1916861515908117909155815190815290517fa3132e3f9819fbddc7f0ed6d38d7feef59aa95112090b7c592f5cb5bc4aa4adc929181900390910190a25b50505050506134bd565b61300684848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600d81526c73757370656e6451756f72756d60981b602082015291506146c09050565b1561313b576002811461304a5760405162461bcd60e51b815260040180806020018281038252602d81526020018061495d602d913960400191505060405180910390fd5b600061308d600284848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506147a792505050565b905060008161ffff161180156130a7575060648161ffff16105b6130f1576040805162461bcd60e51b8152602060048201526016602482015275696e76616c69642073757370656e642071756f72756d60501b604482015290519081900360640190fd5b604080516f14d554d411539117d41493d413d4d05360821b815281519081900360100190206000908152600d60205220805461ffff90921661ffff199092169190911790556134bd565b61319e84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600c81526b72656f70656e51756f72756d60a01b602082015291506146c09050565b156132d157600281146131e25760405162461bcd60e51b815260040180806020018281038252602c81526020018061498a602c913960400191505060405180910390fd5b6000613225600284848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506147a792505050565b905060008161ffff1611801561323f575060648161ffff16105b613288576040805162461bcd60e51b8152602060048201526015602482015274696e76616c69642072656f70656e2071756f72756d60581b604482015290519081900360640190fd5b604080516e149153d4115397d41493d413d4d053608a1b8152815190819003600f0190206000908152600d60205220805461ffff90921661ffff199092169190911790556134bd565b61333c84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601481527363616e63656c5472616e7366657251756f72756d60601b602082015291506146c09050565b1561348057600281146133805760405162461bcd60e51b81526004018080602001828103825260348152602001806149296034913960400191505060405180910390fd5b60006133c3600284848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506147a792505050565b905060008161ffff161180156133dd575060648161ffff16105b61342e576040805162461bcd60e51b815260206004820152601e60248201527f696e76616c69642063616e63656c207472616e736665722071756f72756d0000604482015290519081900360640190fd5b604080517710d05390d15317d514905394d1915497d41493d413d4d05360421b815281519081900360180190206000908152600d60205220805461ffff90921661ffff199092169190911790556134bd565b6040805162461bcd60e51b815260206004820152600d60248201526c756e6b6e6f776e20706172616d60981b604482015290519081900360640190fd5b7f6cdb0ac70ab7f2e2d035cca5be60d89906f2dede7648ddbd7402189c1eeed17a848484846040518080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600083820152604051601f909101601f19169092018290039850909650505050505050a150505050565b6008602052600090815260409020546001600160401b031681565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081565b61100281565b60005460ff166135d9576040805162461bcd60e51b81526020600482015260196024820152600080516020614a60833981519152604482015290519081900360640190fd5b6040805163569e4ed360e11b815233600482015290516000916110009163ad3c9da691602480820192602092909190829003018186803b15801561361c57600080fd5b505afa158015613630573d6000803e3d6000fd5b505050506040513d602081101561364657600080fd5b505160408051633d42651560e11b8152905191925060009161100091637a84ca2a916004808301926020929190829003018186803b15801561368757600080fd5b505afa15801561369b573d6000803e3d6000fd5b505050506040513d60208110156136b157600080fd5b50519050806136be575060155b6000821180156136ce5750808211155b61370d576040805162461bcd60e51b815260206004820152600b60248201526a1b9bdd0818d8589a5b995d60aa1b604482015290519081900360640190fd5b600b5460ff16613754576040805162461bcd60e51b815260206004820152600d60248201526c1b9bdd081cdd5cdc195b991959609a1b604482015290519081900360640190fd5b604080516e149153d4115397d41493d413d4d053608a1b8152905190819003600f0190206000906137a5907fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470614191565b905080156137e357600b805460ff1916905560405133907f899fe8c37dc61708a3aaa99c4bf143346c1d1da69af79be9e8920c0a6785b75290600090a25b505050565b600660209081526000928352604080842090915290825290205460ff1681565b6040518060400160405280600381526020016269626360e81b81525081565b610e1081565b61100381565b61200481565b60005460ff1615613891576040805162461bcd60e51b815260206004820152601960248201527f74686520636f6e747261637420616c726561647920696e697400000000000000604482015290519081900360640190fd5b7f1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b80546001600160a01b0319908116611008179091557f92e85d02570a8092d09a6e3a57665bc3815a2699a4074001bf1ccabf660f5a36805460ff199081169091557fd8af288fc1c8680b4f4706064cf021e264efb6828fcaf7eb5ca36818eb365bcc8054821660019081179091557f89832631fb3c3307a103ba2c84ab569c64d6182a18893dcd163f0f1c2090733a805484166110049081179091557f6cde3cea4b3a3fb2488b2808bae7556f4a405e50f65e1794383bc026131b13c38054841690557f72e4efa1513b071517c6c74dba31b5934a81aa83cddd400e7081df5529c9943680548416831790557fa9bc9a3a348c357ba16b37005d7e6b3236198c0e939f4af8c5f19b8deeb8ebc08054851690911790557fc575c31fea594a6eb97c8e9d3f9caee4c16218c6ef37e923234c0fe9014a61e78054831690557f4e523af77f034e9810f1c94057f5e931fb3d16a51511a4c3add793617d18610580548316821790557ffb33122aa9f93cc639ebe80a7bc4784c11e6053dde89c6f4f7e268c6a623da1e805484166110001790557fc7694af312c4f286114180fd0ba6a52461fcee8a381636770b19a343af92538a80548316821790557f01112dd68e482ba8d68a7e828cff8b3abcea08eab88941953c180a7e650e9cd480548316821790557fc0a4a8be475dfebc377ebef2d7c4ff47656f572a08dd92b81017efcdba0febe1805484166110071790557f87e8a52529e8ece4ef759037313542a6429ff494a9fab9027fb79db90124eba680548316821790557f4c7666bbcb22d46469f7cc282f70764a7012dca2cce630ff8d83db9a9cdd48f080548316821790557f40f28f99a40bc9f6beea1013afdbc3cdcc689eb76b82c4de06c0acf1e1932ed58054909316611001179092557f0d9cf2cd531699eed8dd34e40ff2884a14a698c4898184fba85194e6f6772d248054821683179055600b60009081527f23f68c9bd22b8a93d06adabe17481c87c016bcbd20adc8bfd707a4d813a572176020527fdf0d5d05428057f5455c2dc8e810dd86d1e9350faa72f16bda8a45443c5b39328054831684179055603283556004805467ffffffffffffffff19166001600160401b031790556002819055600381905580549091169091179055565b6007602052600090815260409020546001600160401b031681565b60005460ff16613c50576040805162461bcd60e51b81526020600482015260196024820152600080516020614a60833981519152604482015290519081900360640190fd5b6040805163569e4ed360e11b815233600482015290516000916110009163ad3c9da691602480820192602092909190829003018186803b158015613c9357600080fd5b505afa158015613ca7573d6000803e3d6000fd5b505050506040513d6020811015613cbd57600080fd5b505160408051633d42651560e11b8152905191925060009161100091637a84ca2a916004808301926020929190829003018186803b158015613cfe57600080fd5b505afa158015613d12573d6000803e3d6000fd5b505050506040513d6020811015613d2857600080fd5b5051905080613d35575060155b600082118015613d455750808211155b613d84576040805162461bcd60e51b815260206004820152600b60248201526a1b9bdd0818d8589a5b995d60aa1b604482015290519081900360640190fd5b600b5460ff1615613dc8576040805162461bcd60e51b81526020600482015260096024820152681cdd5cdc195b99195960ba1b604482015290519081900360640190fd5b604080516f14d554d411539117d41493d413d4d05360821b81529051908190036010019020600090613e1a907fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470614191565b905080156137e3576137e36140c8565b601181565b60005460ff16613e74576040805162461bcd60e51b81526020600482015260196024820152600080516020614a60833981519152604482015290519081900360640190fd5b33600090815260066020908152604080832060ff8089168552925290912054859116613ed15760405162461bcd60e51b815260040180806020018281038252603181526020018061489e6031913960400191505060405180910390fd5b60ff85166000908152600760209081526040808320548151601f88018490048402810184019092528682526001600160401b031692613f369284928a9261212492909189918c908c90819084018382808284376000920191909152506113a792505050565b60ff959095166000908152600760205260409020805467ffffffffffffffff191660019096016001600160401b03169590951790945550505050565b61100081565b600381565b61100481565b60408051600e808252818301909252606091630100610060ff851617918391602082018180368337505050600e81810187905260068201939093529182525090505b92915050565b600085613fda575060006140bf565b606082518451865160800101016040519080825280601f01601f191660200182016040528015614011576020820181803683370190505b509050600061401f826147b2565b60208089015182520190508660008061403789614146565b8086526020909501949092509050614050828583614150565b9283019261405d88614146565b8086526020909501949092509050614076828583614150565b9283018a81526020019261408987614146565b9092509050614099828583614150565b5083516020016140a76147b8565b60208183886065600019fa5051600114955050505050505b95945050505050565b600b5460ff161561410c576040805162461bcd60e51b81526020600482015260096024820152681cdd5cdc195b99195960ba1b604482015290519081900360640190fd5b600b805460ff1916600117905560405133907f6f123d3d54c84a7960a573b31c221dcd86e13fd849c5adb0c6ca851468cc1ae490600090a2565b8051602090910191565b5b60208110614170578251825260209283019290910190601f1901614151565b915181516020939093036101000a6000190180199091169216919091179052565b6000828152600d602052604081205461ffff1661425a57604080516f14d554d411539117d41493d413d4d05360821b815281519081900360100181206000908152600d6020818152848320805461ffff199081166001179091556e149153d4115397d41493d413d4d053608a1b8552855194859003600f01852084528282528584208054821660029081179091557710d05390d15317d514905394d1915497d41493d413d4d05360421b8652865195869003601801909520845291905292902080549092161790555b6000838152600c6020526040902080546201000090046001600160801b03164210158061428b575082816001015414155b1561435e576000848152600d602090815260409182902054835461ffff90911661ffff199091161771ffffffffffffffffffffffffffffffff0000191662010000610e1042016001600160801b03160217835560018084018690558251918201909252338152614300916002840191906147d6565b5080546040805161ffff83168152620100009092046001600160801b0316602083015281810185905251339186917f9e109f0e55ef32e99e4880be2ec357f1ddb3469c79d0747ef4762da6e89fabe5916060908290030190a3614412565b60005b60028201548110156143e957336001600160a01b031682600201828154811061438657fe5b6000918252602090912001546001600160a01b031614156143e1576040805162461bcd60e51b815260206004820152601060248201526f185b1c9958591e48185c1c1c9bdd995960821b604482015290519081900360640190fd5b600101614361565b50600281018054600181018255600091825260209091200180546001600160a01b031916331790555b8054600282015461ffff9091161161446c576000848152600c60205260408120805471ffffffffffffffffffffffffffffffffffff191681556001810182905590614460600283018261483b565b50506001915050613fc5565b5060009392505050565b600080600060606021855110156144a657505060408051600080825260208201909252909250829150819061451f565b600185015160218601518651604080516020198301808252601f19600119909401939093168101602001909152604189019392916060919080156144f1576020820181803683370190505b50905060006144ff82614146565b509050614511858260218d5103614150565b506001975091955093509150505b9193509193565b600b5460ff161561456a576040805162461bcd60e51b81526020600482015260096024820152681cdd5cdc195b99195960ba1b604482015290519081900360640190fd5b6002544311156145a9576004805467ffffffffffffffff1981166001600160401b036001600793840b810190930b1617909155600355436002556145ea565b600380546001908101918290555410156145ea576004805467ffffffffffffffff1981166001600160401b036001600793840b810190930b16179091556003555b8160ff16836001600160401b0316600460009054906101000a900460070b6001600160401b03167f3a6e0fc61675aa2a100bcba0568368bb92bcec91c97673391074f11138f0cffe606185604051808361ffff1661ffff16815260200180602001828103825283818151815260200191508051906020019080838360005b83811015614680578181015183820152602001614668565b50505050905090810190601f1680156146ad5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a4505050565b6000816040516020018082805190602001908083835b602083106146f55780518252601f1990920191602091820191016146d6565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405280519060200120836040516020018082805190602001908083835b602083106147635780518252601f199092019160209182019101614744565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040528051906020012014905092915050565b015190565b3b151590565b60200190565b60405180602001604052806001906020820280368337509192915050565b82805482825590600052602060002090810192821561482b579160200282015b8281111561482b57825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906147f6565b5061483792915061485c565b5090565b50805460008255906000526020600020908101906148599190614883565b50565b61488091905b808211156148375780546001600160a01b0319168155600101614862565b90565b61488091905b80821115614837576000815560010161488956fe74686520636f6e747261637420616e64206368616e6e656c2068617665206e6f74206265656e20726567697374657265646c656e677468206f662076616c756520666f72206164644f725570646174654368616e6e656c2073686f756c642062652032322c206368616e6e656c49643a697346726f6d53797374656d3a68616e646c6572416464726573736c656e677468206f662076616c756520666f722063616e63656c5472616e7366657251756f72756d2073686f756c6420626520326c656e677468206f662076616c756520666f722073757370656e6451756f72756d2073686f756c6420626520326c656e677468206f662076616c756520666f722072656f70656e51756f72756d2073686f756c642062652032746865206d6573736167652073656e646572206d75737420626520676f7665726e616e636520636f6e74726163746c656e677468206f662076616c756520666f7220656e61626c654f7244697361626c654368616e6e656c2073686f756c6420626520322c206368616e6e656c49643a6973456e61626c65746865206e6577426174636853697a65466f724f7261636c652073686f756c6420626520696e205b31302c2031303030305d74686520636f6e7472616374206e6f7420696e697420796574000000000000006c6967687420636c69656e74206e6f742073796e632074686520626c6f636b20796574a164736f6c6343000604000a", }, { ContractAddr: common.HexToAddress(StakingContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/cfc0bd1127186a917ddc38fd38d22903034d3f0b", - Code: "6080604052600436106103a65760003560e01c8063718a8aa8116101e7578063b88a802f1161010d578063dc927faf116100a0578063f9a2bbc71161006f578063f9a2bbc714610ca0578063fa03f79714610cb5578063fc3e590814610692578063fd6a687914610cca576103ad565b8063dc927faf14610c1c578063df8079e914610c31578063edc1a5b014610c46578063f45fd80b14610c5b576103ad565b8063c81b1662116100dc578063c81b166214610b47578063c8509d8114610b5c578063d61b9b9314610be1578063d7ecfcb61461083a576103ad565b8063b88a802f14610acd578063baaafd3b14610ae2578063bf8546ca14610af7578063c2117d8214610b32576103ad565b80639dc0926211610185578063aad5606311610154578063aad56063146109c3578063ab51bb96146109d8578063ac431751146109ed578063b14315df14610ab8576103ad565b80639dc092621461095b578063a1a11bf514610970578063a78abc1614610985578063aa82dce1146109ae576103ad565b80637942fd05116101c15780637942fd05146108ac578063831d65d1146108c157806392b888a41461063e57806396713da914610946576103ad565b8063718a8aa81461084f57806375aca5931461086457806375d47a0a14610897576103ad565b8063413d9c3a116102cc5780635d17c8bd1161026a5780636bd8f804116102395780636bd8f804146107bc5780636e47b482146107f25780636fb7f7eb1461080757806370fd5bad1461083a576103ad565b80635d17c8bd146107685780635d499b1b1461077d57806362b171d21461079257806369b635b6146107a7576103ad565b80634bf6c882116102a65780634bf6c882146106fd5780634d99dd161461071257806351e806721461073e578063552aaf9314610753576103ad565b8063413d9c3a146106a757806343756e5c146106bc578063493279b1146106d1576103ad565b806311fe9ec611610344578063333ad3e711610313578063333ad3e71461066857806334c433541461067d5780633dffc3871461063e5780633fdfa7e414610692576103ad565b806311fe9ec6146105e0578063151817e31461061357806317c9efb01461063e5780632fdeb11114610653576103ad565b80630bee7a67116103805780630bee7a67146104725780630c795715146104a05780630e2374a5146104b55780631182b875146104e6576103ad565b8063026e402b146103b257806302985992146103e0578063047636d114610407576103ad565b366103ad57005b600080fd5b6103de600480360360408110156103c857600080fd5b506001600160a01b038135169060200135610cdf565b005b3480156103ec57600080fd5b506103f5610d1c565b60408051918252519081900360200190f35b34801561041357600080fd5b5061043a6004803603602081101561042a57600080fd5b50356001600160a01b0316610d22565b6040518082606080838360005b8381101561045f578181015183820152602001610447565b5050505090500191505060405180910390f35b34801561047e57600080fd5b50610487610d76565b6040805163ffffffff9092168252519081900360200190f35b3480156104ac57600080fd5b506103f5610d7b565b3480156104c157600080fd5b506104ca610d81565b604080516001600160a01b039092168252519081900360200190f35b3480156104f257600080fd5b5061056b6004803603604081101561050957600080fd5b60ff8235169190810190604081016020820135600160201b81111561052d57600080fd5b82018360208201111561053f57600080fd5b803590602001918460018302840111600160201b8311171561056057600080fd5b509092509050610d87565b6040805160208082528351818301528351919283929083019185019080838360005b838110156105a557818101518382015260200161058d565b50505050905090810190601f1680156105d25780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156105ec57600080fd5b506103f56004803603602081101561060357600080fd5b50356001600160a01b0316610f43565b34801561061f57600080fd5b50610628610f5e565b6040805160ff9092168252519081900360200190f35b34801561064a57600080fd5b50610628610f63565b34801561065f57600080fd5b506103f5610f68565b34801561067457600080fd5b50610487610f6e565b34801561068957600080fd5b506103f5610f73565b34801561069e57600080fd5b50610628610f7e565b3480156106b357600080fd5b506103f5610f83565b3480156106c857600080fd5b506104ca610f8a565b3480156106dd57600080fd5b506106e6610f90565b6040805161ffff9092168252519081900360200190f35b34801561070957600080fd5b50610628610f96565b6103de6004803603604081101561072857600080fd5b506001600160a01b038135169060200135610f9b565b34801561074a57600080fd5b506104ca6115c8565b34801561075f57600080fd5b506106286115ce565b34801561077457600080fd5b506103f56115d3565b34801561078957600080fd5b506103f56115d9565b34801561079e57600080fd5b506103f56115e2565b3480156107b357600080fd5b506103f5611782565b6103de600480360360608110156107d257600080fd5b506001600160a01b03813581169160208101359091169060400135610cdf565b3480156107fe57600080fd5b506104ca611788565b34801561081357600080fd5b506103f56004803603602081101561082a57600080fd5b50356001600160a01b031661178e565b34801561084657600080fd5b506106286117a9565b34801561085b57600080fd5b506106286117ae565b34801561087057600080fd5b506103f56004803603602081101561088757600080fd5b50356001600160a01b03166117b3565b3480156108a357600080fd5b506104ca6117ce565b3480156108b857600080fd5b506106286117d4565b3480156108cd57600080fd5b506103de600480360360408110156108e457600080fd5b60ff8235169190810190604081016020820135600160201b81111561090857600080fd5b82018360208201111561091a57600080fd5b803590602001918460018302840111600160201b8311171561093b57600080fd5b5090925090506117d9565b34801561095257600080fd5b50610628611aa1565b34801561096757600080fd5b506104ca611aa6565b34801561097c57600080fd5b506104ca611aac565b34801561099157600080fd5b5061099a611ab2565b604080519115158252519081900360200190f35b3480156109ba57600080fd5b506104ca611abb565b3480156109cf57600080fd5b506104ca611ac1565b3480156109e457600080fd5b506104876115ce565b3480156109f957600080fd5b506103de60048036036040811015610a1057600080fd5b810190602081018135600160201b811115610a2a57600080fd5b820183602082011115610a3c57600080fd5b803590602001918460018302840111600160201b83111715610a5d57600080fd5b919390929091602081019035600160201b811115610a7a57600080fd5b820183602082011115610a8c57600080fd5b803590602001918460018302840111600160201b83111715610aad57600080fd5b509092509050611ac7565b348015610ac457600080fd5b50610628612259565b348015610ad957600080fd5b506103f561225e565b348015610aee57600080fd5b506103f56123fb565b348015610b0357600080fd5b506103f560048036036040811015610b1a57600080fd5b506001600160a01b0381358116916020013516612406565b348015610b3e57600080fd5b506103f5612433565b348015610b5357600080fd5b506104ca612439565b348015610b6857600080fd5b506103de60048036036040811015610b7f57600080fd5b60ff8235169190810190604081016020820135600160201b811115610ba357600080fd5b820183602082011115610bb557600080fd5b803590602001918460018302840111600160201b83111715610bd657600080fd5b50909250905061243f565b348015610bed57600080fd5b506103f560048036036040811015610c0457600080fd5b506001600160a01b0381358116916020013516612662565b348015610c2857600080fd5b506104ca61268d565b348015610c3d57600080fd5b506104ca612693565b348015610c5257600080fd5b506103f5612699565b348015610c6757600080fd5b506103f560048036036060811015610c7e57600080fd5b506001600160a01b0381358116916020810135821691604090910135166126a6565b348015610cac57600080fd5b506104ca6126db565b348015610cc157600080fd5b506103f56126e1565b348015610cd657600080fd5b506104ca6126e7565b6040805162461bcd60e51b815260206004820152600d60248201526c1b9bdd081cdd5c1c1bdc9d1959609a1b604482015290519081900360640190fd5b60035481565b610d2a614622565b610d32614622565b6001600160a01b0383166000818152600b60209081526040808320548552838352600c82528083205485830152928252600d9052819020549082015290505b919050565b606481565b6108fc81565b61200181565b60603361200014610dc95760405162461bcd60e51b815260040180806020018281038252602f815260200180614805602f913960400191505060405180910390fd5b60005460ff16610e0c576638d7ea4c6800006001908155662386f26fc1000060025568056bc75e2d631000006003556108fc6011556000805460ff191690911790555b610e14614640565b610e5b610e5685858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506126ed92505050565b612712565b90506000610e70610e6b8361275c565b6127aa565b90506000606060ff831660041415610e9557610e8b84612861565b9092509050610eec565b60ff831660051415610eaa57610e8b84612a41565b6040805162461bcd60e51b8152602060048201526012602482015271756e6b6e6f776e206576656e74207479706560701b604482015290519081900360640190fd5b63ffffffff821615610f38576040805163ffffffff84168152905160ff8516917f391d6e5ea6ab6c49b9a0abb1782cae5def8d711f973b00c729658c0b2a80b31b919081900360200190a25b979650505050505050565b6001600160a01b031660009081526006602052604090205490565b600581565b600181565b60015481565b606581565b662386f26fc1000081565b600381565b620a8c0081565b61100181565b6102ca81565b600881565b60105460ff1660021415610fe7576040805162461bcd60e51b815260206004820152600e60248201526d4e6f2072652d656e7472616e637960901b604482015290519081900360640190fd5b6010805460ff19166002179055806402540be400340615801561100f57506402540be4008106155b611060576040805162461bcd60e51b815260206004820152601c60248201527f707265636973696f6e206c6f737320696e20636f6e76657273696f6e00000000604482015290519081900360640190fd5b60005460ff166110a3576638d7ea4c6800006001908155662386f26fc1000060025568056bc75e2d631000006003556108fc6011556000805460ff191690911790555b6001543410156110f1576040805162461bcd60e51b81526020600482015260146024820152736e6f7420656e6f7567682072656c61792066656560601b604482015290519081900360640190fd5b6003548210156111ac573360009081526005602090815260408083206001600160a01b03871684529091529020548214611163576040805162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a5908185b5bdd5b9d60921b604482015290519081900360640190fd5b60025482116111ac576040805162461bcd60e51b815260206004820152601060248201526f6e6f7420656e6f7567682066756e647360801b604482015290519081900360640190fd5b3360009081526007602090815260408083206001600160a01b0387168452909152902054421015611224576040805162461bcd60e51b815260206004820152601a60248201527f70656e64696e6720756e64656c65676174696f6e206578697374000000000000604482015290519081900360640190fd5b604080518082018252601081526f6e6f7420656e6f7567682066756e647360801b602080830191909152336000908152600582528381206001600160a01b03881682529091529182205461127f91859063ffffffff612c5d16565b905080156112c75760025481116112c75760405162461bcd60e51b81526004018080602001828103825260258152602001806147e06025913960400191505060405180910390fd5b60006112de846402540be40063ffffffff612cf416565b60025490915034906000906112fa90839063ffffffff612d3d16565b6040805160038082526080820190925291925060609190816020015b606081526020019060019003908161131657905050905061133633612d7f565b8160008151811061134357fe5b6020026020010181905250611360886001600160a01b0316612d7f565b8160018151811061136d57fe5b602002602001018190525061138184612da2565b8160028151811061138e57fe5b602002602001018190525060606113ae60026113a984612db5565b612e3f565b8051602080830191909120600f80546000908152600a845260408082209390935581546001908101909255338152600c90935291208054909101905590506113ff42620a8c0063ffffffff612ec516565b3360009081526007602090815260408083206001600160a01b038e16845290915290205561200063f7a251d7601083611443876402540be40063ffffffff612cf416565b6040518463ffffffff1660e01b8152600401808460ff1660ff16815260200180602001838152602001828103825284818151815260200191508051906020019080838360005b838110156114a1578181015183820152602001611489565b50505050905090810190601f1680156114ce5780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b1580156114ef57600080fd5b505af1158015611503573d6000803e3d6000fd5b5050604051611004925085156108fc02915085906000818181858888f19350505050158015611536573d6000803e3d6000fd5b506002546040516110029180156108fc02916000818181858888f19350505050158015611567573d6000803e3d6000fd5b50604080518981526020810185905281516001600160a01b038c169233927fdf0b6ac27f3f3bb31cee3dab0f4fe40cc19c6a3f8daaec52e06b261e58a12519929081900390910190a350506010805460ff1916600117905550505050505050565b61200081565b600081565b60025481565b6402540be40081565b60105460009060ff1660021415611631576040805162461bcd60e51b815260206004820152600e60248201526d4e6f2072652d656e7472616e637960901b604482015290519081900360640190fd5b506010805460ff191660021790553360009081526008602052604090205480611698576040805162461bcd60e51b81526020600482015260146024820152736e6f20756e64656c6567617465642066756e647360601b604482015290519081900360640190fd5b336000818152600860205260408082208290556011549051919291849084818181858888f193505050503d80600081146116ee576040519150601f19603f3d011682016040523d82523d6000602084013e6116f3565b606091505b505090508061173b576040805162461bcd60e51b815260206004820152600f60248201526e1d1c985b9cd9995c8819985a5b1959608a1b604482015290519081900360640190fd5b60408051838152905133917fc712d133b8d448221aaed2198ed1f0db6dfc860fb01bc3a630916fe6cbef946f919081900360200190a2506010805460ff1916600117905590565b60035490565b61100581565b6001600160a01b031660009081526004602052604090205490565b600281565b601081565b6001600160a01b031660009081526008602052604090205490565b61100881565b600b81565b33612000146118195760405162461bcd60e51b815260040180806020018281038252602f815260200180614805602f913960400191505060405180910390fd5b60005460ff1661185c576638d7ea4c6800006001908155662386f26fc1000060025568056bc75e2d631000006003556108fc6011556000805460ff191690911790555b611864614640565b6118a6610e5684848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506126ed92505050565b905060008060606000805b6118ba86612f1f565b1561192557806118d7576118d0610e6b8761275c565b945061191d565b80600114156118f3576118ec610e6b8761275c565b935061191d565b80600214156119185761190d6119088761275c565b612f40565b92506001915061191d565b611925565b6001016118b1565b8161196b576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b61197483612fb0565b6119b7576040805162461bcd60e51b815260206004820152600f60248201526e0eee4dedcce40e0c2c6d640d0c2e6d608b1b604482015290519081900360640190fd5b6119c3610e56846126ed565b955060006119d3610e6b8861275c565b90506119dd614640565b6119e688612f1f565b15611a0957611a02610e566119fd6119088b61275c565b6126ed565b9050611a4a565b6040805162461bcd60e51b8152602060048201526011602482015270656d7074792061636b207061636b61676560781b604482015290519081900360640190fd5b60ff821660011415611a6657611a61818888613004565b611a94565b60ff821660021415611a7d57611a618188886133bb565b60ff821660031415610eaa57611a61818888613688565b5050505050505050505050565b600981565b61100781565b61100681565b60005460ff1681565b61200281565b61300081565b60005460ff16611b1e576040805162461bcd60e51b815260206004820152601960248201527f74686520636f6e7472616374206e6f7420696e69742079657400000000000000604482015290519081900360640190fd5b3361100714611b5e5760405162461bcd60e51b815260040180806020018281038252602e815260200180614756602e913960400191505060405180910390fd5b611bbf84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600a81526972656c6179657246656560b01b602082015291506139ed9050565b15611d255760208114611c19576040805162461bcd60e51b815260206004820152601d60248201527f6c656e677468206f662072656c61796572466565206d69736d61746368000000604482015290519081900360640190fd5b604080516020601f8401819004810282018101909252828152600091611c5791858580838501838280828437600092019190915250613ad492505050565b90506003548110611c995760405162461bcd60e51b815260040180806020018281038252602e815260200180614784602e913960400191505060405180910390fd5b6002548111611cd95760405162461bcd60e51b815260040180806020018281038252602e8152602001806147b2602e913960400191505060405180910390fd5b6402540be400810615611d1d5760405162461bcd60e51b815260040180806020018281038252602c81526020018061472a602c913960400191505060405180910390fd5b6001556121c7565b611d8984848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600d81526c62534352656c6179657246656560981b602082015291506139ed9050565b15611eeb5760208114611de3576040805162461bcd60e51b815260206004820181905260248201527f6c656e677468206f662062534352656c61796572466565206d69736d61746368604482015290519081900360640190fd5b604080516020601f8401819004810282018101909252828152600091611e2191858580838501838280828437600092019190915250613ad492505050565b905080611e5f5760405162461bcd60e51b81526004018080602001828103825260228152602001806148346022913960400191505060405180910390fd5b6001548110611e9f5760405162461bcd60e51b815260040180806020018281038252602e8152602001806146aa602e913960400191505060405180910390fd5b6402540be400810615611ee35760405162461bcd60e51b815260040180806020018281038252602f81526020018061467b602f913960400191505060405180910390fd5b6002556121c7565b611f4f84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600d81526c36b4b72232b632b3b0ba34b7b760991b602082015291506139ed9050565b156120315760208114611fa9576040805162461bcd60e51b815260206004820181905260248201527f6c656e677468206f66206d696e44656c65676174696f6e206d69736d61746368604482015290519081900360640190fd5b604080516020601f8401819004810282018101909252828152600091611fe791858580838501838280828437600092019190915250613ad492505050565b905060015481116120295760405162461bcd60e51b81526004018080602001828103825260318152602001806146d86031913960400191505060405180910390fd5b6003556121c7565b61209384848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600b81526a7472616e7366657247617360a81b602082015291506139ed9050565b1561218a57602081146120ed576040805162461bcd60e51b815260206004820152601e60248201527f6c656e677468206f66207472616e73666572476173206d69736d617463680000604482015290519081900360640190fd5b604080516020601f840181900481028201810190925282815260009161212b91858580838501838280828437600092019190915250613ad492505050565b905060008111612182576040805162461bcd60e51b815260206004820152601e60248201527f746865207472616e736665724761732063616e6e6f74206265207a65726f0000604482015290519081900360640190fd5b6011556121c7565b6040805162461bcd60e51b815260206004820152600d60248201526c756e6b6e6f776e20706172616d60981b604482015290519081900360640190fd5b7f6cdb0ac70ab7f2e2d035cca5be60d89906f2dede7648ddbd7402189c1eeed17a848484846040518080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600083820152604051601f909101601f19169092018290039850909650505050505050a150505050565b600481565b60105460009060ff16600214156122ad576040805162461bcd60e51b815260206004820152600e60248201526d4e6f2072652d656e7472616e637960901b604482015290519081900360640190fd5b506010805460ff191660021790553360009081526006602052604090205480612311576040805162461bcd60e51b81526020600482015260116024820152701b9bc81c195b991a5b99c81c995dd85c99607a1b604482015290519081900360640190fd5b336000818152600660205260408082208290556011549051919291849084818181858888f193505050503d8060008114612367576040519150601f19603f3d011682016040523d82523d6000602084013e61236c565b606091505b50509050806123b4576040805162461bcd60e51b815260206004820152600f60248201526e1d1c985b9cd9995c8819985a5b1959608a1b604482015290519081900360640190fd5b60408051838152905133917f83b78188b13346b2ffb484da70d42ee27de7fbf9f2bd8045269e10ed643ccd76919081900360200190a2506010805460ff1916600117905590565b6638d7ea4c68000081565b6001600160a01b038083166000908152600760209081526040808320938516835292905220545b92915050565b60015490565b61100281565b336120001461247f5760405162461bcd60e51b815260040180806020018281038252602f815260200180614805602f913960400191505060405180910390fd5b60005460ff166124c2576638d7ea4c6800006001908155662386f26fc1000060025568056bc75e2d631000006003556108fc6011556000805460ff191690911790555b61250182828080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612fb092505050565b612544576040805162461bcd60e51b815260206004820152600f60248201526e0eee4dedcce40e0c2c6d640d0c2e6d608b1b604482015290519081900360640190fd5b61254c614640565b61258e610e5684848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506126ed92505050565b9050600061259e610e6b8361275c565b90506125a8614640565b6125b183612f1f565b156125cf576125c8610e566119fd6119088661275c565b9050612615565b6040805162461bcd60e51b8152602060048201526016602482015275656d707479206661696c2061636b207061636b61676560501b604482015290519081900360640190fd5b60ff82166001141561262f5761262a81613ad9565b612659565b60ff8216600214156126445761262a81613cf3565b60ff821660031415610eaa5761262a81613e1d565b5050505b505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b61100381565b61200481565b68056bc75e2d6310000081565b6001600160a01b0392831660009081526009602090815260408083209486168352938152838220929094168152925290205490565b61100081565b60115481565b61100481565b6126f5614660565b506040805180820190915281518152602082810190820152919050565b61271a614640565b61272382613f82565b61272c57600080fd5b600061273b8360200151613fbc565b60208085015160408051808201909152868152920190820152915050919050565b612764614660565b61276d82612f1f565b61277657600080fd5b602082015160006127868261401f565b80830160209586015260408051808201909152908152938401919091525090919050565b8051600090158015906127bf57508151602110155b6127c857600080fd5b60006127d78360200151613fbc565b90508083600001511015612832576040805162461bcd60e51b815260206004820152601a60248201527f6c656e677468206973206c657373207468616e206f6666736574000000000000604482015290519081900360640190fd5b82516020808501518301805192849003929183101561285857826020036101000a820491505b50949350505050565b600060606000806000805b61287587612f1f565b156128c757826128975761289061288b8861275c565b614152565b91506128bc565b82600114156128b7576128ac610e6b8861275c565b9050600193506128bc565b6128c7565b82600101925061286c565b8361290d576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b60006110046001600160a01b031663727be1f8836040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b15801561295757600080fd5b505af115801561296b573d6000803e3d6000fd5b505050506040513d602081101561298157600080fd5b50519050806129a65761299860048484606561416c565b965096505050505050612a3c565b6001600160a01b0383166000908152600660205260409020546129cf908363ffffffff612ec516565b6001600160a01b038416600081815260066020908152604091829020939093558051858152905191927f7cc266c7b444f808013fa187f7b904d470a051a6564e78f482aa496581ba4bf892918290030190a260408051600080825260208201909252909750955050505050505b915091565b6000606060008060008060005b612a5788612f1f565b15612ac05783612a7457612a6d61288b8961275c565b9250612ab5565b8360011415612a9057612a8961288b8961275c565b9150612ab5565b8360021415612ab057612aa5610e6b8961275c565b905060019450612ab5565b612ac0565b836001019350612a4e565b84612b06576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b60006110046001600160a01b031663727be1f8836040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b158015612b5057600080fd5b505af1158015612b64573d6000803e3d6000fd5b505050506040513d6020811015612b7a57600080fd5b5051905080612ba057612b9160058584606561416c565b97509750505050505050612a3c565b6001600160a01b038085166000818152600760209081526040808320948816835293815283822082905591815260089091522054612be4908363ffffffff612ec516565b6001600160a01b0380861660008181526008602090815260409182902094909455805186815290519287169391927f35a799836f74fac7eccf5c73902823b970543d2274d3b93d8da3d37a255772a2929181900390910190a3604080516000808252602082019092529098509650505050505050915091565b60008184841115612cec5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612cb1578181015183820152602001612c99565b50505050905090810190601f168015612cde5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000612d3683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614268565b9392505050565b6000612d3683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612c5d565b60408051600560a21b8318601482015260348101909152606090612d36816142cd565b606061242d612db083614323565b6142cd565b6060815160001415612dd65750604080516000815260208101909152610d71565b606082600081518110612de557fe5b602002602001015190506000600190505b8351811015612e2657612e1c82858381518110612e0f57fe5b6020026020010151614409565b9150600101612df6565b50612d36612e39825160c060ff16614486565b82614409565b6040805160028082526060828101909352829190816020015b6060815260200190600190039081612e58579050509050612e7b8460ff16612da2565b81600081518110612e8857fe5b6020026020010181905250612e9c836142cd565b81600181518110612ea957fe5b6020026020010181905250612ebd81612db5565b949350505050565b600082820183811015612d36576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000612f29614660565b505080518051602091820151919092015191011190565b8051606090612f4e57600080fd5b6000612f5d8360200151613fbc565b83516040805191839003808352601f19601f8201168301602001909152919250606090828015612f94576020820181803683370190505b509050600081602001905061285884876020015101828561457e565b8051602080830191909120600e546000908152600a9092526040822054808214612fdf57600092505050610d71565b5050600e80546000908152600a60205260408120558054600190810190915592915050565b60008060008060005b61301688612f1f565b1561307f57836130335761302c61288b8961275c565b9250613074565b836001141561304f5761304861288b8961275c565b9150613074565b836002141561306f57613064610e6b8961275c565b905060019450613074565b61307f565b83600101935061300d565b846130c5576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b60006130dc826402540be40063ffffffff6145c916565b6001600160a01b0385166000908152600b602052604090208054600019019055905060ff8816600114156132225760ff87161561314f576040805162461bcd60e51b815260206004820152600c60248201526b77726f6e672073746174757360a01b604482015290519081900360640190fd5b6001600160a01b038416600090815260046020526040902054613178908263ffffffff612ec516565b6001600160a01b038086166000908152600460209081526040808320949094556005815283822092871682529190915220546131ba908263ffffffff612ec516565b6001600160a01b038086166000818152600560209081526040808320948916808452948252918290209490945580518581529051929391927f9a57c81564ab02642f34fd87e41baa9b074c18342cec3b7268b62bf752018fd1929181900390910190a36133b0565b60ff8816613374576001600160a01b038416600090815260086020526040902054613253908263ffffffff612ec516565b6001600160a01b0385166000908152600860209081526040808320939093558251630e4f7c3f60e31b81526004810185905292516110049363727be1f89360248083019493928390030190829087803b1580156132af57600080fd5b505af11580156132c3573d6000803e3d6000fd5b505050506040513d60208110156132d957600080fd5b5051613322576040805162461bcd60e51b81526020600482015260136024820152721dda5d1a191c985dc8189b988819985a5b1959606a1b604482015290519081900360640190fd5b6040805182815260ff8916602082015281516001600160a01b0380871693908816927fcbd481ae600289fad8c0484d07ce0ffe4f010d7c844ecfdeaf2a13fead52886e929081900390910190a36133b0565b6040805162461bcd60e51b815260206004820152600c60248201526b77726f6e672073746174757360a01b604482015290519081900360640190fd5b505050505050505050565b60008060008060005b6133cd88612f1f565b1561343657836133ea576133e361288b8961275c565b925061342b565b8360011415613406576133ff61288b8961275c565b915061342b565b83600214156134265761341b610e6b8961275c565b90506001945061342b565b613436565b8360010193506133c4565b8461347c576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b6000613493826402540be40063ffffffff6145c916565b6001600160a01b0385166000908152600c602052604090208054600019019055905060ff8816600114156136125760ff871615613506576040805162461bcd60e51b815260206004820152600c60248201526b77726f6e672073746174757360a01b604482015290519081900360640190fd5b6001600160a01b03841660009081526004602052604090205461352f908263ffffffff612d3d16565b6001600160a01b03808616600090815260046020908152604080832094909455600581528382209287168252919091522054613571908263ffffffff612d3d16565b6001600160a01b038086166000908152600560209081526040808320938816835292905220556135aa42620a8c0063ffffffff612ec516565b6001600160a01b038086166000818152600760209081526040808320948916808452948252918290209490945580518581529051929391927fd6f878a5bcbbe79a64e6418bb0d56aaa20b9a60587d45749819df88dfc7c3c44929181900390910190a36133b0565b60ff8816613374576001600160a01b03808516600081815260076020908152604080832094881680845294825280832092909255815185815260ff8c169181019190915281517f4417d10c1e33efa83a770b8d4f47176e78c08c1298d534901ad3b16bb585fa2e929181900390910190a36133b0565b6000806000806000805b61369b89612f1f565b1561372057846136b8576136b161288b8a61275c565b9350613715565b84600114156136d4576136cd61288b8a61275c565b9250613715565b84600214156136f0576136e961288b8a61275c565b9150613715565b846003141561371057613705610e6b8a61275c565b905060019550613715565b613720565b846001019450613692565b85613766576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b600061377d826402540be40063ffffffff6145c916565b6001600160a01b0386166000908152600d602052604090208054600019019055905060ff8916600114156139505760ff8816156137f0576040805162461bcd60e51b815260206004820152600c60248201526b77726f6e672073746174757360a01b604482015290519081900360640190fd5b6001600160a01b03808616600090815260056020908152604080832093881683529290522054613826908263ffffffff612d3d16565b6001600160a01b038681166000908152600560209081526040808320898516845290915280822093909355908516815220546138629082612ec5565b6001600160a01b0380871660009081526005602090815260408083209388168352929052205561389b42620a8c0063ffffffff612ec516565b6001600160a01b03808716600090815260096020908152604080832089851684528252808320938816835292905220556138de42620a8c0063ffffffff612ec516565b6001600160a01b038087166000818152600960209081526040808320898616808552908352818420958b1680855295835292819020959095558451868152945191947f78bffae3f8c6691ac7fc1a3bff800cb2d612f5ad9ae5b0444cfe2eb15c189e18929081900390910190a46139e1565b60ff8916613374576001600160a01b038581166000818152600960209081526040808320898616808552818452828520968a16808652968452828520859055908352818420818552835281842093909355805186815260ff8e169281019290925280519293927fb93bee5c59f85ede6b074a99f4ffcd3e3fc0d5c3d8156de331de89a49e0ce77c9281900390910190a45b50505050505050505050565b6000816040516020018082805190602001908083835b60208310613a225780518252601f199092019160209182019101613a03565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405280519060200120836040516020018082805190602001908083835b60208310613a905780518252601f199092019160209182019101613a71565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040528051906020012014905092915050565b015190565b60008060008060005b613aeb86612f1f565b15613b545783613b0857613b0161288b8761275c565b9250613b49565b8360011415613b2457613b1d61288b8761275c565b9150613b49565b8360021415613b4457613b39610e6b8761275c565b905060019450613b49565b613b54565b836001019350613ae2565b84613b9a576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b6000613bb1826402540be40063ffffffff6145c916565b6001600160a01b0385166000908152600b6020908152604080832080546000190190556008909152902054909150613bef908263ffffffff612ec516565b6001600160a01b0385166000908152600860209081526040808320939093558251630e4f7c3f60e31b81526004810185905292516110049363727be1f89360248083019493928390030190829087803b158015613c4b57600080fd5b505af1158015613c5f573d6000803e3d6000fd5b505050506040513d6020811015613c7557600080fd5b5051613cbe576040805162461bcd60e51b81526020600482015260136024820152721dda5d1a191c985dc8189b988819985a5b1959606a1b604482015290519081900360640190fd5b6040516001907ff83de021914a4585482db5ca47d520a5657165b443fa2c7ef8ed4635f054da9b90600090a250505050505050565b60008060008060005b613d0586612f1f565b15613d6e5783613d2257613d1b61288b8761275c565b9250613d63565b8360011415613d3e57613d3761288b8761275c565b9150613d63565b8360021415613d5e57613d53610e6b8761275c565b905060019450613d63565b613d6e565b836001019350613cfc565b84613db4576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b6001600160a01b038084166000908152600c60209081526040808320805460001901905560078252808320938616835292905281812081905590516002917ff83de021914a4585482db5ca47d520a5657165b443fa2c7ef8ed4635f054da9b91a2505050505050565b6000806000806000805b613e3087612f1f565b15613eb55784613e4d57613e4661288b8861275c565b9350613eaa565b8460011415613e6957613e6261288b8861275c565b9250613eaa565b8460021415613e8557613e7e61288b8861275c565b9150613eaa565b8460031415613ea557613e9a610e6b8861275c565b905060019550613eaa565b613eb5565b846001019450613e27565b85613efb576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b6001600160a01b038481166000908152600d602090815260408083208054600019019055600982528083208785168085528184528285209588168552948352818420849055825280832093835292905281812081905590516003917ff83de021914a4585482db5ca47d520a5657165b443fa2c7ef8ed4635f054da9b91a250505050505050565b8051600090613f9357506000610d71565b6020820151805160001a9060c0821015613fb257600092505050610d71565b5060019392505050565b8051600090811a6080811015613fd6576000915050610d71565b60b8811080613ff1575060c08110801590613ff1575060f881105b15614000576001915050610d71565b60c08110156140145760b519019050610d71565b60f519019050610d71565b80516000908190811a608081101561403a576001915061414b565b60b881101561404f57607e198101915061414b565b60c08110156140c957600060b78203600186019550806020036101000a8651049150600181018201935050808310156140c3576040805162461bcd60e51b81526020600482015260116024820152706164646974696f6e206f766572666c6f7760781b604482015290519081900360640190fd5b5061414b565b60f88110156140de5760be198101915061414b565b600060f78203600186019550806020036101000a865104915060018101820193505080831015614149576040805162461bcd60e51b81526020600482015260116024820152706164646974696f6e206f766572666c6f7760781b604482015290519081900360640190fd5b505b5092915050565b805160009060151461416357600080fd5b61242d826127aa565b60006060614185846402540be40063ffffffff612cf416565b60408051600480825260a0820190925291955060609190816020015b60608152602001906001900390816141a15790505090506141c48760ff16612da2565b816000815181106141d157fe5b60200260200101819052506141ee866001600160a01b0316612d7f565b816001815181106141fb57fe5b602002602001018190525061420f85612da2565b8160028151811061421c57fe5b60200260200101819052506142368463ffffffff16612da2565b8160038151811061424357fe5b6020026020010181905250606061425982612db5565b94989497509395505050505050565b600081836142b75760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315612cb1578181015183820152602001612c99565b5060008385816142c357fe5b0495945050505050565b6060815160011480156142ff5750607f60f81b826000815181106142ed57fe5b01602001516001600160f81b03191611155b1561430b575080610d71565b61242d61431d8351608060ff16614486565b83614409565b604080516020808252818301909252606091829190602082018180368337505050602081018490529050600067ffffffffffffffff1984166143675750601861438b565b6fffffffffffffffffffffffffffffffff1984166143875750601061438b565b5060005b60208110156143c1578181815181106143a057fe5b01602001516001600160f81b031916156143b9576143c1565b60010161438b565b60008160200390506060816040519080825280601f01601f1916602001820160405280156143f6576020820181803683370190505b5080830196909652508452509192915050565b6060806040519050835180825260208201818101602087015b8183101561443a578051835260209283019201614422565b50855184518101855292509050808201602086015b8183101561446757805183526020928301920161444f565b508651929092011591909101601f01601f191660405250905092915050565b60606801000000000000000083106144d6576040805162461bcd60e51b815260206004820152600e60248201526d696e70757420746f6f206c6f6e6760901b604482015290519081900360640190fd5b604080516001808252818301909252606091602082018180368337019050509050603784116145305782840160f81b8160008151811061451257fe5b60200101906001600160f81b031916908160001a905350905061242d565b606061453b85614323565b90508381510160370160f81b8260008151811061455457fe5b60200101906001600160f81b031916908160001a9053506145758282614409565b95945050505050565b806145885761265d565b5b602081106145a8578251825260209283019290910190601f1901614589565b915181516020939093036101000a6000190180199091169216919091179052565b6000826145d85750600061242d565b828202828482816145e557fe5b0414612d365760405162461bcd60e51b81526004018080602001828103825260218152602001806147096021913960400191505060405180910390fd5b60405180606001604052806003906020820280368337509192915050565b6040518060400160405280614653614660565b8152602001600081525090565b60405180604001604052806000815260200160008152509056fe7468652042534352656c61796572466565206d6f642074656e20646563696d616c73206d757374206265207a65726f7468652042534352656c61796572466565206d757374206265206c657373207468616e2072656c61796572466565746865206d696e44656c65676174696f6e206d7573742062652067726561746572207468616e2072656c61796572466565536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f777468652072656c61796572466565206d6f642074656e20646563696d616c73206d757374206265207a65726f746865206d6573736167652073656e646572206d75737420626520676f7665726e616e636520636f6e74726163747468652072656c61796572466565206d757374206265206c657373207468616e206d696e44656c65676174696f6e7468652072656c61796572466565206d757374206265206d6f7265207468616e2042534352656c61796572466565696e73756666696369656e742062616c616e636520616674657220756e64656c6567617465746865206d6573736167652073656e646572206d7573742062652063726f737320636861696e20636f6e74726163747468652042534352656c61796572466565206d757374206e6f74206265207a65726fa164736f6c6343000604000a", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/9d09d0a3d6332460a810188261ec8195e05aa218", + Code: "6080604052600436106103d25760003560e01c8063718a8aa8116101fd578063b88a802f11610118578063dc927faf116100ab578063f45fd80b1161007a578063f45fd80b14610cdb578063f9a2bbc714610d20578063fa03f79714610d35578063fc3e5908146106d3578063fd6a687914610d4a576103d9565b8063dc927faf14610c87578063df8079e914610c9c578063edc1a5b014610cb1578063f1fad10414610cc6576103d9565b8063c81b1662116100e7578063c81b166214610bb2578063c8509d8114610bc7578063d61b9b9314610c4c578063d7ecfcb614610890576103d9565b8063b88a802f14610b38578063baaafd3b14610b4d578063bf8546ca14610b62578063c2117d8214610b9d576103d9565b80639dc0926211610190578063aad560631161015f578063aad5606314610a2e578063ab51bb9614610a43578063ac43175114610a58578063b14315df14610b23576103d9565b80639dc09262146109c6578063a1a11bf5146109db578063a78abc16146109f0578063aa82dce114610a19576103d9565b80637e434d54116101cc5780637e434d5414610917578063831d65d11461092c57806392b888a41461066a57806396713da9146109b1576103d9565b8063718a8aa8146108a557806375aca593146108ba57806375d47a0a146108ed5780637942fd0514610902576103d9565b8063413d9c3a116102ed5780635d17c8bd116102805780636bd8f8041161024f5780636bd8f804146108125780636e47b482146108485780636fb7f7eb1461085d57806370fd5bad14610890576103d9565b80635d17c8bd146107be5780635d499b1b146107d357806362b171d2146107e857806369b635b6146107fd576103d9565b80634d99dd16116102bc5780634d99dd161461075357806351b4dce31461077f57806351e8067214610794578063552aaf93146107a9576103d9565b8063413d9c3a146106e857806343756e5c146106fd578063493279b1146107125780634bf6c8821461073e576103d9565b8063151817e311610365578063333ad3e711610334578063333ad3e7146106a957806334c43354146106be5780633dffc3871461066a5780633fdfa7e4146106d3576103d9565b8063151817e31461063f57806317c9efb01461066a578063280870281461067f5780632fdeb11114610694576103d9565b80630c795715116103a15780630c795715146104cc5780630e2374a5146104e15780631182b8751461051257806311fe9ec61461060c576103d9565b8063026e402b146103de578063029859921461040c578063047636d1146104335780630bee7a671461049e576103d9565b366103d957005b600080fd5b61040a600480360360408110156103f457600080fd5b506001600160a01b038135169060200135610d5f565b005b34801561041857600080fd5b50610421610d9c565b60408051918252519081900360200190f35b34801561043f57600080fd5b506104666004803603602081101561045657600080fd5b50356001600160a01b0316610da2565b6040518082606080838360005b8381101561048b578181015183820152602001610473565b5050505090500191505060405180910390f35b3480156104aa57600080fd5b506104b3610df6565b6040805163ffffffff9092168252519081900360200190f35b3480156104d857600080fd5b50610421610dfb565b3480156104ed57600080fd5b506104f6610e01565b604080516001600160a01b039092168252519081900360200190f35b34801561051e57600080fd5b506105976004803603604081101561053557600080fd5b60ff8235169190810190604081016020820135600160201b81111561055957600080fd5b82018360208201111561056b57600080fd5b803590602001918460018302840111600160201b8311171561058c57600080fd5b509092509050610e07565b6040805160208082528351818301528351919283929083019185019080838360005b838110156105d15781810151838201526020016105b9565b50505050905090810190601f1680156105fe5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561061857600080fd5b506104216004803603602081101561062f57600080fd5b50356001600160a01b0316610fc3565b34801561064b57600080fd5b50610654610fde565b6040805160ff9092168252519081900360200190f35b34801561067657600080fd5b50610654610fe3565b34801561068b57600080fd5b506104f6610fe8565b3480156106a057600080fd5b50610421610fee565b3480156106b557600080fd5b506104b3610ff4565b3480156106ca57600080fd5b50610421610ff9565b3480156106df57600080fd5b50610654611004565b3480156106f457600080fd5b50610421611009565b34801561070957600080fd5b506104f6611010565b34801561071e57600080fd5b50610727611016565b6040805161ffff9092168252519081900360200190f35b34801561074a57600080fd5b5061065461101b565b61040a6004803603604081101561076957600080fd5b506001600160a01b038135169060200135611020565b34801561078b57600080fd5b506104f661164d565b3480156107a057600080fd5b506104f6611653565b3480156107b557600080fd5b50610654611659565b3480156107ca57600080fd5b5061042161165e565b3480156107df57600080fd5b50610421611664565b3480156107f457600080fd5b5061042161166d565b34801561080957600080fd5b5061042161180d565b61040a6004803603606081101561082857600080fd5b506001600160a01b03813581169160208101359091169060400135610d5f565b34801561085457600080fd5b506104f6611813565b34801561086957600080fd5b506104216004803603602081101561088057600080fd5b50356001600160a01b0316611819565b34801561089c57600080fd5b50610654611834565b3480156108b157600080fd5b50610654611839565b3480156108c657600080fd5b50610421600480360360208110156108dd57600080fd5b50356001600160a01b031661183e565b3480156108f957600080fd5b506104f6611859565b34801561090e57600080fd5b5061065461185f565b34801561092357600080fd5b506104f6611864565b34801561093857600080fd5b5061040a6004803603604081101561094f57600080fd5b60ff8235169190810190604081016020820135600160201b81111561097357600080fd5b82018360208201111561098557600080fd5b803590602001918460018302840111600160201b831117156109a657600080fd5b50909250905061186a565b3480156109bd57600080fd5b50610654611b32565b3480156109d257600080fd5b506104f6611b37565b3480156109e757600080fd5b506104f6611b3d565b3480156109fc57600080fd5b50610a05611b43565b604080519115158252519081900360200190f35b348015610a2557600080fd5b506104f6611b4c565b348015610a3a57600080fd5b506104f6611b52565b348015610a4f57600080fd5b506104b3611659565b348015610a6457600080fd5b5061040a60048036036040811015610a7b57600080fd5b810190602081018135600160201b811115610a9557600080fd5b820183602082011115610aa757600080fd5b803590602001918460018302840111600160201b83111715610ac857600080fd5b919390929091602081019035600160201b811115610ae557600080fd5b820183602082011115610af757600080fd5b803590602001918460018302840111600160201b83111715610b1857600080fd5b509092509050611b58565b348015610b2f57600080fd5b506106546122ea565b348015610b4457600080fd5b506104216122ef565b348015610b5957600080fd5b5061042161248c565b348015610b6e57600080fd5b5061042160048036036040811015610b8557600080fd5b506001600160a01b0381358116916020013516612497565b348015610ba957600080fd5b506104216124c4565b348015610bbe57600080fd5b506104f66124ca565b348015610bd357600080fd5b5061040a60048036036040811015610bea57600080fd5b60ff8235169190810190604081016020820135600160201b811115610c0e57600080fd5b820183602082011115610c2057600080fd5b803590602001918460018302840111600160201b83111715610c4157600080fd5b5090925090506124d0565b348015610c5857600080fd5b5061042160048036036040811015610c6f57600080fd5b506001600160a01b03813581169160200135166126f3565b348015610c9357600080fd5b506104f661271e565b348015610ca857600080fd5b506104f6612724565b348015610cbd57600080fd5b5061042161272a565b348015610cd257600080fd5b50610654612737565b348015610ce757600080fd5b5061042160048036036060811015610cfe57600080fd5b506001600160a01b03813581169160208101358216916040909101351661273c565b348015610d2c57600080fd5b506104f6612771565b348015610d4157600080fd5b50610421612777565b348015610d5657600080fd5b506104f661277d565b6040805162461bcd60e51b815260206004820152600d60248201526c1b9bdd081cdd5c1c1bdc9d1959609a1b604482015290519081900360640190fd5b60035481565b610daa614800565b610db2614800565b6001600160a01b0383166000818152600b60209081526040808320548552838352600c82528083205485830152928252600d9052819020549082015290505b919050565b606481565b6108fc81565b61200181565b60603361200014610e495760405162461bcd60e51b815260040180806020018281038252602f8152602001806149e3602f913960400191505060405180910390fd5b60005460ff16610e8c576638d7ea4c6800006001908155662386f26fc1000060025568056bc75e2d631000006003556108fc6011556000805460ff191690911790555b610e9461481e565b610edb610ed685858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061278392505050565b6127a8565b90506000610ef0610eeb836127f2565b612840565b90506000606060ff831660041415610f1557610f0b846128f7565b9092509050610f6c565b60ff831660051415610f2a57610f0b84612ad7565b6040805162461bcd60e51b8152602060048201526012602482015271756e6b6e6f776e206576656e74207479706560701b604482015290519081900360640190fd5b63ffffffff821615610fb8576040805163ffffffff84168152905160ff8516917f391d6e5ea6ab6c49b9a0abb1782cae5def8d711f973b00c729658c0b2a80b31b919081900360200190a25b979650505050505050565b6001600160a01b031660009081526006602052604090205490565b600581565b600181565b61200581565b60015481565b606581565b662386f26fc1000081565b600381565b620a8c0081565b61100181565b606181565b600881565b60105460ff166002141561106c576040805162461bcd60e51b815260206004820152600e60248201526d4e6f2072652d656e7472616e637960901b604482015290519081900360640190fd5b6010805460ff19166002179055806402540be400340615801561109457506402540be4008106155b6110e5576040805162461bcd60e51b815260206004820152601c60248201527f707265636973696f6e206c6f737320696e20636f6e76657273696f6e00000000604482015290519081900360640190fd5b60005460ff16611128576638d7ea4c6800006001908155662386f26fc1000060025568056bc75e2d631000006003556108fc6011556000805460ff191690911790555b600154341015611176576040805162461bcd60e51b81526020600482015260146024820152736e6f7420656e6f7567682072656c61792066656560601b604482015290519081900360640190fd5b600354821015611231573360009081526005602090815260408083206001600160a01b038716845290915290205482146111e8576040805162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a5908185b5bdd5b9d60921b604482015290519081900360640190fd5b6002548211611231576040805162461bcd60e51b815260206004820152601060248201526f6e6f7420656e6f7567682066756e647360801b604482015290519081900360640190fd5b3360009081526007602090815260408083206001600160a01b03871684529091529020544210156112a9576040805162461bcd60e51b815260206004820152601a60248201527f70656e64696e6720756e64656c65676174696f6e206578697374000000000000604482015290519081900360640190fd5b604080518082018252601081526f6e6f7420656e6f7567682066756e647360801b602080830191909152336000908152600582528381206001600160a01b03881682529091529182205461130491859063ffffffff612df716565b9050801561134c57600254811161134c5760405162461bcd60e51b81526004018080602001828103825260258152602001806149be6025913960400191505060405180910390fd5b6000611363846402540be40063ffffffff612e8e16565b600254909150349060009061137f90839063ffffffff612ed716565b6040805160038082526080820190925291925060609190816020015b606081526020019060019003908161139b5790505090506113bb33612f19565b816000815181106113c857fe5b60200260200101819052506113e5886001600160a01b0316612f19565b816001815181106113f257fe5b602002602001018190525061140684612f3c565b8160028151811061141357fe5b60200260200101819052506060611433600261142e84612f4f565b612fd9565b8051602080830191909120600f80546000908152600a845260408082209390935581546001908101909255338152600c909352912080549091019055905061148442620a8c0063ffffffff61305f16565b3360009081526007602090815260408083206001600160a01b038e16845290915290205561200063f7a251d76010836114c8876402540be40063ffffffff612e8e16565b6040518463ffffffff1660e01b8152600401808460ff1660ff16815260200180602001838152602001828103825284818151815260200191508051906020019080838360005b8381101561152657818101518382015260200161150e565b50505050905090810190601f1680156115535780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b15801561157457600080fd5b505af1158015611588573d6000803e3d6000fd5b5050604051611004925085156108fc02915085906000818181858888f193505050501580156115bb573d6000803e3d6000fd5b506002546040516110029180156108fc02916000818181858888f193505050501580156115ec573d6000803e3d6000fd5b50604080518981526020810185905281516001600160a01b038c169233927fdf0b6ac27f3f3bb31cee3dab0f4fe40cc19c6a3f8daaec52e06b261e58a12519929081900390910190a350506010805460ff1916600117905550505050505050565b61200681565b61200081565b600081565b60025481565b6402540be40081565b60105460009060ff16600214156116bc576040805162461bcd60e51b815260206004820152600e60248201526d4e6f2072652d656e7472616e637960901b604482015290519081900360640190fd5b506010805460ff191660021790553360009081526008602052604090205480611723576040805162461bcd60e51b81526020600482015260146024820152736e6f20756e64656c6567617465642066756e647360601b604482015290519081900360640190fd5b336000818152600860205260408082208290556011549051919291849084818181858888f193505050503d8060008114611779576040519150601f19603f3d011682016040523d82523d6000602084013e61177e565b606091505b50509050806117c6576040805162461bcd60e51b815260206004820152600f60248201526e1d1c985b9cd9995c8819985a5b1959608a1b604482015290519081900360640190fd5b60408051838152905133917fc712d133b8d448221aaed2198ed1f0db6dfc860fb01bc3a630916fe6cbef946f919081900360200190a2506010805460ff1916600117905590565b60035490565b61100581565b6001600160a01b031660009081526004602052604090205490565b600281565b601081565b6001600160a01b031660009081526008602052604090205490565b61100881565b600b81565b61200381565b33612000146118aa5760405162461bcd60e51b815260040180806020018281038252602f8152602001806149e3602f913960400191505060405180910390fd5b60005460ff166118ed576638d7ea4c6800006001908155662386f26fc1000060025568056bc75e2d631000006003556108fc6011556000805460ff191690911790555b6118f561481e565b611937610ed684848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061278392505050565b905060008060606000805b61194b866130b9565b156119b6578061196857611961610eeb876127f2565b94506119ae565b80600114156119845761197d610eeb876127f2565b93506119ae565b80600214156119a95761199e611999876127f2565b6130da565b9250600191506119ae565b6119b6565b600101611942565b816119fc576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b611a058361314a565b611a48576040805162461bcd60e51b815260206004820152600f60248201526e0eee4dedcce40e0c2c6d640d0c2e6d608b1b604482015290519081900360640190fd5b611a54610ed684612783565b95506000611a64610eeb886127f2565b9050611a6e61481e565b611a77886130b9565b15611a9a57611a93610ed6611a8e6119998b6127f2565b612783565b9050611adb565b6040805162461bcd60e51b8152602060048201526011602482015270656d7074792061636b207061636b61676560781b604482015290519081900360640190fd5b60ff821660011415611af757611af281888861319e565b611b25565b60ff821660021415611b0e57611af2818888613555565b60ff821660031415610f2a57611af2818888613822565b5050505050505050505050565b600981565b61100781565b61100681565b60005460ff1681565b61200281565b61300081565b60005460ff16611baf576040805162461bcd60e51b815260206004820152601960248201527f74686520636f6e7472616374206e6f7420696e69742079657400000000000000604482015290519081900360640190fd5b3361100714611bef5760405162461bcd60e51b815260040180806020018281038252602e815260200180614934602e913960400191505060405180910390fd5b611c5084848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600a81526972656c6179657246656560b01b60208201529150613b879050565b15611db65760208114611caa576040805162461bcd60e51b815260206004820152601d60248201527f6c656e677468206f662072656c61796572466565206d69736d61746368000000604482015290519081900360640190fd5b604080516020601f8401819004810282018101909252828152600091611ce891858580838501838280828437600092019190915250613c6e92505050565b90506003548110611d2a5760405162461bcd60e51b815260040180806020018281038252602e815260200180614962602e913960400191505060405180910390fd5b6002548111611d6a5760405162461bcd60e51b815260040180806020018281038252602e815260200180614990602e913960400191505060405180910390fd5b6402540be400810615611dae5760405162461bcd60e51b815260040180806020018281038252602c815260200180614908602c913960400191505060405180910390fd5b600155612258565b611e1a84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600d81526c62534352656c6179657246656560981b60208201529150613b879050565b15611f7c5760208114611e74576040805162461bcd60e51b815260206004820181905260248201527f6c656e677468206f662062534352656c61796572466565206d69736d61746368604482015290519081900360640190fd5b604080516020601f8401819004810282018101909252828152600091611eb291858580838501838280828437600092019190915250613c6e92505050565b905080611ef05760405162461bcd60e51b8152600401808060200182810382526022815260200180614a126022913960400191505060405180910390fd5b6001548110611f305760405162461bcd60e51b815260040180806020018281038252602e815260200180614888602e913960400191505060405180910390fd5b6402540be400810615611f745760405162461bcd60e51b815260040180806020018281038252602f815260200180614859602f913960400191505060405180910390fd5b600255612258565b611fe084848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600d81526c36b4b72232b632b3b0ba34b7b760991b60208201529150613b879050565b156120c2576020811461203a576040805162461bcd60e51b815260206004820181905260248201527f6c656e677468206f66206d696e44656c65676174696f6e206d69736d61746368604482015290519081900360640190fd5b604080516020601f840181900481028201810190925282815260009161207891858580838501838280828437600092019190915250613c6e92505050565b905060015481116120ba5760405162461bcd60e51b81526004018080602001828103825260318152602001806148b66031913960400191505060405180910390fd5b600355612258565b61212484848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600b81526a7472616e7366657247617360a81b60208201529150613b879050565b1561221b576020811461217e576040805162461bcd60e51b815260206004820152601e60248201527f6c656e677468206f66207472616e73666572476173206d69736d617463680000604482015290519081900360640190fd5b604080516020601f84018190048102820181019092528281526000916121bc91858580838501838280828437600092019190915250613c6e92505050565b905060008111612213576040805162461bcd60e51b815260206004820152601e60248201527f746865207472616e736665724761732063616e6e6f74206265207a65726f0000604482015290519081900360640190fd5b601155612258565b6040805162461bcd60e51b815260206004820152600d60248201526c756e6b6e6f776e20706172616d60981b604482015290519081900360640190fd5b7f6cdb0ac70ab7f2e2d035cca5be60d89906f2dede7648ddbd7402189c1eeed17a848484846040518080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600083820152604051601f909101601f19169092018290039850909650505050505050a150505050565b600481565b60105460009060ff166002141561233e576040805162461bcd60e51b815260206004820152600e60248201526d4e6f2072652d656e7472616e637960901b604482015290519081900360640190fd5b506010805460ff1916600217905533600090815260066020526040902054806123a2576040805162461bcd60e51b81526020600482015260116024820152701b9bc81c195b991a5b99c81c995dd85c99607a1b604482015290519081900360640190fd5b336000818152600660205260408082208290556011549051919291849084818181858888f193505050503d80600081146123f8576040519150601f19603f3d011682016040523d82523d6000602084013e6123fd565b606091505b5050905080612445576040805162461bcd60e51b815260206004820152600f60248201526e1d1c985b9cd9995c8819985a5b1959608a1b604482015290519081900360640190fd5b60408051838152905133917f83b78188b13346b2ffb484da70d42ee27de7fbf9f2bd8045269e10ed643ccd76919081900360200190a2506010805460ff1916600117905590565b6638d7ea4c68000081565b6001600160a01b038083166000908152600760209081526040808320938516835292905220545b92915050565b60015490565b61100281565b33612000146125105760405162461bcd60e51b815260040180806020018281038252602f8152602001806149e3602f913960400191505060405180910390fd5b60005460ff16612553576638d7ea4c6800006001908155662386f26fc1000060025568056bc75e2d631000006003556108fc6011556000805460ff191690911790555b61259282828080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061314a92505050565b6125d5576040805162461bcd60e51b815260206004820152600f60248201526e0eee4dedcce40e0c2c6d640d0c2e6d608b1b604482015290519081900360640190fd5b6125dd61481e565b61261f610ed684848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061278392505050565b9050600061262f610eeb836127f2565b905061263961481e565b612642836130b9565b1561266057612659610ed6611a8e611999866127f2565b90506126a6565b6040805162461bcd60e51b8152602060048201526016602482015275656d707479206661696c2061636b207061636b61676560501b604482015290519081900360640190fd5b60ff8216600114156126c0576126bb81613c73565b6126ea565b60ff8216600214156126d5576126bb81613e8d565b60ff821660031415610f2a576126bb81613fb7565b5050505b505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b61100381565b61200481565b68056bc75e2d6310000081565b601181565b6001600160a01b0392831660009081526009602090815260408083209486168352938152838220929094168152925290205490565b61100081565b60115481565b61100481565b61278b61483e565b506040805180820190915281518152602082810190820152919050565b6127b061481e565b6127b98261411c565b6127c257600080fd5b60006127d18360200151614156565b60208085015160408051808201909152868152920190820152915050919050565b6127fa61483e565b612803826130b9565b61280c57600080fd5b6020820151600061281c826141b9565b80830160209586015260408051808201909152908152938401919091525090919050565b80516000901580159061285557508151602110155b61285e57600080fd5b600061286d8360200151614156565b905080836000015110156128c8576040805162461bcd60e51b815260206004820152601a60248201527f6c656e677468206973206c657373207468616e206f6666736574000000000000604482015290519081900360640190fd5b8251602080850151830180519284900392918310156128ee57826020036101000a820491505b50949350505050565b600060606000806000805b61290b876130b9565b1561295d578261292d57612926612921886127f2565b6142ec565b9150612952565b826001141561294d57612942610eeb886127f2565b905060019350612952565b61295d565b826001019250612902565b836129a3576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b60006110046001600160a01b031663727be1f8836040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b1580156129ed57600080fd5b505af1158015612a01573d6000803e3d6000fd5b505050506040513d6020811015612a1757600080fd5b5051905080612a3c57612a2e600484846065614306565b965096505050505050612ad2565b6001600160a01b038316600090815260066020526040902054612a65908363ffffffff61305f16565b6001600160a01b038416600081815260066020908152604091829020939093558051858152905191927f7cc266c7b444f808013fa187f7b904d470a051a6564e78f482aa496581ba4bf892918290030190a260408051600080825260208201909252909750955050505050505b915091565b600060606000806000806000805b612aee896130b9565b15612b785784612b0b57612b046129218a6127f2565b9350612b6d565b8460011415612b2757612b206129218a6127f2565b9250612b6d565b8460021415612b4757612b3c610eeb8a6127f2565b915060019550612b6d565b8460031415612b6857612b61612b5c8a6127f2565b614402565b9050612b6d565b612b78565b846001019450612ae5565b85612bbe576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b60006110046001600160a01b031663727be1f8846040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b158015612c0857600080fd5b505af1158015612c1c573d6000803e3d6000fd5b505050506040513d6020811015612c3257600080fd5b5051905080612c5957612c49600586856065614306565b9850985050505050505050612ad2565b6001600160a01b038086166000818152600760209081526040808320948916835293815283822082905591815260089091522054612c9d908463ffffffff61305f16565b6001600160a01b0386166000908152600860205260409020558115612d8b576001600160a01b038516600090815260046020526040902054612ce5908463ffffffff612ed716565b6001600160a01b03808716600090815260046020908152604080832094909455600581528382209288168252919091522054612d27908463ffffffff612ed716565b6001600160a01b038087166000818152600560209081526040808320948a16808452948252918290209490945580518781529051929391927fd6f878a5bcbbe79a64e6418bb0d56aaa20b9a60587d45749819df88dfc7c3c44929181900390910190a35b836001600160a01b0316856001600160a01b03167f35a799836f74fac7eccf5c73902823b970543d2274d3b93d8da3d37a255772a2856040518082815260200191505060405180910390a360408051600080825260208201909252909950975050505050505050915091565b60008184841115612e865760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612e4b578181015183820152602001612e33565b50505050905090810190601f168015612e785780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000612ed083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614446565b9392505050565b6000612ed083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612df7565b60408051600560a21b8318601482015260348101909152606090612ed0816144ab565b60606124be612f4a83614501565b6144ab565b6060815160001415612f705750604080516000815260208101909152610df1565b606082600081518110612f7f57fe5b602002602001015190506000600190505b8351811015612fc057612fb682858381518110612fa957fe5b60200260200101516145e7565b9150600101612f90565b50612ed0612fd3825160c060ff16614664565b826145e7565b6040805160028082526060828101909352829190816020015b6060815260200190600190039081612ff25790505090506130158460ff16612f3c565b8160008151811061302257fe5b6020026020010181905250613036836144ab565b8160018151811061304357fe5b602002602001018190525061305781612f4f565b949350505050565b600082820183811015612ed0576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60006130c361483e565b505080518051602091820151919092015191011190565b80516060906130e857600080fd5b60006130f78360200151614156565b83516040805191839003808352601f19601f820116830160200190915291925060609082801561312e576020820181803683370190505b50905060008160200190506128ee84876020015101828561475c565b8051602080830191909120600e546000908152600a909252604082205480821461317957600092505050610df1565b5050600e80546000908152600a60205260408120558054600190810190915592915050565b60008060008060005b6131b0886130b9565b1561321957836131cd576131c6612921896127f2565b925061320e565b83600114156131e9576131e2612921896127f2565b915061320e565b8360021415613209576131fe610eeb896127f2565b90506001945061320e565b613219565b8360010193506131a7565b8461325f576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b6000613276826402540be40063ffffffff6147a716565b6001600160a01b0385166000908152600b602052604090208054600019019055905060ff8816600114156133bc5760ff8716156132e9576040805162461bcd60e51b815260206004820152600c60248201526b77726f6e672073746174757360a01b604482015290519081900360640190fd5b6001600160a01b038416600090815260046020526040902054613312908263ffffffff61305f16565b6001600160a01b03808616600090815260046020908152604080832094909455600581528382209287168252919091522054613354908263ffffffff61305f16565b6001600160a01b038086166000818152600560209081526040808320948916808452948252918290209490945580518581529051929391927f9a57c81564ab02642f34fd87e41baa9b074c18342cec3b7268b62bf752018fd1929181900390910190a361354a565b60ff881661350e576001600160a01b0384166000908152600860205260409020546133ed908263ffffffff61305f16565b6001600160a01b0385166000908152600860209081526040808320939093558251630e4f7c3f60e31b81526004810185905292516110049363727be1f89360248083019493928390030190829087803b15801561344957600080fd5b505af115801561345d573d6000803e3d6000fd5b505050506040513d602081101561347357600080fd5b50516134bc576040805162461bcd60e51b81526020600482015260136024820152721dda5d1a191c985dc8189b988819985a5b1959606a1b604482015290519081900360640190fd5b6040805182815260ff8916602082015281516001600160a01b0380871693908816927fcbd481ae600289fad8c0484d07ce0ffe4f010d7c844ecfdeaf2a13fead52886e929081900390910190a361354a565b6040805162461bcd60e51b815260206004820152600c60248201526b77726f6e672073746174757360a01b604482015290519081900360640190fd5b505050505050505050565b60008060008060005b613567886130b9565b156135d057836135845761357d612921896127f2565b92506135c5565b83600114156135a057613599612921896127f2565b91506135c5565b83600214156135c0576135b5610eeb896127f2565b9050600194506135c5565b6135d0565b83600101935061355e565b84613616576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b600061362d826402540be40063ffffffff6147a716565b6001600160a01b0385166000908152600c602052604090208054600019019055905060ff8816600114156137ac5760ff8716156136a0576040805162461bcd60e51b815260206004820152600c60248201526b77726f6e672073746174757360a01b604482015290519081900360640190fd5b6001600160a01b0384166000908152600460205260409020546136c9908263ffffffff612ed716565b6001600160a01b0380861660009081526004602090815260408083209490945560058152838220928716825291909152205461370b908263ffffffff612ed716565b6001600160a01b0380861660009081526005602090815260408083209388168352929052205561374442620a8c0063ffffffff61305f16565b6001600160a01b038086166000818152600760209081526040808320948916808452948252918290209490945580518581529051929391927fd6f878a5bcbbe79a64e6418bb0d56aaa20b9a60587d45749819df88dfc7c3c44929181900390910190a361354a565b60ff881661350e576001600160a01b03808516600081815260076020908152604080832094881680845294825280832092909255815185815260ff8c169181019190915281517f4417d10c1e33efa83a770b8d4f47176e78c08c1298d534901ad3b16bb585fa2e929181900390910190a361354a565b6000806000806000805b613835896130b9565b156138ba57846138525761384b6129218a6127f2565b93506138af565b846001141561386e576138676129218a6127f2565b92506138af565b846002141561388a576138836129218a6127f2565b91506138af565b84600314156138aa5761389f610eeb8a6127f2565b9050600195506138af565b6138ba565b84600101945061382c565b85613900576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b6000613917826402540be40063ffffffff6147a716565b6001600160a01b0386166000908152600d602052604090208054600019019055905060ff891660011415613aea5760ff88161561398a576040805162461bcd60e51b815260206004820152600c60248201526b77726f6e672073746174757360a01b604482015290519081900360640190fd5b6001600160a01b038086166000908152600560209081526040808320938816835292905220546139c0908263ffffffff612ed716565b6001600160a01b038681166000908152600560209081526040808320898516845290915280822093909355908516815220546139fc908261305f565b6001600160a01b03808716600090815260056020908152604080832093881683529290522055613a3542620a8c0063ffffffff61305f16565b6001600160a01b0380871660009081526009602090815260408083208985168452825280832093881683529290522055613a7842620a8c0063ffffffff61305f16565b6001600160a01b038087166000818152600960209081526040808320898616808552908352818420958b1680855295835292819020959095558451868152945191947f78bffae3f8c6691ac7fc1a3bff800cb2d612f5ad9ae5b0444cfe2eb15c189e18929081900390910190a4613b7b565b60ff891661350e576001600160a01b038581166000818152600960209081526040808320898616808552818452828520968a16808652968452828520859055908352818420818552835281842093909355805186815260ff8e169281019290925280519293927fb93bee5c59f85ede6b074a99f4ffcd3e3fc0d5c3d8156de331de89a49e0ce77c9281900390910190a45b50505050505050505050565b6000816040516020018082805190602001908083835b60208310613bbc5780518252601f199092019160209182019101613b9d565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405280519060200120836040516020018082805190602001908083835b60208310613c2a5780518252601f199092019160209182019101613c0b565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040528051906020012014905092915050565b015190565b60008060008060005b613c85866130b9565b15613cee5783613ca257613c9b612921876127f2565b9250613ce3565b8360011415613cbe57613cb7612921876127f2565b9150613ce3565b8360021415613cde57613cd3610eeb876127f2565b905060019450613ce3565b613cee565b836001019350613c7c565b84613d34576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b6000613d4b826402540be40063ffffffff6147a716565b6001600160a01b0385166000908152600b6020908152604080832080546000190190556008909152902054909150613d89908263ffffffff61305f16565b6001600160a01b0385166000908152600860209081526040808320939093558251630e4f7c3f60e31b81526004810185905292516110049363727be1f89360248083019493928390030190829087803b158015613de557600080fd5b505af1158015613df9573d6000803e3d6000fd5b505050506040513d6020811015613e0f57600080fd5b5051613e58576040805162461bcd60e51b81526020600482015260136024820152721dda5d1a191c985dc8189b988819985a5b1959606a1b604482015290519081900360640190fd5b6040516001907ff83de021914a4585482db5ca47d520a5657165b443fa2c7ef8ed4635f054da9b90600090a250505050505050565b60008060008060005b613e9f866130b9565b15613f085783613ebc57613eb5612921876127f2565b9250613efd565b8360011415613ed857613ed1612921876127f2565b9150613efd565b8360021415613ef857613eed610eeb876127f2565b905060019450613efd565b613f08565b836001019350613e96565b84613f4e576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b6001600160a01b038084166000908152600c60209081526040808320805460001901905560078252808320938616835292905281812081905590516002917ff83de021914a4585482db5ca47d520a5657165b443fa2c7ef8ed4635f054da9b91a2505050505050565b6000806000806000805b613fca876130b9565b1561404f5784613fe757613fe0612921886127f2565b9350614044565b846001141561400357613ffc612921886127f2565b9250614044565b846002141561401f57614018612921886127f2565b9150614044565b846003141561403f57614034610eeb886127f2565b905060019550614044565b61404f565b846001019450613fc1565b85614095576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b6001600160a01b038481166000908152600d602090815260408083208054600019019055600982528083208785168085528184528285209588168552948352818420849055825280832093835292905281812081905590516003917ff83de021914a4585482db5ca47d520a5657165b443fa2c7ef8ed4635f054da9b91a250505050505050565b805160009061412d57506000610df1565b6020820151805160001a9060c082101561414c57600092505050610df1565b5060019392505050565b8051600090811a6080811015614170576000915050610df1565b60b881108061418b575060c0811080159061418b575060f881105b1561419a576001915050610df1565b60c08110156141ae5760b519019050610df1565b60f519019050610df1565b80516000908190811a60808110156141d457600191506142e5565b60b88110156141e957607e19810191506142e5565b60c081101561426357600060b78203600186019550806020036101000a86510491506001810182019350508083101561425d576040805162461bcd60e51b81526020600482015260116024820152706164646974696f6e206f766572666c6f7760781b604482015290519081900360640190fd5b506142e5565b60f88110156142785760be19810191506142e5565b600060f78203600186019550806020036101000a8651049150600181018201935050808310156142e3576040805162461bcd60e51b81526020600482015260116024820152706164646974696f6e206f766572666c6f7760781b604482015290519081900360640190fd5b505b5092915050565b80516000906015146142fd57600080fd5b6124be82612840565b6000606061431f846402540be40063ffffffff612e8e16565b60408051600480825260a0820190925291955060609190816020015b606081526020019060019003908161433b57905050905061435e8760ff16612f3c565b8160008151811061436b57fe5b6020026020010181905250614388866001600160a01b0316612f19565b8160018151811061439557fe5b60200260200101819052506143a985612f3c565b816002815181106143b657fe5b60200260200101819052506143d08463ffffffff16612f3c565b816003815181106143dd57fe5b602002602001018190525060606143f382612f4f565b94989497509395505050505050565b805160009060011461441357600080fd5b6020820151805160001a9081158061442b5750608082145b1561443b57600092505050610df1565b600192505050610df1565b600081836144955760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315612e4b578181015183820152602001612e33565b5060008385816144a157fe5b0495945050505050565b6060815160011480156144dd5750607f60f81b826000815181106144cb57fe5b01602001516001600160f81b03191611155b156144e9575080610df1565b6124be6144fb8351608060ff16614664565b836145e7565b604080516020808252818301909252606091829190602082018180368337505050602081018490529050600067ffffffffffffffff19841661454557506018614569565b6fffffffffffffffffffffffffffffffff19841661456557506010614569565b5060005b602081101561459f5781818151811061457e57fe5b01602001516001600160f81b031916156145975761459f565b600101614569565b60008160200390506060816040519080825280601f01601f1916602001820160405280156145d4576020820181803683370190505b5080830196909652508452509192915050565b6060806040519050835180825260208201818101602087015b81831015614618578051835260209283019201614600565b50855184518101855292509050808201602086015b8183101561464557805183526020928301920161462d565b508651929092011591909101601f01601f191660405250905092915050565b60606801000000000000000083106146b4576040805162461bcd60e51b815260206004820152600e60248201526d696e70757420746f6f206c6f6e6760901b604482015290519081900360640190fd5b6040805160018082528183019092526060916020820181803683370190505090506037841161470e5782840160f81b816000815181106146f057fe5b60200101906001600160f81b031916908160001a90535090506124be565b606061471985614501565b90508381510160370160f81b8260008151811061473257fe5b60200101906001600160f81b031916908160001a90535061475382826145e7565b95945050505050565b80614766576126ee565b5b60208110614786578251825260209283019290910190601f1901614767565b915181516020939093036101000a6000190180199091169216919091179052565b6000826147b6575060006124be565b828202828482816147c357fe5b0414612ed05760405162461bcd60e51b81526004018080602001828103825260218152602001806148e76021913960400191505060405180910390fd5b60405180606001604052806003906020820280368337509192915050565b604051806040016040528061483161483e565b8152602001600081525090565b60405180604001604052806000815260200160008152509056fe7468652042534352656c61796572466565206d6f642074656e20646563696d616c73206d757374206265207a65726f7468652042534352656c61796572466565206d757374206265206c657373207468616e2072656c61796572466565746865206d696e44656c65676174696f6e206d7573742062652067726561746572207468616e2072656c61796572466565536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f777468652072656c61796572466565206d6f642074656e20646563696d616c73206d757374206265207a65726f746865206d6573736167652073656e646572206d75737420626520676f7665726e616e636520636f6e74726163747468652072656c61796572466565206d757374206265206c657373207468616e206d696e44656c65676174696f6e7468652072656c61796572466565206d757374206265206d6f7265207468616e2042534352656c61796572466565696e73756666696369656e742062616c616e636520616674657220756e64656c6567617465746865206d6573736167652073656e646572206d7573742062652063726f737320636861696e20636f6e74726163747468652042534352656c61796572466565206d757374206e6f74206265207a65726fa164736f6c6343000604000a", }, { ContractAddr: common.HexToAddress(StakeHubContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/cfc0bd1127186a917ddc38fd38d22903034d3f0b", - Code: "6080604052600436106200029f5760003560e01c8063982ef0a7116200015f578063cf06248c11620000c5578063de88700b1162000084578063de88700b146200083d578063e8f67c3b146200085f578063e992aaf51462000877578063f1f74d84146200088f578063fb50b31f14620008a7578063fc0c5ff114620008cc57600080fd5b8063cf06248c1462000793578063d115a20614620007d0578063d6ca429d14620007e8578063d8ca511f146200080d578063daacdb66146200082557600080fd5b8063b187bd26116200011e578063b187bd2614620006c1578063baa7199e14620006e1578063bdceadf31462000706578063c38fbec8146200071e578063c473318f1462000743578063cbb04d9d146200075b57600080fd5b8063982ef0a7146200060e578063a43569b31462000625578063aad3ec961462000659578063ac431751146200067e578063ae0f336d14620006a357600080fd5b80634e6fd6c411620002055780636ec01b2711620001c45780636ec01b27146200052457806375cc7d89146200057c57806376e7d6d614620005a15780637adcf7e814620005b95780638129fc1c14620005de5780638456cb5914620005f657600080fd5b80634e6fd6c4146200045b57806359491871146200048c5780635e7cc1c914620004b157806363a036b514620004d657806364028fbd146200050d57600080fd5b8063417c73a7116200025e578063417c73a7146200035d578063449ecfe6146200038257806345211bfd14620003a75780634838d16514620003cc5780634a49ac4c14620004115780634d99dd16146200043657600080fd5b8063046f7da214620002c65780630661806e14620002de578063092193ab14620003095780630e9fbf51146200032057806338409988146200034557600080fd5b36620002c1576000546301000000900460ff16600114620002bf57600080fd5b005b600080fd5b348015620002d357600080fd5b50620002bf620008e4565b348015620002eb57600080fd5b50620002f660025481565b6040519081526020015b60405180910390f35b620002bf6200031a36600462006971565b62000945565b3480156200032d57600080fd5b50620002bf6200033f366004620069d5565b62000ec1565b3480156200035257600080fd5b50620002f660035481565b3480156200036a57600080fd5b50620002bf6200037c36600462006971565b6200113f565b3480156200038f57600080fd5b50620002bf620003a136600462006971565b6200118f565b348015620003b457600080fd5b50620002bf620003c636600462006971565b62001342565b348015620003d957600080fd5b5062000400620003eb36600462006971565b60176020526000908152604090205460ff1681565b604051901515815260200162000300565b3480156200041e57600080fd5b50620002bf6200043036600462006971565b62001505565b3480156200044357600080fd5b50620002bf6200045536600462006a1a565b62001552565b3480156200046857600080fd5b506200047361dead81565b6040516001600160a01b03909116815260200162000300565b3480156200049957600080fd5b50620002bf620004ab36600462006a5f565b62001b70565b348015620004be57600080fd5b50620002bf620004d036600462006acd565b62002942565b348015620004e357600080fd5b50620004fb620004f536600462006aed565b62002b49565b60405162000300949392919062006baa565b620002bf6200051e36600462006c79565b620031d1565b3480156200053157600080fd5b50620005496200054336600462006971565b620036a1565b6040805182516001600160401b039081168252602080850151821690830152928201519092169082015260600162000300565b3480156200058957600080fd5b50620002bf6200059b36600462006971565b6200374b565b348015620005ae57600080fd5b50620002f660095481565b348015620005c657600080fd5b5062000473620005d8366004620069d5565b6200391e565b348015620005eb57600080fd5b50620002bf62003956565b3480156200060357600080fd5b50620002bf62003c6c565b620002bf6200061f36600462006d4b565b62003cd2565b3480156200063257600080fd5b506200064a6200064436600462006971565b62004377565b60405162000300919062006d85565b3480156200066657600080fd5b50620002bf6200067836600462006a1a565b62004664565b3480156200068b57600080fd5b50620002bf6200069d36600462006e0b565b620047cd565b348015620006b057600080fd5b50620002f6670de0b6b3a764000081565b348015620006ce57600080fd5b5060005462010000900460ff1662000400565b348015620006ee57600080fd5b50620002bf6200070036600462006e7d565b6200562b565b3480156200071357600080fd5b50620002f660085481565b3480156200072b57600080fd5b50620002bf6200073d36600462006971565b620057f8565b3480156200075057600080fd5b50620002f660045481565b3480156200076857600080fd5b50620007806200077a36600462006971565b62005a16565b6040516200030095949392919062006f09565b348015620007a057600080fd5b5062000473620007b236600462006971565b6001600160a01b039081166000908152600f60205260409020541690565b348015620007dd57600080fd5b50620002f661271081565b348015620007f557600080fd5b50620002bf6200080736600462006f4b565b62005e75565b3480156200081a57600080fd5b50620002f660075481565b3480156200083257600080fd5b50620002f660135481565b3480156200084a57600080fd5b5060165462000473906001600160a01b031681565b3480156200086c57600080fd5b50620002f660015481565b3480156200088457600080fd5b50620002f660065481565b3480156200089c57600080fd5b50620002f6600a5481565b348015620008b457600080fd5b50620002bf620008c636600462006e0b565b62005fc4565b348015620008d957600080fd5b50620002f660055481565b6016546001600160a01b03163314620009105760405163f2771a9960e01b815260040160405180910390fd5b6000805462ff0000191681556040517f62451d457bc659158be6e6247f56ec1df424a5c7597f71c20c2bc44e0965c8f99190a1565b33611000146200097157604051630f22c43960e41b815261100060048201526024015b60405180910390fd5b6001600160a01b038082166000908152600f60209081526040808320548416808452600d83528184208251610140810184528154871681526001820154871694810194909452600281015490951691830191909152600384018054919491606084019190620009e09062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462000a0e9062006f83565b801562000a5f5780601f1062000a335761010080835404028352916020019162000a5f565b820191906000526020600020905b81548152906001019060200180831162000a4157829003601f168201915b505050505081526020016004820160405180608001604052908160008201805462000a8a9062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462000ab89062006f83565b801562000b095780601f1062000add5761010080835404028352916020019162000b09565b820191906000526020600020905b81548152906001019060200180831162000aeb57829003601f168201915b5050505050815260200160018201805462000b249062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462000b529062006f83565b801562000ba35780601f1062000b775761010080835404028352916020019162000ba3565b820191906000526020600020905b81548152906001019060200180831162000b8557829003601f168201915b5050505050815260200160028201805462000bbe9062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462000bec9062006f83565b801562000c3d5780601f1062000c115761010080835404028352916020019162000c3d565b820191906000526020600020905b81548152906001019060200180831162000c1f57829003601f168201915b5050505050815260200160038201805462000c589062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462000c869062006f83565b801562000cd75780601f1062000cab5761010080835404028352916020019162000cd7565b820191906000526020600020905b81548152906001019060200180831162000cb957829003601f168201915b505050919092525050508152604080516060808201835260088501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600984015460ff16151582840152600a84015490830152600b8301546080830152805161028081019182905260a09092019190600c84019060149082845b81548152602001906001019080831162000d63575050509190925250505060408101519091506001600160a01b0316158062000da057508060c001515b1562000e1157816001600160a01b03167ffc8bff675087dd2da069cc3fb517b9ed001e19750c0865241a5542dba1ba170d60405162000e049060208082526011908201527024a72b20a624a22fab20a624a220aa27a960791b604082015260600190565b60405180910390a2505050565b60408181015160a0830151519151632f303ebb60e11b81526001600160401b0390921660048301526001600160a01b031690635e607d769034906024016000604051808303818588803b15801562000e6857600080fd5b505af115801562000e7d573d6000803e3d6000fd5b5050505050816001600160a01b03167fe34918ff1c7084970068b53fd71ad6d8b04e9f15d3886cbf006443e6cdc52ea63460405162000e0491815260200190565b50565b336110011462000ee957604051630f22c43960e41b8152611001600482015260240162000968565b6000600e838360405162000eff92919062006fb9565b908152604051908190036020019020546001600160a01b0316905062000f27600b82620061e6565b62000f455760405163fdf4600b60e01b815260040160405180910390fd5b6001600160a01b0381166000908152600d602052604081209062000f6d620151804262006fdf565b6014546000828152601560205260409020549192501162000fa15760405163413361db60e01b815260040160405180910390fd5b600081815260156020526040812080546001929062000fc290849062007002565b90915550600090508062000fd88560026200620b565b915091508162000ffb57604051631b919bb160e11b815260040160405180910390fd5b600284015460085460405163045bc4d160e41b815260048101919091526000916001600160a01b0316906345bc4d10906024016020604051808303816000875af11580156200104e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001074919062007018565b905062001082858362006295565b856001600160a01b03167f6e9a2ee7aee95665e3a774a212eb11441b217e3e4656ab9563793094689aabb283836002604051620010c29392919062007032565b60405180910390a26002850154604051633041949b60e01b81526001600160a01b039182166004820152908716602482015261200590633041949b90604401600060405180830381600087803b1580156200111c57600080fd5b505af115801562001131573d6000803e3d6000fd5b505050505050505050505050565b6016546001600160a01b031633146200116b5760405163f2771a9960e01b815260040160405180910390fd5b6001600160a01b03166000908152601760205260409020805460ff19166001179055565b60005462010000900460ff1615620011ba5760405163d7485e8f60e01b815260040160405180910390fd5b80620011c8600b82620061e6565b620011e65760405163fdf4600b60e01b815260040160405180910390fd5b6001600160a01b0382166000908152600d60205260409020600981015460ff166200122457604051634b6b857d60e01b815260040160405180910390fd5b6002805490820154604051630913db4760e01b81526001600160a01b03868116600483015290911690630913db4790602401602060405180830381865afa15801562001274573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200129a919062007018565b1015620012ba576040516317b204bf60e11b815260040160405180910390fd5b4281600a01541115620012e05760405163170cb76760e21b815260040160405180910390fd5b60098101805460ff191690556013805460019190600090620013049084906200706d565b90915550506040516001600160a01b038416907f9390b453426557da5ebdc31f19a37753ca04addf656d32f35232211bb2af3f1990600090a2505050565b60005462010000900460ff16156200136d5760405163d7485e8f60e01b815260040160405180910390fd5b3360009081526017602052604090205460ff16156200139f5760405163b1d02c3d60e01b815260040160405180910390fd5b33620013ad600b82620061e6565b620013cb5760405163fdf4600b60e01b815260040160405180910390fd5b6001600160a01b038216620013f357604051636520611b60e11b815260040160405180910390fd5b6001600160a01b038281166000908152600f6020526040902054161515806200143457506001600160a01b03821660009081526011602052604090205460ff165b156200145357604051631e6f587560e11b815260040160405180910390fd5b336000818152600d60205260409020600b810154429062001478906201518062007002565b11156200149857604051631f92cdbd60e11b815260040160405180910390fd5b80546001600160a01b038086166001600160a01b03199283168117845542600b8501556000818152600f60205260408082208054948816949095168417909455925190927f6e4e747ca35203f16401c69805c7dd52fff67ef60b0ebc5c7fe16890530f223591a350505050565b6016546001600160a01b03163314620015315760405163f2771a9960e01b815260040160405180910390fd5b6001600160a01b03166000908152601760205260409020805460ff19169055565b60005462010000900460ff16156200157d5760405163d7485e8f60e01b815260040160405180910390fd5b3360009081526017602052604090205460ff1615620015af5760405163b1d02c3d60e01b815260040160405180910390fd5b81620015bd600b82620061e6565b620015db5760405163fdf4600b60e01b815260040160405180910390fd5b81600003620015fd57604051639811e0c760e01b815260040160405180910390fd5b6001600160a01b038084166000908152600d60209081526040808320815161014081018352815486168152600182015486169381019390935260028101549094169082015260038301805433949160608401916200165b9062006f83565b80601f0160208091040260200160405190810160405280929190818152602001828054620016899062006f83565b8015620016da5780601f10620016ae57610100808354040283529160200191620016da565b820191906000526020600020905b815481529060010190602001808311620016bc57829003601f168201915b5050505050815260200160048201604051806080016040529081600082018054620017059062006f83565b80601f0160208091040260200160405190810160405280929190818152602001828054620017339062006f83565b8015620017845780601f10620017585761010080835404028352916020019162001784565b820191906000526020600020905b8154815290600101906020018083116200176657829003601f168201915b505050505081526020016001820180546200179f9062006f83565b80601f0160208091040260200160405190810160405280929190818152602001828054620017cd9062006f83565b80156200181e5780601f10620017f2576101008083540402835291602001916200181e565b820191906000526020600020905b8154815290600101906020018083116200180057829003601f168201915b50505050508152602001600282018054620018399062006f83565b80601f0160208091040260200160405190810160405280929190818152602001828054620018679062006f83565b8015620018b85780601f106200188c57610100808354040283529160200191620018b8565b820191906000526020600020905b8154815290600101906020018083116200189a57829003601f168201915b50505050508152602001600382018054620018d39062006f83565b80601f0160208091040260200160405190810160405280929190818152602001828054620019019062006f83565b8015620019525780601f10620019265761010080835404028352916020019162001952565b820191906000526020600020905b8154815290600101906020018083116200193457829003601f168201915b505050919092525050508152604080516060808201835260088501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600984015460ff16151582840152600a84015490830152600b8301546080830152805161028081019182905260a09092019190600c84019060149082845b815481526020019060010190808311620019de575050509190925250505060408082015190516326ccee8b60e11b81526001600160a01b0385811660048301526024820188905292935060009290911690634d99dd16906044016020604051808303816000875af115801562001a58573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001a7e919062007018565b9050826001600160a01b0316866001600160a01b03167f3aace7340547de7b9156593a7652dc07ee900cea3fd8f82cb6c9d38b40829802878460405162001acf929190918252602082015260400190565b60405180910390a3856001600160a01b0316836001600160a01b03160362001afc5762001afc866200638a565b6040828101519051633041949b60e01b81526001600160a01b039182166004820152908416602482015261200590633041949b906044015b600060405180830381600087803b15801562001b4f57600080fd5b505af115801562001b64573d6000803e3d6000fd5b50505050505050505050565b60005462010000900460ff161562001b9b5760405163d7485e8f60e01b815260040160405180910390fd5b3360009081526017602052604090205460ff161562001bcd5760405163b1d02c3d60e01b815260040160405180910390fd5b8362001bdb600b82620061e6565b62001bf95760405163fdf4600b60e01b815260040160405180910390fd5b8362001c07600b82620061e6565b62001c255760405163fdf4600b60e01b815260040160405180910390fd5b8360000362001c4757604051639811e0c760e01b815260040160405180910390fd5b846001600160a01b0316866001600160a01b03160362001c7a5760405163f0e3e62960e01b815260040160405180910390fd5b6001600160a01b038087166000908152600d602090815260408083208151610140810183528154861681526001820154861693810193909352600281015490941690820152600383018054339491606084019162001cd89062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462001d069062006f83565b801562001d575780601f1062001d2b5761010080835404028352916020019162001d57565b820191906000526020600020905b81548152906001019060200180831162001d3957829003601f168201915b505050505081526020016004820160405180608001604052908160008201805462001d829062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462001db09062006f83565b801562001e015780601f1062001dd55761010080835404028352916020019162001e01565b820191906000526020600020905b81548152906001019060200180831162001de357829003601f168201915b5050505050815260200160018201805462001e1c9062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462001e4a9062006f83565b801562001e9b5780601f1062001e6f5761010080835404028352916020019162001e9b565b820191906000526020600020905b81548152906001019060200180831162001e7d57829003601f168201915b5050505050815260200160028201805462001eb69062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462001ee49062006f83565b801562001f355780601f1062001f095761010080835404028352916020019162001f35565b820191906000526020600020905b81548152906001019060200180831162001f1757829003601f168201915b5050505050815260200160038201805462001f509062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462001f7e9062006f83565b801562001fcf5780601f1062001fa35761010080835404028352916020019162001fcf565b820191906000526020600020905b81548152906001019060200180831162001fb157829003601f168201915b505050919092525050508152604080516060808201835260088501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600984015460ff16151582840152600a84015490830152600b8301546080830152805161028081019182905260a09092019190600c84019060149082845b8154815260200190600101908083116200205b57505050919092525050506001600160a01b038089166000908152600d60209081526040808320815161014081018352815486168152600182015486169381019390935260028101549094169082015260038301805494955091939092916060840191620020dc9062006f83565b80601f01602080910402602001604051908101604052809291908181526020018280546200210a9062006f83565b80156200215b5780601f106200212f576101008083540402835291602001916200215b565b820191906000526020600020905b8154815290600101906020018083116200213d57829003601f168201915b5050505050815260200160048201604051806080016040529081600082018054620021869062006f83565b80601f0160208091040260200160405190810160405280929190818152602001828054620021b49062006f83565b8015620022055780601f10620021d95761010080835404028352916020019162002205565b820191906000526020600020905b815481529060010190602001808311620021e757829003601f168201915b50505050508152602001600182018054620022209062006f83565b80601f01602080910402602001604051908101604052809291908181526020018280546200224e9062006f83565b80156200229f5780601f1062002273576101008083540402835291602001916200229f565b820191906000526020600020905b8154815290600101906020018083116200228157829003601f168201915b50505050508152602001600282018054620022ba9062006f83565b80601f0160208091040260200160405190810160405280929190818152602001828054620022e89062006f83565b8015620023395780601f106200230d5761010080835404028352916020019162002339565b820191906000526020600020905b8154815290600101906020018083116200231b57829003601f168201915b50505050508152602001600382018054620023549062006f83565b80601f0160208091040260200160405190810160405280929190818152602001828054620023829062006f83565b8015620023d35780601f10620023a757610100808354040283529160200191620023d3565b820191906000526020600020905b815481529060010190602001808311620023b557829003601f168201915b505050919092525050508152604080516060808201835260088501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600984015460ff16151582840152600a84015490830152600b8301546080830152805161028081019182905260a09092019190600c84019060149082845b8154815260200190600101908083116200245f5750505050508152505090508060c001518015620024a25750876001600160a01b0316836001600160a01b031614155b15620024c157604051636468920360e01b815260040160405180910390fd5b6000805463ff0000001916630100000017815560408381015190516352e82ce560e11b81526001600160a01b038681166004830152602482018b90529091169063a5d059ca906044016020604051808303816000875af11580156200252a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002550919062007018565b9050600354811015620025765760405163dc6f0bdd60e01b815260040160405180910390fd5b896001600160a01b0316846001600160a01b03161480156200260b57506002546040808501519051630913db4760e01b81526001600160a01b038d8116600483015290911690630913db4790602401602060405180830381865afa158015620025e3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002609919062007018565b105b156200262a576040516317b204bf60e11b815260040160405180910390fd5b6000612710600654836200263f919062007083565b6200264b919062006fdf565b9050600083604001516001600160a01b03168260405160006040518083038185875af1925050503d8060008114620026a0576040519150601f19603f3d011682016040523d82523d6000602084013e620026a5565b606091505b5050905080620026c8576040516312171d8360e31b815260040160405180910390fd5b620026d482846200706d565b60408086015190516317066a5760e21b81526001600160a01b03898116600483015292955060009290911690635c19a95c90869060240160206040518083038185885af11580156200272a573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019062002751919062007018565b905060008060036101000a81548160ff021916908360ff160217905550866001600160a01b03168c6001600160a01b03168e6001600160a01b03167ffdac6e81913996d95abcc289e90f2d8bd235487ce6fe6f821e7d21002a1915b48e8589604051620027d1939291909283526020830191909152604082015260600190565b60405180910390a4604080516002808252606082018352600092602083019080368337019050509050866040015181600081518110620028155762002815620070b3565b60200260200101906001600160a01b031690816001600160a01b031681525050856040015181600181518110620028505762002850620070b3565b6001600160a01b0390921660209283029190910190910152604051634484077560e01b815261200590634484077590620028919084908c90600401620070c9565b600060405180830381600087803b158015620028ac57600080fd5b505af1158015620028c1573d6000803e3d6000fd5b505050508a1562002932576040516372f6ad8f60e11b81526001600160a01b0389811660048301528e1660248201526120059063e5ed5b1e90604401600060405180830381600087803b1580156200291857600080fd5b505af11580156200292d573d6000803e3d6000fd5b505050505b5050505050505050505050505050565b60005462010000900460ff16156200296d5760405163d7485e8f60e01b815260040160405180910390fd5b3360009081526017602052604090205460ff16156200299f5760405163b1d02c3d60e01b815260040160405180910390fd5b33620029ad600b82620061e6565b620029cb5760405163fdf4600b60e01b815260040160405180910390fd5b336000818152600d60205260409020600b8101544290620029f0906201518062007002565b111562002a1057604051631f92cdbd60e11b815260040160405180910390fd5b60088101546001600160401b03600160401b9091048116908516111562002a4a5760405163dc81db8560e01b815260040160405180910390fd5b60088101546000906001600160401b03908116908616101562002a8857600882015462002a829086906001600160401b0316620070f5565b62002aa2565b600882015462002aa2906001600160401b031686620070f5565b60088301546001600160401b039182169250600160801b90041681111562002add5760405163dc81db8560e01b815260040160405180910390fd5b60088201805467ffffffffffffffff19166001600160401b03871690811790915542600b8401556040519081526001600160a01b038416907f78cdd96edf59e09cfd4d26ef6ef6c92d166effe6a40970c54821206d541932cb9060200160405180910390a25050505050565b6060806060600062002b5c600b620064a3565b905080861015620031c857841562002b75578462002b77565b805b945060008562002b8888846200706d565b1162002ba05762002b9a87836200706d565b62002ba2565b855b9050806001600160401b0381111562002bbf5762002bbf6200709d565b60405190808252806020026020018201604052801562002be9578160200160208202803683370190505b509450806001600160401b0381111562002c075762002c076200709d565b60405190808252806020026020018201604052801562002c31578160200160208202803683370190505b509350806001600160401b0381111562002c4f5762002c4f6200709d565b60405190808252806020026020018201604052801562002c8457816020015b606081526020019060019003908162002c6e5790505b50925060005b81811015620031c557600062002cae62002ca5838b62007002565b600b90620064ae565b6001600160a01b038082166000908152600d6020908152604080832081516101408101835281548616815260018201548616938101939093526002810154909416908201526003830180549495509193909291606084019162002d119062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462002d3f9062006f83565b801562002d905780601f1062002d645761010080835404028352916020019162002d90565b820191906000526020600020905b81548152906001019060200180831162002d7257829003601f168201915b505050505081526020016004820160405180608001604052908160008201805462002dbb9062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462002de99062006f83565b801562002e3a5780601f1062002e0e5761010080835404028352916020019162002e3a565b820191906000526020600020905b81548152906001019060200180831162002e1c57829003601f168201915b5050505050815260200160018201805462002e559062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462002e839062006f83565b801562002ed45780601f1062002ea85761010080835404028352916020019162002ed4565b820191906000526020600020905b81548152906001019060200180831162002eb657829003601f168201915b5050505050815260200160028201805462002eef9062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462002f1d9062006f83565b801562002f6e5780601f1062002f425761010080835404028352916020019162002f6e565b820191906000526020600020905b81548152906001019060200180831162002f5057829003601f168201915b5050505050815260200160038201805462002f899062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462002fb79062006f83565b8015620030085780601f1062002fdc5761010080835404028352916020019162003008565b820191906000526020600020905b81548152906001019060200180831162002fea57829003601f168201915b505050919092525050508152604080516060808201835260088501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600984015460ff16151582840152600a84015490830152600b8301546080830152805161028081019182905260a09092019190600c84019060149082845b815481526020019060010190808311620030945750505050508152505090508060000151888481518110620030cd57620030cd620070b3565b60200260200101906001600160a01b031690816001600160a01b0316815250508060c00151620031665780604001516001600160a01b03166315d1f8986040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200313a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003160919062007018565b62003169565b60005b8784815181106200317e576200317e620070b3565b6020026020010181815250508060600151868481518110620031a457620031a4620070b3565b6020026020010181905250505080620031bd906200711f565b905062002c8a565b50505b92959194509250565b60005462010000900460ff1615620031fc5760405163d7485e8f60e01b815260040160405180910390fd5b3360009081526017602052604090205460ff16156200322e5760405163b1d02c3d60e01b815260040160405180910390fd5b336200323c600b82620061e6565b156200325b57604051635f28f62b60e01b815260040160405180910390fd5b6001600160a01b038881166000908152600f6020526040902054161515806200329c57506001600160a01b03881660009081526011602052604090205460ff165b15620032bb57604051631e6f587560e11b815260040160405180910390fd5b60006001600160a01b0316600e8888604051620032da92919062006fb9565b908152604051908190036020019020546001600160a01b0316141580620033245750601287876040516200331092919062006fb9565b9081526040519081900360200190205460ff165b1562003343576040516311fdb94760e01b815260040160405180910390fd5b60025434906200335d90670de0b6b3a76400009062007002565b8110156200337e576040516317b204bf60e11b815260040160405180910390fd5b6001600160a01b038916620033a657604051636520611b60e11b815260040160405180910390fd5b611388620033bb604086016020870162006acd565b6001600160401b03161180620034015750620033de604085016020860162006acd565b6001600160401b0316620033f6602086018662006acd565b6001600160401b0316115b806200344057506200341a604085016020860162006acd565b6001600160401b031662003435606086016040870162006acd565b6001600160401b0316115b156200345f5760405163dc81db8560e01b815260040160405180910390fd5b620034aa6200346f84806200713b565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250620064bc92505050565b620034c857604051635dba5ad760e01b815260040160405180910390fd5b620034d6888888886200665e565b620034f457604051631647e3cb60e11b815260040160405180910390fd5b600062003542836200350786806200713b565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506200678b92505050565b905062003551600b8462006855565b506001600160a01b038381166000818152600d6020526040902080546001600160a01b03199081168e8516178255600182018054821690931790925560028101805490921692841692909217905560038101620035b08a8c83620071ce565b508460048201620035c282826200729b565b5086905060088201620035d68282620073d8565b505042600b8201556001600160a01b038b81166000908152600f60205260409081902080546001600160a01b03191692871692909217909155518490600e9062003624908d908d9062006fb9565b90815260405190819003602001812080546001600160a01b039384166001600160a01b03199091161790558382169186811691908e16907faecd9fb95e79c75a3a1de93362c6be5fe6ab65770d8614be583884161cd8228d906200368c908f908f90620074a8565b60405180910390a45050505050505050505050565b604080516060810182526000808252602082018190529181019190915281620036cc600b82620061e6565b620036ea5760405163fdf4600b60e01b815260040160405180910390fd5b6001600160a01b0383166000908152600d602090815260409182902082516060810184526008909101546001600160401b038082168352600160401b8204811693830193909352600160801b90049091169181019190915291505b50919050565b33611001146200377357604051630f22c43960e41b8152611001600482015260240162000968565b6001600160a01b038082166000908152600f6020526040902054166200379b600b82620061e6565b620037b95760405163fdf4600b60e01b815260040160405180910390fd5b6001600160a01b038181166000908152600d60205260408082206002810154600754925163045bc4d160e41b81526004810193909352909316906345bc4d10906024016020604051808303816000875af11580156200381c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003842919062007018565b905060006009544262003856919062007002565b905062003864838262006295565b836001600160a01b03167f6e9a2ee7aee95665e3a774a212eb11441b217e3e4656ab9563793094689aabb282846001604051620038a49392919062007032565b60405180910390a26002830154604051633041949b60e01b81526001600160a01b039182166004820152908516602482015261200590633041949b90604401600060405180830381600087803b158015620038fe57600080fd5b505af115801562003913573d6000803e3d6000fd5b505050505050505050565b6000600e83836040516200393492919062006fb9565b908152604051908190036020019020546001600160a01b031690505b92915050565b600054610100900460ff1615808015620039775750600054600160ff909116105b80620039935750303b15801562003993575060005460ff166001145b620039f85760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840162000968565b6000805460ff19166001179055801562003a1c576000805461ff0019166101001790555b33411462003a3d5760405163022d8c9560e31b815260040160405180910390fd5b3a1562003a5d576040516383f1b1d360e01b815260040160405180910390fd5b611388600155686c6b935b8bbd4000006002908155670de0b6b3a7640000600355601d60045562093a806005556006819055678ac7230489e80000600755680ad78ebc5ac62000006008556202a30060095562278d00600a5560145560408051606081810183528282529182919062008671602083013980602001905181019062003ae9919062007517565b9150604051806060016040528060408152602001620086716040913980602001905181019062003b1a9190620075c1565b905060005b825181101562003b895760016011600085848151811062003b445762003b44620070b3565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905562003b81816200711f565b905062003b1f565b5060005b815181101562003bfa576001601283838151811062003bb05762003bb0620070b3565b602002602001015160405162003bc79190620076d7565b908152604051908190036020019020805491151560ff1990921691909117905562003bf2816200711f565b905062003b8d565b5050601680546001600160a01b03191673df87f0e2b8519ea2dd4abd8b639cdd628497ed2517905550801562000ebe576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b6016546001600160a01b0316331462003c985760405163f2771a9960e01b815260040160405180910390fd5b6000805462ff00001916620100001781556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e7529190a1565b60005462010000900460ff161562003cfd5760405163d7485e8f60e01b815260040160405180910390fd5b3360009081526017602052604090205460ff161562003d2f5760405163b1d02c3d60e01b815260040160405180910390fd5b8162003d3d600b82620061e6565b62003d5b5760405163fdf4600b60e01b815260040160405180910390fd5b600354349081101562003d815760405163dc6f0bdd60e01b815260040160405180910390fd5b6001600160a01b038085166000908152600d602090815260408083208151610140810183528154861681526001820154861693810193909352600281015490941690820152600383018054339491606084019162003ddf9062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462003e0d9062006f83565b801562003e5e5780601f1062003e325761010080835404028352916020019162003e5e565b820191906000526020600020905b81548152906001019060200180831162003e4057829003601f168201915b505050505081526020016004820160405180608001604052908160008201805462003e899062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462003eb79062006f83565b801562003f085780601f1062003edc5761010080835404028352916020019162003f08565b820191906000526020600020905b81548152906001019060200180831162003eea57829003601f168201915b5050505050815260200160018201805462003f239062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462003f519062006f83565b801562003fa25780601f1062003f765761010080835404028352916020019162003fa2565b820191906000526020600020905b81548152906001019060200180831162003f8457829003601f168201915b5050505050815260200160028201805462003fbd9062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462003feb9062006f83565b80156200403c5780601f1062004010576101008083540402835291602001916200403c565b820191906000526020600020905b8154815290600101906020018083116200401e57829003601f168201915b50505050508152602001600382018054620040579062006f83565b80601f0160208091040260200160405190810160405280929190818152602001828054620040859062006f83565b8015620040d65780601f10620040aa57610100808354040283529160200191620040d6565b820191906000526020600020905b815481529060010190602001808311620040b857829003601f168201915b505050919092525050508152604080516060808201835260088501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600984015460ff16151582840152600a84015490830152600b8301546080830152805161028081019182905260a09092019190600c84019060149082845b815481526020019060010190808311620041625750505050508152505090508060c001518015620041a55750856001600160a01b0316826001600160a01b031614155b15620041c457604051636468920360e01b815260040160405180910390fd5b60408082015190516317066a5760e21b81526001600160a01b0384811660048301526000921690635c19a95c90869060240160206040518083038185885af115801562004215573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906200423c919062007018565b9050826001600160a01b0316876001600160a01b03167f24d7bda8602b916d64417f0dbfe2e2e88ec9b1157bd9f596dfdb91ba26624e0483876040516200428d929190918252602082015260400190565b60405180910390a36040828101519051633041949b60e01b81526001600160a01b039182166004820152908416602482015261200590633041949b90604401600060405180830381600087803b158015620042e757600080fd5b505af1158015620042fc573d6000803e3d6000fd5b5050505085156200436e576040516372f6ad8f60e11b81526001600160a01b038085166004830152881660248201526120059063e5ed5b1e906044015b600060405180830381600087803b1580156200435457600080fd5b505af115801562004369573d6000803e3d6000fd5b505050505b50505050505050565b620043a36040518060800160405280606081526020016060815260200160608152602001606081525090565b81620043b1600b82620061e6565b620043cf5760405163fdf4600b60e01b815260040160405180910390fd5b6001600160a01b0383166000908152600d602052604090819020815160808101909252600401805482908290620044069062006f83565b80601f0160208091040260200160405190810160405280929190818152602001828054620044349062006f83565b8015620044855780601f10620044595761010080835404028352916020019162004485565b820191906000526020600020905b8154815290600101906020018083116200446757829003601f168201915b50505050508152602001600182018054620044a09062006f83565b80601f0160208091040260200160405190810160405280929190818152602001828054620044ce9062006f83565b80156200451f5780601f10620044f3576101008083540402835291602001916200451f565b820191906000526020600020905b8154815290600101906020018083116200450157829003601f168201915b505050505081526020016002820180546200453a9062006f83565b80601f0160208091040260200160405190810160405280929190818152602001828054620045689062006f83565b8015620045b95780601f106200458d57610100808354040283529160200191620045b9565b820191906000526020600020905b8154815290600101906020018083116200459b57829003601f168201915b50505050508152602001600382018054620045d49062006f83565b80601f0160208091040260200160405190810160405280929190818152602001828054620046029062006f83565b8015620046535780601f10620046275761010080835404028352916020019162004653565b820191906000526020600020905b8154815290600101906020018083116200463557829003601f168201915b505050505081525050915050919050565b60005462010000900460ff16156200468f5760405163d7485e8f60e01b815260040160405180910390fd5b3360009081526017602052604090205460ff1615620046c15760405163b1d02c3d60e01b815260040160405180910390fd5b81620046cf600b82620061e6565b620046ed5760405163fdf4600b60e01b815260040160405180910390fd5b6001600160a01b038381166000908152600d6020526040808220600201549051635569f64b60e11b8152336004820152602481018690529192169063aad3ec96906044016020604051808303816000875af115801562004751573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004777919062007018565b9050336001600160a01b0316846001600160a01b03167ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd399268383604051620047bf91815260200190565b60405180910390a350505050565b3361100714620047f557604051630f22c43960e41b8152611007600482015260240162000968565b620048626040518060400160405280601081526020016f1d1c985b9cd9995c91d85cd31a5b5a5d60821b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200686c9050565b15620049105760208114620048945783838383604051630a5a604160e01b8152600401620009689493929190620076f5565b604080516020601f8401819004810282018101909252828152600091620048d7918585808385018382808284376000920191909152509293925050620068c99050565b90506108fc811015620049075784848484604051630a5a604160e01b8152600401620009689493929190620076f5565b600155620055e6565b620049816040518060400160405280601481526020017336b4b729b2b6332232b632b3b0ba34b7b721272160611b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200686c9050565b1562004a365760208114620049b35783838383604051630a5a604160e01b8152600401620009689493929190620076f5565b604080516020601f8401819004810282018101909252828152600091620049f6918585808385018382808284376000920191909152509293925050620068c99050565b9050683635c9adc5dea0000081101562004a2d5784848484604051630a5a604160e01b8152600401620009689493929190620076f5565b600255620055e6565b62004aa9604051806040016040528060168152602001756d696e44656c65676174696f6e424e424368616e676560501b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200686c9050565b1562004b5d576020811462004adb5783838383604051630a5a604160e01b8152600401620009689493929190620076f5565b604080516020601f840181900481028201810190925282815260009162004b1e918585808385018382808284376000920191909152509293925050620068c99050565b905067016345785d8a000081101562004b545784848484604051630a5a604160e01b8152600401620009689493929190620076f5565b600355620055e6565b62004bce604051806040016040528060148152602001736d6178456c656374656456616c696461746f727360601b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200686c9050565b1562004c88576020811462004c005783838383604051630a5a604160e01b8152600401620009689493929190620076f5565b604080516020601f840181900481028201810190925282815260009162004c43918585808385018382808284376000920191909152509293925050620068c99050565b9050600181108062004c5657506101f481115b1562004c7f5784848484604051630a5a604160e01b8152600401620009689493929190620076f5565b600455620055e6565b62004cf16040518060400160405280600c81526020016b1d5b989bdb9914195c9a5bd960a21b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200686c9050565b1562004da0576020811462004d235783838383604051630a5a604160e01b8152600401620009689493929190620076f5565b604080516020601f840181900481028201810190925282815260009162004d66918585808385018382808284376000920191909152509293925050620068c99050565b90506203f48081101562004d975784848484604051630a5a604160e01b8152600401620009689493929190620076f5565b600555620055e6565b62004e0e60405180604001604052806011815260200170726564656c65676174654665655261746560781b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200686c9050565b1562004ebb576020811462004e405783838383604051630a5a604160e01b8152600401620009689493929190620076f5565b604080516020601f840181900481028201810190925282815260009162004e83918585808385018382808284376000920191909152509293925050620068c99050565b9050606481111562004eb25784848484604051630a5a604160e01b8152600401620009689493929190620076f5565b600655620055e6565b62004f2b60405180604001604052806013815260200172191bdddb9d1a5b5954db185cda105b5bdd5b9d606a1b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200686c9050565b1562004fec576020811462004f5d5783838383604051630a5a604160e01b8152600401620009689493929190620076f5565b604080516020601f840181900481028201810190925282815260009162004fa0918585808385018382808284376000920191909152509293925050620068c99050565b9050674563918244f4000081108062004fba575060085481115b1562004fe35784848484604051630a5a604160e01b8152600401620009689493929190620076f5565b600755620055e6565b6200505a6040518060400160405280601181526020017019995b1bdb9e54db185cda105b5bdd5b9d607a1b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200686c9050565b156200511d57602081146200508c5783838383604051630a5a604160e01b8152600401620009689493929190620076f5565b604080516020601f8401819004810282018101909252828152600091620050cf918585808385018382808284376000920191909152509293925050620068c99050565b905068056bc75e2d63100000811080620050eb57506007548111155b15620051145784848484604051630a5a604160e01b8152600401620009689493929190620076f5565b600855620055e6565b6200518a6040518060400160405280601081526020016f646f776e74696d654a61696c54696d6560801b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200686c9050565b15620052475760208114620051bc5783838383604051630a5a604160e01b8152600401620009689493929190620076f5565b604080516020601f8401819004810282018101909252828152600091620051ff918585808385018382808284376000920191909152509293925050620068c99050565b90506202a300811080620052155750600a548110155b156200523e5784848484604051630a5a604160e01b8152600401620009689493929190620076f5565b600955620055e6565b620052b26040518060400160405280600e81526020016d66656c6f6e794a61696c54696d6560901b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200686c9050565b156200536f5760208114620052e45783838383604051630a5a604160e01b8152600401620009689493929190620076f5565b604080516020601f840181900481028201810190925282815260009162005327918585808385018382808284376000920191909152509293925050620068c99050565b9050620d2f008110806200533d57506009548111155b15620053665784848484604051630a5a604160e01b8152600401620009689493929190620076f5565b600a55620055e6565b620053d86040518060400160405280600c81526020016b66656c6f6e7950657244617960a01b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200686c9050565b156200548457602081146200540a5783838383604051630a5a604160e01b8152600401620009689493929190620076f5565b604080516020601f84018190048102820181019092528281526000916200544d918585808385018382808284376000920191909152509293925050620068c99050565b9050806000036200547b5784848484604051630a5a604160e01b8152600401620009689493929190620076f5565b601455620055e6565b620054ef6040518060400160405280600e81526020016d30b9b9b2ba283937ba32b1ba37b960911b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200686c9050565b15620055c35760148114620055215783838383604051630a5a604160e01b8152600401620009689493929190620076f5565b600062005569601484848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050620068c99050565b90506001600160a01b0381166200559d5784848484604051630a5a604160e01b8152600401620009689493929190620076f5565b601680546001600160a01b0319166001600160a01b0392909216919091179055620055e6565b838383836040516325ee20d560e21b8152600401620009689493929190620076f5565b7ff1ce9b2cbf50eeb05769a29e2543fd350cab46894a7dd9978a12d534bb20e633848484846040516200561d9493929190620076f5565b60405180910390a150505050565b60005462010000900460ff1615620056565760405163d7485e8f60e01b815260040160405180910390fd5b3360009081526017602052604090205460ff1615620056885760405163b1d02c3d60e01b815260040160405180910390fd5b816000816001600160401b03811115620056a657620056a66200709d565b604051908082528060200260200182016040528015620056d0578160200160208202803683370190505b5090506000805b83811015620057ce5762005719878783818110620056f957620056f9620070b3565b905060200201602081019062005710919062006971565b600b90620061e6565b620057375760405163fdf4600b60e01b815260040160405180910390fd5b600d6000888884818110620057505762005750620070b3565b905060200201602081019062005767919062006971565b6001600160a01b0390811682526020820192909252604001600020600201548451911692508290849083908110620057a357620057a3620070b3565b6001600160a01b0390921660209283029190910190910152620057c6816200711f565b9050620056d7565b50604051634484077560e01b81526120059063448407759062001b349085908890600401620070c9565b33611001146200582057604051630f22c43960e41b8152611001600482015260240162000968565b6001600160a01b038082166000908152600f60205260409020541662005848600b82620061e6565b620058665760405163fdf4600b60e01b815260040160405180910390fd5b6001600160a01b0381166000908152600d60209081526040808320601454428086526015909452919093205410620058b15760405163413361db60e01b815260040160405180910390fd5b6000818152601560205260408120805460019290620058d290849062007002565b909155506000905080620058e785826200620b565b91509150816200590a57604051631b919bb160e11b815260040160405180910390fd5b600284015460085460405163045bc4d160e41b815260048101919091526000916001600160a01b0316906345bc4d10906024016020604051808303816000875af11580156200595d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005983919062007018565b905062005991858362006295565b856001600160a01b03167f6e9a2ee7aee95665e3a774a212eb11441b217e3e4656ab9563793094689aabb283836000604051620059d19392919062007032565b60405180910390a26002850154604051633041949b60e01b81526001600160a01b039182166004820152908716602482015261200590633041949b9060440162004339565b600080606081808562005a2b600b82620061e6565b62005a495760405163fdf4600b60e01b815260040160405180910390fd5b6001600160a01b038088166000908152600d6020908152604080832081516101408101835281548616815260018201548616938101939093526002810154909416908201526003830180549293919260608401919062005aa99062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462005ad79062006f83565b801562005b285780601f1062005afc5761010080835404028352916020019162005b28565b820191906000526020600020905b81548152906001019060200180831162005b0a57829003601f168201915b505050505081526020016004820160405180608001604052908160008201805462005b539062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462005b819062006f83565b801562005bd25780601f1062005ba65761010080835404028352916020019162005bd2565b820191906000526020600020905b81548152906001019060200180831162005bb457829003601f168201915b5050505050815260200160018201805462005bed9062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462005c1b9062006f83565b801562005c6c5780601f1062005c405761010080835404028352916020019162005c6c565b820191906000526020600020905b81548152906001019060200180831162005c4e57829003601f168201915b5050505050815260200160028201805462005c879062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462005cb59062006f83565b801562005d065780601f1062005cda5761010080835404028352916020019162005d06565b820191906000526020600020905b81548152906001019060200180831162005ce857829003601f168201915b5050505050815260200160038201805462005d219062006f83565b80601f016020809104026020016040519081016040528092919081815260200182805462005d4f9062006f83565b801562005da05780601f1062005d745761010080835404028352916020019162005da0565b820191906000526020600020905b81548152906001019060200180831162005d8257829003601f168201915b505050919092525050508152604080516060808201835260088501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600984015460ff16151582840152600a84015490830152600b8301546080830152805161028081019182905260a09092019190600c84019060149082845b81548152602001906001019080831162005e2c5750505091909252505081516040830151606084015160c085015160e090950151929d919c509a50929850965090945050505050565b60005462010000900460ff161562005ea05760405163d7485e8f60e01b815260040160405180910390fd5b3360009081526017602052604090205460ff161562005ed25760405163b1d02c3d60e01b815260040160405180910390fd5b3362005ee0600b82620061e6565b62005efe5760405163fdf4600b60e01b815260040160405180910390fd5b62005f0e6200346f83806200713b565b62005f2c57604051635dba5ad760e01b815260040160405180910390fd5b336000818152600d60205260409020600b810154429062005f51906201518062007002565b111562005f7157604051631f92cdbd60e11b815260040160405180910390fd5b836004820162005f8282826200729b565b505042600b8201556040516001600160a01b038316907f85d6366b336ade7f106987ec7a8eac1e8799e508aeab045a39d2f63e0dc969d990600090a250505050565b60005462010000900460ff161562005fef5760405163d7485e8f60e01b815260040160405180910390fd5b3360009081526017602052604090205460ff1615620060215760405163b1d02c3d60e01b815260040160405180910390fd5b336200602f600b82620061e6565b6200604d5760405163fdf4600b60e01b815260040160405180910390fd5b6200605b858585856200665e565b6200607957604051631647e3cb60e11b815260040160405180910390fd5b60006001600160a01b0316600e86866040516200609892919062006fb9565b908152604051908190036020019020546001600160a01b0316141580620060e2575060128585604051620060ce92919062006fb9565b9081526040519081900360200190205460ff165b1562006101576040516311fdb94760e01b815260040160405180910390fd5b336000818152600d60205260409020600b810154429062006126906201518062007002565b11156200614657604051631f92cdbd60e11b815260040160405180910390fd5b6003810162006157878983620071ce565b5042600b8201556040518290600e9062006175908a908a9062006fb9565b90815260405190819003602001812080546001600160a01b039384166001600160a01b0319909116179055908316907f783156582145bd0ff7924fae6953ba054cf1233eb60739a200ddb10de068ff0d90620061d5908a908a90620074a8565b60405180910390a250505050505050565b6001600160a01b038116600090815260018301602052604081205415155b9392505050565b600080600084846040516020016200622592919062007720565b60408051601f198184030181529181528151602092830120600081815260109093529120549091504281111562006265576000809350935050506200628e565b600a5462006274904262007002565b600092835260106020526040909220829055506001925090505b9250929050565b60006001620062a5600b620064a3565b620062b191906200706d565b6013541080159150620062fd5760018301546040516001600160a01b03909116907f2afdc18061ac21cff7d9f11527ab9c8dec6fabd4edf6f894ed634bebd6a20d4590600090a2505050565b82600a01548211156200631257600a83018290555b600983015460ff16620063855760098301805460ff19166001908117909155601380546000906200634590849062007002565b909155505060018301546040516001600160a01b03909116907f4905ac32602da3fb8b4b7b00c285e5fc4c6c2308cc908b4a1e4e9625a29c90a390600090a25b505050565b6001600160a01b0381166000908152600d60205260409020600981015460ff1615620063b4575050565b6002805490820154604051630913db4760e01b81526001600160a01b03858116600483015290911690630913db4790602401602060405180830381865afa15801562006404573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200642a919062007018565b10156200649f576200643e81600062006295565b80546040516372c4db0f60e11b81526001600160a01b0390911660048201526110009063e589b61e90602401600060405180830381600087803b1580156200648557600080fd5b505af11580156200649a573d6000803e3d6000fd5b505050505b5050565b600062003950825490565b6000620062048383620068ce565b600080829050600381511080620064d4575060098151115b15620064e35750600092915050565b604181600081518110620064fb57620064fb620070b3565b016020015160f81c10806200652d5750605a81600081518110620065235762006523620070b3565b016020015160f81c115b156200653c5750600092915050565b60015b815181101562006654576030828281518110620065605762006560620070b3565b016020015160f81c10806200659157506039828281518110620065875762006587620070b3565b016020015160f81c115b8015620065e157506041828281518110620065b057620065b0620070b3565b016020015160f81c1080620065e15750605a828281518110620065d757620065d7620070b3565b016020015160f81c115b80156200663157506061828281518110620066005762006600620070b3565b016020015160f81c1080620066315750607a828281518110620066275762006627620070b3565b016020015160f81c115b1562006641575060009392505050565b6200664c816200711f565b90506200653f565b5060019392505050565b600060308414158062006672575060608214155b15620066815750600062006783565b60008585466040516020016200669a939291906200776a565b60408051808303601f1901815282825280516020918201208184528383019092529092506000919060208201818036833701905050905081602082015260008186868a8a604051602001620066f49594939291906200777c565b60408051808303601f190181526001808452838301909252925060009190602082018180368337019050509050815160016020830182602086016066600019fa6200673e57600080fd5b50600081600081518110620067575762006757620070b3565b016020015160f81c905060018114620067795760009550505050505062006783565b6001955050505050505b949350505050565b60008061200361dead604051620067a2906200694d565b6001600160a01b03928316815291166020820152606060408201819052600090820152608001604051809103906000f080158015620067e5573d6000803e3d6000fd5b509050806001600160a01b031663f399e22e3486866040518463ffffffff1660e01b815260040162006819929190620077b4565b6000604051808303818588803b1580156200683357600080fd5b505af115801562006848573d6000803e3d6000fd5b5093979650505050505050565b600062006204836001600160a01b038416620068fb565b600081604051602001620068819190620076d7565b6040516020818303038152906040528051906020012083604051602001620068aa9190620076d7565b6040516020818303038152906040528051906020012014905092915050565b015190565b6000826000018281548110620068e857620068e8620070b3565b9060005260206000200154905092915050565b6000818152600183016020526040812054620069445750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915562003950565b50600062003950565b610e9680620077db83390190565b6001600160a01b038116811462000ebe57600080fd5b6000602082840312156200698457600080fd5b813562006204816200695b565b60008083601f840112620069a457600080fd5b5081356001600160401b03811115620069bc57600080fd5b6020830191508360208285010111156200628e57600080fd5b60008060208385031215620069e957600080fd5b82356001600160401b0381111562006a0057600080fd5b62006a0e8582860162006991565b90969095509350505050565b6000806040838503121562006a2e57600080fd5b823562006a3b816200695b565b946020939093013593505050565b8035801515811462006a5a57600080fd5b919050565b6000806000806080858703121562006a7657600080fd5b843562006a83816200695b565b9350602085013562006a95816200695b565b92506040850135915062006aac6060860162006a49565b905092959194509250565b6001600160401b038116811462000ebe57600080fd5b60006020828403121562006ae057600080fd5b8135620062048162006ab7565b6000806040838503121562006b0157600080fd5b50508035926020909101359150565b600081518084526020808501945080840160005b8381101562006b4b5781516001600160a01b03168752958201959082019060010162006b24565b509495945050505050565b60005b8381101562006b7357818101518382015260200162006b59565b50506000910152565b6000815180845262006b9681602086016020860162006b56565b601f01601f19169290920160200192915050565b60808152600062006bbf608083018762006b10565b82810360208481019190915286518083528782019282019060005b8181101562006bf85784518352938301939183019160010162006bda565b5050848103604086015286518082528282019350600581901b8201830183890160005b8381101562006c4d57601f1985840301875262006c3a83835162006b7c565b9686019692509085019060010162006c1b565b5050809550505050505082606083015295945050505050565b6000608082840312156200374557600080fd5b600080600080600080600087890360e081121562006c9657600080fd5b883562006ca3816200695b565b975060208901356001600160401b038082111562006cc057600080fd5b62006cce8c838d0162006991565b909950975060408b013591508082111562006ce857600080fd5b62006cf68c838d0162006991565b90975095508591506060605f198401121562006d1157600080fd5b60608b01945060c08b013592508083111562006d2c57600080fd5b505062006d3c8a828b0162006c66565b91505092959891949750929550565b6000806040838503121562006d5f57600080fd5b823562006d6c816200695b565b915062006d7c6020840162006a49565b90509250929050565b60208152600082516080602084015262006da360a084018262006b7c565b90506020840151601f198085840301604086015262006dc3838362006b7c565b9250604086015191508085840301606086015262006de2838362006b7c565b925060608601519150808584030160808601525062006e02828262006b7c565b95945050505050565b6000806000806040858703121562006e2257600080fd5b84356001600160401b038082111562006e3a57600080fd5b62006e488883890162006991565b9096509450602087013591508082111562006e6257600080fd5b5062006e718782880162006991565b95989497509550505050565b60008060006040848603121562006e9357600080fd5b83356001600160401b038082111562006eab57600080fd5b818601915086601f83011262006ec057600080fd5b81358181111562006ed057600080fd5b8760208260051b850101111562006ee657600080fd5b6020928301955093505084013562006efe816200695b565b809150509250925092565b6001600160a01b0386811682528516602082015260a06040820181905260009062006f379083018662006b7c565b931515606083015250608001529392505050565b60006020828403121562006f5e57600080fd5b81356001600160401b0381111562006f7557600080fd5b620067838482850162006c66565b600181811c9082168062006f9857607f821691505b6020821081036200374557634e487b7160e01b600052602260045260246000fd5b8183823760009101908152919050565b634e487b7160e01b600052601160045260246000fd5b60008262006ffd57634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111562003950576200395062006fc9565b6000602082840312156200702b57600080fd5b5051919050565b8381526020810183905260608101600383106200705f57634e487b7160e01b600052602160045260246000fd5b826040830152949350505050565b8181038181111562003950576200395062006fc9565b808202811582820484141762003950576200395062006fc9565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b604081526000620070de604083018562006b10565b905060018060a01b03831660208301529392505050565b6001600160401b0382811682821603908082111562007118576200711862006fc9565b5092915050565b60006001820162007134576200713462006fc9565b5060010190565b6000808335601e198436030181126200715357600080fd5b8301803591506001600160401b038211156200716e57600080fd5b6020019150368190038213156200628e57600080fd5b601f8211156200638557600081815260208120601f850160051c81016020861015620071ad5750805b601f850160051c820191505b818110156200649a57828155600101620071b9565b6001600160401b03831115620071e857620071e86200709d565b6200720083620071f9835462006f83565b8362007184565b6000601f8411600181146200723757600085156200721e5750838201355b600019600387901b1c1916600186901b17835562007294565b600083815260209020601f19861690835b828110156200726a578685013582556020948501946001909201910162007248565b5086821015620072885760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b620072a782836200713b565b6001600160401b03811115620072c157620072c16200709d565b620072d981620072d2855462006f83565b8562007184565b6000601f821160018114620073105760008315620072f75750838201355b600019600385901b1c1916600184901b1785556200736d565b600085815260209020601f19841690835b8281101562007343578685013582556020948501946001909201910162007321565b5084821015620073615760001960f88660031b161c19848701351681555b505060018360011b0185555b505050506200738060208301836200713b565b62007390818360018601620071ce565b5050620073a160408301836200713b565b620073b1818360028601620071ce565b5050620073c260608301836200713b565b620073d2818360038601620071ce565b50505050565b8135620073e58162006ab7565b6001600160401b03811690508154816001600160401b031982161783556020840135620074128162006ab7565b6fffffffffffffffff0000000000000000604091821b166fffffffffffffffffffffffffffffffff19831684178117855590850135620074528162006ab7565b6001600160c01b0319929092169092179190911760809190911b67ffffffffffffffff60801b1617905550565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b602081526000620067836020830184866200747f565b604051601f8201601f191681016001600160401b0381118282101715620074e957620074e96200709d565b604052919050565b60006001600160401b038211156200750d576200750d6200709d565b5060051b60200190565b600060208083850312156200752b57600080fd5b82516001600160401b038111156200754257600080fd5b8301601f810185136200755457600080fd5b80516200756b6200756582620074f1565b620074be565b81815260059190911b820183019083810190878311156200758b57600080fd5b928401925b82841015620075b6578351620075a6816200695b565b8252928401929084019062007590565b979650505050505050565b60006020808385031215620075d557600080fd5b82516001600160401b0380821115620075ed57600080fd5b8185019150601f86818401126200760357600080fd5b8251620076146200756582620074f1565b81815260059190911b840185019085810190898311156200763457600080fd5b8686015b83811015620076c957805186811115620076525760008081fd5b8701603f81018c13620076655760008081fd5b888101516040888211156200767e576200767e6200709d565b62007691828901601f19168c01620074be565b8281528e82848601011115620076a75760008081fd5b620076b8838d830184870162006b56565b865250505091870191870162007638565b509998505050505050505050565b60008251620076eb81846020870162006b56565b9190910192915050565b6040815260006200770b6040830186886200747f565b8281036020840152620075b68185876200747f565b6bffffffffffffffffffffffff198360601b1681526000600383106200775657634e487b7160e01b600052602160045260246000fd5b5060f89190911b6014820152601501919050565b82848237909101908152602001919050565b6000865162007790818460208b0162006b56565b82018587823760009086019081528385823760009301928352509095945050505050565b6001600160a01b0383168152604060208201819052600090620067839083018462006b7c56fe608060405260405162000e9638038062000e96833981016040819052620000269162000497565b828162000036828260006200004d565b50620000449050826200008a565b505050620005ca565b6200005883620000e5565b600082511180620000665750805b1562000085576200008383836200012760201b620001691760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f620000b562000156565b604080516001600160a01b03928316815291841660208301520160405180910390a1620000e2816200018f565b50565b620000f08162000244565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606200014f838360405180606001604052806027815260200162000e6f60279139620002f8565b9392505050565b60006200018060008051602062000e4f83398151915260001b6200037760201b620001951760201c565b546001600160a01b0316919050565b6001600160a01b038116620001fa5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b806200022360008051602062000e4f83398151915260001b6200037760201b620001951760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6200025a816200037a60201b620001981760201c565b620002be5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401620001f1565b80620002237f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b6200037760201b620001951760201c565b6060600080856001600160a01b03168560405162000317919062000577565b600060405180830381855af49150503d806000811462000354576040519150601f19603f3d011682016040523d82523d6000602084013e62000359565b606091505b5090925090506200036d8683838762000389565b9695505050505050565b90565b6001600160a01b03163b151590565b60608315620003fd578251600003620003f5576001600160a01b0385163b620003f55760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401620001f1565b508162000409565b62000409838362000411565b949350505050565b815115620004225781518083602001fd5b8060405162461bcd60e51b8152600401620001f1919062000595565b80516001600160a01b03811681146200045657600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200048e57818101518382015260200162000474565b50506000910152565b600080600060608486031215620004ad57600080fd5b620004b8846200043e565b9250620004c8602085016200043e565b60408501519092506001600160401b0380821115620004e657600080fd5b818601915086601f830112620004fb57600080fd5b8151818111156200051057620005106200045b565b604051601f8201601f19908116603f011681019083821181831017156200053b576200053b6200045b565b816040528281528960208487010111156200055557600080fd5b6200056883602083016020880162000471565b80955050505050509250925092565b600082516200058b81846020870162000471565b9190910192915050565b6020815260008251806020840152620005b681604085016020870162000471565b601f01601f19169190910160400192915050565b61087580620005da6000396000f3fe60806040523661001357610011610017565b005b6100115b61001f6101a7565b6001600160a01b0316330361015f5760606001600160e01b0319600035166364d3180d60e11b810161005a576100536101da565b9150610157565b63587086bd60e11b6001600160e01b031982160161007a57610053610231565b63070d7c6960e41b6001600160e01b031982160161009a57610053610277565b621eb96f60e61b6001600160e01b03198216016100b9576100536102a8565b63a39f25e560e01b6001600160e01b03198216016100d9576100536102e8565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101676102fc565b565b606061018e83836040518060600160405280602781526020016108426027913961030c565b9392505050565b90565b6001600160a01b03163b151590565b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101e4610384565b60006101f33660048184610695565b81019061020091906106db565b905061021d8160405180602001604052806000815250600061038f565b505060408051602081019091526000815290565b60606000806102433660048184610695565b810190610250919061070c565b915091506102608282600161038f565b604051806020016040528060008152509250505090565b6060610281610384565b60006102903660048184610695565b81019061029d91906106db565b905061021d816103bb565b60606102b2610384565b60006102bc6101a7565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102f2610384565b60006102bc610412565b610167610307610412565b610421565b6060600080856001600160a01b03168560405161032991906107f2565b600060405180830381855af49150503d8060008114610364576040519150601f19603f3d011682016040523d82523d6000602084013e610369565b606091505b509150915061037a86838387610445565b9695505050505050565b341561016757600080fd5b610398836104c6565b6000825111806103a55750805b156103b6576103b48383610169565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103e46101a7565b604080516001600160a01b03928316815291841660208301520160405180910390a161040f81610506565b50565b600061041c6105af565b905090565b3660008037600080366000845af43d6000803e808015610440573d6000f35b3d6000fd5b606083156104b45782516000036104ad576001600160a01b0385163b6104ad5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014e565b50816104be565b6104be83836105d7565b949350505050565b6104cf81610601565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b03811661056b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014e565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101cb565b8151156105e75781518083602001fd5b8060405162461bcd60e51b815260040161014e919061080e565b6001600160a01b0381163b61066e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014e565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61058e565b600080858511156106a557600080fd5b838611156106b257600080fd5b5050820193919092039150565b80356001600160a01b03811681146106d657600080fd5b919050565b6000602082840312156106ed57600080fd5b61018e826106bf565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561071f57600080fd5b610728836106bf565b9150602083013567ffffffffffffffff8082111561074557600080fd5b818501915085601f83011261075957600080fd5b81358181111561076b5761076b6106f6565b604051601f8201601f19908116603f01168101908382118183101715610793576107936106f6565b816040528281528860208487010111156107ac57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60005b838110156107e95781810151838201526020016107d1565b50506000910152565b600082516108048184602087016107ce565b9190910192915050565b602081526000825180602084015261082d8160408501602087016107ce565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000ab53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c656400000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000a164736f6c6343000811000a", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/9d09d0a3d6332460a810188261ec8195e05aa218", + Code: "608060405260043610620003db5760003560e01c806386d545061162000203578063d115a2061162000117578063e992aaf511620000ad578063f80a34021162000078578063f80a34021462000bef578063fb50b31f1462000c14578063fc0c5ff11462000c39578063ff69ab611462000c5157600080fd5b8063e992aaf51462000b6c578063efdbf0e11462000b84578063f1f74d841462000bc0578063f1fad1041462000bd857600080fd5b8063d8ca511f11620000ee578063d8ca511f1462000aff578063daacdb661462000b17578063dbda7fb31462000b2f578063e8f67c3b1462000b5457600080fd5b8063d115a2061462000a9d578063d6ca429d1462000ab5578063d7c2dfc81462000ada57600080fd5b8063b187bd261162000199578063c38fbec81162000164578063c38fbec81462000a1f578063c473318f1462000a44578063c8509d81146200083d578063cbb04d9d1462000a5c57600080fd5b8063b187bd26146200098c578063baa7199e14620009ac578063bdceadf314620009d1578063bff02e2014620009e957600080fd5b8063982ef0a711620001da578063982ef0a714620008f7578063a43569b3146200090e578063aad3ec961462000942578063ac431751146200096757600080fd5b806386d54506146200087a5780638a4d3fa814620008b45780638cd22b2214620008d257600080fd5b80634bf6c88211620002fb578063663706d3116200029157806376e7d6d6116200025c57806376e7d6d6146200080d5780638129fc1c1462000825578063831d65d1146200083d5780638456cb59146200086257600080fd5b8063663706d3146200073a5780636ec01b27146200076b5780636f8e2fa414620007c357806375cc7d8914620007e857600080fd5b80635949187111620002d25780635949187114620006a25780635e7cc1c914620006c757806363a036b514620006ec57806364028fbd146200072357600080fd5b80634bf6c882146200063b5780634d99dd1614620006655780634e6fd6c4146200068a57600080fd5b80631fa8882b1162000371578063449ecfe61162000348578063449ecfe6146200058757806345211bfd14620005ac5780634838d16514620005d15780634a49ac4c146200061657600080fd5b80631fa8882b146200053157806338409988146200054a578063417c73a7146200056257600080fd5b8063092193ab11620003b2578063092193ab146200047c5780630e9fbf5114620004935780631182b87514620004b857806317b4f35314620004ec57600080fd5b8063046f7da214620003fb578063059ddd2214620004135780630661806e146200045557600080fd5b36620003f65760345460ff16600114620003f457600080fd5b005b600080fd5b3480156200040857600080fd5b50620003f462000c69565b3480156200042057600080fd5b506200043862000432366004620093e3565b62000cfb565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156200046257600080fd5b506200046d60365481565b6040519081526020016200044c565b620003f46200048d366004620093e3565b62001110565b348015620004a057600080fd5b50620003f4620004b236600462009447565b6200174e565b348015620004c557600080fd5b50620004dd620004d73660046200948c565b62001a7a565b6040516200044c91906200953f565b348015620004f957600080fd5b50620004386200050b36600462009635565b80516020818301810180516045825292820191909301209152546001600160a01b031681565b3480156200053e57600080fd5b506200046d6201518081565b3480156200055757600080fd5b506200046d60375481565b3480156200056f57600080fd5b50620003f462000581366004620093e3565b62001d53565b3480156200059457600080fd5b50620003f4620005a6366004620093e3565b62001dd5565b348015620005b957600080fd5b50620003f4620005cb366004620093e3565b62001fba565b348015620005de57600080fd5b5062000605620005f0366004620093e3565b60016020526000908152604090205460ff1681565b60405190151581526020016200044c565b3480156200062357600080fd5b50620003f462000635366004620093e3565b62002197565b3480156200064857600080fd5b5062000652600881565b60405160ff90911681526020016200044c565b3480156200067257600080fd5b50620003f4620006843660046200968a565b62002213565b3480156200069757600080fd5b506200043861dead81565b348015620006af57600080fd5b50620003f4620006c1366004620096c8565b62002830565b348015620006d457600080fd5b50620003f4620006e636600462009738565b62003602565b348015620006f957600080fd5b50620007116200070b36600462009758565b6200380a565b6040516200044c9493929190620097c1565b620003f4620007343660046200987d565b62003e9c565b3480156200074757600080fd5b506200046d62000759366004620093e3565b60446020526000908152604090205481565b3480156200077857600080fd5b50620007906200078a366004620093e3565b620044e6565b6040805182516001600160401b03908116825260208085015182169083015292820151909216908201526060016200044c565b348015620007d057600080fd5b50620004dd620007e2366004620093e3565b62004590565b348015620007f557600080fd5b50620003f462000807366004620093e3565b620049a9565b3480156200081a57600080fd5b506200046d603d5481565b3480156200083257600080fd5b50620003f462004b7b565b3480156200084a57600080fd5b50620003f46200085c3660046200948c565b62004e92565b3480156200086f57600080fd5b50620003f462004efc565b3480156200088757600080fd5b506200043862000899366004620093e3565b6043602052600090815260409020546001600160a01b031681565b348015620008c157600080fd5b506200046d670de0b6b3a764000081565b348015620008df57600080fd5b506200046d620008f13660046200968a565b62004f94565b620003f46200090836600462009955565b6200504d565b3480156200091b57600080fd5b50620009336200092d366004620093e3565b620056d7565b6040516200044c919062009993565b3480156200094f57600080fd5b50620003f4620009613660046200968a565b620059c4565b3480156200097457600080fd5b50620003f46200098636600462009a10565b62005a31565b3480156200099957600080fd5b5060005462010000900460ff1662000605565b348015620009b957600080fd5b50620003f4620009cb36600462009ac9565b620068d0565b348015620009de57600080fd5b506200046d603c5481565b348015620009f657600080fd5b5062000a0e62000a0836600462009758565b62006a9d565b6040516200044c9392919062009b25565b34801562000a2c57600080fd5b50620003f462000a3e366004620093e3565b62006c79565b34801562000a5157600080fd5b506200046d60385481565b34801562000a6957600080fd5b5062000a8162000a7b366004620093e3565b62006f3b565b604080519384529115156020840152908201526060016200044c565b34801562000aaa57600080fd5b506200046d61271081565b34801562000ac257600080fd5b50620003f462000ad436600462009b82565b6200736b565b34801562000ae757600080fd5b50620003f462000af936600462009c6b565b6200756f565b34801562000b0c57600080fd5b506200046d603b5481565b34801562000b2457600080fd5b506200046d60495481565b34801562000b3c57600080fd5b506200043862000b4e366004620093e3565b62007665565b34801562000b6157600080fd5b506200046d60355481565b34801562000b7957600080fd5b506200046d603a5481565b34801562000b9157600080fd5b506200046d62000ba336600462009635565b805160208183018101805160468252928201919093012091525481565b34801562000bcd57600080fd5b506200046d603e5481565b34801562000be557600080fd5b5062000652601181565b34801562000bfc57600080fd5b506200046d62000c0e3660046200968a565b62007a7c565b34801562000c2157600080fd5b50620003f462000c3336600462009a10565b62007aed565b34801562000c4657600080fd5b506200046d60395481565b34801562000c5e57600080fd5b506200046d604a5481565b600054630100000090046001600160a01b0316331462000c9c576040516306fbb1e360e01b815260040160405180910390fd5b60005462010000900460ff1662000cc657604051636cd6020160e01b815260040160405180910390fd5b6000805462ff0000191681556040517f62451d457bc659158be6e6247f56ec1df424a5c7597f71c20c2bc44e0965c8f99190a1565b6001600160a01b038082166000908152604160209081526040808320815161016081018352815486168152600182015486169381019390935260028101549094169082015260038301546060820152600483018054929384939091608084019162000d669062009cd1565b80601f016020809104026020016040519081016040528092919081815260200182805462000d949062009cd1565b801562000de55780601f1062000db95761010080835404028352916020019162000de5565b820191906000526020600020905b81548152906001019060200180831162000dc757829003601f168201915b505050505081526020016005820160405180608001604052908160008201805462000e109062009cd1565b80601f016020809104026020016040519081016040528092919081815260200182805462000e3e9062009cd1565b801562000e8f5780601f1062000e635761010080835404028352916020019162000e8f565b820191906000526020600020905b81548152906001019060200180831162000e7157829003601f168201915b5050505050815260200160018201805462000eaa9062009cd1565b80601f016020809104026020016040519081016040528092919081815260200182805462000ed89062009cd1565b801562000f295780601f1062000efd5761010080835404028352916020019162000f29565b820191906000526020600020905b81548152906001019060200180831162000f0b57829003601f168201915b5050505050815260200160028201805462000f449062009cd1565b80601f016020809104026020016040519081016040528092919081815260200182805462000f729062009cd1565b801562000fc35780601f1062000f975761010080835404028352916020019162000fc3565b820191906000526020600020905b81548152906001019060200180831162000fa557829003601f168201915b5050505050815260200160038201805462000fde9062009cd1565b80601f01602080910402602001604051908101604052809291908181526020018280546200100c9062009cd1565b80156200105d5780601f1062001031576101008083540402835291602001916200105d565b820191906000526020600020905b8154815290600101906020018083116200103f57829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152805161028081019182905260a09092019190600d84019060149082845b815481526020019060010190808311620010e9575050509190925250509051949350505050565b33611000146200113c57604051630f22c43960e41b815261100060048201526024015b60405180910390fd5b6001600160a01b03808216600090815260436020908152604080832054841680845260418352818420825161016081018452815487168152600182015487169481019490945260028101549095169183019190915260038401546060830152600484018054919491608084019190620011b59062009cd1565b80601f0160208091040260200160405190810160405280929190818152602001828054620011e39062009cd1565b8015620012345780601f10620012085761010080835404028352916020019162001234565b820191906000526020600020905b8154815290600101906020018083116200121657829003601f168201915b50505050508152602001600582016040518060800160405290816000820180546200125f9062009cd1565b80601f01602080910402602001604051908101604052809291908181526020018280546200128d9062009cd1565b8015620012de5780601f10620012b257610100808354040283529160200191620012de565b820191906000526020600020905b815481529060010190602001808311620012c057829003601f168201915b50505050508152602001600182018054620012f99062009cd1565b80601f0160208091040260200160405190810160405280929190818152602001828054620013279062009cd1565b8015620013785780601f106200134c5761010080835404028352916020019162001378565b820191906000526020600020905b8154815290600101906020018083116200135a57829003601f168201915b50505050508152602001600282018054620013939062009cd1565b80601f0160208091040260200160405190810160405280929190818152602001828054620013c19062009cd1565b8015620014125780601f10620013e65761010080835404028352916020019162001412565b820191906000526020600020905b815481529060010190602001808311620013f457829003601f168201915b505050505081526020016003820180546200142d9062009cd1565b80601f01602080910402602001604051908101604052809291908181526020018280546200145b9062009cd1565b8015620014ac5780601f106200148057610100808354040283529160200191620014ac565b820191906000526020600020905b8154815290600101906020018083116200148e57829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152805161028081019182905260a09092019190600d84019060149082845b81548152602001906001019080831162001538575050509190925250505060408101519091506001600160a01b031615806200157557508060e001515b156200163257604051611002903490600081818185875af1925050503d8060008114620015bf576040519150601f19603f3d011682016040523d82523d6000602084013e620015c4565b606091505b505050816001600160a01b03167ffc8bff675087dd2da069cc3fb517b9ed001e19750c0865241a5542dba1ba170d604051620016259060208082526011908201527024a72b20a624a22fab20a624a220aa27a960791b604082015260600190565b60405180910390a2505050565b60408181015160c0830151519151632f303ebb60e11b81526001600160401b0390921660048301526001600160a01b031690635e607d769034906024016000604051808303818588803b1580156200168957600080fd5b505af11580156200169e573d6000803e3d6000fd5b5050505050816001600160a01b03167fe34918ff1c7084970068b53fd71ad6d8b04e9f15d3886cbf006443e6cdc52ea634604051620016df91815260200190565b60405180910390a26040808201519051633041949b60e01b815261200591633041949b91620017149190869060040162009d07565b600060405180830381600087803b1580156200172f57600080fd5b505af115801562001744573d6000803e3d6000fd5b5050505050505b50565b33611001146200177657604051630f22c43960e41b8152611001600482015260240162001133565b60005462010000900460ff1615620017a157604051631785c68160e01b815260040160405180910390fd5b600060458383604051620017b792919062009d21565b908152604051908190036020019020546001600160a01b03169050620017df603f8262007d41565b620017fd5760405163056e881160e01b815260040160405180910390fd5b6001600160a01b03811660009081526041602052604081209062001825620151804262009d47565b604a546000828152604b602052604090205491925011620018595760405163bd52fcdb60e01b815260040160405180910390fd5b6000818152604b602052604081208054600192906200187a90849062009d6a565b909155505060405160469062001894908790879062009d21565b908152602001604051809103902054600014158015620018e55750426201518060468787604051620018c892919062009d21565b908152602001604051809103902054620018e3919062009d6a565b105b156200190457604051631898eb6b60e01b815260040160405180910390fd5b6000806200191485600262007d64565b91509150816200193757604051631b919bb160e11b815260040160405180910390fd5b6002840154603c5460405163045bc4d160e41b815260048101919091526000916001600160a01b0316906345bc4d10906024016020604051808303816000875af11580156200198a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620019b0919062009d80565b9050620019be858362007dee565b856001600160a01b03167f6e9a2ee7aee95665e3a774a212eb11441b217e3e4656ab9563793094689aabb283836002604051620019fe9392919062009db0565b60405180910390a26002850154604051633041949b60e01b815261200591633041949b9162001a3c916001600160a01b0316908a9060040162009d07565b600060405180830381600087803b15801562001a5757600080fd5b505af115801562001a6c573d6000803e3d6000fd5b505050505050505050505050565b6060336120001462001aa457604051630f22c43960e41b8152612000600482015260240162001133565b6034805460ff19166001179055604080516020601f8501819004810282018101909252838152600091829162001af591879087908190840183828082843760009201919091525062007fb592505050565b915091508062001b185760405163035ede3560e21b815260040160405180910390fd5b816060015160000362001b3e575050604080516000815260208101909152905062001d42565b606082015160405163e04c83a760e01b81526000916110049163e04c83a79162001b6e9160040190815260200190565b6020604051808303816000875af115801562001b8e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001bb4919062009ddf565b90508062001c5b5782602001516001600160a01b031683600001516001600160a01b03167fa9084c89a291b43bc984e045671d394974730a159b9a826b577bb148ab504c3a8560600151600160405162001c1092919062009dff565b60405180910390a385858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092965062001d4295505050505050565b600062001c688462008118565b9050600081600381111562001c815762001c8162009d9a565b0362001ca3575050604080516000815260208101909152925062001d42915050565b83602001516001600160a01b031684600001516001600160a01b03167fa9084c89a291b43bc984e045671d394974730a159b9a826b577bb148ab504c3a86606001518460405162001cf692919062009dff565b60405180910390a386868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092975062001d429650505050505050565b6034805460ff191690559392505050565b600054630100000090046001600160a01b0316331462001d86576040516306fbb1e360e01b815260040160405180910390fd5b6001600160a01b0381166000818152600160208190526040808320805460ff1916909217909155517f7fd26be6fc92aff63f1f4409b2b2ddeb272a888031d7f55ec830485ec61941869190a250565b60005462010000900460ff161562001e0057604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff161562001e325760405163b1d02c3d60e01b815260040160405180910390fd5b8062001e40603f8262007d41565b62001e5e5760405163056e881160e01b815260040160405180910390fd5b6001600160a01b0382166000908152604160205260409020600a81015460ff1662001e9c57604051634b6b857d60e01b815260040160405180910390fd5b6036546002820154604051630913db4760e01b81526001600160a01b03868116600483015290911690630913db4790602401602060405180830381865afa15801562001eec573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001f12919062009d80565b101562001f32576040516317b204bf60e11b815260040160405180910390fd5b4281600b0154111562001f585760405163170cb76760e21b815260040160405180910390fd5b600a8101805460ff19169055604980546001919060009062001f7c90849062009e26565b90915550506040516001600160a01b038416907f9390b453426557da5ebdc31f19a37753ca04addf656d32f35232211bb2af3f1990600090a2505050565b60005462010000900460ff161562001fe557604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff1615620020175760405163b1d02c3d60e01b815260040160405180910390fd5b3362002025603f8262007d41565b620020435760405163056e881160e01b815260040160405180910390fd5b6001600160a01b0382166200206b57604051636520611b60e11b815260040160405180910390fd5b6001600160a01b0382811660009081526043602052604090205416151580620020ac57506001600160a01b03821660009081526047602052604090205460ff165b15620020cb57604051631e6f587560e11b815260040160405180910390fd5b336000818152604160205260409020600c8101544290620020f190620151809062009d6a565b11156200211157604051631f92cdbd60e11b815260040160405180910390fd5b80546001600160a01b039081166000908152604460209081526040808320429081905585548986166001600160a01b031991821681178855600c88019290925581855260439093528184208054958816959093168517909255519092917f6e4e747ca35203f16401c69805c7dd52fff67ef60b0ebc5c7fe16890530f223591a350505050565b600054630100000090046001600160a01b03163314620021ca576040516306fbb1e360e01b815260040160405180910390fd5b6001600160a01b038116600081815260016020526040808220805460ff19169055517fe0db3499b7fdc3da4cddff5f45d694549c19835e7f719fb5606d3ad1a5de40119190a250565b60005462010000900460ff16156200223e57604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff1615620022705760405163b1d02c3d60e01b815260040160405180910390fd5b816200227e603f8262007d41565b6200229c5760405163056e881160e01b815260040160405180910390fd5b81600003620022be57604051639811e0c760e01b815260040160405180910390fd5b6001600160a01b0380841660009081526041602090815260408083208151610160810183528154861681526001820154861693810193909352600281015490941690820152600383015460608201526004830180543394916080840191620023269062009cd1565b80601f0160208091040260200160405190810160405280929190818152602001828054620023549062009cd1565b8015620023a55780601f106200237957610100808354040283529160200191620023a5565b820191906000526020600020905b8154815290600101906020018083116200238757829003601f168201915b5050505050815260200160058201604051806080016040529081600082018054620023d09062009cd1565b80601f0160208091040260200160405190810160405280929190818152602001828054620023fe9062009cd1565b80156200244f5780601f1062002423576101008083540402835291602001916200244f565b820191906000526020600020905b8154815290600101906020018083116200243157829003601f168201915b505050505081526020016001820180546200246a9062009cd1565b80601f0160208091040260200160405190810160405280929190818152602001828054620024989062009cd1565b8015620024e95780601f10620024bd57610100808354040283529160200191620024e9565b820191906000526020600020905b815481529060010190602001808311620024cb57829003601f168201915b50505050508152602001600282018054620025049062009cd1565b80601f0160208091040260200160405190810160405280929190818152602001828054620025329062009cd1565b8015620025835780601f10620025575761010080835404028352916020019162002583565b820191906000526020600020905b8154815290600101906020018083116200256557829003601f168201915b505050505081526020016003820180546200259e9062009cd1565b80601f0160208091040260200160405190810160405280929190818152602001828054620025cc9062009cd1565b80156200261d5780601f10620025f1576101008083540402835291602001916200261d565b820191906000526020600020905b815481529060010190602001808311620025ff57829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152805161028081019182905260a09092019190600d84019060149082845b815481526020019060010190808311620026a9575050509190925250505060408082015190516326ccee8b60e11b81526001600160a01b0385811660048301526024820188905292935060009290911690634d99dd16906044016020604051808303816000875af115801562002723573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002749919062009d80565b9050826001600160a01b0316866001600160a01b03167f3aace7340547de7b9156593a7652dc07ee900cea3fd8f82cb6c9d38b4082980287846040516200279a929190918252602082015260400190565b60405180910390a3856001600160a01b0316836001600160a01b031603620027c757620027c786620087ab565b6040808301519051633041949b60e01b815261200591633041949b91620027f49190879060040162009d07565b600060405180830381600087803b1580156200280f57600080fd5b505af115801562002824573d6000803e3d6000fd5b50505050505050505050565b60005462010000900460ff16156200285b57604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff16156200288d5760405163b1d02c3d60e01b815260040160405180910390fd5b836200289b603f8262007d41565b620028b95760405163056e881160e01b815260040160405180910390fd5b83620028c7603f8262007d41565b620028e55760405163056e881160e01b815260040160405180910390fd5b6034805460ff1916600117905560008490036200291557604051639811e0c760e01b815260040160405180910390fd5b846001600160a01b0316866001600160a01b031603620029485760405163f0e3e62960e01b815260040160405180910390fd5b6001600160a01b0380871660009081526041602090815260408083208151610160810183528154861681526001820154861693810193909352600281015490941690820152600383015460608201526004830180543394916080840191620029b09062009cd1565b80601f0160208091040260200160405190810160405280929190818152602001828054620029de9062009cd1565b801562002a2f5780601f1062002a035761010080835404028352916020019162002a2f565b820191906000526020600020905b81548152906001019060200180831162002a1157829003601f168201915b505050505081526020016005820160405180608001604052908160008201805462002a5a9062009cd1565b80601f016020809104026020016040519081016040528092919081815260200182805462002a889062009cd1565b801562002ad95780601f1062002aad5761010080835404028352916020019162002ad9565b820191906000526020600020905b81548152906001019060200180831162002abb57829003601f168201915b5050505050815260200160018201805462002af49062009cd1565b80601f016020809104026020016040519081016040528092919081815260200182805462002b229062009cd1565b801562002b735780601f1062002b475761010080835404028352916020019162002b73565b820191906000526020600020905b81548152906001019060200180831162002b5557829003601f168201915b5050505050815260200160028201805462002b8e9062009cd1565b80601f016020809104026020016040519081016040528092919081815260200182805462002bbc9062009cd1565b801562002c0d5780601f1062002be15761010080835404028352916020019162002c0d565b820191906000526020600020905b81548152906001019060200180831162002bef57829003601f168201915b5050505050815260200160038201805462002c289062009cd1565b80601f016020809104026020016040519081016040528092919081815260200182805462002c569062009cd1565b801562002ca75780601f1062002c7b5761010080835404028352916020019162002ca7565b820191906000526020600020905b81548152906001019060200180831162002c8957829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152805161028081019182905260a09092019190600d84019060149082845b81548152602001906001019080831162002d3357505050919092525050506001600160a01b0380891660009081526041602090815260408083208151610160810183528154861681526001820154861693810193909352600281015490941690820152600383015460608201526004830180549495509193909291608084019162002dbe9062009cd1565b80601f016020809104026020016040519081016040528092919081815260200182805462002dec9062009cd1565b801562002e3d5780601f1062002e115761010080835404028352916020019162002e3d565b820191906000526020600020905b81548152906001019060200180831162002e1f57829003601f168201915b505050505081526020016005820160405180608001604052908160008201805462002e689062009cd1565b80601f016020809104026020016040519081016040528092919081815260200182805462002e969062009cd1565b801562002ee75780601f1062002ebb5761010080835404028352916020019162002ee7565b820191906000526020600020905b81548152906001019060200180831162002ec957829003601f168201915b5050505050815260200160018201805462002f029062009cd1565b80601f016020809104026020016040519081016040528092919081815260200182805462002f309062009cd1565b801562002f815780601f1062002f555761010080835404028352916020019162002f81565b820191906000526020600020905b81548152906001019060200180831162002f6357829003601f168201915b5050505050815260200160028201805462002f9c9062009cd1565b80601f016020809104026020016040519081016040528092919081815260200182805462002fca9062009cd1565b80156200301b5780601f1062002fef576101008083540402835291602001916200301b565b820191906000526020600020905b81548152906001019060200180831162002ffd57829003601f168201915b50505050508152602001600382018054620030369062009cd1565b80601f0160208091040260200160405190810160405280929190818152602001828054620030649062009cd1565b8015620030b55780601f106200308957610100808354040283529160200191620030b5565b820191906000526020600020905b8154815290600101906020018083116200309757829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152805161028081019182905260a09092019190600d84019060149082845b815481526020019060010190808311620031415750505050508152505090508060e001518015620031845750876001600160a01b0316836001600160a01b031614155b15620031a357604051636468920360e01b815260040160405180910390fd5b60408083015190516352e82ce560e11b81526001600160a01b038581166004830152602482018a9052600092169063a5d059ca906044016020604051808303816000875af1158015620031fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003220919062009d80565b9050603754811015620032465760405163dc6f0bdd60e01b815260040160405180910390fd5b896001600160a01b0316846001600160a01b0316148015620032db57506036546040808501519051630913db4760e01b81526001600160a01b038d8116600483015290911690630913db4790602401602060405180830381865afa158015620032b3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620032d9919062009d80565b105b15620032fa576040516317b204bf60e11b815260040160405180910390fd5b6000612710603a54836200330f919062009e3c565b6200331b919062009d47565b9050600083604001516001600160a01b03168260405160006040518083038185875af1925050503d806000811462003370576040519150601f19603f3d011682016040523d82523d6000602084013e62003375565b606091505b505090508062003398576040516312171d8360e31b815260040160405180910390fd5b620033a4828462009e26565b60408086015190516317066a5760e21b81526001600160a01b03898116600483015292955060009290911690635c19a95c90869060240160206040518083038185885af1158015620033fa573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019062003421919062009d80565b9050866001600160a01b03168c6001600160a01b03168e6001600160a01b03167ffdac6e81913996d95abcc289e90f2d8bd235487ce6fe6f821e7d21002a1915b48e858960405162003486939291909283526020830191909152604082015260600190565b60405180910390a4604080516002808252606082018352600092602083019080368337019050509050866040015181600081518110620034ca57620034ca62009e56565b60200260200101906001600160a01b031690816001600160a01b03168152505085604001518160018151811062003505576200350562009e56565b6001600160a01b0390921660209283029190910190910152604051634484077560e01b815261200590634484077590620035469084908c9060040162009e6c565b600060405180830381600087803b1580156200356157600080fd5b505af115801562003576573d6000803e3d6000fd5b505050508a15620035e8576120056001600160a01b031663e5ed5b1e898f6040518363ffffffff1660e01b8152600401620035b392919062009d07565b600060405180830381600087803b158015620035ce57600080fd5b505af1158015620035e3573d6000803e3d6000fd5b505050505b50506034805460ff19169055505050505050505050505050565b60005462010000900460ff16156200362d57604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff16156200365f5760405163b1d02c3d60e01b815260040160405180910390fd5b336200366d603f8262007d41565b6200368b5760405163056e881160e01b815260040160405180910390fd5b336000818152604160205260409020600c8101544290620036b190620151809062009d6a565b1115620036d157604051631f92cdbd60e11b815260040160405180910390fd5b60098101546001600160401b03600160401b909104811690851611156200370b5760405163dc81db8560e01b815260040160405180910390fd5b60098101546000906001600160401b03908116908616101562003749576009820154620037439086906001600160401b031662009e98565b62003763565b600982015462003763906001600160401b03168662009e98565b60098301546001600160401b039182169250600160801b9004168111156200379e5760405163dc81db8560e01b815260040160405180910390fd5b60098201805467ffffffffffffffff19166001600160401b03871690811790915542600c8401556040519081526001600160a01b038416907f78cdd96edf59e09cfd4d26ef6ef6c92d166effe6a40970c54821206d541932cb9060200160405180910390a25050505050565b606080606060006200381d603f620088d1565b90508086101562003e9357841562003836578462003838565b805b945060008562003849888462009e26565b1162003861576200385b878362009e26565b62003863565b855b9050806001600160401b0381111562003880576200388062009554565b604051908082528060200260200182016040528015620038aa578160200160208202803683370190505b509450806001600160401b03811115620038c857620038c862009554565b604051908082528060200260200182016040528015620038f2578160200160208202803683370190505b509350806001600160401b0381111562003910576200391062009554565b6040519080825280602002602001820160405280156200394557816020015b60608152602001906001900390816200392f5790505b50925060005b8181101562003e905760006200396f62003966838b62009d6a565b603f90620088dc565b6001600160a01b03808216600090815260416020908152604080832081516101608101835281548616815260018201548616938101939093526002810154909416908201526003830154606082015260048301805494955091939092916080840191620039dc9062009cd1565b80601f016020809104026020016040519081016040528092919081815260200182805462003a0a9062009cd1565b801562003a5b5780601f1062003a2f5761010080835404028352916020019162003a5b565b820191906000526020600020905b81548152906001019060200180831162003a3d57829003601f168201915b505050505081526020016005820160405180608001604052908160008201805462003a869062009cd1565b80601f016020809104026020016040519081016040528092919081815260200182805462003ab49062009cd1565b801562003b055780601f1062003ad95761010080835404028352916020019162003b05565b820191906000526020600020905b81548152906001019060200180831162003ae757829003601f168201915b5050505050815260200160018201805462003b209062009cd1565b80601f016020809104026020016040519081016040528092919081815260200182805462003b4e9062009cd1565b801562003b9f5780601f1062003b735761010080835404028352916020019162003b9f565b820191906000526020600020905b81548152906001019060200180831162003b8157829003601f168201915b5050505050815260200160028201805462003bba9062009cd1565b80601f016020809104026020016040519081016040528092919081815260200182805462003be89062009cd1565b801562003c395780601f1062003c0d5761010080835404028352916020019162003c39565b820191906000526020600020905b81548152906001019060200180831162003c1b57829003601f168201915b5050505050815260200160038201805462003c549062009cd1565b80601f016020809104026020016040519081016040528092919081815260200182805462003c829062009cd1565b801562003cd35780601f1062003ca75761010080835404028352916020019162003cd3565b820191906000526020600020905b81548152906001019060200180831162003cb557829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152805161028081019182905260a09092019190600d84019060149082845b81548152602001906001019080831162003d5f575050505050815250509050806000015188848151811062003d985762003d9862009e56565b60200260200101906001600160a01b031690816001600160a01b0316815250508060e0015162003e315780604001516001600160a01b03166315d1f8986040518163ffffffff1660e01b8152600401602060405180830381865afa15801562003e05573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003e2b919062009d80565b62003e34565b60005b87848151811062003e495762003e4962009e56565b602002602001018181525050806080015186848151811062003e6f5762003e6f62009e56565b602002602001018190525050508062003e889062009ebb565b90506200394b565b50505b92959194509250565b60005462010000900460ff161562003ec757604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff161562003ef95760405163b1d02c3d60e01b815260040160405180910390fd5b3362003f07603f8262007d41565b1562003f2657604051635f28f62b60e01b815260040160405180910390fd5b6001600160a01b038881166000908152604360205260409020541615158062003f6757506001600160a01b03881660009081526047602052604090205460ff165b1562003f8657604051631e6f587560e11b815260040160405180910390fd5b60006001600160a01b03166045888860405162003fa592919062009d21565b908152604051908190036020019020546001600160a01b031614158062003fef57506048878760405162003fdb92919062009d21565b9081526040519081900360200190205460ff165b156200400e576040516311fdb94760e01b815260040160405180910390fd5b60006200401c838062009ed7565b6040516020016200402f92919062009d21565b60408051601f1981840301815291815281516020928301206000818152604290935291205490915060ff1615620040795760405163c0bf414360e01b815260040160405180910390fd5b60006200408f670de0b6b3a76400003462009e26565b9050603654811015620040b5576040516317b204bf60e11b815260040160405180910390fd5b6001600160a01b038a16620040dd57604051636520611b60e11b815260040160405180910390fd5b611388620040f2604087016020880162009738565b6001600160401b0316118062004138575062004115604086016020870162009738565b6001600160401b03166200412d602087018762009738565b6001600160401b0316115b8062004177575062004151604086016020870162009738565b6001600160401b03166200416c606087016040880162009738565b6001600160401b0316115b15620041965760405163dc81db8560e01b815260040160405180910390fd5b620041e1620041a6858062009ed7565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250620088ea92505050565b620041ff57604051635dba5ad760e01b815260040160405180910390fd5b6200420e838a8a8a8a62008a8c565b6200422c57604051631647e3cb60e11b815260040160405180910390fd5b60006200427a846200423f878062009ed7565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525062008bbc92505050565b905062004289603f8562008cbd565b506000838152604260209081526040808320805460ff191660019081179091556001600160a01b0380891680865260419094529190932080548f83166001600160a01b031991821617825593810180548516909317909255600282018054918516919093161790915542600382015560048101620043098b8d8362009f7f565b5085600582016200431b82826200a047565b50879050600982016200432f82826200a180565b505042600c8201556001600160a01b038c81166000908152604360205260409081902080546001600160a01b031916928816929092179091555185906045906200437d908e908e9062009d21565b908152602001604051809103902060006101000a8154816001600160a01b0302191690836001600160a01b03160217905550816001600160a01b0316856001600160a01b03168d6001600160a01b03167faecd9fb95e79c75a3a1de93362c6be5fe6ab65770d8614be583884161cd8228d8e8e604051620044009291906200a250565b60405180910390a460408051848152602081018590526001600160a01b0387169182916000805160206200b757833981519152910160405180910390a360408051670de0b6b3a7640000808252602082015261dead916001600160a01b038816916000805160206200b757833981519152910160405180910390a3604051633041949b60e01b815261200590633041949b90620044a4908590899060040162009d07565b600060405180830381600087803b158015620044bf57600080fd5b505af1158015620044d4573d6000803e3d6000fd5b50505050505050505050505050505050565b60408051606081018252600080825260208201819052918101919091528162004511603f8262007d41565b6200452f5760405163056e881160e01b815260040160405180910390fd5b6001600160a01b03831660009081526041602090815260409182902082516060810184526009909101546001600160401b038082168352600160401b8204811693830193909352600160801b90049091169181019190915291505b50919050565b6001600160a01b03808216600090815260416020908152604080832081516101608101835281548616815260018201548616938101939093526002810154909416908201526003830154606082810191909152600484018054919491608084019190620045fd9062009cd1565b80601f01602080910402602001604051908101604052809291908181526020018280546200462b9062009cd1565b80156200467c5780601f1062004650576101008083540402835291602001916200467c565b820191906000526020600020905b8154815290600101906020018083116200465e57829003601f168201915b5050505050815260200160058201604051806080016040529081600082018054620046a79062009cd1565b80601f0160208091040260200160405190810160405280929190818152602001828054620046d59062009cd1565b8015620047265780601f10620046fa5761010080835404028352916020019162004726565b820191906000526020600020905b8154815290600101906020018083116200470857829003601f168201915b50505050508152602001600182018054620047419062009cd1565b80601f01602080910402602001604051908101604052809291908181526020018280546200476f9062009cd1565b8015620047c05780601f106200479457610100808354040283529160200191620047c0565b820191906000526020600020905b815481529060010190602001808311620047a257829003601f168201915b50505050508152602001600282018054620047db9062009cd1565b80601f0160208091040260200160405190810160405280929190818152602001828054620048099062009cd1565b80156200485a5780601f106200482e576101008083540402835291602001916200485a565b820191906000526020600020905b8154815290600101906020018083116200483c57829003601f168201915b50505050508152602001600382018054620048759062009cd1565b80601f0160208091040260200160405190810160405280929190818152602001828054620048a39062009cd1565b8015620048f45780601f10620048c857610100808354040283529160200191620048f4565b820191906000526020600020905b815481529060010190602001808311620048d657829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152805161028081019182905260a09092019190600d84019060149082845b815481526020019060010190808311620049805750505091909252505050608001519392505050565b3361100114620049d157604051630f22c43960e41b8152611001600482015260240162001133565b6001600160a01b0380821660009081526043602052604090205416620049f9603f8262007d41565b62004a175760405163056e881160e01b815260040160405180910390fd5b6001600160a01b038181166000908152604160205260408082206002810154603b54925163045bc4d160e41b81526004810193909352909316906345bc4d10906024016020604051808303816000875af115801562004a7a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004aa0919062009d80565b90506000603d544262004ab4919062009d6a565b905062004ac2838262007dee565b836001600160a01b03167f6e9a2ee7aee95665e3a774a212eb11441b217e3e4656ab9563793094689aabb28284600160405162004b029392919062009db0565b60405180910390a26002830154604051633041949b60e01b815261200591633041949b9162004b40916001600160a01b031690889060040162009d07565b600060405180830381600087803b15801562004b5b57600080fd5b505af115801562004b70573d6000803e3d6000fd5b505050505050505050565b600054610100900460ff161580801562004b9c5750600054600160ff909116105b8062004bb85750303b15801562004bb8575060005460ff166001145b62004c1d5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840162001133565b6000805460ff19166001179055801562004c41576000805461ff0019166101001790555b33411462004c625760405163022d8c9560e31b815260040160405180910390fd5b3a1562004c82576040516383f1b1d360e01b815260040160405180910390fd5b611388603555686c6b935b8bbd400000603655670de0b6b3a7640000603755600960385562093a806039556002603a819055678ac7230489e80000603b55680ad78ebc5ac6200000603c556202a300603d5562069780603e55604a5560408051610220810190915261020080825260609182916200b557602083013980602001905181019062004d1391906200a28c565b915060405180610360016040528061034081526020016200b777610340913980602001905181019062004d4791906200a330565b905060005b825181101562004db65760016047600085848151811062004d715762004d7162009e56565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905562004dae8162009ebb565b905062004d4c565b5060005b815181101562004e27576001604883838151811062004ddd5762004ddd62009e56565b602002602001015160405162004df491906200a42d565b908152604051908190036020019020805491151560ff1990921691909117905562004e1f8162009ebb565b905062004dba565b5062004e477330151da466ec8ab345bef3d6983023e050fb067362008cd4565b505080156200174b576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b336120001462004eba57604051630f22c43960e41b8152612000600482015260240162001133565b7faa5ba621c8b3d7d05bb9e51a7506108251d4d5dbe542ca66fc7bb52aacb02b6583838360405162004eef939291906200a44b565b60405180910390a1505050565b600054630100000090046001600160a01b0316331462004f2f576040516306fbb1e360e01b815260040160405180910390fd5b60005462010000900460ff161562004f5a57604051631785c68160e01b815260040160405180910390fd5b6000805462ff00001916620100001781556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e7529190a1565b600062004fa3603f8462007d41565b62004fc15760405163056e881160e01b815260040160405180910390fd5b6001600160a01b0383811660009081526041602052604090819020600201549051636bbf224960e01b815260048101859052911690636bbf2249906024015b602060405180830381865afa1580156200501e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005044919062009d80565b90505b92915050565b60005462010000900460ff16156200507857604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff1615620050aa5760405163b1d02c3d60e01b815260040160405180910390fd5b81620050b8603f8262007d41565b620050d65760405163056e881160e01b815260040160405180910390fd5b6037543490811015620050fc5760405163dc6f0bdd60e01b815260040160405180910390fd5b6001600160a01b0380851660009081526041602090815260408083208151610160810183528154861681526001820154861693810193909352600281015490941690820152600383015460608201526004830180543394916080840191620051649062009cd1565b80601f0160208091040260200160405190810160405280929190818152602001828054620051929062009cd1565b8015620051e35780601f10620051b757610100808354040283529160200191620051e3565b820191906000526020600020905b815481529060010190602001808311620051c557829003601f168201915b50505050508152602001600582016040518060800160405290816000820180546200520e9062009cd1565b80601f01602080910402602001604051908101604052809291908181526020018280546200523c9062009cd1565b80156200528d5780601f1062005261576101008083540402835291602001916200528d565b820191906000526020600020905b8154815290600101906020018083116200526f57829003601f168201915b50505050508152602001600182018054620052a89062009cd1565b80601f0160208091040260200160405190810160405280929190818152602001828054620052d69062009cd1565b8015620053275780601f10620052fb5761010080835404028352916020019162005327565b820191906000526020600020905b8154815290600101906020018083116200530957829003601f168201915b50505050508152602001600282018054620053429062009cd1565b80601f0160208091040260200160405190810160405280929190818152602001828054620053709062009cd1565b8015620053c15780601f106200539557610100808354040283529160200191620053c1565b820191906000526020600020905b815481529060010190602001808311620053a357829003601f168201915b50505050508152602001600382018054620053dc9062009cd1565b80601f01602080910402602001604051908101604052809291908181526020018280546200540a9062009cd1565b80156200545b5780601f106200542f576101008083540402835291602001916200545b565b820191906000526020600020905b8154815290600101906020018083116200543d57829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152805161028081019182905260a09092019190600d84019060149082845b815481526020019060010190808311620054e75750505050508152505090508060e0015180156200552a5750856001600160a01b0316826001600160a01b031614155b156200554957604051636468920360e01b815260040160405180910390fd5b60408082015190516317066a5760e21b81526001600160a01b0384811660048301526000921690635c19a95c90869060240160206040518083038185885af11580156200559a573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190620055c1919062009d80565b9050826001600160a01b0316876001600160a01b03166000805160206200b757833981519152838760405162005601929190918252602082015260400190565b60405180910390a36040808301519051633041949b60e01b815261200591633041949b91620056369190879060040162009d07565b600060405180830381600087803b1580156200565157600080fd5b505af115801562005666573d6000803e3d6000fd5b50505050851562001744576040516372f6ad8f60e11b81526120059063e5ed5b1e906200569a9086908b9060040162009d07565b600060405180830381600087803b158015620056b557600080fd5b505af1158015620056ca573d6000803e3d6000fd5b5050505050505050505050565b620057036040518060800160405280606081526020016060815260200160608152602001606081525090565b8162005711603f8262007d41565b6200572f5760405163056e881160e01b815260040160405180910390fd5b6001600160a01b03831660009081526041602052604090819020815160808101909252600501805482908290620057669062009cd1565b80601f0160208091040260200160405190810160405280929190818152602001828054620057949062009cd1565b8015620057e55780601f10620057b957610100808354040283529160200191620057e5565b820191906000526020600020905b815481529060010190602001808311620057c757829003601f168201915b50505050508152602001600182018054620058009062009cd1565b80601f01602080910402602001604051908101604052809291908181526020018280546200582e9062009cd1565b80156200587f5780601f1062005853576101008083540402835291602001916200587f565b820191906000526020600020905b8154815290600101906020018083116200586157829003601f168201915b505050505081526020016002820180546200589a9062009cd1565b80601f0160208091040260200160405190810160405280929190818152602001828054620058c89062009cd1565b8015620059195780601f10620058ed5761010080835404028352916020019162005919565b820191906000526020600020905b815481529060010190602001808311620058fb57829003601f168201915b50505050508152602001600382018054620059349062009cd1565b80601f0160208091040260200160405190810160405280929190818152602001828054620059629062009cd1565b8015620059b35780601f106200598757610100808354040283529160200191620059b3565b820191906000526020600020905b8154815290600101906020018083116200599557829003601f168201915b505050505081525050915050919050565b60005462010000900460ff1615620059ef57604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff161562005a215760405163b1d02c3d60e01b815260040160405180910390fd5b62005a2d828262008d6d565b5050565b336110071462005a5957604051630f22c43960e41b8152611007600482015260240162001133565b62005ac66040518060400160405280601081526020016f1d1c985b9cd9995c91d85cd31a5b5a5d60821b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062008e799050565b1562005b81576020811462005af85783838383604051630a5a604160e01b81526004016200113394939291906200a46a565b604080516020601f840181900481028201810190925282815260009162005b3b91858580838501838280828437600092019190915250929392505062008ed69050565b90506108fc81108062005b4f575061271081115b1562005b785784848484604051630a5a604160e01b81526004016200113394939291906200a46a565b6035556200688b565b62005bf26040518060400160405280601481526020017336b4b729b2b6332232b632b3b0ba34b7b721272160611b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062008e799050565b1562005cbc576020811462005c245783838383604051630a5a604160e01b81526004016200113394939291906200a46a565b604080516020601f840181900481028201810190925282815260009162005c6791858580838501838280828437600092019190915250929392505062008ed69050565b9050683635c9adc5dea0000081108062005c8a575069152d02c7e14af680000081115b1562005cb35784848484604051630a5a604160e01b81526004016200113394939291906200a46a565b6036556200688b565b62005d2f604051806040016040528060168152602001756d696e44656c65676174696f6e424e424368616e676560501b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062008e799050565b1562005df6576020811462005d615783838383604051630a5a604160e01b81526004016200113394939291906200a46a565b604080516020601f840181900481028201810190925282815260009162005da491858580838501838280828437600092019190915250929392505062008ed69050565b905067016345785d8a000081108062005dc45750678ac7230489e8000081115b1562005ded5784848484604051630a5a604160e01b81526004016200113394939291906200a46a565b6037556200688b565b62005e67604051806040016040528060148152602001736d6178456c656374656456616c696461746f727360601b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062008e799050565b1562005f1f576020811462005e995783838383604051630a5a604160e01b81526004016200113394939291906200a46a565b604080516020601f840181900481028201810190925282815260009162005edc91858580838501838280828437600092019190915250929392505062008ed69050565b905080158062005eed57506101f481115b1562005f165784848484604051630a5a604160e01b81526004016200113394939291906200a46a565b6038556200688b565b62005f886040518060400160405280600c81526020016b1d5b989bdb9914195c9a5bd960a21b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062008e799050565b1562006045576020811462005fba5783838383604051630a5a604160e01b81526004016200113394939291906200a46a565b604080516020601f840181900481028201810190925282815260009162005ffd91858580838501838280828437600092019190915250929392505062008ed69050565b90506203f48081108062006013575062278d0081115b156200603c5784848484604051630a5a604160e01b81526004016200113394939291906200a46a565b6039556200688b565b620060b360405180604001604052806011815260200170726564656c65676174654665655261746560781b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062008e799050565b15620061605760208114620060e55783838383604051630a5a604160e01b81526004016200113394939291906200a46a565b604080516020601f84018190048102820181019092528281526000916200612891858580838501838280828437600092019190915250929392505062008ed69050565b90506064811115620061575784848484604051630a5a604160e01b81526004016200113394939291906200a46a565b603a556200688b565b620061d060405180604001604052806013815260200172191bdddb9d1a5b5954db185cda105b5bdd5b9d606a1b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062008e799050565b15620062915760208114620062025783838383604051630a5a604160e01b81526004016200113394939291906200a46a565b604080516020601f84018190048102820181019092528281526000916200624591858580838501838280828437600092019190915250929392505062008ed69050565b9050674563918244f400008110806200625f5750603c5481115b15620062885784848484604051630a5a604160e01b81526004016200113394939291906200a46a565b603b556200688b565b620062ff6040518060400160405280601181526020017019995b1bdb9e54db185cda105b5bdd5b9d607a1b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062008e799050565b15620063c25760208114620063315783838383604051630a5a604160e01b81526004016200113394939291906200a46a565b604080516020601f84018190048102820181019092528281526000916200637491858580838501838280828437600092019190915250929392505062008ed69050565b905068056bc75e2d63100000811080620063905750603b548111155b15620063b95784848484604051630a5a604160e01b81526004016200113394939291906200a46a565b603c556200688b565b6200642f6040518060400160405280601081526020016f646f776e74696d654a61696c54696d6560801b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062008e799050565b15620064ec5760208114620064615783838383604051630a5a604160e01b81526004016200113394939291906200a46a565b604080516020601f8401819004810282018101909252828152600091620064a491858580838501838280828437600092019190915250929392505062008ed69050565b90506202a300811080620064ba5750603e548110155b15620064e35784848484604051630a5a604160e01b81526004016200113394939291906200a46a565b603d556200688b565b620065576040518060400160405280600e81526020016d66656c6f6e794a61696c54696d6560901b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062008e799050565b15620066145760208114620065895783838383604051630a5a604160e01b81526004016200113394939291906200a46a565b604080516020601f8401819004810282018101909252828152600091620065cc91858580838501838280828437600092019190915250929392505062008ed69050565b9050620d2f00811080620065e25750603d548111155b156200660b5784848484604051630a5a604160e01b81526004016200113394939291906200a46a565b603e556200688b565b6200668e6040518060400160405280601c81526020017f6d617846656c6f6e794265747765656e42726561746865426c6f636b0000000081525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062008e799050565b156200673a5760208114620066c05783838383604051630a5a604160e01b81526004016200113394939291906200a46a565b604080516020601f84018190048102820181019092528281526000916200670391858580838501838280828437600092019190915250929392505062008ed69050565b905080600003620067315784848484604051630a5a604160e01b81526004016200113394939291906200a46a565b604a556200688b565b620067a86040518060400160405280601181526020017039ba30b5b2a43ab1283937ba32b1ba37b960791b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062008e799050565b15620068685760148114620067da5783838383604051630a5a604160e01b81526004016200113394939291906200a46a565b600062006822601484848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062008ed69050565b90506001600160a01b038116620068565784848484604051630a5a604160e01b81526004016200113394939291906200a46a565b620068618162008edb565b506200688b565b838383836040516325ee20d560e21b81526004016200113394939291906200a46a565b7ff1ce9b2cbf50eeb05769a29e2543fd350cab46894a7dd9978a12d534bb20e63384848484604051620068c294939291906200a46a565b60405180910390a150505050565b60005462010000900460ff1615620068fb57604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff16156200692d5760405163b1d02c3d60e01b815260040160405180910390fd5b816000816001600160401b038111156200694b576200694b62009554565b60405190808252806020026020018201604052801562006975578160200160208202803683370190505b5090506000805b8381101562006a7357620069be8787838181106200699e576200699e62009e56565b9050602002016020810190620069b59190620093e3565b603f9062007d41565b620069dc5760405163056e881160e01b815260040160405180910390fd5b60416000888884818110620069f557620069f562009e56565b905060200201602081019062006a0c9190620093e3565b6001600160a01b039081168252602082019290925260400160002060020154845191169250829084908390811062006a485762006a4862009e56565b6001600160a01b039092166020928302919091019091015262006a6b8162009ebb565b90506200697c565b50604051634484077560e01b815261200590634484077590620027f4908590889060040162009e6c565b606080600062006aae603f620088d1565b90508085101562006c7257831562006ac7578362006ac9565b805b935060008462006ada878462009e26565b1162006af25762006aec868362009e26565b62006af4565b845b9050806001600160401b0381111562006b115762006b1162009554565b60405190808252806020026020018201604052801562006b3b578160200160208202803683370190505b509350806001600160401b0381111562006b595762006b5962009554565b60405190808252806020026020018201604052801562006b83578160200160208202803683370190505b50925060005b8181101562006c6f5762006ba262003966828962009d6a565b85828151811062006bb75762006bb762009e56565b60200260200101906001600160a01b031690816001600160a01b0316815250506041600086838151811062006bf05762006bf062009e56565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060020160009054906101000a90046001600160a01b031684828151811062006c445762006c4462009e56565b6001600160a01b039092166020928302919091019091015262006c678162009ebb565b905062006b89565b50505b9250925092565b336110011462006ca157604051630f22c43960e41b8152611001600482015260240162001133565b60005462010000900460ff161562006ccc57604051631785c68160e01b815260040160405180910390fd5b6001600160a01b038082166000908152604360205260409020541662006cf4603f8262007d41565b62006d125760405163056e881160e01b815260040160405180910390fd5b6001600160a01b03811660009081526041602052604081209062006d3a620151804262009d47565b604a546000828152604b60205260409020549192501162006d6e5760405163bd52fcdb60e01b815260040160405180910390fd5b6000818152604b6020526040812080546001929062006d8f90849062009d6a565b90915550506001600160a01b0384166000908152604460205260409020541580159062006de457506001600160a01b038416600090815260446020526040902054429062006de290620151809062009d6a565b105b1562006e03576040516330abb81d60e21b815260040160405180910390fd5b60008062006e1385600062007d64565b915091508162006e3657604051631b919bb160e11b815260040160405180910390fd5b6002840154603c5460405163045bc4d160e41b815260048101919091526000916001600160a01b0316906345bc4d10906024016020604051808303816000875af115801562006e89573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062006eaf919062009d80565b905062006ebd858362007dee565b856001600160a01b03167f6e9a2ee7aee95665e3a774a212eb11441b217e3e4656ab9563793094689aabb28383600060405162006efd9392919062009db0565b60405180910390a26002850154604051633041949b60e01b815261200591633041949b916200569a916001600160a01b0316908a9060040162009d07565b6001600160a01b038082166000908152604160209081526040808320815161016081018352815486168152600182015486169381019390935260028101549094169082015260038301546060820152600483018054929384938493849390929160808401919062006fac9062009cd1565b80601f016020809104026020016040519081016040528092919081815260200182805462006fda9062009cd1565b80156200702b5780601f1062006fff576101008083540402835291602001916200702b565b820191906000526020600020905b8154815290600101906020018083116200700d57829003601f168201915b5050505050815260200160058201604051806080016040529081600082018054620070569062009cd1565b80601f0160208091040260200160405190810160405280929190818152602001828054620070849062009cd1565b8015620070d55780601f10620070a957610100808354040283529160200191620070d5565b820191906000526020600020905b815481529060010190602001808311620070b757829003601f168201915b50505050508152602001600182018054620070f09062009cd1565b80601f01602080910402602001604051908101604052809291908181526020018280546200711e9062009cd1565b80156200716f5780601f1062007143576101008083540402835291602001916200716f565b820191906000526020600020905b8154815290600101906020018083116200715157829003601f168201915b505050505081526020016002820180546200718a9062009cd1565b80601f0160208091040260200160405190810160405280929190818152602001828054620071b89062009cd1565b8015620072095780601f10620071dd5761010080835404028352916020019162007209565b820191906000526020600020905b815481529060010190602001808311620071eb57829003601f168201915b50505050508152602001600382018054620072249062009cd1565b80601f0160208091040260200160405190810160405280929190818152602001828054620072529062009cd1565b8015620072a35780601f106200727757610100808354040283529160200191620072a3565b820191906000526020600020905b8154815290600101906020018083116200728557829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152805161028081019182905260a09092019190600d84019060149082845b8154815260200190600101908083116200732f5750505091909252505050606081015160e0820151610100909201519097919650945092505050565b60005462010000900460ff16156200739657604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff1615620073c85760405163b1d02c3d60e01b815260040160405180910390fd5b33620073d6603f8262007d41565b620073f45760405163056e881160e01b815260040160405180910390fd5b336000818152604160205260409020600c81015442906200741a90620151809062009d6a565b11156200743a57604051631f92cdbd60e11b815260040160405180910390fd5b6005810180546200744b9062009cd1565b80601f0160208091040260200160405190810160405280929190818152602001828054620074799062009cd1565b8015620074ca5780601f106200749e57610100808354040283529160200191620074ca565b820191906000526020600020905b815481529060010190602001808311620074ac57829003601f168201915b5050508287525085916005840191508190620074e790826200a495565b5060208201516001820190620074fe90826200a495565b50604082015160028201906200751590826200a495565b50606082015160038201906200752c90826200a495565b505042600c830155506040516001600160a01b038316907f85d6366b336ade7f106987ec7a8eac1e8799e508aeab045a39d2f63e0dc969d990600090a250505050565b60005462010000900460ff16156200759a57604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff1615620075cc5760405163b1d02c3d60e01b815260040160405180910390fd5b828114620075ed576040516341abc80160e01b815260040160405180910390fd5b60005b838110156200765e576200764b85858381811062007612576200761262009e56565b9050602002016020810190620076299190620093e3565b8484848181106200763e576200763e62009e56565b9050602002013562008d6d565b620076568162009ebb565b9050620075f0565b5050505050565b6001600160a01b0380821660009081526041602090815260408083208151610160810183528154861681526001820154861693810193909352600281015490941690820152600383015460608201526004830180549293849390916080840191620076d09062009cd1565b80601f0160208091040260200160405190810160405280929190818152602001828054620076fe9062009cd1565b80156200774f5780601f1062007723576101008083540402835291602001916200774f565b820191906000526020600020905b8154815290600101906020018083116200773157829003601f168201915b50505050508152602001600582016040518060800160405290816000820180546200777a9062009cd1565b80601f0160208091040260200160405190810160405280929190818152602001828054620077a89062009cd1565b8015620077f95780601f10620077cd57610100808354040283529160200191620077f9565b820191906000526020600020905b815481529060010190602001808311620077db57829003601f168201915b50505050508152602001600182018054620078149062009cd1565b80601f0160208091040260200160405190810160405280929190818152602001828054620078429062009cd1565b8015620078935780601f10620078675761010080835404028352916020019162007893565b820191906000526020600020905b8154815290600101906020018083116200787557829003601f168201915b50505050508152602001600282018054620078ae9062009cd1565b80601f0160208091040260200160405190810160405280929190818152602001828054620078dc9062009cd1565b80156200792d5780601f1062007901576101008083540402835291602001916200792d565b820191906000526020600020905b8154815290600101906020018083116200790f57829003601f168201915b50505050508152602001600382018054620079489062009cd1565b80601f0160208091040260200160405190810160405280929190818152602001828054620079769062009cd1565b8015620079c75780601f106200799b57610100808354040283529160200191620079c7565b820191906000526020600020905b815481529060010190602001808311620079a957829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152805161028081019182905260a09092019190600d84019060149082845b81548152602001906001019080831162007a535750505091909252505050604001519392505050565b600062007a8b603f8462007d41565b62007aa95760405163056e881160e01b815260040160405180910390fd5b6001600160a01b038381166000908152604160205260409081902060020154905163aa1966cd60e01b81526004810185905291169063aa1966cd9060240162005000565b60005462010000900460ff161562007b1857604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff161562007b4a5760405163b1d02c3d60e01b815260040160405180910390fd5b3362007b58603f8262007d41565b62007b765760405163056e881160e01b815260040160405180910390fd5b3362007b86818787878762008a8c565b62007ba457604051631647e3cb60e11b815260040160405180910390fd5b60006001600160a01b03166045878760405162007bc392919062009d21565b908152604051908190036020019020546001600160a01b031614158062007c0d57506048868660405162007bf992919062009d21565b9081526040519081900360200190205460ff165b1562007c2c576040516311fdb94760e01b815260040160405180910390fd5b6001600160a01b0381166000908152604160205260409020600c810154429062007c5b90620151809062009d6a565b111562007c7b57604051631f92cdbd60e11b815260040160405180910390fd5b4260468260040160405162007c9191906200a55d565b908152604051908190036020019020556004810162007cb287898362009f7f565b5042600c820155604051829060459062007cd0908a908a9062009d21565b90815260405190819003602001812080546001600160a01b039384166001600160a01b0319909116179055908316907f783156582145bd0ff7924fae6953ba054cf1233eb60739a200ddb10de068ff0d9062007d30908a908a906200a250565b60405180910390a250505050505050565b6001600160a01b0381166000908152600183016020526040812054151562005044565b6000806000848460405160200162007d7e9291906200a5db565b60408051601f1981840301815291815281516020928301206000818152604c9093529120549091504281111562007dbe5760008093509350505062007de7565b603e5462007dcd904262009d6a565b6000928352604c6020526040909220829055506001925090505b9250929050565b8154604051631507fdb760e11b81526001600160a01b03909116600482015261100090632a0ffb6e90602401600060405180830381600087803b15801562007e3557600080fd5b505af115801562007e4a573d6000803e3d6000fd5b505050506000600162007e5e603f620088d1565b62007e6a919062009e26565b604954108015915062007f285760405163d31f968d60e01b81526110006004820152600860248201526120009063d31f968d90604401602060405180830381865afa15801562007ebe573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062007ee4919062009ddf565b62007f285760018301546040516001600160a01b03909116907f2afdc18061ac21cff7d9f11527ab9c8dec6fabd4edf6f894ed634bebd6a20d4590600090a2505050565b82600b015482111562007f3d57600b83018290555b600a83015460ff1662007fb057600a8301805460ff191660019081179091556049805460009062007f7090849062009d6a565b909155505060018301546040516001600160a01b03909116907f4905ac32602da3fb8b4b7b00c285e5fc4c6c2308cc908b4a1e4e9625a29c90a390600090a25b505050565b60408051608080820183526000808352602080840182905283850182905260608085018390528551938401865282845283820183905283860183905283018290528451808601865282815281018290528451808601909552855185528581019085015291928290620080279062008f47565b90506000805b620080388362008fba565b156200810b57806000036200806d576200805c620080568462008fe0565b62009044565b6001600160a01b03168452620080f8565b80600103620080995762008085620080568462008fe0565b6001600160a01b03166020850152620080f8565b80600203620080c557620080b1620080568462008fe0565b6001600160a01b03166040850152620080f8565b80600303620080f257620080e3620080dd8462008fe0565b6200905c565b606085015260019150620080f8565b6200810b565b620081038162009ebb565b90506200802d565b5091959194509092505050565b6000805462010000900460ff16156200814457604051631785c68160e01b815260040160405180910390fd5b6020808301516001600160a01b031660009081526001909152604090205460ff16806200817c575060208201516001600160a01b0316155b156200819b5760405163b1d02c3d60e01b815260040160405180910390fd5b8151620081ab90603f9062007d41565b620081b857506002919050565b81516001600160a01b03908116600090815260416020908152604080832081516101608101835281548616815260018201548616938101939093526002810154909416908201526003830154606082015260048301805492939192608084019190620082249062009cd1565b80601f0160208091040260200160405190810160405280929190818152602001828054620082529062009cd1565b8015620082a35780601f106200827757610100808354040283529160200191620082a3565b820191906000526020600020905b8154815290600101906020018083116200828557829003601f168201915b5050505050815260200160058201604051806080016040529081600082018054620082ce9062009cd1565b80601f0160208091040260200160405190810160405280929190818152602001828054620082fc9062009cd1565b80156200834d5780601f1062008321576101008083540402835291602001916200834d565b820191906000526020600020905b8154815290600101906020018083116200832f57829003601f168201915b50505050508152602001600182018054620083689062009cd1565b80601f0160208091040260200160405190810160405280929190818152602001828054620083969062009cd1565b8015620083e75780601f10620083bb57610100808354040283529160200191620083e7565b820191906000526020600020905b815481529060010190602001808311620083c957829003601f168201915b50505050508152602001600282018054620084029062009cd1565b80601f0160208091040260200160405190810160405280929190818152602001828054620084309062009cd1565b8015620084815780601f10620084555761010080835404028352916020019162008481565b820191906000526020600020905b8154815290600101906020018083116200846357829003601f168201915b505050505081526020016003820180546200849c9062009cd1565b80601f0160208091040260200160405190810160405280929190818152602001828054620084ca9062009cd1565b80156200851b5780601f10620084ef576101008083540402835291602001916200851b565b820191906000526020600020905b815481529060010190602001808311620084fd57829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152805161028081019182905260a09092019190600d84019060149082845b815481526020019060010190808311620085a75750505050508152505090508060e001518015620085f2575082600001516001600160a01b031683602001516001600160a01b031614155b15620086015750600392915050565b6040808201516060850151602086015192516317066a5760e21b81526001600160a01b03938416600482015260009390921691635c19a95c919060240160206040518083038185885af11580156200865d573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019062008684919062009d80565b905083602001516001600160a01b031684600001516001600160a01b03166000805160206200b757833981519152838760600151604051620086d0929190918252602082015260400190565b60405180910390a383602001516001600160a01b031684600001516001600160a01b03167f607b17598da6bdca05650a2fc08bd2bc8e38c3236806a0fa8e0daabc1d6cb1d883876060015160405162008733929190918252602082015260400190565b60405180910390a360408083015160208601519151633041949b60e01b815261200592633041949b926200876d9290919060040162009d07565b600060405180830381600087803b1580156200878857600080fd5b505af11580156200879d573d6000803e3d6000fd5b506000979650505050505050565b6001600160a01b0381166000908152604160205260409020600a81015460ff1615620087d5575050565b6036546002820154604051630913db4760e01b81526001600160a01b03858116600483015290911690630913db4790602401602060405180830381865afa15801562008825573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200884b919062009d80565b101562005a2d576200886d81603d544262008867919062009d6a565b62007dee565b80546040516335409f7f60e01b81526001600160a01b039091166004820152611000906335409f7f90602401600060405180830381600087803b158015620088b457600080fd5b505af1158015620088c9573d6000803e3d6000fd5b505050505050565b600062005047825490565b600062005044838362009134565b60008082905060038151108062008902575060098151115b15620089115750600092915050565b60418160008151811062008929576200892962009e56565b016020015160f81c10806200895b5750605a8160008151811062008951576200895162009e56565b016020015160f81c115b156200896a5750600092915050565b60015b815181101562008a825760308282815181106200898e576200898e62009e56565b016020015160f81c1080620089bf57506039828281518110620089b557620089b562009e56565b016020015160f81c115b801562008a0f57506041828281518110620089de57620089de62009e56565b016020015160f81c108062008a0f5750605a82828151811062008a055762008a0562009e56565b016020015160f81c115b801562008a5f5750606182828151811062008a2e5762008a2e62009e56565b016020015160f81c108062008a5f5750607a82828151811062008a555762008a5562009e56565b016020015160f81c115b1562008a6f575060009392505050565b62008a7a8162009ebb565b90506200896d565b5060019392505050565b600060308414158062008aa0575060608214155b1562008aaf5750600062008bb3565b60008686864660405160200162008aca94939291906200a619565b60408051808303601f1901815282825280516020918201208184528383019092529092506000919060208201818036833701905050905081602082015260008186868a8a60405160200162008b249594939291906200a646565b60408051808303601f190181526001808452838301909252925060009190602082018180368337019050509050815160016020830182602086016066600019fa62008b6e57600080fd5b5060008160008151811062008b875762008b8762009e56565b016020015160f81c90506001811462008ba95760009550505050505062008bb3565b6001955050505050505b95945050505050565b60008061200361dead60405162008bd390620093bf565b6001600160a01b03928316815291166020820152606060408201819052600090820152608001604051809103906000f08015801562008c16573d6000803e3d6000fd5b509050806001600160a01b031663f399e22e3486866040518463ffffffff1660e01b815260040162008c4a9291906200a67e565b6000604051808303818588803b15801562008c6457600080fd5b505af115801562008c79573d6000803e3d6000fd5b50506040516001600160a01b038086169450881692507fd481492e4e93bb36b4c12a5af93f03be3bf04b454dfbc35dd2663fa26f44d5b09150600090a39392505050565b600062005044836001600160a01b03841662009161565b600054610100900460ff1662008d415760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840162001133565b600080546001600160a01b039092166301000000026301000000600160b81b0319909216919091179055565b8162008d7b603f8262007d41565b62008d995760405163056e881160e01b815260040160405180910390fd5b6001600160a01b03838116600090815260416020526040808220600201549051635569f64b60e11b8152336004820152602481018690529192169063aad3ec96906044016020604051808303816000875af115801562008dfd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062008e23919062009d80565b9050336001600160a01b0316846001600160a01b03167ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926838360405162008e6b91815260200190565b60405180910390a350505050565b60008160405160200162008e8e91906200a42d565b604051602081830303815290604052805190602001208360405160200162008eb791906200a42d565b6040516020818303038152906040528051906020012014905092915050565b015190565b600080546040516001600160a01b0380851693630100000090930416917f44fc1b38a4abaa91ebd1b628a5b259a698f86238c8217d68f516e87769c60c0b91a3600080546001600160a01b039092166301000000026301000000600160b81b0319909216919091179055565b604080516080810182526000918101828152606082018390528152602081019190915262008f7582620091b3565b62008f7f57600080fd5b600062008f908360200151620091e6565b836020015162008fa1919062009d6a565b6040805180820190915293845260208401525090919050565b8051805160208201516000929162008fd29162009d6a565b836020015110915050919050565b604080518082019091526000808252602082015262008fff8262008fba565b6200900957600080fd5b602082015160006200901b8262009275565b905062009029818362009d6a565b60209485015260408051808201909152908152928301525090565b80516000906015146200905657600080fd5b62005047825b8051600090158015906200907257508151602110155b6200907c57600080fd5b60006200908d8360200151620091e6565b90508083600001511015620090e55760405162461bcd60e51b815260206004820152601a60248201527f6c656e677468206973206c657373207468616e206f6666736574000000000000604482015260640162001133565b8251600090620090f790839062009e26565b90506000808386602001516200910e919062009d6a565b90508051915060208310156200912b57826020036101000a820491505b50949350505050565b60008260000182815481106200914e576200914e62009e56565b9060005260206000200154905092915050565b6000818152600183016020526040812054620091aa5750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915562005047565b50600062005047565b80516000908103620091c757506000919050565b6020820151805160001a9060c082101562008a82575060009392505050565b8051600090811a6080811015620092005750600092915050565b60b88110806200921d575060c081108015906200921d575060f881105b156200922c5750600192915050565b60c0811015620092675762009244600160b86200a6a4565b620092539060ff168262009e26565b6200926090600162009d6a565b9392505050565b62009244600160f86200a6a4565b80516000908190811a6080811015620092925760019150620093b8565b60b8811015620092be57620092a960808262009e26565b620092b690600162009d6a565b9150620093b8565b60c08110156200933757600060b78203600186019550806020036101000a865104915060018101820193505080831015620093305760405162461bcd60e51b81526020600482015260116024820152706164646974696f6e206f766572666c6f7760781b604482015260640162001133565b50620093b8565b60f88110156200934e57620092a960c08262009e26565b600060f78203600186019550806020036101000a865104915060018101820193505080831015620093b65760405162461bcd60e51b81526020600482015260116024820152706164646974696f6e206f766572666c6f7760781b604482015260640162001133565b505b5092915050565b610e96806200a6c183390190565b6001600160a01b03811681146200174b57600080fd5b600060208284031215620093f657600080fd5b81356200926081620093cd565b60008083601f8401126200941657600080fd5b5081356001600160401b038111156200942e57600080fd5b60208301915083602082850101111562007de757600080fd5b600080602083850312156200945b57600080fd5b82356001600160401b038111156200947257600080fd5b620094808582860162009403565b90969095509350505050565b600080600060408486031215620094a257600080fd5b833560ff81168114620094b457600080fd5b925060208401356001600160401b03811115620094d057600080fd5b620094de8682870162009403565b9497909650939450505050565b60005b8381101562009508578181015183820152602001620094ee565b50506000910152565b600081518084526200952b816020860160208601620094eb565b601f01601f19169290920160200192915050565b60208152600062005044602083018462009511565b634e487b7160e01b600052604160045260246000fd5b604051608081016001600160401b03811182821017156200958f576200958f62009554565b60405290565b604051601f8201601f191681016001600160401b0381118282101715620095c057620095c062009554565b604052919050565b60006001600160401b03821115620095e457620095e462009554565b50601f01601f191660200190565b6000620096096200960384620095c8565b62009595565b90508281528383830111156200961e57600080fd5b828260208301376000602084830101529392505050565b6000602082840312156200964857600080fd5b81356001600160401b038111156200965f57600080fd5b8201601f810184136200967157600080fd5b6200968284823560208401620095f2565b949350505050565b600080604083850312156200969e57600080fd5b8235620096ab81620093cd565b946020939093013593505050565b80151581146200174b57600080fd5b60008060008060808587031215620096df57600080fd5b8435620096ec81620093cd565b93506020850135620096fe81620093cd565b92506040850135915060608501356200971781620096b9565b939692955090935050565b6001600160401b03811681146200174b57600080fd5b6000602082840312156200974b57600080fd5b8135620092608162009722565b600080604083850312156200976c57600080fd5b50508035926020909101359150565b600081518084526020808501945080840160005b83811015620097b65781516001600160a01b0316875295820195908201906001016200978f565b509495945050505050565b608081526000620097d660808301876200977b565b82810360208481019190915286518083528782019282019060005b818110156200980f57845183529383019391830191600101620097f1565b5050848103604086015286518082528282019350600581901b8201830183890160005b838110156200986457601f198584030187526200985183835162009511565b9686019692509085019060010162009832565b5050809550505050505082606083015295945050505050565b600080600080600080600087890360e08112156200989a57600080fd5b8835620098a781620093cd565b975060208901356001600160401b0380821115620098c457600080fd5b620098d28c838d0162009403565b909950975060408b0135915080821115620098ec57600080fd5b620098fa8c838d0162009403565b90975095508591506060605f19840112156200991557600080fd5b60608b01945060c08b01359250808311156200993057600080fd5b505088016080818b0312156200994557600080fd5b8091505092959891949750929550565b600080604083850312156200996957600080fd5b82356200997681620093cd565b915060208301356200998881620096b9565b809150509250929050565b602081526000825160806020840152620099b160a084018262009511565b90506020840151601f1980858403016040860152620099d1838362009511565b92506040860151915080858403016060860152620099f0838362009511565b925060608601519150808584030160808601525062008bb3828262009511565b6000806000806040858703121562009a2757600080fd5b84356001600160401b038082111562009a3f57600080fd5b62009a4d8883890162009403565b9096509450602087013591508082111562009a6757600080fd5b5062009a768782880162009403565b95989497509550505050565b60008083601f84011262009a9557600080fd5b5081356001600160401b0381111562009aad57600080fd5b6020830191508360208260051b850101111562007de757600080fd5b60008060006040848603121562009adf57600080fd5b83356001600160401b0381111562009af657600080fd5b62009b048682870162009a82565b909450925050602084013562009b1a81620093cd565b809150509250925092565b60608152600062009b3a60608301866200977b565b828103602084015262009b4e81866200977b565b915050826040830152949350505050565b600082601f83011262009b7157600080fd5b6200504483833560208501620095f2565b60006020828403121562009b9557600080fd5b81356001600160401b038082111562009bad57600080fd5b908301906080828603121562009bc257600080fd5b62009bcc6200956a565b82358281111562009bdc57600080fd5b62009bea8782860162009b5f565b82525060208301358281111562009c0057600080fd5b62009c0e8782860162009b5f565b60208301525060408301358281111562009c2757600080fd5b62009c358782860162009b5f565b60408301525060608301358281111562009c4e57600080fd5b62009c5c8782860162009b5f565b60608301525095945050505050565b6000806000806040858703121562009c8257600080fd5b84356001600160401b038082111562009c9a57600080fd5b62009ca88883890162009a82565b9096509450602087013591508082111562009cc257600080fd5b5062009a768782880162009a82565b600181811c9082168062009ce657607f821691505b6020821081036200458a57634e487b7160e01b600052602260045260246000fd5b6001600160a01b0392831681529116602082015260400190565b8183823760009101908152919050565b634e487b7160e01b600052601160045260246000fd5b60008262009d6557634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111562005047576200504762009d31565b60006020828403121562009d9357600080fd5b5051919050565b634e487b7160e01b600052602160045260246000fd5b83815260208101839052606081016003831062009dd15762009dd162009d9a565b826040830152949350505050565b60006020828403121562009df257600080fd5b81516200926081620096b9565b828152604081016004831062009e195762009e1962009d9a565b8260208301529392505050565b8181038181111562005047576200504762009d31565b808202811582820484141762005047576200504762009d31565b634e487b7160e01b600052603260045260246000fd5b60408152600062009e8160408301856200977b565b905060018060a01b03831660208301529392505050565b6001600160401b03828116828216039080821115620093b857620093b862009d31565b60006001820162009ed05762009ed062009d31565b5060010190565b6000808335601e1984360301811262009eef57600080fd5b8301803591506001600160401b0382111562009f0a57600080fd5b60200191503681900382131562007de757600080fd5b601f82111562007fb057600081815260208120601f850160051c8101602086101562009f495750805b601f850160051c820191505b81811015620088c95782815560010162009f55565b600019600383901b1c191660019190911b1790565b6001600160401b0383111562009f995762009f9962009554565b62009fb18362009faa835462009cd1565b8362009f20565b6000601f84116001811462009fe4576000851562009fcf5750838201355b62009fdb868262009f6a565b8455506200765e565b600083815260209020601f19861690835b828110156200a017578685013582556020948501946001909201910162009ff5565b50868210156200a0355760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b6200a053828362009ed7565b6001600160401b038111156200a06d576200a06d62009554565b6200a085816200a07e855462009cd1565b8562009f20565b6000601f8211600181146200a0b857600083156200a0a35750838201355b6200a0af848262009f6a565b8655506200a115565b600085815260209020601f19841690835b828110156200a0eb57868501358255602094850194600190920191016200a0c9565b50848210156200a1095760001960f88660031b161c19848701351681555b505060018360011b0185555b505050506200a128602083018362009ed7565b6200a13881836001860162009f7f565b50506200a149604083018362009ed7565b6200a15981836002860162009f7f565b50506200a16a606083018362009ed7565b6200a17a81836003860162009f7f565b50505050565b81356200a18d8162009722565b6001600160401b03811690508154816001600160401b0319821617835560208401356200a1ba8162009722565b6fffffffffffffffff0000000000000000604091821b166fffffffffffffffffffffffffffffffff198316841781178555908501356200a1fa8162009722565b6001600160c01b0319929092169092179190911760809190911b67ffffffffffffffff60801b1617905550565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b602081526000620096826020830184866200a227565b60006001600160401b038211156200a282576200a28262009554565b5060051b60200190565b600060208083850312156200a2a057600080fd5b82516001600160401b038111156200a2b757600080fd5b8301601f810185136200a2c957600080fd5b80516200a2da62009603826200a266565b81815260059190911b820183019083810190878311156200a2fa57600080fd5b928401925b828410156200a3255783516200a31581620093cd565b825292840192908401906200a2ff565b979650505050505050565b600060208083850312156200a34457600080fd5b82516001600160401b03808211156200a35c57600080fd5b818501915085601f8301126200a37157600080fd5b81516200a38262009603826200a266565b81815260059190911b830184019084810190888311156200a3a257600080fd5b8585015b838110156200a420578051858111156200a3c05760008081fd5b8601603f81018b136200a3d35760008081fd5b8781015160406200a3e86200960383620095c8565b8281528d828486010111156200a3fe5760008081fd5b6200a40f838c8301848701620094eb565b86525050509186019186016200a3a6565b5098975050505050505050565b600082516200a441818460208701620094eb565b9190910192915050565b60ff8416815260406020820152600062008bb36040830184866200a227565b6040815260006200a4806040830186886200a227565b82810360208401526200a3258185876200a227565b81516001600160401b038111156200a4b1576200a4b162009554565b6200a4c9816200a4c2845462009cd1565b8462009f20565b602080601f8311600181146200a4fd57600084156200a4e85750858301515b6200a4f4858262009f6a565b865550620088c9565b600085815260208120601f198616915b828110156200a52e578886015182559484019460019091019084016200a50d565b50858210156200a54d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60008083546200a56d8162009cd1565b600182811680156200a58857600181146200a59e576200a5cf565b60ff19841687528215158302870194506200a5cf565b8760005260208060002060005b858110156200a5c65781548a8201529084019082016200a5ab565b50505082870194505b50929695505050505050565b6bffffffffffffffffffffffff198360601b1681526000600383106200a605576200a60562009d9a565b5060f89190911b6014820152601501919050565b6bffffffffffffffffffffffff198560601b16815282846014830137601492019182015260340192915050565b600086516200a65a818460208b01620094eb565b82018587823760009086019081528385823760009301928352509095945050505050565b6001600160a01b0383168152604060208201819052600090620096829083018462009511565b60ff828116828216039081111562005047576200504762009d3156fe608060405260405162000e9638038062000e96833981016040819052620000269162000497565b828162000036828260006200004d565b50620000449050826200008a565b505050620005ca565b6200005883620000e5565b600082511180620000665750805b1562000085576200008383836200012760201b620001691760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f620000b562000156565b604080516001600160a01b03928316815291841660208301520160405180910390a1620000e2816200018f565b50565b620000f08162000244565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606200014f838360405180606001604052806027815260200162000e6f60279139620002f8565b9392505050565b60006200018060008051602062000e4f83398151915260001b6200037760201b620001951760201c565b546001600160a01b0316919050565b6001600160a01b038116620001fa5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b806200022360008051602062000e4f83398151915260001b6200037760201b620001951760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6200025a816200037a60201b620001981760201c565b620002be5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401620001f1565b80620002237f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b6200037760201b620001951760201c565b6060600080856001600160a01b03168560405162000317919062000577565b600060405180830381855af49150503d806000811462000354576040519150601f19603f3d011682016040523d82523d6000602084013e62000359565b606091505b5090925090506200036d8683838762000389565b9695505050505050565b90565b6001600160a01b03163b151590565b60608315620003fd578251600003620003f5576001600160a01b0385163b620003f55760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401620001f1565b508162000409565b62000409838362000411565b949350505050565b815115620004225781518083602001fd5b8060405162461bcd60e51b8152600401620001f1919062000595565b80516001600160a01b03811681146200045657600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200048e57818101518382015260200162000474565b50506000910152565b600080600060608486031215620004ad57600080fd5b620004b8846200043e565b9250620004c8602085016200043e565b60408501519092506001600160401b0380821115620004e657600080fd5b818601915086601f830112620004fb57600080fd5b8151818111156200051057620005106200045b565b604051601f8201601f19908116603f011681019083821181831017156200053b576200053b6200045b565b816040528281528960208487010111156200055557600080fd5b6200056883602083016020880162000471565b80955050505050509250925092565b600082516200058b81846020870162000471565b9190910192915050565b6020815260008251806020840152620005b681604085016020870162000471565b601f01601f19169190910160400192915050565b61087580620005da6000396000f3fe60806040523661001357610011610017565b005b6100115b61001f6101a7565b6001600160a01b0316330361015f5760606001600160e01b0319600035166364d3180d60e11b810161005a576100536101da565b9150610157565b63587086bd60e11b6001600160e01b031982160161007a57610053610231565b63070d7c6960e41b6001600160e01b031982160161009a57610053610277565b621eb96f60e61b6001600160e01b03198216016100b9576100536102a8565b63a39f25e560e01b6001600160e01b03198216016100d9576100536102e8565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101676102fc565b565b606061018e83836040518060600160405280602781526020016108426027913961030c565b9392505050565b90565b6001600160a01b03163b151590565b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101e4610384565b60006101f33660048184610695565b81019061020091906106db565b905061021d8160405180602001604052806000815250600061038f565b505060408051602081019091526000815290565b60606000806102433660048184610695565b810190610250919061070c565b915091506102608282600161038f565b604051806020016040528060008152509250505090565b6060610281610384565b60006102903660048184610695565b81019061029d91906106db565b905061021d816103bb565b60606102b2610384565b60006102bc6101a7565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102f2610384565b60006102bc610412565b610167610307610412565b610421565b6060600080856001600160a01b03168560405161032991906107f2565b600060405180830381855af49150503d8060008114610364576040519150601f19603f3d011682016040523d82523d6000602084013e610369565b606091505b509150915061037a86838387610445565b9695505050505050565b341561016757600080fd5b610398836104c6565b6000825111806103a55750805b156103b6576103b48383610169565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103e46101a7565b604080516001600160a01b03928316815291841660208301520160405180910390a161040f81610506565b50565b600061041c6105af565b905090565b3660008037600080366000845af43d6000803e808015610440573d6000f35b3d6000fd5b606083156104b45782516000036104ad576001600160a01b0385163b6104ad5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014e565b50816104be565b6104be83836105d7565b949350505050565b6104cf81610601565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b03811661056b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014e565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101cb565b8151156105e75781518083602001fd5b8060405162461bcd60e51b815260040161014e919061080e565b6001600160a01b0381163b61066e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014e565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61058e565b600080858511156106a557600080fd5b838611156106b257600080fd5b5050820193919092039150565b80356001600160a01b03811681146106d657600080fd5b919050565b6000602082840312156106ed57600080fd5b61018e826106bf565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561071f57600080fd5b610728836106bf565b9150602083013567ffffffffffffffff8082111561074557600080fd5b818501915085601f83011261075957600080fd5b81358181111561076b5761076b6106f6565b604051601f8201601f19908116603f01168101908382118183101715610793576107936106f6565b816040528281528860208487010111156107ac57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60005b838110156107e95781810151838201526020016107d1565b50506000910152565b600082516108048184602087016107ce565b9190910192915050565b602081526000825180602084015261082d8160408501602087016107ce565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000ab53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000001284214b9b9c85549ab3d2b972df0deef66ac2c9000000000000000000000000a2959d3f95eae5dc7d70144ce1b73b403b7eb6e0000000000000000000000000980a75ecd1309ea12fa2ed87a8744fbfc9b863d5000000000000000000000000b71b214cb885500844365e95cd9942c7276e7fd800000000000000000000000035552c16704d214347f29fa77f77da6d75d7c752000000000000000000000000f474cf03cceff28abc65c9cbae594f725c80e12d00000000000000000000000096c5d20b2a975c050e4220be276ace4892f4b41a00000000000000000000000047788386d0ed6c748e03a53160b4b30ed3748cc5000000000000000000000000bdfbc016c1bd481f5d8ca6f754f4b200a7ed66ce000000000000000000000000372e4887005ec21a5aff9ff62eda9e7713e3643700000000000000000000000055c968cf3430f3ba0534ef49ff4b3fbc9086c7ce000000000000000000000000136bd6343049c9690569db79dcd9208a57d342ad000000000000000000000000977ecef7de795cd248d77fd0d080ce3a35dec013000000000000000000000000b334ced91dff560bc9b5b3c30ae613bf335f181324d7bda8602b916d64417f0dbfe2e2e88ec9b1157bd9f596dfdb91ba26624e040000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000001e0000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000000308e82934ca974fdcd97f3309de967d3c9c43fa711a8d673af5d75465844bf8969c8d1948d903748ac7b8b1720fa64e50c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b973c2d38487e58fd6e145491b110080fb14ac915a0411fc78f19e09a399ddee0d20c63a75d8f930f1694544ad2dc01b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003089037a9ace3b590165ea1c0c5ac72bf600b7c88c1e435f41932c1132aae1bfa0bb68e46b96ccb12c3415e4d82af717d8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030a2750ec6dded3dcdc2f351782310b0eadc077db59abca0f0cd26776e2e7acb9f3bce40b1fa5221fd1561226c6263cc5f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b742ad4855bae330426b823e742da31f816cc83bc16d69a9134be0cfb4a1d17ec34f1b5b32d5c20440b8536b1e88f0f200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003096c9b86c3400e529bfe184056e257c07940bb664636f689e8d2027c834681f8f878b73445261034e946bb2d901b4b87800000000000000000000000000000000a164736f6c6343000811000a", }, { ContractAddr: common.HexToAddress(StakeCreditContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/cfc0bd1127186a917ddc38fd38d22903034d3f0b", - Code: "6080604052600436106101855760003560e01c80635e607d76116100d1578063a5d059ca1161008a578063c2cde2b211610064578063c2cde2b2146104af578063d241c1ea146104cf578063dd62ed3e14610516578063f399e22e1461053657600080fd5b8063a5d059ca1461044f578063a9059cbb1461046f578063aad3ec961461048f57600080fd5b80635e607d761461038f578063647df759146103a457806370a08231146103c457806391faf0b4146103fa57806395d89b411461041a578063a457c2d71461042f57600080fd5b8063313ce5671161013e5780634056852d116101185780634056852d1461031c57806345bc4d101461033c5780634d99dd161461035c5780635c19a95c1461037c57600080fd5b8063313ce567146102a857806339509351146102c45780633a5381b5146102e457600080fd5b806306fdde03146101d45780630913db47146101ff578063095ea7b31461022d57806315d1f8981461025d57806318160ddd1461027357806323b872dd1461028857600080fd5b366101cf5733612002146101b557604051630f22c43960e41b815261200260048201526024015b60405180910390fd5b34609860008282546101c791906119f0565b925050819055005b600080fd5b3480156101e057600080fd5b506101e9610549565b6040516101f69190611a03565b60405180910390f35b34801561020b57600080fd5b5061021f61021a366004611a69565b6105db565b6040519081526020016101f6565b34801561023957600080fd5b5061024d610248366004611a8d565b610603565b60405190151581526020016101f6565b34801561026957600080fd5b5061021f60985481565b34801561027f57600080fd5b5060675461021f565b34801561029457600080fd5b5061024d6102a3366004611ab9565b61061b565b3480156102b457600080fd5b50604051601281526020016101f6565b3480156102d057600080fd5b5061024d6102df366004611a8d565b61063f565b3480156102f057600080fd5b50609754610304906001600160a01b031681565b6040516001600160a01b0390911681526020016101f6565b34801561032857600080fd5b5061021f610337366004611a69565b610661565b34801561034857600080fd5b5061021f610357366004611afa565b610728565b34801561036857600080fd5b5061021f610377366004611a8d565b61081b565b61021f61038a366004611a69565b610a02565b6103a261039d366004611b13565b610a55565b005b3480156103b057600080fd5b5061021f6103bf366004611afa565b610b1d565b3480156103d057600080fd5b5061021f6103df366004611a69565b6001600160a01b031660009081526065602052604090205490565b34801561040657600080fd5b5061021f610415366004611afa565b610b5c565b34801561042657600080fd5b506101e9610b97565b34801561043b57600080fd5b5061024d61044a366004611a8d565b610ba6565b34801561045b57600080fd5b5061021f61046a366004611a8d565b610c21565b34801561047b57600080fd5b5061024d61048a366004611a8d565b610d22565b34801561049b57600080fd5b5061021f6104aa366004611a8d565b610d30565b3480156104bb57600080fd5b5061021f6104ca366004611a69565b610ff2565b3480156104db57600080fd5b506104ef6104ea366004611a8d565b611010565b604080518351815260208085015190820152928101519083015260608201526080016101f6565b34801561052257600080fd5b5061021f610531366004611b3d565b6110c0565b6103a2610544366004611b76565b6110eb565b60606068805461055890611bfb565b80601f016020809104026020016040519081016040528092919081815260200182805461058490611bfb565b80156105d15780601f106105a6576101008083540402835291602001916105d1565b820191906000526020600020905b8154815290600101906020018083116105b457829003601f168201915b5050505050905090565b6001600160a01b0381166000908152606560205260408120546105fd90610b5c565b92915050565b600033610611818585611295565b5060019392505050565b6000336106298582856112ae565b610634858585611322565b506001949350505050565b60003361061181858561065283836110c0565b61065c91906119f0565b611295565b6001600160a01b0381166000908152609a6020526040812054600f81810b600160801b909204900b0380820361069a5750600092915050565b6000805b82811015610720576001600160a01b0385166000908152609a602052604081206106c79061133b565b6000818152609960209081526040918290208251606081018452815481526001820154928101839052600290910154928101929092529192509061070b90856119f0565b935050508061071990611c2f565b905061069e565b509392505050565b6000336120021461075057604051630f22c43960e41b815261200260048201526024016101ac565b6097546001600160a01b03166000908152606560205260408120549061077584610b1d565b90508181116107845780610786565b815b6097549091506000906107a2906001600160a01b03168361138f565b6040519091506000906110029083908381818185875af1925050503d80600081146107e9576040519150601f19603f3d011682016040523d82523d6000602084013e6107ee565b606091505b5050905080610810576040516312171d8360e31b815260040160405180910390fd5b50925050505b919050565b6000336120021461084357604051630f22c43960e41b815261200260048201526024016101ac565b8160000361086457604051631f2a200560e01b815260040160405180910390fd5b6001600160a01b03831660009081526065602052604090205482111561089d57604051631e9acf1760e31b815260040160405180910390fd5b6108a7838361138f565b905060006120026001600160a01b031663fc0c5ff16040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061090f9190611c48565b61091990426119f0565b6040805160608101825285815260208101859052908101829052909150600085610942816113c4565b60405160609290921b6bffffffffffffffffffffffff19166020830152603482015260540160408051601f19818403018152918152815160209283012060008181526099845282812086518155868501516001820155868401516002909101556001600160a01b038a168152609a90935291209091506109f990828154600160801b90819004600f0b6000818152600180860160205260409091209390935583546001600160801b03908116939091011602179055565b50505092915050565b60003361200214610a2a57604051630f22c43960e41b815261200260048201526024016101ac565b34600003610a4b57604051631f2a200560e01b815260040160405180910390fd5b6105fd82346113ec565b3361200214610a7b57604051630f22c43960e41b815261200260048201526024016101ac565b346000612710610a9567ffffffffffffffff851684611c61565b610a9f9190611c78565b90506000610aad8284611c9a565b90508060986000828254610ac191906119f0565b9091555050609754610adc906001600160a01b0316836113ec565b5060408051828152602081018490527ffb0e1482d62102ab9594f69d4c6d693749e3e2bf1c21af272f5456b2d5a4f6b591015b60405180910390a150505050565b6000609854600003610b42576040516307b76ce760e51b815260040160405180910390fd5b609854606754610b529084611c61565b6105fd9190611c78565b6000610b6760675490565b600003610b8757604051632fe8dae960e01b815260040160405180910390fd5b606754609854610b529084611c61565b60606069805461055890611bfb565b60003381610bb482866110c0565b905083811015610c145760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016101ac565b6106348286868403611295565b60003361200214610c4957604051630f22c43960e41b815261200260048201526024016101ac565b81600003610c6a57604051631f2a200560e01b815260040160405180910390fd5b6001600160a01b038316600090815260656020526040902054821115610ca357604051631e9acf1760e31b815260040160405180910390fd5b610cad838361138f565b6040519091506000906120029083908381818185875af1925050503d8060008114610cf4576040519150601f19603f3d011682016040523d82523d6000602084013e610cf9565b606091505b5050905080610d1b576040516312171d8360e31b815260040160405180910390fd5b5092915050565b600033610611818585611322565b60003361200214610d5857604051630f22c43960e41b815261200260048201526024016101ac565b610d60611415565b6001600160a01b0383166000908152609a6020526040902054600f81810b600160801b909204900b03600003610da95760405163ad41893760e01b815260040160405180910390fd5b811580610ddd57506001600160a01b0383166000908152609a6020526040902054600f81810b600160801b909204900b0382115b610de75781610e11565b6001600160a01b0383166000908152609a6020526040902054600f81810b600160801b909204900b035b915060005b8215610ee6576001600160a01b0384166000908152609a60205260408120610e3d9061133b565b60008181526099602090815260409182902082516060810184528154815260018201549281019290925260020154918101829052919250421015610e82575050610ee6565b6001600160a01b0386166000908152609a60205260409020610ea39061146e565b50600082815260996020908152604082208281556001810183905560020191909155810151610ed290846119f0565b9250610edd85611cad565b94505050610e16565b80600003610f07576040516303cd8e0960e21b815260040160405180910390fd5b60006120026001600160a01b031663e8f67c3b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f6d9190611c48565b90506000856001600160a01b03168284604051600060405180830381858888f193505050503d8060008114610fbe576040519150601f19603f3d011682016040523d82523d6000602084013e610fc3565b606091505b5050905080610fe5576040516312171d8360e31b815260040160405180910390fd5b50506001805590506105fd565b6001600160a01b0381166000908152609b60205260408120546105fd565b61103460405180606001604052806000815260200160008152602001600081525090565b6001600160a01b0383166000908152609a60205260408120819061105890856114ed565b60008181526099602090815260408083206001600160a01b038a168452609a9092529091205491925090600f81810b600160801b909204900b036040805160608101825283548152600184015460208201526002909301549083015290969095509350505050565b6001600160a01b03918216600090815260666020908152604080832093909416825291909152205490565b600054610100900460ff161580801561110b5750600054600160ff909116105b806111255750303b158015611125575060005460ff166001145b6111885760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016101ac565b6000805460ff1916600117905580156111ab576000805461ff0019166101001790555b33612002146111d157604051630f22c43960e41b815261200260048201526024016101ac565b600083836040516020016111e6929190611cc4565b60405160208183030381529060405290506000848460405160200161120c929190611cf4565b6040516020818303038152906040529050611227828261155e565b609780546001600160a01b0319166001600160a01b03881617905561124b346115a3565b5050801561128f576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602001610b0f565b50505050565b604051632028747160e01b815260040160405180910390fd5b60006112ba84846110c0565b9050600019811461128f57818110156113155760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016101ac565b61128f8484848403611295565b604051638cd22d1960e01b815260040160405180910390fd5b60006113568254600f81810b600160801b909204900b131590565b1561137457604051631ed9509560e11b815260040160405180910390fd5b508054600f0b60009081526001909101602052604090205490565b600061139a82610b5c565b90506113a68383611713565b80609860008282546113b89190611c9a565b90915550909392505050565b6001600160a01b0381166000908152609b602052604090208054600181018255905b50919050565b60006113f782610b1d565b90506114038382611847565b81609860008282546113b891906119f0565b6002600154036114675760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016101ac565b6002600155565b60006114898254600f81810b600160801b909204900b131590565b156114a757604051631ed9509560e11b815260040160405180910390fd5b508054600f0b6000818152600180840160205260408220805492905583546fffffffffffffffffffffffffffffffff191692016001600160801b03169190911790915590565b6000806115106114fc84611908565b855461150b9190600f0b611d12565b611976565b8454909150600160801b9004600f90810b9082900b1261154357604051632d0483c560e21b815260040160405180910390fd5b600f0b60009081526001939093016020525050604090205490565b600054610100900460ff166115855760405162461bcd60e51b81526004016101ac90611d3a565b60686115918382611de9565b50606961159e8282611de9565b505050565b600054610100900460ff166115ca5760405162461bcd60e51b81526004016101ac90611d3a565b60006120026001600160a01b031663ae0f336d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561160c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116309190611c48565b9050808211158061164a57506097546001600160a01b0316155b80611656575060675415155b1561167457604051632163e6b960e21b815260040160405180910390fd5b60006120026001600160a01b0316634e6fd6c46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116da9190611ea9565b90506116e68183611847565b60006116f28385611c9a565b60975490915061170b906001600160a01b031682611847565b505050609855565b6001600160a01b0382166117735760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016101ac565b6001600160a01b038216600090815260656020526040902054818110156117e75760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016101ac565b6001600160a01b03831660008181526065602090815260408083208686039055606780548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b6001600160a01b03821661189d5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016101ac565b80606760008282546118af91906119f0565b90915550506001600160a01b0382166000818152606560209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b60006001600160ff1b038211156119725760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b60648201526084016101ac565b5090565b80600f81900b81146108165760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20316044820152663238206269747360c81b60648201526084016101ac565b634e487b7160e01b600052601160045260246000fd5b808201808211156105fd576105fd6119da565b600060208083528351808285015260005b81811015611a3057858101830151858201604001528201611a14565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611a6657600080fd5b50565b600060208284031215611a7b57600080fd5b8135611a8681611a51565b9392505050565b60008060408385031215611aa057600080fd5b8235611aab81611a51565b946020939093013593505050565b600080600060608486031215611ace57600080fd5b8335611ad981611a51565b92506020840135611ae981611a51565b929592945050506040919091013590565b600060208284031215611b0c57600080fd5b5035919050565b600060208284031215611b2557600080fd5b813567ffffffffffffffff81168114611a8657600080fd5b60008060408385031215611b5057600080fd5b8235611b5b81611a51565b91506020830135611b6b81611a51565b809150509250929050565b600080600060408486031215611b8b57600080fd5b8335611b9681611a51565b9250602084013567ffffffffffffffff80821115611bb357600080fd5b818601915086601f830112611bc757600080fd5b813581811115611bd657600080fd5b876020828501011115611be857600080fd5b6020830194508093505050509250925092565b600181811c90821680611c0f57607f821691505b6020821081036113e657634e487b7160e01b600052602260045260246000fd5b600060018201611c4157611c416119da565b5060010190565b600060208284031215611c5a57600080fd5b5051919050565b80820281158282048414176105fd576105fd6119da565b600082611c9557634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156105fd576105fd6119da565b600081611cbc57611cbc6119da565b506000190190565b65029ba30b5b2960d51b815281836006830137660810dc99591a5d60ca1b91016006810191909152600d01919050565b611cdd60f21b81528183600283013760009101600201908152919050565b8082018281126000831280158216821582161715611d3257611d326119da565b505092915050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b634e487b7160e01b600052604160045260246000fd5b601f82111561159e57600081815260208120601f850160051c81016020861015611dc25750805b601f850160051c820191505b81811015611de157828155600101611dce565b505050505050565b815167ffffffffffffffff811115611e0357611e03611d85565b611e1781611e118454611bfb565b84611d9b565b602080601f831160018114611e4c5760008415611e345750858301515b600019600386901b1c1916600185901b178555611de1565b600085815260208120601f198616915b82811015611e7b57888601518255948401946001909101908401611e5c565b5085821015611e995787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060208284031215611ebb57600080fd5b8151611a8681611a5156fea164736f6c6343000811000a", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/9d09d0a3d6332460a810188261ec8195e05aa218", + Code: "6080604052600436106101e75760003560e01c8063647df75911610102578063a9664feb11610095578063d241c1ea11610064578063d241c1ea1461068d578063dd62ed3e146106cf578063f1fad104146106ef578063f399e22e1461070457600080fd5b8063a9664feb14610600578063aa1966cd14610620578063aad3ec961461064d578063c2cde2b21461066d57600080fd5b806395d89b41116100d157806395d89b411461058b578063a457c2d7146105a0578063a5d059ca146105c0578063a9059cbb146105e057600080fd5b8063647df759146104e85780636bbf22491461050857806370a082311461053557806391faf0b41461056b57600080fd5b8063313ce5671161017a5780634bf6c882116101495780634bf6c8821461048b5780634d99dd16146104a05780635c19a95c146104c05780635e607d76146104d357600080fd5b8063313ce567146103f157806339509351146104135780633a5381b51461043357806345bc4d101461046b57600080fd5b806315d1f898116101b657806315d1f8981461038657806318160ddd1461039c57806323b872dd146103b15780632f2d448a146103d157600080fd5b8063038c0023146102e157806306fdde03146103145780630913db4714610336578063095ea7b31461035657600080fd5b366102dc57336120021461021757604051630f22c43960e41b815261200260048201526024015b60405180910390fd5b60006120026001600160a01b0316631fa8882b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610259573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061027d9190611de4565b6102879042611e13565b6098546000828152609d6020908152604080832093909355609c9052908120805492935034929091906102bb908490611e35565b9250508190555034609860008282546102d49190611e35565b925050819055005b600080fd5b3480156102ed57600080fd5b506103016102fc366004611e60565b610717565b6040519081526020015b60405180910390f35b34801561032057600080fd5b50610329610747565b60405161030b9190611e84565b34801561034257600080fd5b50610301610351366004611e60565b6107d9565b34801561036257600080fd5b50610376610371366004611ed2565b6107fb565b604051901515815260200161030b565b34801561039257600080fd5b5061030160985481565b3480156103a857600080fd5b50606754610301565b3480156103bd57600080fd5b506103766103cc366004611efe565b610813565b3480156103dd57600080fd5b506103016103ec366004611e60565b610837565b3480156103fd57600080fd5b5060125b60405160ff909116815260200161030b565b34801561041f57600080fd5b5061037661042e366004611ed2565b6108fc565b34801561043f57600080fd5b50609754610453906001600160a01b031681565b6040516001600160a01b03909116815260200161030b565b34801561047757600080fd5b50610301610486366004611f3f565b61091e565b34801561049757600080fd5b50610401600881565b3480156104ac57600080fd5b506103016104bb366004611ed2565b610a11565b6103016104ce366004611e60565b610c28565b6104e66104e1366004611f58565b610c9e565b005b3480156104f457600080fd5b50610301610503366004611f3f565b610e11565b34801561051457600080fd5b50610301610523366004611f3f565b609d6020526000908152604090205481565b34801561054157600080fd5b50610301610550366004611e60565b6001600160a01b031660009081526065602052604090205490565b34801561057757600080fd5b50610301610586366004611f3f565b610e50565b34801561059757600080fd5b50610329610e8b565b3480156105ac57600080fd5b506103766105bb366004611ed2565b610e9a565b3480156105cc57600080fd5b506103016105db366004611ed2565b610f15565b3480156105ec57600080fd5b506103766105fb366004611ed2565b611016565b34801561060c57600080fd5b5061030161061b366004611ed2565b611024565b34801561062c57600080fd5b5061030161063b366004611f3f565b609c6020526000908152604090205481565b34801561065957600080fd5b50610301610668366004611ed2565b61114d565b34801561067957600080fd5b50610301610688366004611e60565b6113f0565b34801561069957600080fd5b506106ad6106a8366004611ed2565b61140e565b604080518251815260208084015190820152918101519082015260600161030b565b3480156106db57600080fd5b506103016106ea366004611f82565b611491565b3480156106fb57600080fd5b50610401601181565b6104e6610712366004611fbb565b6114bc565b6001600160a01b0381166000908152609a6020526040812054600f81810b600160801b909204900b035b92915050565b60606068805461075690612040565b80601f016020809104026020016040519081016040528092919081815260200182805461078290612040565b80156107cf5780601f106107a4576101008083540402835291602001916107cf565b820191906000526020600020905b8154815290600101906020018083116107b257829003601f168201915b5050505050905090565b6001600160a01b03811660009081526065602052604081205461074190610e50565b600033610809818585611672565b5060019392505050565b60003361082185828561168b565b61082c8585856116ff565b506001949350505050565b6001600160a01b0381166000908152609a6020526040812054600f81810b600160801b909204900b0381805b828110156108f4576001600160a01b0385166000908152609a6020526040812061088d9083611718565b6000818152609960209081526040918290208251606081018452815481526001820154928101929092526002015491810182905291925042106108da576108d384612074565b93506108e1565b50506108f4565b5050806108ed90612074565b9050610863565b509392505050565b60003361080981858561090f8383611491565b6109199190611e35565b611672565b6000336120021461094657604051630f22c43960e41b8152612002600482015260240161020e565b6097546001600160a01b03166000908152606560205260408120549061096b84610e11565b905081811161097a578061097c565b815b609754909150600090610998906001600160a01b031683611789565b6040519091506000906110029083908381818185875af1925050503d80600081146109df576040519150601f19603f3d011682016040523d82523d6000602084013e6109e4565b606091505b5050905080610a06576040516312171d8360e31b815260040160405180910390fd5b50925050505b919050565b60003361200214610a3957604051630f22c43960e41b8152612002600482015260240161020e565b81600003610a5a57604051639811e0c760e01b815260040160405180910390fd5b6001600160a01b038316600090815260656020526040902054821115610a9357604051631e9acf1760e31b815260040160405180910390fd5b610a9d8383611789565b905060006120026001600160a01b031663fc0c5ff16040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ae1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b059190611de4565b610b0f9042611e35565b6040805160608101825285815260208101859052908101829052909150600085610b38816117be565b60405160609290921b6bffffffffffffffffffffffff19166020830152603482015260540160408051601f1981840301815291815281516020928301206000818152609990935291205490915015610ba35760405163b19e911560e01b815260040160405180910390fd5b600081815260996020908152604080832085518155828601516001820155818601516002909101556001600160a01b0389168352609a9091529020610c1f90828154600160801b90819004600f0b6000818152600180860160205260409091209390935583546001600160801b03908116939091011602179055565b50505092915050565b60003361200214610c5057604051630f22c43960e41b8152612002600482015260240161020e565b34600003610c7157604051631f2a200560e01b815260040160405180910390fd5b610c7b82346117e6565b905080600003610a0c57604051639811e0c760e01b815260040160405180910390fd5b3361200214610cc457604051630f22c43960e41b8152612002600482015260240161020e565b346000612710610cde67ffffffffffffffff85168461208d565b610ce89190611e13565b90506000610cf682846120a4565b905060006120026001600160a01b0316631fa8882b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d5e9190611de4565b610d689042611e13565b6098546000828152609d6020908152604080832093909355609c905290812080549293508492909190610d9c908490611e35565b925050819055508160986000828254610db59190611e35565b9091555050609754610dd0906001600160a01b0316846117e6565b5060408051838152602081018590527ffb0e1482d62102ab9594f69d4c6d693749e3e2bf1c21af272f5456b2d5a4f6b5910160405180910390a15050505050565b6000609854600003610e36576040516307b76ce760e51b815260040160405180910390fd5b609854606754610e46908461208d565b6107419190611e13565b6000610e5b60675490565b600003610e7b57604051632fe8dae960e01b815260040160405180910390fd5b606754609854610e46908461208d565b60606069805461075690612040565b60003381610ea88286611491565b905083811015610f085760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161020e565b61082c8286868403611672565b60003361200214610f3d57604051630f22c43960e41b8152612002600482015260240161020e565b81600003610f5e57604051639811e0c760e01b815260040160405180910390fd5b6001600160a01b038316600090815260656020526040902054821115610f9757604051631e9acf1760e31b815260040160405180910390fd5b610fa18383611789565b6040519091506000906120029083908381818185875af1925050503d8060008114610fe8576040519150601f19603f3d011682016040523d82523d6000602084013e610fed565b606091505b505090508061100f576040516312171d8360e31b815260040160405180910390fd5b5092915050565b6000336108098185856116ff565b6001600160a01b0382166000908152609a6020526040812054600f81810b600160801b909204900b0360000361105c57506000610741565b81158061109057506001600160a01b0383166000908152609a6020526040902054600f81810b600160801b909204900b0382115b61109a57816110c4565b6001600160a01b0383166000908152609a6020526040902054600f81810b600160801b909204900b035b91506000805b838110156108f4576001600160a01b0385166000908152609a602052604081206110f49083611718565b600081815260996020908152604091829020825160608101845281548152600182015492810183905260029091015492810192909252919250906111389085611e35565b935050508061114690612074565b90506110ca565b6000336120021461117557604051630f22c43960e41b8152612002600482015260240161020e565b61117d61180f565b6001600160a01b0383166000908152609a6020526040902054600f81810b600160801b909204900b036000036111c65760405163ad41893760e01b815260040160405180910390fd5b8115806111fa57506001600160a01b0383166000908152609a6020526040902054600f81810b600160801b909204900b0382115b611204578161122e565b6001600160a01b0383166000908152609a6020526040902054600f81810b600160801b909204900b035b915060005b82156112e4576001600160a01b0384166000908152609a6020526040812061125a90611868565b6000818152609960209081526040918290208251606081018452815481526001820154928101929092526002015491810182905291925042101561129f5750506112e4565b6001600160a01b0386166000908152609a602052604090206112c0906118bc565b5060208101516112d09084611e35565b92506112db856120b7565b94505050611233565b80600003611305576040516303cd8e0960e21b815260040160405180910390fd5b60006120026001600160a01b031663e8f67c3b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611347573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061136b9190611de4565b90506000856001600160a01b03168284604051600060405180830381858888f193505050503d80600081146113bc576040519150601f19603f3d011682016040523d82523d6000602084013e6113c1565b606091505b50509050806113e3576040516312171d8360e31b815260040160405180910390fd5b5050600180559050610741565b6001600160a01b0381166000908152609b6020526040812054610741565b61143260405180606001604052806000815260200160008152602001600081525090565b6001600160a01b0383166000908152609a602052604081206114549084611718565b6000908152609960209081526040918290208251606081018452815481526001820154928101929092526002015491810191909152949350505050565b6001600160a01b03918216600090815260666020908152604080832093909416825291909152205490565b600054610100900460ff16158080156114dc5750600054600160ff909116105b806114f65750303b1580156114f6575060005460ff166001145b6115595760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161020e565b6000805460ff19166001179055801561157c576000805461ff0019166101001790555b33612002146115a257604051630f22c43960e41b8152612002600482015260240161020e565b600083836040516020016115b79291906120ce565b6040516020818303038152906040529050600084846040516020016115dd9291906120fe565b60405160208183030381529060405290506115f88282611941565b611600611986565b609780546001600160a01b0319166001600160a01b038816179055611624346119ad565b5050801561166c576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b604051632028747160e01b815260040160405180910390fd5b60006116978484611491565b9050600019811461166c57818110156116f25760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161020e565b61166c8484848403611672565b604051638cd22d1960e01b815260040160405180910390fd5b60008061173b61172784611b1d565b85546117369190600f0b61211c565b611b8b565b8454909150600160801b9004600f90810b9082900b1261176e57604051632d0483c560e21b815260040160405180910390fd5b600f0b60009081526001939093016020525050604090205490565b600061179482610e50565b90506117a08383611bef565b80609860008282546117b291906120a4565b90915550909392505050565b6001600160a01b0381166000908152609b602052604090208054600181018255905b50919050565b60006117f182610e11565b90506117fd8382611d23565b81609860008282546117b29190611e35565b6002600154036118615760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161020e565b6002600155565b60006118838254600f81810b600160801b909204900b131590565b156118a157604051631ed9509560e11b815260040160405180910390fd5b508054600f0b60009081526001909101602052604090205490565b60006118d78254600f81810b600160801b909204900b131590565b156118f557604051631ed9509560e11b815260040160405180910390fd5b508054600f0b6000818152600180840160205260408220805492905583546fffffffffffffffffffffffffffffffff191692016001600160801b03169190911790915590565b60018055565b600054610100900460ff166119685760405162461bcd60e51b815260040161020e90612144565b606861197483826121f3565b50606961198182826121f3565b505050565b600054610100900460ff1661193b5760405162461bcd60e51b815260040161020e90612144565b600054610100900460ff166119d45760405162461bcd60e51b815260040161020e90612144565b60006120026001600160a01b0316638a4d3fa86040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a3a9190611de4565b90508082111580611a5457506097546001600160a01b0316155b80611a60575060675415155b15611a7e57604051632163e6b960e21b815260040160405180910390fd5b60006120026001600160a01b0316634e6fd6c46040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ac0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ae491906122b3565b9050611af08183611d23565b6000611afc83856120a4565b609754909150611b15906001600160a01b031682611d23565b505050609855565b60006001600160ff1b03821115611b875760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b606482015260840161020e565b5090565b80600f81900b8114610a0c5760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20316044820152663238206269747360c81b606482015260840161020e565b6001600160a01b038216611c4f5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161020e565b6001600160a01b03821660009081526065602052604090205481811015611cc35760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161020e565b6001600160a01b03831660008181526065602090815260408083208686039055606780548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b6001600160a01b038216611d795760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161020e565b8060676000828254611d8b9190611e35565b90915550506001600160a01b0382166000818152606560209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b600060208284031215611df657600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b600082611e3057634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111561074157610741611dfd565b6001600160a01b0381168114611e5d57600080fd5b50565b600060208284031215611e7257600080fd5b8135611e7d81611e48565b9392505050565b600060208083528351808285015260005b81811015611eb157858101830151858201604001528201611e95565b506000604082860101526040601f19601f8301168501019250505092915050565b60008060408385031215611ee557600080fd5b8235611ef081611e48565b946020939093013593505050565b600080600060608486031215611f1357600080fd5b8335611f1e81611e48565b92506020840135611f2e81611e48565b929592945050506040919091013590565b600060208284031215611f5157600080fd5b5035919050565b600060208284031215611f6a57600080fd5b813567ffffffffffffffff81168114611e7d57600080fd5b60008060408385031215611f9557600080fd5b8235611fa081611e48565b91506020830135611fb081611e48565b809150509250929050565b600080600060408486031215611fd057600080fd5b8335611fdb81611e48565b9250602084013567ffffffffffffffff80821115611ff857600080fd5b818601915086601f83011261200c57600080fd5b81358181111561201b57600080fd5b87602082850101111561202d57600080fd5b6020830194508093505050509250925092565b600181811c9082168061205457607f821691505b6020821081036117e057634e487b7160e01b600052602260045260246000fd5b60006001820161208657612086611dfd565b5060010190565b808202811582820484141761074157610741611dfd565b8181038181111561074157610741611dfd565b6000816120c6576120c6611dfd565b506000190190565b65029ba30b5b2960d51b815281836006830137660810dc99591a5d60ca1b91016006810191909152600d01919050565b611cdd60f21b81528183600283013760009101600201908152919050565b808201828112600083128015821682158216171561213c5761213c611dfd565b505092915050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b634e487b7160e01b600052604160045260246000fd5b601f82111561198157600081815260208120601f850160051c810160208610156121cc5750805b601f850160051c820191505b818110156121eb578281556001016121d8565b505050505050565b815167ffffffffffffffff81111561220d5761220d61218f565b6122218161221b8454612040565b846121a5565b602080601f831160018114612256576000841561223e5750858301515b600019600386901b1c1916600185901b1785556121eb565b600085815260208120601f198616915b8281101561228557888601518255948401946001909101908401612266565b50858210156122a35787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000602082840312156122c557600080fd5b8151611e7d81611e4856fea164736f6c6343000811000a", }, { ContractAddr: common.HexToAddress(GovernorContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/cfc0bd1127186a917ddc38fd38d22903034d3f0b", - Code: "6080604052600436106103bc5760003560e01c80637b3c71d3116101f2578063c28bc2fa1161010d578063e23a9a52116100a0578063f23a6e611161006f578063f23a6e6114610d73578063f8ce560a14610d9f578063fc0c546a14610dbf578063fe0d94c114610de057600080fd5b8063e23a9a5214610c48578063ea0217cf14610d13578063eb9019d414610d33578063ece40cc114610d5357600080fd5b8063da95691a116100dc578063da95691a14610b8e578063dd4e2ba514610bae578063ddf0b00914610bf4578063deaaa7cc14610c1457600080fd5b8063c28bc2fa14610b1c578063c59057e414610b2f578063d07f91e914610b4f578063d33219b414610b6f57600080fd5b8063a7713a7011610185578063b58131b011610154578063b58131b014610aa0578063bc197c8114610ab5578063c01f9e3714610ae1578063c170ec0b14610b0157600080fd5b8063a7713a7014610a2b578063a890c91014610a40578063ab58fb8e14610a60578063ac43175114610a8057600080fd5b806384b0196e116101c157806384b0196e146109a357806391ddadf4146109cb57806397c3d334146109f75780639a802a6d14610a0b57600080fd5b80637b3c71d3146109395780637d5e81e2146109595780638129fc1c146109795780638456cb591461098e57600080fd5b806332b8113e116102e2578063533ddd14116102755780635f398a14116102445780635f398a14146108b257806360c4247f146108d257806363d42b38146108f257806370b0f6601461091957600080fd5b8063533ddd141461081757806354fd4d501461084857806356781388146108725780635c975abb1461089257600080fd5b806340e58ee5116102b157806340e58ee5146107775780634385963214610797578063452115d6146107e25780634bf5d7e91461080257600080fd5b806332b8113e146106eb5780633932abb1146107145780633bccf4fd1461072a5780633e4f49e61461074a57600080fd5b8063143489d01161035a5780632656227d116103295780632656227d1461063d5780632d63f693146106505780632fe3e26114610687578063328dd982146106bb57600080fd5b8063143489d01461056e578063150b7a02146105c4578063160cbed71461060857806324bc1a641461062857600080fd5b8063034201811161039657806303420181146104f7578063046f7da21461051757806306f3f9e61461052c57806306fdde031461054c57600080fd5b8063013cf08b1461042c57806301ffc9a7146104a757806302a251a3146104d757600080fd5b3661042757306103ca610df3565b6001600160a01b0316146104255760405162461bcd60e51b815260206004820152601f60248201527f476f7665726e6f723a206d7573742073656e6420746f206578656375746f720060448201526064015b60405180910390fd5b005b600080fd5b34801561043857600080fd5b5061044c61044736600461585e565b610e0d565b604080519a8b526001600160a01b0390991660208b0152978901969096526060880194909452608087019290925260a086015260c085015260e084015215156101008301521515610120820152610140015b60405180910390f35b3480156104b357600080fd5b506104c76104c2366004615877565b610ec8565b604051901515815260200161049e565b3480156104e357600080fd5b50610162545b60405190815260200161049e565b34801561050357600080fd5b506104e96105123660046159bd565b610ed9565b34801561052357600080fd5b50610425610fd1565b34801561053857600080fd5b5061042561054736600461585e565b61103a565b34801561055857600080fd5b506105616110c5565b60405161049e9190615ab3565b34801561057a57600080fd5b506105ac61058936600461585e565b60009081526101306020526040902054600160401b90046001600160a01b031690565b6040516001600160a01b03909116815260200161049e565b3480156105d057600080fd5b506105ef6105df366004615adb565b630a85bd0160e11b949350505050565b6040516001600160e01b0319909116815260200161049e565b34801561061457600080fd5b506104e9610623366004615cb2565b611158565b34801561063457600080fd5b506104e961135d565b6104e961064b366004615cb2565b611383565b34801561065c57600080fd5b506104e961066b36600461585e565b600090815261013060205260409020546001600160401b031690565b34801561069357600080fd5b506104e97fb3b3f3b703cd84ce352197dcff232b1b5d3cfb2025ce47cf04742d0651f1af8881565b3480156106c757600080fd5b506106db6106d636600461585e565b611476565b60405161049e9493929190615e0a565b3480156106f757600080fd5b5061025c546040516001600160401b03909116815260200161049e565b34801561072057600080fd5b50610161546104e9565b34801561073657600080fd5b506104e9610745366004615e57565b611708565b34801561075657600080fd5b5061076a61076536600461585e565b61177e565b60405161049e9190615ebb565b34801561078357600080fd5b5061042561079236600461585e565b611789565b3480156107a357600080fd5b506104c76107b2366004615ee3565b6000828152610193602090815260408083206001600160a01b038516845260080190915290205460ff1692915050565b3480156107ee57600080fd5b506104e96107fd366004615cb2565b6117b4565b34801561080e57600080fd5b506105616117cb565b34801561082357600080fd5b506104c7610832366004615f13565b61028e6020526000908152604090205460ff1681565b34801561085457600080fd5b506040805180820190915260018152603160f81b6020820152610561565b34801561087e57600080fd5b506104e961088d366004615f30565b611878565b34801561089e57600080fd5b5061028f546104c790610100900460ff1681565b3480156108be57600080fd5b506104e96108cd366004615f5c565b6118a1565b3480156108de57600080fd5b506104e96108ed36600461585e565b6118eb565b3480156108fe57600080fd5b5061028f546105ac906201000090046001600160a01b031681565b34801561092557600080fd5b5061042561093436600461585e565b6119a0565b34801561094557600080fd5b506104e9610954366004615fdf565b611a28565b34801561096557600080fd5b506104e9610974366004616038565b611a7a565b34801561098557600080fd5b50610425611b0a565b34801561099a57600080fd5b50610425611f60565b3480156109af57600080fd5b506109b8611fcd565b60405161049e97969594939291906160d8565b3480156109d757600080fd5b506109e061206b565b60405165ffffffffffff909116815260200161049e565b348015610a0357600080fd5b5060646104e9565b348015610a1757600080fd5b506104e9610a2636600461613a565b6120df565b348015610a3757600080fd5b506104e96120f6565b348015610a4c57600080fd5b50610425610a5b366004615f13565b612123565b348015610a6c57600080fd5b506104e9610a7b36600461585e565b6121ab565b348015610a8c57600080fd5b50610425610a9b366004616192565b612247565b348015610aac57600080fd5b506104e9612826565b348015610ac157600080fd5b506105ef610ad03660046161f1565b63bc197c8160e01b95945050505050565b348015610aed57600080fd5b506104e9610afc36600461585e565b612832565b348015610b0d57600080fd5b5061028f546104c79060ff1681565b610425610b2a366004616284565b61283d565b348015610b3b57600080fd5b506104e9610b4a366004615cb2565b61294d565b348015610b5b57600080fd5b50610425610b6a3660046162c7565b612987565b348015610b7b57600080fd5b506101f8546001600160a01b03166105ac565b348015610b9a57600080fd5b506104e9610ba93660046162f0565b612a0f565b348015610bba57600080fd5b5060408051808201909152601a81527f737570706f72743d627261766f2671756f72756d3d627261766f0000000000006020820152610561565b348015610c0057600080fd5b50610425610c0f36600461585e565b612a96565b348015610c2057600080fd5b506104e97f150214d74d59b7d1e90c73fc22ef3d991dd0a76b046543d4d80ab92d2a50328f81565b348015610c5457600080fd5b50610ce3610c63366004615ee3565b6040805160608101825260008082526020820181905291810191909152506000918252610193602090815260408084206001600160a01b0393909316845260089092018152918190208151606081018352905460ff8082161515835261010082041693820193909352620100009092046001600160601b03169082015290565b6040805182511515815260208084015160ff1690820152918101516001600160601b03169082015260600161049e565b348015610d1f57600080fd5b50610425610d2e36600461585e565b612ab9565b348015610d3f57600080fd5b506104e9610d4e366004616391565b612b41565b348015610d5f57600080fd5b50610425610d6e36600461585e565b612b62565b348015610d7f57600080fd5b506105ef610d8e3660046163bd565b63f23a6e6160e01b95945050505050565b348015610dab57600080fd5b506104e9610dba36600461585e565b612bea565b348015610dcb57600080fd5b506101c5546105ac906001600160a01b031681565b610425610dee36600461585e565b612c79565b6000610e086101f8546001600160a01b031690565b905090565b8060008080808080808080610e218a6121ab565b60008c815261013060205260409020549098506001600160401b03169650610e488b612832565b60008c81526101936020526040812080546005820154600683015460078401546001600160a01b039093169e50949a509850929650919450610e898d61177e565b90506002816007811115610e9f57610e9f615ea5565b1493506007816007811115610eb657610eb6615ea5565b14925050509193959799509193959799565b6000610ed382612c9c565b92915050565b600080610f7d610f757fb3b3f3b703cd84ce352197dcff232b1b5d3cfb2025ce47cf04742d0651f1af888c8c8c8c604051610f15929190616425565b60405180910390208b80519060200120604051602001610f5a959493929190948552602085019390935260ff9190911660408401526060830152608082015260a00190565b60405160208183030381529060405280519060200120612cc1565b868686612cee565b9050610fc38a828b8b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508d9250612d0c915050565b9a9950505050505050505050565b61028f546201000090046001600160a01b0316331461100357604051631431806f60e11b815260040160405180910390fd5b61028f805461ff00191690556040517f62451d457bc659158be6e6247f56ec1df424a5c7597f71c20c2bc44e0965c8f990600090a1565b611042610df3565b6001600160a01b0316336001600160a01b0316146110725760405162461bcd60e51b815260040161041c90616435565b3061107b610df3565b6001600160a01b0316146110b9576000803660405161109b929190616425565b604051809103902090505b806110b2610131612d1b565b036110a657505b6110c281612d9a565b50565b606061012f80546110d59061646c565b80601f01602080910402602001604051908101604052809291908181526020018280546111019061646c565b801561114e5780601f106111235761010080835404028352916020019161114e565b820191906000526020600020905b81548152906001019060200180831161113157829003601f168201915b5050505050905090565b6000806111678686868661294d565b905060046111748261177e565b600781111561118557611185615ea5565b146111a25760405162461bcd60e51b815260040161041c906164a6565b6101f8546040805163793d064960e11b815290516000926001600160a01b03169163f27a0c929160048083019260209291908290030181865afa1580156111ed573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061121191906164e7565b6101f85460405163b1c5f42760e01b81529192506001600160a01b03169063b1c5f4279061124c908a908a908a906000908b90600401616500565b602060405180830381865afa158015611269573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061128d91906164e7565b60008381526101f96020526040808220929092556101f85491516308f2a0bb60e41b81526001600160a01b0390921691638f2a0bb0916112da918b918b918b91908b90899060040161654e565b600060405180830381600087803b1580156112f457600080fd5b505af1158015611308573d6000803e3d6000fd5b505050507f9a2e42fd6722813d69113e7d0079d3d940171428df7373df9c7f7617cfda289282824261133a91906165bc565b604080519283526020830191909152015b60405180910390a15095945050505050565b6000610e08600161136c61206b565b61137691906165cf565b65ffffffffffff16612bea565b6000806113928686868661294d565b9050600061139f8261177e565b905060048160078111156113b5576113b5615ea5565b14806113d2575060058160078111156113d0576113d0615ea5565b145b6113ee5760405162461bcd60e51b815260040161041c906164a6565b6000828152610130602052604090819020600201805460ff19166001179055517f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f9061143d9084815260200190565b60405180910390a16114528288888888612f0b565b61145f8288888888612fac565b61146c828888888861305d565b5095945050505050565b60608060608060006101936000878152602001908152602001600020905080600101816002018260030183600401838054806020026020016040519081016040528092919081815260200182805480156114f957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116114db575b505050505093508280548060200260200160405190810160405280929190818152602001828054801561154b57602002820191906000526020600020905b815481526020019060010190808311611537575b5050505050925081805480602002602001604051908101604052809291908181526020016000905b8282101561161f5783829060005260206000200180546115929061646c565b80601f01602080910402602001604051908101604052809291908181526020018280546115be9061646c565b801561160b5780601f106115e05761010080835404028352916020019161160b565b820191906000526020600020905b8154815290600101906020018083116115ee57829003601f168201915b505050505081526020019060010190611573565b50505050915080805480602002602001604051908101604052809291908181526020016000905b828210156116f25783829060005260206000200180546116659061646c565b80601f01602080910402602001604051908101604052809291908181526020018280546116919061646c565b80156116de5780601f106116b3576101008083540402835291602001916116de565b820191906000526020600020905b8154815290600101906020018083116116c157829003601f168201915b505050505081526020019060010190611646565b5050505090509450945094509450509193509193565b604080517f150214d74d59b7d1e90c73fc22ef3d991dd0a76b046543d4d80ab92d2a50328f602082015290810186905260ff85166060820152600090819061175690610f7590608001610f5a565b905061177387828860405180602001604052806000815250613098565b979650505050505050565b6000610ed3826130bb565b60008060008061179885613208565b93509350935093506117ac848484846117b4565b505050505050565b60006117c285858585613499565b95945050505050565b6101c55460408051634bf5d7e960e01b815290516060926001600160a01b031691634bf5d7e99160048083019260009291908290030181865afa92505050801561183757506040513d6000823e601f3d908101601f1916820160405261183491908101906165f5565b60015b611873575060408051808201909152601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c74000000602082015290565b919050565b60008033905061189984828560405180602001604052806000815250613098565b949350505050565b60008033905061177387828888888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a9250612d0c915050565b61022b5460009080820361190457505061022a54919050565b600061022b611914600184616662565b8154811061192457611924616675565b60009182526020918290206040805180820190915291015463ffffffff8116808352600160201b9091046001600160e01b0316928201929092529150841061197a57602001516001600160e01b03169392505050565b61198f61198685613564565b61022b906135cd565b6001600160e01b0316949350505050565b6119a8610df3565b6001600160a01b0316336001600160a01b0316146119d85760405162461bcd60e51b815260040161041c90616435565b306119e1610df3565b6001600160a01b031614611a1f5760008036604051611a01929190616425565b604051809103902090505b80611a18610131612d1b565b03611a0c57505b6110c281613680565b600080339050611a7086828787878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061309892505050565b9695505050505050565b6000611a846136c3565b60005b8551811015611afd5761028e6000878381518110611aa757611aa7616675565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16611aeb57604051630b094f2760e31b815260040160405180910390fd5b80611af58161668b565b915050611a87565b506117c28585858561376e565b600054610100900460ff1615808015611b2a5750600054600160ff909116105b80611b445750303b158015611b44575060005460ff166001145b611ba75760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161041c565b6000805460ff191660011790558015611bca576000805461ff0019166101001790555b334114611bea5760405163022d8c9560e31b815260040160405180910390fd5b3a15611c09576040516383f1b1d360e01b815260040160405180910390fd5b611c356040518060400160405280600b81526020016a2129a1a3b7bb32b93737b960a91b8152506137d6565b611c4f620151806212750068056bc75e2d6310000061382d565b611c57613864565b611c6261200561388b565b611c6d6120066138bb565b611c77600a6138eb565b611c836201518061391b565b61028e6020527ff0f52cefb444f33092ac77280e2ff9c808a9c078a96d3cd7513137548137ed8f8054600160ff1991821681179092557fb2c9e894c6f17bfc84a6708e0ea85c2729271d7cae0a8d875cd1080fb415e7a080548216831790557fd8ceb939a734f5a4e0a6fede9e31504e16ac856b555e8bac20ad743b9ff2976a80548216831790557f2a7b967fc66f4b36023165170b23a76f880d3dbbf244a856aeee9e670cef725980548216831790557fdb1a1113bac2e4f0e6f8c2f2bc4f6dbecf1fccb033d5df1b55b5c5ad6c20ac7980548216831790557f8b1888b379fb3b749668d86c5bf8aaada8e2276c6ced3a4efcc1e877827ce0b380548216831790557feeeea8d485053a64711f2c5802d2cc63251dd394956c140a2e30db7cef242ec580548216831790557f4cdb1a6c4b56f62f27f7202d75e865c2405f138cb32ec45019c0f2ca8f91e47280548216831790557f49d6c403a3197b15e024f109c83eb730d7af1a8b49fc6f820e09bad2597c14c980548216831790557f7a41b38ceb33f296c1ff3db5ffcc6542acb091d5fb27586f3c551dd2ebac063880548216831790557f701fe333ee20fad5d5a6a9930dddd3fb815af1d976d5250e394e39d6e4123e3880548216831790557fee7ba9842df249188adc0fc380980c3099f608b602924e083dd61e8e70845b4a80548216831790557f29973aeebf3c17f2c3a9cf7ace17f2798aa544e1ea7427938024cde6df46bac180548216831790557f74c0d6e29c82d6628d5f083f86fc15f0c6acef97321252a1eee0bd893dae276580548216831790556120066000527f1bdfc01e60036e5be56ae85d8394ddf727e1021b3d74de5b554fedea2de437678054909116909117905561028f805462010000600160b01b03191663dead000017905580156110c2576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b61028f546201000090046001600160a01b03163314611f9257604051631431806f60e11b815260040160405180910390fd5b61028f805461ff0019166101001790556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e75290600090a1565b6000606080600080600060606065546000801b148015611fed5750606654155b6120315760405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b604482015260640161041c565b61203961394b565b61204161395a565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b6101c554604080516324776b7d60e21b815290516000926001600160a01b0316916391ddadf49160048083019260209291908290030181865afa9250505080156120d2575060408051601f3d908101601f191682019092526120cf918101906166a4565b60015b61187357610e0843613969565b60006120ec8484846139d0565b90505b9392505050565b61022b546000901561211b5761210d61022b613a47565b6001600160e01b0316905090565b5061022a5490565b61212b610df3565b6001600160a01b0316336001600160a01b03161461215b5760405162461bcd60e51b815260040161041c90616435565b30612164610df3565b6001600160a01b0316146121a25760008036604051612184929190616425565b604051809103902090505b8061219b610131612d1b565b0361218f57505b6110c281613a77565b6101f85460008281526101f9602052604080822054905163d45c443560e01b81526004810191909152909182916001600160a01b039091169063d45c443590602401602060405180830381865afa15801561220a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061222e91906164e7565b90508060011461223e57806120ef565b60009392505050565b336110071461226d57604051630f22c43960e41b8152611007600482015260240161041c565b6122d36040518060400160405280600b81526020016a766f74696e6744656c617960a81b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613ae29050565b1561237c57602081146123015783838383604051630a5a604160e01b815260040161041c94939291906166f5565b604080516020601f8401819004810282018101909252828152600091612342918585808385018382808284376000920191909152509293925050613b3b9050565b90508060000361236d5784848484604051630a5a604160e01b815260040161041c94939291906166f5565b61237681613680565b506127e3565b6123e36040518060400160405280600c81526020016b1d9bdd1a5b99d4195c9a5bd960a21b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613ae29050565b1561248657602081146124115783838383604051630a5a604160e01b815260040161041c94939291906166f5565b604080516020601f8401819004810282018101909252828152600091612452918585808385018382808284376000920191909152509293925050613b3b9050565b90508060000361247d5784848484604051630a5a604160e01b815260040161041c94939291906166f5565b61237681613b40565b6124f2604051806040016040528060118152602001701c1c9bdc1bdcd85b151a1c995cda1bdb19607a1b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613ae29050565b1561259557602081146125205783838383604051630a5a604160e01b815260040161041c94939291906166f5565b604080516020601f8401819004810282018101909252828152600091612561918585808385018382808284376000920191909152509293925050613b3b9050565b90508060000361258c5784848484604051630a5a604160e01b815260040161041c94939291906166f5565b61237681613be3565b6125ff6040518060400160405280600f81526020016e38bab7b93ab6a73ab6b2b930ba37b960891b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613ae29050565b156126a2576020811461262d5783838383604051630a5a604160e01b815260040161041c94939291906166f5565b604080516020601f840181900481028201810190925282815260009161266e918585808385018382808284376000920191909152509293925050613b3b9050565b9050806000036126995784848484604051630a5a604160e01b815260040161041c94939291906166f5565b61237681612d9a565b612711604051806040016040528060148152602001736d696e506572696f64416674657251756f72756d60601b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613ae29050565b156127c2576008811461273f5783838383604051630a5a604160e01b815260040161041c94939291906166f5565b6000612785600884848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613b3b9050565b9050806001600160401b03166000036127b95784848484604051630a5a604160e01b815260040161041c94939291906166f5565b61237681613c26565b838383836040516325ee20d560e21b815260040161041c94939291906166f5565b7ff1ce9b2cbf50eeb05769a29e2543fd350cab46894a7dd9978a12d534bb20e6338484848460405161281894939291906166f5565b60405180910390a150505050565b6000610e086101635490565b6000610ed382613c92565b612845610df3565b6001600160a01b0316336001600160a01b0316146128755760405162461bcd60e51b815260040161041c90616435565b3061287e610df3565b6001600160a01b0316146128bc576000803660405161289e929190616425565b604051809103902090505b806128b5610131612d1b565b036128a957505b600080856001600160a01b03168585856040516128da929190616425565b60006040518083038185875af1925050503d8060008114612917576040519150601f19603f3d011682016040523d82523d6000602084013e61291c565b606091505b50915091506129448282604051806060016040528060288152602001616add60289139613cd0565b50505050505050565b600084848484604051602001612966949392919061671c565b60408051601f19818403018152919052805160209091012095945050505050565b61298f610df3565b6001600160a01b0316336001600160a01b0316146129bf5760405162461bcd60e51b815260040161041c90616435565b306129c8610df3565b6001600160a01b031614612a0657600080366040516129e8929190616425565b604051809103902090505b806129ff610131612d1b565b036129f357505b6110c281613c26565b60008251845114612a735760405162461bcd60e51b815260206004820152602860248201527f476f7665726e6f72427261766f3a20696e76616c6964207369676e61747572656044820152670e640d8cadccee8d60c31b606482015260840161041c565b612a81338787878787613ce9565b611a708686612a908787613da7565b85611a7a565b600080600080612aa585613208565b93509350935093506117ac84848484611158565b612ac1610df3565b6001600160a01b0316336001600160a01b031614612af15760405162461bcd60e51b815260040161041c90616435565b30612afa610df3565b6001600160a01b031614612b385760008036604051612b1a929190616425565b604051809103902090505b80612b31610131612d1b565b03612b2557505b6110c281613b40565b60006120ef8383612b5d60408051602081019091526000815290565b6139d0565b612b6a610df3565b6001600160a01b0316336001600160a01b031614612b9a5760405162461bcd60e51b815260040161041c90616435565b30612ba3610df3565b6001600160a01b031614612be15760008036604051612bc3929190616425565b604051809103902090505b80612bda610131612d1b565b03612bce57505b6110c281613be3565b60006064612bf7836118eb565b6101c554604051632394e7a360e21b8152600481018690526001600160a01b0390911690638e539e8c90602401602060405180830381865afa158015612c41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c6591906164e7565b612c6f9190616767565b610ed39190616794565b600080600080612c8885613208565b93509350935093506117ac84848484611383565b60006001600160e01b03198216636e665ced60e01b1480610ed35750610ed382613ed9565b6000610ed3612cce613f75565b8360405161190160f01b8152600281019290925260228201526042902090565b6000806000612cff87878787613f7f565b9150915061146c81614043565b6000611a70868686868661418d565b6000612d368254600f81810b600160801b909204900b131590565b15612d5457604051631ed9509560e11b815260040160405180910390fd5b508054600f0b6000818152600180840160205260408220805492905583546fffffffffffffffffffffffffffffffff191692016001600160801b03169190911790915590565b6064811115612e1d5760405162461bcd60e51b815260206004820152604360248201527f476f7665726e6f72566f74657351756f72756d4672616374696f6e3a2071756f60448201527f72756d4e756d657261746f72206f7665722071756f72756d44656e6f6d696e616064820152623a37b960e91b608482015260a40161041c565b6000612e276120f6565b90508015801590612e39575061022b54155b15612e9e57604080518082019091526000815261022b9060208101612e5d84614290565b6001600160e01b039081169091528254600181018455600093845260209384902083519490930151909116600160201b0263ffffffff909316929092179101555b612ecc612eb9612eac61206b565b65ffffffffffff16613564565b612ec284614290565b61022b91906142f9565b505060408051828152602081018490527f0553476bf02ef2726e8ce5ced78d63e26e602e4a2257b1f559418e24b4633997910160405180910390a15050565b30612f14610df3565b6001600160a01b031614612fa55760005b84518110156117ac57306001600160a01b0316858281518110612f4a57612f4a616675565b60200260200101516001600160a01b031603612f9557612f95838281518110612f7557612f75616675565b60200260200101518051906020012061013161431490919063ffffffff16565b612f9e8161668b565b9050612f25565b5050505050565b61028f54610100900460ff1615612fd65760405163e96776bf60e01b815260040160405180910390fd5b60005b845181101561304f5761028e6000868381518110612ff957612ff9616675565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff1661303d57604051630b094f2760e31b815260040160405180910390fd5b806130478161668b565b915050612fd9565b50612fa58585858585614350565b30613066610df3565b6001600160a01b031614612fa55761013154600f81810b600160801b909204900b1315612fa557600061013155612fa5565b60006117c2858585856130b660408051602081019091526000815290565b612d0c565b6000806130c7836143c5565b905060048160078111156130dd576130dd615ea5565b146130e85792915050565b60008381526101f9602052604090205480613104575092915050565b6101f854604051632ab0f52960e01b8152600481018390526001600160a01b0390911690632ab0f52990602401602060405180830381865afa15801561314e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061317291906167b6565b15613181575060079392505050565b6101f854604051632c258a9f60e11b8152600481018390526001600160a01b039091169063584b153e90602401602060405180830381865afa1580156131cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131ef91906167b6565b156131fe575060059392505050565b5060029392505050565b60608060606000806101936000878152602001908152602001600020905080600101816002016133da83600301805480602002602001604051908101604052809291908181526020016000905b828210156133015783829060005260206000200180546132749061646c565b80601f01602080910402602001604051908101604052809291908181526020018280546132a09061646c565b80156132ed5780601f106132c2576101008083540402835291602001916132ed565b820191906000526020600020905b8154815290600101906020018083116132d057829003601f168201915b505050505081526020019060010190613255565b50505060048601805460408051602080840282018101909252828152935060009084015b828210156133d15783829060005260206000200180546133449061646c565b80601f01602080910402602001604051908101604052809291908181526020018280546133709061646c565b80156133bd5780601f10613392576101008083540402835291602001916133bd565b820191906000526020600020905b8154815290600101906020018083116133a057829003601f168201915b505050505081526020019060010190613325565b50505050613da7565b600984015483546040805160208084028201810190925282815291869183018282801561343057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311613412575b505050505093508280548060200260200160405190810160405280929190818152602001828054801561348257602002820191906000526020600020905b81548152602001906001019080831161346e575b505050505092509450945094509450509193509193565b6000806134a88686868661294d565b600081815261019360205260409020549091506001600160a01b0316338114806134fc57506134d5612826565b6134fa8260016134e361206b565b6134ed91906165cf565b65ffffffffffff16612b41565b105b6135585760405162461bcd60e51b815260206004820152602760248201527f476f7665726e6f72427261766f3a2070726f706f7365722061626f76652074686044820152661c995cda1bdb1960ca1b606482015260840161041c565b611773878787876144fd565b600063ffffffff8211156135c95760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201526532206269747360d01b606482015260840161041c565b5090565b81546000908181600581111561362a5760006135e88461450b565b6135f29085616662565b60008881526020902090915081015463ffffffff908116908716101561361a57809150613628565b6136258160016165bc565b92505b505b6000613638878785856145f3565b905080156136735761365d8761364f600184616662565b600091825260209091200190565b54600160201b90046001600160e01b0316611773565b6000979650505050505050565b6101615460408051918252602082018390527fc565b045403dc03c2eea82b81a0465edad9e2e7fc4d97e11421c209da93d7a93910160405180910390a161016155565b61028f5460ff1661376c576a084595161401484a0000006120056001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561371a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061373e91906164e7565b101561375d576040516311b6707f60e01b815260040160405180910390fd5b61028f805460ff191660011790555b565b60006137ca33868686516001600160401b0381111561378f5761378f6158fa565b6040519080825280602002602001820160405280156137c257816020015b60608152602001906001900390816137ad5790505b508787613ce9565b6117c285858585614649565b600054610100900460ff166137fd5760405162461bcd60e51b815260040161041c906167d8565b6138248161381f6040805180820190915260018152603160f81b602082015290565b614a28565b6110c281614a77565b600054610100900460ff166138545760405162461bcd60e51b815260040161041c906167d8565b61385f838383614aaf565b505050565b600054610100900460ff1661376c5760405162461bcd60e51b815260040161041c906167d8565b600054610100900460ff166138b25760405162461bcd60e51b815260040161041c906167d8565b6110c281614af1565b600054610100900460ff166138e25760405162461bcd60e51b815260040161041c906167d8565b6110c281614b3b565b600054610100900460ff166139125760405162461bcd60e51b815260040161041c906167d8565b6110c281614b62565b600054610100900460ff166139425760405162461bcd60e51b815260040161041c906167d8565b6110c281614b89565b6060606780546110d59061646c565b6060606880546110d59061646c565b600065ffffffffffff8211156135c95760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203460448201526538206269747360d01b606482015260840161041c565b6101c554604051630748d63560e31b81526001600160a01b038581166004830152602482018590526000921690633a46b1a890604401602060405180830381865afa158015613a23573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120ec91906164e7565b8054600090801561223e57613a618361364f600184616662565b54600160201b90046001600160e01b03166120ef565b6101f854604080516001600160a01b03928316815291831660208301527f08f74ea46ef7894f65eabfb5e6e695de773a000b47c529ab559178069b226401910160405180910390a16101f880546001600160a01b0319166001600160a01b0392909216919091179055565b600081604051602001613af59190616823565b6040516020818303038152906040528051906020012083604051602001613b1c9190616823565b6040516020818303038152906040528051906020012014905092915050565b015190565b60008111613ba05760405162461bcd60e51b815260206004820152602760248201527f476f7665726e6f7253657474696e67733a20766f74696e6720706572696f6420604482015266746f6f206c6f7760c81b606482015260840161041c565b6101625460408051918252602082018390527f7e3f7f0708a84de9203036abaa450dccc85ad5ff52f78c170f3edb55cf5e8828910160405180910390a161016255565b6101635460408051918252602082018390527fccb45da8d5717e6c4544694297c4ba5cf151d455c9bb0ed4fc7a38411bc05461910160405180910390a161016355565b61025c54604080516001600160401b03928316815291831660208301527f7ca4ac117ed3cdce75c1161d8207c440389b1a15d69d096831664657c07dafc2910160405180910390a161025c805467ffffffffffffffff19166001600160401b0392909216919091179055565b60008181526101306020526040812060010154610ed3906001600160401b0316600084815261025d60205260409020546001600160401b0316614bb0565b60608315613cdf5750816120ef565b6120ef8383614bc6565b805160208201206000613d078787613d018888613da7565b8561294d565b600081815261019360205260409020600981015491925090613d9c5780546001600160a01b0319166001600160a01b038a161781558751613d5190600183019060208b0190615695565b508651613d6790600283019060208a01906156f6565b508551613d7d9060038301906020890190615731565b508451613d939060048301906020880190615783565b50600981018390555b505050505050505050565b6060600082516001600160401b03811115613dc457613dc46158fa565b604051908082528060200260200182016040528015613df757816020015b6060815260200190600190039081613de25790505b50905060005b8151811015613ed157848181518110613e1857613e18616675565b602002602001015151600014613e8857848181518110613e3a57613e3a616675565b602002602001015180519060200120848281518110613e5b57613e5b616675565b6020026020010151604051602001613e7492919061683f565b604051602081830303815290604052613ea3565b838181518110613e9a57613e9a616675565b60200260200101515b828281518110613eb557613eb5616675565b602002602001018190525080613eca9061668b565b9050613dfd565b509392505050565b600063288ace0360e11b6318df743f60e31b63bf26d89760e01b6379dd796f60e01b6001600160e01b03198616821480613f1f57506001600160e01b0319868116908216145b80613f3657506001600160e01b0319868116908516145b80613f5157506001600160e01b03198616630271189760e51b145b80611a7057506301ffc9a760e01b6001600160e01b03198716149695505050505050565b6000610e08614bf0565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115613fb6575060009050600361403a565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa15801561400a573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166140335760006001925092505061403a565b9150600090505b94509492505050565b600081600481111561405757614057615ea5565b0361405f5750565b600181600481111561407357614073615ea5565b036140c05760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640161041c565b60028160048111156140d4576140d4615ea5565b036141215760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161041c565b600381600481111561413557614135615ea5565b036110c25760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b606482015260840161041c565b60008061419d8787878787614c64565b600088815261025d60205260409020549091506001600160401b03161580156141ca57506141ca87614dba565b15611a705760006141e461025c546001600160401b031690565b6141ec61206b565b65ffffffffffff166141fe9190616870565b905061420988612832565b816001600160401b03161115614258576040516001600160401b038216815288907f541f725fb9f7c98a30cc9c0ff32fbb14358cd7159c847a3aa20a2bdc442ba5119060200160405180910390a25b600088815261025d60205260409020805467ffffffffffffffff19166001600160401b03929092169190911790559695505050505050565b60006001600160e01b038211156135c95760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20326044820152663234206269747360c81b606482015260840161041c565b600080614307858585614dfa565b915091505b935093915050565b8154600160801b90819004600f0b6000818152600180860160205260409091209390935583546001600160801b03908116939091011602179055565b6101f85460405163e38335e560e01b81526001600160a01b039091169063e38335e590349061438c908890889088906000908990600401616500565b6000604051808303818588803b1580156143a557600080fd5b505af11580156143b9573d6000803e3d6000fd5b50505050505050505050565b600081815261013060205260408120600281015460ff16156143ea5750600792915050565b6002810154610100900460ff16156144055750600292915050565b600083815261013060205260408120546001600160401b03169081900361446e5760405162461bcd60e51b815260206004820152601d60248201527f476f7665726e6f723a20756e6b6e6f776e2070726f706f73616c206964000000604482015260640161041c565b600061447861206b565b65ffffffffffff16905080821061449457506000949350505050565b600061449f86612832565b90508181106144b45750600195945050505050565b6144bd86614dba565b80156144e057506000868152610193602052604090206006810154600590910154115b156144f15750600495945050505050565b50600395945050505050565b60006117c285858585614f99565b60008160000361451d57506000919050565b6000600161452a8461504f565b901c6001901b905060018184816145435761454361677e565b048201901c9050600181848161455b5761455b61677e565b048201901c905060018184816145735761457361677e565b048201901c9050600181848161458b5761458b61677e565b048201901c905060018184816145a3576145a361677e565b048201901c905060018184816145bb576145bb61677e565b048201901c905060018184816145d3576145d361677e565b048201901c90506120ef818285816145ed576145ed61677e565b046150e3565b60005b81831015613ed157600061460a84846150f2565b60008781526020902090915063ffffffff86169082015463ffffffff16111561463557809250614643565b6146408160016165bc565b93505b506145f6565b600033614656818461510d565b6146a25760405162461bcd60e51b815260206004820152601d60248201527f476f7665726e6f723a2070726f706f7365722072657374726963746564000000604482015260640161041c565b60006146ac61206b565b65ffffffffffff1690506146be612826565b6146cd83610d4e600185616662565b10156147355760405162461bcd60e51b815260206004820152603160248201527f476f7665726e6f723a2070726f706f73657220766f7465732062656c6f7720706044820152701c9bdc1bdcd85b081d1a1c995cda1bdb19607a1b606482015260840161041c565b600061474a888888888051906020012061294d565b9050865188511461476d5760405162461bcd60e51b815260040161041c90616890565b855188511461478e5760405162461bcd60e51b815260040161041c90616890565b60008851116147df5760405162461bcd60e51b815260206004820152601860248201527f476f7665726e6f723a20656d7074792070726f706f73616c0000000000000000604482015260640161041c565b600081815261013060205260409020546001600160401b03161561484f5760405162461bcd60e51b815260206004820152602160248201527f476f7665726e6f723a2070726f706f73616c20616c72656164792065786973746044820152607360f81b606482015260840161041c565b600061485b6101615490565b61486590846165bc565b905060006148736101625490565b61487d90836165bc565b90506040518060e00160405280614893846151fe565b6001600160401b031681526001600160a01b0387166020820152600060408201526060016148c0836151fe565b6001600160401b03908116825260006020808401829052604080850183905260609485018390528883526101308252918290208551815492870151878501519186166001600160e01b031990941693909317600160401b6001600160a01b039094168402176001600160e01b0316600160e01b60e09290921c91909102178155938501516080860151908416921c0217600183015560a08301516002909201805460c09094015161ffff1990941692151561ff00191692909217610100931515939093029290921790558a517f7d84a6263ae0d98d3329bd7b46bb4e8d6f98cd35a7adb45c274c8b7fd5ebd5e091859188918e918e918111156149c5576149c56158fa565b6040519080825280602002602001820160405280156149f857816020015b60608152602001906001900390816149e35790505b508d88888f604051614a12999897969594939291906168d1565b60405180910390a1509098975050505050505050565b600054610100900460ff16614a4f5760405162461bcd60e51b815260040161041c906167d8565b6067614a5b83826169af565b506068614a6882826169af565b50506000606581905560665550565b600054610100900460ff16614a9e5760405162461bcd60e51b815260040161041c906167d8565b61012f614aab82826169af565b5050565b600054610100900460ff16614ad65760405162461bcd60e51b815260040161041c906167d8565b614adf83613680565b614ae882613b40565b61385f81613be3565b600054610100900460ff16614b185760405162461bcd60e51b815260040161041c906167d8565b6101c580546001600160a01b0319166001600160a01b0392909216919091179055565b600054610100900460ff166121a25760405162461bcd60e51b815260040161041c906167d8565b600054610100900460ff166110b95760405162461bcd60e51b815260040161041c906167d8565b600054610100900460ff16612a065760405162461bcd60e51b815260040161041c906167d8565b6000818311614bbf57816120ef565b5090919050565b815115614bd65781518083602001fd5b8060405162461bcd60e51b815260040161041c9190615ab3565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f614c1b615266565b614c236152bf565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b6000858152610130602052604081206001614c7e8861177e565b6007811115614c8f57614c8f615ea5565b14614ce85760405162461bcd60e51b815260206004820152602360248201527f476f7665726e6f723a20766f7465206e6f742063757272656e746c792061637460448201526269766560e81b606482015260840161041c565b8054600090614d029088906001600160401b0316866139d0565b9050614d1188888884886152f0565b8351600003614d6657866001600160a01b03167fb8e138887d0aa13bab447e82de9d5c1777041ecd21ca36ba824ff1e6c07ddda489888489604051614d599493929190616a6e565b60405180910390a2611773565b866001600160a01b03167fe2babfbac5889a709b63bb7f598b324e08bc5a4fb9ec647fb3cbc9ec07eb87128988848989604051614da7959493929190616a96565b60405180910390a2979650505050505050565b6000818152610193602052604081206005810154614df1610dba85600090815261013060205260409020546001600160401b031690565b11159392505050565b825460009081908015614f40576000614e188761364f600185616662565b60408051808201909152905463ffffffff808216808452600160201b9092046001600160e01b031660208401529192509087161015614e995760405162461bcd60e51b815260206004820152601b60248201527f436865636b706f696e743a2064656372656173696e67206b6579730000000000604482015260640161041c565b805163ffffffff808816911603614ee15784614eba8861364f600186616662565b80546001600160e01b0392909216600160201b0263ffffffff909216919091179055614f30565b6040805180820190915263ffffffff80881682526001600160e01b0380881660208085019182528b54600181018d5560008d81529190912094519151909216600160201b029216919091179101555b60200151925083915061430c9050565b50506040805180820190915263ffffffff80851682526001600160e01b0380851660208085019182528854600181018a5560008a815291822095519251909316600160201b02919093161792019190915590508161430c565b600080614fa88686868661548e565b60008181526101f96020526040902054909150156117c2576101f85460008281526101f960205260409081902054905163c4d252f560e01b81526001600160a01b039092169163c4d252f5916150049160040190815260200190565b600060405180830381600087803b15801561501e57600080fd5b505af1158015615032573d6000803e3d6000fd5b50505060008281526101f960205260408120555095945050505050565b600080608083901c1561506457608092831c92015b604083901c1561507657604092831c92015b602083901c1561508857602092831c92015b601083901c1561509a57601092831c92015b600883901c156150ac57600892831c92015b600483901c156150be57600492831c92015b600283901c156150d057600292831c92015b600183901c15610ed35760010192915050565b6000818310614bbf57816120ef565b60006151016002848418616794565b6120ef908484166165bc565b80516000906034811015615125576001915050610ed3565b82810160131901516001600160a01b031981166b046e0e4dee0dee6cae47a60f60a31b1461515857600192505050610ed3565b600080615166602885616662565b90505b838110156151dd5760008061519d88848151811061518957615189616675565b01602001516001600160f81b03191661559b565b91509150816151b55760019650505050505050610ed3565b8060ff166004856001600160a01b0316901b1793505050806151d69061668b565b9050615169565b50856001600160a01b0316816001600160a01b031614935050505092915050565b60006001600160401b038211156135c95760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203660448201526534206269747360d01b606482015260840161041c565b60008061527161394b565b805190915015615288578051602090910120919050565b60655480156152975792915050565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4709250505090565b6000806152ca61395a565b8051909150156152e1578051602090910120919050565b60665480156152975792915050565b6000858152610193602090815260408083206001600160a01b038816845260088101909252909120805460ff16156153805760405162461bcd60e51b815260206004820152602d60248201527f476f7665726e6f72436f6d7061746962696c697479427261766f3a20766f746560448201526c08185b1c9958591e4818d85cdd609a1b606482015260840161041c565b805460ff86166101000261ffff199091161760011781556153a08461562d565b81546001600160601b039190911662010000026dffffffffffffffffffffffff00001990911617815560ff85166153f057838260060160008282546153e591906165bc565b909155506129449050565b60001960ff86160161541057838260050160008282546153e591906165bc565b60011960ff86160161543057838260070160008282546153e591906165bc565b60405162461bcd60e51b815260206004820152602d60248201527f476f7665726e6f72436f6d7061746962696c697479427261766f3a20696e766160448201526c6c696420766f7465207479706560981b606482015260840161041c565b60008061549d8686868661294d565b905060006154aa8261177e565b905060028160078111156154c0576154c0615ea5565b141580156154e0575060068160078111156154dd576154dd615ea5565b14155b80156154fe575060078160078111156154fb576154fb615ea5565b14155b61554a5760405162461bcd60e51b815260206004820152601d60248201527f476f7665726e6f723a2070726f706f73616c206e6f7420616374697665000000604482015260640161041c565b6000828152610130602052604090819020600201805461ff001916610100179055517f789cf55be980739dad1d0699b93b58e806b51c9d96619bfa8fe0a28abaa7b30c9061134b9084815260200190565b60008060f883901c602f811180156155b65750603a8160ff16105b156155cb57600194602f199091019350915050565b8060ff1660401080156155e1575060478160ff16105b156155f6576001946036199091019350915050565b8060ff16606010801561560c575060678160ff16105b15615621576001946056199091019350915050565b50600093849350915050565b60006001600160601b038211156135c95760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203960448201526536206269747360d01b606482015260840161041c565b8280548282559060005260206000209081019282156156ea579160200282015b828111156156ea57825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906156b5565b506135c99291506157d5565b8280548282559060005260206000209081019282156156ea579160200282015b828111156156ea578251825591602001919060010190615716565b828054828255906000526020600020908101928215615777579160200282015b82811115615777578251829061576790826169af565b5091602001919060010190615751565b506135c99291506157ea565b8280548282559060005260206000209081019282156157c9579160200282015b828111156157c957825182906157b990826169af565b50916020019190600101906157a3565b506135c9929150615807565b5b808211156135c957600081556001016157d6565b808211156135c95760006157fe8282615824565b506001016157ea565b808211156135c957600061581b8282615824565b50600101615807565b5080546158309061646c565b6000825580601f10615840575050565b601f0160209004906000526020600020908101906110c291906157d5565b60006020828403121561587057600080fd5b5035919050565b60006020828403121561588957600080fd5b81356001600160e01b0319811681146120ef57600080fd5b803560ff8116811461187357600080fd5b60008083601f8401126158c457600080fd5b5081356001600160401b038111156158db57600080fd5b6020830191508360208285010111156158f357600080fd5b9250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715615938576159386158fa565b604052919050565b60006001600160401b03821115615959576159596158fa565b50601f01601f191660200190565b600082601f83011261597857600080fd5b813561598b61598682615940565b615910565b8181528460208386010111156159a057600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060008060008060e0898b0312156159d957600080fd5b883597506159e960208a016158a1565b965060408901356001600160401b0380821115615a0557600080fd5b615a118c838d016158b2565b909850965060608b0135915080821115615a2a57600080fd5b50615a378b828c01615967565b945050615a4660808a016158a1565b925060a0890135915060c089013590509295985092959890939650565b60005b83811015615a7e578181015183820152602001615a66565b50506000910152565b60008151808452615a9f816020860160208601615a63565b601f01601f19169290920160200192915050565b6020815260006120ef6020830184615a87565b6001600160a01b03811681146110c257600080fd5b60008060008060808587031215615af157600080fd5b8435615afc81615ac6565b93506020850135615b0c81615ac6565b92506040850135915060608501356001600160401b03811115615b2e57600080fd5b615b3a87828801615967565b91505092959194509250565b60006001600160401b03821115615b5f57615b5f6158fa565b5060051b60200190565b600082601f830112615b7a57600080fd5b81356020615b8a61598683615b46565b82815260059290921b84018101918181019086841115615ba957600080fd5b8286015b84811015615bcd578035615bc081615ac6565b8352918301918301615bad565b509695505050505050565b600082601f830112615be957600080fd5b81356020615bf961598683615b46565b82815260059290921b84018101918181019086841115615c1857600080fd5b8286015b84811015615bcd5780358352918301918301615c1c565b600082601f830112615c4457600080fd5b81356020615c5461598683615b46565b82815260059290921b84018101918181019086841115615c7357600080fd5b8286015b84811015615bcd5780356001600160401b03811115615c965760008081fd5b615ca48986838b0101615967565b845250918301918301615c77565b60008060008060808587031215615cc857600080fd5b84356001600160401b0380821115615cdf57600080fd5b615ceb88838901615b69565b95506020870135915080821115615d0157600080fd5b615d0d88838901615bd8565b94506040870135915080821115615d2357600080fd5b50615d3087828801615c33565b949793965093946060013593505050565b600081518084526020808501945080840160005b83811015615d7a5781516001600160a01b031687529582019590820190600101615d55565b509495945050505050565b600081518084526020808501945080840160005b83811015615d7a57815187529582019590820190600101615d99565b600081518084526020808501808196508360051b8101915082860160005b85811015615dfd578284038952615deb848351615a87565b98850198935090840190600101615dd3565b5091979650505050505050565b608081526000615e1d6080830187615d41565b8281036020840152615e2f8187615d85565b90508281036040840152615e438186615db5565b905082810360608401526117738185615db5565b600080600080600060a08688031215615e6f57600080fd5b85359450615e7f602087016158a1565b9350615e8d604087016158a1565b94979396509394606081013594506080013592915050565b634e487b7160e01b600052602160045260246000fd5b6020810160088310615edd57634e487b7160e01b600052602160045260246000fd5b91905290565b60008060408385031215615ef657600080fd5b823591506020830135615f0881615ac6565b809150509250929050565b600060208284031215615f2557600080fd5b81356120ef81615ac6565b60008060408385031215615f4357600080fd5b82359150615f53602084016158a1565b90509250929050565b600080600080600060808688031215615f7457600080fd5b85359450615f84602087016158a1565b935060408601356001600160401b0380821115615fa057600080fd5b615fac89838a016158b2565b90955093506060880135915080821115615fc557600080fd5b50615fd288828901615967565b9150509295509295909350565b60008060008060608587031215615ff557600080fd5b84359350616005602086016158a1565b925060408501356001600160401b0381111561602057600080fd5b61602c878288016158b2565b95989497509550505050565b6000806000806080858703121561604e57600080fd5b84356001600160401b038082111561606557600080fd5b61607188838901615b69565b9550602087013591508082111561608757600080fd5b61609388838901615bd8565b945060408701359150808211156160a957600080fd5b6160b588838901615c33565b935060608701359150808211156160cb57600080fd5b50615b3a87828801615967565b60ff60f81b8816815260e0602082015260006160f760e0830189615a87565b82810360408401526161098189615a87565b606084018890526001600160a01b038716608085015260a0840186905283810360c08501529050610fc38185615d85565b60008060006060848603121561614f57600080fd5b833561615a81615ac6565b92506020840135915060408401356001600160401b0381111561617c57600080fd5b61618886828701615967565b9150509250925092565b600080600080604085870312156161a857600080fd5b84356001600160401b03808211156161bf57600080fd5b6161cb888389016158b2565b909650945060208701359150808211156161e457600080fd5b5061602c878288016158b2565b600080600080600060a0868803121561620957600080fd5b853561621481615ac6565b9450602086013561622481615ac6565b935060408601356001600160401b038082111561624057600080fd5b61624c89838a01615bd8565b9450606088013591508082111561626257600080fd5b61626e89838a01615bd8565b93506080880135915080821115615fc557600080fd5b6000806000806060858703121561629a57600080fd5b84356162a581615ac6565b93506020850135925060408501356001600160401b0381111561602057600080fd5b6000602082840312156162d957600080fd5b81356001600160401b03811681146120ef57600080fd5b600080600080600060a0868803121561630857600080fd5b85356001600160401b038082111561631f57600080fd5b61632b89838a01615b69565b9650602088013591508082111561634157600080fd5b61634d89838a01615bd8565b9550604088013591508082111561636357600080fd5b61636f89838a01615c33565b9450606088013591508082111561638557600080fd5b61626e89838a01615c33565b600080604083850312156163a457600080fd5b82356163af81615ac6565b946020939093013593505050565b600080600080600060a086880312156163d557600080fd5b85356163e081615ac6565b945060208601356163f081615ac6565b9350604086013592506060860135915060808601356001600160401b0381111561641957600080fd5b615fd288828901615967565b8183823760009101908152919050565b60208082526018908201527f476f7665726e6f723a206f6e6c79476f7665726e616e63650000000000000000604082015260600190565b600181811c9082168061648057607f821691505b6020821081036164a057634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526021908201527f476f7665726e6f723a2070726f706f73616c206e6f74207375636365737366756040820152601b60fa1b606082015260800190565b6000602082840312156164f957600080fd5b5051919050565b60a08152600061651360a0830188615d41565b82810360208401526165258188615d85565b905082810360408401526165398187615db5565b60608401959095525050608001529392505050565b60c08152600061656160c0830189615d41565b82810360208401526165738189615d85565b905082810360408401526165878188615db5565b60608401969096525050608081019290925260a0909101529392505050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610ed357610ed36165a6565b65ffffffffffff8281168282160390808211156165ee576165ee6165a6565b5092915050565b60006020828403121561660757600080fd5b81516001600160401b0381111561661d57600080fd5b8201601f8101841361662e57600080fd5b805161663c61598682615940565b81815285602083850101111561665157600080fd5b6117c2826020830160208601615a63565b81810381811115610ed357610ed36165a6565b634e487b7160e01b600052603260045260246000fd5b60006001820161669d5761669d6165a6565b5060010190565b6000602082840312156166b657600080fd5b815165ffffffffffff811681146120ef57600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6040815260006167096040830186886166cc565b82810360208401526117738185876166cc565b60808152600061672f6080830187615d41565b82810360208401526167418187615d85565b905082810360408401526167558186615db5565b91505082606083015295945050505050565b8082028115828204841417610ed357610ed36165a6565b634e487b7160e01b600052601260045260246000fd5b6000826167b157634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156167c857600080fd5b815180151581146120ef57600080fd5b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60008251616835818460208701615a63565b9190910192915050565b6001600160e01b0319831681528151600090616862816004850160208701615a63565b919091016004019392505050565b6001600160401b038181168382160190808211156165ee576165ee6165a6565b60208082526021908201527f476f7665726e6f723a20696e76616c69642070726f706f73616c206c656e67746040820152600d60fb1b606082015260800190565b8981526001600160a01b0389166020820152610120604082018190526000906168fc8382018b615d41565b90508281036060840152616910818a615d85565b905082810360808401526169248189615db5565b905082810360a08401526169388188615db5565b90508560c08401528460e08401528281036101008401526169598185615a87565b9c9b505050505050505050505050565b601f82111561385f57600081815260208120601f850160051c810160208610156169905750805b601f850160051c820191505b818110156117ac5782815560010161699c565b81516001600160401b038111156169c8576169c86158fa565b6169dc816169d6845461646c565b84616969565b602080601f831160018114616a1157600084156169f95750858301515b600019600386901b1c1916600185901b1785556117ac565b600085815260208120601f198616915b82811015616a4057888601518255948401946001909101908401616a21565b5085821015616a5e5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b84815260ff84166020820152826040820152608060608201526000611a706080830184615a87565b85815260ff8516602082015283604082015260a060608201526000616abe60a0830185615a87565b8281036080840152616ad08185615a87565b9897505050505050505056fe476f7665726e6f723a2072656c617920726576657274656420776974686f7574206d657373616765a164736f6c6343000811000a", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/9d09d0a3d6332460a810188261ec8195e05aa218", + Code: "6080604052600436106103f35760003560e01c80637b3c71d311610208578063c28bc2fa11610118578063e23a9a52116100ab578063f1fad1041161007a578063f1fad10414610e46578063f23a6e6114610e5b578063f8ce560a14610e87578063fc0c546a14610ea7578063fe0d94c114610ec857600080fd5b8063e23a9a5214610d1b578063ea0217cf14610de6578063eb9019d414610e06578063ece40cc114610e2657600080fd5b8063da95691a116100e7578063da95691a14610c61578063dd4e2ba514610c81578063ddf0b00914610cc7578063deaaa7cc14610ce757600080fd5b8063c28bc2fa14610bef578063c59057e414610c02578063d07f91e914610c22578063d33219b414610c4257600080fd5b8063a7713a701161019b578063b187bd261161016a578063b187bd2614610b55578063b58131b014610b73578063bc197c8114610b88578063c01f9e3714610bb4578063c170ec0b14610bd457600080fd5b8063a7713a7014610ae0578063a890c91014610af5578063ab58fb8e14610b15578063ac43175114610b3557600080fd5b806384b0196e116101d757806384b0196e14610a5857806391ddadf414610a8057806397c3d33414610aac5780639a802a6d14610ac057600080fd5b80637b3c71d3146109ee5780637d5e81e214610a0e5780638129fc1c14610a2e5780638456cb5914610a4357600080fd5b80633932abb1116103035780634a49ac4c1161029657806354fd4d501161026557806354fd4d5014610944578063567813881461096e5780635f398a141461098e57806360c4247f146109ae57806370b0f660146109ce57600080fd5b80634a49ac4c146108b75780634bf5d7e9146108d75780634bf6c882146108ec578063533ddd141461091357600080fd5b8063417c73a7116102d2578063417c73a7146107fc578063438596321461081c578063452115d6146108675780634838d1651461088757600080fd5b80633932abb1146107795780633bccf4fd1461078f5780633e4f49e6146107af57806340e58ee5146107dc57600080fd5b8063150b7a02116103865780632656227d116103555780632656227d146106a25780632d63f693146106b55780632fe3e261146106ec578063328dd9821461072057806332b8113e1461075057600080fd5b8063150b7a02146105fb578063160cbed71461063f57806317977c611461065f57806324bc1a641461068d57600080fd5b8063046f7da2116103c2578063046f7da21461054e57806306f3f9e61461056357806306fdde0314610583578063143489d0146105a557600080fd5b8063013cf08b1461046357806301ffc9a7146104de57806302a251a31461050e578063034201811461052e57600080fd5b3661045e5730610401610edb565b6001600160a01b03161461045c5760405162461bcd60e51b815260206004820152601f60248201527f476f7665726e6f723a206d7573742073656e6420746f206578656375746f720060448201526064015b60405180910390fd5b005b600080fd5b34801561046f57600080fd5b5061048361047e366004615c8a565b610ef5565b604080519a8b526001600160a01b0390991660208b0152978901969096526060880194909452608087019290925260a086015260c085015260e084015215156101008301521515610120820152610140015b60405180910390f35b3480156104ea57600080fd5b506104fe6104f9366004615ca3565b610fb0565b60405190151581526020016104d5565b34801561051a57600080fd5b50610195545b6040519081526020016104d5565b34801561053a57600080fd5b50610520610549366004615de9565b610fc1565b34801561055a57600080fd5b5061045c6110b9565b34801561056f57600080fd5b5061045c61057e366004615c8a565b611149565b34801561058f57600080fd5b506105986111d4565b6040516104d59190615edf565b3480156105b157600080fd5b506105e36105c0366004615c8a565b60009081526101636020526040902054600160401b90046001600160a01b031690565b6040516001600160a01b0390911681526020016104d5565b34801561060757600080fd5b50610626610616366004615f07565b630a85bd0160e11b949350505050565b6040516001600160e01b031990911681526020016104d5565b34801561064b57600080fd5b5061052061065a3660046160de565b611267565b34801561066b57600080fd5b5061052061067a36600461616d565b6102c36020526000908152604090205481565b34801561069957600080fd5b50610520611352565b6105206106b03660046160de565b611378565b3480156106c157600080fd5b506105206106d0366004615c8a565b600090815261016360205260409020546001600160401b031690565b3480156106f857600080fd5b506105207fb3b3f3b703cd84ce352197dcff232b1b5d3cfb2025ce47cf04742d0651f1af8881565b34801561072c57600080fd5b5061074061073b366004615c8a565b61146b565b6040516104d59493929190616253565b34801561075c57600080fd5b5061028f546040516001600160401b0390911681526020016104d5565b34801561078557600080fd5b5061019454610520565b34801561079b57600080fd5b506105206107aa3660046162a0565b6116fd565b3480156107bb57600080fd5b506107cf6107ca366004615c8a565b611773565b6040516104d59190616304565b3480156107e857600080fd5b5061045c6107f7366004615c8a565b61177e565b34801561080857600080fd5b5061045c61081736600461616d565b6117a9565b34801561082857600080fd5b506104fe61083736600461632c565b60008281526101c6602090815260408083206001600160a01b038516845260080190915290205460ff1692915050565b34801561087357600080fd5b506105206108823660046160de565b61182a565b34801561089357600080fd5b506104fe6108a236600461616d565b60016020526000908152604090205460ff1681565b3480156108c357600080fd5b5061045c6108d236600461616d565b611838565b3480156108e357600080fd5b506105986118b3565b3480156108f857600080fd5b50610901600881565b60405160ff90911681526020016104d5565b34801561091f57600080fd5b506104fe61092e36600461616d565b6102c16020526000908152604090205460ff1681565b34801561095057600080fd5b506040805180820190915260018152603160f81b6020820152610598565b34801561097a57600080fd5b5061052061098936600461635c565b611960565b34801561099a57600080fd5b506105206109a9366004616388565b611989565b3480156109ba57600080fd5b506105206109c9366004615c8a565b6119d3565b3480156109da57600080fd5b5061045c6109e9366004615c8a565b611a88565b3480156109fa57600080fd5b50610520610a0936600461640b565b611b10565b348015610a1a57600080fd5b50610520610a29366004616464565b611b62565b348015610a3a57600080fd5b5061045c611c7d565b348015610a4f57600080fd5b5061045c611eae565b348015610a6457600080fd5b50610a6d611f44565b6040516104d59796959493929190616504565b348015610a8c57600080fd5b50610a95611fe2565b60405165ffffffffffff90911681526020016104d5565b348015610ab857600080fd5b506064610520565b348015610acc57600080fd5b50610520610adb366004616566565b612056565b348015610aec57600080fd5b5061052061206d565b348015610b0157600080fd5b5061045c610b1036600461616d565b61209a565b348015610b2157600080fd5b50610520610b30366004615c8a565b612122565b348015610b4157600080fd5b5061045c610b503660046165be565b6121be565b348015610b6157600080fd5b5060005462010000900460ff166104fe565b348015610b7f57600080fd5b50610520612903565b348015610b9457600080fd5b50610626610ba336600461661d565b63bc197c8160e01b95945050505050565b348015610bc057600080fd5b50610520610bcf366004615c8a565b61290f565b348015610be057600080fd5b506102c2546104fe9060ff1681565b61045c610bfd3660046166b0565b61291a565b348015610c0e57600080fd5b50610520610c1d3660046160de565b612a2a565b348015610c2e57600080fd5b5061045c610c3d3660046166f3565b612a64565b348015610c4e57600080fd5b5061022b546001600160a01b03166105e3565b348015610c6d57600080fd5b50610520610c7c36600461671c565b612aec565b348015610c8d57600080fd5b5060408051808201909152601a81527f737570706f72743d627261766f2671756f72756d3d627261766f0000000000006020820152610598565b348015610cd357600080fd5b5061045c610ce2366004615c8a565b612b73565b348015610cf357600080fd5b506105207f150214d74d59b7d1e90c73fc22ef3d991dd0a76b046543d4d80ab92d2a50328f81565b348015610d2757600080fd5b50610db6610d3636600461632c565b60408051606081018252600080825260208201819052918101919091525060009182526101c6602090815260408084206001600160a01b0393909316845260089092018152918190208151606081018352905460ff8082161515835261010082041693820193909352620100009092046001600160601b03169082015290565b6040805182511515815260208084015160ff1690820152918101516001600160601b0316908201526060016104d5565b348015610df257600080fd5b5061045c610e01366004615c8a565b612b96565b348015610e1257600080fd5b50610520610e213660046167bd565b612c1e565b348015610e3257600080fd5b5061045c610e41366004615c8a565b612c3f565b348015610e5257600080fd5b50610901601181565b348015610e6757600080fd5b50610626610e763660046167e9565b63f23a6e6160e01b95945050505050565b348015610e9357600080fd5b50610520610ea2366004615c8a565b612cc7565b348015610eb357600080fd5b506101f8546105e3906001600160a01b031681565b61045c610ed6366004615c8a565b612d56565b6000610ef061022b546001600160a01b031690565b905090565b8060008080808080808080610f098a612122565b60008c815261016360205260409020549098506001600160401b03169650610f308b61290f565b60008c81526101c66020526040812080546005820154600683015460078401546001600160a01b039093169e50949a509850929650919450610f718d611773565b90506002816007811115610f8757610f876162ee565b1493506007816007811115610f9e57610f9e6162ee565b14925050509193959799509193959799565b6000610fbb82612d79565b92915050565b60008061106561105d7fb3b3f3b703cd84ce352197dcff232b1b5d3cfb2025ce47cf04742d0651f1af888c8c8c8c604051610ffd929190616851565b60405180910390208b80519060200120604051602001611042959493929190948552602085019390935260ff9190911660408401526060830152608082015260a00190565b60405160208183030381529060405280519060200120612d9e565b868686612dcb565b90506110ab8a828b8b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508d9250612de9915050565b9a9950505050505050505050565b600054630100000090046001600160a01b031633146110eb576040516306fbb1e360e01b815260040160405180910390fd5b60005462010000900460ff1661111457604051636cd6020160e01b815260040160405180910390fd5b6000805462ff0000191681556040517f62451d457bc659158be6e6247f56ec1df424a5c7597f71c20c2bc44e0965c8f99190a1565b611151610edb565b6001600160a01b0316336001600160a01b0316146111815760405162461bcd60e51b815260040161045390616861565b3061118a610edb565b6001600160a01b0316146111c857600080366040516111aa929190616851565b604051809103902090505b806111c1610164612e52565b036111b557505b6111d181612ed1565b50565b606061016280546111e490616898565b80601f016020809104026020016040519081016040528092919081815260200182805461121090616898565b801561125d5780601f106112325761010080835404028352916020019161125d565b820191906000526020600020905b81548152906001019060200180831161124057829003601f168201915b5050505050905090565b6000805462010000900460ff161561129257604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff16156112c35760405163b1d02c3d60e01b815260040160405180910390fd5b60005b855181101561133c576102c160008783815181106112e6576112e66168d2565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff1661132a57604051630b094f2760e31b815260040160405180910390fd5b80611334816168fe565b9150506112c6565b5061134985858585613042565b95945050505050565b6000610ef06001611361611fe2565b61136b9190616917565b65ffffffffffff16612cc7565b60008061138786868686612a2a565b9050600061139482611773565b905060048160078111156113aa576113aa6162ee565b14806113c7575060058160078111156113c5576113c56162ee565b145b6113e35760405162461bcd60e51b81526004016104539061693d565b6000828152610163602052604090819020600201805460ff19166001179055517f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f906114329084815260200190565b60405180910390a16114478288888888613247565b61145482888888886132e8565b61146182888888886133ca565b5095945050505050565b60608060608060006101c66000878152602001908152602001600020905080600101816002018260030183600401838054806020026020016040519081016040528092919081815260200182805480156114ee57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116114d0575b505050505093508280548060200260200160405190810160405280929190818152602001828054801561154057602002820191906000526020600020905b81548152602001906001019080831161152c575b5050505050925081805480602002602001604051908101604052809291908181526020016000905b8282101561161457838290600052602060002001805461158790616898565b80601f01602080910402602001604051908101604052809291908181526020018280546115b390616898565b80156116005780601f106115d557610100808354040283529160200191611600565b820191906000526020600020905b8154815290600101906020018083116115e357829003601f168201915b505050505081526020019060010190611568565b50505050915080805480602002602001604051908101604052809291908181526020016000905b828210156116e757838290600052602060002001805461165a90616898565b80601f016020809104026020016040519081016040528092919081815260200182805461168690616898565b80156116d35780601f106116a8576101008083540402835291602001916116d3565b820191906000526020600020905b8154815290600101906020018083116116b657829003601f168201915b50505050508152602001906001019061163b565b5050505090509450945094509450509193509193565b604080517f150214d74d59b7d1e90c73fc22ef3d991dd0a76b046543d4d80ab92d2a50328f602082015290810186905260ff85166060820152600090819061174b9061105d90608001611042565b905061176887828860405180602001604052806000815250613405565b979650505050505050565b6000610fbb82613428565b60008060008061178d85613575565b93509350935093506117a18484848461182a565b505050505050565b600054630100000090046001600160a01b031633146117db576040516306fbb1e360e01b815260040160405180910390fd5b6001600160a01b0381166000818152600160208190526040808320805460ff1916909217909155517f7fd26be6fc92aff63f1f4409b2b2ddeb272a888031d7f55ec830485ec61941869190a250565b600061134985858585613806565b600054630100000090046001600160a01b0316331461186a576040516306fbb1e360e01b815260040160405180910390fd5b6001600160a01b038116600081815260016020526040808220805460ff19169055517fe0db3499b7fdc3da4cddff5f45d694549c19835e7f719fb5606d3ad1a5de40119190a250565b6101f85460408051634bf5d7e960e01b815290516060926001600160a01b031691634bf5d7e99160048083019260009291908290030181865afa92505050801561191f57506040513d6000823e601f3d908101601f1916820160405261191c919081019061697e565b60015b61195b575060408051808201909152601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c74000000602082015290565b919050565b60008033905061198184828560405180602001604052806000815250613405565b949350505050565b60008033905061176887828888888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a9250612de9915050565b61025e546000908082036119ec57505061025d54919050565b600061025e6119fc6001846169eb565b81548110611a0c57611a0c6168d2565b60009182526020918290206040805180820190915291015463ffffffff8116808352600160201b9091046001600160e01b03169282019290925291508410611a6257602001516001600160e01b03169392505050565b611a77611a6e856138d1565b61025e9061393a565b6001600160e01b0316949350505050565b611a90610edb565b6001600160a01b0316336001600160a01b031614611ac05760405162461bcd60e51b815260040161045390616861565b30611ac9610edb565b6001600160a01b031614611b075760008036604051611ae9929190616851565b604051809103902090505b80611b00610164612e52565b03611af457505b6111d1816139ed565b600080339050611b5886828787878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061340592505050565b9695505050505050565b6000805462010000900460ff1615611b8d57604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff1615611bbe5760405163b1d02c3d60e01b815260040160405180910390fd5b611bc6613a30565b3360009081526102c360205260409020548015611c3b576000611be882611773565b90506001816007811115611bfe57611bfe6162ee565b1480611c1b57506000816007811115611c1957611c196162ee565b145b15611c395760405163867f3ee560e01b815260040160405180910390fd5b505b825160208401206000611c5088888885612a2a565b3360009081526102c3602052604090208190559050611c7188888888613adb565b98975050505050505050565b600054610100900460ff1615808015611c9d5750600054600160ff909116105b80611cb75750303b158015611cb7575060005460ff166001145b611d1a5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610453565b6000805460ff191660011790558015611d3d576000805461ff0019166101001790555b334114611d5d5760405163022d8c9560e31b815260040160405180910390fd5b3a15611d7c576040516383f1b1d360e01b815260040160405180910390fd5b611da86040518060400160405280600b81526020016a2129a1a3b7bb32b93737b960a91b815250613b43565b611dd4611db760036000616a14565b611dc5600362015180616a14565b68056bc75e2d63100000613b9a565b611ddc613bd1565b611de7612005613bf8565b611df2612006613c28565b611dfc600a613c58565b611e11611e0c6003610e10616a14565b613c88565b6110076000526102c16020527f2f832952f0ef896b8c8edd6d16a2e4f2591a90375e33021e3b9ff197f3793fc0805460ff19166001179055611e667330151da466ec8ab345bef3d6983023e050fb0673613cb8565b80156111d1576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b600054630100000090046001600160a01b03163314611ee0576040516306fbb1e360e01b815260040160405180910390fd5b60005462010000900460ff1615611f0a57604051631785c68160e01b815260040160405180910390fd5b6000805462ff00001916620100001781556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e7529190a1565b6000606080600080600060606098546000801b148015611f645750609954155b611fa85760405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b6044820152606401610453565b611fb0613d0b565b611fb8613d1a565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b6101f854604080516324776b7d60e21b815290516000926001600160a01b0316916391ddadf49160048083019260209291908290030181865afa925050508015612049575060408051601f3d908101601f1916820190925261204691810190616a36565b60015b61195b57610ef043613d29565b6000612063848484613d90565b90505b9392505050565b61025e54600090156120925761208461025e613e07565b6001600160e01b0316905090565b5061025d5490565b6120a2610edb565b6001600160a01b0316336001600160a01b0316146120d25760405162461bcd60e51b815260040161045390616861565b306120db610edb565b6001600160a01b03161461211957600080366040516120fb929190616851565b604051809103902090505b80612112610164612e52565b0361210657505b6111d181613e37565b61022b54600082815261022c602052604080822054905163d45c443560e01b81526004810191909152909182916001600160a01b039091169063d45c443590602401602060405180830381865afa158015612181573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121a59190616a5e565b9050806001146121b55780612066565b60009392505050565b33611007146121e457604051630f22c43960e41b81526110076004820152602401610453565b61224a6040518060400160405280600b81526020016a766f74696e6744656c617960a81b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613ea29050565b156122ff57602081146122785783838383604051630a5a604160e01b81526004016104539493929190616aa0565b604080516020601f84018190048102820181019092528281526000916122b9918585808385018382808284376000920191909152509293925050613efb9050565b90508015806122ca57506201518081115b156122f05784848484604051630a5a604160e01b81526004016104539493929190616aa0565b6122f9816139ed565b506128c0565b6123666040518060400160405280600c81526020016b1d9bdd1a5b99d4195c9a5bd960a21b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613ea29050565b1561241557602081146123945783838383604051630a5a604160e01b81526004016104539493929190616aa0565b604080516020601f84018190048102820181019092528281526000916123d5918585808385018382808284376000920191909152509293925050613efb9050565b90508015806123e6575062278d0081115b1561240c5784848484604051630a5a604160e01b81526004016104539493929190616aa0565b6122f981613f00565b612481604051806040016040528060118152602001701c1c9bdc1bdcd85b151a1c995cda1bdb19607a1b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613ea29050565b1561253757602081146124af5783838383604051630a5a604160e01b81526004016104539493929190616aa0565b604080516020601f84018190048102820181019092528281526000916124f0918585808385018382808284376000920191909152509293925050613efb9050565b9050801580612508575069021e19e0c9bab240000081115b1561252e5784848484604051630a5a604160e01b81526004016104539493929190616aa0565b6122f981613fa3565b6125a16040518060400160405280600f81526020016e38bab7b93ab6a73ab6b2b930ba37b960891b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613ea29050565b1561265057602081146125cf5783838383604051630a5a604160e01b81526004016104539493929190616aa0565b604080516020601f8401819004810282018101909252828152600091612610918585808385018382808284376000920191909152509293925050613efb9050565b905060058110806126215750601481115b156126475784848484604051630a5a604160e01b81526004016104539493929190616aa0565b6122f981612ed1565b6126bf604051806040016040528060148152602001736d696e506572696f64416674657251756f72756d60601b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613ea29050565b1561278557600881146126ed5783838383604051630a5a604160e01b81526004016104539493929190616aa0565b6000612733600884848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613efb9050565b90506001600160401b038116158061275657506202a300816001600160401b0316115b1561277c5784848484604051630a5a604160e01b81526004016104539493929190616aa0565b6122f981613fe6565b6127f16040518060400160405280601181526020017033b7bb32b93737b9283937ba32b1ba37b960791b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613ea29050565b1561289f576014811461281f5783838383604051630a5a604160e01b81526004016104539493929190616aa0565b6000612865601484848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613efb9050565b90506001600160a01b0381166128965784848484604051630a5a604160e01b81526004016104539493929190616aa0565b6122f981614052565b838383836040516325ee20d560e21b81526004016104539493929190616aa0565b7ff1ce9b2cbf50eeb05769a29e2543fd350cab46894a7dd9978a12d534bb20e633848484846040516128f59493929190616aa0565b60405180910390a150505050565b6000610ef06101965490565b6000610fbb826140be565b612922610edb565b6001600160a01b0316336001600160a01b0316146129525760405162461bcd60e51b815260040161045390616861565b3061295b610edb565b6001600160a01b031614612999576000803660405161297b929190616851565b604051809103902090505b80612992610164612e52565b0361298657505b600080856001600160a01b03168585856040516129b7929190616851565b60006040518083038185875af1925050503d80600081146129f4576040519150601f19603f3d011682016040523d82523d6000602084013e6129f9565b606091505b5091509150612a218282604051806060016040528060288152602001616efd602891396140fc565b50505050505050565b600084848484604051602001612a439493929190616ac7565b60408051601f19818403018152919052805160209091012095945050505050565b612a6c610edb565b6001600160a01b0316336001600160a01b031614612a9c5760405162461bcd60e51b815260040161045390616861565b30612aa5610edb565b6001600160a01b031614612ae35760008036604051612ac5929190616851565b604051809103902090505b80612adc610164612e52565b03612ad057505b6111d181613fe6565b60008251845114612b505760405162461bcd60e51b815260206004820152602860248201527f476f7665726e6f72427261766f3a20696e76616c6964207369676e61747572656044820152670e640d8cadccee8d60c31b6064820152608401610453565b612b5e338787878787614115565b611b588686612b6d87876141d3565b85611b62565b600080600080612b8285613575565b93509350935093506117a184848484611267565b612b9e610edb565b6001600160a01b0316336001600160a01b031614612bce5760405162461bcd60e51b815260040161045390616861565b30612bd7610edb565b6001600160a01b031614612c155760008036604051612bf7929190616851565b604051809103902090505b80612c0e610164612e52565b03612c0257505b6111d181613f00565b60006120668383612c3a60408051602081019091526000815290565b613d90565b612c47610edb565b6001600160a01b0316336001600160a01b031614612c775760405162461bcd60e51b815260040161045390616861565b30612c80610edb565b6001600160a01b031614612cbe5760008036604051612ca0929190616851565b604051809103902090505b80612cb7610164612e52565b03612cab57505b6111d181613fa3565b60006064612cd4836119d3565b6101f854604051632394e7a360e21b8152600481018690526001600160a01b0390911690638e539e8c90602401602060405180830381865afa158015612d1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d429190616a5e565b612d4c9190616b12565b610fbb9190616a14565b600080600080612d6585613575565b93509350935093506117a184848484611378565b60006001600160e01b03198216636e665ced60e01b1480610fbb5750610fbb82614305565b6000610fbb612dab6143a1565b8360405161190160f01b8152600281019290925260228201526042902090565b6000806000612ddc878787876143ab565b915091506114618161446f565b6000805462010000900460ff1615612e1457604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff1615612e455760405163b1d02c3d60e01b815260040160405180910390fd5b611b5886868686866145b9565b6000612e6d8254600f81810b600160801b909204900b131590565b15612e8b57604051631ed9509560e11b815260040160405180910390fd5b508054600f0b6000818152600180840160205260408220805492905583546fffffffffffffffffffffffffffffffff191692016001600160801b03169190911790915590565b6064811115612f545760405162461bcd60e51b815260206004820152604360248201527f476f7665726e6f72566f74657351756f72756d4672616374696f6e3a2071756f60448201527f72756d4e756d657261746f72206f7665722071756f72756d44656e6f6d696e616064820152623a37b960e91b608482015260a401610453565b6000612f5e61206d565b90508015801590612f70575061025e54155b15612fd557604080518082019091526000815261025e9060208101612f94846146bc565b6001600160e01b039081169091528254600181018455600093845260209384902083519490930151909116600160201b0263ffffffff909316929092179101555b613003612ff0612fe3611fe2565b65ffffffffffff166138d1565b612ff9846146bc565b61025e9190614725565b505060408051828152602081018490527f0553476bf02ef2726e8ce5ced78d63e26e602e4a2257b1f559418e24b4633997910160405180910390a15050565b60008061305186868686612a2a565b9050600461305e82611773565b600781111561306f5761306f6162ee565b1461308c5760405162461bcd60e51b81526004016104539061693d565b61022b546040805163793d064960e11b815290516000926001600160a01b03169163f27a0c929160048083019260209291908290030181865afa1580156130d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130fb9190616a5e565b61022b5460405163b1c5f42760e01b81529192506001600160a01b03169063b1c5f42790613136908a908a908a906000908b90600401616b29565b602060405180830381865afa158015613153573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131779190616a5e565b600083815261022c60205260408082209290925561022b5491516308f2a0bb60e41b81526001600160a01b0390921691638f2a0bb0916131c4918b918b918b91908b908990600401616b77565b600060405180830381600087803b1580156131de57600080fd5b505af11580156131f2573d6000803e3d6000fd5b505050507f9a2e42fd6722813d69113e7d0079d3d940171428df7373df9c7f7617cfda28928282426132249190616bcf565b604080519283526020830191909152015b60405180910390a15095945050505050565b30613250610edb565b6001600160a01b0316146132e15760005b84518110156117a157306001600160a01b0316858281518110613286576132866168d2565b60200260200101516001600160a01b0316036132d1576132d18382815181106132b1576132b16168d2565b60200260200101518051906020012061016461474090919063ffffffff16565b6132da816168fe565b9050613261565b5050505050565b60005462010000900460ff161561331257604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff16156133435760405163b1d02c3d60e01b815260040160405180910390fd5b60005b84518110156133bc576102c16000868381518110613366576133666168d2565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff166133aa57604051630b094f2760e31b815260040160405180910390fd5b806133b4816168fe565b915050613346565b506132e1858585858561477c565b306133d3610edb565b6001600160a01b0316146132e15761016454600f81810b600160801b909204900b13156132e1576000610164556132e1565b60006113498585858561342360408051602081019091526000815290565b612de9565b600080613434836147f1565b9050600481600781111561344a5761344a6162ee565b146134555792915050565b600083815261022c602052604090205480613471575092915050565b61022b54604051632ab0f52960e01b8152600481018390526001600160a01b0390911690632ab0f52990602401602060405180830381865afa1580156134bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134df9190616be2565b156134ee575060079392505050565b61022b54604051632c258a9f60e11b8152600481018390526001600160a01b039091169063584b153e90602401602060405180830381865afa158015613538573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061355c9190616be2565b1561356b575060059392505050565b5060029392505050565b60608060606000806101c660008781526020019081526020016000209050806001018160020161374783600301805480602002602001604051908101604052809291908181526020016000905b8282101561366e5783829060005260206000200180546135e190616898565b80601f016020809104026020016040519081016040528092919081815260200182805461360d90616898565b801561365a5780601f1061362f5761010080835404028352916020019161365a565b820191906000526020600020905b81548152906001019060200180831161363d57829003601f168201915b5050505050815260200190600101906135c2565b50505060048601805460408051602080840282018101909252828152935060009084015b8282101561373e5783829060005260206000200180546136b190616898565b80601f01602080910402602001604051908101604052809291908181526020018280546136dd90616898565b801561372a5780601f106136ff5761010080835404028352916020019161372a565b820191906000526020600020905b81548152906001019060200180831161370d57829003601f168201915b505050505081526020019060010190613692565b505050506141d3565b600984015483546040805160208084028201810190925282815291869183018282801561379d57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161377f575b50505050509350828054806020026020016040519081016040528092919081815260200182805480156137ef57602002820191906000526020600020905b8154815260200190600101908083116137db575b505050505092509450945094509450509193509193565b60008061381586868686612a2a565b60008181526101c660205260409020549091506001600160a01b0316338114806138695750613842612903565b613867826001613850611fe2565b61385a9190616917565b65ffffffffffff16612c1e565b105b6138c55760405162461bcd60e51b815260206004820152602760248201527f476f7665726e6f72427261766f3a2070726f706f7365722061626f76652074686044820152661c995cda1bdb1960ca1b6064820152608401610453565b61176887878787614929565b600063ffffffff8211156139365760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201526532206269747360d01b6064820152608401610453565b5090565b81546000908181600581111561399757600061395584614937565b61395f90856169eb565b60008881526020902090915081015463ffffffff908116908716101561398757809150613995565b613992816001616bcf565b92505b505b60006139a587878585614a1f565b905080156139e0576139ca876139bc6001846169eb565b600091825260209091200190565b54600160201b90046001600160e01b0316611768565b6000979650505050505050565b6101945460408051918252602082018390527fc565b045403dc03c2eea82b81a0465edad9e2e7fc4d97e11421c209da93d7a93910160405180910390a161019455565b6102c25460ff16613ad9576a084595161401484a0000006120056001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613a87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613aab9190616a5e565b1015613aca576040516311b6707f60e01b815260040160405180910390fd5b6102c2805460ff191660011790555b565b6000613b3733868686516001600160401b03811115613afc57613afc615d26565b604051908082528060200260200182016040528015613b2f57816020015b6060815260200190600190039081613b1a5790505b508787614115565b61134985858585614a75565b600054610100900460ff16613b6a5760405162461bcd60e51b815260040161045390616c04565b613b9181613b8c6040805180820190915260018152603160f81b602082015290565b614e54565b6111d181614ea3565b600054610100900460ff16613bc15760405162461bcd60e51b815260040161045390616c04565b613bcc838383614edb565b505050565b600054610100900460ff16613ad95760405162461bcd60e51b815260040161045390616c04565b600054610100900460ff16613c1f5760405162461bcd60e51b815260040161045390616c04565b6111d181614f1d565b600054610100900460ff16613c4f5760405162461bcd60e51b815260040161045390616c04565b6111d181614f67565b600054610100900460ff16613c7f5760405162461bcd60e51b815260040161045390616c04565b6111d181614f8e565b600054610100900460ff16613caf5760405162461bcd60e51b815260040161045390616c04565b6111d181614fb5565b600054610100900460ff16613cdf5760405162461bcd60e51b815260040161045390616c04565b600080546001600160a01b039092166301000000026301000000600160b81b0319909216919091179055565b6060609a80546111e490616898565b6060609b80546111e490616898565b600065ffffffffffff8211156139365760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203460448201526538206269747360d01b6064820152608401610453565b6101f854604051630748d63560e31b81526001600160a01b038581166004830152602482018590526000921690633a46b1a890604401602060405180830381865afa158015613de3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120639190616a5e565b805460009080156121b557613e21836139bc6001846169eb565b54600160201b90046001600160e01b0316612066565b61022b54604080516001600160a01b03928316815291831660208301527f08f74ea46ef7894f65eabfb5e6e695de773a000b47c529ab559178069b226401910160405180910390a161022b80546001600160a01b0319166001600160a01b0392909216919091179055565b600081604051602001613eb59190616c4f565b6040516020818303038152906040528051906020012083604051602001613edc9190616c4f565b6040516020818303038152906040528051906020012014905092915050565b015190565b60008111613f605760405162461bcd60e51b815260206004820152602760248201527f476f7665726e6f7253657474696e67733a20766f74696e6720706572696f6420604482015266746f6f206c6f7760c81b6064820152608401610453565b6101955460408051918252602082018390527f7e3f7f0708a84de9203036abaa450dccc85ad5ff52f78c170f3edb55cf5e8828910160405180910390a161019555565b6101965460408051918252602082018390527fccb45da8d5717e6c4544694297c4ba5cf151d455c9bb0ed4fc7a38411bc05461910160405180910390a161019655565b61028f54604080516001600160401b03928316815291831660208301527f7ca4ac117ed3cdce75c1161d8207c440389b1a15d69d096831664657c07dafc2910160405180910390a161028f805467ffffffffffffffff19166001600160401b0392909216919091179055565b600080546040516001600160a01b0380851693630100000090930416917f44fc1b38a4abaa91ebd1b628a5b259a698f86238c8217d68f516e87769c60c0b91a3600080546001600160a01b039092166301000000026301000000600160b81b0319909216919091179055565b60008181526101636020526040812060010154610fbb906001600160401b0316600084815261029060205260409020546001600160401b0316614fdc565b6060831561410b575081612066565b6120668383614ff2565b805160208201206000614133878761412d88886141d3565b85612a2a565b60008181526101c6602052604090206009810154919250906141c85780546001600160a01b0319166001600160a01b038a16178155875161417d90600183019060208b0190615ac1565b50865161419390600283019060208a0190615b22565b5085516141a99060038301906020890190615b5d565b5084516141bf9060048301906020880190615baf565b50600981018390555b505050505050505050565b6060600082516001600160401b038111156141f0576141f0615d26565b60405190808252806020026020018201604052801561422357816020015b606081526020019060019003908161420e5790505b50905060005b81518110156142fd57848181518110614244576142446168d2565b6020026020010151516000146142b457848181518110614266576142666168d2565b602002602001015180519060200120848281518110614287576142876168d2565b60200260200101516040516020016142a0929190616c6b565b6040516020818303038152906040526142cf565b8381815181106142c6576142c66168d2565b60200260200101515b8282815181106142e1576142e16168d2565b6020026020010181905250806142f6906168fe565b9050614229565b509392505050565b600063288ace0360e11b6318df743f60e31b63bf26d89760e01b6379dd796f60e01b6001600160e01b0319861682148061434b57506001600160e01b0319868116908216145b8061436257506001600160e01b0319868116908516145b8061437d57506001600160e01b03198616630271189760e51b145b80611b5857506301ffc9a760e01b6001600160e01b03198716149695505050505050565b6000610ef061501c565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156143e25750600090506003614466565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614436573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661445f57600060019250925050614466565b9150600090505b94509492505050565b6000816004811115614483576144836162ee565b0361448b5750565b600181600481111561449f5761449f6162ee565b036144ec5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610453565b6002816004811115614500576145006162ee565b0361454d5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610453565b6003816004811115614561576145616162ee565b036111d15760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610453565b6000806145c98787878787615090565b600088815261029060205260409020549091506001600160401b03161580156145f657506145f6876151e6565b15611b5857600061461061028f546001600160401b031690565b614618611fe2565b65ffffffffffff1661462a9190616c9c565b90506146358861290f565b816001600160401b03161115614684576040516001600160401b038216815288907f541f725fb9f7c98a30cc9c0ff32fbb14358cd7159c847a3aa20a2bdc442ba5119060200160405180910390a25b600088815261029060205260409020805467ffffffffffffffff19166001600160401b03929092169190911790559695505050505050565b60006001600160e01b038211156139365760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20326044820152663234206269747360c81b6064820152608401610453565b600080614733858585615226565b915091505b935093915050565b8154600160801b90819004600f0b6000818152600180860160205260409091209390935583546001600160801b03908116939091011602179055565b61022b5460405163e38335e560e01b81526001600160a01b039091169063e38335e59034906147b8908890889088906000908990600401616b29565b6000604051808303818588803b1580156147d157600080fd5b505af11580156147e5573d6000803e3d6000fd5b50505050505050505050565b600081815261016360205260408120600281015460ff16156148165750600792915050565b6002810154610100900460ff16156148315750600292915050565b600083815261016360205260408120546001600160401b03169081900361489a5760405162461bcd60e51b815260206004820152601d60248201527f476f7665726e6f723a20756e6b6e6f776e2070726f706f73616c2069640000006044820152606401610453565b60006148a4611fe2565b65ffffffffffff1690508082106148c057506000949350505050565b60006148cb8661290f565b90508181106148e05750600195945050505050565b6148e9866151e6565b801561490c575060008681526101c6602052604090206006810154600590910154115b1561491d5750600495945050505050565b50600395945050505050565b6000611349858585856153c5565b60008160000361494957506000919050565b600060016149568461547b565b901c6001901b9050600181848161496f5761496f6169fe565b048201901c90506001818481614987576149876169fe565b048201901c9050600181848161499f5761499f6169fe565b048201901c905060018184816149b7576149b76169fe565b048201901c905060018184816149cf576149cf6169fe565b048201901c905060018184816149e7576149e76169fe565b048201901c905060018184816149ff576149ff6169fe565b048201901c905061206681828581614a1957614a196169fe565b0461550f565b60005b818310156142fd576000614a36848461551e565b60008781526020902090915063ffffffff86169082015463ffffffff161115614a6157809250614a6f565b614a6c816001616bcf565b93505b50614a22565b600033614a828184615539565b614ace5760405162461bcd60e51b815260206004820152601d60248201527f476f7665726e6f723a2070726f706f73657220726573747269637465640000006044820152606401610453565b6000614ad8611fe2565b65ffffffffffff169050614aea612903565b614af983610e216001856169eb565b1015614b615760405162461bcd60e51b815260206004820152603160248201527f476f7665726e6f723a2070726f706f73657220766f7465732062656c6f7720706044820152701c9bdc1bdcd85b081d1a1c995cda1bdb19607a1b6064820152608401610453565b6000614b768888888880519060200120612a2a565b90508651885114614b995760405162461bcd60e51b815260040161045390616cbc565b8551885114614bba5760405162461bcd60e51b815260040161045390616cbc565b6000885111614c0b5760405162461bcd60e51b815260206004820152601860248201527f476f7665726e6f723a20656d7074792070726f706f73616c00000000000000006044820152606401610453565b600081815261016360205260409020546001600160401b031615614c7b5760405162461bcd60e51b815260206004820152602160248201527f476f7665726e6f723a2070726f706f73616c20616c72656164792065786973746044820152607360f81b6064820152608401610453565b6000614c876101945490565b614c919084616bcf565b90506000614c9f6101955490565b614ca99083616bcf565b90506040518060e00160405280614cbf8461562a565b6001600160401b031681526001600160a01b038716602082015260006040820152606001614cec8361562a565b6001600160401b03908116825260006020808401829052604080850183905260609485018390528883526101638252918290208551815492870151878501519186166001600160e01b031990941693909317600160401b6001600160a01b039094168402176001600160e01b0316600160e01b60e09290921c91909102178155938501516080860151908416921c0217600183015560a08301516002909201805460c09094015161ffff1990941692151561ff00191692909217610100931515939093029290921790558a517f7d84a6263ae0d98d3329bd7b46bb4e8d6f98cd35a7adb45c274c8b7fd5ebd5e091859188918e918e91811115614df157614df1615d26565b604051908082528060200260200182016040528015614e2457816020015b6060815260200190600190039081614e0f5790505b508d88888f604051614e3e99989796959493929190616cfd565b60405180910390a1509098975050505050505050565b600054610100900460ff16614e7b5760405162461bcd60e51b815260040161045390616c04565b609a614e878382616ddb565b50609b614e948282616ddb565b50506000609881905560995550565b600054610100900460ff16614eca5760405162461bcd60e51b815260040161045390616c04565b610162614ed78282616ddb565b5050565b600054610100900460ff16614f025760405162461bcd60e51b815260040161045390616c04565b614f0b836139ed565b614f1482613f00565b613bcc81613fa3565b600054610100900460ff16614f445760405162461bcd60e51b815260040161045390616c04565b6101f880546001600160a01b0319166001600160a01b0392909216919091179055565b600054610100900460ff166121195760405162461bcd60e51b815260040161045390616c04565b600054610100900460ff166111c85760405162461bcd60e51b815260040161045390616c04565b600054610100900460ff16612ae35760405162461bcd60e51b815260040161045390616c04565b6000818311614feb5781612066565b5090919050565b8151156150025781518083602001fd5b8060405162461bcd60e51b81526004016104539190615edf565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f615047615692565b61504f6156eb565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b60008581526101636020526040812060016150aa88611773565b60078111156150bb576150bb6162ee565b146151145760405162461bcd60e51b815260206004820152602360248201527f476f7665726e6f723a20766f7465206e6f742063757272656e746c792061637460448201526269766560e81b6064820152608401610453565b805460009061512e9088906001600160401b031686613d90565b905061513d888888848861571c565b835160000361519257866001600160a01b03167fb8e138887d0aa13bab447e82de9d5c1777041ecd21ca36ba824ff1e6c07ddda4898884896040516151859493929190616e9a565b60405180910390a2611768565b866001600160a01b03167fe2babfbac5889a709b63bb7f598b324e08bc5a4fb9ec647fb3cbc9ec07eb871289888489896040516151d3959493929190616ec2565b60405180910390a2979650505050505050565b60008181526101c660205260408120600581015461521d610ea285600090815261016360205260409020546001600160401b031690565b11159392505050565b82546000908190801561536c576000615244876139bc6001856169eb565b60408051808201909152905463ffffffff808216808452600160201b9092046001600160e01b0316602084015291925090871610156152c55760405162461bcd60e51b815260206004820152601b60248201527f436865636b706f696e743a2064656372656173696e67206b65797300000000006044820152606401610453565b805163ffffffff80881691160361530d57846152e6886139bc6001866169eb565b80546001600160e01b0392909216600160201b0263ffffffff90921691909117905561535c565b6040805180820190915263ffffffff80881682526001600160e01b0380881660208085019182528b54600181018d5560008d81529190912094519151909216600160201b029216919091179101555b6020015192508391506147389050565b50506040805180820190915263ffffffff80851682526001600160e01b0380851660208085019182528854600181018a5560008a815291822095519251909316600160201b029190931617920191909155905081614738565b6000806153d4868686866158ba565b600081815261022c6020526040902054909150156113495761022b54600082815261022c60205260409081902054905163c4d252f560e01b81526001600160a01b039092169163c4d252f5916154309160040190815260200190565b600060405180830381600087803b15801561544a57600080fd5b505af115801561545e573d6000803e3d6000fd5b505050600082815261022c60205260408120555095945050505050565b600080608083901c1561549057608092831c92015b604083901c156154a257604092831c92015b602083901c156154b457602092831c92015b601083901c156154c657601092831c92015b600883901c156154d857600892831c92015b600483901c156154ea57600492831c92015b600283901c156154fc57600292831c92015b600183901c15610fbb5760010192915050565b6000818310614feb5781612066565b600061552d6002848418616a14565b61206690848416616bcf565b80516000906034811015615551576001915050610fbb565b82810160131901516001600160a01b031981166b046e0e4dee0dee6cae47a60f60a31b1461558457600192505050610fbb565b6000806155926028856169eb565b90505b83811015615609576000806155c98884815181106155b5576155b56168d2565b01602001516001600160f81b0319166159c7565b91509150816155e15760019650505050505050610fbb565b8060ff166004856001600160a01b0316901b179350505080615602906168fe565b9050615595565b50856001600160a01b0316816001600160a01b031614935050505092915050565b60006001600160401b038211156139365760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203660448201526534206269747360d01b6064820152608401610453565b60008061569d613d0b565b8051909150156156b4578051602090910120919050565b60985480156156c35792915050565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4709250505090565b6000806156f6613d1a565b80519091501561570d578051602090910120919050565b60995480156156c35792915050565b60008581526101c6602090815260408083206001600160a01b038816845260088101909252909120805460ff16156157ac5760405162461bcd60e51b815260206004820152602d60248201527f476f7665726e6f72436f6d7061746962696c697479427261766f3a20766f746560448201526c08185b1c9958591e4818d85cdd609a1b6064820152608401610453565b805460ff86166101000261ffff199091161760011781556157cc84615a59565b81546001600160601b039190911662010000026dffffffffffffffffffffffff00001990911617815560ff851661581c57838260060160008282546158119190616bcf565b90915550612a219050565b60001960ff86160161583c57838260050160008282546158119190616bcf565b60011960ff86160161585c57838260070160008282546158119190616bcf565b60405162461bcd60e51b815260206004820152602d60248201527f476f7665726e6f72436f6d7061746962696c697479427261766f3a20696e766160448201526c6c696420766f7465207479706560981b6064820152608401610453565b6000806158c986868686612a2a565b905060006158d682611773565b905060028160078111156158ec576158ec6162ee565b1415801561590c57506006816007811115615909576159096162ee565b14155b801561592a57506007816007811115615927576159276162ee565b14155b6159765760405162461bcd60e51b815260206004820152601d60248201527f476f7665726e6f723a2070726f706f73616c206e6f74206163746976650000006044820152606401610453565b6000828152610163602052604090819020600201805461ff001916610100179055517f789cf55be980739dad1d0699b93b58e806b51c9d96619bfa8fe0a28abaa7b30c906132359084815260200190565b60008060f883901c602f811180156159e25750603a8160ff16105b156159f757600194602f199091019350915050565b8060ff166040108015615a0d575060478160ff16105b15615a22576001946036199091019350915050565b8060ff166060108015615a38575060678160ff16105b15615a4d576001946056199091019350915050565b50600093849350915050565b60006001600160601b038211156139365760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203960448201526536206269747360d01b6064820152608401610453565b828054828255906000526020600020908101928215615b16579160200282015b82811115615b1657825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190615ae1565b50613936929150615c01565b828054828255906000526020600020908101928215615b16579160200282015b82811115615b16578251825591602001919060010190615b42565b828054828255906000526020600020908101928215615ba3579160200282015b82811115615ba35782518290615b939082616ddb565b5091602001919060010190615b7d565b50613936929150615c16565b828054828255906000526020600020908101928215615bf5579160200282015b82811115615bf55782518290615be59082616ddb565b5091602001919060010190615bcf565b50613936929150615c33565b5b808211156139365760008155600101615c02565b80821115613936576000615c2a8282615c50565b50600101615c16565b80821115613936576000615c478282615c50565b50600101615c33565b508054615c5c90616898565b6000825580601f10615c6c575050565b601f0160209004906000526020600020908101906111d19190615c01565b600060208284031215615c9c57600080fd5b5035919050565b600060208284031215615cb557600080fd5b81356001600160e01b03198116811461206657600080fd5b803560ff8116811461195b57600080fd5b60008083601f840112615cf057600080fd5b5081356001600160401b03811115615d0757600080fd5b602083019150836020828501011115615d1f57600080fd5b9250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715615d6457615d64615d26565b604052919050565b60006001600160401b03821115615d8557615d85615d26565b50601f01601f191660200190565b600082601f830112615da457600080fd5b8135615db7615db282615d6c565b615d3c565b818152846020838601011115615dcc57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060008060008060e0898b031215615e0557600080fd5b88359750615e1560208a01615ccd565b965060408901356001600160401b0380821115615e3157600080fd5b615e3d8c838d01615cde565b909850965060608b0135915080821115615e5657600080fd5b50615e638b828c01615d93565b945050615e7260808a01615ccd565b925060a0890135915060c089013590509295985092959890939650565b60005b83811015615eaa578181015183820152602001615e92565b50506000910152565b60008151808452615ecb816020860160208601615e8f565b601f01601f19169290920160200192915050565b6020815260006120666020830184615eb3565b6001600160a01b03811681146111d157600080fd5b60008060008060808587031215615f1d57600080fd5b8435615f2881615ef2565b93506020850135615f3881615ef2565b92506040850135915060608501356001600160401b03811115615f5a57600080fd5b615f6687828801615d93565b91505092959194509250565b60006001600160401b03821115615f8b57615f8b615d26565b5060051b60200190565b600082601f830112615fa657600080fd5b81356020615fb6615db283615f72565b82815260059290921b84018101918181019086841115615fd557600080fd5b8286015b84811015615ff9578035615fec81615ef2565b8352918301918301615fd9565b509695505050505050565b600082601f83011261601557600080fd5b81356020616025615db283615f72565b82815260059290921b8401810191818101908684111561604457600080fd5b8286015b84811015615ff95780358352918301918301616048565b600082601f83011261607057600080fd5b81356020616080615db283615f72565b82815260059290921b8401810191818101908684111561609f57600080fd5b8286015b84811015615ff95780356001600160401b038111156160c25760008081fd5b6160d08986838b0101615d93565b8452509183019183016160a3565b600080600080608085870312156160f457600080fd5b84356001600160401b038082111561610b57600080fd5b61611788838901615f95565b9550602087013591508082111561612d57600080fd5b61613988838901616004565b9450604087013591508082111561614f57600080fd5b5061615c8782880161605f565b949793965093946060013593505050565b60006020828403121561617f57600080fd5b813561206681615ef2565b600081518084526020808501945080840160005b838110156161c35781516001600160a01b03168752958201959082019060010161619e565b509495945050505050565b600081518084526020808501945080840160005b838110156161c3578151875295820195908201906001016161e2565b600081518084526020808501808196508360051b8101915082860160005b85811015616246578284038952616234848351615eb3565b9885019893509084019060010161621c565b5091979650505050505050565b608081526000616266608083018761618a565b828103602084015261627881876161ce565b9050828103604084015261628c81866161fe565b9050828103606084015261176881856161fe565b600080600080600060a086880312156162b857600080fd5b853594506162c860208701615ccd565b93506162d660408701615ccd565b94979396509394606081013594506080013592915050565b634e487b7160e01b600052602160045260246000fd5b602081016008831061632657634e487b7160e01b600052602160045260246000fd5b91905290565b6000806040838503121561633f57600080fd5b82359150602083013561635181615ef2565b809150509250929050565b6000806040838503121561636f57600080fd5b8235915061637f60208401615ccd565b90509250929050565b6000806000806000608086880312156163a057600080fd5b853594506163b060208701615ccd565b935060408601356001600160401b03808211156163cc57600080fd5b6163d889838a01615cde565b909550935060608801359150808211156163f157600080fd5b506163fe88828901615d93565b9150509295509295909350565b6000806000806060858703121561642157600080fd5b8435935061643160208601615ccd565b925060408501356001600160401b0381111561644c57600080fd5b61645887828801615cde565b95989497509550505050565b6000806000806080858703121561647a57600080fd5b84356001600160401b038082111561649157600080fd5b61649d88838901615f95565b955060208701359150808211156164b357600080fd5b6164bf88838901616004565b945060408701359150808211156164d557600080fd5b6164e18883890161605f565b935060608701359150808211156164f757600080fd5b50615f6687828801615d93565b60ff60f81b8816815260e06020820152600061652360e0830189615eb3565b82810360408401526165358189615eb3565b606084018890526001600160a01b038716608085015260a0840186905283810360c085015290506110ab81856161ce565b60008060006060848603121561657b57600080fd5b833561658681615ef2565b92506020840135915060408401356001600160401b038111156165a857600080fd5b6165b486828701615d93565b9150509250925092565b600080600080604085870312156165d457600080fd5b84356001600160401b03808211156165eb57600080fd5b6165f788838901615cde565b9096509450602087013591508082111561661057600080fd5b5061645887828801615cde565b600080600080600060a0868803121561663557600080fd5b853561664081615ef2565b9450602086013561665081615ef2565b935060408601356001600160401b038082111561666c57600080fd5b61667889838a01616004565b9450606088013591508082111561668e57600080fd5b61669a89838a01616004565b935060808801359150808211156163f157600080fd5b600080600080606085870312156166c657600080fd5b84356166d181615ef2565b93506020850135925060408501356001600160401b0381111561644c57600080fd5b60006020828403121561670557600080fd5b81356001600160401b038116811461206657600080fd5b600080600080600060a0868803121561673457600080fd5b85356001600160401b038082111561674b57600080fd5b61675789838a01615f95565b9650602088013591508082111561676d57600080fd5b61677989838a01616004565b9550604088013591508082111561678f57600080fd5b61679b89838a0161605f565b945060608801359150808211156167b157600080fd5b61669a89838a0161605f565b600080604083850312156167d057600080fd5b82356167db81615ef2565b946020939093013593505050565b600080600080600060a0868803121561680157600080fd5b853561680c81615ef2565b9450602086013561681c81615ef2565b9350604086013592506060860135915060808601356001600160401b0381111561684557600080fd5b6163fe88828901615d93565b8183823760009101908152919050565b60208082526018908201527f476f7665726e6f723a206f6e6c79476f7665726e616e63650000000000000000604082015260600190565b600181811c908216806168ac57607f821691505b6020821081036168cc57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201616910576169106168e8565b5060010190565b65ffffffffffff828116828216039080821115616936576169366168e8565b5092915050565b60208082526021908201527f476f7665726e6f723a2070726f706f73616c206e6f74207375636365737366756040820152601b60fa1b606082015260800190565b60006020828403121561699057600080fd5b81516001600160401b038111156169a657600080fd5b8201601f810184136169b757600080fd5b80516169c5615db282615d6c565b8181528560208385010111156169da57600080fd5b611349826020830160208601615e8f565b81810381811115610fbb57610fbb6168e8565b634e487b7160e01b600052601260045260246000fd5b600082616a3157634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215616a4857600080fd5b815165ffffffffffff8116811461206657600080fd5b600060208284031215616a7057600080fd5b5051919050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b604081526000616ab4604083018688616a77565b8281036020840152611768818587616a77565b608081526000616ada608083018761618a565b8281036020840152616aec81876161ce565b90508281036040840152616b0081866161fe565b91505082606083015295945050505050565b8082028115828204841417610fbb57610fbb6168e8565b60a081526000616b3c60a083018861618a565b8281036020840152616b4e81886161ce565b90508281036040840152616b6281876161fe565b60608401959095525050608001529392505050565b60c081526000616b8a60c083018961618a565b8281036020840152616b9c81896161ce565b90508281036040840152616bb081886161fe565b60608401969096525050608081019290925260a0909101529392505050565b80820180821115610fbb57610fbb6168e8565b600060208284031215616bf457600080fd5b8151801515811461206657600080fd5b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60008251616c61818460208701615e8f565b9190910192915050565b6001600160e01b0319831681528151600090616c8e816004850160208701615e8f565b919091016004019392505050565b6001600160401b03818116838216019080821115616936576169366168e8565b60208082526021908201527f476f7665726e6f723a20696e76616c69642070726f706f73616c206c656e67746040820152600d60fb1b606082015260800190565b8981526001600160a01b038916602082015261012060408201819052600090616d288382018b61618a565b90508281036060840152616d3c818a6161ce565b90508281036080840152616d5081896161fe565b905082810360a0840152616d6481886161fe565b90508560c08401528460e0840152828103610100840152616d858185615eb3565b9c9b505050505050505050505050565b601f821115613bcc57600081815260208120601f850160051c81016020861015616dbc5750805b601f850160051c820191505b818110156117a157828155600101616dc8565b81516001600160401b03811115616df457616df4615d26565b616e0881616e028454616898565b84616d95565b602080601f831160018114616e3d5760008415616e255750858301515b600019600386901b1c1916600185901b1785556117a1565b600085815260208120601f198616915b82811015616e6c57888601518255948401946001909101908401616e4d565b5085821015616e8a5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b84815260ff84166020820152826040820152608060608201526000611b586080830184615eb3565b85815260ff8516602082015283604082015260a060608201526000616eea60a0830185615eb3565b8281036080840152611c718185615eb356fe476f7665726e6f723a2072656c617920726576657274656420776974686f7574206d657373616765a164736f6c6343000811000a", }, { ContractAddr: common.HexToAddress(GovTokenContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/cfc0bd1127186a917ddc38fd38d22903034d3f0b", - Code: "608060405234801561001057600080fd5b50600436106101f05760003560e01c806370a082311161010f5780639ab24eb0116100a2578063d505accf11610071578063d505accf1461047e578063dd62ed3e14610491578063e5ed5b1e146104a4578063f1127ed8146104b757600080fd5b80639ab24eb014610432578063a457c2d714610445578063a9059cbb14610458578063c3cda5201461046b57600080fd5b806384b0196e116100de57806384b0196e146103dd5780638e539e8c146103f857806391ddadf41461040b57806395d89b411461042a57600080fd5b806370a082311461038657806379cc6790146103af5780637ecebe00146103c25780638129fc1c146103d557600080fd5b806339509351116101875780634bf5d7e9116101565780634bf5d7e9146102ff578063587cde1e146103075780635c19a95c1461034b5780636fcfff451461035e57600080fd5b806339509351146102b35780633a46b1a8146102c657806342966c68146102d957806344840775146102ec57600080fd5b806323b872dd116101c357806323b872dd146102745780633041949b14610287578063313ce5671461029c5780633644e515146102ab57600080fd5b8063039c91fc146101f557806306fdde0314610234578063095ea7b31461024957806318160ddd1461026c575b600080fd5b610221610203366004612099565b61013060209081526000928352604080842090915290825290205481565b6040519081526020015b60405180910390f35b61023c6104f4565b60405161022b9190612112565b61025c610257366004612125565b610586565b604051901515815260200161022b565b603554610221565b61025c61028236600461214f565b6105a0565b61029a610295366004612099565b6105c4565b005b6040516012815260200161022b565b6102216105fd565b61025c6102c1366004612125565b61060c565b6102216102d4366004612125565b61062e565b61029a6102e736600461218b565b6106b3565b61029a6102fa3660046121a4565b6106c0565b61023c610739565b610333610315366004612228565b6001600160a01b03908116600090815260fe60205260409020541690565b6040516001600160a01b03909116815260200161022b565b61029a610359366004612228565b6107d1565b61037161036c366004612228565b6107db565b60405163ffffffff909116815260200161022b565b610221610394366004612228565b6001600160a01b031660009081526033602052604090205490565b61029a6103bd366004612125565b6107fd565b6102216103d0366004612228565b610812565b61029a610830565b6103e5610a10565b60405161022b9796959493929190612243565b61022161040636600461218b565b610aae565b610413610b16565b60405165ffffffffffff909116815260200161022b565b61023c610b21565b610221610440366004612228565b610b30565b61025c610453366004612125565b610bb2565b61025c610466366004612125565b610c2d565b61029a6104793660046122ea565b610c3b565b61029a61048c366004612342565b610d71565b61022161049f366004612099565b610ed5565b61029a6104b2366004612099565b610f00565b6104ca6104c53660046123ac565b610f30565b60408051825163ffffffff1681526020928301516001600160e01b0316928101929092520161022b565b606060368054610503906123ec565b80601f016020809104026020016040519081016040528092919081815260200182805461052f906123ec565b801561057c5780601f106105515761010080835404028352916020019161057c565b820191906000526020600020905b81548152906001019060200180831161055f57829003601f168201915b5050505050905090565b600033610594818585610fb4565b60019150505b92915050565b6000336105ae858285610fcd565b6105b9858585611047565b506001949350505050565b33612002146105ef57604051630f22c43960e41b815261200260048201526024015b60405180910390fd5b6105f98282611060565b5050565b6000610607611190565b905090565b60003361059481858561061f8383610ed5565b6106299190612436565b610fb4565b6000610638610b16565b65ffffffffffff16821061068a5760405162461bcd60e51b815260206004820152601960248201527804552433230566f7465733a20667574757265206c6f6f6b757603c1b60448201526064016105e6565b6001600160a01b038316600090815260ff602052604090206106ac908361119a565b9392505050565b6106bd3382611283565b50565b33612002146106e657604051630f22c43960e41b815261200260048201526024016105e6565b8160005b818110156107325761072285858381811061070757610707612449565b905060200201602081019061071c9190612228565b84611060565b61072b8161245f565b90506106ea565b5050505050565b606043610744610b16565b65ffffffffffff16146107995760405162461bcd60e51b815260206004820152601d60248201527f4552433230566f7465733a2062726f6b656e20636c6f636b206d6f646500000060448201526064016105e6565b5060408051808201909152601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c74000000602082015290565b6106bd338261128d565b6001600160a01b038116600090815260ff602052604081205461059a90611307565b610808823383610fcd565b6105f98282611283565b6001600160a01b038116600090815260cb602052604081205461059a565b600054610100900460ff16158080156108505750600054600160ff909116105b8061086a5750303b15801561086a575060005460ff166001145b6108cd5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016105e6565b6000805460ff1916600117905580156108f0576000805461ff0019166101001790555b3341146109105760405163022d8c9560e31b815260040160405180910390fd5b3a1561092f576040516383f1b1d360e01b815260040160405180910390fd5b610983604051806040016040528060148152602001732129a19023b7bb32b93730b731b2902a37b5b2b760611b8152506040518060400160405280600681526020016533b7bb21272160d11b815250611370565b61098b6113a1565b6109c0604051806040016040528060148152602001732129a19023b7bb32b93730b731b2902a37b5b2b760611b8152506113ca565b6109c86113a1565b80156106bd576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b6000606080600080600060606097546000801b148015610a305750609854155b610a745760405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b60448201526064016105e6565b610a7c611414565b610a84611423565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b6000610ab8610b16565b65ffffffffffff168210610b0a5760405162461bcd60e51b815260206004820152601960248201527804552433230566f7465733a20667574757265206c6f6f6b757603c1b60448201526064016105e6565b61059a6101008361119a565b600061060743611432565b606060378054610503906123ec565b6001600160a01b038116600090815260ff60205260408120548015610b9f576001600160a01b038316600090815260ff6020526040902080546000198301908110610b7d57610b7d612449565b60009182526020909120015464010000000090046001600160e01b0316610ba2565b60005b6001600160e01b03169392505050565b60003381610bc08286610ed5565b905083811015610c205760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016105e6565b6105b98286868403610fb4565b600033610594818585611047565b83421115610c8b5760405162461bcd60e51b815260206004820152601d60248201527f4552433230566f7465733a207369676e6174757265206578706972656400000060448201526064016105e6565b604080517fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60208201526001600160a01b038816918101919091526060810186905260808101859052600090610d0590610cfd9060a00160405160208183030381529060405280519060200120611499565b8585856114c6565b9050610d10816114ee565b8614610d5e5760405162461bcd60e51b815260206004820152601960248201527f4552433230566f7465733a20696e76616c6964206e6f6e63650000000000000060448201526064016105e6565b610d68818861128d565b50505050505050565b83421115610dc15760405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e6500000060448201526064016105e6565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9888888610df08c6114ee565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090506000610e4b82611499565b90506000610e5b828787876114c6565b9050896001600160a01b0316816001600160a01b031614610ebe5760405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e6174757265000060448201526064016105e6565b610ec98a8a8a610fb4565b50505050505050505050565b6001600160a01b03918216600090815260346020908152604080832093909416825291909152205490565b3361200214610f2657604051630f22c43960e41b815261200260048201526024016105e6565b6105f9828261128d565b60408051808201909152600080825260208201526001600160a01b038316600090815260ff60205260409020805463ffffffff8416908110610f7457610f74612449565b60009182526020918290206040805180820190915291015463ffffffff8116825264010000000090046001600160e01b0316918101919091529392505050565b604051632028747160e01b815260040160405180910390fd5b6000610fd98484610ed5565b9050600019811461104157818110156110345760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016105e6565b6110418484848403610fb4565b50505050565b604051638cd22d1960e01b815260040160405180910390fd5b604051630913db4760e01b81526001600160a01b03828116600483015260009190841690630913db4790602401602060405180830381865afa1580156110aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110ce919061248e565b6001600160a01b03808516600090815261013060209081526040808320938716835292905220549091508181101561114757600061110c82846124a7565b6001600160a01b0380871660009081526101306020908152604080832093891683529290522084905590506111418482611516565b50611041565b8181111561104157600061115b83836124a7565b6001600160a01b0380871660009081526101306020908152604080832093891683529290522084905590506107328482611283565b6000610607611520565b8154600090818160058111156111f45760006111b584611594565b6111bf90856124a7565b600088815260209020909150869082015463ffffffff1611156111e4578091506111f2565b6111ef816001612436565b92505b505b80821015611241576000611208838361167c565b600088815260209020909150869082015463ffffffff16111561122d5780915061123b565b611238816001612436565b92505b506111f4565b801561126d576000868152602090208101600019015464010000000090046001600160e01b0316611270565b60005b6001600160e01b03169695505050505050565b6105f98282611697565b6001600160a01b03828116600081815260fe6020818152604080842080546033845282862054949093528787166001600160a01b03198416811790915590519190951694919391928592917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a46110418284836116b0565b600063ffffffff82111561136c5760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201526532206269747360d01b60648201526084016105e6565b5090565b600054610100900460ff166113975760405162461bcd60e51b81526004016105e6906124ba565b6105f982826117ee565b600054610100900460ff166113c85760405162461bcd60e51b81526004016105e6906124ba565b565b600054610100900460ff166113f15760405162461bcd60e51b81526004016105e6906124ba565b6106bd81604051806040016040528060018152602001603160f81b81525061182e565b606060998054610503906123ec565b6060609a8054610503906123ec565b600065ffffffffffff82111561136c5760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203460448201526538206269747360d01b60648201526084016105e6565b600061059a6114a6611190565b8360405161190160f01b8152600281019290925260228201526042902090565b60008060006114d78787878761187d565b915091506114e481611941565b5095945050505050565b6001600160a01b038116600090815260cb602052604090208054600181018255905b50919050565b6105f98282611a8b565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f61154b611b16565b611553611b6f565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b6000816000036115a657506000919050565b600060016115b384611ba0565b901c6001901b905060018184816115cc576115cc612505565b048201901c905060018184816115e4576115e4612505565b048201901c905060018184816115fc576115fc612505565b048201901c9050600181848161161457611614612505565b048201901c9050600181848161162c5761162c612505565b048201901c9050600181848161164457611644612505565b048201901c9050600181848161165c5761165c612505565b048201901c90506106ac8182858161167657611676612505565b04611c34565b600061168b600284841861251b565b6106ac90848416612436565b6116a18282611c4a565b611041610100611d8583611d91565b816001600160a01b0316836001600160a01b0316141580156116d25750600081115b156117e9576001600160a01b03831615611760576001600160a01b038316600090815260ff60205260408120819061170d90611d8585611d91565b91509150846001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248383604051611755929190918252602082015260400190565b60405180910390a250505b6001600160a01b038216156117e9576001600160a01b038216600090815260ff60205260408120819061179690611f0685611d91565b91509150836001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72483836040516117de929190918252602082015260400190565b60405180910390a250505b505050565b600054610100900460ff166118155760405162461bcd60e51b81526004016105e6906124ba565b6036611821838261258b565b5060376117e9828261258b565b600054610100900460ff166118555760405162461bcd60e51b81526004016105e6906124ba565b6099611861838261258b565b50609a61186e828261258b565b50506000609781905560985550565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156118b45750600090506003611938565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611908573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661193157600060019250925050611938565b9150600090505b94509492505050565b60008160048111156119555761195561264b565b0361195d5750565b60018160048111156119715761197161264b565b036119be5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016105e6565b60028160048111156119d2576119d261264b565b03611a1f5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016105e6565b6003816004811115611a3357611a3361264b565b036106bd5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016105e6565b611a958282611f12565b6035546001600160e01b031015611b075760405162461bcd60e51b815260206004820152603060248201527f4552433230566f7465733a20746f74616c20737570706c79207269736b73206f60448201526f766572666c6f77696e6720766f74657360801b60648201526084016105e6565b611041610100611f0683611d91565b600080611b21611414565b805190915015611b38578051602090910120919050565b6097548015611b475792915050565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4709250505090565b600080611b7a611423565b805190915015611b91578051602090910120919050565b6098548015611b475792915050565b600080608083901c15611bb557608092831c92015b604083901c15611bc757604092831c92015b602083901c15611bd957602092831c92015b601083901c15611beb57601092831c92015b600883901c15611bfd57600892831c92015b600483901c15611c0f57600492831c92015b600283901c15611c2157600292831c92015b600183901c1561059a5760010192915050565b6000818310611c4357816106ac565b5090919050565b6001600160a01b038216611caa5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016105e6565b6001600160a01b03821660009081526033602052604090205481811015611d1e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016105e6565b6001600160a01b03831660008181526033602090815260408083208686039055603580548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36117e983600084611fd7565b60006106ac82846124a7565b82546000908190818115611dde5760008781526020902082016000190160408051808201909152905463ffffffff8116825264010000000090046001600160e01b03166020820152611df3565b60408051808201909152600080825260208201525b905080602001516001600160e01b03169350611e1384868863ffffffff16565b9250600082118015611e3d5750611e28610b16565b65ffffffffffff16816000015163ffffffff16145b15611e8257611e4b83611fe2565b60008881526020902083016000190180546001600160e01b03929092166401000000000263ffffffff909216919091179055611efc565b866040518060400160405280611ea6611e99610b16565b65ffffffffffff16611307565b63ffffffff168152602001611eba86611fe2565b6001600160e01b0390811690915282546001810184556000938452602093849020835194909301519091166401000000000263ffffffff909316929092179101555b5050935093915050565b60006106ac8284612436565b6001600160a01b038216611f685760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016105e6565b8060356000828254611f7a9190612436565b90915550506001600160a01b0382166000818152603360209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36105f9600083835b6117e983838361204b565b60006001600160e01b0382111561136c5760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20326044820152663234206269747360c81b60648201526084016105e6565b6001600160a01b03838116600090815260fe60205260408082205485841683529120546117e9929182169116836116b0565b80356001600160a01b038116811461209457600080fd5b919050565b600080604083850312156120ac57600080fd5b6120b58361207d565b91506120c36020840161207d565b90509250929050565b6000815180845260005b818110156120f2576020818501810151868301820152016120d6565b506000602082860101526020601f19601f83011685010191505092915050565b6020815260006106ac60208301846120cc565b6000806040838503121561213857600080fd5b6121418361207d565b946020939093013593505050565b60008060006060848603121561216457600080fd5b61216d8461207d565b925061217b6020850161207d565b9150604084013590509250925092565b60006020828403121561219d57600080fd5b5035919050565b6000806000604084860312156121b957600080fd5b833567ffffffffffffffff808211156121d157600080fd5b818601915086601f8301126121e557600080fd5b8135818111156121f457600080fd5b8760208260051b850101111561220957600080fd5b60209283019550935061221f918601905061207d565b90509250925092565b60006020828403121561223a57600080fd5b6106ac8261207d565b60ff60f81b881681526000602060e08184015261226360e084018a6120cc565b8381036040850152612275818a6120cc565b606085018990526001600160a01b038816608086015260a0850187905284810360c0860152855180825283870192509083019060005b818110156122c7578351835292840192918401916001016122ab565b50909c9b505050505050505050505050565b803560ff8116811461209457600080fd5b60008060008060008060c0878903121561230357600080fd5b61230c8761207d565b95506020870135945060408701359350612328606088016122d9565b92506080870135915060a087013590509295509295509295565b600080600080600080600060e0888a03121561235d57600080fd5b6123668861207d565b96506123746020890161207d565b95506040880135945060608801359350612390608089016122d9565b925060a0880135915060c0880135905092959891949750929550565b600080604083850312156123bf57600080fd5b6123c88361207d565b9150602083013563ffffffff811681146123e157600080fd5b809150509250929050565b600181811c9082168061240057607f821691505b60208210810361151057634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b8082018082111561059a5761059a612420565b634e487b7160e01b600052603260045260246000fd5b60006001820161247157612471612420565b5060010190565b634e487b7160e01b600052604160045260246000fd5b6000602082840312156124a057600080fd5b5051919050565b8181038181111561059a5761059a612420565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b634e487b7160e01b600052601260045260246000fd5b60008261253857634e487b7160e01b600052601260045260246000fd5b500490565b601f8211156117e957600081815260208120601f850160051c810160208610156125645750805b601f850160051c820191505b8181101561258357828155600101612570565b505050505050565b815167ffffffffffffffff8111156125a5576125a5612478565b6125b9816125b384546123ec565b8461253d565b602080601f8311600181146125ee57600084156125d65750858301515b600019600386901b1c1916600185901b178555612583565b600085815260208120601f198616915b8281101561261d578886015182559484019460019091019084016125fe565b508582101561263b5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052602160045260246000fdfea164736f6c6343000811000a", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/9d09d0a3d6332460a810188261ec8195e05aa218", + Code: "608060405234801561001057600080fd5b50600436106102065760003560e01c806370a082311161011a5780639ab24eb0116100ad578063d505accf1161007c578063d505accf1461049d578063dd62ed3e146104b0578063e5ed5b1e146104c3578063f1127ed8146104d6578063f1fad1041461051357600080fd5b80639ab24eb014610451578063a457c2d714610464578063a9059cbb14610477578063c3cda5201461048a57600080fd5b806384b0196e116100e957806384b0196e146103fc5780638e539e8c1461041757806391ddadf41461042a57806395d89b411461044957600080fd5b806370a08231146103aa57806379cc6790146103d35780637ecebe00146103e15780638129fc1c146103f457600080fd5b8063395093511161019d5780634bf5d7e91161016c5780634bf5d7e91461031b5780634bf6c88214610323578063587cde1e1461032b5780635c19a95c1461036f5780636fcfff451461038257600080fd5b806339509351146102cf5780633a46b1a8146102e257806342966c68146102f5578063448407751461030857600080fd5b806323b872dd116101d957806323b872dd1461028a5780633041949b1461029d578063313ce567146102b25780633644e515146102c757600080fd5b8063039c91fc1461020b57806306fdde031461024a578063095ea7b31461025f57806318160ddd14610282575b600080fd5b6102376102193660046120c7565b61013060209081526000928352604080842090915290825290205481565b6040519081526020015b60405180910390f35b61025261051b565b6040516102419190612140565b61027261026d366004612153565b6105ad565b6040519015158152602001610241565b603554610237565b61027261029836600461217d565b6105c7565b6102b06102ab3660046120c7565b6105eb565b005b60125b60405160ff9091168152602001610241565b610237610624565b6102726102dd366004612153565b610633565b6102376102f0366004612153565b610655565b6102b06103033660046121b9565b6106da565b6102b06103163660046121d2565b6106f3565b61025261076c565b6102b5600881565b610357610339366004612256565b6001600160a01b03908116600090815260fe60205260409020541690565b6040516001600160a01b039091168152602001610241565b6102b061037d366004612256565b610804565b610395610390366004612256565b610811565b60405163ffffffff9091168152602001610241565b6102376103b8366004612256565b6001600160a01b031660009081526033602052604090205490565b6102b0610303366004612153565b6102376103ef366004612256565b610833565b6102b0610851565b610404610a31565b6040516102419796959493929190612271565b6102376104253660046121b9565b610acf565b610432610b37565b60405165ffffffffffff9091168152602001610241565b610252610b42565b61023761045f366004612256565b610b51565b610272610472366004612153565b610bd3565b610272610485366004612153565b610c4e565b6102b0610498366004612318565b610c5c565b6102b06104ab366004612370565b610d92565b6102376104be3660046120c7565b610ef6565b6102b06104d13660046120c7565b610f21565b6104e96104e43660046123da565b610f51565b60408051825163ffffffff1681526020928301516001600160e01b03169281019290925201610241565b6102b5601181565b60606036805461052a9061241a565b80601f01602080910402602001604051908101604052809291908181526020018280546105569061241a565b80156105a35780601f10610578576101008083540402835291602001916105a3565b820191906000526020600020905b81548152906001019060200180831161058657829003601f168201915b5050505050905090565b6000336105bb818585610fd5565b60019150505b92915050565b6000336105d5858285610fee565b6105e0858585611068565b506001949350505050565b336120021461061657604051630f22c43960e41b815261200260048201526024015b60405180910390fd5b6106208282611081565b5050565b600061062e6111b1565b905090565b6000336105bb8185856106468383610ef6565b6106509190612464565b610fd5565b600061065f610b37565b65ffffffffffff1682106106b15760405162461bcd60e51b815260206004820152601960248201527804552433230566f7465733a20667574757265206c6f6f6b757603c1b604482015260640161060d565b6001600160a01b038316600090815260ff602052604090206106d390836111bb565b9392505050565b60405163e5d8776760e01b815260040160405180910390fd5b336120021461071957604051630f22c43960e41b8152612002600482015260240161060d565b8160005b818110156107655761075585858381811061073a5761073a612477565b905060200201602081019061074f9190612256565b84611081565b61075e8161248d565b905061071d565b5050505050565b606043610777610b37565b65ffffffffffff16146107cc5760405162461bcd60e51b815260206004820152601d60248201527f4552433230566f7465733a2062726f6b656e20636c6f636b206d6f6465000000604482015260640161060d565b5060408051808201909152601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c74000000602082015290565b61080e33826112a4565b50565b6001600160a01b038116600090815260ff60205260408120546105c19061131e565b6001600160a01b038116600090815260cb60205260408120546105c1565b600054610100900460ff16158080156108715750600054600160ff909116105b8061088b5750303b15801561088b575060005460ff166001145b6108ee5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161060d565b6000805460ff191660011790558015610911576000805461ff0019166101001790555b3341146109315760405163022d8c9560e31b815260040160405180910390fd5b3a15610950576040516383f1b1d360e01b815260040160405180910390fd5b6109a4604051806040016040528060148152602001732129a19023b7bb32b93730b731b2902a37b5b2b760611b8152506040518060400160405280600681526020016533b7bb21272160d11b815250611387565b6109ac6113b8565b6109e1604051806040016040528060148152602001732129a19023b7bb32b93730b731b2902a37b5b2b760611b8152506113e1565b6109e96113b8565b801561080e576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b6000606080600080600060606097546000801b148015610a515750609854155b610a955760405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b604482015260640161060d565b610a9d61142b565b610aa561143a565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b6000610ad9610b37565b65ffffffffffff168210610b2b5760405162461bcd60e51b815260206004820152601960248201527804552433230566f7465733a20667574757265206c6f6f6b757603c1b604482015260640161060d565b6105c1610100836111bb565b600061062e43611449565b60606037805461052a9061241a565b6001600160a01b038116600090815260ff60205260408120548015610bc0576001600160a01b038316600090815260ff6020526040902080546000198301908110610b9e57610b9e612477565b60009182526020909120015464010000000090046001600160e01b0316610bc3565b60005b6001600160e01b03169392505050565b60003381610be18286610ef6565b905083811015610c415760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161060d565b6105e08286868403610fd5565b6000336105bb818585611068565b83421115610cac5760405162461bcd60e51b815260206004820152601d60248201527f4552433230566f7465733a207369676e61747572652065787069726564000000604482015260640161060d565b604080517fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60208201526001600160a01b038816918101919091526060810186905260808101859052600090610d2690610d1e9060a001604051602081830303815290604052805190602001206114b0565b8585856114dd565b9050610d3181611505565b8614610d7f5760405162461bcd60e51b815260206004820152601960248201527f4552433230566f7465733a20696e76616c6964206e6f6e636500000000000000604482015260640161060d565b610d8981886112a4565b50505050505050565b83421115610de25760405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e65000000604482015260640161060d565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9888888610e118c611505565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090506000610e6c826114b0565b90506000610e7c828787876114dd565b9050896001600160a01b0316816001600160a01b031614610edf5760405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e61747572650000604482015260640161060d565b610eea8a8a8a610fd5565b50505050505050505050565b6001600160a01b03918216600090815260346020908152604080832093909416825291909152205490565b3361200214610f4757604051630f22c43960e41b8152612002600482015260240161060d565b61062082826112a4565b60408051808201909152600080825260208201526001600160a01b038316600090815260ff60205260409020805463ffffffff8416908110610f9557610f95612477565b60009182526020918290206040805180820190915291015463ffffffff8116825264010000000090046001600160e01b0316918101919091529392505050565b604051632028747160e01b815260040160405180910390fd5b6000610ffa8484610ef6565b9050600019811461106257818110156110555760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161060d565b6110628484848403610fd5565b50505050565b604051638cd22d1960e01b815260040160405180910390fd5b604051630913db4760e01b81526001600160a01b03828116600483015260009190841690630913db4790602401602060405180830381865afa1580156110cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110ef91906124bc565b6001600160a01b03808516600090815261013060209081526040808320938716835292905220549091508181101561116857600061112d82846124d5565b6001600160a01b038087166000908152610130602090815260408083209389168352929052208490559050611162848261152d565b50611062565b8181111561106257600061117c83836124d5565b6001600160a01b0380871660009081526101306020908152604080832093891683529290522084905590506107658482611537565b600061062e611541565b8154600090818160058111156112155760006111d6846115b5565b6111e090856124d5565b600088815260209020909150869082015463ffffffff16111561120557809150611213565b611210816001612464565b92505b505b80821015611262576000611229838361169d565b600088815260209020909150869082015463ffffffff16111561124e5780915061125c565b611259816001612464565b92505b50611215565b801561128e576000868152602090208101600019015464010000000090046001600160e01b0316611291565b60005b6001600160e01b03169695505050505050565b6001600160a01b03828116600081815260fe6020818152604080842080546033845282862054949093528787166001600160a01b03198416811790915590519190951694919391928592917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a46110628284836116b8565b600063ffffffff8211156113835760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201526532206269747360d01b606482015260840161060d565b5090565b600054610100900460ff166113ae5760405162461bcd60e51b815260040161060d906124e8565b61062082826117f6565b600054610100900460ff166113df5760405162461bcd60e51b815260040161060d906124e8565b565b600054610100900460ff166114085760405162461bcd60e51b815260040161060d906124e8565b61080e81604051806040016040528060018152602001603160f81b815250611836565b60606099805461052a9061241a565b6060609a805461052a9061241a565b600065ffffffffffff8211156113835760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203460448201526538206269747360d01b606482015260840161060d565b60006105c16114bd6111b1565b8360405161190160f01b8152600281019290925260228201526042902090565b60008060006114ee87878787611885565b915091506114fb81611949565b5095945050505050565b6001600160a01b038116600090815260cb602052604090208054600181018255905b50919050565b6106208282611a93565b6106208282611b1e565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f61156c611b37565b611574611b90565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b6000816000036115c757506000919050565b600060016115d484611bc1565b901c6001901b905060018184816115ed576115ed612533565b048201901c9050600181848161160557611605612533565b048201901c9050600181848161161d5761161d612533565b048201901c9050600181848161163557611635612533565b048201901c9050600181848161164d5761164d612533565b048201901c9050600181848161166557611665612533565b048201901c9050600181848161167d5761167d612533565b048201901c90506106d38182858161169757611697612533565b04611c55565b60006116ac6002848418612549565b6106d390848416612464565b816001600160a01b0316836001600160a01b0316141580156116da5750600081115b156117f1576001600160a01b03831615611768576001600160a01b038316600090815260ff60205260408120819061171590611c6b85611c77565b91509150846001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724838360405161175d929190918252602082015260400190565b60405180910390a250505b6001600160a01b038216156117f1576001600160a01b038216600090815260ff60205260408120819061179e90611dec85611c77565b91509150836001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72483836040516117e6929190918252602082015260400190565b60405180910390a250505b505050565b600054610100900460ff1661181d5760405162461bcd60e51b815260040161060d906124e8565b603661182983826125b9565b5060376117f182826125b9565b600054610100900460ff1661185d5760405162461bcd60e51b815260040161060d906124e8565b609961186983826125b9565b50609a61187682826125b9565b50506000609781905560985550565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156118bc5750600090506003611940565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611910573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661193957600060019250925050611940565b9150600090505b94509492505050565b600081600481111561195d5761195d612679565b036119655750565b600181600481111561197957611979612679565b036119c65760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640161060d565b60028160048111156119da576119da612679565b03611a275760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161060d565b6003816004811115611a3b57611a3b612679565b0361080e5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b606482015260840161060d565b611a9d8282611df8565b6035546001600160e01b031015611b0f5760405162461bcd60e51b815260206004820152603060248201527f4552433230566f7465733a20746f74616c20737570706c79207269736b73206f60448201526f766572666c6f77696e6720766f74657360801b606482015260840161060d565b611062610100611dec83611c77565b611b288282611ec1565b611062610100611c6b83611c77565b600080611b4261142b565b805190915015611b59578051602090910120919050565b6097548015611b685792915050565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4709250505090565b600080611b9b61143a565b805190915015611bb2578051602090910120919050565b6098548015611b685792915050565b600080608083901c15611bd657608092831c92015b604083901c15611be857604092831c92015b602083901c15611bfa57602092831c92015b601083901c15611c0c57601092831c92015b600883901c15611c1e57600892831c92015b600483901c15611c3057600492831c92015b600283901c15611c4257600292831c92015b600183901c156105c15760010192915050565b6000818310611c6457816106d3565b5090919050565b60006106d382846124d5565b82546000908190818115611cc45760008781526020902082016000190160408051808201909152905463ffffffff8116825264010000000090046001600160e01b03166020820152611cd9565b60408051808201909152600080825260208201525b905080602001516001600160e01b03169350611cf984868863ffffffff16565b9250600082118015611d235750611d0e610b37565b65ffffffffffff16816000015163ffffffff16145b15611d6857611d3183611ffc565b60008881526020902083016000190180546001600160e01b03929092166401000000000263ffffffff909216919091179055611de2565b866040518060400160405280611d8c611d7f610b37565b65ffffffffffff1661131e565b63ffffffff168152602001611da086611ffc565b6001600160e01b0390811690915282546001810184556000938452602093849020835194909301519091166401000000000263ffffffff909316929092179101555b5050935093915050565b60006106d38284612464565b6001600160a01b038216611e4e5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161060d565b8060356000828254611e609190612464565b90915550506001600160a01b0382166000818152603360209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a361062060008383612065565b6001600160a01b038216611f215760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161060d565b6001600160a01b03821660009081526033602052604090205481811015611f955760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161060d565b6001600160a01b03831660008181526033602090815260408083208686039055603580548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36117f183600084612065565b60006001600160e01b038211156113835760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20326044820152663234206269747360c81b606482015260840161060d565b6117f18383836001600160a01b03808416600090815260fe60205260409020546117f191166001600160a01b03808516600090815260fe602052604090205416836116b8565b80356001600160a01b03811681146120c257600080fd5b919050565b600080604083850312156120da57600080fd5b6120e3836120ab565b91506120f1602084016120ab565b90509250929050565b6000815180845260005b8181101561212057602081850181015186830182015201612104565b506000602082860101526020601f19601f83011685010191505092915050565b6020815260006106d360208301846120fa565b6000806040838503121561216657600080fd5b61216f836120ab565b946020939093013593505050565b60008060006060848603121561219257600080fd5b61219b846120ab565b92506121a9602085016120ab565b9150604084013590509250925092565b6000602082840312156121cb57600080fd5b5035919050565b6000806000604084860312156121e757600080fd5b833567ffffffffffffffff808211156121ff57600080fd5b818601915086601f83011261221357600080fd5b81358181111561222257600080fd5b8760208260051b850101111561223757600080fd5b60209283019550935061224d91860190506120ab565b90509250925092565b60006020828403121561226857600080fd5b6106d3826120ab565b60ff60f81b881681526000602060e08184015261229160e084018a6120fa565b83810360408501526122a3818a6120fa565b606085018990526001600160a01b038816608086015260a0850187905284810360c0860152855180825283870192509083019060005b818110156122f5578351835292840192918401916001016122d9565b50909c9b505050505050505050505050565b803560ff811681146120c257600080fd5b60008060008060008060c0878903121561233157600080fd5b61233a876120ab565b9550602087013594506040870135935061235660608801612307565b92506080870135915060a087013590509295509295509295565b600080600080600080600060e0888a03121561238b57600080fd5b612394886120ab565b96506123a2602089016120ab565b955060408801359450606088013593506123be60808901612307565b925060a0880135915060c0880135905092959891949750929550565b600080604083850312156123ed57600080fd5b6123f6836120ab565b9150602083013563ffffffff8116811461240f57600080fd5b809150509250929050565b600181811c9082168061242e57607f821691505b60208210810361152757634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b808201808211156105c1576105c161244e565b634e487b7160e01b600052603260045260246000fd5b60006001820161249f5761249f61244e565b5060010190565b634e487b7160e01b600052604160045260246000fd5b6000602082840312156124ce57600080fd5b5051919050565b818103818111156105c1576105c161244e565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b634e487b7160e01b600052601260045260246000fd5b60008261256657634e487b7160e01b600052601260045260246000fd5b500490565b601f8211156117f157600081815260208120601f850160051c810160208610156125925750805b601f850160051c820191505b818110156125b15782815560010161259e565b505050505050565b815167ffffffffffffffff8111156125d3576125d36124a6565b6125e7816125e1845461241a565b8461256b565b602080601f83116001811461261c57600084156126045750858301515b600019600386901b1c1916600185901b1785556125b1565b600085815260208120601f198616915b8281101561264b5788860151825594840194600190910190840161262c565b50858210156126695787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052602160045260246000fdfea164736f6c6343000811000a", }, { ContractAddr: common.HexToAddress(TimelockContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/cfc0bd1127186a917ddc38fd38d22903034d3f0b", - Code: "6080604052600436106101d15760003560e01c80638129fc1c116100f7578063b1c5f42711610095578063d547741f11610064578063d547741f14610584578063e38335e5146105a4578063f23a6e61146105b7578063f27a0c92146105e357600080fd5b8063b1c5f427146104eb578063bc197c811461050b578063c4d252f514610537578063d45c44351461055757600080fd5b806391d14854116100d157806391d1485414610474578063a217fddf14610494578063ac431751146104a9578063b08e51c0146104c957600080fd5b80638129fc1c1461041d5780638f2a0bb0146104325780638f61f4f51461045257600080fd5b8063248a9ca31161016f57806336568abe1161013e57806336568abe1461039d578063584b153e146103bd57806364d62353146103dd5780638065657f146103fd57600080fd5b8063248a9ca3146102fd5780632ab0f5291461032d5780632f2ff15d1461035d57806331d507501461037d57600080fd5b80630d3cf6fc116101ab5780630d3cf6fc14610264578063134008d31461028657806313bc9f2014610299578063150b7a02146102b957600080fd5b806301d5062a146101dd57806301ffc9a7146101ff57806307bd02651461023457600080fd5b366101d857005b600080fd5b3480156101e957600080fd5b506101fd6101f8366004611a54565b6105f8565b005b34801561020b57600080fd5b5061021f61021a366004611ac8565b6106bc565b60405190151581526020015b60405180910390f35b34801561024057600080fd5b5061025660008051602061253b83398151915281565b60405190815260200161022b565b34801561027057600080fd5b506102566000805160206124fb83398151915281565b6101fd610294366004611af2565b6106e7565b3480156102a557600080fd5b5061021f6102b4366004611b5d565b61078a565b3480156102c557600080fd5b506102e46102d4366004611c2b565b630a85bd0160e11b949350505050565b6040516001600160e01b0319909116815260200161022b565b34801561030957600080fd5b50610256610318366004611b5d565b60009081526065602052604090206001015490565b34801561033957600080fd5b5061021f610348366004611b5d565b60009081526097602052604090205460011490565b34801561036957600080fd5b506101fd610378366004611c92565b6107b0565b34801561038957600080fd5b5061021f610398366004611b5d565b6107da565b3480156103a957600080fd5b506101fd6103b8366004611c92565b6107f3565b3480156103c957600080fd5b5061021f6103d8366004611b5d565b610876565b3480156103e957600080fd5b506101fd6103f8366004611b5d565b61088d565b34801561040957600080fd5b50610256610418366004611af2565b610931565b34801561042957600080fd5b506101fd610970565b34801561043e57600080fd5b506101fd61044d366004611d02565b610b22565b34801561045e57600080fd5b5061025660008051602061251b83398151915281565b34801561048057600080fd5b5061021f61048f366004611c92565b610ca3565b3480156104a057600080fd5b50610256600081565b3480156104b557600080fd5b506101fd6104c4366004611db3565b610cce565b3480156104d557600080fd5b5061025660008051602061255b83398151915281565b3480156104f757600080fd5b50610256610506366004611e1e565b610eb8565b34801561051757600080fd5b506102e4610526366004611f45565b63bc197c8160e01b95945050505050565b34801561054357600080fd5b506101fd610552366004611b5d565b610efd565b34801561056357600080fd5b50610256610572366004611b5d565b60009081526097602052604090205490565b34801561059057600080fd5b506101fd61059f366004611c92565b610fc0565b6101fd6105b2366004611e1e565b610fe5565b3480156105c357600080fd5b506102e46105d2366004611fee565b63f23a6e6160e01b95945050505050565b3480156105ef57600080fd5b50609854610256565b60008051602061251b8339815191526106108161115d565b6000610620898989898989610931565b905061062c8184611167565b6000817f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8b8b8b8b8b8a6040516106689695949392919061207b565b60405180910390a383156106b157807f20fda5fd27a1ea7bf5b9567f143ac5470bb059374a27e8f67cb44f946f6d0387856040516106a891815260200190565b60405180910390a25b505050505050505050565b60006001600160e01b03198216630271189760e51b14806106e157506106e182611256565b92915050565b60008051602061253b833981519152610701816000610ca3565b61070f5761070f813361128b565b600061071f888888888888610931565b905061072b81856112e4565b6107378888888861137f565b6000817fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b588a8a8a8a60405161076f94939291906120b8565b60405180910390a361078081611452565b5050505050505050565b6000818152609760205260408120546001811180156107a95750428111155b9392505050565b6000828152606560205260409020600101546107cb8161115d565b6107d5838361148b565b505050565b60008181526097602052604081205481905b1192915050565b6001600160a01b03811633146108685760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b6108728282611511565b5050565b6000818152609760205260408120546001906107ec565b3330146108f05760405162461bcd60e51b815260206004820152602b60248201527f54696d656c6f636b436f6e74726f6c6c65723a2063616c6c6572206d7573742060448201526a62652074696d656c6f636b60a81b606482015260840161085f565b60985460408051918252602082018390527f11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d5910160405180910390a1609855565b600086868686868660405160200161094e9695949392919061207b565b6040516020818303038152906040528051906020012090509695505050505050565b600054610100900460ff16158080156109905750600054600160ff909116105b806109aa5750303b1580156109aa575060005460ff166001145b610a0d5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161085f565b6000805460ff191660011790558015610a30576000805461ff0019166101001790555b334114610a505760405163022d8c9560e31b815260040160405180910390fd5b3a15610a6f576040516383f1b1d360e01b815260040160405180910390fd5b6040805160018082528183019092526000916020808301908036833701905050905061200481600081518110610aa757610aa76120ea565b60200260200101906001600160a01b031690816001600160a01b031681525050610ad8620151808283612004611578565b508015610b1f576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b60008051602061251b833981519152610b3a8161115d565b888714610b595760405162461bcd60e51b815260040161085f90612100565b888514610b785760405162461bcd60e51b815260040161085f90612100565b6000610b8a8b8b8b8b8b8b8b8b610eb8565b9050610b968184611167565b60005b8a811015610c545780827f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8e8e85818110610bd657610bd66120ea565b9050602002016020810190610beb9190612143565b8d8d86818110610bfd57610bfd6120ea565b905060200201358c8c87818110610c1657610c166120ea565b9050602002810190610c28919061215e565b8c8b604051610c3c9695949392919061207b565b60405180910390a3610c4d816121ba565b9050610b99565b508315610c9657807f20fda5fd27a1ea7bf5b9567f143ac5470bb059374a27e8f67cb44f946f6d038785604051610c8d91815260200190565b60405180910390a25b5050505050505050505050565b60009182526065602090815260408084206001600160a01b0393909316845291905290205460ff1690565b3361100714610cf457604051630f22c43960e41b8152611007600482015260240161085f565b610d57604051806040016040528060088152602001676d696e44656c617960c01b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506115b19050565b15610e545760208114610d855783838383604051630a5a604160e01b815260040161085f94939291906121d3565b604080516020601f8401819004810282018101909252828152600091610dc691858580838501838280828437600092019190915250929392505061160a9050565b9050801580610dd757506212750081115b15610dfd5784848484604051630a5a604160e01b815260040161085f94939291906121d3565b6040516364d6235360e01b81526004810182905230906364d6235390602401600060405180830381600087803b158015610e3657600080fd5b505af1158015610e4a573d6000803e3d6000fd5b5050505050610e75565b838383836040516325ee20d560e21b815260040161085f94939291906121d3565b7ff1ce9b2cbf50eeb05769a29e2543fd350cab46894a7dd9978a12d534bb20e63384848484604051610eaa94939291906121d3565b60405180910390a150505050565b60008888888888888888604051602001610ed998979695949392919061228b565b60405160208183030381529060405280519060200120905098975050505050505050565b60008051602061255b833981519152610f158161115d565b610f1e82610876565b610f845760405162461bcd60e51b815260206004820152603160248201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e2063616044820152701b9b9bdd0818994818d85b98d95b1b1959607a1b606482015260840161085f565b6000828152609760205260408082208290555183917fbaa1eb22f2a492ba1a5fea61b8df4d27c6c8b5f3971e63bb58fa14ff72eedb7091a25050565b600082815260656020526040902060010154610fdb8161115d565b6107d58383611511565b60008051602061253b833981519152610fff816000610ca3565b61100d5761100d813361128b565b87861461102c5760405162461bcd60e51b815260040161085f90612100565b87841461104b5760405162461bcd60e51b815260040161085f90612100565b600061105d8a8a8a8a8a8a8a8a610eb8565b905061106981856112e4565b60005b898110156111475760008b8b83818110611088576110886120ea565b905060200201602081019061109d9190612143565b905060008a8a848181106110b3576110b36120ea565b9050602002013590503660008a8a868181106110d1576110d16120ea565b90506020028101906110e3919061215e565b915091506110f38484848461137f565b84867fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b588686868660405161112a94939291906120b8565b60405180910390a35050505080611140906121ba565b905061106c565b5061115181611452565b50505050505050505050565b610b1f813361128b565b611170826107da565b156111d55760405162461bcd60e51b815260206004820152602f60248201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e20616c60448201526e1c9958591e481cd8da19591d5b1959608a1b606482015260840161085f565b6098548110156112365760405162461bcd60e51b815260206004820152602660248201527f54696d656c6f636b436f6e74726f6c6c65723a20696e73756666696369656e746044820152652064656c617960d01b606482015260840161085f565b611240814261232c565b6000928352609760205260409092209190915550565b60006001600160e01b03198216637965db0b60e01b14806106e157506301ffc9a760e01b6001600160e01b03198316146106e1565b6112958282610ca3565b610872576112a28161160f565b6112ad836020611621565b6040516020016112be929190612363565b60408051601f198184030181529082905262461bcd60e51b825261085f916004016123d8565b6112ed8261078a565b6113095760405162461bcd60e51b815260040161085f9061240b565b80158061132457506000818152609760205260409020546001145b6108725760405162461bcd60e51b815260206004820152602660248201527f54696d656c6f636b436f6e74726f6c6c65723a206d697373696e6720646570656044820152656e64656e637960d01b606482015260840161085f565b6000846001600160a01b031684848460405161139c929190612455565b60006040518083038185875af1925050503d80600081146113d9576040519150601f19603f3d011682016040523d82523d6000602084013e6113de565b606091505b505090508061144b5760405162461bcd60e51b815260206004820152603360248201527f54696d656c6f636b436f6e74726f6c6c65723a20756e6465726c79696e6720746044820152721c985b9cd858dd1a5bdb881c995d995c9d1959606a1b606482015260840161085f565b5050505050565b61145b8161078a565b6114775760405162461bcd60e51b815260040161085f9061240b565b600090815260976020526040902060019055565b6114958282610ca3565b6108725760008281526065602090815260408083206001600160a01b03851684529091529020805460ff191660011790556114cd3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b61151b8282610ca3565b156108725760008281526065602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b600054610100900460ff1661159f5760405162461bcd60e51b815260040161085f90612465565b6115ab848484846117bc565b50505050565b6000816040516020016115c491906124b0565b60405160208183030381529060405280519060200120836040516020016115eb91906124b0565b6040516020818303038152906040528051906020012014905092915050565b015190565b60606106e16001600160a01b03831660145b606060006116308360026124cc565b61163b90600261232c565b6001600160401b0381111561165257611652611b76565b6040519080825280601f01601f19166020018201604052801561167c576020820181803683370190505b509050600360fc1b81600081518110611697576116976120ea565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106116c6576116c66120ea565b60200101906001600160f81b031916908160001a90535060006116ea8460026124cc565b6116f590600161232c565b90505b600181111561176d576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110611729576117296120ea565b1a60f81b82828151811061173f5761173f6120ea565b60200101906001600160f81b031916908160001a90535060049490941c93611766816124e3565b90506116f8565b5083156107a95760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161085f565b600054610100900460ff166117e35760405162461bcd60e51b815260040161085f90612465565b6117fb6000805160206124fb8339815191528061199b565b61182160008051602061251b8339815191526000805160206124fb83398151915261199b565b61184760008051602061253b8339815191526000805160206124fb83398151915261199b565b61186d60008051602061255b8339815191526000805160206124fb83398151915261199b565b6118856000805160206124fb833981519152306119e6565b6001600160a01b038116156118ac576118ac6000805160206124fb833981519152826119e6565b60005b835181101561191d576118e960008051602061251b8339815191528583815181106118dc576118dc6120ea565b60200260200101516119e6565b61190d60008051602061255b8339815191528583815181106118dc576118dc6120ea565b611916816121ba565b90506118af565b5060005b825181101561195e5761194e60008051602061253b8339815191528483815181106118dc576118dc6120ea565b611957816121ba565b9050611921565b5060988490556040805160008152602081018690527f11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d59101610eaa565b600082815260656020526040808220600101805490849055905190918391839186917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a4505050565b610872828261148b565b80356001600160a01b0381168114611a0757600080fd5b919050565b60008083601f840112611a1e57600080fd5b5081356001600160401b03811115611a3557600080fd5b602083019150836020828501011115611a4d57600080fd5b9250929050565b600080600080600080600060c0888a031215611a6f57600080fd5b611a78886119f0565b96506020880135955060408801356001600160401b03811115611a9a57600080fd5b611aa68a828b01611a0c565b989b979a50986060810135976080820135975060a09091013595509350505050565b600060208284031215611ada57600080fd5b81356001600160e01b0319811681146107a957600080fd5b60008060008060008060a08789031215611b0b57600080fd5b611b14876119f0565b95506020870135945060408701356001600160401b03811115611b3657600080fd5b611b4289828a01611a0c565b979a9699509760608101359660809091013595509350505050565b600060208284031215611b6f57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715611bb457611bb4611b76565b604052919050565b600082601f830112611bcd57600080fd5b81356001600160401b03811115611be657611be6611b76565b611bf9601f8201601f1916602001611b8c565b818152846020838601011115611c0e57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060808587031215611c4157600080fd5b611c4a856119f0565b9350611c58602086016119f0565b92506040850135915060608501356001600160401b03811115611c7a57600080fd5b611c8687828801611bbc565b91505092959194509250565b60008060408385031215611ca557600080fd5b82359150611cb5602084016119f0565b90509250929050565b60008083601f840112611cd057600080fd5b5081356001600160401b03811115611ce757600080fd5b6020830191508360208260051b8501011115611a4d57600080fd5b600080600080600080600080600060c08a8c031215611d2057600080fd5b89356001600160401b0380821115611d3757600080fd5b611d438d838e01611cbe565b909b50995060208c0135915080821115611d5c57600080fd5b611d688d838e01611cbe565b909950975060408c0135915080821115611d8157600080fd5b50611d8e8c828d01611cbe565b9a9d999c50979a969997986060880135976080810135975060a0013595509350505050565b60008060008060408587031215611dc957600080fd5b84356001600160401b0380821115611de057600080fd5b611dec88838901611a0c565b90965094506020870135915080821115611e0557600080fd5b50611e1287828801611a0c565b95989497509550505050565b60008060008060008060008060a0898b031215611e3a57600080fd5b88356001600160401b0380821115611e5157600080fd5b611e5d8c838d01611cbe565b909a50985060208b0135915080821115611e7657600080fd5b611e828c838d01611cbe565b909850965060408b0135915080821115611e9b57600080fd5b50611ea88b828c01611cbe565b999c989b509699959896976060870135966080013595509350505050565b600082601f830112611ed757600080fd5b813560206001600160401b03821115611ef257611ef2611b76565b8160051b611f01828201611b8c565b9283528481018201928281019087851115611f1b57600080fd5b83870192505b84831015611f3a57823582529183019190830190611f21565b979650505050505050565b600080600080600060a08688031215611f5d57600080fd5b611f66866119f0565b9450611f74602087016119f0565b935060408601356001600160401b0380821115611f9057600080fd5b611f9c89838a01611ec6565b94506060880135915080821115611fb257600080fd5b611fbe89838a01611ec6565b93506080880135915080821115611fd457600080fd5b50611fe188828901611bbc565b9150509295509295909350565b600080600080600060a0868803121561200657600080fd5b61200f866119f0565b945061201d602087016119f0565b9350604086013592506060860135915060808601356001600160401b0381111561204657600080fd5b611fe188828901611bbc565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60018060a01b038716815285602082015260a0604082015260006120a360a083018688612052565b60608301949094525060800152949350505050565b60018060a01b03851681528360208201526060604082015260006120e0606083018486612052565b9695505050505050565b634e487b7160e01b600052603260045260246000fd5b60208082526023908201527f54696d656c6f636b436f6e74726f6c6c65723a206c656e677468206d69736d616040820152620e8c6d60eb1b606082015260800190565b60006020828403121561215557600080fd5b6107a9826119f0565b6000808335601e1984360301811261217557600080fd5b8301803591506001600160401b0382111561218f57600080fd5b602001915036819003821315611a4d57600080fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016121cc576121cc6121a4565b5060010190565b6040815260006121e7604083018688612052565b8281036020840152611f3a818587612052565b81835260006020808501808196508560051b810191508460005b8781101561227e5782840389528135601e1988360301811261223557600080fd5b870185810190356001600160401b0381111561225057600080fd5b80360382131561225f57600080fd5b61226a868284612052565b9a87019a9550505090840190600101612214565b5091979650505050505050565b60a0808252810188905260008960c08301825b8b8110156122cc576001600160a01b036122b7846119f0565b1682526020928301929091019060010161229e565b5083810360208501528881526001600160fb1b038911156122ec57600080fd5b8860051b9150818a6020830137018281036020908101604085015261231490820187896121fa565b60608401959095525050608001529695505050505050565b808201808211156106e1576106e16121a4565b60005b8381101561235a578181015183820152602001612342565b50506000910152565b7f416363657373436f6e74726f6c3a206163636f756e742000000000000000000081526000835161239b81601785016020880161233f565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516123cc81602884016020880161233f565b01602801949350505050565b60208152600082518060208401526123f781604085016020870161233f565b601f01601f19169190910160400192915050565b6020808252602a908201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e206973604082015269206e6f7420726561647960b01b606082015260800190565b8183823760009101908152919050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b600082516124c281846020870161233f565b9190910192915050565b80820281158282048414176106e1576106e16121a4565b6000816124f2576124f26121a4565b50600019019056fe5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca5b09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc1d8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e63fd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f783a164736f6c6343000811000a", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/9d09d0a3d6332460a810188261ec8195e05aa218", + Code: "6080604052600436106101e75760003560e01c80638129fc1c11610102578063bc197c8111610095578063e38335e511610064578063e38335e5146105e1578063f1fad104146105f4578063f23a6e6114610609578063f27a0c921461063557600080fd5b8063bc197c8114610548578063c4d252f514610574578063d45c443514610594578063d547741f146105c157600080fd5b8063a217fddf116100d1578063a217fddf146104d1578063ac431751146104e6578063b08e51c014610506578063b1c5f4271461052857600080fd5b80638129fc1c1461045a5780638f2a0bb01461046f5780638f61f4f51461048f57806391d14854146104b157600080fd5b80632ab0f5291161017a5780634bf6c882116101495780634bf6c882146103d3578063584b153e146103fa57806364d623531461041a5780638065657f1461043a57600080fd5b80632ab0f529146103435780632f2ff15d1461037357806331d507501461039357806336568abe146103b357600080fd5b8063134008d3116101b6578063134008d31461029c57806313bc9f20146102af578063150b7a02146102cf578063248a9ca31461031357600080fd5b806301d5062a146101f357806301ffc9a71461021557806307bd02651461024a5780630d3cf6fc1461027a57600080fd5b366101ee57005b600080fd5b3480156101ff57600080fd5b5061021361020e366004611aa5565b61064a565b005b34801561022157600080fd5b50610235610230366004611b19565b61070e565b60405190151581526020015b60405180910390f35b34801561025657600080fd5b5061026c60008051602061258983398151915281565b604051908152602001610241565b34801561028657600080fd5b5061026c60008051602061254983398151915281565b6102136102aa366004611b43565b610739565b3480156102bb57600080fd5b506102356102ca366004611bae565b6107dc565b3480156102db57600080fd5b506102fa6102ea366004611c7c565b630a85bd0160e11b949350505050565b6040516001600160e01b03199091168152602001610241565b34801561031f57600080fd5b5061026c61032e366004611bae565b60009081526065602052604090206001015490565b34801561034f57600080fd5b5061023561035e366004611bae565b60009081526097602052604090205460011490565b34801561037f57600080fd5b5061021361038e366004611ce3565b610802565b34801561039f57600080fd5b506102356103ae366004611bae565b61082c565b3480156103bf57600080fd5b506102136103ce366004611ce3565b610845565b3480156103df57600080fd5b506103e8600881565b60405160ff9091168152602001610241565b34801561040657600080fd5b50610235610415366004611bae565b6108c8565b34801561042657600080fd5b50610213610435366004611bae565b6108df565b34801561044657600080fd5b5061026c610455366004611b43565b610983565b34801561046657600080fd5b506102136109c2565b34801561047b57600080fd5b5061021361048a366004611d53565b610b73565b34801561049b57600080fd5b5061026c60008051602061256983398151915281565b3480156104bd57600080fd5b506102356104cc366004611ce3565b610cf4565b3480156104dd57600080fd5b5061026c600081565b3480156104f257600080fd5b50610213610501366004611e04565b610d1f565b34801561051257600080fd5b5061026c6000805160206125a983398151915281565b34801561053457600080fd5b5061026c610543366004611e6f565b610f09565b34801561055457600080fd5b506102fa610563366004611f96565b63bc197c8160e01b95945050505050565b34801561058057600080fd5b5061021361058f366004611bae565b610f4e565b3480156105a057600080fd5b5061026c6105af366004611bae565b60009081526097602052604090205490565b3480156105cd57600080fd5b506102136105dc366004611ce3565b611011565b6102136105ef366004611e6f565b611036565b34801561060057600080fd5b506103e8601181565b34801561061557600080fd5b506102fa61062436600461203f565b63f23a6e6160e01b95945050505050565b34801561064157600080fd5b5060985461026c565b600080516020612569833981519152610662816111ae565b6000610672898989898989610983565b905061067e81846111b8565b6000817f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8b8b8b8b8b8a6040516106ba969594939291906120cc565b60405180910390a3831561070357807f20fda5fd27a1ea7bf5b9567f143ac5470bb059374a27e8f67cb44f946f6d0387856040516106fa91815260200190565b60405180910390a25b505050505050505050565b60006001600160e01b03198216630271189760e51b14806107335750610733826112a7565b92915050565b600080516020612589833981519152610753816000610cf4565b6107615761076181336112dc565b6000610771888888888888610983565b905061077d8185611335565b610789888888886113d0565b6000817fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b588a8a8a8a6040516107c19493929190612109565b60405180910390a36107d2816114a3565b5050505050505050565b6000818152609760205260408120546001811180156107fb5750428111155b9392505050565b60008281526065602052604090206001015461081d816111ae565b61082783836114dc565b505050565b60008181526097602052604081205481905b1192915050565b6001600160a01b03811633146108ba5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b6108c48282611562565b5050565b60008181526097602052604081205460019061083e565b3330146109425760405162461bcd60e51b815260206004820152602b60248201527f54696d656c6f636b436f6e74726f6c6c65723a2063616c6c6572206d7573742060448201526a62652074696d656c6f636b60a81b60648201526084016108b1565b60985460408051918252602082018390527f11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d5910160405180910390a1609855565b60008686868686866040516020016109a0969594939291906120cc565b6040516020818303038152906040528051906020012090509695505050505050565b600054610100900460ff16158080156109e25750600054600160ff909116105b806109fc5750303b1580156109fc575060005460ff166001145b610a5f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016108b1565b6000805460ff191660011790558015610a82576000805461ff0019166101001790555b334114610aa25760405163022d8c9560e31b815260040160405180910390fd5b3a15610ac1576040516383f1b1d360e01b815260040160405180910390fd5b6040805160018082528183019092526000916020808301908036833701905050905061200481600081518110610af957610af961213b565b60200260200101906001600160a01b031690816001600160a01b031681525050610b2961546082836120046115c9565b508015610b70576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b600080516020612569833981519152610b8b816111ae565b888714610baa5760405162461bcd60e51b81526004016108b190612151565b888514610bc95760405162461bcd60e51b81526004016108b190612151565b6000610bdb8b8b8b8b8b8b8b8b610f09565b9050610be781846111b8565b60005b8a811015610ca55780827f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8e8e85818110610c2757610c2761213b565b9050602002016020810190610c3c9190612194565b8d8d86818110610c4e57610c4e61213b565b905060200201358c8c87818110610c6757610c6761213b565b9050602002810190610c7991906121af565b8c8b604051610c8d969594939291906120cc565b60405180910390a3610c9e8161220b565b9050610bea565b508315610ce757807f20fda5fd27a1ea7bf5b9567f143ac5470bb059374a27e8f67cb44f946f6d038785604051610cde91815260200190565b60405180910390a25b5050505050505050505050565b60009182526065602090815260408084206001600160a01b0393909316845291905290205460ff1690565b3361100714610d4557604051630f22c43960e41b815261100760048201526024016108b1565b610da8604051806040016040528060088152602001676d696e44656c617960c01b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506116029050565b15610ea55760208114610dd65783838383604051630a5a604160e01b81526004016108b19493929190612224565b604080516020601f8401819004810282018101909252828152600091610e1791858580838501838280828437600092019190915250929392505061165b9050565b9050801580610e2857506212750081115b15610e4e5784848484604051630a5a604160e01b81526004016108b19493929190612224565b6040516364d6235360e01b81526004810182905230906364d6235390602401600060405180830381600087803b158015610e8757600080fd5b505af1158015610e9b573d6000803e3d6000fd5b5050505050610ec6565b838383836040516325ee20d560e21b81526004016108b19493929190612224565b7ff1ce9b2cbf50eeb05769a29e2543fd350cab46894a7dd9978a12d534bb20e63384848484604051610efb9493929190612224565b60405180910390a150505050565b60008888888888888888604051602001610f2a9897969594939291906122d9565b60405160208183030381529060405280519060200120905098975050505050505050565b6000805160206125a9833981519152610f66816111ae565b610f6f826108c8565b610fd55760405162461bcd60e51b815260206004820152603160248201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e2063616044820152701b9b9bdd0818994818d85b98d95b1b1959607a1b60648201526084016108b1565b6000828152609760205260408082208290555183917fbaa1eb22f2a492ba1a5fea61b8df4d27c6c8b5f3971e63bb58fa14ff72eedb7091a25050565b60008281526065602052604090206001015461102c816111ae565b6108278383611562565b600080516020612589833981519152611050816000610cf4565b61105e5761105e81336112dc565b87861461107d5760405162461bcd60e51b81526004016108b190612151565b87841461109c5760405162461bcd60e51b81526004016108b190612151565b60006110ae8a8a8a8a8a8a8a8a610f09565b90506110ba8185611335565b60005b898110156111985760008b8b838181106110d9576110d961213b565b90506020020160208101906110ee9190612194565b905060008a8a848181106111045761110461213b565b9050602002013590503660008a8a868181106111225761112261213b565b905060200281019061113491906121af565b91509150611144848484846113d0565b84867fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b588686868660405161117b9493929190612109565b60405180910390a350505050806111919061220b565b90506110bd565b506111a2816114a3565b50505050505050505050565b610b7081336112dc565b6111c18261082c565b156112265760405162461bcd60e51b815260206004820152602f60248201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e20616c60448201526e1c9958591e481cd8da19591d5b1959608a1b60648201526084016108b1565b6098548110156112875760405162461bcd60e51b815260206004820152602660248201527f54696d656c6f636b436f6e74726f6c6c65723a20696e73756666696369656e746044820152652064656c617960d01b60648201526084016108b1565b611291814261237a565b6000928352609760205260409092209190915550565b60006001600160e01b03198216637965db0b60e01b148061073357506301ffc9a760e01b6001600160e01b0319831614610733565b6112e68282610cf4565b6108c4576112f381611660565b6112fe836020611672565b60405160200161130f9291906123b1565b60408051601f198184030181529082905262461bcd60e51b82526108b191600401612426565b61133e826107dc565b61135a5760405162461bcd60e51b81526004016108b190612459565b80158061137557506000818152609760205260409020546001145b6108c45760405162461bcd60e51b815260206004820152602660248201527f54696d656c6f636b436f6e74726f6c6c65723a206d697373696e6720646570656044820152656e64656e637960d01b60648201526084016108b1565b6000846001600160a01b03168484846040516113ed9291906124a3565b60006040518083038185875af1925050503d806000811461142a576040519150601f19603f3d011682016040523d82523d6000602084013e61142f565b606091505b505090508061149c5760405162461bcd60e51b815260206004820152603360248201527f54696d656c6f636b436f6e74726f6c6c65723a20756e6465726c79696e6720746044820152721c985b9cd858dd1a5bdb881c995d995c9d1959606a1b60648201526084016108b1565b5050505050565b6114ac816107dc565b6114c85760405162461bcd60e51b81526004016108b190612459565b600090815260976020526040902060019055565b6114e68282610cf4565b6108c45760008281526065602090815260408083206001600160a01b03851684529091529020805460ff1916600117905561151e3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b61156c8282610cf4565b156108c45760008281526065602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b600054610100900460ff166115f05760405162461bcd60e51b81526004016108b1906124b3565b6115fc8484848461180d565b50505050565b60008160405160200161161591906124fe565b604051602081830303815290604052805190602001208360405160200161163c91906124fe565b6040516020818303038152906040528051906020012014905092915050565b015190565b60606107336001600160a01b03831660145b6060600061168183600261251a565b61168c90600261237a565b6001600160401b038111156116a3576116a3611bc7565b6040519080825280601f01601f1916602001820160405280156116cd576020820181803683370190505b509050600360fc1b816000815181106116e8576116e861213b565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106117175761171761213b565b60200101906001600160f81b031916908160001a905350600061173b84600261251a565b61174690600161237a565b90505b60018111156117be576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061177a5761177a61213b565b1a60f81b8282815181106117905761179061213b565b60200101906001600160f81b031916908160001a90535060049490941c936117b781612531565b9050611749565b5083156107fb5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016108b1565b600054610100900460ff166118345760405162461bcd60e51b81526004016108b1906124b3565b61184c600080516020612549833981519152806119ec565b6118726000805160206125698339815191526000805160206125498339815191526119ec565b6118986000805160206125898339815191526000805160206125498339815191526119ec565b6118be6000805160206125a98339815191526000805160206125498339815191526119ec565b6118d660008051602061254983398151915230611a37565b6001600160a01b038116156118fd576118fd60008051602061254983398151915282611a37565b60005b835181101561196e5761193a60008051602061256983398151915285838151811061192d5761192d61213b565b6020026020010151611a37565b61195e6000805160206125a983398151915285838151811061192d5761192d61213b565b6119678161220b565b9050611900565b5060005b82518110156119af5761199f60008051602061258983398151915284838151811061192d5761192d61213b565b6119a88161220b565b9050611972565b5060988490556040805160008152602081018690527f11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d59101610efb565b600082815260656020526040808220600101805490849055905190918391839186917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a4505050565b6108c482826114dc565b80356001600160a01b0381168114611a5857600080fd5b919050565b60008083601f840112611a6f57600080fd5b5081356001600160401b03811115611a8657600080fd5b602083019150836020828501011115611a9e57600080fd5b9250929050565b600080600080600080600060c0888a031215611ac057600080fd5b611ac988611a41565b96506020880135955060408801356001600160401b03811115611aeb57600080fd5b611af78a828b01611a5d565b989b979a50986060810135976080820135975060a09091013595509350505050565b600060208284031215611b2b57600080fd5b81356001600160e01b0319811681146107fb57600080fd5b60008060008060008060a08789031215611b5c57600080fd5b611b6587611a41565b95506020870135945060408701356001600160401b03811115611b8757600080fd5b611b9389828a01611a5d565b979a9699509760608101359660809091013595509350505050565b600060208284031215611bc057600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715611c0557611c05611bc7565b604052919050565b600082601f830112611c1e57600080fd5b81356001600160401b03811115611c3757611c37611bc7565b611c4a601f8201601f1916602001611bdd565b818152846020838601011115611c5f57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060808587031215611c9257600080fd5b611c9b85611a41565b9350611ca960208601611a41565b92506040850135915060608501356001600160401b03811115611ccb57600080fd5b611cd787828801611c0d565b91505092959194509250565b60008060408385031215611cf657600080fd5b82359150611d0660208401611a41565b90509250929050565b60008083601f840112611d2157600080fd5b5081356001600160401b03811115611d3857600080fd5b6020830191508360208260051b8501011115611a9e57600080fd5b600080600080600080600080600060c08a8c031215611d7157600080fd5b89356001600160401b0380821115611d8857600080fd5b611d948d838e01611d0f565b909b50995060208c0135915080821115611dad57600080fd5b611db98d838e01611d0f565b909950975060408c0135915080821115611dd257600080fd5b50611ddf8c828d01611d0f565b9a9d999c50979a969997986060880135976080810135975060a0013595509350505050565b60008060008060408587031215611e1a57600080fd5b84356001600160401b0380821115611e3157600080fd5b611e3d88838901611a5d565b90965094506020870135915080821115611e5657600080fd5b50611e6387828801611a5d565b95989497509550505050565b60008060008060008060008060a0898b031215611e8b57600080fd5b88356001600160401b0380821115611ea257600080fd5b611eae8c838d01611d0f565b909a50985060208b0135915080821115611ec757600080fd5b611ed38c838d01611d0f565b909850965060408b0135915080821115611eec57600080fd5b50611ef98b828c01611d0f565b999c989b509699959896976060870135966080013595509350505050565b600082601f830112611f2857600080fd5b813560206001600160401b03821115611f4357611f43611bc7565b8160051b611f52828201611bdd565b9283528481018201928281019087851115611f6c57600080fd5b83870192505b84831015611f8b57823582529183019190830190611f72565b979650505050505050565b600080600080600060a08688031215611fae57600080fd5b611fb786611a41565b9450611fc560208701611a41565b935060408601356001600160401b0380821115611fe157600080fd5b611fed89838a01611f17565b9450606088013591508082111561200357600080fd5b61200f89838a01611f17565b9350608088013591508082111561202557600080fd5b5061203288828901611c0d565b9150509295509295909350565b600080600080600060a0868803121561205757600080fd5b61206086611a41565b945061206e60208701611a41565b9350604086013592506060860135915060808601356001600160401b0381111561209757600080fd5b61203288828901611c0d565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60018060a01b038716815285602082015260a0604082015260006120f460a0830186886120a3565b60608301949094525060800152949350505050565b60018060a01b03851681528360208201526060604082015260006121316060830184866120a3565b9695505050505050565b634e487b7160e01b600052603260045260246000fd5b60208082526023908201527f54696d656c6f636b436f6e74726f6c6c65723a206c656e677468206d69736d616040820152620e8c6d60eb1b606082015260800190565b6000602082840312156121a657600080fd5b6107fb82611a41565b6000808335601e198436030181126121c657600080fd5b8301803591506001600160401b038211156121e057600080fd5b602001915036819003821315611a9e57600080fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161221d5761221d6121f5565b5060010190565b6040815260006122386040830186886120a3565b8281036020840152611f8b8185876120a3565b818352600060208085019450848460051b86018460005b878110156122cc5783830389528135601e1988360301811261228357600080fd5b870185810190356001600160401b0381111561229e57600080fd5b8036038213156122ad57600080fd5b6122b88582846120a3565b9a87019a9450505090840190600101612262565b5090979650505050505050565b60a0808252810188905260008960c08301825b8b81101561231a576001600160a01b0361230584611a41565b168252602092830192909101906001016122ec565b5083810360208501528881526001600160fb1b0389111561233a57600080fd5b8860051b9150818a60208301370182810360209081016040850152612362908201878961224b565b60608401959095525050608001529695505050505050565b80820180821115610733576107336121f5565b60005b838110156123a8578181015183820152602001612390565b50506000910152565b7f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008152600083516123e981601785016020880161238d565b7001034b99036b4b9b9b4b733903937b6329607d1b601791840191820152835161241a81602884016020880161238d565b01602801949350505050565b602081526000825180602084015261244581604085016020870161238d565b601f01601f19169190910160400192915050565b6020808252602a908201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e206973604082015269206e6f7420726561647960b01b606082015260800190565b8183823760009101908152919050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6000825161251081846020870161238d565b9190910192915050565b8082028115828204841417610733576107336121f5565b600081612540576125406121f5565b50600019019056fe5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca5b09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc1d8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e63fd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f783a164736f6c6343000811000a", }, { ContractAddr: common.HexToAddress(TokenRecoverPortalContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/cfc0bd1127186a917ddc38fd38d22903034d3f0b", - Code: "608060405234801561001057600080fd5b50600436106100a95760003560e01c80639fcb5012116100715780639fcb50121461012f578063ac4317511461014c578063bfb5a6a11461015f578063de88700b14610172578063e33f8d321461019d578063f4b88300146101c057600080fd5b8063046f7da2146100ae5780632eb4a7ab146100b85780634c335368146100d4578063572c9980146101145780638456cb5914610127575b600080fd5b6100b66101d3565b005b6100c160345481565b6040519081526020015b60405180910390f35b6101076040518060400160405280601481526020017342696e616e63652d436861696e2d47616e67657360601b81525081565b6040516100cb91906113eb565b6100b661012236600461141e565b610236565b6100b66102c7565b60355461013c9060ff1681565b60405190151581526020016100cb565b6100b661015a36600461149c565b610330565b6100b661016d36600461154d565b610756565b603754610185906001600160a01b031681565b6040516001600160a01b0390911681526020016100cb565b61013c6101ab366004611627565b60009081526036602052604090205460ff1690565b603354610185906001600160a01b031681565b6037546001600160a01b031633146101fe5760405163f2771a9960e01b815260040160405180910390fd5b6037805460ff60a01b191690556040517f62451d457bc659158be6e6247f56ec1df424a5c7597f71c20c2bc44e0965c8f990600090a1565b6037546001600160a01b031633146102615760405163f2771a9960e01b815260040160405180910390fd5b604051638525db0360e01b8152600481018390526001600160a01b038216602482015261100490638525db0390604401600060405180830381600087803b1580156102ab57600080fd5b505af11580156102bf573d6000803e3d6000fd5b505050505050565b6037546001600160a01b031633146102f25760405163f2771a9960e01b815260040160405180910390fd5b6037805460ff60a01b1916600160a01b1790556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e75290600090a1565b336110071461035b57604051630f22c43960e41b815261100760048201526024015b60405180910390fd5b6103c56040518060400160405280600f81526020016e617070726f7665724164647265737360881b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610a989050565b1561048d57601481146103f35783838383604051630a5a604160e01b81526004016103529493929190611669565b600061043783838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060149250610af2915050565b90506001600160a01b0381166104685784848484604051630a5a604160e01b81526004016103529493929190611669565b603380546001600160a01b0319166001600160a01b0392909216919091179055610713565b6104f26040518060400160405280600a8152602001691b595c9adb19549bdbdd60b21b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610a989050565b156105bf5760355460ff161561051b576040516379b3306f60e11b815260040160405180910390fd5b602081146105445783838383604051630a5a604160e01b81526004016103529493929190611669565b604080516020601f840181900481028201810190925282815260009161058491858580838501838280828437600092019190915250869250610af7915050565b806105aa5784848484604051630a5a604160e01b81526004016103529493929190611669565b6034556035805460ff19166001179055610713565b6106286040518060400160405280600e81526020016d30b9b9b2ba283937ba32b1ba37b960911b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610a989050565b156106f257601481146106565783838383604051630a5a604160e01b81526004016103529493929190611669565b600061069c601484848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610af29050565b90506001600160a01b0381166106cd5784848484604051630a5a604160e01b81526004016103529493929190611669565b603780546001600160a01b0319166001600160a01b0392909216919091179055610713565b838383836040516325ee20d560e21b81526004016103529493929190611669565b7ff1ce9b2cbf50eeb05769a29e2543fd350cab46894a7dd9978a12d534bb20e633848484846040516107489493929190611669565b60405180910390a150505050565b60355460ff1661077957604051635740729760e01b815260040160405180910390fd5b60345461079957604051635740729760e01b815260040160405180910390fd5b603754600160a01b900460ff16156107c45760405163c629ac8160e01b815260040160405180910390fd5b6107cc610b06565b600061085a89898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8d018190048102820181019092528b815292508b91508a9081908401838280828437600081840152601f19601f820116905080830192505050505050506108558e8e33610b5f565b610c80565b90506000818c8c6040516020016108739392919061169b565b6040516020818303038152906040528051906020012090506108a48160009081526036602052604090205460ff1690565b156108c157604051623e493160e81b815260040160405180910390fd5b6109693389898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8d018190048102820181019092528b815292508b91508a908190840183828082843760009201919091525050604080516020808c0282810182019093528b82528994509092508b918b91829190850190849080828437600092019190915250610d7492505050565b6109aa848480806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250506034549150849050610e7f565b6109c7576040516309bde33960e01b815260040160405180910390fd5b60008181526036602052604090819020805460ff191660011790555163799758b960e01b8152600481018d9052336024820152604481018c90526110049063799758b990606401600060405180830381600087803b158015610a2857600080fd5b505af1158015610a3c573d6000803e3d6000fd5b5050604080518f81523360208201529081018e90527f717c40d7a8dbe67bb6371e964c24423645711d1624980e1c74e6956fc21088059250606001905060405180910390a15050610a8c60018055565b50505050505050505050565b600081604051602001610aab91906116c2565b6040516020818303038152906040528051906020012083604051602001610ad291906116c2565b604051602081830303815290604052805190602001201490505b92915050565b015190565b91018082526020908101910152565b600260015403610b585760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610352565b6002600155565b600060026040518060400160405280601481526020017342696e616e63652d436861696e2d47616e67657360601b815250610bbc85604051602001610ba691815260200190565b6040516020818303038152906040526000610e95565b6040516bffffffffffffffffffffffff19606087901b166020820152610bf5906034016040516020818303038152906040526001610e95565b610c0b88604051602001610ba691815260200190565b604051602001610c1e94939291906116de565b60408051601f1981840301815290829052610c38916116c2565b602060405180830381855afa158015610c55573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610c78919061180d565b949350505050565b60608351602114610ca457604051638152ea1b60e01b815260040160405180910390fd5b8251604014610cc657604051635e4bd79760e11b815260040160405180910390fd5b60408051608180825260c08201909252600091602082018180368337019050509050610cf6818660006021611067565b610d04818560216040611067565b610d338184604051602001610d1b91815260200190565b60405160208183030381529060405260616020611067565b604080516014808252818301909252600091602082018180368337019050509050815160148282856069600019fa610d6a57600080fd5b5095945050505050565b606060005b8251811015610dd25781838281518110610d9557610d9561183c565b6020026020010151604051602001610dae929190611852565b60405160208183030381529060405291508080610dca9061188a565b915050610d79565b5060006040518060400160405280601481526020017342696e616e63652d436861696e2d47616e67657360601b81525087878660345486604051602001610e1e969594939291906118a3565b60408051601f1981840301815291905280516020909101206033549091506001600160a01b0316610e4f82876110de565b6001600160a01b031614610e7657604051636eb5c6cb60e11b815260040160405180910390fd5b50505050505050565b600082610e8c85846110fa565b14949350505050565b6060600083516002610ea79190611914565b67ffffffffffffffff811115610ebf57610ebf611826565b6040519080825280601f01601f191660200182016040528015610ee9576020820181803683370190505b5060408051808201909152601081526f181899199a1a9b1b9c1cb0b131b232b360811b602082015290915060005b855181101561102f57818251878381518110610f3557610f3561183c565b0160200151610f47919060f81c611941565b81518110610f5757610f5761183c565b01602001516001600160f81b03191683610f72836002611914565b81518110610f8257610f8261183c565b60200101906001600160f81b031916908160001a905350818251878381518110610fae57610fae61183c565b0160200151610fc0919060f81c611955565b81518110610fd057610fd061183c565b01602001516001600160f81b03191683610feb836002611914565b610ff6906001611969565b815181106110065761100661183c565b60200101906001600160f81b031916908160001a905350806110278161188a565b915050610f17565b50831561105f5781604051602001611047919061197c565b60405160208183030381529060405292505050610aec565b509392505050565b60005b818110156110d7578381815181106110845761108461183c565b01602001516001600160f81b031916858461109e8161188a565b9550815181106110b0576110b061183c565b60200101906001600160f81b031916908160001a9053506110d08161188a565b905061106a565b5050505050565b60008060006110ed858561113f565b9150915061105f81611184565b600081815b845181101561105f5761112b8286838151811061111e5761111e61183c565b60200260200101516112d1565b9150806111378161188a565b9150506110ff565b60008082516041036111755760208301516040840151606085015160001a61116987828585611303565b9450945050505061117d565b506000905060025b9250929050565b6000816004811115611198576111986119a6565b036111a05750565b60018160048111156111b4576111b46119a6565b036112015760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610352565b6002816004811115611215576112156119a6565b036112625760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610352565b6003816004811115611276576112766119a6565b036112ce5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610352565b50565b60008183106112ed5760008281526020849052604090206112fc565b60008381526020839052604090205b9392505050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561133a57506000905060036113be565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa15801561138e573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166113b7576000600192509250506113be565b9150600090505b94509492505050565b60005b838110156113e25781810151838201526020016113ca565b50506000910152565b602081526000825180602084015261140a8160408501602087016113c7565b601f01601f19169190910160400192915050565b6000806040838503121561143157600080fd5b8235915060208301356001600160a01b038116811461144f57600080fd5b809150509250929050565b60008083601f84011261146c57600080fd5b50813567ffffffffffffffff81111561148457600080fd5b60208301915083602082850101111561117d57600080fd5b600080600080604085870312156114b257600080fd5b843567ffffffffffffffff808211156114ca57600080fd5b6114d68883890161145a565b909650945060208701359150808211156114ef57600080fd5b506114fc8782880161145a565b95989497509550505050565b60008083601f84011261151a57600080fd5b50813567ffffffffffffffff81111561153257600080fd5b6020830191508360208260051b850101111561117d57600080fd5b60008060008060008060008060008060c08b8d03121561156c57600080fd5b8a35995060208b0135985060408b013567ffffffffffffffff8082111561159257600080fd5b61159e8e838f0161145a565b909a50985060608d01359150808211156115b757600080fd5b6115c38e838f0161145a565b909850965060808d01359150808211156115dc57600080fd5b6115e88e838f0161145a565b909650945060a08d013591508082111561160157600080fd5b5061160e8d828e01611508565b915080935050809150509295989b9194979a5092959850565b60006020828403121561163957600080fd5b5035919050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60408152600061167d604083018688611640565b8281036020840152611690818587611640565b979650505050505050565b600084516116ad8184602089016113c7565b91909101928352506020820152604001919050565b600082516116d48184602087016113c7565b9190910192915050565b7f7b226163636f756e745f6e756d626572223a2230222c22636861696e5f6964228152611d1160f11b602082015260008551611721816022850160208a016113c7565b7f222c2264617461223a6e756c6c2c226d656d6f223a22222c226d736773223a5b6022918401918201526a3d9130b6b7bab73a111d1160a91b6042820152855161177281604d840160208a016113c7565b6e1116113932b1b4b834b2b73a111d1160891b604d929091019182015284516117a281605c8401602089016113c7565b711116113a37b5b2b72fb9bcb6b137b6111d1160711b605c929091019182015283516117d581606e8401602088016113c7565b7f227d5d2c2273657175656e6365223a2230222c22736f75726365223a2230227d606e9290910191820152608e019695505050505050565b60006020828403121561181f57600080fd5b5051919050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b600083516118648184602088016113c7565b9190910191825250602001919050565b634e487b7160e01b600052601160045260246000fd5b60006001820161189c5761189c611874565b5060010190565b600087516118b5818460208c016113c7565b606088901b6bffffffffffffffffffffffff191690830190815286516118e2816014840160208b016113c7565b01601481018690526034810185905283516119048160548401602088016113c7565b0160540198975050505050505050565b8082028115828204841417610aec57610aec611874565b634e487b7160e01b600052601260045260246000fd5b6000826119505761195061192b565b500490565b6000826119645761196461192b565b500690565b80820180821115610aec57610aec611874565b61060f60f31b8152600082516119998160028501602087016113c7565b9190910160020192915050565b634e487b7160e01b600052602160045260246000fdfea164736f6c6343000811000a", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/9d09d0a3d6332460a810188261ec8195e05aa218", + Code: "608060405234801561001057600080fd5b506004361061010b5760003560e01c80638129fc1c116100a2578063b187bd2611610071578063b187bd261461022c578063bfb5a6a114610237578063e33f8d321461024a578063e842426a1461026d578063f1fad1041461029857600080fd5b80638129fc1c146101fc5780638456cb59146102045780639fcb50121461020c578063ac4317511461021957600080fd5b80634a49ac4c116100de5780634a49ac4c1461017c5780634bf6c8821461018f578063572c9980146101a957806374be2150146101bc57600080fd5b8063046f7da2146101105780632eb4a7ab1461011a578063417c73a7146101365780634838d16514610149575b600080fd5b6101186102a0565b005b61012360685481565b6040519081526020015b60405180910390f35b6101186101443660046116a8565b610328565b61016c6101573660046116a8565b60346020526000908152604090205460ff1681565b604051901515815260200161012d565b61011861018a3660046116a8565b6103a4565b610197600881565b60405160ff909116815260200161012d565b6101186101b73660046116c3565b61041d565b6101ef6040518060400160405280601481526020017342696e616e63652d436861696e2d47616e67657360601b81525081565b60405161012d919061173f565b6101186104b3565b610118610625565b60695461016c9060ff1681565b61011861022736600461179b565b6106b1565b60335460ff1661016c565b61011861024536600461184c565b610ad0565b61016c610258366004611926565b6000908152606a602052604090205460ff1690565b606754610280906001600160a01b031681565b6040516001600160a01b03909116815260200161012d565b610197601181565b60335461010090046001600160a01b031633146102d0576040516306fbb1e360e01b815260040160405180910390fd5b60335460ff166102f357604051636cd6020160e01b815260040160405180910390fd5b6033805460ff191690556040517f62451d457bc659158be6e6247f56ec1df424a5c7597f71c20c2bc44e0965c8f990600090a1565b60335461010090046001600160a01b03163314610358576040516306fbb1e360e01b815260040160405180910390fd5b6001600160a01b038116600081815260346020526040808220805460ff19166001179055517f7fd26be6fc92aff63f1f4409b2b2ddeb272a888031d7f55ec830485ec61941869190a250565b60335461010090046001600160a01b031633146103d4576040516306fbb1e360e01b815260040160405180910390fd5b6001600160a01b038116600081815260346020526040808220805460ff19169055517fe0db3499b7fdc3da4cddff5f45d694549c19835e7f719fb5606d3ad1a5de40119190a250565b60335461010090046001600160a01b0316331461044d576040516306fbb1e360e01b815260040160405180910390fd5b604051638525db0360e01b8152600481018390526001600160a01b038216602482015261100490638525db0390604401600060405180830381600087803b15801561049757600080fd5b505af11580156104ab573d6000803e3d6000fd5b505050505050565b600054610100900460ff16158080156104d35750600054600160ff909116105b806104ed5750303b1580156104ed575060005460ff166001145b6105555760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff191660011790558015610578576000805461ff0019166101001790555b3341146105985760405163022d8c9560e31b815260040160405180910390fd5b3a156105b7576040516383f1b1d360e01b815260040160405180910390fd5b6105bf610e30565b6105dc7330151da466ec8ab345bef3d6983023e050fb0673610e5d565b8015610622576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b60335461010090046001600160a01b03163314610655576040516306fbb1e360e01b815260040160405180910390fd5b60335460ff161561067957604051631785c68160e01b815260040160405180910390fd5b6033805460ff191660011790556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e75290600090a1565b33611007146106d757604051630f22c43960e41b8152611007600482015260240161054c565b6107416040518060400160405280600f81526020016e617070726f76616c4164647265737360881b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610eac9050565b1561080b576014811461076f5783838383604051630a5a604160e01b815260040161054c9493929190611968565b60006107b5601484848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610f069050565b90506001600160a01b0381166107e65784848484604051630a5a604160e01b815260040161054c9493929190611968565b606780546001600160a01b0319166001600160a01b0392909216919091179055610a8d565b6108706040518060400160405280600a8152602001691b595c9adb19549bdbdd60b21b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610eac9050565b156109405760695460ff1615610899576040516379b3306f60e11b815260040160405180910390fd5b602081146108c25783838383604051630a5a604160e01b815260040161054c9493929190611968565b604080516020601f8401819004810282018101909252828152600091610903918585808385018382808284376000920191909152509293925050610f069050565b90508061092b5784848484604051630a5a604160e01b815260040161054c9493929190611968565b6068556069805460ff19166001179055610a8d565b6109b86040518060400160405280601b81526020017f746f6b656e5265636f766572506f7274616c50726f746563746f72000000000081525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610eac9050565b15610a6c57601481146109e65783838383604051630a5a604160e01b815260040161054c9493929190611968565b6000610a2c601484848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610f069050565b90506001600160a01b038116610a5d5784848484604051630a5a604160e01b815260040161054c9493929190611968565b610a6681610f0b565b50610a8d565b838383836040516325ee20d560e21b815260040161054c9493929190611968565b7ff1ce9b2cbf50eeb05769a29e2543fd350cab46894a7dd9978a12d534bb20e63384848484604051610ac29493929190611968565b60405180910390a150505050565b60695460ff16610af35760405163678f619760e11b815260040160405180910390fd5b606854610b135760405163678f619760e11b815260040160405180910390fd5b6067546001600160a01b0316610b3c57604051631a1b977b60e31b815260040160405180910390fd5b60335460ff1615610b6057604051631785c68160e01b815260040160405180910390fd5b610b68610f72565b6000610bf689898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8d018190048102820181019092528b815292508b91508a9081908401838280828437600081840152601f19601f82011690508083019250505050505050610bf18e8e33610fcb565b6110ec565b90506000818c8c604051602001610c0f9392919061199a565b604051602081830303815290604052805190602001209050610c40816000908152606a602052604090205460ff1690565b15610c5d57604051623e493160e81b815260040160405180910390fd5b610d053389898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8d018190048102820181019092528b815292508b91508a908190840183828082843760009201919091525050604080516020808c0282810182019093528b82528994509092508b918b918291908501908490808284376000920191909152506111c492505050565b610d468484808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152505060685491508490506112cf565b610d63576040516309bde33960e01b815260040160405180910390fd5b6000818152606a602052604090819020805460ff191660011790555163799758b960e01b8152600481018d9052336024820152604481018c90526110049063799758b990606401600060405180830381600087803b158015610dc457600080fd5b505af1158015610dd8573d6000803e3d6000fd5b505050507f39cc0b7297a0ef9102d75ebc4919ffec0347d50008c2b865eda4125d5812cb64828d338e604051610e1194939291906119c1565b60405180910390a15050610e2460018055565b50505050505050505050565b600054610100900460ff16610e575760405162461bcd60e51b815260040161054c906119f9565b60018055565b600054610100900460ff16610e845760405162461bcd60e51b815260040161054c906119f9565b603380546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b600081604051602001610ebf9190611a44565b6040516020818303038152906040528051906020012083604051602001610ee69190611a44565b604051602081830303815290604052805190602001201490505b92915050565b015190565b6033546040516001600160a01b0380841692610100900416907f44fc1b38a4abaa91ebd1b628a5b259a698f86238c8217d68f516e87769c60c0b90600090a3603380546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b600260015403610fc45760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161054c565b6002600155565b600060026040518060400160405280601481526020017342696e616e63652d436861696e2d47616e67657360601b8152506110288560405160200161101291815260200190565b60405160208183030381529060405260006112e5565b6040516bffffffffffffffffffffffff19606087901b1660208201526110619060340160405160208183030381529060405260016112e5565b6110778860405160200161101291815260200190565b60405160200161108a9493929190611a60565b60408051601f19818403018152908290526110a491611a44565b602060405180830381855afa1580156110c1573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906110e49190611b8f565b949350505050565b6060835160211461111057604051638152ea1b60e01b815260040160405180910390fd5b825160401461113257604051635e4bd79760e11b815260040160405180910390fd5b604080516020808252818301909252600091602082018180368337019050509050826020820152600085858360405160200161117093929190611bbe565b60408051808303601f190181526014808452838301909252925060009190602082018180368337019050509050815160146020830182602086016069600019fa6111b957600080fd5b509695505050505050565b606060005b825181101561122257818382815181106111e5576111e5611c01565b60200260200101516040516020016111fe929190611c17565b6040516020818303038152906040529150808061121a90611c4f565b9150506111c9565b5060006040518060400160405280601481526020017342696e616e63652d436861696e2d47616e67657360601b8152508787866068548660405160200161126e96959493929190611c68565b60408051601f1981840301815291905280516020909101206067549091506001600160a01b031661129f86836114b7565b6001600160a01b0316146112c6576040516356b00a4f60e11b815260040160405180910390fd5b50505050505050565b6000826112dc8584611551565b14949350505050565b60606000835160026112f79190611cd9565b67ffffffffffffffff81111561130f5761130f611ba8565b6040519080825280601f01601f191660200182016040528015611339576020820181803683370190505b5060408051808201909152601081526f181899199a1a9b1b9c1cb0b131b232b360811b602082015290915060005b855181101561147f5781825187838151811061138557611385611c01565b0160200151611397919060f81c611d06565b815181106113a7576113a7611c01565b01602001516001600160f81b031916836113c2836002611cd9565b815181106113d2576113d2611c01565b60200101906001600160f81b031916908160001a9053508182518783815181106113fe576113fe611c01565b0160200151611410919060f81c611d1a565b8151811061142057611420611c01565b01602001516001600160f81b0319168361143b836002611cd9565b611446906001611d2e565b8151811061145657611456611c01565b60200101906001600160f81b031916908160001a9053508061147781611c4f565b915050611367565b5083156114af57816040516020016114979190611d41565b60405160208183030381529060405292505050610f00565b509392505050565b600082516041146114db576040516356b00a4f60e11b815260040160405180910390fd5b60208301516040840151606085015160001a601b81101561150457611501601b82611d6b565b90505b601b8160ff1610806115195750601c8160ff16115b15611537576040516356b00a4f60e11b815260040160405180910390fd5b600061154586838686611596565b50979650505050505050565b600081815b84518110156114af576115828286838151811061157557611575611c01565b602002602001015161165a565b91508061158e81611c4f565b915050611556565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156115cd5750600090506003611651565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611621573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661164a57600060019250925050611651565b9150600090505b94509492505050565b6000818310611676576000828152602084905260409020611685565b60008381526020839052604090205b9392505050565b80356001600160a01b03811681146116a357600080fd5b919050565b6000602082840312156116ba57600080fd5b6116858261168c565b600080604083850312156116d657600080fd5b823591506116e66020840161168c565b90509250929050565b60005b8381101561170a5781810151838201526020016116f2565b50506000910152565b6000815180845261172b8160208601602086016116ef565b601f01601f19169290920160200192915050565b6020815260006116856020830184611713565b60008083601f84011261176457600080fd5b50813567ffffffffffffffff81111561177c57600080fd5b60208301915083602082850101111561179457600080fd5b9250929050565b600080600080604085870312156117b157600080fd5b843567ffffffffffffffff808211156117c957600080fd5b6117d588838901611752565b909650945060208701359150808211156117ee57600080fd5b506117fb87828801611752565b95989497509550505050565b60008083601f84011261181957600080fd5b50813567ffffffffffffffff81111561183157600080fd5b6020830191508360208260051b850101111561179457600080fd5b60008060008060008060008060008060c08b8d03121561186b57600080fd5b8a35995060208b0135985060408b013567ffffffffffffffff8082111561189157600080fd5b61189d8e838f01611752565b909a50985060608d01359150808211156118b657600080fd5b6118c28e838f01611752565b909850965060808d01359150808211156118db57600080fd5b6118e78e838f01611752565b909650945060a08d013591508082111561190057600080fd5b5061190d8d828e01611807565b915080935050809150509295989b9194979a5092959850565b60006020828403121561193857600080fd5b5035919050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60408152600061197c60408301868861193f565b828103602084015261198f81858761193f565b979650505050505050565b600084516119ac8184602089016116ef565b91909101928352506020820152604001919050565b6080815260006119d46080830187611713565b6020830195909552506001600160a01b03929092166040830152606090910152919050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60008251611a568184602087016116ef565b9190910192915050565b7f7b226163636f756e745f6e756d626572223a2230222c22636861696e5f6964228152611d1160f11b602082015260008551611aa3816022850160208a016116ef565b7f222c2264617461223a6e756c6c2c226d656d6f223a22222c226d736773223a5b6022918401918201526a3d9130b6b7bab73a111d1160a91b60428201528551611af481604d840160208a016116ef565b6e1116113932b1b4b834b2b73a111d1160891b604d92909101918201528451611b2481605c8401602089016116ef565b711116113a37b5b2b72fb9bcb6b137b6111d1160711b605c92909101918201528351611b5781606e8401602088016116ef565b7f227d5d2c2273657175656e6365223a2230222c22736f75726365223a2230227d606e9290910191820152608e019695505050505050565b600060208284031215611ba157600080fd5b5051919050565b634e487b7160e01b600052604160045260246000fd5b60008451611bd08184602089016116ef565b845190830190611be48183602089016116ef565b8451910190611bf78183602088016116ef565b0195945050505050565b634e487b7160e01b600052603260045260246000fd5b60008351611c298184602088016116ef565b9190910191825250602001919050565b634e487b7160e01b600052601160045260246000fd5b600060018201611c6157611c61611c39565b5060010190565b60008751611c7a818460208c016116ef565b606088901b6bffffffffffffffffffffffff19169083019081528651611ca7816014840160208b016116ef565b0160148101869052603481018590528351611cc98160548401602088016116ef565b0160540198975050505050505050565b8082028115828204841417610f0057610f00611c39565b634e487b7160e01b600052601260045260246000fd5b600082611d1557611d15611cf0565b500490565b600082611d2957611d29611cf0565b500690565b80820180821115610f0057610f00611c39565b61060f60f31b815260008251611d5e8160028501602087016116ef565b9190910160020192915050565b60ff8181168382160190811115610f0057610f00611c3956fea164736f6c6343000811000a", }, }, } @@ -650,63 +604,63 @@ func init() { Configs: []*UpgradeConfig{ { ContractAddr: common.HexToAddress(ValidatorContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/1abdfbf3aeb86909c2220b79bf92b87ddff64b54", - Code: "6080604052600436106104fb5760003560e01c806388b32f111161028c578063c6d339451161015a578063e40716a1116100cc578063f92eb86b11610085578063f92eb86b14610d2d578063f9a2bbc714610d42578063fc3e590814610d57578063fccc281314610d6c578063fd4ad81f14610d81578063fd6a687914610db057610502565b8063e40716a114610c9b578063ea321e4914610cb0578063eb57e20214610cd0578063eda5868c14610cf0578063f1fad10414610d05578063f340fa0114610d1a57610502565b8063d86222d51161011e578063d86222d514610c1d578063daacdb6614610c32578063dc927faf14610c47578063df8079e914610c5c578063e086c7b114610c71578063e1c7392a14610c8657610502565b8063c6d3394514610bbe578063c81b166214610bd3578063c8509d811461098d578063ce910b0c14610be8578063d68fb56a14610c0857610502565b8063a78abc16116101fe578063ad3c9da6116101b7578063ad3c9da614610b3d578063aef198a914610b5d578063b7ab4db514610b72578063b8cf4ef114610b94578063bf9f4995146106fe578063c466689d14610ba957610502565b8063a78abc1614610ab4578063aa82dce114610ac9578063aad5606314610ade578063aaf5eb6814610af3578063ab51bb9614610b08578063ac43175114610b1d57610502565b806396713da91161025057806396713da914610a365780639dc0926214610a4b5780639fe0f81614610a60578063a0dc275814610a75578063a1a11bf514610a8a578063a5422d5c14610a9f57610502565b806388b32f11146109c25780638a7beb01146109d75780638b5ad0c9146109ec5780638d19a41014610a015780639369d7de14610a2157610502565b806351b4dce3116103c957806370fd5bad1161033b5780637e434d54116102f45780637e434d541461094e57806381650b6214610963578063820dcaa814610978578063831d65d11461098d578063853230aa1461090f57806386249882146109ad57610502565b806370fd5bad146108d0578063718a8aa8146108e557806375d47a0a146108fa57806378dfed4a1461090f5780637942fd05146109245780637a84ca2a1461093957610502565b80635d77156c1161038d5780635d77156c1461082a5780635de1e22c1461083f57806360eba4fe1461085457806362b72cf5146108745780636969a25c146108895780636e47b482146108bb57610502565b806351b4dce3146107ab57806351e80672146107c057806355614fcc146107d5578063565c56b3146107f55780635667515a1461081557610502565b8063300c35671161046d57806343756e5c1161042657806343756e5c1461072057806345cf9daf14610735578063493279b11461074a5780634bf6c8821461076c5780634df6e0c3146107815780635192c82c1461079657610502565b8063300c35671461065b578063321d398a1461067b5780633365af3a1461069b57806335409f7f146106bb5780633b071dcc146106db5780633dffc387146106fe57610502565b8063152ad3b8116104bf578063152ad3b8146105ba5780631e4c1524146105dc5780631ff18069146105fc578063219f22d51461061157806328087028146106265780632a0ffb6e1461063b57610502565b806304c4fec61461050757806307a568471461051e5780630bee7a67146105495780630e2374a51461056b5780631182b8751461058d57610502565b3661050257005b600080fd5b34801561051357600080fd5b5061051c610dc5565b005b34801561052a57600080fd5b50610533610e37565b6040516105409190618d16565b60405180910390f35b34801561055557600080fd5b5061055e610e3d565b6040516105409190618d40565b34801561057757600080fd5b50610580610e42565b6040516105409190618029565b34801561059957600080fd5b506105ad6105a8366004617f0f565b610e48565b60405161054091906181bc565b3480156105c657600080fd5b506105cf611144565b60405161054091906181b1565b3480156105e857600080fd5b5061051c6105f7366004617d1d565b61114d565b34801561060857600080fd5b5061053361183b565b34801561061d57600080fd5b5061055e611841565b34801561063257600080fd5b50610580611846565b34801561064757600080fd5b5061051c610656366004617c7d565b61184c565b34801561066757600080fd5b5061051c610676366004617cb5565b6118f9565b34801561068757600080fd5b506105cf610696366004617ebc565b611c42565b3480156106a757600080fd5b506105cf6106b6366004617ebc565b611d11565b3480156106c757600080fd5b5061051c6106d6366004617c7d565b611dc2565b3480156106e757600080fd5b506106f0611f27565b6040516105409291906180c7565b34801561070a57600080fd5b50610713612203565b6040516105409190618d51565b34801561072c57600080fd5b50610580612208565b34801561074157600080fd5b5061053361220e565b34801561075657600080fd5b5061075f612214565b6040516105409190618d07565b34801561077857600080fd5b5061071361221a565b34801561078d57600080fd5b506106f061221f565b3480156107a257600080fd5b506105336123ab565b3480156107b757600080fd5b506105806123b1565b3480156107cc57600080fd5b506105806123b7565b3480156107e157600080fd5b506105cf6107f0366004617c7d565b6123bd565b34801561080157600080fd5b50610533610810366004617c7d565b6123f2565b34801561082157600080fd5b50610713612443565b34801561083657600080fd5b5061055e612448565b34801561084b57600080fd5b5061053361244d565b34801561086057600080fd5b506105ad61086f366004617ebc565b612453565b34801561088057600080fd5b506105336124f9565b34801561089557600080fd5b506108a96108a4366004617ebc565b6124ff565b60405161054096959493929190618056565b3480156108c757600080fd5b50610580612563565b3480156108dc57600080fd5b50610713612569565b3480156108f157600080fd5b5061071361256e565b34801561090657600080fd5b50610580612573565b34801561091b57600080fd5b50610533612579565b34801561093057600080fd5b5061071361257f565b34801561094557600080fd5b50610533612584565b34801561095a57600080fd5b5061058061258a565b34801561096f57600080fd5b5061055e612590565b34801561098457600080fd5b50610533612595565b34801561099957600080fd5b5061051c6109a8366004617f0f565b61259b565b3480156109b957600080fd5b506105336125fc565b3480156109ce57600080fd5b50610533612602565b3480156109e357600080fd5b506105cf612608565b3480156109f857600080fd5b50610533612611565b348015610a0d57600080fd5b50610533610a1c366004617c7d565b612617565b348015610a2d57600080fd5b5061051c612657565b348015610a4257600080fd5b5061071361276b565b348015610a5757600080fd5b50610580612770565b348015610a6c57600080fd5b50610533612776565b348015610a8157600080fd5b5061053361277b565b348015610a9657600080fd5b50610580612780565b348015610aab57600080fd5b506105ad612786565b348015610ac057600080fd5b506105cf6127a2565b348015610ad557600080fd5b506105806127ab565b348015610aea57600080fd5b506105806127b1565b348015610aff57600080fd5b506105336127b7565b348015610b1457600080fd5b5061055e612443565b348015610b2957600080fd5b5061051c610b38366004617e60565b6127c0565b348015610b4957600080fd5b50610533610b58366004617c7d565b613059565b348015610b6957600080fd5b5061053361306b565b348015610b7e57600080fd5b50610b87613078565b60405161054091906180b4565b348015610ba057600080fd5b50610533613164565b348015610bb557600080fd5b50610533613169565b348015610bca57600080fd5b50610533612569565b348015610bdf57600080fd5b5061058061316f565b348015610bf457600080fd5b506105ad610c03366004617ebc565b613175565b348015610c1457600080fd5b50610533613182565b348015610c2957600080fd5b506105336131c1565b348015610c3e57600080fd5b506105336131cd565b348015610c5357600080fd5b506105806131d3565b348015610c6857600080fd5b506105806131d9565b348015610c7d57600080fd5b50610533610e3d565b348015610c9257600080fd5b5061051c6131df565b348015610ca757600080fd5b50610533613470565b348015610cbc57600080fd5b506105cf610ccb366004617e21565b613476565b348015610cdc57600080fd5b5061051c610ceb366004617c7d565b6135fc565b348015610cfc57600080fd5b5061055e613700565b348015610d1157600080fd5b50610713613705565b61051c610d28366004617c7d565b61370a565b348015610d3957600080fd5b50610533613a89565b348015610d4e57600080fd5b50610580613a8f565b348015610d6357600080fd5b50610713612776565b348015610d7857600080fd5b50610580613a95565b348015610d8d57600080fd5b50610da1610d9c366004617ebc565b613a9b565b60405161054093929190618d1f565b348015610dbc57600080fd5b50610580613b5d565b6000610dd033612617565b9050600b8181548110610ddf57fe5b600091825260209091206001601690920201015460ff16610e1b5760405162461bcd60e51b8152600401610e1290618922565b60405180910390fd5b6000610e25613182565b9050610e32338383613b63565b505050565b60095481565b606481565b61200181565b60005460609060ff16610e6d5760405162461bcd60e51b8152600401610e12906183e3565b600b54610f2b57610e7c617829565b60015460005b81811015610f2757600b80546001810182556000919091528351600080516020618e238339815191526016909202918201908155602080860151600080516020618e638339815191528401805460ff1916911515919091179055604086015180518794610f0393600080516020618e43833981519152909101920190617858565b506060820151610f1990600383019060136178d2565b505050806001019050610e82565b5050505b610f336178ff565b6000610f7485858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250613e3492505050565b9150915080610f9057610f876064613ff0565b9250505061113d565b815160009060ff16610fb557610fae83602001518460400151614051565b9050611109565b825160ff166001141561110557826020015151600114610ffa57600080516020618e03833981519152604051610fea906187db565b60405180910390a1506067611100565b6000836020015160008151811061100d57fe5b602090810291909101810151516001600160a01b0381166000908152600490925260409091205490915080158061106e575060018082038154811061104e57fe5b9060005260206000209060040201600201601c9054906101000a900460ff165b156110ac576040516001600160a01b038316907fe209c46bebf57cf265d5d9009a00870e256d9150f3ed5281ab9d9eb3cec6e4be90600090a26110f9565b60006110bb8360018403615213565b9050806110f7576040516001600160a01b038416907fe209c46bebf57cf265d5d9009a00870e256d9150f3ed5281ab9d9eb3cec6e4be90600090a25b505b6000925050505b611109565b5060655b63ffffffff811661112e575050604080516000815260208101909152915061113d9050565b61113781613ff0565b93505050505b9392505050565b60075460ff1681565b33411461116c5760405162461bcd60e51b8152600401610e1290618b72565b3a1561118a5760405162461bcd60e51b8152600401610e1290618861565b82516040805182815260208084028201019091526060908280156111c857816020015b6111b5617923565b8152602001906001900390816111ad5790505b50905060005b82811015611272576040518060c001604052808783815181106111ed57fe5b60200260200101516001600160a01b0316815260200160006001600160a01b0316815260200160006001600160a01b0316815260200186838151811061122f57fe5b60200260200101516001600160401b03168152602001600015158152602001600081525082828151811061125f57fe5b60209081029190910101526001016111ce565b5060405163d31f968d60e01b81526120009063d31f968d9061129d9061100090600890600401618098565b60206040518083038186803b1580156112b557600080fd5b505afa1580156112c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ed9190617e01565b156116105780516015548181111561138f57815b8181101561138d57601580548061131457fe5b60008281526020812060046000199093019283020180546001600160a01b0319908116825560018201805490911690556002810180546001600160e81b0319169055600301559055601680548061136757fe5b6001900381819060005260206000200160006113839190617958565b9055600101611301565b505b60005b828110156115cf578181106114b75760158482815181106113af57fe5b602090810291909101810151825460018181018555600094855293839020825160049092020180546001600160a01b039283166001600160a01b0319918216178255938301519481018054958316958516959095179094556040820151600285018054606085015160808601511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b199590961692909716919091179290921692909217169290921790915560a00151600390910155855160169087908390811061147f57fe5b602090810291909101810151825460018101845560009384529282902081516114b19491909101929190910190617858565b506115c7565b8381815181106114c357fe5b6020026020010151601582815481106114d857fe5b6000918252602091829020835160049092020180546001600160a01b039283166001600160a01b0319918216178255928401516001820180549184169185169190911790556040840151600282018054606087015160808801511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b1995909716929097169190911792909216939093171692909217905560a090910151600390910155855186908290811061159357fe5b6020026020010151601682815481106115a857fe5b9060005260206000200190805190602001906115c5929190617858565b505b600101611392565b507fb8e726330a0dad1cf3d04e925663b17e391f1ed547d79b7f4e5f344119b44246826040516115ff9190618d16565b60405180910390a150505050610e32565b60608061161d83866155c6565b9150915060005b60015481101561172b576001818154811061163b57fe5b906000526020600020906004020160030154600014611723576120026001600160a01b031663092193ab6001838154811061167257fe5b9060005260206000209060040201600301546001848154811061169157fe5b60009182526020909120600491820201546040516001600160e01b031960e086901b1681526116cc926001600160a01b039092169101618029565b6000604051808303818588803b1580156116e557600080fd5b505af11580156116f9573d6000803e3d6000fd5b505050505060006001828154811061170d57fe5b9060005260206000209060040201600301819055505b600101611624565b504715611799577f6ecc855f9440a9282c90913bbc91619fd44f5ec0b462af28d127b116f130aa4d476040516117619190618d16565b60405180910390a1604051611002904780156108fc02916000818181858888f19350505050158015611797573d6000803e3d6000fd5b505b600060038190556005558151156117b4576117b482826157ff565b6110016001600160a01b031663fc4333cd6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156117f157600080fd5b505af1158015611805573d6000803e3d6000fd5b50506040517fedd8d7296956dd970ab4de3f2fc03be2b0ffc615d20cd4c72c6e44f928630ebf925060009150a150505050505050565b60035481565b606881565b61200581565b336120021461186d5760405162461bcd60e51b8152600401610e1290618cd0565b60005b6015548110156118f557816001600160a01b03166015828154811061189157fe5b60009182526020909120600490910201546001600160a01b031614156118ed576001601582815481106118c057fe5b9060005260206000209060040201600201601c6101000a81548160ff0219169083151502179055506118f5565b600101611870565b5050565b3341146119185760405162461bcd60e51b8152600401610e1290618b72565b60105443116119395760405162461bcd60e51b8152600401610e1290618576565b3a156119575760405162461bcd60e51b8152600401610e1290618861565b60005460ff166119795760405162461bcd60e51b8152600401610e12906183e3565b60006110023168056bc75e2d631000008111156119b0576119a98168056bc75e2d6310000063ffffffff615fe216565b91506119b7565b5050611c38565b6040516309a99b4f60e41b815261100290639a99b4f0906119de903090869060040161803d565b602060405180830381600087803b1580156119f857600080fd5b505af1158015611a0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a309190617ed4565b915081611a3e575050611c38565b6000805b84811015611a6c57858582818110611a5657fe5b9050602002013582019150806001019050611a42565b5080611a7a57505050611c38565b6000806000805b89811015611c305784898983818110611a9657fe5b90506020020135880281611aa657fe5b0493508a8a82818110611ab557fe5b9050602002016020810190611aca9190617c7d565b6001600160a01b03811660009081526004602052604090205490935091508115611be6576000600180840381548110611aff57fe5b9060005260206000209060040201905080600201601c9054906101000a900460ff1615611b6c57836001600160a01b03167fb9c75cbbfde137c4281689580799ef5f52144e78858f776a5979b2b212137d8586604051611b5f9190618d16565b60405180910390a2611be0565b600354611b7f908663ffffffff61602416565b6003908155810154611b97908663ffffffff61602416565b60038201556040516001600160a01b038516907fcb0aad6cf9cd03bdf6137e359f541c42f38b39f007cae8e89e88aa7d8c6617b290611bd7908890618d16565b60405180910390a25b50611c28565b826001600160a01b03167fb9c75cbbfde137c4281689580799ef5f52144e78858f776a5979b2b212137d8585604051611c1f9190618d16565b60405180910390a25b600101611a81565b505050505050505b5050436010555050565b6001546000908210611c5657506000611d0c565b60006001600160a01b031660018381548110611c6e57fe5b60009182526020909120600490910201546001600160a01b03161480611c9e57506008541580611c9e5750600a54155b80611cad575060085460095410155b80611cbe5750611cbc82611d11565b155b80611ce757506000600b8381548110611cd357fe5b906000526020600020906016020160000154115b80611cfb57506001611cf7613078565b5111155b15611d0857506000611d0c565b5060015b919050565b6001546000908210611d2557506000611d0c565b600b548210611d625760018281548110611d3b57fe5b9060005260206000209060040201600201601c9054906101000a900460ff16159050611d0c565b60018281548110611d6f57fe5b9060005260206000209060040201600201601c9054906101000a900460ff16158015611dbc5750600b8281548110611da357fe5b600091825260209091206001601690920201015460ff16155b92915050565b600b54611e8057611dd1617829565b60015460005b81811015611e7c57600b80546001810182556000919091528351600080516020618e238339815191526016909202918201908155602080860151600080516020618e638339815191528401805460ff1916911515919091179055604086015180518794611e5893600080516020618e43833981519152909101920190617858565b506060820151611e6e90600383019060136178d2565b505050806001019050611dd7565b5050505b336110011480611e91575033612002145b611ead5760405162461bcd60e51b8152600401610e129061841a565b6001600160a01b03811660009081526004602052604090205480611ed15750611f24565b6001810390506000600b8281548110611ee657fe5b600091825260209091206001601690920201015460ff169050611f098383615213565b8015611f125750805b15610e32576009805460001901905550505b50565b60015460609081906000805b82811015611f7a5760018181548110611f4857fe5b9060005260206000209060040201600201601c9054906101000a900460ff16611f72576001909101905b600101611f33565b50606081604051908082528060200260200182016040528015611fa7578160200160208202803683370190505b509050606082604051908082528060200260200182016040528015611fe057816020015b6060815260200190600190039081611fcb5790505b50600b546000945090915084141561215b5760005b84811015612155576001818154811061200a57fe5b9060005260206000209060040201600201601c9054906101000a900460ff1661214d576001818154811061203a57fe5b600091825260209091206004909102015483516001600160a01b039091169084908690811061206557fe5b60200260200101906001600160a01b031690816001600160a01b031681525050600b818154811061209257fe5b600091825260209182902060026016909202018101805460408051601f60001961010060018616150201909316949094049182018590048502840185019052808352919290919083018282801561212a5780601f106120ff5761010080835404028352916020019161212a565b820191906000526020600020905b81548152906001019060200180831161210d57829003601f168201915b505050505082858151811061213b57fe5b60209081029190910101526001909301925b600101611ff5565b506121f7565b60005b848110156121f5576001818154811061217357fe5b9060005260206000209060040201600201601c9054906101000a900460ff166121ed57600181815481106121a357fe5b600091825260209091206004909102015483516001600160a01b03909116908490869081106121ce57fe5b6001600160a01b03909216602092830291909101909101526001909301925b60010161215e565b505b909450925050505b9091565b600181565b61100181565b60085481565b6102ca81565b600881565b6060806000600e549050600080600c541161223b57601561223f565b600c545b9050606061224b613078565b9050606061225882616049565b90508282511161226f5790945092506121ff915050565b83838351031015612281578282510393505b83156122b7576014430461229d83838388880360008a8a6161b7565b6122b58383838888038989038a8b8b8b5103016161b7565b505b6060836040519080825280602002602001820160405280156122e3578160200160208202803683370190505b50905060608460405190808252806020026020018201604052801561231c57816020015b60608152602001906001900390816123075790505b50905060005b8581101561239d5784818151811061233657fe5b602002602001015183828151811061234a57fe5b60200260200101906001600160a01b031690816001600160a01b03168152505083818151811061237657fe5b602002602001015182828151811061238a57fe5b6020908102919091010152600101612322565b509096509450505050509091565b60065481565b61200681565b61200081565b6001600160a01b038116600090815260046020526040812054806123e5576000915050611d0c565b6000190161113d81611d11565b6001600160a01b0381166000908152600460205260408120548061241a576000915050611d0c565b60018082038154811061242957fe5b906000526020600020906004020160030154915050919050565b600081565b606781565b600f5481565b6012818154811061246057fe5b600091825260209182902001805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152935090918301828280156124f15780601f106124c6576101008083540402835291602001916124f1565b820191906000526020600020905b8154815290600101906020018083116124d457829003601f168201915b505050505081565b60105481565b6001818154811061250c57fe5b600091825260209091206004909102018054600182015460028301546003909301546001600160a01b0392831694509082169291821691600160a01b81046001600160401b031691600160e01b90910460ff169086565b61100581565b600281565b601081565b61100881565b6103e881565b600b81565b600c5481565b61200381565b606681565b61271081565b33612000146125bc5760405162461bcd60e51b8152600401610e1290618b23565b7f41ce201247b6ceb957dcdb217d0b8acb50b9ea0e12af9af4f5e7f389021016058383836040516125ef93929190618d5f565b60405180910390a1505050565b60025481565b60115481565b60145460ff1681565b600a5481565b6001600160a01b0381166000908152600460205260408120548061264d5760405162461bcd60e51b8152600401610e1290618aab565b6000190192915050565b600b5461271557612666617829565b60015460005b8181101561271157600b80546001810182556000919091528351600080516020618e238339815191526016909202918201908155602080860151600080516020618e638339815191528401805460ff19169115159190911790556040860151805187946126ed93600080516020618e43833981519152909101920190617858565b50606082015161270390600383019060136178d2565b50505080600101905061266c565b5050505b6008546127225760036008555b600a5461272f576002600a555b600061273a33612617565b905061274581611c42565b6127615760405162461bcd60e51b8152600401610e1290618798565b611f24338261630e565b600981565b61100781565b600381565b601481565b61100681565b6040518060a0016040528060788152602001618e836078913981565b60005460ff1681565b61200281565b61300081565b6402540be40081565b60005460ff166127e25760405162461bcd60e51b8152600401610e12906183e3565b33611007146128035760405162461bcd60e51b8152600401610e129061888f565b61286d84848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080518082019091526013815272065787069726554696d655365636f6e6447617606c1b602082015291506163a69050565b1561290a57602081146128925760405162461bcd60e51b8152600401610e1290618a65565b604080516020601f84018190048102820181019092528281526000916128d0918585808385018382808284376000920191909152506163ff92505050565b9050606481101580156128e65750620186a08111155b6129025760405162461bcd60e51b8152600401610e1290618688565b600255613016565b61296a84848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260098152686275726e526174696f60b81b602082015291506163a69050565b156129fd576020811461298f5760405162461bcd60e51b8152600401610e1290618201565b604080516020601f84018190048102820181019092528281526000916129cd918585808385018382808284376000920191909152506163ff92505050565b9050612710600f54820111156129f55760405162461bcd60e51b8152600401610e1290618238565b600655613016565b612a6784848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260138152726d61784e756d4f664d61696e7461696e696e6760681b602082015291506163a69050565b15612b015760208114612a8c5760405162461bcd60e51b8152600401610e12906182a0565b604080516020601f8401819004810282018101909252828152600091612aca918585808385018382808284376000920191909152506163ff92505050565b600c5490915080612ad9575060155b808210612af85760405162461bcd60e51b8152600401610e12906185e0565b50600855613016565b612b6a84848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260128152716d61696e7461696e536c6173685363616c6560701b602082015291506163a69050565b15612c035760208114612b8f5760405162461bcd60e51b8152600401610e1290618369565b604080516020601f8401819004810282018101909252828152600091612bcd918585808385018382808284376000920191909152506163ff92505050565b9050600081118015612bdf5750600a81105b612bfb5760405162461bcd60e51b8152600401610e1290618c03565b600a55613016565b612c7784848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601981527f6d61784e756d4f66576f726b696e6743616e6469646174657300000000000000602082015291506163a69050565b15612d065760208114612c9c5760405162461bcd60e51b8152600401610e129061831d565b604080516020601f8401819004810282018101909252828152600091612cda918585808385018382808284376000920191909152506163ff92505050565b9050600d54811115612cfe5760405162461bcd60e51b8152600401610e12906186fe565b600e55613016565b612d6f84848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260128152716d61784e756d4f6643616e6469646174657360701b602082015291506163a69050565b15612df15760208114612d945760405162461bcd60e51b8152600401610e12906188dd565b604080516020601f8401819004810282018101909252828152600091612dd2918585808385018382808284376000920191909152506163ff92505050565b600d819055600e54909150811015612deb57600d54600e555b50613016565b612e5584848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600d81526c6e756d4f66436162696e65747360981b602082015291506163a69050565b15612f035760208114612e7a5760405162461bcd60e51b8152600401610e12906183ae565b604080516020601f8401819004810282018101909252828152600091612eb8918585808385018382808284376000920191909152506163ff92505050565b905060008111612eda5760405162461bcd60e51b8152600401610e1290618488565b6064811115612efb5760405162461bcd60e51b8152600401610e12906184d0565b600c55613016565b612f6b84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601181527073797374656d526577617264526174696f60781b602082015291506163a69050565b15612ffe5760208114612f905760405162461bcd60e51b8152600401610e1290618bbf565b604080516020601f8401819004810282018101909252828152600091612fce918585808385018382808284376000920191909152506163ff92505050565b905061271060065482011115612ff65760405162461bcd60e51b8152600401610e12906189c6565b600f55613016565b60405162461bcd60e51b8152600401610e1290618c60565b7f6cdb0ac70ab7f2e2d035cca5be60d89906f2dede7648ddbd7402189c1eeed17a8484848460405161304b94939291906181cf565b60405180910390a150505050565b60046020526000908152604090205481565b68056bc75e2d6310000081565b6001546060906000805b828110156130a75761309381611d11565b1561309f578160010191505b600101613082565b506060816040519080825280602002602001820160405280156130d4578160200160208202803683370190505b5090506000915060005b8381101561315b576130ef81611d11565b15613153576001818154811061310157fe5b600091825260209091206004909102015482516001600160a01b039091169083908590811061312c57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508260010192505b6001016130de565b50925050505b90565b601581565b61027181565b61100281565b6013818154811061246057fe5b600061318c613078565b519050600080600c54116131a15760156131a5565b600c545b9050808211156131b3578091505b816131bd57600191505b5090565b67016345785d8a000081565b60055481565b61100381565b61200481565b60005460ff16156132025760405162461bcd60e51b8152600401610e129061898f565b61320a6178ff565b600061322d6040518060a0016040528060788152602001618e8360789139613e34565b915091508061324e5760405162461bcd60e51b8152600401610e1290618ae2565b613256617829565b60005b83602001515181101561345757600b80546001810182556000919091528251600080516020618e238339815191526016909202918201908155602080850151600080516020618e638339815191528401805460ff19169115159190911790556040850151805186946132df93600080516020618e43833981519152909101920190617858565b5060608201516132f590600383019060136178d2565b5050508360400151818151811061330857fe5b6020026020010151600b828154811061331d57fe5b90600052602060002090601602016002019080519060200190613341929190617858565b5060018460200151828151811061335457fe5b60209081029190910181015182546001818101855560009485528385208351600493840290910180546001600160a01b039283166001600160a01b03199182161782558587015182850180549185169183169190911790556040860151600283018054606089015160808a01511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b199590981692909516919091179290921694909417161790915560a09093015160039093019290925591870151805191850193918590811061342a57fe5b602090810291909101810151516001600160a01b0316825281019190915260400160002055600101613259565b50506103e860025550506000805460ff19166001179055565b600d5481565b601354600090815b8181101561357f5761356785858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506013805490925085915081106134cf57fe5b600091825260209182902001805460408051601f600260001961010060018716150201909416939093049283018590048502810185019091528181529283018282801561355d5780601f106135325761010080835404028352916020019161355d565b820191906000526020600020905b81548152906001019060200180831161354057829003601f168201915b5050505050616404565b1561357757600192505050611dbc565b60010161347e565b5060125460005b818110156135f0576135d786868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506012805490925085915081106134cf57fe5b156135e85760019350505050611dbc565b600101613586565b50600095945050505050565b336110011461361d5760405162461bcd60e51b8152600401610e1290618c87565b600b546136db5761362c617829565b60015460005b818110156136d757600b80546001810182556000919091528351600080516020618e238339815191526016909202918201908155602080860151600080516020618e638339815191528401805460ff19169115159190911790556040860151805187946136b393600080516020618e43833981519152909101920190617858565b5060608201516136c990600383019060136178d2565b505050806001019050613632565b5050505b60006136e682616468565b90506136f181611c42565b156118f5576118f5828261630e565b606581565b601181565b3341146137295760405162461bcd60e51b8152600401610e1290618b72565b60005460ff1661374b5760405162461bcd60e51b8152600401610e12906183e3565b6000341161376b5760405162461bcd60e51b8152600401610e12906186cf565b3a156137895760405162461bcd60e51b8152600401610e1290618861565b6001600160a01b03811660009081526004602052604090205460145434919060ff166137c957610271600f556103e86006556014805460ff191660011790555b6000821180156137db57506000600f54115b1561388d5760006138096127106137fd600f543461660b90919063ffffffff16565b9063ffffffff61664516565b9050801561388b576040516110029082156108fc029083906000818181858888f19350505050158015613840573d6000803e3d6000fd5b507f6ecc855f9440a9282c90913bbc91619fd44f5ec0b462af28d127b116f130aa4d816040516138709190618d16565b60405180910390a1613888838263ffffffff615fe216565b92505b505b60008211801561389f57506000600654115b156139455760006138c16127106137fd6006543461660b90919063ffffffff16565b905080156139435760405161dead9082156108fc029083906000818181858888f193505050501580156138f8573d6000803e3d6000fd5b507f627059660ea01c4733a328effb2294d2f86905bf806da763a89cee254de8bee5816040516139289190618d16565b60405180910390a1613940838263ffffffff615fe216565b92505b505b8015613a4357600060018083038154811061395c57fe5b9060005260206000209060040201905080600201601c9054906101000a900460ff16156139c957836001600160a01b03167ff177e5d6c5764d79c32883ed824111d9b13f5668cf6ab1cc12dd36791dd955b4846040516139bc9190618d16565b60405180910390a2613a3d565b6003546139dc908463ffffffff61602416565b60039081558101546139f4908463ffffffff61602416565b60038201556040516001600160a01b038516907f93a090ecc682c002995fad3c85b30c5651d7fd29b0be5da9d784a3302aedc05590613a34908690618d16565b60405180910390a25b50610e32565b826001600160a01b03167ff177e5d6c5764d79c32883ed824111d9b13f5668cf6ab1cc12dd36791dd955b483604051613a7c9190618d16565b60405180910390a2505050565b600e5481565b61100081565b61dead81565b600b8181548110613aa857fe5b6000918252602091829020601691909102018054600180830154600280850180546040805161010096831615969096026000190190911692909204601f810188900488028501880190925281845293965060ff90911694919291830182828015613b535780601f10613b2857610100808354040283529160200191613b53565b820191906000526020600020905b815481529060010190602001808311613b3657829003601f168201915b5050505050905083565b61100481565b6000600a5460001480613b74575081155b80613b7f5750600954155b15613b8c5750600061113d565b60096000815460019003919050819055506000613bd7600a546137fd856137fd600b8981548110613bb957fe5b6000918252602090912060169091020154439063ffffffff615fe216565b90506000600b8581548110613be857fe5b906000526020600020906016020160010160006101000a81548160ff0219169083151502179055506000806110016001600160a01b0316638256ace66040518163ffffffff1660e01b8152600401604080518083038186803b158015613c4d57600080fd5b505afa158015613c61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c859190617eec565b9150915060009350808310613de457613c9e8787615213565b5060405163436aa28360e11b8152600090612002906386d5450690613cc7908b90600401618029565b60206040518083038186803b158015613cdf57600080fd5b505afa158015613cf3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d179190617c99565b6001600160a01b031614613d83576040516313d13bdb60e31b815261100190639e89ded890613d4c908a90879060040161803d565b600060405180830381600087803b158015613d6657600080fd5b505af1158015613d7a573d6000803e3d6000fd5b50505050613ddb565b6040516305bfb49960e41b815261100190635bfb499090613da8908a90600401618029565b600060405180830381600087803b158015613dc257600080fd5b505af1158015613dd6573d6000803e3d6000fd5b505050505b60019350613df6565b818310613df657613df487616468565b505b6040516001600160a01b038816907fb9d38178dc641ff1817967a63c9078cbcd955a9f1fcd75e0e3636de615d44d3b90600090a25050509392505050565b613e3c6178ff565b6000613e466178ff565b613e4e61799c565b613e5f613e5a86616687565b6166ac565b90506000805b613e6e836166f6565b15613fe25780613e9357613e89613e8484616717565b616765565b60ff168452613fda565b8060011415613fd5576060613eaf613eaa85616717565b6167e5565b90508051604051908082528060200260200182016040528015613eec57816020015b613ed9617923565b815260200190600190039081613ed15790505b5085602001819052508051604051908082528060200260200182016040528015613f2a57816020015b6060815260200190600190039081613f155790505b50604086015260005b8151811015613fca57613f44617923565b60606000613f64858581518110613f5757fe5b60200260200101516168b6565b92509250925080613f84578860009a509a50505050505050505050613feb565b8289602001518581518110613f9557fe5b60200260200101819052508189604001518581518110613fb157fe5b6020026020010181905250505050806001019050613f33565b506001925050613fda565b613fe2565b600101613e65565b50919350909150505b915091565b604080516001808252818301909252606091829190816020015b606081526020019060019003908161400a5790505090506140308363ffffffff166169d0565b8160008151811061403d57fe5b602002602001018190525061113d816169e3565b600060648351111561408857600080516020618e038339815191526040516140789061852d565b60405180910390a1506066611dbc565b60005b83518110156141265760005b8181101561411d578481815181106140ab57fe5b6020026020010151600001516001600160a01b03168583815181106140cc57fe5b6020026020010151600001516001600160a01b0316141561411557600080516020618e038339815191526040516141029061863d565b60405180910390a1606692505050611dbc565b600101614097565b5060010161408b565b5060608060606015805480602002602001604051908101604052809291908181526020016000905b828210156141d85760008481526020908190206040805160c0810182526004860290920180546001600160a01b039081168452600180830154821685870152600283015491821693850193909352600160a01b81046001600160401b03166060850152600160e01b900460ff16151560808401526003015460a0830152908352909201910161414e565b50505050905060606016805480602002602001604051908101604052809291908181526020016000905b828210156142ad5760008481526020908190208301805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156142995780601f1061426e57610100808354040283529160200191614299565b820191906000526020600020905b81548152906001019060200180831161427c57829003601f168201915b505050505081526020019060010190614202565b50505050905060005b825181101561430a578281815181106142cb57fe5b6020026020010151606001516003028382815181106142e657fe5b60209081029190910101516001600160401b039091166060909101526001016142b6565b5060608061431a89898686616a6d565b9150915061432882826155c6565b60015460408051828152602080840282010190915292985090965060009550859450925060609150828015614367578160200160208202803683370190505b50905060005b828110156144f85760006001600160a01b03166120026001600160a01b03166386d545066001848154811061439e57fe5b60009182526020909120600491820201546040516001600160e01b031960e085901b1681526143d9926001600160a01b039092169101618029565b60206040518083038186803b1580156143f157600080fd5b505afa158015614405573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144299190617c99565b6001600160a01b03161461448b57600182828151811061444557fe5b602002602001019060ff16908160ff16815250506001818154811061446657fe5b906000526020600020906004020160030154600014614486578360010193505b6144f0565b67016345785d8a0000600182815481106144a157fe5b906000526020600020906004020160030154106144c3578460010194506144f0565b600181815481106144d057fe5b9060005260206000209060040201600301546000146144f0578360010193505b60010161436d565b50606084604051908082528060200260200182016040528015614525578160200160208202803683370190505b509050606085604051908082528060200260200182016040528015614554578160200160208202803683370190505b509050606086604051908082528060200260200182016040528015614583578160200160208202803683370190505b5090506060876040519080825280602002602001820160405280156145b2578160200160208202803683370190505b50905060006060886040519080825280602002602001820160405280156145e3578160200160208202803683370190505b509050606089604051908082528060200260200182016040528015614612578160200160208202803683370190505b50905060009a506000995060006110046001600160a01b031663149d14d96040518163ffffffff1660e01b815260040160206040518083038186803b15801561465a57600080fd5b505afa15801561466e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906146929190617ed4565b905067016345785d8a00008111156146de57600080516020618e038339815191526040516146bf9061894e565b60405180910390a160689e505050505050505050505050505050611dbc565b60005b8a811015614a72578981815181106146f557fe5b602002602001015160ff16600114156147eb576001818154811061471557fe5b9060005260206000209060040201600301546000146147e6576001818154811061473b57fe5b600091825260209091206004909102015484516001600160a01b039091169085908e90811061476657fe5b60200260200101906001600160a01b031690816001600160a01b0316815250506001818154811061479357fe5b906000526020600020906004020160030154838d815181106147b157fe5b60200260200101818152505060018a8d815181106147cb57fe5b602002602001019060ff16908160ff16815250508b6001019b505b614a6a565b67016345785d8a00006001828154811061480157fe5b90600052602060002090600402016003015410614986576001818154811061482557fe5b906000526020600020906004020160020160009054906101000a90046001600160a01b0316898e8151811061485657fe5b60200260200101906001600160a01b031690816001600160a01b03168152505060006402540be4006001838154811061488b57fe5b906000526020600020906004020160030154816148a457fe5b06600183815481106148b257fe5b9060005260206000209060040201600301540390506148da8382615fe290919063ffffffff16565b898f815181106148e657fe5b602002602001018181525050600182815481106148ff57fe5b906000526020600020906004020160010160009054906101000a90046001600160a01b0316878f8151811061493057fe5b60200260200101906001600160a01b031690816001600160a01b03168152505081888f8151811061495d57fe5b6020908102919091010152614978868263ffffffff61602416565b95508d6001019d5050614a6a565b6001818154811061499357fe5b906000526020600020906004020160030154600014614a6a57600181815481106149b957fe5b906000526020600020906004020160010160009054906101000a90046001600160a01b0316848d815181106149ea57fe5b60200260200101906001600160a01b031690816001600160a01b03168152505060018181548110614a1757fe5b906000526020600020906004020160030154838d81518110614a3557fe5b60200260200101818152505060008a8d81518110614a4f57fe5b602002602001019060ff16908160ff16815250508b6001019b505b6001016146e1565b5060008415614ce8576002546040516303702b2960e51b815261100491636e056520918891614aac918e918e918d91420190600401618137565b6020604051808303818588803b158015614ac557600080fd5b505af193505050508015614af6575060408051601f3d908101601f19168201909252614af391810190617e01565b60015b614c6d576040516000815260443d1015614b1257506000614bad565b60046000803e60005160e01c6308c379a08114614b33576000915050614bad565b60043d036004833e81513d60248201116001600160401b0382111715614b5e57600092505050614bad565b80830180516001600160401b03811115614b7f576000945050505050614bad565b8060208301013d8601811115614b9d57600095505050505050614bad565b601f01601f191660405250925050505b80614bb85750614bfa565b60019150857fa7cdeed7d0db45e3219a6e5d60838824c16f1d39991fcfe3f963029c844bf28082604051614bec91906181bc565b60405180910390a250614c68565b3d808015614c24576040519150601f19603f3d011682016040523d82523d6000602084013e614c29565b606091505b5060019150857fbfa884552dd8921b6ce90bfe906952ae5b3b29be0cc1a951d4f62697635a3a4582604051614c5e91906181bc565b60405180910390a2505b614ce8565b8015614caf577fa217d08e65f80c73121cd9db834d81652d544bfbf452f6d04922b16c90a37b7086604051614ca29190618d16565b60405180910390a1614ce6565b857fa7cdeed7d0db45e3219a6e5d60838824c16f1d39991fcfe3f963029c844bf280604051614cdd906182e6565b60405180910390a25b505b8015614e9e5760005b8751811015614e9c576000888281518110614d0857fe5b60200260200101519050600060018281548110614d2157fe5b60009182526020909120600160049092020181015481546001600160a01b03909116916108fc9185908110614d5257fe5b9060005260206000209060040201600301549081150290604051600060405180830381858888f1935050505090508015614e0e5760018281548110614d9357fe5b60009182526020909120600160049092020181015481546001600160a01b03909116917f6c61d60f69a7beb3e1c80db7f39f37b208537cbb19da3174511b477812b2fc7d9185908110614de257fe5b906000526020600020906004020160030154604051614e019190618d16565b60405180910390a2614e92565b60018281548110614e1b57fe5b60009182526020909120600160049092020181015481546001600160a01b03909116917f25d0ce7d2f0cec669a8c17efe49d195c13455bb8872b65fa610ac7f53fe4ca7d9185908110614e6a57fe5b906000526020600020906004020160030154604051614e899190618d16565b60405180910390a25b5050600101614cf1565b505b8351156150945760005b8451811015615092578a8181518110614ebd57fe5b602002602001015160ff1660011415614f5c576120026001600160a01b031663092193ab858381518110614eed57fe5b6020026020010151878481518110614f0157fe5b60200260200101516040518363ffffffff1660e01b8152600401614f259190618029565b6000604051808303818588803b158015614f3e57600080fd5b505af1158015614f52573d6000803e3d6000fd5b505050505061508a565b6000858281518110614f6a57fe5b60200260200101516001600160a01b03166108fc868481518110614f8a57fe5b60200260200101519081150290604051600060405180830381858888f193505050509050801561502057858281518110614fc057fe5b60200260200101516001600160a01b03167f6c61d60f69a7beb3e1c80db7f39f37b208537cbb19da3174511b477812b2fc7d868481518110614ffe57fe5b60200260200101516040516150139190618d16565b60405180910390a2615088565b85828151811061502c57fe5b60200260200101516001600160a01b03167f25d0ce7d2f0cec669a8c17efe49d195c13455bb8872b65fa610ac7f53fe4ca7d86848151811061506a57fe5b602002602001015160405161507f9190618d16565b60405180910390a25b505b600101614ea8565b505b5050505050505050505050505060005b60015481101561510157600181815481106150bb57fe5b9060005260206000209060040201600301546000146150f9576000600182815481106150e357fe5b9060005260206000209060040201600301819055505b6001016150a4565b50471561516f577f6ecc855f9440a9282c90913bbc91619fd44f5ec0b462af28d127b116f130aa4d476040516151379190618d16565b60405180910390a1604051611002904780156108fc02916000818181858888f1935050505015801561516d573d6000803e3d6000fd5b505b6000600381905560055581511561518a5761518a82826157ff565b6110016001600160a01b031663fc4333cd6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156151c757600080fd5b505af11580156151db573d6000803e3d6000fd5b50506040517fedd8d7296956dd970ab4de3f2fc03be2b0ffc615d20cd4c72c6e44f928630ebf925060009150a1506000949350505050565b6000806001838154811061522357fe5b9060005260206000209060040201600301549050600060018080549050039050600161524d613078565b51116152825760006001858154811061526257fe5b906000526020600020906004020160030181905550600092505050611dbc565b846001600160a01b03167f3b6f9ef90462b512a1293ecec018670bf7b7f1876fb727590a8a6d7643130a70836040516152bb9190618d16565b60405180910390a26001600160a01b038516600090815260046020526040812055835b600154600019018110156154a857600181600101815481106152fc57fe5b90600052602060002090600402016001828154811061531757fe5b60009182526020909120825460049092020180546001600160a01b03199081166001600160a01b0393841617825560018085015481840180548416918616919091179055600280860180549185018054909416919095161780835584546001600160401b03600160a01b91829004160267ffffffffffffffff60a01b1990911617808355935460ff600160e01b918290041615150260ff60e01b19909416939093179055600392830154920191909155600b8054909183019081106153d857fe5b9060005260206000209060160201600b82815481106153f357fe5b600091825260209091208254601690920201908155600180830154818301805460ff909216151560ff199092169190911790556002808401805461544a9383860193908216156101000260001901909116046179bc565b5061545d60038281019084016013617a31565b5090505080600101600460006001848154811061547657fe5b600091825260208083206004909202909101546001600160a01b031683528201929092526040019020556001016152de565b5060018054806154b457fe5b60008281526020812060046000199093019283020180546001600160a01b0319908116825560018201805490911690556002810180546001600160e81b0319169055600301559055600b80548061550757fe5b60008281526020812060166000199093019283020181815560018101805460ff19169055906155396002830182617958565b615547600383016000617a5b565b50509055600081838161555657fe5b04905080156155ba5760015460005b818110156155b757826001828154811061557b57fe5b906000526020600020906004020160030154016001828154811061559b57fe5b6000918252602090912060036004909202010155600101615565565b50505b50600195945050505050565b6060806000808080806155d7613182565b6001549091505b80156156e557600181039250600b83815481106155f757fe5b600091825260209091206001601690920201015460ff16615617576156dc565b6001838154811061562457fe5b60009182526020909120600490910201546001600160a01b0316945061564b858484613b63565b935083158061565e575060018a51038610155b15615668576156dc565b60005b8a518110156156da57856001600160a01b03168b828151811061568a57fe5b6020026020010151600001516001600160a01b031614156156d25760018b82815181106156b357fe5b60209081029190910101519015156080909101526001909601956156da565b60010161566b565b505b600019016155de565b508489510360405190808252806020026020018201604052801561572357816020015b615710617923565b8152602001906001900390816157085790505b5096508489510360405190808252806020026020018201604052801561575d57816020015b60608152602001906001900390816157485790505b5095506000915060005b89518110156157f15789818151811061577c57fe5b6020026020010151608001516157e95789818151811061579857fe5b60200260200101518884815181106157ac57fe5b60200260200101819052508881815181106157c357fe5b60200260200101518784815181106157d757fe5b60200260200101819052508260010192505b600101615767565b5050505050505b9250929050565b600154825160005b8281101561591c576001615819617923565b6001838154811061582657fe5b600091825260208083206040805160c08101825260049490940290910180546001600160a01b0390811685526001820154811693850193909352600281015492831691840191909152600160a01b82046001600160401b03166060840152600160e01b90910460ff16151560808301526003015460a082015291505b848110156158f0578781815181106158b657fe5b6020026020010151600001516001600160a01b031682600001516001600160a01b031614156158e857600092506158f0565b6001016158a2565b5081156159125780516001600160a01b03166000908152600460205260408120555b5050600101615807565b50808211156159db57805b828110156159d957600180548061593a57fe5b60008281526020812060046000199093019283020180546001600160a01b0319908116825560018201805490911690556002810180546001600160e81b0319169055600301559055600b80548061598d57fe5b60008281526020812060166000199093019283020181815560018101805460ff19169055906159bf6002830182617958565b6159cd600383016000617a5b565b50509055600101615927565b505b60008183106159ea57816159ec565b825b905060005b81811015615d8457615a9e868281518110615a0857fe5b602002602001015160018381548110615a1d57fe5b60009182526020918290206040805160c08101825260049390930290910180546001600160a01b0390811684526001820154811694840194909452600281015493841691830191909152600160a01b83046001600160401b03166060830152600160e01b90920460ff161515608082015260039091015460a0820152616e39565b615c52578060010160046000888481518110615ab657fe5b6020026020010151600001516001600160a01b03166001600160a01b0316815260200190815260200160002081905550858181518110615af257fe5b602002602001015160018281548110615b0757fe5b6000918252602091829020835160049092020180546001600160a01b039283166001600160a01b0319918216178255928401516001820180549184169185169190911790556040840151600282018054606087015160808801511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b1995909716929097169190911792909216939093171692909217905560a0909101516003909101558451859082908110615bc257fe5b6020026020010151600b8281548110615bd757fe5b90600052602060002090601602016002019080519060200190615bfb929190617858565b506000600b8281548110615c0b57fe5b60009182526020822060169190910201600101805460ff191692151592909217909155600b805483908110615c3c57fe5b6000918252602090912060169091020155615d7c565b615ce3858281518110615c6157fe5b6020026020010151600b8381548110615c7657fe5b600091825260209182902060026016909202018101805460408051601f60001961010060018616150201909316949094049182018590048502840185019052808352919290919083018282801561355d5780601f106135325761010080835404028352916020019161355d565b615d2e57848181518110615cf357fe5b6020026020010151600b8281548110615d0857fe5b90600052602060002090601602016002019080519060200190615d2c929190617858565b505b858181518110615d3a57fe5b60200260200101516080015160018281548110615d5357fe5b9060005260206000209060040201600201601c6101000a81548160ff0219169083151502179055505b6001016159f1565b5082821115615f5c57615d95617829565b835b83811015615f5957858181518110615dab57fe5b602002602001015182604001819052506001878281518110615dc957fe5b6020908102919091018101518254600181810185556000948552838520835160049093020180546001600160a01b039384166001600160a01b0319918216178255848601518284018054918616918316919091179055604080860151600284018054606089015160808a01511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b1995909a1692909616919091179290921696909617169190911790935560a090930151600390930192909255600b8054928301815590935284516016909102600080516020618e23833981519152810191825585830151600080516020618e638339815191528201805491151560ff1990921691909117905592850151805186949293615eff93600080516020618e4383398151915201920190617858565b506060820151615f1590600383019060136178d2565b5050508060010160046000898481518110615f2c57fe5b602090810291909101810151516001600160a01b0316825281019190915260400160002055600101615d97565b50505b615f64616eba565b615f6c6170a2565b6000600981905560015493505b83811015615fda576000600b8281548110615f9057fe5b60009182526020822060169190910201600101805460ff191692151592909217909155600b805483908110615fc157fe5b6000918252602090912060169091020155600101615f79565b505050505050565b600061113d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250617290565b60008282018381101561113d5760405162461bcd60e51b8152600401610e1290618451565b60015481516040805182815260208084028201019091526060929190839082801561608857816020015b60608152602001906001900390816160735790505b50600b54909150831461609f579250611d0c915050565b60005b828110156161ae57600b6001600460008985815181106160be57fe5b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000205403815481106160f257fe5b600091825260209182902060026016909202018101805460408051601f60001961010060018616150201909316949094049182018590048502840185019052808352919290919083018282801561618a5780601f1061615f5761010080835404028352916020019161618a565b820191906000526020600020905b81548152906001019060200180831161616d57829003601f168201915b505050505082828151811061619b57fe5b60209081029190910101526001016160a2565b50949350505050565b60005b8281101561630457600082878388016040516020016161da92919061801b565b6040516020818303038152906040528051906020012060001c816161fa57fe5b069050808501828701146162fb576000898388018151811061621857fe5b602002602001015190506060898489018151811061623257fe5b602002602001015190508a8388018151811061624a57fe5b60200260200101518b858a018151811061626057fe5b60200260200101906001600160a01b031690816001600160a01b031681525050818b8489018151811061628f57fe5b60200260200101906001600160a01b031690816001600160a01b03168152505089838801815181106162bd57fe5b60200260200101518a858a01815181106162d357fe5b6020026020010181905250808a848901815181106162ed57fe5b602002602001018190525050505b506001016161ba565b5050505050505050565b600980546001908101909155600b80548390811061632857fe5b906000526020600020906016020160010160006101000a81548160ff02191690831515021790555043600b828154811061635e57fe5b600091825260208220601690910201919091556040516001600160a01b038416917ff62981a567ec3cec866c6fa93c55bcdf841d6292d18b8d522ececa769375d82d91a25050565b6000816040516020016163b99190617fff565b60405160208183030381529060405280519060200120836040516020016163e09190617fff565b6040516020818303038152906040528051906020012014905092915050565b015190565b815181516000916001918114808314616420576000925061645e565b600160208701838101602088015b60028483851001141561645957805183511461644d5760009650600093505b6020928301920161642e565b505050505b5090949350505050565b6001600160a01b0381166000908152600460205260408120548061649157506000199050611d0c565b6001810390506000600182815481106164a657fe5b90600052602060002090600402016003015490506000600183815481106164c957fe5b6000918252602090912060036004909202010155600154604051600019909101906001600160a01b038616907f8cd4e147d8af98a9e3b6724021b8bf6aed2e5dac71c38f2dce8161b82585b25d90616522908590618d16565b60405180910390a28061653a57829350505050611d0c565b600081838161654557fe5b04905080156166015760005b848110156165a357816001828154811061656757fe5b906000526020600020906004020160030154016001828154811061658757fe5b6000918252602090912060036004909202010155600101616551565b50600180549085015b818110156165fe5782600182815481106165c257fe5b90600052602060002090600402016003015401600182815481106165e257fe5b60009182526020909120600360049092020101556001016165ac565b50505b5091949350505050565b60008261661a57506000611dbc565b8282028284828161662757fe5b041461113d5760405162461bcd60e51b8152600401610e1290618820565b600061113d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506172bc565b61668f617a6a565b506040805180820190915281518152602082810190820152919050565b6166b461799c565b6166bd826172f3565b6166c657600080fd5b60006166d5836020015161732d565b60208085015160408051808201909152868152920190820152915050919050565b6000616700617a6a565b505080518051602091820151919092015191011190565b61671f617a6a565b616728826166f6565b61673157600080fd5b6020820151600061674182617390565b80830160209586015260408051808201909152908152938401919091525090919050565b80516000901580159061677a57508151602110155b61678357600080fd5b6000616792836020015161732d565b905080836000015110156167b85760405162461bcd60e51b8152600401610e1290618a2e565b8251602080850151830180519284900392918310156161ae57506020919091036101000a90049392505050565b60606167f0826172f3565b6167f957600080fd5b600061680483617471565b905060608160405190808252806020026020018201604052801561684257816020015b61682f617a6a565b8152602001906001900390816168275790505b5090506000616854856020015161732d565b60208601510190506000805b848110156168ab5761687183617390565b915060405180604001604052808381526020018481525084828151811061689457fe5b602090810291909101015291810191600101616860565b509195945050505050565b6168be617923565b606060006168ca617923565b60606168d461799c565b6168dd876166ac565b90506000805b6168ec836166f6565b156169c157806169175761690761690284616717565b6174cd565b6001600160a01b031685526169b9565b806001141561693f5761692c61690284616717565b6001600160a01b031660208601526169b9565b80600214156169675761695461690284616717565b6001600160a01b031660408601526169b9565b80600314156169935761697c613e8484616717565b6001600160401b03166060860152600191506169b9565b80600414156169b4576169ad6169a884616717565b6174e7565b93506169b9565b6169c1565b6001016168e3565b50929791965091945092505050565b6060611dbc6169de83617557565b61763d565b6060815160001415616a045750604080516000815260208101909152611d0c565b606082600081518110616a1357fe5b602002602001015190506000600190505b8351811015616a5457616a4a82858381518110616a3d57fe5b602002602001015161768f565b9150600101616a24565b5061113d616a67825160c060ff1661770c565b8261768f565b60608060006120026001600160a01b031663c473318f6040518163ffffffff1660e01b815260040160206040518083038186803b158015616aad57600080fd5b505afa158015616ac1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190616ae59190617ed4565b90508085518851011015616afa575083518651015b606081604051908082528060200260200182016040528015616b3657816020015b616b23617923565b815260200190600190039081616b1b5790505b509050606082604051908082528060200260200182016040528015616b6f57816020015b6060815260200190600190039081616b5a5790505b50905060008060005b8b51831080616b875750895182105b8015616b9257508581105b15616e27578b51831415616c0257898281518110616bac57fe5b6020026020010151858281518110616bc057fe5b6020026020010181905250888281518110616bd757fe5b6020026020010151848281518110616beb57fe5b602090810291909101015260019182019101616b78565b8951821415616c6d578b8381518110616c1757fe5b6020026020010151858281518110616c2b57fe5b60200260200101819052508a8381518110616c4257fe5b6020026020010151848281518110616c5657fe5b602090810291909101015260019283019201616b78565b898281518110616c7957fe5b6020026020010151606001516001600160401b03168c8481518110616c9a57fe5b6020026020010151606001516001600160401b03161115616d16578b8381518110616cc157fe5b6020026020010151858281518110616cd557fe5b60200260200101819052508a8381518110616cec57fe5b6020026020010151848281518110616d0057fe5b6020026020010181905250826001019250616e1f565b898281518110616d2257fe5b6020026020010151606001516001600160401b03168c8481518110616d4357fe5b6020026020010151606001516001600160401b03161015616dbf57898281518110616d6a57fe5b6020026020010151858281518110616d7e57fe5b6020026020010181905250888281518110616d9557fe5b6020026020010151848281518110616da957fe5b6020026020010181905250816001019150616e1f565b898281518110616dcb57fe5b6020026020010151600001516001600160a01b03168c8481518110616dec57fe5b6020026020010151600001516001600160a01b03161015616e13578b8381518110616cc157fe5b898281518110616bac57fe5b600101616b78565b50929a91995090975050505050505050565b805182516000916001600160a01b039182169116148015616e73575081602001516001600160a01b031683602001516001600160a01b0316145b8015616e98575081604001516001600160a01b031683604001516001600160a01b0316145b801561113d5750506060908101519101516001600160401b0390811691161490565b60125460135480821115616f0557805b82811015616f03576012805480616edd57fe5b600190038181906000526020600020016000616ef99190617958565b9055600101616eca565b505b6000818310616f145781616f16565b825b905060005b8181101561702e57616fd360128281548110616f3357fe5b600091825260209182902001805460408051601f6002600019610100600187161502019094169390930492830185900485028101850190915281815292830182828015616fc15780601f10616f9657610100808354040283529160200191616fc1565b820191906000526020600020905b815481529060010190602001808311616fa457829003601f168201915b5050505050601383815481106134cf57fe5b6170265760138181548110616fe457fe5b9060005260206000200160128281548110616ffb57fe5b9060005260206000200190805460018160011615610100020316600290046170249291906179bc565b505b600101616f1b565b5082821115610e3257825b8281101561709c5760126013828154811061705057fe5b60009182526020808320845460018181018755958552919093209290910180546170939493909201929091600261010092821615929092026000190116046179bc565b50600101617039565b50505050565b601354600b54808211156170ed57805b828110156170eb5760138054806170c557fe5b6001900381819060005260206000200160006170e19190617958565b90556001016170b2565b505b60008183106170fc57816170fe565b825b905060005b8181101561721d576171bb6013828154811061711b57fe5b600091825260209182902001805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156171a95780601f1061717e576101008083540402835291602001916171a9565b820191906000526020600020905b81548152906001019060200180831161718c57829003601f168201915b5050505050600b8381548110615c7657fe5b61721557600b81815481106171cc57fe5b9060005260206000209060160201600201601382815481106171ea57fe5b9060005260206000200190805460018160011615610100020316600290046172139291906179bc565b505b600101617103565b5082821115610e3257825b8281101561709c576013600b828154811061723f57fe5b600091825260208083208454600180820187559585529190932060169290920290920160029081018054617287959390940193909260001990821615610100020116046179bc565b50600101617228565b600081848411156172b45760405162461bcd60e51b8152600401610e1291906181bc565b505050900390565b600081836172dd5760405162461bcd60e51b8152600401610e1291906181bc565b5060008385816172e957fe5b0495945050505050565b805160009061730457506000611d0c565b6020820151805160001a9060c082101561732357600092505050611d0c565b5060019392505050565b8051600090811a6080811015617347576000915050611d0c565b60b8811080617362575060c08110801590617362575060f881105b15617371576001915050611d0c565b60c08110156173855760b519019050611d0c565b60f519019050611d0c565b80516000908190811a60808110156173ab576001915061746a565b60b88110156173c057607e198101915061746a565b60c081101561741157600060b78203600186019550806020036101000a86510491506001810182019350508083101561740b5760405162461bcd60e51b8152600401610e129061876d565b5061746a565b60f88110156174265760be198101915061746a565b600060f78203600186019550806020036101000a8651049150600181018201935050808310156174685760405162461bcd60e51b8152600401610e129061876d565b505b5092915050565b805160009061748257506000611d0c565b60008090506000617496846020015161732d565b602085015185519181019250015b808210156174c4576174b582617390565b820191508260010192506174a4565b50909392505050565b80516000906015146174de57600080fd5b611dbc82616765565b80516060906174f557600080fd5b6000617504836020015161732d565b83516040805191839003808352601f19601f820116830160200190915291925060609082801561753b576020820181803683370190505b50905060008160200190506161ae8487602001510182856177de565b604080516020808252818301909252606091829190602082018180368337505050602081018490529050600067ffffffffffffffff19841661759b575060186175bf565b6fffffffffffffffffffffffffffffffff1984166175bb575060106175bf565b5060005b60208110156175f5578181815181106175d457fe5b01602001516001600160f81b031916156175ed576175f5565b6001016175bf565b60008160200390506060816040519080825280601f01601f19166020018201604052801561762a576020820181803683370190505b5080830196909652508452509192915050565b60608151600114801561766f5750607f60f81b8260008151811061765d57fe5b01602001516001600160f81b03191611155b1561767b575080611d0c565b611dbc61768d8351608060ff1661770c565b835b6060806040519050835180825260208201818101602087015b818310156176c05780518352602092830192016176a8565b50855184518101855292509050808201602086015b818310156176ed5780518352602092830192016176d5565b508651929092011591909101601f01601f191660405250905092915050565b60606801000000000000000083106177365760405162461bcd60e51b8152600401610e12906185b8565b604080516001808252818301909252606091602082018180368337019050509050603784116177905782840160f81b8160008151811061777257fe5b60200101906001600160f81b031916908160001a9053509050611dbc565b606061779b85617557565b90508381510160370160f81b826000815181106177b457fe5b60200101906001600160f81b031916908160001a9053506177d5828261768f565b95945050505050565b806177e857610e32565b5b60208110617808578251825260209283019290910190601f19016177e9565b915181516020939093036101000a6000190180199091169216919091179052565b60405180608001604052806000815260200160001515815260200160608152602001617853617a84565b905290565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061789957805160ff19168380011785556178c6565b828001600101855582156178c6579182015b828111156178c65782518255916020019190600101906178ab565b506131bd929150617aa3565b82601381019282156178c657916020028201828111156178c65782518255916020019190600101906178ab565b6040518060600160405280600060ff16815260200160608152602001606081525090565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a081019190915290565b50805460018160011615610100020316600290046000825580601f1061797e5750611f24565b601f016020900490600052602060002090810190611f249190617aa3565b60405180604001604052806179af617a6a565b8152602001600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106179f557805485556178c6565b828001600101855582156178c657600052602060002091601f016020900482015b828111156178c6578254825591600101919060010190617a16565b82601381019282156178c657918201828111156178c6578254825591600101919060010190617a16565b50611f24906013810190617aa3565b604051806040016040528060008152602001600081525090565b6040518061026001604052806013906020820280368337509192915050565b61316191905b808211156131bd5760008155600101617aa9565b8035611dbc81618ded565b60008083601f840112617ad9578182fd5b5081356001600160401b03811115617aef578182fd5b60208301915083602080830285010111156157f857600080fd5b6000601f8381840112617b1a578182fd5b8235617b2d617b2882618da2565b618d7c565b818152925060208084019085810160005b84811015617bbf578135880189603f820112617b5957600080fd5b838101356001600160401b03811115617b7157600080fd5b617b82818901601f19168601618d7c565b81815260408c81848601011115617b9857600080fd5b82818501888401375060009181018601919091528552509282019290820190600101617b3e565b50505050505092915050565b600082601f830112617bdb578081fd5b8135617be9617b2882618da2565b818152915060208083019084810181840286018201871015617c0a57600080fd5b6000805b85811015617bbf5782356001600160401b0381168114617c2c578283fd5b85529383019391830191600101617c0e565b60008083601f840112617c4f578182fd5b5081356001600160401b03811115617c65578182fd5b6020830191508360208285010111156157f857600080fd5b600060208284031215617c8e578081fd5b813561113d81618ded565b600060208284031215617caa578081fd5b815161113d81618ded565b60008060008060408587031215617cca578283fd5b84356001600160401b0380821115617ce0578485fd5b617cec88838901617ac8565b90965094506020870135915080821115617d04578384fd5b50617d1187828801617ac8565b95989497509550505050565b600080600060608486031215617d31578283fd5b83356001600160401b0380821115617d47578485fd5b81860187601f820112617d58578586fd5b80359250617d68617b2884618da2565b80848252602080830192508084018b828389028701011115617d8857898afd5b8994505b86851015617db257617d9e8c82617abd565b845260019490940193928101928101617d8c565b509097508801359350505080821115617dc9578384fd5b617dd587838801617bcb565b93506040860135915080821115617dea578283fd5b50617df786828701617b09565b9150509250925092565b600060208284031215617e12578081fd5b8151801515811461113d578182fd5b60008060208385031215617e33578182fd5b82356001600160401b03811115617e48578283fd5b617e5485828601617c3e565b90969095509350505050565b60008060008060408587031215617e75578384fd5b84356001600160401b0380821115617e8b578586fd5b617e9788838901617c3e565b90965094506020870135915080821115617eaf578384fd5b50617d1187828801617c3e565b600060208284031215617ecd578081fd5b5035919050565b600060208284031215617ee5578081fd5b5051919050565b60008060408385031215617efe578182fd5b505080516020909101519092909150565b600080600060408486031215617f23578081fd5b833560ff81168114617f33578182fd5b925060208401356001600160401b03811115617f4d578182fd5b617f5986828701617c3e565b9497909650939450505050565b6000815180845260208085019450808401835b83811015617f9e5781516001600160a01b031687529582019590820190600101617f79565b509495945050505050565b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b60008151808452617feb816020860160208601618dc1565b601f01601f19169290920160200192915050565b60008251618011818460208701618dc1565b9190910192915050565b918252602082015260400190565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b03968716815294861660208601529290941660408401526001600160401b03166060830152911515608082015260a081019190915260c00190565b6001600160a01b0392909216825260ff16602082015260400190565b60006020825261113d6020830184617f66565b6000604082526180da6040830185617f66565b602083820381850152818551808452828401915082838202850101838801865b8381101561812857601f19878403018552618116838351617fd3565b948601949250908501906001016180fa565b50909998505050505050505050565b60006080825261814a6080830187617f66565b828103602084810191909152865180835287820192820190845b8181101561818057845183529383019391830191600101618164565b505084810360408601526181948188617f66565b93505050506001600160401b038316606083015295945050505050565b901515815260200190565b60006020825261113d6020830184617fd3565b6000604082526181e3604083018688617fa9565b82810360208401526181f6818587617fa9565b979650505050505050565b6020808252601c908201527f6c656e677468206f66206275726e526174696f206d69736d6174636800000000604082015260600190565b60208082526042908201527f746865206275726e526174696f20706c75732073797374656d5265776172645260408201527f6174696f206d757374206265206e6f2067726561746572207468616e20313030606082015261030360f41b608082015260a00190565b60208082526026908201527f6c656e677468206f66206d61784e756d4f664d61696e7461696e696e67206d696040820152650e6dac2e8c6d60d31b606082015260800190565b6020808252601b908201527f6261746368207472616e736665722072657475726e2066616c73650000000000604082015260600190565b6020808252602c908201527f6c656e677468206f66206d61784e756d4f66576f726b696e6743616e6469646160408201526b0e8cae640dad2e6dac2e8c6d60a31b606082015260800190565b60208082526025908201527f6c656e677468206f66206d61696e7461696e536c6173685363616c65206d69736040820152640dac2e8c6d60db1b606082015260800190565b6020808252818101527f6c656e677468206f66206e756d4f66436162696e657473206d69736d61746368604082015260600190565b60208082526019908201527f74686520636f6e7472616374206e6f7420696e69742079657400000000000000604082015260600190565b6020808252601f908201527f6f6e6c7920736c617368206f72207374616b6548756220636f6e747261637400604082015260600190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b60208082526028908201527f746865206e756d4f66436162696e657473206d75737420626520677265617465604082015267072207468616e20360c41b606082015260800190565b60208082526039908201527f746865206e756d4f66436162696e657473206d757374206265206c657373207460408201527f68616e204d41585f4e554d5f4f465f56414c494441544f525300000000000000606082015260800190565b60208082526029908201527f746865206e756d626572206f662076616c696461746f727320657863656564206040820152681d1a19481b1a5b5a5d60ba1b606082015260800190565b60208082526022908201527f63616e206e6f7420646f207468697320747769636520696e206f6e6520626c6f604082015261636b60f01b606082015260800190565b6020808252600e908201526d696e70757420746f6f206c6f6e6760901b604082015260600190565b60208082526037908201527f746865206d61784e756d4f664d61696e7461696e696e67206d7573742062652060408201527f6c657373207468616e206e756d4f66436162696e657473000000000000000000606082015260800190565b6020808252602b908201527f6475706c696361746520636f6e73656e7375732061646472657373206f66207660408201526a185b1a59185d1bdc94d95d60aa1b606082015260800190565b60208082526027908201527f7468652065787069726554696d655365636f6e64476170206973206f7574206f604082015266662072616e676560c81b606082015260800190565b6020808252601590820152746465706f7369742076616c7565206973207a65726f60581b604082015260600190565b60208082526049908201527f746865206d61784e756d4f66576f726b696e6743616e64696461746573206d7560408201527f7374206265206e6f742067726561746572207468616e206d61784e756d4f6643606082015268616e6469646174657360b81b608082015260a00190565b6020808252601190820152706164646974696f6e206f766572666c6f7760781b604082015260600190565b60208082526023908201527f63616e206e6f7420656e7465722054656d706f72617279204d61696e74656e616040820152626e636560e81b606082015260800190565b60208082526025908201527f6c656e677468206f66206a61696c2076616c696461746f7273206d757374206260408201526465206f6e6560d81b606082015260800190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252601490820152736761737072696365206973206e6f74207a65726f60601b604082015260600190565b6020808252602e908201527f746865206d6573736167652073656e646572206d75737420626520676f76657260408201526d1b985b98d94818dbdb9d1c9858dd60921b606082015260800190565b60208082526025908201527f6c656e677468206f66206d61784e756d4f6643616e64696461746573206d69736040820152640dac2e8c6d60db1b606082015260800190565b6020808252601290820152716e6f7420696e206d61696e74656e616e636560701b604082015260600190565b60208082526021908201527f666565206973206c6172676572207468616e2044555354595f494e434f4d494e6040820152604760f81b606082015260800190565b60208082526019908201527f74686520636f6e747261637420616c726561647920696e697400000000000000604082015260600190565b60208082526042908201527f7468652073797374656d526577617264526174696f20706c7573206275726e5260408201527f6174696f206d757374206265206e6f2067726561746572207468616e20313030606082015261030360f41b608082015260a00190565b6020808252601a908201527f6c656e677468206973206c657373207468616e206f6666736574000000000000604082015260600190565b60208082526026908201527f6c656e677468206f662065787069726554696d655365636f6e64476170206d696040820152650e6dac2e8c6d60d31b606082015260800190565b60208082526017908201527f6f6e6c792063757272656e742076616c696461746f7273000000000000000000604082015260600190565b60208082526021908201527f6661696c656420746f20706172736520696e69742076616c696461746f7253656040820152601d60fa1b606082015260800190565b6020808252602f908201527f746865206d6573736167652073656e646572206d7573742062652063726f737360408201526e0818da185a5b8818dbdb9d1c9858dd608a1b606082015260800190565b6020808252602d908201527f746865206d6573736167652073656e646572206d75737420626520746865206260408201526c3637b1b590383937b23ab1b2b960991b606082015260800190565b60208082526024908201527f6c656e677468206f662073797374656d526577617264526174696f206d69736d6040820152630c2e8c6d60e31b606082015260800190565b6020808252603e908201527f746865206d61696e7461696e536c6173685363616c65206d757374206265206760408201527f726561746572207468616e203020616e64206c657373207468616e2031300000606082015260800190565b6020808252600d908201526c756e6b6e6f776e20706172616d60981b604082015260600190565b60208082526029908201527f746865206d6573736167652073656e646572206d75737420626520736c6173686040820152680818dbdb9d1c9858dd60ba1b606082015260800190565b6020808252601f908201527f746865206d73672073656e646572206d757374206265207374616b6548756200604082015260600190565b61ffff91909116815260200190565b90815260200190565b60008482528315156020830152606060408301526177d56060830184617fd3565b63ffffffff91909116815260200190565b60ff91909116815260200190565b600060ff85168252604060208301526177d5604083018486617fa9565b6040518181016001600160401b0381118282101715618d9a57600080fd5b604052919050565b60006001600160401b03821115618db7578081fd5b5060209081020190565b60005b83811015618ddc578181015183820152602001618dc4565b8381111561709c5750506000910152565b6001600160a01b0381168114611f2457600080fdfe70e72399380dcfb0338abc03dc8d47f9f470ada8e769c9a78d644ea97385ecb20175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db90175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01dbb0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01dbaf87680f873f871949fb29aac15b9a4b7f17c3385939b007540f4d791949fb29aac15b9a4b7f17c3385939b007540f4d791949fb29aac15b9a4b7f17c3385939b007540f4d79164b085e6972fc98cd3c81d64d40e325acfed44365b97a7567a27939c14dbc7512ddcf54cb1284eb637cfa308ae4e00cb5588a164736f6c6343000604000a", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/9d09d0a3d6332460a810188261ec8195e05aa218", + Code: "6080604052600436106104fb5760003560e01c806388b32f111161028c578063c6d339451161015a578063e40716a1116100cc578063f92eb86b11610085578063f92eb86b14610d2d578063f9a2bbc714610d42578063fc3e590814610d57578063fccc281314610d6c578063fd4ad81f14610d81578063fd6a687914610db057610502565b8063e40716a114610c9b578063ea321e4914610cb0578063eb57e20214610cd0578063eda5868c14610cf0578063f1fad10414610d05578063f340fa0114610d1a57610502565b8063d86222d51161011e578063d86222d514610c1d578063daacdb6614610c32578063dc927faf14610c47578063df8079e914610c5c578063e086c7b114610c71578063e1c7392a14610c8657610502565b8063c6d3394514610bbe578063c81b166214610bd3578063c8509d811461098d578063ce910b0c14610be8578063d68fb56a14610c0857610502565b8063a78abc16116101fe578063ad3c9da6116101b7578063ad3c9da614610b3d578063aef198a914610b5d578063b7ab4db514610b72578063b8cf4ef114610b94578063bf9f4995146106fe578063c466689d14610ba957610502565b8063a78abc1614610ab4578063aa82dce114610ac9578063aad5606314610ade578063aaf5eb6814610af3578063ab51bb9614610b08578063ac43175114610b1d57610502565b806396713da91161025057806396713da914610a365780639dc0926214610a4b5780639fe0f81614610a60578063a0dc275814610a75578063a1a11bf514610a8a578063a5422d5c14610a9f57610502565b806388b32f11146109c25780638a7beb01146109d75780638b5ad0c9146109ec5780638d19a41014610a015780639369d7de14610a2157610502565b806351b4dce3116103c957806370fd5bad1161033b5780637e434d54116102f45780637e434d541461094e57806381650b6214610963578063820dcaa814610978578063831d65d11461098d578063853230aa1461090f57806386249882146109ad57610502565b806370fd5bad146108d0578063718a8aa8146108e557806375d47a0a146108fa57806378dfed4a1461090f5780637942fd05146109245780637a84ca2a1461093957610502565b80635d77156c1161038d5780635d77156c1461082a5780635de1e22c1461083f57806360eba4fe1461085457806362b72cf5146108745780636969a25c146108895780636e47b482146108bb57610502565b806351b4dce3146107ab57806351e80672146107c057806355614fcc146107d5578063565c56b3146107f55780635667515a1461081557610502565b8063300c35671161046d57806343756e5c1161042657806343756e5c1461072057806345cf9daf14610735578063493279b11461074a5780634bf6c8821461076c5780634df6e0c3146107815780635192c82c1461079657610502565b8063300c35671461065b578063321d398a1461067b5780633365af3a1461069b57806335409f7f146106bb5780633b071dcc146106db5780633dffc387146106fe57610502565b8063152ad3b8116104bf578063152ad3b8146105ba5780631e4c1524146105dc5780631ff18069146105fc578063219f22d51461061157806328087028146106265780632a0ffb6e1461063b57610502565b806304c4fec61461050757806307a568471461051e5780630bee7a67146105495780630e2374a51461056b5780631182b8751461058d57610502565b3661050257005b600080fd5b34801561051357600080fd5b5061051c610dc5565b005b34801561052a57600080fd5b50610533610e37565b6040516105409190618fa3565b60405180910390f35b34801561055557600080fd5b5061055e610e3d565b6040516105409190618fcd565b34801561057757600080fd5b50610580610e42565b60405161054091906182b6565b34801561059957600080fd5b506105ad6105a836600461819c565b610e48565b6040516105409190618449565b3480156105c657600080fd5b506105cf611144565b604051610540919061843e565b3480156105e857600080fd5b5061051c6105f7366004617faa565b61114d565b34801561060857600080fd5b50610533611823565b34801561061d57600080fd5b5061055e611829565b34801561063257600080fd5b5061058061182e565b34801561064757600080fd5b5061051c610656366004617f0a565b611834565b34801561066757600080fd5b5061051c610676366004617f42565b6118e1565b34801561068757600080fd5b506105cf610696366004618149565b611c2a565b3480156106a757600080fd5b506105cf6106b6366004618149565b611cf9565b3480156106c757600080fd5b5061051c6106d6366004617f0a565b611daa565b3480156106e757600080fd5b506106f0611f0f565b604051610540929190618354565b34801561070a57600080fd5b506107136121eb565b6040516105409190618fde565b34801561072c57600080fd5b506105806121f0565b34801561074157600080fd5b506105336121f6565b34801561075657600080fd5b5061075f6121fc565b6040516105409190618f94565b34801561077857600080fd5b50610713612202565b34801561078d57600080fd5b506106f0612207565b3480156107a257600080fd5b50610533612393565b3480156107b757600080fd5b50610580612399565b3480156107cc57600080fd5b5061058061239f565b3480156107e157600080fd5b506105cf6107f0366004617f0a565b6123a5565b34801561080157600080fd5b50610533610810366004617f0a565b6123da565b34801561082157600080fd5b5061071361242b565b34801561083657600080fd5b5061055e612430565b34801561084b57600080fd5b50610533612435565b34801561086057600080fd5b506105ad61086f366004618149565b61243b565b34801561088057600080fd5b506105336124e1565b34801561089557600080fd5b506108a96108a4366004618149565b6124e7565b604051610540969594939291906182e3565b3480156108c757600080fd5b5061058061254b565b3480156108dc57600080fd5b50610713612551565b3480156108f157600080fd5b50610713612556565b34801561090657600080fd5b5061058061255b565b34801561091b57600080fd5b50610533612561565b34801561093057600080fd5b50610713612567565b34801561094557600080fd5b5061053361256c565b34801561095a57600080fd5b50610580612572565b34801561096f57600080fd5b5061055e612578565b34801561098457600080fd5b5061053361257d565b34801561099957600080fd5b5061051c6109a836600461819c565b612583565b3480156109b957600080fd5b506105336125e4565b3480156109ce57600080fd5b506105336125ea565b3480156109e357600080fd5b506105cf6125f0565b3480156109f857600080fd5b506105336125f9565b348015610a0d57600080fd5b50610533610a1c366004617f0a565b6125ff565b348015610a2d57600080fd5b5061051c61263f565b348015610a4257600080fd5b50610713612753565b348015610a5757600080fd5b50610580612758565b348015610a6c57600080fd5b5061053361275e565b348015610a8157600080fd5b50610533612763565b348015610a9657600080fd5b50610580612768565b348015610aab57600080fd5b506105ad61276e565b348015610ac057600080fd5b506105cf61278a565b348015610ad557600080fd5b50610580612793565b348015610aea57600080fd5b50610580612799565b348015610aff57600080fd5b5061053361279f565b348015610b1457600080fd5b5061055e61242b565b348015610b2957600080fd5b5061051c610b383660046180ed565b6127a8565b348015610b4957600080fd5b50610533610b58366004617f0a565b613061565b348015610b6957600080fd5b50610533613073565b348015610b7e57600080fd5b50610b87613080565b6040516105409190618341565b348015610ba057600080fd5b5061053361316c565b348015610bb557600080fd5b50610533613171565b348015610bca57600080fd5b50610533612551565b348015610bdf57600080fd5b50610580613177565b348015610bf457600080fd5b506105ad610c03366004618149565b61317d565b348015610c1457600080fd5b5061053361318a565b348015610c2957600080fd5b506105336131c9565b348015610c3e57600080fd5b506105336131d5565b348015610c5357600080fd5b506105806131db565b348015610c6857600080fd5b506105806131e1565b348015610c7d57600080fd5b50610533610e3d565b348015610c9257600080fd5b5061051c6131e7565b348015610ca757600080fd5b50610533613478565b348015610cbc57600080fd5b506105cf610ccb3660046180ae565b61347e565b348015610cdc57600080fd5b5061051c610ceb366004617f0a565b613604565b348015610cfc57600080fd5b5061055e613708565b348015610d1157600080fd5b5061071361370d565b61051c610d28366004617f0a565b613712565b348015610d3957600080fd5b50610533613a91565b348015610d4e57600080fd5b50610580613a97565b348015610d6357600080fd5b5061071361275e565b348015610d7857600080fd5b50610580613a9d565b348015610d8d57600080fd5b50610da1610d9c366004618149565b613aa3565b60405161054093929190618fac565b348015610dbc57600080fd5b50610580613b65565b6000610dd0336125ff565b9050600b8181548110610ddf57fe5b600091825260209091206001601690920201015460ff16610e1b5760405162461bcd60e51b8152600401610e1290618baf565b60405180910390fd5b6000610e2561318a565b9050610e32338383613b6b565b505050565b60095481565b606481565b61200181565b60005460609060ff16610e6d5760405162461bcd60e51b8152600401610e1290618670565b600b54610f2b57610e7c617ab6565b60015460005b81811015610f2757600b805460018101825560009190915283516000805160206190b083398151915260169092029182019081556020808601516000805160206190f08339815191528401805460ff1916911515919091179055604086015180518794610f03936000805160206190d0833981519152909101920190617ae5565b506060820151610f199060038301906013617b5f565b505050806001019050610e82565b5050505b610f33617b8c565b6000610f7485858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250613e3c92505050565b9150915080610f9057610f876064613ff8565b9250505061113d565b815160009060ff16610fb557610fae83602001518460400151614059565b9050611109565b825160ff166001141561110557826020015151600114610ffa57600080516020619090833981519152604051610fea90618a68565b60405180910390a1506067611100565b6000836020015160008151811061100d57fe5b602090810291909101810151516001600160a01b0381166000908152600490925260409091205490915080158061106e575060018082038154811061104e57fe5b9060005260206000209060040201600201601c9054906101000a900460ff165b156110ac576040516001600160a01b038316907fe209c46bebf57cf265d5d9009a00870e256d9150f3ed5281ab9d9eb3cec6e4be90600090a26110f9565b60006110bb836001840361521b565b9050806110f7576040516001600160a01b038416907fe209c46bebf57cf265d5d9009a00870e256d9150f3ed5281ab9d9eb3cec6e4be90600090a25b505b6000925050505b611109565b5060655b63ffffffff811661112e575050604080516000815260208101909152915061113d9050565b61113781613ff8565b93505050505b9392505050565b60075460ff1681565b33411461116c5760405162461bcd60e51b8152600401610e1290618dff565b3a1561118a5760405162461bcd60e51b8152600401610e1290618aee565b82516040805182815260208084028201019091526060908280156111c857816020015b6111b5617bb0565b8152602001906001900390816111ad5790505b50905060005b82811015611272576040518060c001604052808783815181106111ed57fe5b60200260200101516001600160a01b0316815260200160006001600160a01b0316815260200160006001600160a01b0316815260200186838151811061122f57fe5b60200260200101516001600160401b03168152602001600015158152602001600081525082828151811061125f57fe5b60209081029190910101526001016111ce565b5060405163d31f968d60e01b81526120009063d31f968d9061129d9061100090600890600401618325565b60206040518083038186803b1580156112b557600080fd5b505afa1580156112c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ed919061808e565b156116105780516015548181111561138f57815b8181101561138d57601580548061131457fe5b60008281526020812060046000199093019283020180546001600160a01b0319908116825560018201805490911690556002810180546001600160e81b0319169055600301559055601680548061136757fe5b6001900381819060005260206000200160006113839190617be5565b9055600101611301565b505b60005b828110156115cf578181106114b75760158482815181106113af57fe5b602090810291909101810151825460018181018555600094855293839020825160049092020180546001600160a01b039283166001600160a01b0319918216178255938301519481018054958316958516959095179094556040820151600285018054606085015160808601511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b199590961692909716919091179290921692909217169290921790915560a00151600390910155855160169087908390811061147f57fe5b602090810291909101810151825460018101845560009384529282902081516114b19491909101929190910190617ae5565b506115c7565b8381815181106114c357fe5b6020026020010151601582815481106114d857fe5b6000918252602091829020835160049092020180546001600160a01b039283166001600160a01b0319918216178255928401516001820180549184169185169190911790556040840151600282018054606087015160808801511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b1995909716929097169190911792909216939093171692909217905560a090910151600390910155855186908290811061159357fe5b6020026020010151601682815481106115a857fe5b9060005260206000200190805190602001906115c5929190617ae5565b505b600101611392565b507fb8e726330a0dad1cf3d04e925663b17e391f1ed547d79b7f4e5f344119b44246826040516115ff9190618fa3565b60405180910390a150505050610e32565b60608061161d83866155de565b9150915060005b6001548110156117135760006001828154811061163d57fe5b90600052602060002090600402016003015490508060001461170a5760006001838154811061166857fe5b9060005260206000209060040201600301819055506120026001600160a01b031663092193ab826001858154811061169c57fe5b60009182526020909120600491820201546040516001600160e01b031960e086901b1681526116d7926001600160a01b0390921691016182b6565b6000604051808303818588803b1580156116f057600080fd5b505af1158015611704573d6000803e3d6000fd5b50505050505b50600101611624565b504715611781577f6ecc855f9440a9282c90913bbc91619fd44f5ec0b462af28d127b116f130aa4d476040516117499190618fa3565b60405180910390a1604051611002904780156108fc02916000818181858888f1935050505015801561177f573d6000803e3d6000fd5b505b6000600381905560055581511561179c5761179c8282615ac5565b6110016001600160a01b031663fc4333cd6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156117d957600080fd5b505af11580156117ed573d6000803e3d6000fd5b50506040517fedd8d7296956dd970ab4de3f2fc03be2b0ffc615d20cd4c72c6e44f928630ebf925060009150a150505050505050565b60035481565b606881565b61200581565b33612002146118555760405162461bcd60e51b8152600401610e1290618f5d565b60005b6015548110156118dd57816001600160a01b03166015828154811061187957fe5b60009182526020909120600490910201546001600160a01b031614156118d5576001601582815481106118a857fe5b9060005260206000209060040201600201601c6101000a81548160ff0219169083151502179055506118dd565b600101611858565b5050565b3341146119005760405162461bcd60e51b8152600401610e1290618dff565b60105443116119215760405162461bcd60e51b8152600401610e1290618803565b3a1561193f5760405162461bcd60e51b8152600401610e1290618aee565b60005460ff166119615760405162461bcd60e51b8152600401610e1290618670565b60006110023168056bc75e2d63100000811115611998576119918168056bc75e2d6310000063ffffffff6162b416565b915061199f565b5050611c20565b6040516309a99b4f60e41b815261100290639a99b4f0906119c690309086906004016182ca565b602060405180830381600087803b1580156119e057600080fd5b505af11580156119f4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a189190618161565b915081611a26575050611c20565b6000805b84811015611a5457858582818110611a3e57fe5b9050602002013582019150806001019050611a2a565b5080611a6257505050611c20565b6000806000805b89811015611c185784898983818110611a7e57fe5b90506020020135880281611a8e57fe5b0493508a8a82818110611a9d57fe5b9050602002016020810190611ab29190617f0a565b6001600160a01b03811660009081526004602052604090205490935091508115611bce576000600180840381548110611ae757fe5b9060005260206000209060040201905080600201601c9054906101000a900460ff1615611b5457836001600160a01b03167fb9c75cbbfde137c4281689580799ef5f52144e78858f776a5979b2b212137d8586604051611b479190618fa3565b60405180910390a2611bc8565b600354611b67908663ffffffff6162f616565b6003908155810154611b7f908663ffffffff6162f616565b60038201556040516001600160a01b038516907fcb0aad6cf9cd03bdf6137e359f541c42f38b39f007cae8e89e88aa7d8c6617b290611bbf908890618fa3565b60405180910390a25b50611c10565b826001600160a01b03167fb9c75cbbfde137c4281689580799ef5f52144e78858f776a5979b2b212137d8585604051611c079190618fa3565b60405180910390a25b600101611a69565b505050505050505b5050436010555050565b6001546000908210611c3e57506000611cf4565b60006001600160a01b031660018381548110611c5657fe5b60009182526020909120600490910201546001600160a01b03161480611c8657506008541580611c865750600a54155b80611c95575060085460095410155b80611ca65750611ca482611cf9565b155b80611ccf57506000600b8381548110611cbb57fe5b906000526020600020906016020160000154115b80611ce357506001611cdf613080565b5111155b15611cf057506000611cf4565b5060015b919050565b6001546000908210611d0d57506000611cf4565b600b548210611d4a5760018281548110611d2357fe5b9060005260206000209060040201600201601c9054906101000a900460ff16159050611cf4565b60018281548110611d5757fe5b9060005260206000209060040201600201601c9054906101000a900460ff16158015611da45750600b8281548110611d8b57fe5b600091825260209091206001601690920201015460ff16155b92915050565b600b54611e6857611db9617ab6565b60015460005b81811015611e6457600b805460018101825560009190915283516000805160206190b083398151915260169092029182019081556020808601516000805160206190f08339815191528401805460ff1916911515919091179055604086015180518794611e40936000805160206190d0833981519152909101920190617ae5565b506060820151611e569060038301906013617b5f565b505050806001019050611dbf565b5050505b336110011480611e79575033612002145b611e955760405162461bcd60e51b8152600401610e12906186a7565b6001600160a01b03811660009081526004602052604090205480611eb95750611f0c565b6001810390506000600b8281548110611ece57fe5b600091825260209091206001601690920201015460ff169050611ef1838361521b565b8015611efa5750805b15610e32576009805460001901905550505b50565b60015460609081906000805b82811015611f625760018181548110611f3057fe5b9060005260206000209060040201600201601c9054906101000a900460ff16611f5a576001909101905b600101611f1b565b50606081604051908082528060200260200182016040528015611f8f578160200160208202803683370190505b509050606082604051908082528060200260200182016040528015611fc857816020015b6060815260200190600190039081611fb35790505b50600b54600094509091508414156121435760005b8481101561213d5760018181548110611ff257fe5b9060005260206000209060040201600201601c9054906101000a900460ff16612135576001818154811061202257fe5b600091825260209091206004909102015483516001600160a01b039091169084908690811061204d57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050600b818154811061207a57fe5b600091825260209182902060026016909202018101805460408051601f6000196101006001861615020190931694909404918201859004850284018501905280835291929091908301828280156121125780601f106120e757610100808354040283529160200191612112565b820191906000526020600020905b8154815290600101906020018083116120f557829003601f168201915b505050505082858151811061212357fe5b60209081029190910101526001909301925b600101611fdd565b506121df565b60005b848110156121dd576001818154811061215b57fe5b9060005260206000209060040201600201601c9054906101000a900460ff166121d5576001818154811061218b57fe5b600091825260209091206004909102015483516001600160a01b03909116908490869081106121b657fe5b6001600160a01b03909216602092830291909101909101526001909301925b600101612146565b505b909450925050505b9091565b600181565b61100181565b60085481565b6102ca81565b600881565b6060806000600e549050600080600c5411612223576015612227565b600c545b90506060612233613080565b905060606122408261631b565b9050828251116122575790945092506121e7915050565b83838351031015612269578282510393505b831561229f576014430461228583838388880360008a8a616489565b61229d8383838888038989038a8b8b8b510301616489565b505b6060836040519080825280602002602001820160405280156122cb578160200160208202803683370190505b50905060608460405190808252806020026020018201604052801561230457816020015b60608152602001906001900390816122ef5790505b50905060005b858110156123855784818151811061231e57fe5b602002602001015183828151811061233257fe5b60200260200101906001600160a01b031690816001600160a01b03168152505083818151811061235e57fe5b602002602001015182828151811061237257fe5b602090810291909101015260010161230a565b509096509450505050509091565b60065481565b61200681565b61200081565b6001600160a01b038116600090815260046020526040812054806123cd576000915050611cf4565b6000190161113d81611cf9565b6001600160a01b03811660009081526004602052604081205480612402576000915050611cf4565b60018082038154811061241157fe5b906000526020600020906004020160030154915050919050565b600081565b606781565b600f5481565b6012818154811061244857fe5b600091825260209182902001805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152935090918301828280156124d95780601f106124ae576101008083540402835291602001916124d9565b820191906000526020600020905b8154815290600101906020018083116124bc57829003601f168201915b505050505081565b60105481565b600181815481106124f457fe5b600091825260209091206004909102018054600182015460028301546003909301546001600160a01b0392831694509082169291821691600160a01b81046001600160401b031691600160e01b90910460ff169086565b61100581565b600281565b601081565b61100881565b6103e881565b600b81565b600c5481565b61200381565b606681565b61271081565b33612000146125a45760405162461bcd60e51b8152600401610e1290618db0565b7f41ce201247b6ceb957dcdb217d0b8acb50b9ea0e12af9af4f5e7f389021016058383836040516125d793929190618fec565b60405180910390a1505050565b60025481565b60115481565b60145460ff1681565b600a5481565b6001600160a01b038116600090815260046020526040812054806126355760405162461bcd60e51b8152600401610e1290618d38565b6000190192915050565b600b546126fd5761264e617ab6565b60015460005b818110156126f957600b805460018101825560009190915283516000805160206190b083398151915260169092029182019081556020808601516000805160206190f08339815191528401805460ff19169115159190911790556040860151805187946126d5936000805160206190d0833981519152909101920190617ae5565b5060608201516126eb9060038301906013617b5f565b505050806001019050612654565b5050505b60085461270a5760036008555b600a54612717576002600a555b6000612722336125ff565b905061272d81611c2a565b6127495760405162461bcd60e51b8152600401610e1290618a25565b611f0c33826165e0565b600981565b61100781565b600381565b601481565b61100681565b6040518060a00160405280607881526020016191106078913981565b60005460ff1681565b61200281565b61300081565b6402540be40081565b60005460ff166127ca5760405162461bcd60e51b8152600401610e1290618670565b33611007146127eb5760405162461bcd60e51b8152600401610e1290618b1c565b61285584848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080518082019091526013815272065787069726554696d655365636f6e6447617606c1b602082015291506166789050565b156128f2576020811461287a5760405162461bcd60e51b8152600401610e1290618cf2565b604080516020601f84018190048102820181019092528281526000916128b8918585808385018382808284376000920191909152506166d192505050565b9050606481101580156128ce5750620186a08111155b6128ea5760405162461bcd60e51b8152600401610e1290618915565b60025561301e565b61295284848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260098152686275726e526174696f60b81b602082015291506166789050565b156129f557602081146129775760405162461bcd60e51b8152600401610e129061848e565b604080516020601f84018190048102820181019092528281526000916129b5918585808385018382808284376000920191909152506166d192505050565b90506127106129cf600f54836162f690919063ffffffff16565b11156129ed5760405162461bcd60e51b8152600401610e12906184c5565b60065561301e565b612a5f84848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260138152726d61784e756d4f664d61696e7461696e696e6760681b602082015291506166789050565b15612af95760208114612a845760405162461bcd60e51b8152600401610e129061852d565b604080516020601f8401819004810282018101909252828152600091612ac2918585808385018382808284376000920191909152506166d192505050565b600c5490915080612ad1575060155b808210612af05760405162461bcd60e51b8152600401610e129061886d565b5060085561301e565b612b6284848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260128152716d61696e7461696e536c6173685363616c6560701b602082015291506166789050565b15612bfb5760208114612b875760405162461bcd60e51b8152600401610e12906185f6565b604080516020601f8401819004810282018101909252828152600091612bc5918585808385018382808284376000920191909152506166d192505050565b9050600081118015612bd75750600a81105b612bf35760405162461bcd60e51b8152600401610e1290618e90565b600a5561301e565b612c6f84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601981527f6d61784e756d4f66576f726b696e6743616e6469646174657300000000000000602082015291506166789050565b15612cfe5760208114612c945760405162461bcd60e51b8152600401610e12906185aa565b604080516020601f8401819004810282018101909252828152600091612cd2918585808385018382808284376000920191909152506166d192505050565b9050600d54811115612cf65760405162461bcd60e51b8152600401610e129061898b565b600e5561301e565b612d6784848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260128152716d61784e756d4f6643616e6469646174657360701b602082015291506166789050565b15612de95760208114612d8c5760405162461bcd60e51b8152600401610e1290618b6a565b604080516020601f8401819004810282018101909252828152600091612dca918585808385018382808284376000920191909152506166d192505050565b600d819055600e54909150811015612de357600d54600e555b5061301e565b612e4d84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600d81526c6e756d4f66436162696e65747360981b602082015291506166789050565b15612efb5760208114612e725760405162461bcd60e51b8152600401610e129061863b565b604080516020601f8401819004810282018101909252828152600091612eb0918585808385018382808284376000920191909152506166d192505050565b905060008111612ed25760405162461bcd60e51b8152600401610e1290618715565b6064811115612ef35760405162461bcd60e51b8152600401610e129061875d565b600c5561301e565b612f6384848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601181527073797374656d526577617264526174696f60781b602082015291506166789050565b156130065760208114612f885760405162461bcd60e51b8152600401610e1290618e4c565b604080516020601f8401819004810282018101909252828152600091612fc6918585808385018382808284376000920191909152506166d192505050565b9050612710612fe0600654836162f690919063ffffffff16565b1115612ffe5760405162461bcd60e51b8152600401610e1290618c53565b600f5561301e565b60405162461bcd60e51b8152600401610e1290618eed565b7f6cdb0ac70ab7f2e2d035cca5be60d89906f2dede7648ddbd7402189c1eeed17a84848484604051613053949392919061845c565b60405180910390a150505050565b60046020526000908152604090205481565b68056bc75e2d6310000081565b6001546060906000805b828110156130af5761309b81611cf9565b156130a7578160010191505b60010161308a565b506060816040519080825280602002602001820160405280156130dc578160200160208202803683370190505b5090506000915060005b83811015613163576130f781611cf9565b1561315b576001818154811061310957fe5b600091825260209091206004909102015482516001600160a01b039091169083908590811061313457fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508260010192505b6001016130e6565b50925050505b90565b601581565b61027181565b61100281565b6013818154811061244857fe5b6000613194613080565b519050600080600c54116131a95760156131ad565b600c545b9050808211156131bb578091505b816131c557600191505b5090565b67016345785d8a000081565b60055481565b61100381565b61200481565b60005460ff161561320a5760405162461bcd60e51b8152600401610e1290618c1c565b613212617b8c565b60006132356040518060a001604052806078815260200161911060789139613e3c565b91509150806132565760405162461bcd60e51b8152600401610e1290618d6f565b61325e617ab6565b60005b83602001515181101561345f57600b805460018101825560009190915282516000805160206190b083398151915260169092029182019081556020808501516000805160206190f08339815191528401805460ff19169115159190911790556040850151805186946132e7936000805160206190d0833981519152909101920190617ae5565b5060608201516132fd9060038301906013617b5f565b5050508360400151818151811061331057fe5b6020026020010151600b828154811061332557fe5b90600052602060002090601602016002019080519060200190613349929190617ae5565b5060018460200151828151811061335c57fe5b60209081029190910181015182546001818101855560009485528385208351600493840290910180546001600160a01b039283166001600160a01b03199182161782558587015182850180549185169183169190911790556040860151600283018054606089015160808a01511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b199590981692909516919091179290921694909417161790915560a09093015160039093019290925591870151805191850193918590811061343257fe5b602090810291909101810151516001600160a01b0316825281019190915260400160002055600101613261565b50506103e860025550506000805460ff19166001179055565b600d5481565b601354600090815b818110156135875761356f85858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506013805490925085915081106134d757fe5b600091825260209182902001805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156135655780601f1061353a57610100808354040283529160200191613565565b820191906000526020600020905b81548152906001019060200180831161354857829003601f168201915b50505050506166d6565b1561357f57600192505050611da4565b600101613486565b5060125460005b818110156135f8576135df86868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506012805490925085915081106134d757fe5b156135f05760019350505050611da4565b60010161358e565b50600095945050505050565b33611001146136255760405162461bcd60e51b8152600401610e1290618f14565b600b546136e357613634617ab6565b60015460005b818110156136df57600b805460018101825560009190915283516000805160206190b083398151915260169092029182019081556020808601516000805160206190f08339815191528401805460ff19169115159190911790556040860151805187946136bb936000805160206190d0833981519152909101920190617ae5565b5060608201516136d19060038301906013617b5f565b50505080600101905061363a565b5050505b60006136ee8261673a565b90506136f981611c2a565b156118dd576118dd82826165e0565b606581565b601181565b3341146137315760405162461bcd60e51b8152600401610e1290618dff565b60005460ff166137535760405162461bcd60e51b8152600401610e1290618670565b600034116137735760405162461bcd60e51b8152600401610e129061895c565b3a156137915760405162461bcd60e51b8152600401610e1290618aee565b6001600160a01b03811660009081526004602052604090205460145434919060ff166137d157610271600f556103e86006556014805460ff191660011790555b6000821180156137e357506000600f54115b15613895576000613811612710613805600f54346168bd90919063ffffffff16565b9063ffffffff6168f716565b90508015613893576040516110029082156108fc029083906000818181858888f19350505050158015613848573d6000803e3d6000fd5b507f6ecc855f9440a9282c90913bbc91619fd44f5ec0b462af28d127b116f130aa4d816040516138789190618fa3565b60405180910390a1613890838263ffffffff6162b416565b92505b505b6000821180156138a757506000600654115b1561394d5760006138c9612710613805600654346168bd90919063ffffffff16565b9050801561394b5760405161dead9082156108fc029083906000818181858888f19350505050158015613900573d6000803e3d6000fd5b507f627059660ea01c4733a328effb2294d2f86905bf806da763a89cee254de8bee5816040516139309190618fa3565b60405180910390a1613948838263ffffffff6162b416565b92505b505b8015613a4b57600060018083038154811061396457fe5b9060005260206000209060040201905080600201601c9054906101000a900460ff16156139d157836001600160a01b03167ff177e5d6c5764d79c32883ed824111d9b13f5668cf6ab1cc12dd36791dd955b4846040516139c49190618fa3565b60405180910390a2613a45565b6003546139e4908463ffffffff6162f616565b60039081558101546139fc908463ffffffff6162f616565b60038201556040516001600160a01b038516907f93a090ecc682c002995fad3c85b30c5651d7fd29b0be5da9d784a3302aedc05590613a3c908690618fa3565b60405180910390a25b50610e32565b826001600160a01b03167ff177e5d6c5764d79c32883ed824111d9b13f5668cf6ab1cc12dd36791dd955b483604051613a849190618fa3565b60405180910390a2505050565b600e5481565b61100081565b61dead81565b600b8181548110613ab057fe5b6000918252602091829020601691909102018054600180830154600280850180546040805161010096831615969096026000190190911692909204601f810188900488028501880190925281845293965060ff90911694919291830182828015613b5b5780601f10613b3057610100808354040283529160200191613b5b565b820191906000526020600020905b815481529060010190602001808311613b3e57829003601f168201915b5050505050905083565b61100481565b6000600a5460001480613b7c575081155b80613b875750600954155b15613b945750600061113d565b60096000815460019003919050819055506000613bdf600a5461380585613805600b8981548110613bc157fe5b6000918252602090912060169091020154439063ffffffff6162b416565b90506000600b8581548110613bf057fe5b906000526020600020906016020160010160006101000a81548160ff0219169083151502179055506000806110016001600160a01b0316638256ace66040518163ffffffff1660e01b8152600401604080518083038186803b158015613c5557600080fd5b505afa158015613c69573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c8d9190618179565b9150915060009350808310613dec57613ca6878761521b565b5060405163436aa28360e11b8152600090612002906386d5450690613ccf908b906004016182b6565b60206040518083038186803b158015613ce757600080fd5b505afa158015613cfb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d1f9190617f26565b6001600160a01b031614613d8b576040516313d13bdb60e31b815261100190639e89ded890613d54908a9087906004016182ca565b600060405180830381600087803b158015613d6e57600080fd5b505af1158015613d82573d6000803e3d6000fd5b50505050613de3565b6040516305bfb49960e41b815261100190635bfb499090613db0908a906004016182b6565b600060405180830381600087803b158015613dca57600080fd5b505af1158015613dde573d6000803e3d6000fd5b505050505b60019350613dfe565b818310613dfe57613dfc8761673a565b505b6040516001600160a01b038816907fb9d38178dc641ff1817967a63c9078cbcd955a9f1fcd75e0e3636de615d44d3b90600090a25050509392505050565b613e44617b8c565b6000613e4e617b8c565b613e56617c29565b613e67613e6286616939565b61695e565b90506000805b613e76836169a8565b15613fea5780613e9b57613e91613e8c846169c9565b616a17565b60ff168452613fe2565b8060011415613fdd576060613eb7613eb2856169c9565b616a97565b90508051604051908082528060200260200182016040528015613ef457816020015b613ee1617bb0565b815260200190600190039081613ed95790505b5085602001819052508051604051908082528060200260200182016040528015613f3257816020015b6060815260200190600190039081613f1d5790505b50604086015260005b8151811015613fd257613f4c617bb0565b60606000613f6c858581518110613f5f57fe5b6020026020010151616b68565b92509250925080613f8c578860009a509a50505050505050505050613ff3565b8289602001518581518110613f9d57fe5b60200260200101819052508189604001518581518110613fb957fe5b6020026020010181905250505050806001019050613f3b565b506001925050613fe2565b613fea565b600101613e6d565b50919350909150505b915091565b604080516001808252818301909252606091829190816020015b60608152602001906001900390816140125790505090506140388363ffffffff16616c82565b8160008151811061404557fe5b602002602001018190525061113d81616c95565b600060648351111561409057600080516020619090833981519152604051614080906187ba565b60405180910390a1506066611da4565b60005b835181101561412e5760005b81811015614125578481815181106140b357fe5b6020026020010151600001516001600160a01b03168583815181106140d457fe5b6020026020010151600001516001600160a01b0316141561411d5760008051602061909083398151915260405161410a906188ca565b60405180910390a1606692505050611da4565b60010161409f565b50600101614093565b5060608060606015805480602002602001604051908101604052809291908181526020016000905b828210156141e05760008481526020908190206040805160c0810182526004860290920180546001600160a01b039081168452600180830154821685870152600283015491821693850193909352600160a01b81046001600160401b03166060850152600160e01b900460ff16151560808401526003015460a08301529083529092019101614156565b50505050905060606016805480602002602001604051908101604052809291908181526020016000905b828210156142b55760008481526020908190208301805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156142a15780601f10614276576101008083540402835291602001916142a1565b820191906000526020600020905b81548152906001019060200180831161428457829003601f168201915b50505050508152602001906001019061420a565b50505050905060005b8251811015614312578281815181106142d357fe5b6020026020010151606001516003028382815181106142ee57fe5b60209081029190910101516001600160401b039091166060909101526001016142be565b5060608061432289898686616d1f565b9150915061433082826155de565b6001546040805182815260208084028201019091529298509096506000955085945092506060915082801561436f578160200160208202803683370190505b50905060005b828110156145005760006001600160a01b03166120026001600160a01b03166386d54506600184815481106143a657fe5b60009182526020909120600491820201546040516001600160e01b031960e085901b1681526143e1926001600160a01b0390921691016182b6565b60206040518083038186803b1580156143f957600080fd5b505afa15801561440d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144319190617f26565b6001600160a01b03161461449357600182828151811061444d57fe5b602002602001019060ff16908160ff16815250506001818154811061446e57fe5b90600052602060002090600402016003015460001461448e578360010193505b6144f8565b67016345785d8a0000600182815481106144a957fe5b906000526020600020906004020160030154106144cb578460010194506144f8565b600181815481106144d857fe5b9060005260206000209060040201600301546000146144f8578360010193505b600101614375565b5060608460405190808252806020026020018201604052801561452d578160200160208202803683370190505b50905060608560405190808252806020026020018201604052801561455c578160200160208202803683370190505b50905060608660405190808252806020026020018201604052801561458b578160200160208202803683370190505b5090506060876040519080825280602002602001820160405280156145ba578160200160208202803683370190505b50905060006060886040519080825280602002602001820160405280156145eb578160200160208202803683370190505b50905060608960405190808252806020026020018201604052801561461a578160200160208202803683370190505b50905060009a506000995060006110046001600160a01b031663149d14d96040518163ffffffff1660e01b815260040160206040518083038186803b15801561466257600080fd5b505afa158015614676573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061469a9190618161565b905067016345785d8a00008111156146e6576000805160206190908339815191526040516146c790618bdb565b60405180910390a160689e505050505050505050505050505050611da4565b60005b8a811015614a7a578981815181106146fd57fe5b602002602001015160ff16600114156147f3576001818154811061471d57fe5b9060005260206000209060040201600301546000146147ee576001818154811061474357fe5b600091825260209091206004909102015484516001600160a01b039091169085908e90811061476e57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250506001818154811061479b57fe5b906000526020600020906004020160030154838d815181106147b957fe5b60200260200101818152505060018a8d815181106147d357fe5b602002602001019060ff16908160ff16815250508b6001019b505b614a72565b67016345785d8a00006001828154811061480957fe5b9060005260206000209060040201600301541061498e576001818154811061482d57fe5b906000526020600020906004020160020160009054906101000a90046001600160a01b0316898e8151811061485e57fe5b60200260200101906001600160a01b031690816001600160a01b03168152505060006402540be4006001838154811061489357fe5b906000526020600020906004020160030154816148ac57fe5b06600183815481106148ba57fe5b9060005260206000209060040201600301540390506148e283826162b490919063ffffffff16565b898f815181106148ee57fe5b6020026020010181815250506001828154811061490757fe5b906000526020600020906004020160010160009054906101000a90046001600160a01b0316878f8151811061493857fe5b60200260200101906001600160a01b031690816001600160a01b03168152505081888f8151811061496557fe5b6020908102919091010152614980868263ffffffff6162f616565b95508d6001019d5050614a72565b6001818154811061499b57fe5b906000526020600020906004020160030154600014614a7257600181815481106149c157fe5b906000526020600020906004020160010160009054906101000a90046001600160a01b0316848d815181106149f257fe5b60200260200101906001600160a01b031690816001600160a01b03168152505060018181548110614a1f57fe5b906000526020600020906004020160030154838d81518110614a3d57fe5b60200260200101818152505060008a8d81518110614a5757fe5b602002602001019060ff16908160ff16815250508b6001019b505b6001016146e9565b5060008415614cf0576002546040516303702b2960e51b815261100491636e056520918891614ab4918e918e918d914201906004016183c4565b6020604051808303818588803b158015614acd57600080fd5b505af193505050508015614afe575060408051601f3d908101601f19168201909252614afb9181019061808e565b60015b614c75576040516000815260443d1015614b1a57506000614bb5565b60046000803e60005160e01c6308c379a08114614b3b576000915050614bb5565b60043d036004833e81513d60248201116001600160401b0382111715614b6657600092505050614bb5565b80830180516001600160401b03811115614b87576000945050505050614bb5565b8060208301013d8601811115614ba557600095505050505050614bb5565b601f01601f191660405250925050505b80614bc05750614c02565b60019150857fa7cdeed7d0db45e3219a6e5d60838824c16f1d39991fcfe3f963029c844bf28082604051614bf49190618449565b60405180910390a250614c70565b3d808015614c2c576040519150601f19603f3d011682016040523d82523d6000602084013e614c31565b606091505b5060019150857fbfa884552dd8921b6ce90bfe906952ae5b3b29be0cc1a951d4f62697635a3a4582604051614c669190618449565b60405180910390a2505b614cf0565b8015614cb7577fa217d08e65f80c73121cd9db834d81652d544bfbf452f6d04922b16c90a37b7086604051614caa9190618fa3565b60405180910390a1614cee565b857fa7cdeed7d0db45e3219a6e5d60838824c16f1d39991fcfe3f963029c844bf280604051614ce590618573565b60405180910390a25b505b8015614ea65760005b8751811015614ea4576000888281518110614d1057fe5b60200260200101519050600060018281548110614d2957fe5b60009182526020909120600160049092020181015481546001600160a01b03909116916108fc9185908110614d5a57fe5b9060005260206000209060040201600301549081150290604051600060405180830381858888f1935050505090508015614e165760018281548110614d9b57fe5b60009182526020909120600160049092020181015481546001600160a01b03909116917f6c61d60f69a7beb3e1c80db7f39f37b208537cbb19da3174511b477812b2fc7d9185908110614dea57fe5b906000526020600020906004020160030154604051614e099190618fa3565b60405180910390a2614e9a565b60018281548110614e2357fe5b60009182526020909120600160049092020181015481546001600160a01b03909116917f25d0ce7d2f0cec669a8c17efe49d195c13455bb8872b65fa610ac7f53fe4ca7d9185908110614e7257fe5b906000526020600020906004020160030154604051614e919190618fa3565b60405180910390a25b5050600101614cf9565b505b83511561509c5760005b845181101561509a578a8181518110614ec557fe5b602002602001015160ff1660011415614f64576120026001600160a01b031663092193ab858381518110614ef557fe5b6020026020010151878481518110614f0957fe5b60200260200101516040518363ffffffff1660e01b8152600401614f2d91906182b6565b6000604051808303818588803b158015614f4657600080fd5b505af1158015614f5a573d6000803e3d6000fd5b5050505050615092565b6000858281518110614f7257fe5b60200260200101516001600160a01b03166108fc868481518110614f9257fe5b60200260200101519081150290604051600060405180830381858888f193505050509050801561502857858281518110614fc857fe5b60200260200101516001600160a01b03167f6c61d60f69a7beb3e1c80db7f39f37b208537cbb19da3174511b477812b2fc7d86848151811061500657fe5b602002602001015160405161501b9190618fa3565b60405180910390a2615090565b85828151811061503457fe5b60200260200101516001600160a01b03167f25d0ce7d2f0cec669a8c17efe49d195c13455bb8872b65fa610ac7f53fe4ca7d86848151811061507257fe5b60200260200101516040516150879190618fa3565b60405180910390a25b505b600101614eb0565b505b5050505050505050505050505060005b60015481101561510957600181815481106150c357fe5b906000526020600020906004020160030154600014615101576000600182815481106150eb57fe5b9060005260206000209060040201600301819055505b6001016150ac565b504715615177577f6ecc855f9440a9282c90913bbc91619fd44f5ec0b462af28d127b116f130aa4d4760405161513f9190618fa3565b60405180910390a1604051611002904780156108fc02916000818181858888f19350505050158015615175573d6000803e3d6000fd5b505b60006003819055600555815115615192576151928282615ac5565b6110016001600160a01b031663fc4333cd6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156151cf57600080fd5b505af11580156151e3573d6000803e3d6000fd5b50506040517fedd8d7296956dd970ab4de3f2fc03be2b0ffc615d20cd4c72c6e44f928630ebf925060009150a1506000949350505050565b6000806001838154811061522b57fe5b90600052602060002090600402016003015490506000600180805490500390506001615255613080565b511161528a5760006001858154811061526a57fe5b906000526020600020906004020160030181905550600092505050611da4565b846001600160a01b03167f3b6f9ef90462b512a1293ecec018670bf7b7f1876fb727590a8a6d7643130a70836040516152c39190618fa3565b60405180910390a26001600160a01b038516600090815260046020526040812055835b600154600019018110156154b0576001816001018154811061530457fe5b90600052602060002090600402016001828154811061531f57fe5b60009182526020909120825460049092020180546001600160a01b03199081166001600160a01b0393841617825560018085015481840180548416918616919091179055600280860180549185018054909416919095161780835584546001600160401b03600160a01b91829004160267ffffffffffffffff60a01b1990911617808355935460ff600160e01b918290041615150260ff60e01b19909416939093179055600392830154920191909155600b8054909183019081106153e057fe5b9060005260206000209060160201600b82815481106153fb57fe5b600091825260209091208254601690920201908155600180830154818301805460ff909216151560ff1990921691909117905560028084018054615452938386019390821615610100026000190190911604617c49565b5061546560038281019084016013617cbe565b5090505080600101600460006001848154811061547e57fe5b600091825260208083206004909202909101546001600160a01b031683528201929092526040019020556001016152e6565b5060018054806154bc57fe5b60008281526020812060046000199093019283020180546001600160a01b0319908116825560018201805490911690556002810180546001600160e81b0319169055600301559055600b80548061550f57fe5b60008281526020812060166000199093019283020181815560018101805460ff19169055906155416002830182617be5565b61554f600383016000617ce8565b50509055600081838161555e57fe5b04905080156155d25760015460005b818110156155cf576155a6836001838154811061558657fe5b9060005260206000209060040201600301546162f690919063ffffffff16565b600182815481106155b357fe5b600091825260209091206003600490920201015560010161556d565b50505b50600195945050505050565b6060806000808080806155ef61318a565b6001549091505b801561581e57600181039250600b838154811061560f57fe5b600091825260209091206001601690920201015460ff1661562f57615815565b6001838154811061563c57fe5b60009182526020909120600490910201546001600160a01b03169450615663858484613b6b565b93508361566f57615815565b60405163436aa28360e11b81526000908190612002906386d5450690615699908a906004016182b6565b60206040518083038186803b1580156156b157600080fd5b505afa1580156156c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906156e99190617f26565b90506001600160a01b03811615615772576040516302ceee9160e11b81526120029063059ddd229061571f9084906004016182b6565b60206040518083038186803b15801561573757600080fd5b505afa15801561574b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061576f9190617f26565b91505b60005b8c5181101561581157876001600160a01b03168d828151811061579457fe5b6020026020010151600001516001600160a01b031614806157dd5750826001600160a01b03168d82815181106157c657fe5b6020026020010151600001516001600160a01b0316145b156158095760018d82815181106157f057fe5b6020908102919091010151901515608090910152615811565b600101615775565b5050505b600019016155f6565b5060005b895181101561588b5789818151811061583757fe5b60200260200101516080015180615877575060006001600160a01b03168a828151811061586057fe5b6020026020010151600001516001600160a01b0316145b15615883578560010195505b600101615822565b50885185106159735760408051600180825281830190925290816020015b6158b1617bb0565b8152602001906001900390816158a9575050604080516001808252818301909252919850602082015b60608152602001906001900390816158da579050509550886000815181106158fe57fe5b60200260200101518760008151811061591357fe5b60200260200101819052508760008151811061592b57fe5b60200260200101518660008151811061594057fe5b602002602001018190525060008760008151811061595a57fe5b6020908102919091010151901515608090910152615ab8565b848951036040519080825280602002602001820160405280156159b057816020015b61599d617bb0565b8152602001906001900390816159955790505b509650848951036040519080825280602002602001820160405280156159ea57816020015b60608152602001906001900390816159d55790505b5095506000915060005b8951811015615ab657898181518110615a0957fe5b602002602001015160800151158015615a4c575060006001600160a01b03168a8281518110615a3457fe5b6020026020010151600001516001600160a01b031614155b15615aae57898181518110615a5d57fe5b6020026020010151888481518110615a7157fe5b6020026020010181905250888181518110615a8857fe5b6020026020010151878481518110615a9c57fe5b60200260200101819052508260010192505b6001016159f4565b505b50505050505b9250929050565b600154825160005b82811015615be2576001615adf617bb0565b60018381548110615aec57fe5b600091825260208083206040805160c08101825260049490940290910180546001600160a01b0390811685526001820154811693850193909352600281015492831691840191909152600160a01b82046001600160401b03166060840152600160e01b90910460ff16151560808301526003015460a082015291505b84811015615bb657878181518110615b7c57fe5b6020026020010151600001516001600160a01b031682600001516001600160a01b03161415615bae5760009250615bb6565b600101615b68565b508115615bd85780516001600160a01b03166000908152600460205260408120555b5050600101615acd565b5080821115615ca157805b82811015615c9f576001805480615c0057fe5b60008281526020812060046000199093019283020180546001600160a01b0319908116825560018201805490911690556002810180546001600160e81b0319169055600301559055600b805480615c5357fe5b60008281526020812060166000199093019283020181815560018101805460ff1916905590615c856002830182617be5565b615c93600383016000617ce8565b50509055600101615bed565b505b6000818310615cb05781615cb2565b825b905060005b8181101561605657615d64868281518110615cce57fe5b602002602001015160018381548110615ce357fe5b60009182526020918290206040805160c08101825260049390930290910180546001600160a01b0390811684526001820154811694840194909452600281015493841691830191909152600160a01b83046001600160401b03166060830152600160e01b90920460ff161515608082015260039091015460a08201526170eb565b615f18578060010160046000888481518110615d7c57fe5b6020026020010151600001516001600160a01b03166001600160a01b0316815260200190815260200160002081905550858181518110615db857fe5b602002602001015160018281548110615dcd57fe5b6000918252602091829020835160049092020180546001600160a01b039283166001600160a01b0319918216178255928401516001820180549184169185169190911790556040840151600282018054606087015160808801511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b1995909716929097169190911792909216939093171692909217905560a0909101516003909101558451859082908110615e8857fe5b6020026020010151600b8281548110615e9d57fe5b90600052602060002090601602016002019080519060200190615ec1929190617ae5565b506000600b8281548110615ed157fe5b60009182526020822060169190910201600101805460ff191692151592909217909155600b805483908110615f0257fe5b600091825260209091206016909102015561604e565b858181518110615f2457fe5b60200260200101516060015160018281548110615f3d57fe5b906000526020600020906004020160020160146101000a8154816001600160401b0302191690836001600160401b03160217905550616003858281518110615f8157fe5b6020026020010151600b8381548110615f9657fe5b600091825260209182902060026016909202018101805460408051601f6000196101006001861615020190931694909404918201859004850284018501905280835291929091908301828280156135655780601f1061353a57610100808354040283529160200191613565565b61604e5784818151811061601357fe5b6020026020010151600b828154811061602857fe5b9060005260206000209060160201600201908051906020019061604c929190617ae5565b505b600101615cb7565b508282111561622e57616067617ab6565b835b8381101561622b5785818151811061607d57fe5b60200260200101518260400181905250600187828151811061609b57fe5b6020908102919091018101518254600181810185556000948552838520835160049093020180546001600160a01b039384166001600160a01b0319918216178255848601518284018054918616918316919091179055604080860151600284018054606089015160808a01511515600160e01b0260ff60e01b196001600160401b03909216600160a01b0267ffffffffffffffff60a01b1995909a1692909616919091179290921696909617169190911790935560a090930151600390930192909255600b80549283018155909352845160169091026000805160206190b08339815191528101918255858301516000805160206190f08339815191528201805491151560ff19909216919091179055928501518051869492936161d1936000805160206190d083398151915201920190617ae5565b5060608201516161e79060038301906013617b5f565b50505080600101600460008984815181106161fe57fe5b602090810291909101810151516001600160a01b0316825281019190915260400160002055600101616069565b50505b616236617147565b61623e61732f565b6000600981905560015493505b838110156162ac576000600b828154811061626257fe5b60009182526020822060169190910201600101805460ff191692151592909217909155600b80548390811061629357fe5b600091825260209091206016909102015560010161624b565b505050505050565b600061113d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061751d565b60008282018381101561113d5760405162461bcd60e51b8152600401610e12906186de565b60015481516040805182815260208084028201019091526060929190839082801561635a57816020015b60608152602001906001900390816163455790505b50600b549091508314616371579250611cf4915050565b60005b8281101561648057600b60016004600089858151811061639057fe5b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000205403815481106163c457fe5b600091825260209182902060026016909202018101805460408051601f60001961010060018616150201909316949094049182018590048502840185019052808352919290919083018282801561645c5780601f106164315761010080835404028352916020019161645c565b820191906000526020600020905b81548152906001019060200180831161643f57829003601f168201915b505050505082828151811061646d57fe5b6020908102919091010152600101616374565b50949350505050565b60005b828110156165d657600082878388016040516020016164ac9291906182a8565b6040516020818303038152906040528051906020012060001c816164cc57fe5b069050808501828701146165cd57600089838801815181106164ea57fe5b602002602001015190506060898489018151811061650457fe5b602002602001015190508a8388018151811061651c57fe5b60200260200101518b858a018151811061653257fe5b60200260200101906001600160a01b031690816001600160a01b031681525050818b8489018151811061656157fe5b60200260200101906001600160a01b031690816001600160a01b031681525050898388018151811061658f57fe5b60200260200101518a858a01815181106165a557fe5b6020026020010181905250808a848901815181106165bf57fe5b602002602001018190525050505b5060010161648c565b5050505050505050565b600980546001908101909155600b8054839081106165fa57fe5b906000526020600020906016020160010160006101000a81548160ff02191690831515021790555043600b828154811061663057fe5b600091825260208220601690910201919091556040516001600160a01b038416917ff62981a567ec3cec866c6fa93c55bcdf841d6292d18b8d522ececa769375d82d91a25050565b60008160405160200161668b919061828c565b60405160208183030381529060405280519060200120836040516020016166b2919061828c565b6040516020818303038152906040528051906020012014905092915050565b015190565b8151815160009160019181148083146166f25760009250616730565b600160208701838101602088015b60028483851001141561672b57805183511461671f5760009650600093505b60209283019201616700565b505050505b5090949350505050565b6001600160a01b0381166000908152600460205260408120548061676357506000199050611cf4565b60018103905060006001828154811061677857fe5b906000526020600020906004020160030154905060006001838154811061679b57fe5b6000918252602090912060036004909202010155600154604051600019909101906001600160a01b038616907f8cd4e147d8af98a9e3b6724021b8bf6aed2e5dac71c38f2dce8161b82585b25d906167f4908590618fa3565b60405180910390a28061680c57829350505050611cf4565b600081838161681757fe5b04905080156168b35760005b848110156168655761683c826001838154811061558657fe5b6001828154811061684957fe5b6000918252602090912060036004909202010155600101616823565b50600180549085015b818110156168b057616887836001838154811061558657fe5b6001828154811061689457fe5b600091825260209091206003600490920201015560010161686e565b50505b5091949350505050565b6000826168cc57506000611da4565b828202828482816168d957fe5b041461113d5760405162461bcd60e51b8152600401610e1290618aad565b600061113d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250617549565b616941617cf7565b506040805180820190915281518152602082810190820152919050565b616966617c29565b61696f82617580565b61697857600080fd5b600061698783602001516175ba565b60208085015160408051808201909152868152920190820152915050919050565b60006169b2617cf7565b505080518051602091820151919092015191011190565b6169d1617cf7565b6169da826169a8565b6169e357600080fd5b602082015160006169f38261761d565b80830160209586015260408051808201909152908152938401919091525090919050565b805160009015801590616a2c57508151602110155b616a3557600080fd5b6000616a4483602001516175ba565b90508083600001511015616a6a5760405162461bcd60e51b8152600401610e1290618cbb565b82516020808501518301805192849003929183101561648057506020919091036101000a90049392505050565b6060616aa282617580565b616aab57600080fd5b6000616ab6836176fe565b9050606081604051908082528060200260200182016040528015616af457816020015b616ae1617cf7565b815260200190600190039081616ad95790505b5090506000616b0685602001516175ba565b60208601510190506000805b84811015616b5d57616b238361761d565b9150604051806040016040528083815260200184815250848281518110616b4657fe5b602090810291909101015291810191600101616b12565b509195945050505050565b616b70617bb0565b60606000616b7c617bb0565b6060616b86617c29565b616b8f8761695e565b90506000805b616b9e836169a8565b15616c735780616bc957616bb9616bb4846169c9565b61775a565b6001600160a01b03168552616c6b565b8060011415616bf157616bde616bb4846169c9565b6001600160a01b03166020860152616c6b565b8060021415616c1957616c06616bb4846169c9565b6001600160a01b03166040860152616c6b565b8060031415616c4557616c2e613e8c846169c9565b6001600160401b0316606086015260019150616c6b565b8060041415616c6657616c5f616c5a846169c9565b617774565b9350616c6b565b616c73565b600101616b95565b50929791965091945092505050565b6060611da4616c90836177e4565b6178ca565b6060815160001415616cb65750604080516000815260208101909152611cf4565b606082600081518110616cc557fe5b602002602001015190506000600190505b8351811015616d0657616cfc82858381518110616cef57fe5b602002602001015161791c565b9150600101616cd6565b5061113d616d19825160c060ff16617999565b8261791c565b60608060006120026001600160a01b031663c473318f6040518163ffffffff1660e01b815260040160206040518083038186803b158015616d5f57600080fd5b505afa158015616d73573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190616d979190618161565b90508085518851011015616dac575083518651015b606081604051908082528060200260200182016040528015616de857816020015b616dd5617bb0565b815260200190600190039081616dcd5790505b509050606082604051908082528060200260200182016040528015616e2157816020015b6060815260200190600190039081616e0c5790505b50905060008060005b8b51831080616e395750895182105b8015616e4457508581105b156170d9578b51831415616eb457898281518110616e5e57fe5b6020026020010151858281518110616e7257fe5b6020026020010181905250888281518110616e8957fe5b6020026020010151848281518110616e9d57fe5b602090810291909101015260019182019101616e2a565b8951821415616f1f578b8381518110616ec957fe5b6020026020010151858281518110616edd57fe5b60200260200101819052508a8381518110616ef457fe5b6020026020010151848281518110616f0857fe5b602090810291909101015260019283019201616e2a565b898281518110616f2b57fe5b6020026020010151606001516001600160401b03168c8481518110616f4c57fe5b6020026020010151606001516001600160401b03161115616fc8578b8381518110616f7357fe5b6020026020010151858281518110616f8757fe5b60200260200101819052508a8381518110616f9e57fe5b6020026020010151848281518110616fb257fe5b60200260200101819052508260010192506170d1565b898281518110616fd457fe5b6020026020010151606001516001600160401b03168c8481518110616ff557fe5b6020026020010151606001516001600160401b031610156170715789828151811061701c57fe5b602002602001015185828151811061703057fe5b602002602001018190525088828151811061704757fe5b602002602001015184828151811061705b57fe5b60200260200101819052508160010191506170d1565b89828151811061707d57fe5b6020026020010151600001516001600160a01b03168c848151811061709e57fe5b6020026020010151600001516001600160a01b031610156170c5578b8381518110616f7357fe5b898281518110616e5e57fe5b600101616e2a565b50929a91995090975050505050505050565b805182516000916001600160a01b039182169116148015617125575081602001516001600160a01b031683602001516001600160a01b0316145b801561113d5750506040908101519101516001600160a01b0390811691161490565b6012546013548082111561719257805b8281101561719057601280548061716a57fe5b6001900381819060005260206000200160006171869190617be5565b9055600101617157565b505b60008183106171a157816171a3565b825b905060005b818110156172bb57617260601282815481106171c057fe5b600091825260209182902001805460408051601f600260001961010060018716150201909416939093049283018590048502810185019091528181529283018282801561724e5780601f106172235761010080835404028352916020019161724e565b820191906000526020600020905b81548152906001019060200180831161723157829003601f168201915b5050505050601383815481106134d757fe5b6172b3576013818154811061727157fe5b906000526020600020016012828154811061728857fe5b9060005260206000200190805460018160011615610100020316600290046172b1929190617c49565b505b6001016171a8565b5082821115610e3257825b82811015617329576012601382815481106172dd57fe5b6000918252602080832084546001818101875595855291909320929091018054617320949390920192909160026101009282161592909202600019011604617c49565b506001016172c6565b50505050565b601354600b548082111561737a57805b8281101561737857601380548061735257fe5b60019003818190600052602060002001600061736e9190617be5565b905560010161733f565b505b6000818310617389578161738b565b825b905060005b818110156174aa57617448601382815481106173a857fe5b600091825260209182902001805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156174365780601f1061740b57610100808354040283529160200191617436565b820191906000526020600020905b81548152906001019060200180831161741957829003601f168201915b5050505050600b8381548110615f9657fe5b6174a257600b818154811061745957fe5b90600052602060002090601602016002016013828154811061747757fe5b9060005260206000200190805460018160011615610100020316600290046174a0929190617c49565b505b600101617390565b5082821115610e3257825b82811015617329576013600b82815481106174cc57fe5b60009182526020808320845460018082018755958552919093206016929092029092016002908101805461751495939094019390926000199082161561010002011604617c49565b506001016174b5565b600081848411156175415760405162461bcd60e51b8152600401610e129190618449565b505050900390565b6000818361756a5760405162461bcd60e51b8152600401610e129190618449565b50600083858161757657fe5b0495945050505050565b805160009061759157506000611cf4565b6020820151805160001a9060c08210156175b057600092505050611cf4565b5060019392505050565b8051600090811a60808110156175d4576000915050611cf4565b60b88110806175ef575060c081108015906175ef575060f881105b156175fe576001915050611cf4565b60c08110156176125760b519019050611cf4565b60f519019050611cf4565b80516000908190811a608081101561763857600191506176f7565b60b881101561764d57607e19810191506176f7565b60c081101561769e57600060b78203600186019550806020036101000a8651049150600181018201935050808310156176985760405162461bcd60e51b8152600401610e12906189fa565b506176f7565b60f88110156176b35760be19810191506176f7565b600060f78203600186019550806020036101000a8651049150600181018201935050808310156176f55760405162461bcd60e51b8152600401610e12906189fa565b505b5092915050565b805160009061770f57506000611cf4565b6000809050600061772384602001516175ba565b602085015185519181019250015b80821015617751576177428261761d565b82019150826001019250617731565b50909392505050565b805160009060151461776b57600080fd5b611da482616a17565b805160609061778257600080fd5b600061779183602001516175ba565b83516040805191839003808352601f19601f82011683016020019091529192506060908280156177c8576020820181803683370190505b5090506000816020019050616480848760200151018285617a6b565b604080516020808252818301909252606091829190602082018180368337505050602081018490529050600067ffffffffffffffff1984166178285750601861784c565b6fffffffffffffffffffffffffffffffff1984166178485750601061784c565b5060005b60208110156178825781818151811061786157fe5b01602001516001600160f81b0319161561787a57617882565b60010161784c565b60008160200390506060816040519080825280601f01601f1916602001820160405280156178b7576020820181803683370190505b5080830196909652508452509192915050565b6060815160011480156178fc5750607f60f81b826000815181106178ea57fe5b01602001516001600160f81b03191611155b15617908575080611cf4565b611da461791a8351608060ff16617999565b835b6060806040519050835180825260208201818101602087015b8183101561794d578051835260209283019201617935565b50855184518101855292509050808201602086015b8183101561797a578051835260209283019201617962565b508651929092011591909101601f01601f191660405250905092915050565b60606801000000000000000083106179c35760405162461bcd60e51b8152600401610e1290618845565b60408051600180825281830190925260609160208201818036833701905050905060378411617a1d5782840160f81b816000815181106179ff57fe5b60200101906001600160f81b031916908160001a9053509050611da4565b6060617a28856177e4565b90508381510160370160f81b82600081518110617a4157fe5b60200101906001600160f81b031916908160001a905350617a62828261791c565b95945050505050565b80617a7557610e32565b5b60208110617a95578251825260209283019290910190601f1901617a76565b915181516020939093036101000a6000190180199091169216919091179052565b60405180608001604052806000815260200160001515815260200160608152602001617ae0617d11565b905290565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10617b2657805160ff1916838001178555617b53565b82800160010185558215617b53579182015b82811115617b53578251825591602001919060010190617b38565b506131c5929150617d30565b8260138101928215617b535791602002820182811115617b53578251825591602001919060010190617b38565b6040518060600160405280600060ff16815260200160608152602001606081525090565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a081019190915290565b50805460018160011615610100020316600290046000825580601f10617c0b5750611f0c565b601f016020900490600052602060002090810190611f0c9190617d30565b6040518060400160405280617c3c617cf7565b8152602001600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10617c825780548555617b53565b82800160010185558215617b5357600052602060002091601f016020900482015b82811115617b53578254825591600101919060010190617ca3565b8260138101928215617b535791820182811115617b53578254825591600101919060010190617ca3565b50611f0c906013810190617d30565b604051806040016040528060008152602001600081525090565b6040518061026001604052806013906020820280368337509192915050565b61316991905b808211156131c55760008155600101617d36565b8035611da48161907a565b60008083601f840112617d66578182fd5b5081356001600160401b03811115617d7c578182fd5b6020830191508360208083028501011115615abe57600080fd5b6000601f8381840112617da7578182fd5b8235617dba617db58261902f565b619009565b818152925060208084019085810160005b84811015617e4c578135880189603f820112617de657600080fd5b838101356001600160401b03811115617dfe57600080fd5b617e0f818901601f19168601619009565b81815260408c81848601011115617e2557600080fd5b82818501888401375060009181018601919091528552509282019290820190600101617dcb565b50505050505092915050565b600082601f830112617e68578081fd5b8135617e76617db58261902f565b818152915060208083019084810181840286018201871015617e9757600080fd5b6000805b85811015617e4c5782356001600160401b0381168114617eb9578283fd5b85529383019391830191600101617e9b565b60008083601f840112617edc578182fd5b5081356001600160401b03811115617ef2578182fd5b602083019150836020828501011115615abe57600080fd5b600060208284031215617f1b578081fd5b813561113d8161907a565b600060208284031215617f37578081fd5b815161113d8161907a565b60008060008060408587031215617f57578283fd5b84356001600160401b0380821115617f6d578485fd5b617f7988838901617d55565b90965094506020870135915080821115617f91578384fd5b50617f9e87828801617d55565b95989497509550505050565b600080600060608486031215617fbe578283fd5b83356001600160401b0380821115617fd4578485fd5b81860187601f820112617fe5578586fd5b80359250617ff5617db58461902f565b80848252602080830192508084018b82838902870101111561801557898afd5b8994505b8685101561803f5761802b8c82617d4a565b845260019490940193928101928101618019565b509097508801359350505080821115618056578384fd5b61806287838801617e58565b93506040860135915080821115618077578283fd5b5061808486828701617d96565b9150509250925092565b60006020828403121561809f578081fd5b8151801515811461113d578182fd5b600080602083850312156180c0578182fd5b82356001600160401b038111156180d5578283fd5b6180e185828601617ecb565b90969095509350505050565b60008060008060408587031215618102578384fd5b84356001600160401b0380821115618118578586fd5b61812488838901617ecb565b9096509450602087013591508082111561813c578384fd5b50617f9e87828801617ecb565b60006020828403121561815a578081fd5b5035919050565b600060208284031215618172578081fd5b5051919050565b6000806040838503121561818b578182fd5b505080516020909101519092909150565b6000806000604084860312156181b0578081fd5b833560ff811681146181c0578182fd5b925060208401356001600160401b038111156181da578182fd5b6181e686828701617ecb565b9497909650939450505050565b6000815180845260208085019450808401835b8381101561822b5781516001600160a01b031687529582019590820190600101618206565b509495945050505050565b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b6000815180845261827881602086016020860161904e565b601f01601f19169290920160200192915050565b6000825161829e81846020870161904e565b9190910192915050565b918252602082015260400190565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b03968716815294861660208601529290941660408401526001600160401b03166060830152911515608082015260a081019190915260c00190565b6001600160a01b0392909216825260ff16602082015260400190565b60006020825261113d60208301846181f3565b60006040825261836760408301856181f3565b602083820381850152818551808452828401915082838202850101838801865b838110156183b557601f198784030185526183a3838351618260565b94860194925090850190600101618387565b50909998505050505050505050565b6000608082526183d760808301876181f3565b828103602084810191909152865180835287820192820190845b8181101561840d578451835293830193918301916001016183f1565b5050848103604086015261842181886181f3565b93505050506001600160401b038316606083015295945050505050565b901515815260200190565b60006020825261113d6020830184618260565b600060408252618470604083018688618236565b8281036020840152618483818587618236565b979650505050505050565b6020808252601c908201527f6c656e677468206f66206275726e526174696f206d69736d6174636800000000604082015260600190565b60208082526042908201527f746865206275726e526174696f20706c75732073797374656d5265776172645260408201527f6174696f206d757374206265206e6f2067726561746572207468616e20313030606082015261030360f41b608082015260a00190565b60208082526026908201527f6c656e677468206f66206d61784e756d4f664d61696e7461696e696e67206d696040820152650e6dac2e8c6d60d31b606082015260800190565b6020808252601b908201527f6261746368207472616e736665722072657475726e2066616c73650000000000604082015260600190565b6020808252602c908201527f6c656e677468206f66206d61784e756d4f66576f726b696e6743616e6469646160408201526b0e8cae640dad2e6dac2e8c6d60a31b606082015260800190565b60208082526025908201527f6c656e677468206f66206d61696e7461696e536c6173685363616c65206d69736040820152640dac2e8c6d60db1b606082015260800190565b6020808252818101527f6c656e677468206f66206e756d4f66436162696e657473206d69736d61746368604082015260600190565b60208082526019908201527f74686520636f6e7472616374206e6f7420696e69742079657400000000000000604082015260600190565b6020808252601f908201527f6f6e6c7920736c617368206f72207374616b6548756220636f6e747261637400604082015260600190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b60208082526028908201527f746865206e756d4f66436162696e657473206d75737420626520677265617465604082015267072207468616e20360c41b606082015260800190565b60208082526039908201527f746865206e756d4f66436162696e657473206d757374206265206c657373207460408201527f68616e204d41585f4e554d5f4f465f56414c494441544f525300000000000000606082015260800190565b60208082526029908201527f746865206e756d626572206f662076616c696461746f727320657863656564206040820152681d1a19481b1a5b5a5d60ba1b606082015260800190565b60208082526022908201527f63616e206e6f7420646f207468697320747769636520696e206f6e6520626c6f604082015261636b60f01b606082015260800190565b6020808252600e908201526d696e70757420746f6f206c6f6e6760901b604082015260600190565b60208082526037908201527f746865206d61784e756d4f664d61696e7461696e696e67206d7573742062652060408201527f6c657373207468616e206e756d4f66436162696e657473000000000000000000606082015260800190565b6020808252602b908201527f6475706c696361746520636f6e73656e7375732061646472657373206f66207660408201526a185b1a59185d1bdc94d95d60aa1b606082015260800190565b60208082526027908201527f7468652065787069726554696d655365636f6e64476170206973206f7574206f604082015266662072616e676560c81b606082015260800190565b6020808252601590820152746465706f7369742076616c7565206973207a65726f60581b604082015260600190565b60208082526049908201527f746865206d61784e756d4f66576f726b696e6743616e64696461746573206d7560408201527f7374206265206e6f742067726561746572207468616e206d61784e756d4f6643606082015268616e6469646174657360b81b608082015260a00190565b6020808252601190820152706164646974696f6e206f766572666c6f7760781b604082015260600190565b60208082526023908201527f63616e206e6f7420656e7465722054656d706f72617279204d61696e74656e616040820152626e636560e81b606082015260800190565b60208082526025908201527f6c656e677468206f66206a61696c2076616c696461746f7273206d757374206260408201526465206f6e6560d81b606082015260800190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252601490820152736761737072696365206973206e6f74207a65726f60601b604082015260600190565b6020808252602e908201527f746865206d6573736167652073656e646572206d75737420626520676f76657260408201526d1b985b98d94818dbdb9d1c9858dd60921b606082015260800190565b60208082526025908201527f6c656e677468206f66206d61784e756d4f6643616e64696461746573206d69736040820152640dac2e8c6d60db1b606082015260800190565b6020808252601290820152716e6f7420696e206d61696e74656e616e636560701b604082015260600190565b60208082526021908201527f666565206973206c6172676572207468616e2044555354595f494e434f4d494e6040820152604760f81b606082015260800190565b60208082526019908201527f74686520636f6e747261637420616c726561647920696e697400000000000000604082015260600190565b60208082526042908201527f7468652073797374656d526577617264526174696f20706c7573206275726e5260408201527f6174696f206d757374206265206e6f2067726561746572207468616e20313030606082015261030360f41b608082015260a00190565b6020808252601a908201527f6c656e677468206973206c657373207468616e206f6666736574000000000000604082015260600190565b60208082526026908201527f6c656e677468206f662065787069726554696d655365636f6e64476170206d696040820152650e6dac2e8c6d60d31b606082015260800190565b60208082526017908201527f6f6e6c792063757272656e742076616c696461746f7273000000000000000000604082015260600190565b60208082526021908201527f6661696c656420746f20706172736520696e69742076616c696461746f7253656040820152601d60fa1b606082015260800190565b6020808252602f908201527f746865206d6573736167652073656e646572206d7573742062652063726f737360408201526e0818da185a5b8818dbdb9d1c9858dd608a1b606082015260800190565b6020808252602d908201527f746865206d6573736167652073656e646572206d75737420626520746865206260408201526c3637b1b590383937b23ab1b2b960991b606082015260800190565b60208082526024908201527f6c656e677468206f662073797374656d526577617264526174696f206d69736d6040820152630c2e8c6d60e31b606082015260800190565b6020808252603e908201527f746865206d61696e7461696e536c6173685363616c65206d757374206265206760408201527f726561746572207468616e203020616e64206c657373207468616e2031300000606082015260800190565b6020808252600d908201526c756e6b6e6f776e20706172616d60981b604082015260600190565b60208082526029908201527f746865206d6573736167652073656e646572206d75737420626520736c6173686040820152680818dbdb9d1c9858dd60ba1b606082015260800190565b6020808252601f908201527f746865206d73672073656e646572206d757374206265207374616b6548756200604082015260600190565b61ffff91909116815260200190565b90815260200190565b6000848252831515602083015260606040830152617a626060830184618260565b63ffffffff91909116815260200190565b60ff91909116815260200190565b600060ff8516825260406020830152617a62604083018486618236565b6040518181016001600160401b038111828210171561902757600080fd5b604052919050565b60006001600160401b03821115619044578081fd5b5060209081020190565b60005b83811015619069578181015183820152602001619051565b838111156173295750506000910152565b6001600160a01b0381168114611f0c57600080fdfe70e72399380dcfb0338abc03dc8d47f9f470ada8e769c9a78d644ea97385ecb20175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db90175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01dbb0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01dbaf87680f873f871949fb29aac15b9a4b7f17c3385939b007540f4d791949fb29aac15b9a4b7f17c3385939b007540f4d791949fb29aac15b9a4b7f17c3385939b007540f4d79164b085e6972fc98cd3c81d64d40e325acfed44365b97a7567a27939c14dbc7512ddcf54cb1284eb637cfa308ae4e00cb5588a164736f6c6343000604000a", }, { ContractAddr: common.HexToAddress(SlashContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/1abdfbf3aeb86909c2220b79bf92b87ddff64b54", - Code: "608060405234801561001057600080fd5b506004361061035d5760003560e01c80637e434d54116101d3578063c80d4b8f11610104578063df8079e9116100a2578063f9a2bbc71161007c578063f9a2bbc714610601578063fc3e590814610609578063fc4333cd14610611578063fd6a6879146106195761035d565b8063df8079e9146105e9578063e1c7392a146105f1578063f1fad104146105f95761035d565b8063c96be4cb116100de578063c96be4cb146105b3578063cc844b73146105c6578063dc927faf146105d9578063dcc6f156146105e15761035d565b8063c80d4b8f14610590578063c81b166214610598578063c8509d81146105a05761035d565b8063a1a11bf511610171578063aad560631161014b578063aad5606314610565578063ab51bb961461056d578063ac0af62914610575578063ac4317511461057d5761035d565b8063a1a11bf51461054d578063a78abc1614610555578063aa82dce11461055d5761035d565b806396713da9116101ad57806396713da9146105225780639dc092621461052a5780639e89ded8146105325780639f804f5f146105455761035d565b80637e434d54146104ff5780638256ace614610507578063831d65d11461050f5761035d565b8063493279b1116102ad57806362b72cf51161024b578063718a8aa811610225578063718a8aa8146104df57806375d47a0a146104e75780637912a65d146104ef5780637942fd05146104f75761035d565b806362b72cf5146104c75780636e47b482146104cf57806370fd5bad146104d75761035d565b806351b4dce31161028757806351b4dce31461049c57806351e80672146104a4578063567a372d146104ac5780635bfb4990146104b45761035d565b8063493279b1146104775780634bf6c8821461048c57806350055f90146104945761035d565b8063280870281161031a57806337c8dab9116102f457806337c8dab914610431578063389f4f71146104525780633dffc3871461045a57806343756e5c1461046f5761035d565b806328087028146104015780633306ccca1461040957806335aa2e441461041e5761035d565b80630bee7a67146103625780630e2374a5146103805780631182b8751461039557806322d1e80b146103b557806323bac5a2146103ca57806327962118146103ec575b600080fd5b61036a610621565b6040516103779190613d3b565b60405180910390f35b610388610626565b6040516103779190613519565b6103a86103a336600461344f565b61062c565b6040516103779190613551565b6103bd610692565b6040516103779190613546565b6103dd6103d8366004613166565b61069b565b60405161037793929190613d23565b6103ff6103fa3660046132ac565b6106be565b005b610388610a13565b610411610a19565b6040516103779190613ceb565b61038861042c36600461341f565b610a1e565b61044461043f366004613166565b610a45565b604051610377929190613d15565b610411610a9c565b610462610aa2565b6040516103779190613d4c565b610388610aa7565b61047f610aad565b6040516103779190613cdc565b610462610ab3565b610411610ab8565b610388610abe565b610388610ac4565b610411610aca565b6103ff6104c2366004613166565b610ad0565b610411610b7b565b610388610b81565b610462610b87565b610462610b8c565b610388610b91565b610411610b97565b610462610b9c565b610388610ba1565b610444610ba7565b6103ff61051d36600461344f565b610bb1565b610462610cc4565b610388610cc9565b6103ff61054036600461319e565b610ccf565b610411610cfe565b610388610d04565b6103bd610d0a565b610388610d13565b610388610d19565b61036a610d1f565b610411610d24565b6103ff61058b366004613303565b610d29565b6104116112c5565b6103886112ca565b6103ff6105ae36600461344f565b6112d0565b6103ff6105c1366004613166565b611341565b6103ff6105d436600461336c565b6117c2565b610388611da0565b610411611da6565b610388611dab565b6103ff611db1565b610462611dfe565b610388611e03565b610462611e09565b6103ff611e0e565b610388612257565b606481565b61200181565b606033612000146106585760405162461bcd60e51b815260040161064f90613b7f565b60405180910390fd5b60005460ff1661067a5760405162461bcd60e51b815260040161064f90613625565b60405162461bcd60e51b815260040161064f90613c70565b60075460ff1681565b600260208190526000918252604090912080546001820154919092015460ff1683565b60005460ff166106e05760405162461bcd60e51b815260040161064f90613625565b6006546106ed5760146006555b6008546106fa57603c6008555b81511580159061070a5750805115155b6107265760405162461bcd60e51b815260040161064f90613add565b60408051600380825260808201909252606091816020015b606081526020019060019003908161073e5790505090506107606102ca61225d565b8160008151811061076d57fe5b602002602001018190525061078183612278565b8160018151811061078e57fe5b60200260200101819052506107a282612278565b816002815181106107af57fe5b602002602001018190525060606107c5826122ce565b60408051603480825260608281019093529293509091602082018180368337019050509050815160346020830182602086016068600019fa61080657600080fd5b506014810151603482015160405163436aa28360e11b8152600090612002906386d5450690610839908690600401613519565b60206040518083038186803b15801561085157600080fd5b505afa158015610865573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108899190613182565b6001600160a01b031614156108b05760405162461bcd60e51b815260040161064f906135f5565b43600854820110156108d45760405162461bcd60e51b815260040161064f90613596565b604051631871f7d960e31b81526120029063c38fbec8906108f9908590600401613519565b600060405180830381600087803b15801561091357600080fd5b505af1158015610927573d6000803e3d6000fd5b50506040516335409f7f60e01b815261100092506335409f7f9150610950908590600401613519565b600060405180830381600087803b15801561096a57600080fd5b505af115801561097e573d6000803e3d6000fd5b50506006546040516309a99b4f60e41b815260646110028031909302049350909150639a99b4f0906109b6903390859060040161352d565b602060405180830381600087803b1580156109d057600080fd5b505af11580156109e4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a089190613437565b505050505050505050565b61200581565b603c81565b60018181548110610a2b57fe5b6000918252602090912001546001600160a01b0316905081565b600080610a50612f4d565b5050506001600160a01b0316600090815260026020818152604092839020835160608101855281548082526001830154938201849052919093015460ff16151592909301919091529091565b60055481565b600181565b61100181565b6102ca81565b600881565b60065481565b61200681565b61200081565b60045481565b3361100014610af15760405162461bcd60e51b815260040161064f90613868565b60005460ff16610b135760405162461bcd60e51b815260040161064f90613625565b61200063f7a251d7600b610b268461235f565b60006040518463ffffffff1660e01b8152600401610b4693929190613d5a565b600060405180830381600087803b158015610b6057600080fd5b505af1158015610b74573d6000803e3d6000fd5b5050505050565b60035481565b61100581565b600281565b601081565b61100881565b600581565b600b81565b61200381565b6004546005549091565b3361200014610bd25760405162461bcd60e51b815260040161064f90613b7f565b60005460ff16610bf45760405162461bcd60e51b815260040161064f90613625565b610bfc612f70565b6000610c3d84848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061242992505050565b915091508015610c845781516040517f7f0956d47419b9525356e7111652b653b530ec6f5096dccc04589bc38e62996791610c7791613d3b565b60405180910390a1610b74565b81516040517f7d45f62d17443dd4547bca8a8112c60e2385669318dc300ec61a5d2492f262e791610cb491613d3b565b60405180910390a150505b505050565b600981565b61100781565b3361100014610cf05760405162461bcd60e51b815260040161064f90613868565b610cfa82826124a9565b5050565b60085481565b61100681565b60005460ff1681565b61200281565b61300081565b600081565b600481565b60005460ff16610d4b5760405162461bcd60e51b815260040161064f90613625565b3361100714610d6c5760405162461bcd60e51b815260040161064f906139cc565b610dd784848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260148152731b5a5cd9195b59585b9bdc951a1c995cda1bdb1960621b602082015291506126809050565b15610e725760208114610dfc5760405162461bcd60e51b815260040161064f906137f4565b604080516020601f8401819004810282018101909252828152600091610e3a918585808385018382808284376000920191909152506126da92505050565b905060018110158015610e4e575060055481105b610e6a5760405162461bcd60e51b815260040161064f90613b3a565b600455611282565b610ed884848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600f81526e19995b1bdb9e551a1c995cda1bdb19608a1b602082015291506126809050565b15610f745760208114610efd5760405162461bcd60e51b815260040161064f90613a1a565b604080516020601f8401819004810282018101909252828152600091610f3b918585808385018382808284376000920191909152506126da92505050565b90506103e88111158015610f50575060045481115b610f6c5760405162461bcd60e51b815260040161064f906136de565b600555611282565b610fe184848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601681527566656c6f6e79536c617368526577617264526174696f60501b602082015291506126809050565b1561107b57602081146110065760405162461bcd60e51b815260040161064f90613954565b604080516020601f8401819004810282018101909252828152600091611044918585808385018382808284376000920191909152506126da92505050565b9050600a81101580156110575750606481105b6110735760405162461bcd60e51b815260040161064f90613a5c565b600655611282565b6110ef84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601881527f656e61626c654d616c6963696f7573566f7465536c6173680000000000000000602082015291506126809050565b1561116657602081146111145760405162461bcd60e51b815260040161064f90613713565b604080516020601f840181900481028201810190925282815261115091908484808385018382808284376000920191909152506126df92505050565b6007805460ff1916911515919091179055611282565b6111cd84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601081526f66656c6f6e79536c61736853636f706560801b602082015291506126809050565b1561126a57602081146111f25760405162461bcd60e51b815260040161064f906138e3565b604080516020601f8401819004810282018101909252828152600091611230918585808385018382808284376000920191909152506126da92505050565b905061708081101580156112465750620d2f0081105b6112625760405162461bcd60e51b815260040161064f9061365c565b600855611282565b60405162461bcd60e51b815260040161064f90613c1b565b7f6cdb0ac70ab7f2e2d035cca5be60d89906f2dede7648ddbd7402189c1eeed17a848484846040516112b79493929190613564565b60405180910390a150505050565b600a81565b61100281565b33612000146112f15760405162461bcd60e51b815260040161064f90613b7f565b60005460ff166113135760405162461bcd60e51b815260040161064f90613625565b6040517f07db600eebe2ac176be8dcebad61858c245a4961bb32ca2aa3d159b09aa0810e90600090a1505050565b3341146113605760405162461bcd60e51b815260040161064f90613bce565b60005460ff166113825760405162461bcd60e51b815260040161064f90613625565b60035443116113a35760405162461bcd60e51b815260040161064f90613ca7565b3a156113c15760405162461bcd60e51b815260040161064f90613926565b60405163155853f360e21b8152611000906355614fcc906113e6908490600401613519565b60206040518083038186803b1580156113fe57600080fd5b505afa158015611412573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611436919061328c565b61143f576117bb565b611447612f4d565b506001600160a01b0381166000908152600260208181526040928390208351606081018552815481526001820154928101929092529091015460ff1615801592820192909252906114a25760208101805160010190526114fb565b60016040820181905260208201819052805480820182556000919091527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180546001600160a01b0319166001600160a01b0384161790555b43815260055460208201518161150d57fe5b066116e957600060208201526040516335409f7f60e01b8152611000906335409f7f9061153e908590600401613519565b600060405180830381600087803b15801561155857600080fd5b505af115801561156c573d6000803e3d6000fd5b505060405163436aa28360e11b81526000925061200291506386d5450690611598908690600401613519565b60206040518083038186803b1580156115b057600080fd5b505afa1580156115c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115e89190613182565b6001600160a01b031614611609576116048282602001516124a9565b6116e4565b61200063f7a251d7600b61161c8561235f565b60006040518463ffffffff1660e01b815260040161163c93929190613d5a565b600060405180830381600087803b15801561165657600080fd5b505af1925050508015611667575060015b6116e4573d808015611695576040519150601f19603f3d011682016040523d82523d6000602084013e61169a565b606091505b50826001600160a01b03167fd7bc86ff5d08c8ab043edec743302aba2520e6635172a428bc956721db9e2d1c8360200151836040516116da929190613cf4565b60405180910390a2505b611755565b6004548160200151816116f857fe5b06611755576040516375abf10160e11b81526110009063eb57e20290611722908590600401613519565b600060405180830381600087803b15801561173c57600080fd5b505af1158015611750573d6000803e3d6000fd5b505050505b6001600160a01b0382166000818152600260208181526040808420865181559186015160018301558581015191909201805460ff1916911515919091179055517fddb6012116e51abf5436d956a4f0ebd927e92c576ff96d7918290c8782291e3e9190a2505b5043600355565b60005460ff166117e45760405162461bcd60e51b815260040161064f90613625565b60075460ff166118065760405162461bcd60e51b815260040161064f906135c0565b6006546118135760146006555b60085461182057603c6008555b60085481516040015143910111801561184457504360085482602001516040015101115b6118605760405162461bcd60e51b815260040161064f90613c42565b80602001516020015181600001516020015114801561188e5750806020015160600151816000015160600151145b156118ab5760405162461bcd60e51b815260040161064f9061383b565b8051604081015190511080156118ca5750602081015160408101519051105b6118e65760405162461bcd60e51b815260040161064f906137bd565b60208101515181515110801561190b5750806000015160400151816020015160400151105b8061193657508051516020820151511080156119365750806020015160400151816000015160400151105b806119505750806020015160400151816000015160400151145b61196c5760405162461bcd60e51b815260040161064f906136a7565b604080820151905163ea321e4960e01b81526110009163ea321e49916119959190600401613551565b60206040518083038186803b1580156119ad57600080fd5b505afa1580156119c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119e5919061328c565b611a015760405162461bcd60e51b815260040161064f9061399d565b611a1381600001518260400151612707565b8015611a2c5750611a2c81602001518260400151612707565b611a485760405162461bcd60e51b815260040161064f9061375e565b6060806110006001600160a01b0316633b071dcc6040518163ffffffff1660e01b815260040160006040518083038186803b158015611a8657600080fd5b505afa158015611a9a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611ac291908101906131c9565b9150915060005b8151811015611bff57611af3828281518110611ae157fe5b602002602001015185604001516128df565b15611bf7576006546040516309a99b4f60e41b815260646110028031909302049190639a99b4f090611b2b903390859060040161352d565b602060405180830381600087803b158015611b4557600080fd5b505af1158015611b59573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b7d9190613437565b506110006001600160a01b03166335409f7f858481518110611b9b57fe5b60200260200101516040518263ffffffff1660e01b8152600401611bbf9190613519565b600060405180830381600087803b158015611bd957600080fd5b505af1158015611bed573d6000803e3d6000fd5b5050505050611bff565b600101611ac9565b5060408084015190516317b4f35360e01b8152600091612002916317b4f35391611c2b91600401613551565b60206040518083038186803b158015611c4357600080fd5b505afa158015611c57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c7b9190613182565b6001600160a01b031614611ce9576040808401519051630e9fbf5160e01b815261200291630e9fbf5191611cb29190600401613551565b600060405180830381600087803b158015611ccc57600080fd5b505af1158015611ce0573d6000803e3d6000fd5b50505050610cbf565b6120006001600160a01b031663f7a251d7600b611d098660400151612943565b60006040518463ffffffff1660e01b8152600401611d2993929190613d5a565b600060405180830381600087803b158015611d4357600080fd5b505af1158015611d57573d6000803e3d6000fd5b505050506000611d6c8460400151600061297e565b60405190915081907f7b78aadacff901d8b63d0dba4f86283d4db8aef27f9ed70413dd860f1c9532b690600090a250505050565b61100381565b601481565b61200481565b60005460ff1615611dd45760405162461bcd60e51b815260040161064f90613aa6565b60056004819055600a905560078054600160ff199182168117909255600080549091169091179055565b601181565b61100081565b600381565b3361100014611e2f5760405162461bcd60e51b815260040161064f90613868565b60005460ff16611e515760405162461bcd60e51b815260040161064f90613625565b600154611e5d57612255565b600154600090600019015b808211612229576000805b82841015611f8c57611e83612f4d565b6002600060018781548110611e9457fe5b60009182526020808320909101546001600160a01b0316835282810193909352604091820190208151606081018352815481526001820154938101939093526002015460ff161515908201526005549091506004900481602001511115611f7657600460055481611f0157fe5b04816020015103816020018181525050806002600060018881548110611f2357fe5b6000918252602080832091909101546001600160a01b0316835282810193909352604091820190208351815591830151600183015591909101516002909101805460ff1916911515919091179055611f80565b6001925050611f8c565b50836001019350611e73565b82841161212357611f9b612f4d565b6002600060018681548110611fac57fe5b60009182526020808320909101546001600160a01b0316835282810193909352604091820190208151606081018352815481526001820154938101939093526002015460ff1615159082015260055490915060049004816020015111156120945760046005548161201957fe5b0481602001510381602001818152505080600260006001878154811061203b57fe5b6000918252602080832091909101546001600160a01b03168352828101939093526040918201902083518155918301516001808401919091559201516002909101805460ff191691151591909117905591506121239050565b60026000600186815481106120a557fe5b60009182526020808320909101546001600160a01b031683528201929092526040018120818155600181810192909255600201805460ff191690558054806120e957fe5b600082815260209020810160001990810180546001600160a01b0319169055019055836121165750612123565b5060001990920191611f8c565b81801561212d5750805b1561220c57600260006001868154811061214357fe5b60009182526020808320909101546001600160a01b031683528201929092526040018120818155600181810192909255600201805460ff1916905580548490811061218a57fe5b600091825260209091200154600180546001600160a01b0390921691869081106121b057fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060018054806121e957fe5b600082815260209020810160001990810180546001600160a01b03191690550190555b82612218575050612229565b505060019091019060001901611e68565b6040517fcfdb3b6ccaeccbdc68be3c59c840e3b3c90f0a7c491f5fff1cf56cfda200dd9c90600090a150505b565b61100481565b606061227061226b8361299a565b612278565b90505b919050565b6060815160011480156122aa5750607f60f81b8260008151811061229857fe5b01602001516001600160f81b03191611155b156122b6575080612273565b6122706122c88351608060ff16612a80565b83612b52565b60608151600014156122ef5750604080516000815260208101909152612273565b6060826000815181106122fe57fe5b602002602001015190506000600190505b835181101561233f576123358285838151811061232857fe5b6020026020010151612b52565b915060010161230f565b50612358612352825160c060ff16612a80565b82612b52565b9392505050565b60408051600480825260a08201909252606091829190816020015b606081526020019060019003908161237a5790505090506123a3836001600160a01b0316612bcf565b816000815181106123b057fe5b60200260200101819052506123c44361225d565b816001815181106123d157fe5b60209081029190910101526123e76102ca61225d565b816002815181106123f457fe5b60200260200101819052506124084261225d565b8160038151811061241557fe5b6020026020010181905250612358816122ce565b612431612f70565b600061243b612f70565b612443612f82565b61245461244f86612bf2565b612c17565b90506000805b61246383612c61565b1561249c578061248f5761247e61247984612c82565b612cd0565b63ffffffff16845260019150612494565b61249c565b60010161245a565b5091935090915050915091565b6040516375cc7d8960e01b8152612002906375cc7d89906124ce908590600401613519565b600060405180830381600087803b1580156124e857600080fd5b505af19250505080156124f9575060015b610cfa576040516000815260443d1015612515575060006125b2565b60046000803e60005160e01c6308c379a081146125365760009150506125b2565b60043d036004833e81513d602482011167ffffffffffffffff82111715612562576000925050506125b2565b808301805167ffffffffffffffff8111156125845760009450505050506125b2565b8060208301013d86018111156125a2576000955050505050506125b2565b601f01601f191660405250925050505b806125bd5750612606565b826001600160a01b03167fd7bc86ff5d08c8ab043edec743302aba2520e6635172a428bc956721db9e2d1c83836040516125f8929190613cf4565b60405180910390a25061267b565b3d808015612630576040519150601f19603f3d011682016040523d82523d6000602084013e612635565b606091505b50826001600160a01b03167fd7bc86ff5d08c8ab043edec743302aba2520e6635172a428bc956721db9e2d1c8383604051612671929190613cf4565b60405180910390a2505b610cfa565b60008160405160200161269391906134fd565b60405160208183030381529060405280519060200120836040516020016126ba91906134fd565b604051602081830303815290604052805190602001201490505b92915050565b015190565b8082015160009060ff8116156126f95760019150816126ff565b60009150815b505092915050565b60408051600480825260a0820190925260009160609190816020015b6060815260200190600190039081612723575050604080516020808252818301909252919250606091908082018180368337019050509050612768856000015161225d565b8260008151811061277557fe5b60200260200101819052506127906020866020015183612d52565b61279981612278565b826001815181106127a657fe5b60200260200101819052506127be856040015161225d565b826002815181106127cb57fe5b60200260200101819052506127e66020866060015183612d52565b6127ef81612278565b826003815181106127fc57fe5b60200260200101819052506128226020612815846122ce565b8051906020012083612d52565b6040805160b080825260e08201909252606091602082018180368337019050509050612852818360006020612d62565b61286481876080015160206060612d62565b612872818660806030612d62565b604080516001808252818301909252606091602082018180368337019050509050815160016020830182602086016066600019fa6128af57600080fd5b5060016128bd826000612db5565b60ff16146128d25760009450505050506126d4565b5060019695505050505050565b8151815160009160019181148083146128fb5760009250612939565b600160208701838101602088015b6002848385100114156129345780518351146129285760009650600093505b60209283019201612909565b505050505b5090949350505050565b60408051600480825260a08201909252606091829190816020015b606081526020019060019003908161295e5790505090506123a383612278565b6000816020018351101561299157600080fd5b50016020015190565b604080516020808252818301909252606091829190602082018180368337505050602081018490529050600067ffffffffffffffff1984166129de57506018612a02565b6fffffffffffffffffffffffffffffffff1984166129fe57506010612a02565b5060005b6020811015612a3857818181518110612a1757fe5b01602001516001600160f81b03191615612a3057612a38565b600101612a02565b60008160200390506060816040519080825280601f01601f191660200182016040528015612a6d576020820181803683370190505b5080830196909652508452509192915050565b6060680100000000000000008310612aaa5760405162461bcd60e51b815260040161064f90613795565b60408051600180825281830190925260609160208201818036833701905050905060378411612b045782840160f81b81600081518110612ae657fe5b60200101906001600160f81b031916908160001a90535090506126d4565b6060612b0f8561299a565b90508381510160370160f81b82600081518110612b2857fe5b60200101906001600160f81b031916908160001a905350612b498282612b52565b95945050505050565b6060806040519050835180825260208201818101602087015b81831015612b83578051835260209283019201612b6b565b50855184518101855292509050808201602086015b81831015612bb0578051835260209283019201612b98565b508651929092011591909101601f01601f191660405250905092915050565b60408051600560a21b831860148201526034810190915260609061235881612278565b612bfa612fa2565b506040805180820190915281518152602082810190820152919050565b612c1f612f82565b612c2882612dd1565b612c3157600080fd5b6000612c408360200151612e0b565b60208085015160408051808201909152868152920190820152915050919050565b6000612c6b612fa2565b505080518051602091820151919092015191011190565b612c8a612fa2565b612c9382612c61565b612c9c57600080fd5b60208201516000612cac82612e6e565b80830160209586015260408051808201909152908152938401919091525090919050565b805160009015801590612ce557508151602110155b612cee57600080fd5b6000612cfd8360200151612e0b565b90508083600001511015612d235760405162461bcd60e51b815260040161064f90613b03565b825160208085015183018051928490039291831015612d4957826020036101000a820491505b50949350505050565b9091018181526020918201910152565b60005b81811015610b7457838181518110612d7957fe5b602001015160f81c60f81b858480600101955081518110612d9657fe5b60200101906001600160f81b031916908160001a905350600101612d65565b60008160010183511015612dc857600080fd5b50016001015190565b8051600090612de257506000612273565b6020820151805160001a9060c0821015612e0157600092505050612273565b5060019392505050565b8051600090811a6080811015612e25576000915050612273565b60b8811080612e40575060c08110801590612e40575060f881105b15612e4f576001915050612273565b60c0811015612e635760b519019050612273565b60f519019050612273565b80516000908190811a6080811015612e895760019150612f46565b60b8811015612e9e57607e1981019150612f46565b60c0811015612eef57600060b78203600186019550806020036101000a865104915060018101820193505080831015612ee95760405162461bcd60e51b815260040161064f906138b8565b50612f46565b60f8811015612f045760be1981019150612f46565b600060f78203600186019550806020036101000a8651049150600181018201935050808310156126ff5760405162461bcd60e51b815260040161064f906138b8565b5092915050565b604051806060016040528060008152602001600081526020016000151581525090565b60408051602081019091526000815290565b6040518060400160405280612f95612fa2565b8152602001600081525090565b604051806040016040528060008152602001600081525090565b600082601f830112612fcc578081fd5b8151612fdf612fda82613dad565b613d86565b818152915060208083019084810160005b84811015613055578151870188603f82011261300b57600080fd5b8381015161301b612fda82613dcd565b81815260408b8184860101111561303157600080fd5b61304083888401838701613df1565b50865250509282019290820190600101612ff0565b505050505092915050565b60008083601f840112613071578182fd5b50813567ffffffffffffffff811115613088578182fd5b6020830191508360208285010111156130a057600080fd5b9250929050565b600082601f8301126130b7578081fd5b81356130c5612fda82613dcd565b91508082528360208285010111156130dc57600080fd5b8060208401602084013760009082016020015292915050565b600060a08284031215613106578081fd5b61311060a0613d86565b905081358152602082013560208201526040820135604082015260608201356060820152608082013567ffffffffffffffff81111561314e57600080fd5b61315a848285016130a7565b60808301525092915050565b600060208284031215613177578081fd5b813561235881613e21565b600060208284031215613193578081fd5b815161235881613e21565b600080604083850312156131b0578081fd5b82356131bb81613e21565b946020939093013593505050565b600080604083850312156131db578182fd5b825167ffffffffffffffff808211156131f2578384fd5b81850186601f820112613203578485fd5b80519250613213612fda84613dad565b80848252602080830192508084018a828389028701011115613233578889fd5b8894505b8685101561325e57805161324a81613e21565b845260019490940193928101928101613237565b508801519096509350505080821115613275578283fd5b5061328285828601612fbc565b9150509250929050565b60006020828403121561329d578081fd5b81518015158114612358578182fd5b600080604083850312156132be578182fd5b823567ffffffffffffffff808211156132d5578384fd5b6132e1868387016130a7565b935060208501359150808211156132f6578283fd5b50613282858286016130a7565b60008060008060408587031215613318578182fd5b843567ffffffffffffffff8082111561332f578384fd5b61333b88838901613060565b90965094506020870135915080821115613353578384fd5b5061336087828801613060565b95989497509550505050565b60006020828403121561337d578081fd5b813567ffffffffffffffff80821115613394578283fd5b818401606081870312156133a6578384fd5b6133b06060613d86565b92508035828111156133c0578485fd5b6133cc878284016130f5565b8452506020810135828111156133e0578485fd5b6133ec878284016130f5565b602085015250604081013582811115613403578485fd5b61340f878284016130a7565b6040850152509195945050505050565b600060208284031215613430578081fd5b5035919050565b600060208284031215613448578081fd5b5051919050565b600080600060408486031215613463578081fd5b833560ff81168114613473578182fd5b9250602084013567ffffffffffffffff81111561348e578182fd5b61349a86828701613060565b9497909650939450505050565b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b600081518084526134e9816020860160208601613df1565b601f01601f19169290920160200192915050565b6000825161350f818460208701613df1565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b901515815260200190565b60006020825261235860208301846134d1565b6000604082526135786040830186886134a7565b828103602084015261358b8185876134a7565b979650505050505050565b60208082526010908201526f195d9a59195b98d9481d1bdbc81bdb1960821b604082015260600190565b6020808252818101527f6d616c6963696f757320766f746520736c617368206e6f7420656e61626c6564604082015260600190565b6020808252601690820152751d985b1a59185d1bdc881b9bdd081b5a59dc985d195960521b604082015260600190565b60208082526019908201527f74686520636f6e7472616374206e6f7420696e69742079657400000000000000604082015260600190565b6020808252602b908201527f746865206d616c6963696f757320766f746520736c6173682073636f7065206f60408201526a7574206f662072616e676560a81b606082015260800190565b6020808252601a908201527f6e6f2076696f6c6174696f6e206f6620766f74652072756c6573000000000000604082015260600190565b6020808252818101527f7468652066656c6f6e795468726573686f6c64206f7574206f662072616e6765604082015260600190565b6020808252602b908201527f6c656e677468206f6620656e61626c654d616c6963696f7573566f7465536c6160408201526a0e6d040dad2e6dac2e8c6d60ab1b606082015260800190565b60208082526017908201527f766572696679207369676e6174757265206661696c6564000000000000000000604082015260600190565b6020808252600e908201526d696e70757420746f6f206c6f6e6760901b604082015260600190565b60208082526019908201527f7372634e756d20626967676572207468616e207461724e756d00000000000000604082015260600190565b60208082526027908201527f6c656e677468206f66206d697364656d65616e6f725468726573686f6c64206d6040820152660d2e6dac2e8c6d60cb1b606082015260800190565b60208082526013908201527274776f206964656e746963616c20766f74657360681b604082015260600190565b60208082526030908201527f746865206d6573736167652073656e646572206d7573742062652076616c696460408201526f185d1bdc94d95d0818dbdb9d1c9858dd60821b606082015260800190565b6020808252601190820152706164646974696f6e206f766572666c6f7760781b604082015260600190565b60208082526023908201527f6c656e677468206f662066656c6f6e79536c61736853636f7065206d69736d616040820152620e8c6d60eb1b606082015260800190565b6020808252601490820152736761737072696365206973206e6f74207a65726f60601b604082015260600190565b60208082526029908201527f6c656e677468206f662066656c6f6e79536c617368526577617264526174696f604082015268040dad2e6dac2e8c6d60bb1b606082015260800190565b6020808252601590820152741d9bdd195059191c881a5cc81b9bdd08199bdd5b99605a1b604082015260600190565b6020808252602e908201527f746865206d6573736167652073656e646572206d75737420626520676f76657260408201526d1b985b98d94818dbdb9d1c9858dd60921b606082015260800190565b60208082526022908201527f6c656e677468206f662066656c6f6e795468726573686f6c64206d69736d61746040820152610c6d60f31b606082015260800190565b6020808252602a908201527f7468652066656c6f6e7920736c6173682072657761726420726174696f206f7560408201526974206f662072616e676560b01b606082015260800190565b60208082526019908201527f74686520636f6e747261637420616c726561647920696e697400000000000000604082015260600190565b6020808252600c908201526b32b6b83a3c903432b0b232b960a11b604082015260600190565b6020808252601a908201527f6c656e677468206973206c657373207468616e206f6666736574000000000000604082015260600190565b60208082526025908201527f746865206d697364656d65616e6f725468726573686f6c64206f7574206f662060408201526472616e676560d81b606082015260800190565b6020808252602f908201527f746865206d6573736167652073656e646572206d7573742062652063726f737360408201526e0818da185a5b8818dbdb9d1c9858dd608a1b606082015260800190565b6020808252602d908201527f746865206d6573736167652073656e646572206d75737420626520746865206260408201526c3637b1b590383937b23ab1b2b960991b606082015260800190565b6020808252600d908201526c756e6b6e6f776e20706172616d60981b604082015260600190565b6020808252601490820152731d185c99d95d08189b1bd8dac81d1bdbc81bdb1960621b604082015260600190565b6020808252601e908201527f7265636569766520756e65787065637465642073796e207061636b6167650000604082015260600190565b6020808252818101527f63616e206e6f7420736c61736820747769636520696e206f6e6520626c6f636b604082015260600190565b61ffff91909116815260200190565b90815260200190565b600083825260406020830152613d0d60408301846134d1565b949350505050565b918252602082015260400190565b92835260208301919091521515604082015260600190565b63ffffffff91909116815260200190565b60ff91909116815260200190565b600060ff8516825260606020830152613d7660608301856134d1565b9050826040830152949350505050565b60405181810167ffffffffffffffff81118282101715613da557600080fd5b604052919050565b600067ffffffffffffffff821115613dc3578081fd5b5060209081020190565b600067ffffffffffffffff821115613de3578081fd5b50601f01601f191660200190565b60005b83811015613e0c578181015183820152602001613df4565b83811115613e1b576000848401525b50505050565b6001600160a01b0381168114613e3657600080fd5b5056fea164736f6c6343000604000a", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/9d09d0a3d6332460a810188261ec8195e05aa218", + Code: "608060405234801561001057600080fd5b506004361061035d5760003560e01c80637e434d54116101d3578063c80d4b8f11610104578063df8079e9116100a2578063f9a2bbc71161007c578063f9a2bbc714610601578063fc3e590814610609578063fc4333cd14610611578063fd6a6879146106195761035d565b8063df8079e9146105e9578063e1c7392a146105f1578063f1fad104146105f95761035d565b8063c96be4cb116100de578063c96be4cb146105b3578063cc844b73146105c6578063dc927faf146105d9578063dcc6f156146105e15761035d565b8063c80d4b8f14610590578063c81b166214610598578063c8509d81146105a05761035d565b8063a1a11bf511610171578063aad560631161014b578063aad5606314610565578063ab51bb961461056d578063ac0af62914610575578063ac4317511461057d5761035d565b8063a1a11bf51461054d578063a78abc1614610555578063aa82dce11461055d5761035d565b806396713da9116101ad57806396713da9146105225780639dc092621461052a5780639e89ded8146105325780639f804f5f146105455761035d565b80637e434d54146104ff5780638256ace614610507578063831d65d11461050f5761035d565b8063493279b1116102ad57806362b72cf51161024b578063718a8aa811610225578063718a8aa8146104df57806375d47a0a146104e75780637912a65d146104ef5780637942fd05146104f75761035d565b806362b72cf5146104c75780636e47b482146104cf57806370fd5bad146104d75761035d565b806351b4dce31161028757806351b4dce31461049c57806351e80672146104a4578063567a372d146104ac5780635bfb4990146104b45761035d565b8063493279b1146104775780634bf6c8821461048c57806350055f90146104945761035d565b8063280870281161031a57806337c8dab9116102f457806337c8dab914610431578063389f4f71146104525780633dffc3871461045a57806343756e5c1461046f5761035d565b806328087028146104015780633306ccca1461040957806335aa2e441461041e5761035d565b80630bee7a67146103625780630e2374a5146103805780631182b8751461039557806322d1e80b146103b557806323bac5a2146103ca57806327962118146103ec575b600080fd5b61036a610621565b6040516103779190613d67565b60405180910390f35b610388610626565b6040516103779190613545565b6103a86103a336600461347b565b61062c565b604051610377919061357d565b6103bd610692565b6040516103779190613572565b6103dd6103d8366004613192565b61069b565b60405161037793929190613d4f565b6103ff6103fa3660046132d8565b6106be565b005b610388610a13565b610411610a19565b6040516103779190613d38565b61038861042c36600461344b565b610a1e565b61044461043f366004613192565b610a45565b604051610377929190613d41565b610411610a9c565b610462610aa2565b6040516103779190613d78565b610388610aa7565b61047f610aad565b6040516103779190613d29565b610462610ab3565b610411610ab8565b610388610abe565b610388610ac4565b610411610aca565b6103ff6104c2366004613192565b610ad0565b610411610bdc565b610388610be2565b610462610be8565b610462610bed565b610388610bf2565b610411610bf8565b610462610bfd565b610388610c02565b610444610c08565b6103ff61051d36600461347b565b610c12565b610462610d26565b610388610d2b565b6103ff6105403660046131ca565b610d31565b610411610d60565b610388610d66565b6103bd610d6c565b610388610d75565b610388610d7b565b61036a610d81565b610411610d86565b6103ff61058b36600461332f565b610d8b565b610411611327565b61038861132c565b6103ff6105ae36600461347b565b611332565b6103ff6105c1366004613192565b6113a3565b6103ff6105d4366004613398565b611812565b610388611df0565b610411611df6565b610388611dfb565b6103ff611e01565b610462611e4e565b610388611e53565b610462611e59565b6103ff611e5e565b6103886122a7565b606481565b61200181565b606033612000146106585760405162461bcd60e51b815260040161064f90613bcc565b60405180910390fd5b60005460ff1661067a5760405162461bcd60e51b815260040161064f90613672565b60405162461bcd60e51b815260040161064f90613cbd565b60075460ff1681565b600260208190526000918252604090912080546001820154919092015460ff1683565b60005460ff166106e05760405162461bcd60e51b815260040161064f90613672565b6006546106ed5760146006555b6008546106fa57603c6008555b81511580159061070a5750805115155b6107265760405162461bcd60e51b815260040161064f90613b2a565b60408051600380825260808201909252606091816020015b606081526020019060019003908161073e5790505090506107606102ca6122ad565b8160008151811061076d57fe5b6020026020010181905250610781836122c8565b8160018151811061078e57fe5b60200260200101819052506107a2826122c8565b816002815181106107af57fe5b602002602001018190525060606107c58261231e565b60408051603480825260608281019093529293509091602082018180368337019050509050815160346020830182602086016068600019fa61080657600080fd5b506014810151603482015160405163436aa28360e11b8152600090612002906386d5450690610839908690600401613545565b60206040518083038186803b15801561085157600080fd5b505afa158015610865573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061088991906131ae565b6001600160a01b031614156108b05760405162461bcd60e51b815260040161064f90613642565b43600854820110156108d45760405162461bcd60e51b815260040161064f906135e3565b604051631871f7d960e31b81526120029063c38fbec8906108f9908590600401613545565b600060405180830381600087803b15801561091357600080fd5b505af1158015610927573d6000803e3d6000fd5b50506040516335409f7f60e01b815261100092506335409f7f9150610950908590600401613545565b600060405180830381600087803b15801561096a57600080fd5b505af115801561097e573d6000803e3d6000fd5b50506006546040516309a99b4f60e41b815260646110028031909302049350909150639a99b4f0906109b69033908590600401613559565b602060405180830381600087803b1580156109d057600080fd5b505af11580156109e4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a089190613463565b505050505050505050565b61200581565b603c81565b60018181548110610a2b57fe5b6000918252602090912001546001600160a01b0316905081565b600080610a50612f79565b5050506001600160a01b0316600090815260026020818152604092839020835160608101855281548082526001830154938201849052919093015460ff16151592909301919091529091565b60055481565b600181565b61100181565b6102ca81565b600881565b60065481565b61200681565b61200081565b60045481565b3361100014610af15760405162461bcd60e51b815260040161064f906138b5565b60005460ff16610b135760405162461bcd60e51b815260040161064f90613672565b61200063f7a251d7600b610b26846123af565b60006040518463ffffffff1660e01b8152600401610b4693929190613d86565b600060405180830381600087803b158015610b6057600080fd5b505af1925050508015610b71575060015b610bd9573d808015610b9f576040519150601f19603f3d011682016040523d82523d6000602084013e610ba4565b606091505b50816001600160a01b0316600080516020613e63833981519152600083604051610bcf929190613590565b60405180910390a2505b50565b60035481565b61100581565b600281565b601081565b61100881565b600581565b600b81565b61200381565b6004546005549091565b3361200014610c335760405162461bcd60e51b815260040161064f90613bcc565b60005460ff16610c555760405162461bcd60e51b815260040161064f90613672565b610c5d612f9c565b6000610c9e84848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061247992505050565b915091508015610ce55781516040517f7f0956d47419b9525356e7111652b653b530ec6f5096dccc04589bc38e62996791610cd891613d67565b60405180910390a1610d1e565b81516040517f7d45f62d17443dd4547bca8a8112c60e2385669318dc300ec61a5d2492f262e791610d1591613d67565b60405180910390a15b50505b505050565b600981565b61100781565b3361100014610d525760405162461bcd60e51b815260040161064f906138b5565b610d5c82826124f9565b5050565b60085481565b61100681565b60005460ff1681565b61200281565b61300081565b600081565b600481565b60005460ff16610dad5760405162461bcd60e51b815260040161064f90613672565b3361100714610dce5760405162461bcd60e51b815260040161064f90613a19565b610e3984848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260148152731b5a5cd9195b59585b9bdc951a1c995cda1bdb1960621b602082015291506126ac9050565b15610ed45760208114610e5e5760405162461bcd60e51b815260040161064f90613841565b604080516020601f8401819004810282018101909252828152600091610e9c9185858083850183828082843760009201919091525061270692505050565b905060018110158015610eb0575060055481105b610ecc5760405162461bcd60e51b815260040161064f90613b87565b6004556112e4565b610f3a84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600f81526e19995b1bdb9e551a1c995cda1bdb19608a1b602082015291506126ac9050565b15610fd65760208114610f5f5760405162461bcd60e51b815260040161064f90613a67565b604080516020601f8401819004810282018101909252828152600091610f9d9185858083850183828082843760009201919091525061270692505050565b90506103e88111158015610fb2575060045481115b610fce5760405162461bcd60e51b815260040161064f9061372b565b6005556112e4565b61104384848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601681527566656c6f6e79536c617368526577617264526174696f60501b602082015291506126ac9050565b156110dd57602081146110685760405162461bcd60e51b815260040161064f906139a1565b604080516020601f84018190048102820181019092528281526000916110a69185858083850183828082843760009201919091525061270692505050565b9050600a81101580156110b95750606481105b6110d55760405162461bcd60e51b815260040161064f90613aa9565b6006556112e4565b61115184848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601881527f656e61626c654d616c6963696f7573566f7465536c6173680000000000000000602082015291506126ac9050565b156111c857602081146111765760405162461bcd60e51b815260040161064f90613760565b604080516020601f84018190048102820181019092528281526111b2919084848083850183828082843760009201919091525061270b92505050565b6007805460ff19169115159190911790556112e4565b61122f84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601081526f66656c6f6e79536c61736853636f706560801b602082015291506126ac9050565b156112cc57602081146112545760405162461bcd60e51b815260040161064f90613930565b604080516020601f84018190048102820181019092528281526000916112929185858083850183828082843760009201919091525061270692505050565b905061708081101580156112a85750620d2f0081105b6112c45760405162461bcd60e51b815260040161064f906136a9565b6008556112e4565b60405162461bcd60e51b815260040161064f90613c68565b7f6cdb0ac70ab7f2e2d035cca5be60d89906f2dede7648ddbd7402189c1eeed17a8484848460405161131994939291906135b1565b60405180910390a150505050565b600a81565b61100281565b33612000146113535760405162461bcd60e51b815260040161064f90613bcc565b60005460ff166113755760405162461bcd60e51b815260040161064f90613672565b6040517f07db600eebe2ac176be8dcebad61858c245a4961bb32ca2aa3d159b09aa0810e90600090a1505050565b3341146113c25760405162461bcd60e51b815260040161064f90613c1b565b60005460ff166113e45760405162461bcd60e51b815260040161064f90613672565b60035443116114055760405162461bcd60e51b815260040161064f90613cf4565b3a156114235760405162461bcd60e51b815260040161064f90613973565b60405163155853f360e21b8152611000906355614fcc90611448908490600401613545565b60206040518083038186803b15801561146057600080fd5b505afa158015611474573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061149891906132b8565b6114a15761180b565b6114a9612f79565b506001600160a01b0381166000908152600260208181526040928390208351606081018552815481526001820154928101929092529091015460ff16158015928201929092529061150457602081018051600101905261155d565b60016040820181905260208201819052805480820182556000919091527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180546001600160a01b0319166001600160a01b0384161790555b43815260055460208201518161156f57fe5b0661173957600060208201526040516335409f7f60e01b8152611000906335409f7f906115a0908590600401613545565b600060405180830381600087803b1580156115ba57600080fd5b505af11580156115ce573d6000803e3d6000fd5b505060405163436aa28360e11b81526000925061200291506386d54506906115fa908690600401613545565b60206040518083038186803b15801561161257600080fd5b505afa158015611626573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061164a91906131ae565b6001600160a01b03161461166b576116668282602001516124f9565b611734565b61200063f7a251d7600b61167e856123af565b60006040518463ffffffff1660e01b815260040161169e93929190613d86565b600060405180830381600087803b1580156116b857600080fd5b505af19250505080156116c9575060015b611734573d8080156116f7576040519150601f19603f3d011682016040523d82523d6000602084013e6116fc565b606091505b50826001600160a01b0316600080516020613e6383398151915283602001518360405161172a929190613590565b60405180910390a2505b6117a5565b60045481602001518161174857fe5b066117a5576040516375abf10160e11b81526110009063eb57e20290611772908590600401613545565b600060405180830381600087803b15801561178c57600080fd5b505af11580156117a0573d6000803e3d6000fd5b505050505b6001600160a01b0382166000818152600260208181526040808420865181559186015160018301558581015191909201805460ff1916911515919091179055517fddb6012116e51abf5436d956a4f0ebd927e92c576ff96d7918290c8782291e3e9190a2505b5043600355565b60005460ff166118345760405162461bcd60e51b815260040161064f90613672565b60075460ff166118565760405162461bcd60e51b815260040161064f9061360d565b6006546118635760146006555b60085461187057603c6008555b60085481516040015143910111801561189457504360085482602001516040015101115b6118b05760405162461bcd60e51b815260040161064f90613c8f565b8060200151602001518160000151602001511480156118de5750806020015160600151816000015160600151145b156118fb5760405162461bcd60e51b815260040161064f90613888565b80516040810151905110801561191a5750602081015160408101519051105b6119365760405162461bcd60e51b815260040161064f9061380a565b60208101515181515110801561195b5750806000015160400151816020015160400151105b8061198657508051516020820151511080156119865750806020015160400151816000015160400151105b806119a05750806020015160400151816000015160400151145b6119bc5760405162461bcd60e51b815260040161064f906136f4565b604080820151905163ea321e4960e01b81526110009163ea321e49916119e5919060040161357d565b60206040518083038186803b1580156119fd57600080fd5b505afa158015611a11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a3591906132b8565b611a515760405162461bcd60e51b815260040161064f906139ea565b611a6381600001518260400151612733565b8015611a7c5750611a7c81602001518260400151612733565b611a985760405162461bcd60e51b815260040161064f906137ab565b6060806110006001600160a01b0316633b071dcc6040518163ffffffff1660e01b815260040160006040518083038186803b158015611ad657600080fd5b505afa158015611aea573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611b1291908101906131f5565b9150915060005b8151811015611c4f57611b43828281518110611b3157fe5b6020026020010151856040015161290b565b15611c47576006546040516309a99b4f60e41b815260646110028031909302049190639a99b4f090611b7b9033908590600401613559565b602060405180830381600087803b158015611b9557600080fd5b505af1158015611ba9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bcd9190613463565b506110006001600160a01b03166335409f7f858481518110611beb57fe5b60200260200101516040518263ffffffff1660e01b8152600401611c0f9190613545565b600060405180830381600087803b158015611c2957600080fd5b505af1158015611c3d573d6000803e3d6000fd5b5050505050611c4f565b600101611b19565b5060408084015190516317b4f35360e01b8152600091612002916317b4f35391611c7b9160040161357d565b60206040518083038186803b158015611c9357600080fd5b505afa158015611ca7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ccb91906131ae565b6001600160a01b031614611d39576040808401519051630e9fbf5160e01b815261200291630e9fbf5191611d02919060040161357d565b600060405180830381600087803b158015611d1c57600080fd5b505af1158015611d30573d6000803e3d6000fd5b50505050610d21565b6120006001600160a01b031663f7a251d7600b611d59866040015161296f565b60006040518463ffffffff1660e01b8152600401611d7993929190613d86565b600060405180830381600087803b158015611d9357600080fd5b505af1158015611da7573d6000803e3d6000fd5b505050506000611dbc846040015160006129aa565b60405190915081907f7b78aadacff901d8b63d0dba4f86283d4db8aef27f9ed70413dd860f1c9532b690600090a250505050565b61100381565b601481565b61200481565b60005460ff1615611e245760405162461bcd60e51b815260040161064f90613af3565b60056004819055600a905560078054600160ff199182168117909255600080549091169091179055565b601181565b61100081565b600381565b3361100014611e7f5760405162461bcd60e51b815260040161064f906138b5565b60005460ff16611ea15760405162461bcd60e51b815260040161064f90613672565b600154611ead576122a5565b600154600090600019015b808211612279576000805b82841015611fdc57611ed3612f79565b6002600060018781548110611ee457fe5b60009182526020808320909101546001600160a01b0316835282810193909352604091820190208151606081018352815481526001820154938101939093526002015460ff161515908201526005549091506004900481602001511115611fc657600460055481611f5157fe5b04816020015103816020018181525050806002600060018881548110611f7357fe5b6000918252602080832091909101546001600160a01b0316835282810193909352604091820190208351815591830151600183015591909101516002909101805460ff1916911515919091179055611fd0565b6001925050611fdc565b50836001019350611ec3565b82841161217357611feb612f79565b6002600060018681548110611ffc57fe5b60009182526020808320909101546001600160a01b0316835282810193909352604091820190208151606081018352815481526001820154938101939093526002015460ff1615159082015260055490915060049004816020015111156120e45760046005548161206957fe5b0481602001510381602001818152505080600260006001878154811061208b57fe5b6000918252602080832091909101546001600160a01b03168352828101939093526040918201902083518155918301516001808401919091559201516002909101805460ff191691151591909117905591506121739050565b60026000600186815481106120f557fe5b60009182526020808320909101546001600160a01b031683528201929092526040018120818155600181810192909255600201805460ff1916905580548061213957fe5b600082815260209020810160001990810180546001600160a01b0319169055019055836121665750612173565b5060001990920191611fdc565b81801561217d5750805b1561225c57600260006001868154811061219357fe5b60009182526020808320909101546001600160a01b031683528201929092526040018120818155600181810192909255600201805460ff191690558054849081106121da57fe5b600091825260209091200154600180546001600160a01b03909216918690811061220057fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600180548061223957fe5b600082815260209020810160001990810180546001600160a01b03191690550190555b82612268575050612279565b505060019091019060001901611eb8565b6040517fcfdb3b6ccaeccbdc68be3c59c840e3b3c90f0a7c491f5fff1cf56cfda200dd9c90600090a150505b565b61100481565b60606122c06122bb836129c6565b6122c8565b90505b919050565b6060815160011480156122fa5750607f60f81b826000815181106122e857fe5b01602001516001600160f81b03191611155b156123065750806122c3565b6122c06123188351608060ff16612aac565b83612b7e565b606081516000141561233f57506040805160008152602081019091526122c3565b60608260008151811061234e57fe5b602002602001015190506000600190505b835181101561238f576123858285838151811061237857fe5b6020026020010151612b7e565b915060010161235f565b506123a86123a2825160c060ff16612aac565b82612b7e565b9392505050565b60408051600480825260a08201909252606091829190816020015b60608152602001906001900390816123ca5790505090506123f3836001600160a01b0316612bfb565b8160008151811061240057fe5b6020026020010181905250612414436122ad565b8160018151811061242157fe5b60209081029190910101526124376102ca6122ad565b8160028151811061244457fe5b6020026020010181905250612458426122ad565b8160038151811061246557fe5b60200260200101819052506123a88161231e565b612481612f9c565b600061248b612f9c565b612493612fae565b6124a461249f86612c1e565b612c43565b90506000805b6124b383612c8d565b156124ec57806124df576124ce6124c984612cae565b612cfc565b63ffffffff168452600191506124e4565b6124ec565b6001016124aa565b5091935090915050915091565b6040516375cc7d8960e01b8152612002906375cc7d899061251e908590600401613545565b600060405180830381600087803b15801561253857600080fd5b505af1925050508015612549575060015b610d5c576040516000815260443d101561256557506000612602565b60046000803e60005160e01c6308c379a08114612586576000915050612602565b60043d036004833e81513d602482011167ffffffffffffffff821117156125b257600092505050612602565b808301805167ffffffffffffffff8111156125d4576000945050505050612602565b8060208301013d86018111156125f257600095505050505050612602565b601f01601f191660405250925050505b8061260d5750612644565b826001600160a01b0316600080516020613e638339815191528383604051612636929190613590565b60405180910390a2506126a7565b3d80801561266e576040519150601f19603f3d011682016040523d82523d6000602084013e612673565b606091505b50826001600160a01b0316600080516020613e63833981519152838360405161269d929190613590565b60405180910390a2505b610d5c565b6000816040516020016126bf9190613529565b60405160208183030381529060405280519060200120836040516020016126e69190613529565b604051602081830303815290604052805190602001201490505b92915050565b015190565b8082015160009060ff81161561272557600191508161272b565b60009150815b505092915050565b60408051600480825260a0820190925260009160609190816020015b606081526020019060019003908161274f57505060408051602080825281830190925291925060609190808201818036833701905050905061279485600001516122ad565b826000815181106127a157fe5b60200260200101819052506127bc6020866020015183612d7e565b6127c5816122c8565b826001815181106127d257fe5b60200260200101819052506127ea85604001516122ad565b826002815181106127f757fe5b60200260200101819052506128126020866060015183612d7e565b61281b816122c8565b8260038151811061282857fe5b602002602001018190525061284e60206128418461231e565b8051906020012083612d7e565b6040805160b080825260e0820190925260609160208201818036833701905050905061287e818360006020612d8e565b61289081876080015160206060612d8e565b61289e818660806030612d8e565b604080516001808252818301909252606091602082018180368337019050509050815160016020830182602086016066600019fa6128db57600080fd5b5060016128e9826000612de1565b60ff16146128fe576000945050505050612700565b5060019695505050505050565b8151815160009160019181148083146129275760009250612965565b600160208701838101602088015b6002848385100114156129605780518351146129545760009650600093505b60209283019201612935565b505050505b5090949350505050565b60408051600480825260a08201909252606091829190816020015b606081526020019060019003908161298a5790505090506123f3836122c8565b600081602001835110156129bd57600080fd5b50016020015190565b604080516020808252818301909252606091829190602082018180368337505050602081018490529050600067ffffffffffffffff198416612a0a57506018612a2e565b6fffffffffffffffffffffffffffffffff198416612a2a57506010612a2e565b5060005b6020811015612a6457818181518110612a4357fe5b01602001516001600160f81b03191615612a5c57612a64565b600101612a2e565b60008160200390506060816040519080825280601f01601f191660200182016040528015612a99576020820181803683370190505b5080830196909652508452509192915050565b6060680100000000000000008310612ad65760405162461bcd60e51b815260040161064f906137e2565b60408051600180825281830190925260609160208201818036833701905050905060378411612b305782840160f81b81600081518110612b1257fe5b60200101906001600160f81b031916908160001a9053509050612700565b6060612b3b856129c6565b90508381510160370160f81b82600081518110612b5457fe5b60200101906001600160f81b031916908160001a905350612b758282612b7e565b95945050505050565b6060806040519050835180825260208201818101602087015b81831015612baf578051835260209283019201612b97565b50855184518101855292509050808201602086015b81831015612bdc578051835260209283019201612bc4565b508651929092011591909101601f01601f191660405250905092915050565b60408051600560a21b83186014820152603481019091526060906123a8816122c8565b612c26612fce565b506040805180820190915281518152602082810190820152919050565b612c4b612fae565b612c5482612dfd565b612c5d57600080fd5b6000612c6c8360200151612e37565b60208085015160408051808201909152868152920190820152915050919050565b6000612c97612fce565b505080518051602091820151919092015191011190565b612cb6612fce565b612cbf82612c8d565b612cc857600080fd5b60208201516000612cd882612e9a565b80830160209586015260408051808201909152908152938401919091525090919050565b805160009015801590612d1157508151602110155b612d1a57600080fd5b6000612d298360200151612e37565b90508083600001511015612d4f5760405162461bcd60e51b815260040161064f90613b50565b825160208085015183018051928490039291831015612d7557826020036101000a820491505b50949350505050565b9091018181526020918201910152565b60005b81811015610d1e57838181518110612da557fe5b602001015160f81c60f81b858480600101955081518110612dc257fe5b60200101906001600160f81b031916908160001a905350600101612d91565b60008160010183511015612df457600080fd5b50016001015190565b8051600090612e0e575060006122c3565b6020820151805160001a9060c0821015612e2d576000925050506122c3565b5060019392505050565b8051600090811a6080811015612e515760009150506122c3565b60b8811080612e6c575060c08110801590612e6c575060f881105b15612e7b5760019150506122c3565b60c0811015612e8f5760b5190190506122c3565b60f5190190506122c3565b80516000908190811a6080811015612eb55760019150612f72565b60b8811015612eca57607e1981019150612f72565b60c0811015612f1b57600060b78203600186019550806020036101000a865104915060018101820193505080831015612f155760405162461bcd60e51b815260040161064f90613905565b50612f72565b60f8811015612f305760be1981019150612f72565b600060f78203600186019550806020036101000a86510491506001810182019350508083101561272b5760405162461bcd60e51b815260040161064f90613905565b5092915050565b604051806060016040528060008152602001600081526020016000151581525090565b60408051602081019091526000815290565b6040518060400160405280612fc1612fce565b8152602001600081525090565b604051806040016040528060008152602001600081525090565b600082601f830112612ff8578081fd5b815161300b61300682613dd9565b613db2565b818152915060208083019084810160005b84811015613081578151870188603f82011261303757600080fd5b8381015161304761300682613df9565b81815260408b8184860101111561305d57600080fd5b61306c83888401838701613e1d565b5086525050928201929082019060010161301c565b505050505092915050565b60008083601f84011261309d578182fd5b50813567ffffffffffffffff8111156130b4578182fd5b6020830191508360208285010111156130cc57600080fd5b9250929050565b600082601f8301126130e3578081fd5b81356130f161300682613df9565b915080825283602082850101111561310857600080fd5b8060208401602084013760009082016020015292915050565b600060a08284031215613132578081fd5b61313c60a0613db2565b905081358152602082013560208201526040820135604082015260608201356060820152608082013567ffffffffffffffff81111561317a57600080fd5b613186848285016130d3565b60808301525092915050565b6000602082840312156131a3578081fd5b81356123a881613e4d565b6000602082840312156131bf578081fd5b81516123a881613e4d565b600080604083850312156131dc578081fd5b82356131e781613e4d565b946020939093013593505050565b60008060408385031215613207578182fd5b825167ffffffffffffffff8082111561321e578384fd5b81850186601f82011261322f578485fd5b8051925061323f61300684613dd9565b80848252602080830192508084018a82838902870101111561325f578889fd5b8894505b8685101561328a57805161327681613e4d565b845260019490940193928101928101613263565b5088015190965093505050808211156132a1578283fd5b506132ae85828601612fe8565b9150509250929050565b6000602082840312156132c9578081fd5b815180151581146123a8578182fd5b600080604083850312156132ea578182fd5b823567ffffffffffffffff80821115613301578384fd5b61330d868387016130d3565b93506020850135915080821115613322578283fd5b506132ae858286016130d3565b60008060008060408587031215613344578182fd5b843567ffffffffffffffff8082111561335b578384fd5b6133678883890161308c565b9096509450602087013591508082111561337f578384fd5b5061338c8782880161308c565b95989497509550505050565b6000602082840312156133a9578081fd5b813567ffffffffffffffff808211156133c0578283fd5b818401606081870312156133d2578384fd5b6133dc6060613db2565b92508035828111156133ec578485fd5b6133f887828401613121565b84525060208101358281111561340c578485fd5b61341887828401613121565b60208501525060408101358281111561342f578485fd5b61343b878284016130d3565b6040850152509195945050505050565b60006020828403121561345c578081fd5b5035919050565b600060208284031215613474578081fd5b5051919050565b60008060006040848603121561348f578081fd5b833560ff8116811461349f578182fd5b9250602084013567ffffffffffffffff8111156134ba578182fd5b6134c68682870161308c565b9497909650939450505050565b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b60008151808452613515816020860160208601613e1d565b601f01601f19169290920160200192915050565b6000825161353b818460208701613e1d565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b901515815260200190565b6000602082526123a860208301846134fd565b6000838252604060208301526135a960408301846134fd565b949350505050565b6000604082526135c56040830186886134d3565b82810360208401526135d88185876134d3565b979650505050505050565b60208082526010908201526f195d9a59195b98d9481d1bdbc81bdb1960821b604082015260600190565b6020808252818101527f6d616c6963696f757320766f746520736c617368206e6f7420656e61626c6564604082015260600190565b6020808252601690820152751d985b1a59185d1bdc881b9bdd081b5a59dc985d195960521b604082015260600190565b60208082526019908201527f74686520636f6e7472616374206e6f7420696e69742079657400000000000000604082015260600190565b6020808252602b908201527f746865206d616c6963696f757320766f746520736c6173682073636f7065206f60408201526a7574206f662072616e676560a81b606082015260800190565b6020808252601a908201527f6e6f2076696f6c6174696f6e206f6620766f74652072756c6573000000000000604082015260600190565b6020808252818101527f7468652066656c6f6e795468726573686f6c64206f7574206f662072616e6765604082015260600190565b6020808252602b908201527f6c656e677468206f6620656e61626c654d616c6963696f7573566f7465536c6160408201526a0e6d040dad2e6dac2e8c6d60ab1b606082015260800190565b60208082526017908201527f766572696679207369676e6174757265206661696c6564000000000000000000604082015260600190565b6020808252600e908201526d696e70757420746f6f206c6f6e6760901b604082015260600190565b60208082526019908201527f7372634e756d20626967676572207468616e207461724e756d00000000000000604082015260600190565b60208082526027908201527f6c656e677468206f66206d697364656d65616e6f725468726573686f6c64206d6040820152660d2e6dac2e8c6d60cb1b606082015260800190565b60208082526013908201527274776f206964656e746963616c20766f74657360681b604082015260600190565b60208082526030908201527f746865206d6573736167652073656e646572206d7573742062652076616c696460408201526f185d1bdc94d95d0818dbdb9d1c9858dd60821b606082015260800190565b6020808252601190820152706164646974696f6e206f766572666c6f7760781b604082015260600190565b60208082526023908201527f6c656e677468206f662066656c6f6e79536c61736853636f7065206d69736d616040820152620e8c6d60eb1b606082015260800190565b6020808252601490820152736761737072696365206973206e6f74207a65726f60601b604082015260600190565b60208082526029908201527f6c656e677468206f662066656c6f6e79536c617368526577617264526174696f604082015268040dad2e6dac2e8c6d60bb1b606082015260800190565b6020808252601590820152741d9bdd195059191c881a5cc81b9bdd08199bdd5b99605a1b604082015260600190565b6020808252602e908201527f746865206d6573736167652073656e646572206d75737420626520676f76657260408201526d1b985b98d94818dbdb9d1c9858dd60921b606082015260800190565b60208082526022908201527f6c656e677468206f662066656c6f6e795468726573686f6c64206d69736d61746040820152610c6d60f31b606082015260800190565b6020808252602a908201527f7468652066656c6f6e7920736c6173682072657761726420726174696f206f7560408201526974206f662072616e676560b01b606082015260800190565b60208082526019908201527f74686520636f6e747261637420616c726561647920696e697400000000000000604082015260600190565b6020808252600c908201526b32b6b83a3c903432b0b232b960a11b604082015260600190565b6020808252601a908201527f6c656e677468206973206c657373207468616e206f6666736574000000000000604082015260600190565b60208082526025908201527f746865206d697364656d65616e6f725468726573686f6c64206f7574206f662060408201526472616e676560d81b606082015260800190565b6020808252602f908201527f746865206d6573736167652073656e646572206d7573742062652063726f737360408201526e0818da185a5b8818dbdb9d1c9858dd608a1b606082015260800190565b6020808252602d908201527f746865206d6573736167652073656e646572206d75737420626520746865206260408201526c3637b1b590383937b23ab1b2b960991b606082015260800190565b6020808252600d908201526c756e6b6e6f776e20706172616d60981b604082015260600190565b6020808252601490820152731d185c99d95d08189b1bd8dac81d1bdbc81bdb1960621b604082015260600190565b6020808252601e908201527f7265636569766520756e65787065637465642073796e207061636b6167650000604082015260600190565b6020808252818101527f63616e206e6f7420736c61736820747769636520696e206f6e6520626c6f636b604082015260600190565b61ffff91909116815260200190565b90815260200190565b918252602082015260400190565b92835260208301919091521515604082015260600190565b63ffffffff91909116815260200190565b60ff91909116815260200190565b600060ff8516825260606020830152613da260608301856134fd565b9050826040830152949350505050565b60405181810167ffffffffffffffff81118282101715613dd157600080fd5b604052919050565b600067ffffffffffffffff821115613def578081fd5b5060209081020190565b600067ffffffffffffffff821115613e0f578081fd5b50601f01601f191660200190565b60005b83811015613e38578181015183820152602001613e20565b83811115613e47576000848401525b50505050565b6001600160a01b0381168114610bd957600080fdfed7bc86ff5d08c8ab043edec743302aba2520e6635172a428bc956721db9e2d1ca164736f6c6343000604000a", }, { ContractAddr: common.HexToAddress(TokenHubContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/1abdfbf3aeb86909c2220b79bf92b87ddff64b54", - Code: "6080604052600436106104405760003560e01c80639509b98011610234578063c81b16621161012e578063ebf71d53116100b6578063fb063e8f1161007a578063fb063e8f146110d3578063fc1a598f146110e8578063fc3e590814610cca578063fd6a68791461111b578063ff9c0027146108a057610488565b8063ebf71d531461106a578063f01484721461107f578063f1fad10414611094578063f9a2bbc7146110a9578063fa9e9159146110be57610488565b8063dc927faf116100fd578063dc927faf14610fce578063df8079e914610fe3578063e04c83a714610ff8578063e1c7392a14611022578063e8f35cea1461103757610488565b8063c81b166214610ef9578063c8509d8114610f0e578063cf41984414610f93578063d9e6dae91461080d57610488565b8063aa7415f5116101bc578063b99328c511610180578063b99328c514610e30578063b9fd21e314610e69578063ba35ead614610e7e578063bbface1f14610e93578063bd46646114610ec657610488565b8063aa7415f514610cdf578063aa82dce114610d26578063aad5606314610d3b578063ab51bb9614610d50578063ac43175114610d6557610488565b80639dc09262116102035780639dc0926214610c76578063a1a11bf514610c8b578063a496fba214610ca0578063a78abc1614610cb5578063a7c9f02d14610cca57610488565b80639509b98014610bda57806396713da914610c135780639a854bbd14610c285780639a99b4f014610c3d57610488565b806359b9278911610345578063727be1f8116102cd578063831d65d111610291578063831d65d114610ac85780638525db0314610b4d5780638b87b21f146107625780638eff336c14610b8657806393ab703f14610bc557610488565b8063727be1f814610a2057806375d47a0a14610a4a5780637942fd0514610a5f578063799758b914610a745780637e434d5414610ab357610488565b80636e056520116103145780636e056520146108b55780636e47b482146109e157806370fd5bad146108a0578063718a8aa8146109f657806371d3086314610a0b57610488565b806359b92789146108615780635d499b1b1461088b578063613684751461080d57806366dea52a146108a057610488565b80633fd8b02f116103c85780634a3acdf4116103975780634a3acdf4146107f85780634bf6c8821461080d57806350432d321461082257806351b4dce31461083757806351e806721461084c57610488565b80633fd8b02f1461078d57806343756e5c146107a257806343a368b9146107b7578063493279b1146107cc57610488565b8063149d14d91161040f578063149d14d91461062157806328087028146106485780632ae454831461065d5780633d713223146106b15780633dffc3871461076257610488565b80630bee7a671461048d5780630e2374a5146104bb5780631182b875146104ec57806312234582146105e657610488565b36610488573415610486576040805133815234602082015281517f6c98249d85d88c3753a04a22230f595e4dc8d3dc86c34af35deeeedc861b89db929181900390910190a15b005b600080fd5b34801561049957600080fd5b506104a2611130565b6040805163ffffffff9092168252519081900360200190f35b3480156104c757600080fd5b506104d0611135565b604080516001600160a01b039092168252519081900360200190f35b3480156104f857600080fd5b506105716004803603604081101561050f57600080fd5b60ff8235169190810190604081016020820135600160201b81111561053357600080fd5b82018360208201111561054557600080fd5b803590602001918460018302840111600160201b8311171561056657600080fd5b50909250905061113b565b6040805160208082528351818301528351919283929083019185019080838360005b838110156105ab578181015183820152602001610593565b50505050905090810190601f1680156105d85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156105f257600080fd5b506104866004803603604081101561060957600080fd5b506001600160a01b0381358116916020013516611269565b34801561062d57600080fd5b50610636611363565b60408051918252519081900360200190f35b34801561065457600080fd5b506104d0611369565b34801561066957600080fd5b506106986004803603604081101561068057600080fd5b506001600160a01b038135811691602001351661136f565b6040805192835260208301919091528051918290030190f35b3480156106bd57600080fd5b506104d0600480360360208110156106d457600080fd5b810190602081018135600160201b8111156106ee57600080fd5b82018360208201111561070057600080fd5b803590602001918460018302840111600160201b8311171561072157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611393945050505050565b34801561076e57600080fd5b506107776113b7565b6040805160ff9092168252519081900360200190f35b34801561079957600080fd5b506106366113bc565b3480156107ae57600080fd5b506104d06113c2565b3480156107c357600080fd5b506106366113c8565b3480156107d857600080fd5b506107e16113d4565b6040805161ffff9092168252519081900360200190f35b34801561080457600080fd5b506106366113da565b34801561081957600080fd5b506107776113e0565b34801561082e57600080fd5b506106366113e5565b34801561084357600080fd5b506104d06113f0565b34801561085857600080fd5b506104d06113f6565b34801561086d57600080fd5b506104d06004803603602081101561088457600080fd5b50356113fc565b34801561089757600080fd5b50610636611417565b3480156108ac57600080fd5b50610777611420565b6109cd600480360360808110156108cb57600080fd5b810190602081018135600160201b8111156108e557600080fd5b8201836020820111156108f757600080fd5b803590602001918460208302840111600160201b8311171561091857600080fd5b919390929091602081019035600160201b81111561093557600080fd5b82018360208201111561094757600080fd5b803590602001918460208302840111600160201b8311171561096857600080fd5b919390929091602081019035600160201b81111561098557600080fd5b82018360208201111561099757600080fd5b803590602001918460208302840111600160201b831117156109b857600080fd5b91935091503567ffffffffffffffff16611425565b604080519115158252519081900360200190f35b3480156109ed57600080fd5b506104d06118fa565b348015610a0257600080fd5b50610777611900565b348015610a1757600080fd5b50610636611905565b348015610a2c57600080fd5b506109cd60048036036020811015610a4357600080fd5b503561190b565b348015610a5657600080fd5b506104d061198c565b348015610a6b57600080fd5b50610777611992565b348015610a8057600080fd5b5061048660048036036060811015610a9757600080fd5b508035906001600160a01b036020820135169060400135611997565b348015610abf57600080fd5b506104d0611c3d565b348015610ad457600080fd5b5061048660048036036040811015610aeb57600080fd5b60ff8235169190810190604081016020820135600160201b811115610b0f57600080fd5b820183602082011115610b2157600080fd5b803590602001918460018302840111600160201b83111715610b4257600080fd5b509092509050611c43565b348015610b5957600080fd5b5061048660048036036040811015610b7057600080fd5b50803590602001356001600160a01b0316611d8c565b348015610b9257600080fd5b5061048660048036036060811015610ba957600080fd5b508035906001600160a01b036020820135169060400135611ef5565b348015610bd157600080fd5b50610636611f7b565b348015610be657600080fd5b5061048660048036036040811015610bfd57600080fd5b506001600160a01b038135169060200135611f80565b348015610c1f57600080fd5b5061077761213d565b348015610c3457600080fd5b50610636612142565b348015610c4957600080fd5b5061063660048036036040811015610c6057600080fd5b506001600160a01b03813516906020013561214e565b348015610c8257600080fd5b506104d061228c565b348015610c9757600080fd5b506104d0612292565b348015610cac57600080fd5b50610777612298565b348015610cc157600080fd5b506109cd61229d565b348015610cd657600080fd5b506107776122a6565b6109cd60048036036080811015610cf557600080fd5b5080356001600160a01b03908116916020810135909116906040810135906060013567ffffffffffffffff166122ab565b348015610d3257600080fd5b506104d061232b565b348015610d4757600080fd5b506104d0612331565b348015610d5c57600080fd5b506104a2612298565b348015610d7157600080fd5b5061048660048036036040811015610d8857600080fd5b810190602081018135600160201b811115610da257600080fd5b820183602082011115610db457600080fd5b803590602001918460018302840111600160201b83111715610dd557600080fd5b919390929091602081019035600160201b811115610df257600080fd5b820183602082011115610e0457600080fd5b803590602001918460018302840111600160201b83111715610e2557600080fd5b509092509050612337565b348015610e3c57600080fd5b5061048660048036036040811015610e5357600080fd5b50803590602001356001600160a01b03166127df565b348015610e7557600080fd5b5061063661285f565b348015610e8a57600080fd5b50610636612869565b348015610e9f57600080fd5b5061063660048036036020811015610eb657600080fd5b50356001600160a01b031661286f565b348015610ed257600080fd5b5061063660048036036020811015610ee957600080fd5b50356001600160a01b0316612881565b348015610f0557600080fd5b506104d061289c565b348015610f1a57600080fd5b5061048660048036036040811015610f3157600080fd5b60ff8235169190810190604081016020820135600160201b811115610f5557600080fd5b820183602082011115610f6757600080fd5b803590602001918460018302840111600160201b83111715610f8857600080fd5b5090925090506128a2565b348015610f9f57600080fd5b5061048660048036036040811015610fb657600080fd5b506001600160a01b0381358116916020013516612972565b348015610fda57600080fd5b506104d0612c46565b348015610fef57600080fd5b506104d0612c4c565b34801561100457600080fd5b506109cd6004803603602081101561101b57600080fd5b5035612c52565b34801561102e57600080fd5b50610486612cf2565b34801561104357600080fd5b506106366004803603602081101561105a57600080fd5b50356001600160a01b0316612d92565b34801561107657600080fd5b50610777612da4565b34801561108b57600080fd5b50610777612da9565b3480156110a057600080fd5b50610777612dae565b3480156110b557600080fd5b506104d0612db3565b3480156110ca57600080fd5b50610636612db9565b3480156110df57600080fd5b50610636612dbf565b3480156110f457600080fd5b506105716004803603602081101561110b57600080fd5b50356001600160a01b0316612dcd565b34801561112757600080fd5b506104d0612ef4565b606481565b61200181565b60005460609060ff16611183576040805162461bcd60e51b815260206004820152601960248201526000805160206153d8833981519152604482015290519081900360640190fd5b33612000146111c35760405162461bcd60e51b815260040180806020018281038252602f815260200180615386602f913960400191505060405180910390fd5b60ff8416600214156112155761120e83838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612efa92505050565b9050611262565b6040805162461bcd60e51b815260206004820152601860248201527f756e7265636f676e697a65642073796e207061636b6167650000000000000000604482015290519081900360640190fd5b9392505050565b33612000146112a95760405162461bcd60e51b815260040180806020018281038252602f815260200180615386602f913960400191505060405180910390fd5b6001600160a01b0380831660009081526007602090815260408083209385168352929052208054611314576040805162461bcd60e51b815260206004820152601060248201526f1b9bc81b1bd8dad95908185b5bdd5b9d60821b604482015290519081900360640190fd5b8054600082556040805182815290516001600160a01b0380861692908716917f152fb15aa5d80f843e1e4bd5f2fc9161714f169945024decec7e84fb910fdd519181900360200190a350505050565b60015490565b61200581565b60076020908152600092835260408084209091529082529020805460019091015482565b6020818101516000908152600490915260409020546001600160a01b03165b919050565b600181565b60055481565b61100181565b670de0b6b3a764000081565b6102ca81565b61a8c081565b600881565b66071afd498d000081565b61200681565b61200081565b6000908152600460205260409020546001600160a01b031690565b6402540be40081565b600281565b6000805460ff1661146b576040805162461bcd60e51b815260206004820152601960248201526000805160206153d8833981519152604482015290519081900360640190fd5b8685146114a95760405162461bcd60e51b815260040180806020018281038252603b81526020018061534b603b913960400191505060405180910390fd5b8683146114e75760405162461bcd60e51b815260040180806020018281038252603f81526020018061525d603f913960400191505060405180910390fd5b426078018267ffffffffffffffff1610156115335760405162461bcd60e51b81526004018080602001828103825260248152602001806151d96024913960400191505060405180910390fd5b6402540be4003406156115775760405162461bcd60e51b815260040180806020018281038252604081526020018061544e6040913960400191505060405180910390fd5b604080518681526020808802820101909152859060009081906060908480156115aa578160200160208202803683370190505b50905060005b84811015611685576402540be4008b8b838181106115ca57fe5b90506020020135816115d857fe5b06156116155760405162461bcd60e51b815260040180806020018281038252603c81526020018061529c603c913960400191505060405180910390fd5b61163a8b8b8381811061162457fe5b905060200201358561301e90919063ffffffff16565b93506116666402540be4008c8c8481811061165157fe5b9050602002013561307890919063ffffffff16565b82828151811061167257fe5b60209081029190910101526001016115b0565b506001546116aa9061169d908663ffffffff6130ba16565b849063ffffffff61301e16565b3410156116e85760405162461bcd60e51b81526004018080602001828103825260568152602001806153f86056913960600191505060405180910390fd5b6116f8348463ffffffff61311316565b9150611702615017565b6040518060c001604052806221272160e91b60001b815260200160006001600160a01b031681526020018381526020018e8e808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152505050908252506040805160208c810282810182019093528c82529283019290918d918d91829185019084908082843760009201919091525050509082525067ffffffffffffffff8916602090910152905061200063f7a251d760036117c684613155565b6117db876402540be40063ffffffff61307816565b6040518463ffffffff1660e01b8152600401808460ff1660ff16815260200180602001838152602001828103825284818151815260200191508051906020019080838360005b83811015611839578181015183820152602001611821565b50505050905090810190601f1680156118665780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b15801561188757600080fd5b505af115801561189b573d6000803e3d6000fd5b505060408051600081523360208201528082018890526060810187905290517f74eab09b0e53aefc23f2e1b16da593f95c2dd49c6f5a23720463d10d9c330b2a9350908190036080019150a15060019c9b505050505050505050505050565b61100581565b601081565b60015481565b6000336120011461194d5760405162461bcd60e51b81526004018080602001828103825260338152602001806151316033913960400191505060405180910390fd5b8115611984576040516120019083156108fc029084906000818181858888f19350505050158015611982573d6000803e3d6000fd5b505b506001919050565b61100881565b600b81565b60005460ff166119dc576040805162461bcd60e51b815260206004820152601960248201526000805160206153d8833981519152604482015290519081900360640190fd5b3361300014611a1c5760405162461bcd60e51b815260040180806020018281038252602b815260200180615232602b913960400191505060405180910390fd5b677ce66c50e2840000811115611a635760405162461bcd60e51b81526004018080602001828103825260358152602001806151fd6035913960400191505060405180910390fd5b60006221272160e91b8414611bc4576000848152600460205260409020546001600160a01b031680611acd576040805162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a59081cde5b589bdb60921b604482015290519081900360640190fd5b6001600160a01b038116600090815260026020526040902054611af08482613410565b604080516370a0823160e01b8152306004820152905191945084916001600160a01b038516916370a08231916024808301926020929190829003018186803b158015611b3b57600080fd5b505afa158015611b4f573d6000803e3d6000fd5b505050506040513d6020811015611b6557600080fd5b50511015611bb1576040805162461bcd60e51b8152602060048201526014602482015273696e73756666696369656e742062616c616e636560601b604482015290519081900360640190fd5b611bbd86838588613450565b5050611c37565b611bd9826402540be40063ffffffff6130ba16565b905080471015611c27576040805162461bcd60e51b8152602060048201526014602482015273696e73756666696369656e742062616c616e636560601b604482015290519081900360640190fd5b6000611c3585828487613450565b505b50505050565b61200381565b60005460ff16611c88576040805162461bcd60e51b815260206004820152601960248201526000805160206153d8833981519152604482015290519081900360640190fd5b3361200014611cc85760405162461bcd60e51b815260040180806020018281038252602f815260200180615386602f913960400191505060405180910390fd5b60ff831660031415611d1857611d1382828080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506134e892505050565b611d87565b7f41ce201247b6ceb957dcdb217d0b8acb50b9ea0e12af9af4f5e7f38902101605838383604051808460ff1660ff168152602001806020018281038252848482818152602001925080828437600083820152604051601f909101601f1916909201829003965090945050505050a15b505050565b3361300014611dcc5760405162461bcd60e51b815260040180806020018281038252602b815260200180615232602b913960400191505060405180910390fd5b60006221272160e91b8314611e3757506000828152600460205260409020546001600160a01b031680611e37576040805162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a59081cde5b589bdb60921b604482015290519081900360640190fd5b6001600160a01b0380821660009081526007602090815260408083209386168352929052208054611ea2576040805162461bcd60e51b815260206004820152601060248201526f1b9bc81b1bd8dad95908185b5bdd5b9d60821b604482015290519081900360640190fd5b8054600082556040805182815290516001600160a01b03808716929086169188917f8041a9a8704332594e2884f5e0f942281cdd7611854c365b4d0aa70b2295d6b6919081900360200190a45050505050565b3361100814611f355760405162461bcd60e51b81526004018080602001828103825260238152602001806153b56023913960400191505060405180910390fd5b600083815260046020908152604080832080546001600160a01b039096166001600160a01b03199096168617905593825260038152838220949094556002909352912055565b603c81565b81806001600160a01b031663893d20e86040518163ffffffff1660e01b815260040160206040518083038186803b158015611fba57600080fd5b505afa158015611fce573d6000803e3d6000fd5b505050506040513d6020811015611fe457600080fd5b50516001600160a01b03163314612042576040805162461bcd60e51b815260206004820152601860248201527f6e6f74206f776e6572206f6620424550323020746f6b656e0000000000000000604482015290519081900360640190fd5b60008211612090576040805162461bcd60e51b81526020600482015260166024820152751e995c9bc81b1a5b5a5d081b9bdd08185b1b1bddd95960521b604482015290519081900360640190fd5b6001600160a01b0383166000908152600360205260409020546120e6576040805162461bcd60e51b81526020600482015260096024820152681b9bdd08189bdd5b9960ba1b604482015290519081900360640190fd5b6001600160a01b038316600081815260066020908152604091829020859055815185815291513393927f9df3a90730dbf23b5cc18dbbd5f4af3fa94a0dffb6ff6841f98a9a9a6ac626a892908290030190a3505050565b600981565b677ce66c50e284000081565b6000805460ff16612194576040805162461bcd60e51b815260206004820152601960248201526000805160206153d8833981519152604482015290519081900360640190fd5b33611005146121d45760405162461bcd60e51b815260040180806020018281038252602f815260200180615164602f913960400191505060405180910390fd5b60004783106121e357476121e5565b825b9050670de0b6b3a7640000811115612201576000915050612286565b8015612283576040516001600160a01b0385169082156108fc029083906000818181858888f1935050505015801561223d573d6000803e3d6000fd5b50604080516001600160a01b03861681526020810183905281517ff8b71c64315fc33b2ead2adfa487955065152a8ac33d9d5193aafd7f45dc15a0929181900390910190a15b90505b92915050565b61100781565b61100681565b600081565b60005460ff1681565b600381565b6000805460ff166122f1576040805162461bcd60e51b815260206004820152601960248201526000805160206153d8833981519152604482015290519081900360640190fd5b6040805162461bcd60e51b815260206004820152600a60248201526919195c1c9958d85d195960b21b604482015290519081900360640190fd5b61200281565b61300081565b33611007146123775760405162461bcd60e51b815260040180806020018281038252602e8152602001806152f9602e913960400191505060405180910390fd5b602081146123cc576040805162461bcd60e51b815260206004820152601b60248201527f65787065637465642076616c7565206c656e6774682069732033320000000000604482015290519081900360640190fd5b606084848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8801819004810282018101909252868152939450606093925086915085908190840183828082843760009201919091525050505060208301519091506772656c617946656560c01b8114156124d4576020820151670de0b6b3a7640000811180159061247b57506402540be4008106155b6124cc576040805162461bcd60e51b815260206004820152601960248201527f7468652072656c6179466565206f7574206f662072616e676500000000000000604482015290519081900360640190fd5b60015561274a565b61254887878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601781527f6c617267655472616e736665724c6f636b506572696f64000000000000000000602082015291506135449050565b156125e457604080516020601f870181900481028201810190925285815260009161258b9188888083850183828082843760009201919091525061362b92505050565b905062093a808111156125dc576040805162461bcd60e51b81526020600482015260146024820152736c6f636b20706572696f6420746f6f206c6f6e6760601b604482015290519081900360640190fd5b60055561274a565b61265087878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080518082019091526015815274189b9893185c99d9551c985b9cd9995c931a5b5a5d605a1b602082015291506135449050565b1561270d57604080516020601f87018190048102820181019092528581526000916126939188888083850183828082843760009201919091525061362b92505050565b905068056bc75e2d631000008110156126dd5760405162461bcd60e51b81526004018080602001828103825260228152602001806151936022913960400191505060405180910390fd5b6000805260066020527f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f85561274a565b6040805162461bcd60e51b815260206004820152600d60248201526c756e6b6e6f776e20706172616d60981b604482015290519081900360640190fd5b7f6cdb0ac70ab7f2e2d035cca5be60d89906f2dede7648ddbd7402189c1eeed17a878787876040518080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600083820152604051601f909101601f19169092018290039850909650505050505050a150505050505050565b336110081461281f5760405162461bcd60e51b81526004018080602001828103825260238152602001806153b56023913960400191505060405180910390fd5b600091825260046020908152604080842080546001600160a01b03191690556001600160a01b039290921683526003815281832083905560029052812055565b6221272160e91b81565b61c35081565b60026020526000908152604090205481565b6001600160a01b031660009081526003602052604090205490565b61100281565b60005460ff166128e7576040805162461bcd60e51b815260206004820152601960248201526000805160206153d8833981519152604482015290519081900360640190fd5b33612000146129275760405162461bcd60e51b815260040180806020018281038252602f815260200180615386602f913960400191505060405180910390fd5b60ff831660031415611d1857611d1382828080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061363092505050565b60085460ff16600214156129be576040805162461bcd60e51b815260206004820152600e60248201526d4e6f2072652d656e7472616e637960901b604482015290519081900360640190fd5b6008805460ff191660021790556001600160a01b0380831660009081526007602090815260408083209385168352929052208054612a36576040805162461bcd60e51b815260206004820152601060248201526f1b9bc81b1bd8dad95908185b5bdd5b9d60821b604482015290519081900360640190fd5b8060010154421015612a8f576040805162461bcd60e51b815260206004820152601760248201527f7374696c6c206f6e206c6f636b696e6720706572696f64000000000000000000604482015290519081900360640190fd5b805460008083556001600160a01b038516612b02576040516001600160a01b038516906127109084906000818181858888f193505050503d8060008114612af2576040519150601f19603f3d011682016040523d82523d6000602084013e612af7565b606091505b505080915050612b95565b846001600160a01b031663a9059cbb61c35086856040518463ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600088803b158015612b6557600080fd5b5087f1158015612b79573d6000803e3d6000fd5b50505050506040513d6020811015612b9057600080fd5b505190505b80612be7576040805162461bcd60e51b815260206004820152601e60248201527f776974686472617720756e6c6f636b656420746f6b656e206661696c65640000604482015290519081900360640190fd5b836001600160a01b0316856001600160a01b03167f832fc3e25f2b3e6fb0eb59419a73cba405f2a249fce75f7e31ea5a457a0323f1846040518082815260200191505060405180910390a350506008805460ff19166001179055505050565b61100381565b61200481565b60003361200214612caa576040805162461bcd60e51b815260206004820152601f60248201527f746865206d73672073656e646572206d757374206265207374616b6548756200604482015290519081900360640190fd5b814710612cea576040516120029083156108fc029084906000818181858888f19350505050158015612ce0573d6000803e3d6000fd5b50600190506113b2565b506000919050565b60005460ff1615612d4a576040805162461bcd60e51b815260206004820152601960248201527f74686520636f6e747261637420616c726561647920696e697400000000000000604482015290519081900360640190fd5b66071afd498d000060019081556000808052600260205260127fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b55805460ff19169091179055565b60066020526000908152604090205481565b600481565b600581565b601181565b61100081565b61271081565b69021e19e0c9bab240000081565b6001600160a01b03811660009081526003602090815260409182902054825182815280840190935260609290918391906020820181803683375050506020810183905290506000805b60208160ff161015612e5d57828160ff1681518110612e3157fe5b01602001516001600160f81b03191615612e5057816001019150612e55565b612e5d565b600101612e16565b5060608160ff166040519080825280601f01601f191660200182016040528015612e8e576020820181803683370190505b50905060005b8260ff168160ff161015612eea57838160ff1681518110612eb157fe5b602001015160f81c60f81b828260ff1681518110612ecb57fe5b60200101906001600160f81b031916908160001a905350600101612e94565b5095945050505050565b61100481565b6060612f04615063565b6000612f0f84613727565b9150915080612f65576040805162461bcd60e51b815260206004820152601f60248201527f756e7265636f676e697a6564207472616e73666572496e207061636b61676500604482015290519081900360640190fd5b6000612f7083613866565b905063ffffffff811615613004576040808401516020808601516001600160a01b03166000908152600290915291822054612fab9190613bcc565b9050612fb5615098565b60405180608001604052808660000151815260200183815260200186608001516001600160a01b031681526020018463ffffffff168152509050612ff881613c05565b955050505050506113b2565b505060408051600081526020810190915291506113b29050565b600082820183811015612283576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600061228383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613ce1565b6000826130c957506000612286565b828202828482816130d657fe5b04146122835760405162461bcd60e51b81526004018080602001828103825260218152602001806152d86021913960400191505060405180910390fd5b600061228383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613d83565b60408051600680825260e08201909252606091829190816020015b6060815260200190600190039081613170575050835190915061319290613ddd565b8160008151811061319f57fe5b60200260200101819052506131c083602001516001600160a01b0316613df0565b816001815181106131cd57fe5b60200260200101819052506000836040015151905060608160405190808252806020026020018201604052801561321857816020015b60608152602001906001900390816132035790505b50905060005b82811015613265576132468660400151828151811061323957fe5b6020026020010151613ddd565b82828151811061325257fe5b602090810291909101015260010161321e565b5061326f81613e13565b8360028151811061327c57fe5b60200260200101819052506060826040519080825280602002602001820160405280156132bd57816020015b60608152602001906001900390816132a85790505b50905060005b83811015613313576132f4876060015182815181106132de57fe5b60200260200101516001600160a01b0316613df0565b82828151811061330057fe5b60209081029190910101526001016132c3565b5061331d81613e13565b8460038151811061332a57fe5b602002602001018190525060608360405190808252806020026020018201604052801561336b57816020015b60608152602001906001900390816133565790505b50905060005b848110156133ab5761338c886080015182815181106132de57fe5b82828151811061339857fe5b6020908102919091010152600101613371565b506133b581613e13565b856004815181106133c257fe5b60200260200101819052506133e48760a0015167ffffffffffffffff16613ddd565b856005815181106133f157fe5b602002602001018190525061340585613e13565b979650505050505050565b6000600882111561343957613432836007198401600a0a63ffffffff6130ba16565b9050612286565b612283836008849003600a0a63ffffffff61307816565b6001600160a01b0380841660009081526007602090815260408083209385168352929052208054613487908463ffffffff61301e16565b815542603c016001820181905560408051858152602081019290925280516001600160a01b03808616939088169289927f446d1aa056e7b903901f49880e9f252762c1b81dc4301cf28db6dae526497eaa9281900390910190a45050505050565b6134f06150bf565b60006134fb83613e9d565b915091508061353b5760405162461bcd60e51b81526004018080602001828103825260248152602001806153276024913960400191505060405180910390fd5b611d8782614068565b6000816040516020018082805190602001908083835b602083106135795780518252601f19909201916020918201910161355a565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405280519060200120836040516020018082805190602001908083835b602083106135e75780518252601f1990920191602091820191016135c8565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040528051906020012014905092915050565b015190565b613638615017565b6000613643836144ec565b91509150806136835760405162461bcd60e51b81526004018080602001828103825260248152602001806151b56024913960400191505060405180910390fd5b61368b6150bf565b602080840180516001600160a01b0390811684526040808701518585015291511660009081526002909252812054905b84604001515181101561370c576136e9856040015182815181106136db57fe5b602002602001015183613410565b856040015182815181106136f957fe5b60209081029190910101526001016136bb565b506080840151604083015260056060830152611c3582614068565b61372f615063565b6000613739615063565b6137416150f6565b61375261374d86614750565b614775565b90506000805b613761836147bf565b1561385957806137835761377c613777846147e0565b61482e565b8452613851565b80600114156137b05761379d613798846147e0565b6148e5565b6001600160a01b03166020850152613851565b80600214156137cf576137c5613777846147e0565b6040850152613851565b80600314156137f7576137e4613798846147e0565b6001600160a01b03166060850152613851565b806004141561381f5761380c613798846147e0565b6001600160a01b03166080850152613851565b806005141561384c57613834613777846147e0565b67ffffffffffffffff1660a085015260019150613851565b613859565b600101613758565b5091935090915050915091565b60208101516000906001600160a01b03166139aa578160a0015167ffffffffffffffff16421115613899575060016113b2565b81604001514710156138ad575060036113b2565b6138b6826148ff565b61392b57606082015160408084015190516000926001600160a01b0316916127109184818181858888f193505050503d8060008114613911576040519150601f19603f3d011682016040523d82523d6000602084013e613916565b606091505b50509050806139295750600490506113b2565b505b7f471eb9cc1ffe55ffadf15b32595415eb9d80f22e761d24bd6dffc607e1284d5982602001518360600151846040015160405180846001600160a01b03166001600160a01b03168152602001836001600160a01b03166001600160a01b03168152602001828152602001935050505060405180910390a15060006113b2565b8160a0015167ffffffffffffffff164211156139c8575060016113b2565b81516020808401516001600160a01b0316600090815260039091526040902054146139f5575060026113b2565b602080830151604080516370a0823160e01b815230600482015290516000936001600160a01b03909316926370a082319261c3509260248083019392829003018187803b158015613a4557600080fd5b5086fa158015613a59573d6000803e3d6000fd5b50505050506040513d6020811015613a7057600080fd5b50516040840151909150811015613a8b5750600390506113b2565b613a94836148ff565b613b4b57600083602001516001600160a01b031663a9059cbb61c350866060015187604001516040518463ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600088803b158015613b0957600080fd5b5087f1158015613b1d573d6000803e3d6000fd5b50505050506040513d6020811015613b3457600080fd5b5051905080613b495750600591506113b29050565b505b7f471eb9cc1ffe55ffadf15b32595415eb9d80f22e761d24bd6dffc607e1284d5983602001518460600151856040015160405180846001600160a01b03166001600160a01b03168152602001836001600160a01b03166001600160a01b03168152602001828152602001935050505060405180910390a150600090506113b2565b60006008821115613bee57613432836007198401600a0a63ffffffff61307816565b612283836008849003600a0a63ffffffff6130ba16565b60408051600480825260a08201909252606091829190816020015b6060815260200190600190039081613c205750508351909150613c4290613ddd565b81600081518110613c4f57fe5b6020026020010181905250613c678360200151613ddd565b81600181518110613c7457fe5b6020026020010181905250613c9583604001516001600160a01b0316613df0565b81600281518110613ca257fe5b6020026020010181905250613cc0836060015163ffffffff16613ddd565b81600381518110613ccd57fe5b602002602001018190525061126281613e13565b60008183613d6d5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613d32578181015183820152602001613d1a565b50505050905090810190601f168015613d5f5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581613d7957fe5b0495945050505050565b60008184841115613dd55760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315613d32578181015183820152602001613d1a565b505050900390565b6060612286613deb83614a6d565b614b53565b60408051600560a21b831860148201526034810190915260609061126281614b53565b6060815160001415613e3457506040805160008152602081019091526113b2565b606082600081518110613e4357fe5b602002602001015190506000600190505b8351811015613e8457613e7a82858381518110613e6d57fe5b6020026020010151614ba5565b9150600101613e54565b50611262613e97825160c060ff16614c22565b82614ba5565b613ea56150bf565b6000613eaf6150bf565b613eb76150f6565b613ec361374d86614750565b90506000805b613ed2836147bf565b156138595780613ef857613ee8613798846147e0565b6001600160a01b03168452614060565b8060011415613f99576060613f14613f0f856147e0565b614d1a565b90508051604051908082528060200260200182016040528015613f41578160200160208202803683370190505b50602086015260005b8151811015613f9257613f6f828281518110613f6257fe5b602002602001015161482e565b86602001518281518110613f7f57fe5b6020908102919091010152600101613f4a565b5050614060565b806002141561403b576060613fb0613f0f856147e0565b90508051604051908082528060200260200182016040528015613fdd578160200160208202803683370190505b50604086015260005b8151811015613f925761400b828281518110613ffe57fe5b60200260200101516148e5565b8660400151828151811061401b57fe5b6001600160a01b0390921660209283029190910190910152600101613fe6565b806003141561384c57614050613777846147e0565b63ffffffff166060850152600191505b600101613ec9565b80516001600160a01b03166142925760005b81602001515181101561428c5760008260400151828151811061409957fe5b60200260200101516001600160a01b0316612710846020015184815181106140bd57fe5b60209081029190910101516040516000818181858888f193505050503d8060008114614105576040519150601f19603f3d011682016040523d82523d6000602084013e61410a565b606091505b50509050806141cd577f203f9f67a785f4f81be4d48b109aa0c498d1bc8097ecc2627063f480cc5fe73e83600001518460400151848151811061414957fe5b60200260200101518560200151858151811061416157fe5b6020026020010151866060015160405180856001600160a01b03166001600160a01b03168152602001846001600160a01b03166001600160a01b031681526020018381526020018263ffffffff1663ffffffff16815260200194505050505060405180910390a1614283565b7fd468d4fa5e8fb4adc119b29a983fd0785e04af5cb8b7a3a69a47270c54b6901a83600001518460400151848151811061420357fe5b60200260200101518560200151858151811061421b57fe5b6020026020010151866060015160405180856001600160a01b03166001600160a01b03168152602001846001600160a01b03166001600160a01b031681526020018381526020018263ffffffff1663ffffffff16815260200194505050505060405180910390a15b5060010161407a565b506144e9565b60005b8160200151518110156144e757600082600001516001600160a01b031663a9059cbb61c350856040015185815181106142ca57fe5b6020026020010151866020015186815181106142e257fe5b60200260200101516040518463ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600088803b15801561433957600080fd5b5087f115801561434d573d6000803e3d6000fd5b50505050506040513d602081101561436457600080fd5b505190508015614428577fd468d4fa5e8fb4adc119b29a983fd0785e04af5cb8b7a3a69a47270c54b6901a8360000151846040015184815181106143a457fe5b6020026020010151856020015185815181106143bc57fe5b6020026020010151866060015160405180856001600160a01b03166001600160a01b03168152602001846001600160a01b03166001600160a01b031681526020018381526020018263ffffffff1663ffffffff16815260200194505050505060405180910390a16144de565b7f203f9f67a785f4f81be4d48b109aa0c498d1bc8097ecc2627063f480cc5fe73e83600001518460400151848151811061445e57fe5b60200260200101518560200151858151811061447657fe5b6020026020010151866060015160405180856001600160a01b03166001600160a01b03168152602001846001600160a01b03166001600160a01b031681526020018381526020018263ffffffff1663ffffffff16815260200194505050505060405180910390a15b50600101614295565b505b50565b6144f4615017565b60006144fe615017565b6145066150f6565b61451261374d86614750565b90506000805b614521836147bf565b15613859578061453e57614537613777846147e0565b8452614748565b806001141561456657614553613798846147e0565b6001600160a01b03166020850152614748565b80600214156145f557606061457d613f0f856147e0565b905080516040519080825280602002602001820160405280156145aa578160200160208202803683370190505b50604086015260005b81518110156145ee576145cb828281518110613f6257fe5b866040015182815181106145db57fe5b60209081029190910101526001016145b3565b5050614748565b806003141561468a57606061460c613f0f856147e0565b90508051604051908082528060200260200182016040528015614639578160200160208202803683370190505b50606086015260005b81518110156145ee5761465a828281518110613ffe57fe5b8660600151828151811061466a57fe5b6001600160a01b0390921660209283029190910190910152600101614642565b806004141561471f5760606146a1613f0f856147e0565b905080516040519080825280602002602001820160405280156146ce578160200160208202803683370190505b50608086015260005b81518110156145ee576146ef828281518110613ffe57fe5b866080015182815181106146ff57fe5b6001600160a01b03909216602092830291909101909101526001016146d7565b806005141561384c57614734613777846147e0565b67ffffffffffffffff1660a0850152600191505b600101614518565b614758615116565b506040805180820190915281518152602082810190820152919050565b61477d6150f6565b61478682614deb565b61478f57600080fd5b600061479e8360200151614e25565b60208085015160408051808201909152868152920190820152915050919050565b60006147c9615116565b505080518051602091820151919092015191011190565b6147e8615116565b6147f1826147bf565b6147fa57600080fd5b6020820151600061480a82614e88565b80830160209586015260408051808201909152908152938401919091525090919050565b80516000901580159061484357508151602110155b61484c57600080fd5b600061485b8360200151614e25565b905080836000015110156148b6576040805162461bcd60e51b815260206004820152601a60248201527f6c656e677468206973206c657373207468616e206f6666736574000000000000604482015290519081900360640190fd5b8251602080850151830180519284900392918310156148dc57826020036101000a820491505b50949350505050565b80516000906015146148f657600080fd5b6122868261482e565b600080805260066020527f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f8541580156149385750600554155b1561497a5760008052600660205269021e19e0c9bab24000007f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f85561a8c06005555b6020808301516001600160a01b03166000908152600690915260409020548015806149a85750808360400151105b156149b75760009150506113b2565b6020808401516001600160a01b0390811660009081526007835260408082206060880151909316825291909252908190209084015181546149fd9163ffffffff61301e16565b8155600554420160018201819055606085015160208087015160408089015181519081529283019490945283516001600160a01b039384169493909116927f3fb83143cd331170da18fb1e8564d97e8ec39264b6ecb1ba248ea7596ab07258928290030190a35060019392505050565b604080516020808252818301909252606091829190602082018180368337505050602081018490529050600067ffffffffffffffff198416614ab157506018614ad5565b6fffffffffffffffffffffffffffffffff198416614ad157506010614ad5565b5060005b6020811015614b0b57818181518110614aea57fe5b01602001516001600160f81b03191615614b0357614b0b565b600101614ad5565b60008160200390506060816040519080825280601f01601f191660200182016040528015614b40576020820181803683370190505b5080830196909652508452509192915050565b606081516001148015614b855750607f60f81b82600081518110614b7357fe5b01602001516001600160f81b03191611155b15614b915750806113b2565b612286614ba38351608060ff16614c22565b835b6060806040519050835180825260208201818101602087015b81831015614bd6578051835260209283019201614bbe565b50855184518101855292509050808201602086015b81831015614c03578051835260209283019201614beb565b508651929092011591909101601f01601f191660405250905092915050565b6060680100000000000000008310614c72576040805162461bcd60e51b815260206004820152600e60248201526d696e70757420746f6f206c6f6e6760901b604482015290519081900360640190fd5b60408051600180825281830190925260609160208201818036833701905050905060378411614ccc5782840160f81b81600081518110614cae57fe5b60200101906001600160f81b031916908160001a9053509050612286565b6060614cd785614a6d565b90508381510160370160f81b82600081518110614cf057fe5b60200101906001600160f81b031916908160001a905350614d118282614ba5565b95945050505050565b6060614d2582614deb565b614d2e57600080fd5b6000614d3983614fbb565b9050606081604051908082528060200260200182016040528015614d7757816020015b614d64615116565b815260200190600190039081614d5c5790505b5090506000614d898560200151614e25565b60208601510190506000805b84811015614de057614da683614e88565b9150604051806040016040528083815260200184815250848281518110614dc957fe5b602090810291909101015291810191600101614d95565b509195945050505050565b8051600090614dfc575060006113b2565b6020820151805160001a9060c0821015614e1b576000925050506113b2565b5060019392505050565b8051600090811a6080811015614e3f5760009150506113b2565b60b8811080614e5a575060c08110801590614e5a575060f881105b15614e695760019150506113b2565b60c0811015614e7d5760b5190190506113b2565b60f5190190506113b2565b80516000908190811a6080811015614ea35760019150614fb4565b60b8811015614eb857607e1981019150614fb4565b60c0811015614f3257600060b78203600186019550806020036101000a865104915060018101820193505080831015614f2c576040805162461bcd60e51b81526020600482015260116024820152706164646974696f6e206f766572666c6f7760781b604482015290519081900360640190fd5b50614fb4565b60f8811015614f475760be1981019150614fb4565b600060f78203600186019550806020036101000a865104915060018101820193505080831015614fb2576040805162461bcd60e51b81526020600482015260116024820152706164646974696f6e206f766572666c6f7760781b604482015290519081900360640190fd5b505b5092915050565b8051600090614fcc575060006113b2565b60008090506000614fe08460200151614e25565b602085015185519181019250015b8082101561500e57614fff82614e88565b82019150826001019250614fee565b50909392505050565b6040518060c001604052806000801916815260200160006001600160a01b03168152602001606081526020016060815260200160608152602001600067ffffffffffffffff1681525090565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a081019190915290565b60408051608081018252600080825260208201819052918101829052606081019190915290565b604051806080016040528060006001600160a01b031681526020016060815260200160608152602001600063ffffffff1681525090565b6040518060400160405280615109615116565b8152602001600081525090565b60405180604001604052806000815260200160008152509056fe6f6e6c79207374616b696e672073797374656d20636f6e74726163742063616e2063616c6c20746869732066756e6374696f6e746865206d6573736167652073656e646572206d75737420626520696e63656e746976697a6520636f6e7472616374626e62206c61726765207472616e73666572206c696d697420746f6f20736d616c6c756e7265636f676e697a6564207472616e736665724f75742073796e207061636b61676565787069726554696d65206d7573742062652074776f206d696e75746573206c61746572616d6f756e7420697320746f6f206c617267652c20657863656564206d6178696d756d206265703220746f6b656e20616d6f756e74746865206d73672073656e646572206d75737420626520746f6b656e207265636f76657220706f7274616c4c656e677468206f6620726563697069656e74416464727320646f65736e277420657175616c20746f206c656e677468206f6620726566756e644164647273696e76616c6964207472616e7366657220616d6f756e743a20707265636973696f6e206c6f737320696e20616d6f756e7420636f6e76657273696f6e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77746865206d6573736167652073656e646572206d75737420626520676f7665726e616e636520636f6e7472616374756e7265636f676e697a6564207472616e736665724f75742061636b207061636b6167654c656e677468206f6620726563697069656e74416464727320646f65736e277420657175616c20746f206c656e677468206f6620616d6f756e7473746865206d6573736167652073656e646572206d7573742062652063726f737320636861696e20636f6e7472616374746865206d73672073656e646572206d75737420626520746f6b656e4d616e6167657274686520636f6e7472616374206e6f7420696e69742079657400000000000000726563656976656420424e4220616d6f756e742073686f756c64206265206e6f206c657373207468616e207468652073756d206f66207472616e7366657220424e4220616d6f756e7420616e642072656c6179466565696e76616c696420726563656976656420424e4220616d6f756e743a20707265636973696f6e206c6f737320696e20616d6f756e7420636f6e76657273696f6ea164736f6c6343000604000a", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/9d09d0a3d6332460a810188261ec8195e05aa218", + Code: "6080604052600436106104405760003560e01c80639509b98011610234578063c81b16621161012e578063ebf71d53116100b6578063fb063e8f1161007a578063fb063e8f146110d3578063fc1a598f146110e8578063fc3e590814610cca578063fd6a68791461111b578063ff9c0027146108a057610488565b8063ebf71d531461106a578063f01484721461107f578063f1fad10414611094578063f9a2bbc7146110a9578063fa9e9159146110be57610488565b8063dc927faf116100fd578063dc927faf14610fce578063df8079e914610fe3578063e04c83a714610ff8578063e1c7392a14611022578063e8f35cea1461103757610488565b8063c81b166214610ef9578063c8509d8114610f0e578063cf41984414610f93578063d9e6dae91461080d57610488565b8063aa7415f5116101bc578063b99328c511610180578063b99328c514610e30578063b9fd21e314610e69578063ba35ead614610e7e578063bbface1f14610e93578063bd46646114610ec657610488565b8063aa7415f514610cdf578063aa82dce114610d26578063aad5606314610d3b578063ab51bb9614610d50578063ac43175114610d6557610488565b80639dc09262116102035780639dc0926214610c76578063a1a11bf514610c8b578063a496fba214610ca0578063a78abc1614610cb5578063a7c9f02d14610cca57610488565b80639509b98014610bda57806396713da914610c135780639a854bbd14610c285780639a99b4f014610c3d57610488565b806359b9278911610345578063727be1f8116102cd578063831d65d111610291578063831d65d114610ac85780638525db0314610b4d5780638b87b21f146107625780638eff336c14610b8657806393ab703f14610bc557610488565b8063727be1f814610a2057806375d47a0a14610a4a5780637942fd0514610a5f578063799758b914610a745780637e434d5414610ab357610488565b80636e056520116103145780636e056520146108b55780636e47b482146109e157806370fd5bad146108a0578063718a8aa8146109f657806371d3086314610a0b57610488565b806359b92789146108615780635d499b1b1461088b578063613684751461080d57806366dea52a146108a057610488565b80633fd8b02f116103c85780634a3acdf4116103975780634a3acdf4146107f85780634bf6c8821461080d57806350432d321461082257806351b4dce31461083757806351e806721461084c57610488565b80633fd8b02f1461078d57806343756e5c146107a257806343a368b9146107b7578063493279b1146107cc57610488565b8063149d14d91161040f578063149d14d91461062157806328087028146106485780632ae454831461065d5780633d713223146106b15780633dffc3871461076257610488565b80630bee7a671461048d5780630e2374a5146104bb5780631182b875146104ec57806312234582146105e657610488565b36610488573415610486576040805133815234602082015281517f6c98249d85d88c3753a04a22230f595e4dc8d3dc86c34af35deeeedc861b89db929181900390910190a15b005b600080fd5b34801561049957600080fd5b506104a2611130565b6040805163ffffffff9092168252519081900360200190f35b3480156104c757600080fd5b506104d0611135565b604080516001600160a01b039092168252519081900360200190f35b3480156104f857600080fd5b506105716004803603604081101561050f57600080fd5b60ff8235169190810190604081016020820135600160201b81111561053357600080fd5b82018360208201111561054557600080fd5b803590602001918460018302840111600160201b8311171561056657600080fd5b50909250905061113b565b6040805160208082528351818301528351919283929083019185019080838360005b838110156105ab578181015183820152602001610593565b50505050905090810190601f1680156105d85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156105f257600080fd5b506104866004803603604081101561060957600080fd5b506001600160a01b0381358116916020013516611269565b34801561062d57600080fd5b50610636611363565b60408051918252519081900360200190f35b34801561065457600080fd5b506104d0611369565b34801561066957600080fd5b506106986004803603604081101561068057600080fd5b506001600160a01b038135811691602001351661136f565b6040805192835260208301919091528051918290030190f35b3480156106bd57600080fd5b506104d0600480360360208110156106d457600080fd5b810190602081018135600160201b8111156106ee57600080fd5b82018360208201111561070057600080fd5b803590602001918460018302840111600160201b8311171561072157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611393945050505050565b34801561076e57600080fd5b506107776113b7565b6040805160ff9092168252519081900360200190f35b34801561079957600080fd5b506106366113bc565b3480156107ae57600080fd5b506104d06113c2565b3480156107c357600080fd5b506106366113c8565b3480156107d857600080fd5b506107e16113d4565b6040805161ffff9092168252519081900360200190f35b34801561080457600080fd5b506106366113da565b34801561081957600080fd5b506107776113e0565b34801561082e57600080fd5b506106366113e5565b34801561084357600080fd5b506104d06113f0565b34801561085857600080fd5b506104d06113f6565b34801561086d57600080fd5b506104d06004803603602081101561088457600080fd5b50356113fc565b34801561089757600080fd5b50610636611417565b3480156108ac57600080fd5b50610777611420565b6109cd600480360360808110156108cb57600080fd5b810190602081018135600160201b8111156108e557600080fd5b8201836020820111156108f757600080fd5b803590602001918460208302840111600160201b8311171561091857600080fd5b919390929091602081019035600160201b81111561093557600080fd5b82018360208201111561094757600080fd5b803590602001918460208302840111600160201b8311171561096857600080fd5b919390929091602081019035600160201b81111561098557600080fd5b82018360208201111561099757600080fd5b803590602001918460208302840111600160201b831117156109b857600080fd5b91935091503567ffffffffffffffff16611425565b604080519115158252519081900360200190f35b3480156109ed57600080fd5b506104d06118fa565b348015610a0257600080fd5b50610777611900565b348015610a1757600080fd5b50610636611905565b348015610a2c57600080fd5b506109cd60048036036020811015610a4357600080fd5b503561190b565b348015610a5657600080fd5b506104d061198c565b348015610a6b57600080fd5b50610777611992565b348015610a8057600080fd5b5061048660048036036060811015610a9757600080fd5b508035906001600160a01b036020820135169060400135611997565b348015610abf57600080fd5b506104d0611c47565b348015610ad457600080fd5b5061048660048036036040811015610aeb57600080fd5b60ff8235169190810190604081016020820135600160201b811115610b0f57600080fd5b820183602082011115610b2157600080fd5b803590602001918460018302840111600160201b83111715610b4257600080fd5b509092509050611c4d565b348015610b5957600080fd5b5061048660048036036040811015610b7057600080fd5b50803590602001356001600160a01b0316611d95565b348015610b9257600080fd5b5061048660048036036060811015610ba957600080fd5b508035906001600160a01b036020820135169060400135611efe565b348015610bd157600080fd5b50610636611f84565b348015610be657600080fd5b5061048660048036036040811015610bfd57600080fd5b506001600160a01b038135169060200135611f89565b348015610c1f57600080fd5b50610777612146565b348015610c3457600080fd5b5061063661214b565b348015610c4957600080fd5b5061063660048036036040811015610c6057600080fd5b506001600160a01b038135169060200135612157565b348015610c8257600080fd5b506104d0612295565b348015610c9757600080fd5b506104d061229b565b348015610cac57600080fd5b506107776122a1565b348015610cc157600080fd5b506109cd6122a6565b348015610cd657600080fd5b506107776122af565b6109cd60048036036080811015610cf557600080fd5b5080356001600160a01b03908116916020810135909116906040810135906060013567ffffffffffffffff166122b4565b348015610d3257600080fd5b506104d0612334565b348015610d4757600080fd5b506104d061233a565b348015610d5c57600080fd5b506104a26122a1565b348015610d7157600080fd5b5061048660048036036040811015610d8857600080fd5b810190602081018135600160201b811115610da257600080fd5b820183602082011115610db457600080fd5b803590602001918460018302840111600160201b83111715610dd557600080fd5b919390929091602081019035600160201b811115610df257600080fd5b820183602082011115610e0457600080fd5b803590602001918460018302840111600160201b83111715610e2557600080fd5b509092509050612340565b348015610e3c57600080fd5b5061048660048036036040811015610e5357600080fd5b50803590602001356001600160a01b03166127e8565b348015610e7557600080fd5b50610636612868565b348015610e8a57600080fd5b50610636612872565b348015610e9f57600080fd5b5061063660048036036020811015610eb657600080fd5b50356001600160a01b0316612878565b348015610ed257600080fd5b5061063660048036036020811015610ee957600080fd5b50356001600160a01b031661288a565b348015610f0557600080fd5b506104d06128a5565b348015610f1a57600080fd5b5061048660048036036040811015610f3157600080fd5b60ff8235169190810190604081016020820135600160201b811115610f5557600080fd5b820183602082011115610f6757600080fd5b803590602001918460018302840111600160201b83111715610f8857600080fd5b5090925090506128ab565b348015610f9f57600080fd5b5061048660048036036040811015610fb657600080fd5b506001600160a01b038135811691602001351661297b565b348015610fda57600080fd5b506104d0612c4f565b348015610fef57600080fd5b506104d0612c55565b34801561100457600080fd5b506109cd6004803603602081101561101b57600080fd5b5035612c5b565b34801561102e57600080fd5b50610486612cfb565b34801561104357600080fd5b506106366004803603602081101561105a57600080fd5b50356001600160a01b0316612d9b565b34801561107657600080fd5b50610777612dad565b34801561108b57600080fd5b50610777612db2565b3480156110a057600080fd5b50610777612db7565b3480156110b557600080fd5b506104d0612dbc565b3480156110ca57600080fd5b50610636612dc2565b3480156110df57600080fd5b50610636612dc8565b3480156110f457600080fd5b506105716004803603602081101561110b57600080fd5b50356001600160a01b0316612dd6565b34801561112757600080fd5b506104d0612efd565b606481565b61200181565b60005460609060ff16611183576040805162461bcd60e51b815260206004820152601960248201526000805160206153e1833981519152604482015290519081900360640190fd5b33612000146111c35760405162461bcd60e51b815260040180806020018281038252602f81526020018061538f602f913960400191505060405180910390fd5b60ff8416600214156112155761120e83838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612f0392505050565b9050611262565b6040805162461bcd60e51b815260206004820152601860248201527f756e7265636f676e697a65642073796e207061636b6167650000000000000000604482015290519081900360640190fd5b9392505050565b33612000146112a95760405162461bcd60e51b815260040180806020018281038252602f81526020018061538f602f913960400191505060405180910390fd5b6001600160a01b0380831660009081526007602090815260408083209385168352929052208054611314576040805162461bcd60e51b815260206004820152601060248201526f1b9bc81b1bd8dad95908185b5bdd5b9d60821b604482015290519081900360640190fd5b8054600082556040805182815290516001600160a01b0380861692908716917f152fb15aa5d80f843e1e4bd5f2fc9161714f169945024decec7e84fb910fdd519181900360200190a350505050565b60015490565b61200581565b60076020908152600092835260408084209091529082529020805460019091015482565b6020818101516000908152600490915260409020546001600160a01b03165b919050565b600181565b60055481565b61100181565b670de0b6b3a764000081565b6102ca81565b61a8c081565b600881565b66071afd498d000081565b61200681565b61200081565b6000908152600460205260409020546001600160a01b031690565b6402540be40081565b600281565b6000805460ff1661146b576040805162461bcd60e51b815260206004820152601960248201526000805160206153e1833981519152604482015290519081900360640190fd5b8685146114a95760405162461bcd60e51b815260040180806020018281038252603b815260200180615354603b913960400191505060405180910390fd5b8683146114e75760405162461bcd60e51b815260040180806020018281038252603f815260200180615266603f913960400191505060405180910390fd5b426078018267ffffffffffffffff1610156115335760405162461bcd60e51b81526004018080602001828103825260248152602001806151e26024913960400191505060405180910390fd5b6402540be4003406156115775760405162461bcd60e51b81526004018080602001828103825260408152602001806154576040913960400191505060405180910390fd5b604080518681526020808802820101909152859060009081906060908480156115aa578160200160208202803683370190505b50905060005b84811015611685576402540be4008b8b838181106115ca57fe5b90506020020135816115d857fe5b06156116155760405162461bcd60e51b815260040180806020018281038252603c8152602001806152a5603c913960400191505060405180910390fd5b61163a8b8b8381811061162457fe5b905060200201358561302790919063ffffffff16565b93506116666402540be4008c8c8481811061165157fe5b9050602002013561308190919063ffffffff16565b82828151811061167257fe5b60209081029190910101526001016115b0565b506001546116aa9061169d908663ffffffff6130c316565b849063ffffffff61302716565b3410156116e85760405162461bcd60e51b81526004018080602001828103825260568152602001806154016056913960600191505060405180910390fd5b6116f8348463ffffffff61311c16565b9150611702615020565b6040518060c001604052806221272160e91b60001b815260200160006001600160a01b031681526020018381526020018e8e808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152505050908252506040805160208c810282810182019093528c82529283019290918d918d91829185019084908082843760009201919091525050509082525067ffffffffffffffff8916602090910152905061200063f7a251d760036117c68461315e565b6117db876402540be40063ffffffff61308116565b6040518463ffffffff1660e01b8152600401808460ff1660ff16815260200180602001838152602001828103825284818151815260200191508051906020019080838360005b83811015611839578181015183820152602001611821565b50505050905090810190601f1680156118665780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b15801561188757600080fd5b505af115801561189b573d6000803e3d6000fd5b505060408051600081523360208201528082018890526060810187905290517f74eab09b0e53aefc23f2e1b16da593f95c2dd49c6f5a23720463d10d9c330b2a9350908190036080019150a15060019c9b505050505050505050505050565b61100581565b601081565b60015481565b6000336120011461194d5760405162461bcd60e51b815260040180806020018281038252603381526020018061513a6033913960400191505060405180910390fd5b8115611984576040516120019083156108fc029084906000818181858888f19350505050158015611982573d6000803e3d6000fd5b505b506001919050565b61100881565b600b81565b60005460ff166119dc576040805162461bcd60e51b815260206004820152601960248201526000805160206153e1833981519152604482015290519081900360640190fd5b3361300014611a1c5760405162461bcd60e51b815260040180806020018281038252602b81526020018061523b602b913960400191505060405180910390fd5b677ce66c50e2840000811115611a635760405162461bcd60e51b81526004018080602001828103825260358152602001806152066035913960400191505060405180910390fd5b60006221272160e91b8414611bcd576000848152600460205260409020546001600160a01b031680611ad6576040805184815290516001600160a01b0386169187917fc16ee9013bf67c846d37735983debb0acc5b2d1419cb5931c9843ad4689505499181900360200190a35050611c42565b6001600160a01b038116600090815260026020526040902054611af98482613419565b604080516370a0823160e01b8152306004820152905191945084916001600160a01b038516916370a08231916024808301926020929190829003018186803b158015611b4457600080fd5b505afa158015611b58573d6000803e3d6000fd5b505050506040513d6020811015611b6e57600080fd5b50511015611bba576040805162461bcd60e51b8152602060048201526014602482015273696e73756666696369656e742062616c616e636560601b604482015290519081900360640190fd5b611bc686838588613459565b5050611c40565b611be2826402540be40063ffffffff6130c316565b905080471015611c30576040805162461bcd60e51b8152602060048201526014602482015273696e73756666696369656e742062616c616e636560601b604482015290519081900360640190fd5b6000611c3e85828487613459565b505b505b505050565b61200381565b60005460ff16611c92576040805162461bcd60e51b815260206004820152601960248201526000805160206153e1833981519152604482015290519081900360640190fd5b3361200014611cd25760405162461bcd60e51b815260040180806020018281038252602f81526020018061538f602f913960400191505060405180910390fd5b60ff831660031415611d2257611d1d82828080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506134f192505050565b611c42565b7f41ce201247b6ceb957dcdb217d0b8acb50b9ea0e12af9af4f5e7f38902101605838383604051808460ff1660ff168152602001806020018281038252848482818152602001925080828437600083820152604051601f909101601f1916909201829003965090945050505050a1505050565b3361300014611dd55760405162461bcd60e51b815260040180806020018281038252602b81526020018061523b602b913960400191505060405180910390fd5b60006221272160e91b8314611e4057506000828152600460205260409020546001600160a01b031680611e40576040805162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a59081cde5b589bdb60921b604482015290519081900360640190fd5b6001600160a01b0380821660009081526007602090815260408083209386168352929052208054611eab576040805162461bcd60e51b815260206004820152601060248201526f1b9bc81b1bd8dad95908185b5bdd5b9d60821b604482015290519081900360640190fd5b8054600082556040805182815290516001600160a01b03808716929086169188917f8041a9a8704332594e2884f5e0f942281cdd7611854c365b4d0aa70b2295d6b6919081900360200190a45050505050565b3361100814611f3e5760405162461bcd60e51b81526004018080602001828103825260238152602001806153be6023913960400191505060405180910390fd5b600083815260046020908152604080832080546001600160a01b039096166001600160a01b03199096168617905593825260038152838220949094556002909352912055565b603c81565b81806001600160a01b031663893d20e86040518163ffffffff1660e01b815260040160206040518083038186803b158015611fc357600080fd5b505afa158015611fd7573d6000803e3d6000fd5b505050506040513d6020811015611fed57600080fd5b50516001600160a01b0316331461204b576040805162461bcd60e51b815260206004820152601860248201527f6e6f74206f776e6572206f6620424550323020746f6b656e0000000000000000604482015290519081900360640190fd5b60008211612099576040805162461bcd60e51b81526020600482015260166024820152751e995c9bc81b1a5b5a5d081b9bdd08185b1b1bddd95960521b604482015290519081900360640190fd5b6001600160a01b0383166000908152600360205260409020546120ef576040805162461bcd60e51b81526020600482015260096024820152681b9bdd08189bdd5b9960ba1b604482015290519081900360640190fd5b6001600160a01b038316600081815260066020908152604091829020859055815185815291513393927f9df3a90730dbf23b5cc18dbbd5f4af3fa94a0dffb6ff6841f98a9a9a6ac626a892908290030190a3505050565b600981565b677ce66c50e284000081565b6000805460ff1661219d576040805162461bcd60e51b815260206004820152601960248201526000805160206153e1833981519152604482015290519081900360640190fd5b33611005146121dd5760405162461bcd60e51b815260040180806020018281038252602f81526020018061516d602f913960400191505060405180910390fd5b60004783106121ec57476121ee565b825b9050670de0b6b3a764000081111561220a57600091505061228f565b801561228c576040516001600160a01b0385169082156108fc029083906000818181858888f19350505050158015612246573d6000803e3d6000fd5b50604080516001600160a01b03861681526020810183905281517ff8b71c64315fc33b2ead2adfa487955065152a8ac33d9d5193aafd7f45dc15a0929181900390910190a15b90505b92915050565b61100781565b61100681565b600081565b60005460ff1681565b600381565b6000805460ff166122fa576040805162461bcd60e51b815260206004820152601960248201526000805160206153e1833981519152604482015290519081900360640190fd5b6040805162461bcd60e51b815260206004820152600a60248201526919195c1c9958d85d195960b21b604482015290519081900360640190fd5b61200281565b61300081565b33611007146123805760405162461bcd60e51b815260040180806020018281038252602e815260200180615302602e913960400191505060405180910390fd5b602081146123d5576040805162461bcd60e51b815260206004820152601b60248201527f65787065637465642076616c7565206c656e6774682069732033320000000000604482015290519081900360640190fd5b606084848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8801819004810282018101909252868152939450606093925086915085908190840183828082843760009201919091525050505060208301519091506772656c617946656560c01b8114156124dd576020820151670de0b6b3a7640000811180159061248457506402540be4008106155b6124d5576040805162461bcd60e51b815260206004820152601960248201527f7468652072656c6179466565206f7574206f662072616e676500000000000000604482015290519081900360640190fd5b600155612753565b61255187878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601781527f6c617267655472616e736665724c6f636b506572696f640000000000000000006020820152915061354d9050565b156125ed57604080516020601f87018190048102820181019092528581526000916125949188888083850183828082843760009201919091525061363492505050565b905062093a808111156125e5576040805162461bcd60e51b81526020600482015260146024820152736c6f636b20706572696f6420746f6f206c6f6e6760601b604482015290519081900360640190fd5b600555612753565b61265987878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080518082019091526015815274189b9893185c99d9551c985b9cd9995c931a5b5a5d605a1b6020820152915061354d9050565b1561271657604080516020601f870181900481028201810190925285815260009161269c9188888083850183828082843760009201919091525061363492505050565b905068056bc75e2d631000008110156126e65760405162461bcd60e51b815260040180806020018281038252602281526020018061519c6022913960400191505060405180910390fd5b6000805260066020527f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f855612753565b6040805162461bcd60e51b815260206004820152600d60248201526c756e6b6e6f776e20706172616d60981b604482015290519081900360640190fd5b7f6cdb0ac70ab7f2e2d035cca5be60d89906f2dede7648ddbd7402189c1eeed17a878787876040518080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600083820152604051601f909101601f19169092018290039850909650505050505050a150505050505050565b33611008146128285760405162461bcd60e51b81526004018080602001828103825260238152602001806153be6023913960400191505060405180910390fd5b600091825260046020908152604080842080546001600160a01b03191690556001600160a01b039290921683526003815281832083905560029052812055565b6221272160e91b81565b61c35081565b60026020526000908152604090205481565b6001600160a01b031660009081526003602052604090205490565b61100281565b60005460ff166128f0576040805162461bcd60e51b815260206004820152601960248201526000805160206153e1833981519152604482015290519081900360640190fd5b33612000146129305760405162461bcd60e51b815260040180806020018281038252602f81526020018061538f602f913960400191505060405180910390fd5b60ff831660031415611d2257611d1d82828080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061363992505050565b60085460ff16600214156129c7576040805162461bcd60e51b815260206004820152600e60248201526d4e6f2072652d656e7472616e637960901b604482015290519081900360640190fd5b6008805460ff191660021790556001600160a01b0380831660009081526007602090815260408083209385168352929052208054612a3f576040805162461bcd60e51b815260206004820152601060248201526f1b9bc81b1bd8dad95908185b5bdd5b9d60821b604482015290519081900360640190fd5b8060010154421015612a98576040805162461bcd60e51b815260206004820152601760248201527f7374696c6c206f6e206c6f636b696e6720706572696f64000000000000000000604482015290519081900360640190fd5b805460008083556001600160a01b038516612b0b576040516001600160a01b038516906127109084906000818181858888f193505050503d8060008114612afb576040519150601f19603f3d011682016040523d82523d6000602084013e612b00565b606091505b505080915050612b9e565b846001600160a01b031663a9059cbb61c35086856040518463ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600088803b158015612b6e57600080fd5b5087f1158015612b82573d6000803e3d6000fd5b50505050506040513d6020811015612b9957600080fd5b505190505b80612bf0576040805162461bcd60e51b815260206004820152601e60248201527f776974686472617720756e6c6f636b656420746f6b656e206661696c65640000604482015290519081900360640190fd5b836001600160a01b0316856001600160a01b03167f832fc3e25f2b3e6fb0eb59419a73cba405f2a249fce75f7e31ea5a457a0323f1846040518082815260200191505060405180910390a350506008805460ff19166001179055505050565b61100381565b61200481565b60003361200214612cb3576040805162461bcd60e51b815260206004820152601f60248201527f746865206d73672073656e646572206d757374206265207374616b6548756200604482015290519081900360640190fd5b814710612cf3576040516120029083156108fc029084906000818181858888f19350505050158015612ce9573d6000803e3d6000fd5b50600190506113b2565b506000919050565b60005460ff1615612d53576040805162461bcd60e51b815260206004820152601960248201527f74686520636f6e747261637420616c726561647920696e697400000000000000604482015290519081900360640190fd5b66071afd498d000060019081556000808052600260205260127fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b55805460ff19169091179055565b60066020526000908152604090205481565b600481565b600581565b601181565b61100081565b61271081565b69021e19e0c9bab240000081565b6001600160a01b03811660009081526003602090815260409182902054825182815280840190935260609290918391906020820181803683375050506020810183905290506000805b60208160ff161015612e6657828160ff1681518110612e3a57fe5b01602001516001600160f81b03191615612e5957816001019150612e5e565b612e66565b600101612e1f565b5060608160ff166040519080825280601f01601f191660200182016040528015612e97576020820181803683370190505b50905060005b8260ff168160ff161015612ef357838160ff1681518110612eba57fe5b602001015160f81c60f81b828260ff1681518110612ed457fe5b60200101906001600160f81b031916908160001a905350600101612e9d565b5095945050505050565b61100481565b6060612f0d61506c565b6000612f1884613730565b9150915080612f6e576040805162461bcd60e51b815260206004820152601f60248201527f756e7265636f676e697a6564207472616e73666572496e207061636b61676500604482015290519081900360640190fd5b6000612f798361386f565b905063ffffffff81161561300d576040808401516020808601516001600160a01b03166000908152600290915291822054612fb49190613bd5565b9050612fbe6150a1565b60405180608001604052808660000151815260200183815260200186608001516001600160a01b031681526020018463ffffffff16815250905061300181613c0e565b955050505050506113b2565b505060408051600081526020810190915291506113b29050565b60008282018381101561228c576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600061228c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613cea565b6000826130d25750600061228f565b828202828482816130df57fe5b041461228c5760405162461bcd60e51b81526004018080602001828103825260218152602001806152e16021913960400191505060405180910390fd5b600061228c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613d8c565b60408051600680825260e08201909252606091829190816020015b6060815260200190600190039081613179575050835190915061319b90613de6565b816000815181106131a857fe5b60200260200101819052506131c983602001516001600160a01b0316613df9565b816001815181106131d657fe5b60200260200101819052506000836040015151905060608160405190808252806020026020018201604052801561322157816020015b606081526020019060019003908161320c5790505b50905060005b8281101561326e5761324f8660400151828151811061324257fe5b6020026020010151613de6565b82828151811061325b57fe5b6020908102919091010152600101613227565b5061327881613e1c565b8360028151811061328557fe5b60200260200101819052506060826040519080825280602002602001820160405280156132c657816020015b60608152602001906001900390816132b15790505b50905060005b8381101561331c576132fd876060015182815181106132e757fe5b60200260200101516001600160a01b0316613df9565b82828151811061330957fe5b60209081029190910101526001016132cc565b5061332681613e1c565b8460038151811061333357fe5b602002602001018190525060608360405190808252806020026020018201604052801561337457816020015b606081526020019060019003908161335f5790505b50905060005b848110156133b457613395886080015182815181106132e757fe5b8282815181106133a157fe5b602090810291909101015260010161337a565b506133be81613e1c565b856004815181106133cb57fe5b60200260200101819052506133ed8760a0015167ffffffffffffffff16613de6565b856005815181106133fa57fe5b602002602001018190525061340e85613e1c565b979650505050505050565b600060088211156134425761343b836007198401600a0a63ffffffff6130c316565b905061228f565b61228c836008849003600a0a63ffffffff61308116565b6001600160a01b0380841660009081526007602090815260408083209385168352929052208054613490908463ffffffff61302716565b815542603c016001820181905560408051858152602081019290925280516001600160a01b03808616939088169289927f446d1aa056e7b903901f49880e9f252762c1b81dc4301cf28db6dae526497eaa9281900390910190a45050505050565b6134f96150c8565b600061350483613ea6565b91509150806135445760405162461bcd60e51b81526004018080602001828103825260248152602001806153306024913960400191505060405180910390fd5b611c4282614071565b6000816040516020018082805190602001908083835b602083106135825780518252601f199092019160209182019101613563565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405280519060200120836040516020018082805190602001908083835b602083106135f05780518252601f1990920191602091820191016135d1565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040528051906020012014905092915050565b015190565b613641615020565b600061364c836144f5565b915091508061368c5760405162461bcd60e51b81526004018080602001828103825260248152602001806151be6024913960400191505060405180910390fd5b6136946150c8565b602080840180516001600160a01b0390811684526040808701518585015291511660009081526002909252812054905b846040015151811015613715576136f2856040015182815181106136e457fe5b602002602001015183613419565b8560400151828151811061370257fe5b60209081029190910101526001016136c4565b506080840151604083015260056060830152611c3e82614071565b61373861506c565b600061374261506c565b61374a6150ff565b61375b61375686614759565b61477e565b90506000805b61376a836147c8565b15613862578061378c57613785613780846147e9565b614837565b845261385a565b80600114156137b9576137a66137a1846147e9565b6148ee565b6001600160a01b0316602085015261385a565b80600214156137d8576137ce613780846147e9565b604085015261385a565b8060031415613800576137ed6137a1846147e9565b6001600160a01b0316606085015261385a565b8060041415613828576138156137a1846147e9565b6001600160a01b0316608085015261385a565b80600514156138555761383d613780846147e9565b67ffffffffffffffff1660a08501526001915061385a565b613862565b600101613761565b5091935090915050915091565b60208101516000906001600160a01b03166139b3578160a0015167ffffffffffffffff164211156138a2575060016113b2565b81604001514710156138b6575060036113b2565b6138bf82614908565b61393457606082015160408084015190516000926001600160a01b0316916127109184818181858888f193505050503d806000811461391a576040519150601f19603f3d011682016040523d82523d6000602084013e61391f565b606091505b50509050806139325750600490506113b2565b505b7f471eb9cc1ffe55ffadf15b32595415eb9d80f22e761d24bd6dffc607e1284d5982602001518360600151846040015160405180846001600160a01b03166001600160a01b03168152602001836001600160a01b03166001600160a01b03168152602001828152602001935050505060405180910390a15060006113b2565b8160a0015167ffffffffffffffff164211156139d1575060016113b2565b81516020808401516001600160a01b0316600090815260039091526040902054146139fe575060026113b2565b602080830151604080516370a0823160e01b815230600482015290516000936001600160a01b03909316926370a082319261c3509260248083019392829003018187803b158015613a4e57600080fd5b5086fa158015613a62573d6000803e3d6000fd5b50505050506040513d6020811015613a7957600080fd5b50516040840151909150811015613a945750600390506113b2565b613a9d83614908565b613b5457600083602001516001600160a01b031663a9059cbb61c350866060015187604001516040518463ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600088803b158015613b1257600080fd5b5087f1158015613b26573d6000803e3d6000fd5b50505050506040513d6020811015613b3d57600080fd5b5051905080613b525750600591506113b29050565b505b7f471eb9cc1ffe55ffadf15b32595415eb9d80f22e761d24bd6dffc607e1284d5983602001518460600151856040015160405180846001600160a01b03166001600160a01b03168152602001836001600160a01b03166001600160a01b03168152602001828152602001935050505060405180910390a150600090506113b2565b60006008821115613bf75761343b836007198401600a0a63ffffffff61308116565b61228c836008849003600a0a63ffffffff6130c316565b60408051600480825260a08201909252606091829190816020015b6060815260200190600190039081613c295750508351909150613c4b90613de6565b81600081518110613c5857fe5b6020026020010181905250613c708360200151613de6565b81600181518110613c7d57fe5b6020026020010181905250613c9e83604001516001600160a01b0316613df9565b81600281518110613cab57fe5b6020026020010181905250613cc9836060015163ffffffff16613de6565b81600381518110613cd657fe5b602002602001018190525061126281613e1c565b60008183613d765760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613d3b578181015183820152602001613d23565b50505050905090810190601f168015613d685780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581613d8257fe5b0495945050505050565b60008184841115613dde5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315613d3b578181015183820152602001613d23565b505050900390565b606061228f613df483614a76565b614b5c565b60408051600560a21b831860148201526034810190915260609061126281614b5c565b6060815160001415613e3d57506040805160008152602081019091526113b2565b606082600081518110613e4c57fe5b602002602001015190506000600190505b8351811015613e8d57613e8382858381518110613e7657fe5b6020026020010151614bae565b9150600101613e5d565b50611262613ea0825160c060ff16614c2b565b82614bae565b613eae6150c8565b6000613eb86150c8565b613ec06150ff565b613ecc61375686614759565b90506000805b613edb836147c8565b156138625780613f0157613ef16137a1846147e9565b6001600160a01b03168452614069565b8060011415613fa2576060613f1d613f18856147e9565b614d23565b90508051604051908082528060200260200182016040528015613f4a578160200160208202803683370190505b50602086015260005b8151811015613f9b57613f78828281518110613f6b57fe5b6020026020010151614837565b86602001518281518110613f8857fe5b6020908102919091010152600101613f53565b5050614069565b8060021415614044576060613fb9613f18856147e9565b90508051604051908082528060200260200182016040528015613fe6578160200160208202803683370190505b50604086015260005b8151811015613f9b5761401482828151811061400757fe5b60200260200101516148ee565b8660400151828151811061402457fe5b6001600160a01b0390921660209283029190910190910152600101613fef565b806003141561385557614059613780846147e9565b63ffffffff166060850152600191505b600101613ed2565b80516001600160a01b031661429b5760005b816020015151811015614295576000826040015182815181106140a257fe5b60200260200101516001600160a01b0316612710846020015184815181106140c657fe5b60209081029190910101516040516000818181858888f193505050503d806000811461410e576040519150601f19603f3d011682016040523d82523d6000602084013e614113565b606091505b50509050806141d6577f203f9f67a785f4f81be4d48b109aa0c498d1bc8097ecc2627063f480cc5fe73e83600001518460400151848151811061415257fe5b60200260200101518560200151858151811061416a57fe5b6020026020010151866060015160405180856001600160a01b03166001600160a01b03168152602001846001600160a01b03166001600160a01b031681526020018381526020018263ffffffff1663ffffffff16815260200194505050505060405180910390a161428c565b7fd468d4fa5e8fb4adc119b29a983fd0785e04af5cb8b7a3a69a47270c54b6901a83600001518460400151848151811061420c57fe5b60200260200101518560200151858151811061422457fe5b6020026020010151866060015160405180856001600160a01b03166001600160a01b03168152602001846001600160a01b03166001600160a01b031681526020018381526020018263ffffffff1663ffffffff16815260200194505050505060405180910390a15b50600101614083565b506144f2565b60005b8160200151518110156144f057600082600001516001600160a01b031663a9059cbb61c350856040015185815181106142d357fe5b6020026020010151866020015186815181106142eb57fe5b60200260200101516040518463ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600088803b15801561434257600080fd5b5087f1158015614356573d6000803e3d6000fd5b50505050506040513d602081101561436d57600080fd5b505190508015614431577fd468d4fa5e8fb4adc119b29a983fd0785e04af5cb8b7a3a69a47270c54b6901a8360000151846040015184815181106143ad57fe5b6020026020010151856020015185815181106143c557fe5b6020026020010151866060015160405180856001600160a01b03166001600160a01b03168152602001846001600160a01b03166001600160a01b031681526020018381526020018263ffffffff1663ffffffff16815260200194505050505060405180910390a16144e7565b7f203f9f67a785f4f81be4d48b109aa0c498d1bc8097ecc2627063f480cc5fe73e83600001518460400151848151811061446757fe5b60200260200101518560200151858151811061447f57fe5b6020026020010151866060015160405180856001600160a01b03166001600160a01b03168152602001846001600160a01b03166001600160a01b031681526020018381526020018263ffffffff1663ffffffff16815260200194505050505060405180910390a15b5060010161429e565b505b50565b6144fd615020565b6000614507615020565b61450f6150ff565b61451b61375686614759565b90506000805b61452a836147c8565b15613862578061454757614540613780846147e9565b8452614751565b806001141561456f5761455c6137a1846147e9565b6001600160a01b03166020850152614751565b80600214156145fe576060614586613f18856147e9565b905080516040519080825280602002602001820160405280156145b3578160200160208202803683370190505b50604086015260005b81518110156145f7576145d4828281518110613f6b57fe5b866040015182815181106145e457fe5b60209081029190910101526001016145bc565b5050614751565b8060031415614693576060614615613f18856147e9565b90508051604051908082528060200260200182016040528015614642578160200160208202803683370190505b50606086015260005b81518110156145f75761466382828151811061400757fe5b8660600151828151811061467357fe5b6001600160a01b039092166020928302919091019091015260010161464b565b80600414156147285760606146aa613f18856147e9565b905080516040519080825280602002602001820160405280156146d7578160200160208202803683370190505b50608086015260005b81518110156145f7576146f882828151811061400757fe5b8660800151828151811061470857fe5b6001600160a01b03909216602092830291909101909101526001016146e0565b80600514156138555761473d613780846147e9565b67ffffffffffffffff1660a0850152600191505b600101614521565b61476161511f565b506040805180820190915281518152602082810190820152919050565b6147866150ff565b61478f82614df4565b61479857600080fd5b60006147a78360200151614e2e565b60208085015160408051808201909152868152920190820152915050919050565b60006147d261511f565b505080518051602091820151919092015191011190565b6147f161511f565b6147fa826147c8565b61480357600080fd5b6020820151600061481382614e91565b80830160209586015260408051808201909152908152938401919091525090919050565b80516000901580159061484c57508151602110155b61485557600080fd5b60006148648360200151614e2e565b905080836000015110156148bf576040805162461bcd60e51b815260206004820152601a60248201527f6c656e677468206973206c657373207468616e206f6666736574000000000000604482015290519081900360640190fd5b8251602080850151830180519284900392918310156148e557826020036101000a820491505b50949350505050565b80516000906015146148ff57600080fd5b61228f82614837565b600080805260066020527f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f8541580156149415750600554155b156149835760008052600660205269021e19e0c9bab24000007f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f85561a8c06005555b6020808301516001600160a01b03166000908152600690915260409020548015806149b15750808360400151105b156149c05760009150506113b2565b6020808401516001600160a01b039081166000908152600783526040808220606088015190931682529190925290819020908401518154614a069163ffffffff61302716565b8155600554420160018201819055606085015160208087015160408089015181519081529283019490945283516001600160a01b039384169493909116927f3fb83143cd331170da18fb1e8564d97e8ec39264b6ecb1ba248ea7596ab07258928290030190a35060019392505050565b604080516020808252818301909252606091829190602082018180368337505050602081018490529050600067ffffffffffffffff198416614aba57506018614ade565b6fffffffffffffffffffffffffffffffff198416614ada57506010614ade565b5060005b6020811015614b1457818181518110614af357fe5b01602001516001600160f81b03191615614b0c57614b14565b600101614ade565b60008160200390506060816040519080825280601f01601f191660200182016040528015614b49576020820181803683370190505b5080830196909652508452509192915050565b606081516001148015614b8e5750607f60f81b82600081518110614b7c57fe5b01602001516001600160f81b03191611155b15614b9a5750806113b2565b61228f614bac8351608060ff16614c2b565b835b6060806040519050835180825260208201818101602087015b81831015614bdf578051835260209283019201614bc7565b50855184518101855292509050808201602086015b81831015614c0c578051835260209283019201614bf4565b508651929092011591909101601f01601f191660405250905092915050565b6060680100000000000000008310614c7b576040805162461bcd60e51b815260206004820152600e60248201526d696e70757420746f6f206c6f6e6760901b604482015290519081900360640190fd5b60408051600180825281830190925260609160208201818036833701905050905060378411614cd55782840160f81b81600081518110614cb757fe5b60200101906001600160f81b031916908160001a905350905061228f565b6060614ce085614a76565b90508381510160370160f81b82600081518110614cf957fe5b60200101906001600160f81b031916908160001a905350614d1a8282614bae565b95945050505050565b6060614d2e82614df4565b614d3757600080fd5b6000614d4283614fc4565b9050606081604051908082528060200260200182016040528015614d8057816020015b614d6d61511f565b815260200190600190039081614d655790505b5090506000614d928560200151614e2e565b60208601510190506000805b84811015614de957614daf83614e91565b9150604051806040016040528083815260200184815250848281518110614dd257fe5b602090810291909101015291810191600101614d9e565b509195945050505050565b8051600090614e05575060006113b2565b6020820151805160001a9060c0821015614e24576000925050506113b2565b5060019392505050565b8051600090811a6080811015614e485760009150506113b2565b60b8811080614e63575060c08110801590614e63575060f881105b15614e725760019150506113b2565b60c0811015614e865760b5190190506113b2565b60f5190190506113b2565b80516000908190811a6080811015614eac5760019150614fbd565b60b8811015614ec157607e1981019150614fbd565b60c0811015614f3b57600060b78203600186019550806020036101000a865104915060018101820193505080831015614f35576040805162461bcd60e51b81526020600482015260116024820152706164646974696f6e206f766572666c6f7760781b604482015290519081900360640190fd5b50614fbd565b60f8811015614f505760be1981019150614fbd565b600060f78203600186019550806020036101000a865104915060018101820193505080831015614fbb576040805162461bcd60e51b81526020600482015260116024820152706164646974696f6e206f766572666c6f7760781b604482015290519081900360640190fd5b505b5092915050565b8051600090614fd5575060006113b2565b60008090506000614fe98460200151614e2e565b602085015185519181019250015b808210156150175761500882614e91565b82019150826001019250614ff7565b50909392505050565b6040518060c001604052806000801916815260200160006001600160a01b03168152602001606081526020016060815260200160608152602001600067ffffffffffffffff1681525090565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a081019190915290565b60408051608081018252600080825260208201819052918101829052606081019190915290565b604051806080016040528060006001600160a01b031681526020016060815260200160608152602001600063ffffffff1681525090565b604051806040016040528061511261511f565b8152602001600081525090565b60405180604001604052806000815260200160008152509056fe6f6e6c79207374616b696e672073797374656d20636f6e74726163742063616e2063616c6c20746869732066756e6374696f6e746865206d6573736167652073656e646572206d75737420626520696e63656e746976697a6520636f6e7472616374626e62206c61726765207472616e73666572206c696d697420746f6f20736d616c6c756e7265636f676e697a6564207472616e736665724f75742073796e207061636b61676565787069726554696d65206d7573742062652074776f206d696e75746573206c61746572616d6f756e7420697320746f6f206c617267652c20657863656564206d6178696d756d206265703220746f6b656e20616d6f756e74746865206d73672073656e646572206d75737420626520746f6b656e207265636f76657220706f7274616c4c656e677468206f6620726563697069656e74416464727320646f65736e277420657175616c20746f206c656e677468206f6620726566756e644164647273696e76616c6964207472616e7366657220616d6f756e743a20707265636973696f6e206c6f737320696e20616d6f756e7420636f6e76657273696f6e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77746865206d6573736167652073656e646572206d75737420626520676f7665726e616e636520636f6e7472616374756e7265636f676e697a6564207472616e736665724f75742061636b207061636b6167654c656e677468206f6620726563697069656e74416464727320646f65736e277420657175616c20746f206c656e677468206f6620616d6f756e7473746865206d6573736167652073656e646572206d7573742062652063726f737320636861696e20636f6e7472616374746865206d73672073656e646572206d75737420626520746f6b656e4d616e6167657274686520636f6e7472616374206e6f7420696e69742079657400000000000000726563656976656420424e4220616d6f756e742073686f756c64206265206e6f206c657373207468616e207468652073756d206f66207472616e7366657220424e4220616d6f756e7420616e642072656c6179466565696e76616c696420726563656976656420424e4220616d6f756e743a20707265636973696f6e206c6f737320696e20616d6f756e7420636f6e76657273696f6ea164736f6c6343000604000a", }, { ContractAddr: common.HexToAddress(GovHubContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/1abdfbf3aeb86909c2220b79bf92b87ddff64b54", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/9d09d0a3d6332460a810188261ec8195e05aa218", Code: "608060405234801561001057600080fd5b506004361061021c5760003560e01c8063831d65d111610125578063ab51bb96116100ad578063df8079e91161007c578063df8079e914610615578063f1fad1041461061d578063f9a2bbc714610625578063fc3e59081461062d578063fd6a6879146106355761021c565b8063ab51bb9614610585578063c81b16621461058d578063c8509d8114610595578063dc927faf1461060d5761021c565b80639dc09262116100f45780639dc0926214610549578063a1a11bf514610551578063a78abc1614610559578063aa82dce114610575578063aad560631461057d5761021c565b8063831d65d1146103f857806388e4194e1461047257806396713da9146105395780639ab1a373146105415761021c565b80634bf6c882116101a857806370fd5bad1161017757806370fd5bad146103d0578063718a8aa8146103d857806375d47a0a146103e05780637942fd05146103e85780637e434d54146103f05761021c565b80634bf6c882146103b057806351b4dce3146103b857806351e80672146103c05780636e47b482146103c85761021c565b80633a21baae116101ef5780633a21baae1461035b5780633dffc3871461036357806343756e5c146103815780634900c4ea14610389578063493279b1146103915761021c565b80630bee7a67146102215780630e2374a5146102425780631182b875146102665780632808702814610353575b600080fd5b61022961063d565b6040805163ffffffff9092168252519081900360200190f35b61024a610642565b604080516001600160a01b039092168252519081900360200190f35b6102de6004803603604081101561027c57600080fd5b60ff8235169190810190604081016020820135600160201b8111156102a057600080fd5b8201836020820111156102b257600080fd5b803590602001918460018302840111600160201b831117156102d357600080fd5b509092509050610648565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610318578181015183820152602001610300565b50505050905090810190601f1680156103455780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61024a6106f7565b6102296106fd565b61036b610702565b6040805160ff9092168252519081900360200190f35b61024a610707565b61036b61070d565b610399610712565b6040805161ffff9092168252519081900360200190f35b61036b610718565b61024a61071d565b61024a610723565b61024a610729565b61036b61072f565b61036b610734565b61024a610739565b61036b61073f565b61024a610744565b6104706004803603604081101561040e57600080fd5b60ff8235169190810190604081016020820135600160201b81111561043257600080fd5b82018360208201111561044457600080fd5b803590602001918460018302840111600160201b8311171561046557600080fd5b50909250905061074a565b005b6104706004803603606081101561048857600080fd5b810190602081018135600160201b8111156104a257600080fd5b8201836020820111156104b457600080fd5b803590602001918460018302840111600160201b831117156104d557600080fd5b919390929091602081019035600160201b8111156104f257600080fd5b82018360208201111561050457600080fd5b803590602001918460018302840111600160201b8311171561052557600080fd5b9193509150356001600160a01b03166107dc565b61036b6108c7565b6102296108cc565b61024a6108d1565b61024a6108d7565b6105616108dd565b604080519115158252519081900360200190f35b61024a6108e6565b61024a6108ec565b61022961070d565b61024a6108f2565b610470600480360360408110156105ab57600080fd5b60ff8235169190810190604081016020820135600160201b8111156105cf57600080fd5b8201836020820111156105e157600080fd5b803590602001918460018302840111600160201b8311171561060257600080fd5b5090925090506108f8565b61024a61096f565b61024a610975565b61036b61097b565b61024a610980565b61036b610986565b61024a61098b565b606481565b61200181565b60606106526115f9565b600061069385858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061099192505050565b91509150806106af576106a66064610a57565b925050506106f0565b60006106ba83610ac1565b905063ffffffff81166106e157505060408051600081526020810190915291506106f09050565b6106ea81610a57565b93505050505b9392505050565b61200581565b606681565b600181565b61100181565b600081565b6102ca81565b600881565b61200681565b61200081565b61100581565b600281565b601081565b61100881565b600b81565b61200381565b336120001461078a5760405162461bcd60e51b815260040180806020018281038252602f81526020018061165e602f913960400191505060405180910390fd5b6040805162461bcd60e51b815260206004820152601e60248201527f7265636569766520756e65787065637465642061636b207061636b6167650000604482015290519081900360640190fd5b505050565b336120061461081c5760405162461bcd60e51b815260040180806020018281038252603181526020018061168d6031913960400191505060405180910390fd5b6108246115f9565b604051806060016040528087878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250604080516020601f8801819004810282018101909252868152918101919087908790819084018382808284376000920191909152505050908252506001600160a01b03841660209091015290506108be81610ac1565b50505050505050565b600981565b606581565b61100781565b61100681565b60005460ff1681565b61200281565b61300081565b61100281565b33612000146109385760405162461bcd60e51b815260040180806020018281038252602f81526020018061165e602f913960400191505060405180910390fd5b60405162461bcd60e51b81526004018080602001828103825260238152602001806116be6023913960400191505060405180910390fd5b61100381565b61200481565b601181565b61100081565b600381565b61100481565b6109996115f9565b60006109a36115f9565b6109ab611623565b6109bc6109b786610e62565b610e87565b90506000805b6109cb83610ed1565b15610a4a57806109ed576109e66109e184610ef2565b610f40565b8452610a42565b8060011415610a0c57610a026109e184610ef2565b6020850152610a42565b8060021415610a3d57610a26610a2184610ef2565b610fb9565b6001600160a01b0316604085015260019150610a42565b610a4a565b6001016109c2565b5091935090915050915091565b604080516001808252818301909252606091829190816020015b6060815260200190600190039081610a71579050509050610a978363ffffffff16610fd9565b81600081518110610aa457fe5b6020026020010181905250610ab881610fec565b9150505b919050565b6000610ad08260400151611076565b610b3c57604080516020808252601c908201527f74686520746172676574206973206e6f74206120636f6e7472616374000000008183015290517f70e72399380dcfb0338abc03dc8d47f9f470ada8e769c9a78d644ea97385ecb29181900360600190a1506065610abc565b81604001516001600160a01b031663ac431751836000015184602001516040518363ffffffff1660e01b8152600401808060200180602001838103835285818151815260200191508051906020019080838360005b83811015610ba9578181015183820152602001610b91565b50505050905090810190601f168015610bd65780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015610c09578181015183820152602001610bf1565b50505050905090810190601f168015610c365780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b158015610c5757600080fd5b505af1925050508015610c68575060015b610e5a576040516000815260443d1015610c8457506000610d21565b60046000803e60005160e01c6308c379a08114610ca5576000915050610d21565b60043d036004833e81513d602482011167ffffffffffffffff82111715610cd157600092505050610d21565b808301805167ffffffffffffffff811115610cf3576000945050505050610d21565b8060208301013d8601811115610d1157600095505050505050610d21565b601f01601f191660405250925050505b80610d2c5750610dcf565b7f70e72399380dcfb0338abc03dc8d47f9f470ada8e769c9a78d644ea97385ecb2816040518080602001828103825283818151815260200191508051906020019080838360005b83811015610d8b578181015183820152602001610d73565b50505050905090810190601f168015610db85780820380516001836020036101000a031916815260200191505b509250505060405180910390a16066915050610abc565b3d808015610df9576040519150601f19603f3d011682016040523d82523d6000602084013e610dfe565b606091505b5060408051602080825283518183015283517f1279f84165b4fd69c35e1f338ff107231b036c655cd1688851e011ce617c4e8d938593928392918301919085019080838360008315610d8b578181015183820152602001610d73565b506000919050565b610e6a611643565b506040805180820190915281518152602082810190820152919050565b610e8f611623565b610e988261107c565b610ea157600080fd5b6000610eb083602001516110b6565b60208085015160408051808201909152868152920190820152915050919050565b6000610edb611643565b505080518051602091820151919092015191011190565b610efa611643565b610f0382610ed1565b610f0c57600080fd5b60208201516000610f1c82611119565b80830160209586015260408051808201909152908152938401919091525090919050565b8051606090610f4e57600080fd5b6000610f5d83602001516110b6565b83516040805191839003808352601f19601f8201168301602001909152919250606090828015610f94576020820181803683370190505b5090506000816020019050610fb084876020015101828561124c565b50949350505050565b8051600090601514610fca57600080fd5b610fd382611297565b92915050565b6060610fd3610fe78361134c565b611432565b606081516000141561100d5750604080516000815260208101909152610abc565b60608260008151811061101c57fe5b602002602001015190506000600190505b835181101561105d576110538285838151811061104657fe5b6020026020010151611484565b915060010161102d565b50610ab8611070825160c060ff16611501565b82611484565b3b151590565b805160009061108d57506000610abc565b6020820151805160001a9060c08210156110ac57600092505050610abc565b5060019392505050565b8051600090811a60808110156110d0576000915050610abc565b60b88110806110eb575060c081108015906110eb575060f881105b156110fa576001915050610abc565b60c081101561110e5760b519019050610abc565b60f519019050610abc565b80516000908190811a60808110156111345760019150611245565b60b881101561114957607e1981019150611245565b60c08110156111c357600060b78203600186019550806020036101000a8651049150600181018201935050808310156111bd576040805162461bcd60e51b81526020600482015260116024820152706164646974696f6e206f766572666c6f7760781b604482015290519081900360640190fd5b50611245565b60f88110156111d85760be1981019150611245565b600060f78203600186019550806020036101000a865104915060018101820193505080831015611243576040805162461bcd60e51b81526020600482015260116024820152706164646974696f6e206f766572666c6f7760781b604482015290519081900360640190fd5b505b5092915050565b80611256576107d7565b5b60208110611276578251825260209283019290910190601f1901611257565b915181516020939093036101000a6000190180199091169216919091179052565b8051600090158015906112ac57508151602110155b6112b557600080fd5b60006112c483602001516110b6565b9050808360000151101561131f576040805162461bcd60e51b815260206004820152601a60248201527f6c656e677468206973206c657373207468616e206f6666736574000000000000604482015290519081900360640190fd5b825160208085015183018051928490039291831015610fb057506020919091036101000a90049392505050565b604080516020808252818301909252606091829190602082018180368337505050602081018490529050600067ffffffffffffffff198416611390575060186113b4565b6fffffffffffffffffffffffffffffffff1984166113b0575060106113b4565b5060005b60208110156113ea578181815181106113c957fe5b01602001516001600160f81b031916156113e2576113ea565b6001016113b4565b60008160200390506060816040519080825280601f01601f19166020018201604052801561141f576020820181803683370190505b5080830196909652508452509192915050565b6060815160011480156114645750607f60f81b8260008151811061145257fe5b01602001516001600160f81b03191611155b15611470575080610abc565b610fd36114828351608060ff16611501565b835b6060806040519050835180825260208201818101602087015b818310156114b557805183526020928301920161149d565b50855184518101855292509050808201602086015b818310156114e25780518352602092830192016114ca565b508651929092011591909101601f01601f191660405250905092915050565b6060680100000000000000008310611551576040805162461bcd60e51b815260206004820152600e60248201526d696e70757420746f6f206c6f6e6760901b604482015290519081900360640190fd5b604080516001808252818301909252606091602082018180368337019050509050603784116115ab5782840160f81b8160008151811061158d57fe5b60200101906001600160f81b031916908160001a9053509050610fd3565b60606115b68561134c565b90508381510160370160f81b826000815181106115cf57fe5b60200101906001600160f81b031916908160001a9053506115f08282611484565b95945050505050565b6040518060600160405280606081526020016060815260200160006001600160a01b031681525090565b6040518060400160405280611636611643565b8152602001600081525090565b60405180604001604052806000815260200160008152509056fe746865206d6573736167652073656e646572206d7573742062652063726f737320636861696e20636f6e7472616374746865206d73672073656e646572206d75737420626520676f7665726e6f722074696d656c6f636b20636f6e74726163747265636569766520756e6578706563746564206661696c2061636b207061636b616765a164736f6c6343000604000a", }, { ContractAddr: common.HexToAddress(CrossChainContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/1abdfbf3aeb86909c2220b79bf92b87ddff64b54", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/9d09d0a3d6332460a810188261ec8195e05aa218", Code: "608060405234801561001057600080fd5b50600436106103e65760003560e01c806374f079b81161020a578063c27cdcfb11610125578063df8079e9116100b8578063f1fad10411610087578063f1fad10414610bac578063f7a251d714610bb4578063f9a2bbc714610c2c578063fc3e590814610c34578063fd6a687914610c3c576103e6565b8063df8079e914610b74578063e1c7392a14610b7c578063e3b0480514610b84578063e6400bbe14610ba4576103e6565b8063d31f968d116100f4578063d31f968d14610b2d578063d76a867514610b5c578063dc40433114610b64578063dc927faf14610b6c576103e6565b8063c27cdcfb14610af5578063c780e9de14610b15578063c81b166214610b1d578063ccc108d714610b25576103e6565b80639dc092621161019d578063aad560631161016c578063aad5606314610a27578063ab51bb9614610a2f578063ac43175114610a37578063b0355f5b146107d6576103e6565b80639dc0926214610a07578063a1a11bf514610a0f578063a78abc1614610a17578063aa82dce114610a1f576103e6565b806384013b6a116101d957806384013b6a1461091c578063863fe4ab146109f75780638cc8f561146108e457806396713da9146109ff576103e6565b806374f079b8146108fc57806375d47a0a146109045780637942fd051461090c5780637e434d5414610914576103e6565b806343756e5c116103055780636a3cb34d116102985780636e47a51a116102675780636e47a51a146108bc5780636e47b482146108dc57806370fd5bad146108e4578063718a8aa8146108ec578063719482d5146108f4576103e6565b80636a3cb34d146108645780636bacff2c1461086c5780636c46aa68146108645780636de380bd146108b4576103e6565b806351e80672116102d457806351e806721461081e5780635692ddd3146108265780635f8321771461082e57806363e1394e1461085c576103e6565b806343756e5c146107fe578063493279b1146108065780634bf6c8821461080e57806351b4dce314610816576103e6565b8063299b533d1161037d5780633a648b151161034c5780633a648b15146106725780633bdc47a6146106ae5780633dffc387146107d6578063422f9050146107de576103e6565b8063299b533d146105f85780632af6f3991461062c5780632ff32aea14610649578063308325f41461066a576103e6565b80631d130935116103b95780631d130935146104685780631e275ae11461048457806322556cdc146105e857806328087028146105f0576103e6565b806305e68258146103eb5780630bee7a67146104095780630e2374a51461042a57806314b3023b1461044e575b600080fd5b6103f3610c44565b6040805160ff9092168252519081900360200190f35b610411610c49565b6040805163ffffffff9092168252519081900360200190f35b610432610c4e565b604080516001600160a01b039092168252519081900360200190f35b610456610c54565b60408051918252519081900360200190f35b610470610c5a565b604080519115158252519081900360200190f35b6105e6600480360361010081101561049b57600080fd5b81018160a081016080820135600160201b8111156104b857600080fd5b8201836020820111156104ca57600080fd5b803590602001918460018302840111600160201b831117156104eb57600080fd5b919390929091602081019035600160201b81111561050857600080fd5b82018360208201111561051a57600080fd5b803590602001918460018302840111600160201b8311171561053b57600080fd5b919390929091602081019035600160201b81111561055857600080fd5b82018360208201111561056a57600080fd5b803590602001918460018302840111600160201b8311171561058b57600080fd5b919390929091602081019035600160201b8111156105a857600080fd5b8201836020820111156105ba57600080fd5b803590602001918460018302840111600160201b831117156105db57600080fd5b509092509050610c63565b005b610456611347565b61043261134c565b6106156004803603602081101561060e57600080fd5b5035611352565b6040805161ffff9092168252519081900360200190f35b6104706004803603602081101561064257600080fd5b5035611368565b61065161137d565b60408051600792830b90920b8252519081900360200190f35b610456611386565b6106926004803603602081101561068857600080fd5b503560ff1661138c565b604080516001600160401b039092168252519081900360200190f35b610761600480360360608110156106c457600080fd5b60ff82351691602081013591810190606081016040820135600160201b8111156106ed57600080fd5b8201836020820111156106ff57600080fd5b803590602001918460018302840111600160201b8311171561072057600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506113a7945050505050565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561079b578181015183820152602001610783565b50505050905090810190601f1680156107c85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103f361141d565b610470600480360360208110156107f457600080fd5b503560ff16611422565b610432611437565b61061561143d565b6103f3611443565b610432611448565b61043261144e565b610456611454565b6105e66004803603604081101561084457600080fd5b506001600160a01b0381358116916020013516611484565b6104566116e4565b61061561170c565b6108896004803603602081101561088257600080fd5b5035611711565b6040805161ffff90941684526001600160801b03909216602084015282820152519081900360600190f35b610456611740565b610432600480360360208110156108d257600080fd5b503560ff16611767565b610432611782565b6103f361170c565b6103f3611788565b61061561141d565b61045661178d565b610432611793565b6103f3611799565b61043261179e565b6105e6600480360360a081101561093257600080fd5b810190602081018135600160201b81111561094c57600080fd5b82018360208201111561095e57600080fd5b803590602001918460018302840111600160201b8311171561097f57600080fd5b919390929091602081019035600160201b81111561099c57600080fd5b8201836020820111156109ae57600080fd5b803590602001918460018302840111600160201b831117156109cf57600080fd5b919350915080356001600160401b03908116916020810135909116906040013560ff166117a4565b610456612a5e565b6103f3612a66565b610432612a6b565b610432612a71565b610470612a77565b610432612a80565b610432612a86565b610411610c44565b6105e660048036036040811015610a4d57600080fd5b810190602081018135600160201b811115610a6757600080fd5b820183602082011115610a7957600080fd5b803590602001918460018302840111600160201b83111715610a9a57600080fd5b919390929091602081019035600160201b811115610ab757600080fd5b820183602082011115610ac957600080fd5b803590602001918460018302840111600160201b83111715610aea57600080fd5b509092509050612a8c565b61069260048036036020811015610b0b57600080fd5b503560ff16613550565b61045661356b565b61043261358f565b6105e6613595565b61047060048036036040811015610b4357600080fd5b5080356001600160a01b0316906020013560ff166137e9565b610761613809565b610456613828565b61043261382e565b610432613834565b6105e661383a565b61069260048036036020811015610b9a57600080fd5b503560ff16613bf1565b6105e6613c0c565b6103f3613e2b565b6105e660048036036060811015610bca57600080fd5b60ff8235169190810190604081016020820135600160201b811115610bee57600080fd5b820183602082011115610c0057600080fd5b803590602001918460018302840111600160201b83111715610c2157600080fd5b919350915035613e30565b610432613f73565b6103f3613f79565b610432613f7e565b600081565b606481565b61200181565b60015481565b600b5460ff1681565b60005460ff16610ca8576040805162461bcd60e51b81526020600482015260196024820152600080516020614a62833981519152604482015290519081900360640190fd5b604080516337d7f9c160e21b81526001600160401b038b35166004820181905291516110039163df5fe704916024808301926020929190829003018186803b158015610cf357600080fd5b505afa158015610d07573d6000803e3d6000fd5b505050506040513d6020811015610d1d57600080fd5b5051610d5a5760405162461bcd60e51b8152600401808060200182810382526023815260200180614a826023913960400191505060405180910390fd5b604080516337d7f9c160e21b815260208c8101356001600160401b03166004830181905292516110039263df5fe704926024808301939192829003018186803b158015610da657600080fd5b505afa158015610dba573d6000803e3d6000fd5b505050506040513d6020811015610dd057600080fd5b5051610e0d5760405162461bcd60e51b8152600401808060200182810382526023815260200180614a826023913960400191505060405180910390fd5b60608b013560ff81166000908152600560205260409020546001600160401b03909116906001600160a01b0316610e86576040805162461bcd60e51b815260206004820152601860248201527718da185b9b995b081a5cc81b9bdd081cdd5c1c1bdc9d195960421b604482015290519081900360640190fd5b600b5460ff1615610eca576040805162461bcd60e51b81526020600482015260096024820152681cdd5cdc195b99195960ba1b604482015290519081900360640190fd5b8888604051808383808284376040519201829003822094508f93508e9250819050838380828437808301925050509250505060405180910390201415610f46576040805162461bcd60e51b815260206004820152600c60248201526b1cd85b59481c185e5b1bd85960a21b604482015290519081900360640190fd5b60606001600160401b0360408e01358116908e83013516610f678282613f84565b80516020808301919091206000818152600e9092526040909120549194509060ff1615610fd0576040805162461bcd60e51b8152602060048201526012602482015271185b1c9958591e4818da185b1b195b99d95960721b604482015290519081900360640190fd5b6000908152600e60205260408120805460ff191660011790558f8160200201356001600160401b0316905060608f8f8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050905060608c8c8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052506040805163cba510a960e01b81526001600160401b038a16600482015290519596509094611003945063cba510a9935060248083019350602092829003018186803b1580156110c657600080fd5b505afa1580156110da573d6000803e3d6000fd5b505050506040513d60208110156110f057600080fd5b505160408051808201909152600381526269626360e81b602082015290915061111d908290898686613fcc565b611166576040805162461bcd60e51b81526020600482015260156024820152740696e76616c6964206d65726b6c652070726f6f663605c1b604482015290519081900360640190fd5b5050505060008f60016004811061117957fe5b60200201356001600160401b0316905060608d8d8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8f018190048102820181019092528d815293945060609392508d91508c908190840183828082843760009201829052506040805163cba510a960e01b81526001600160401b038a16600482015290519596509094611003945063cba510a9935060248083019350602092829003018186803b15801561124557600080fd5b505afa158015611259573d6000803e3d6000fd5b505050506040513d602081101561126f57600080fd5b505160408051808201909152600381526269626360e81b602082015290915061129c908290898686613fcc565b6112e5576040805162461bcd60e51b8152602060048201526015602482015274696e76616c6964206d65726b6c652070726f6f663160581b604482015290519081900360640190fd5b505050506112f16140c9565b604080516001600160401b038416815260ff83166020820152815133927f039eb91179ffd7d3b6e97f8ea106e748e827f910b872375dbc9c14a362319c3c928290030190a2505050505050505050505050505050565b603281565b61200581565b600d6020526000908152604090205461ffff1681565b600e6020526000908152604090205460ff1681565b60045460070b81565b60025481565b600a602052600090815260409020546001600160401b031681565b60606000825160210190506060816040519080825280601f01601f1916602001820160405280156113df576020820181803683370190505b506021810186905260018101879052828152905060418101600061140286614147565b50905061141181838851614151565b50909695505050505050565b600181565b60096020526000908152604090205460ff1681565b61100181565b6102ca81565b600881565b61200681565b61200081565b604080517710d05390d15317d514905394d1915497d41493d413d4d05360421b8152905190819003601801902081565b60005460ff166114c9576040805162461bcd60e51b81526020600482015260196024820152600080516020614a62833981519152604482015290519081900360640190fd5b6040805163569e4ed360e11b815233600482015290516000916110009163ad3c9da691602480820192602092909190829003018186803b15801561150c57600080fd5b505afa158015611520573d6000803e3d6000fd5b505050506040513d602081101561153657600080fd5b505160408051633d42651560e11b8152905191925060009161100091637a84ca2a916004808301926020929190829003018186803b15801561157757600080fd5b505afa15801561158b573d6000803e3d6000fd5b505050506040513d60208110156115a157600080fd5b50519050806115ae575060155b6000821180156115be5750808211155b6115fd576040805162461bcd60e51b815260206004820152600b60248201526a1b9bdd0818d8589a5b995d60aa1b604482015290519081900360640190fd5b604080516001600160a01b038087166020808401919091529086168284015282518083038401815260608301808552815191909201207710d05390d15317d514905394d1915497d41493d413d4d05360421b909152915190819003607801902060009061166a9083614192565b905080156116dc5760408051630911a2c160e11b81526001600160a01b03888116600483015287166024820152905161100491631223458291604480830192600092919082900301818387803b1580156116c357600080fd5b505af11580156116d7573d6000803e3d6000fd5b505050505b505050505050565b604080516f14d554d411539117d41493d413d4d05360821b8152905190819003601001902081565b600281565b600c602052600090815260409020805460019091015461ffff8216916201000090046001600160801b03169083565b604080516e149153d4115397d41493d413d4d053608a1b8152905190819003600f01902081565b6005602052600090815260409020546001600160a01b031681565b61100581565b601081565b60035481565b61100881565b600b81565b61200381565b60005460ff166117e9576040805162461bcd60e51b81526020600482015260196024820152600080516020614a62833981519152604482015290519081900360640190fd5b60408051630a83aaa960e31b815233600482015290516110069163541d5548916024808301926020929190829003018186803b15801561182857600080fd5b505afa15801561183c573d6000803e3d6000fd5b505050506040513d602081101561185257600080fd5b50516118a5576040805162461bcd60e51b815260206004820152601f60248201527f746865206d73672073656e646572206973206e6f7420612072656c6179657200604482015290519081900360640190fd5b60ff8116600090815260086020526040902054829082906001600160401b039081169083168114611915576040805162461bcd60e51b815260206004820152601560248201527439b2b8bab2b731b2903737ba1034b71037b93232b960591b604482015290519081900360640190fd5b60ff8216600090815260086020908152604091829020805467ffffffffffffffff1916600185016001600160401b039081169190911790915582516337d7f9c160e21b81529089166004820152915188926110039263df5fe70492602480840193829003018186803b15801561198a57600080fd5b505afa15801561199e573d6000803e3d6000fd5b505050506040513d60208110156119b457600080fd5b50516119f15760405162461bcd60e51b8152600401808060200182810382526023815260200180614a826023913960400191505060405180910390fd5b60ff851660009081526005602052604090205485906001600160a01b0316611a5b576040805162461bcd60e51b815260206004820152601860248201527718da185b9b995b081a5cc81b9bdd081cdd5c1c1bdc9d195960421b604482015290519081900360640190fd5b60ff86166000908152600a6020526040902054889087906001600160401b039081169083161015611ac4576040805162461bcd60e51b815260206004820152600e60248201526d3a37b79037b632103432b0b232b960911b604482015290519081900360640190fd5b60ff81166000908152600a60205260409020546001600160401b03838116911614611b165760ff81166000908152600a60205260409020805467ffffffffffffffff19166001600160401b0384161790555b600b5460ff1615611b5a576040805162461bcd60e51b81526020600482015260096024820152681cdd5cdc195b99195960ba1b604482015290519081900360640190fd5b60608e8e8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050905060608d8d8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509050611c9e6110036001600160a01b031663cba510a98e6040518263ffffffff1660e01b815260040180826001600160401b03166001600160401b0316815260200191505060206040518083038186803b158015611c4757600080fd5b505afa158015611c5b573d6000803e3d6000fd5b505050506040513d6020811015611c7157600080fd5b505160408051808201909152600381526269626360e81b6020820152611c978e8e613f84565b8585613fcc565b611ce6576040805162461bcd60e51b815260206004820152601460248201527334b73b30b634b21036b2b935b63290383937b7b360611b604482015290519081900360640190fd5b60408051631bb5062960e31b81526001600160401b038e16600482015290516000916110039163dda8314891602480820192602092909190829003018186803b158015611d3257600080fd5b505afa158015611d46573d6000803e3d6000fd5b505050506040513d6020811015611d5c57600080fd5b505190508b8b600080806060611d7189614477565b935093509350935083611e33578460ff16866001600160401b03167ff7b2e42d694eb1100184aae86d4245d9e46966100b1dc7e723275b98326854ac8b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015611deb578181015183820152602001611dd3565b50505050905090810190601f168015611e185780820380516001836020036101000a031916815260200191505b509250505060405180910390a3505050505050505050612a4e565b6040805160ff85811682529151918716916001600160401b038916917f36afdaf439a8f43fe72135135d804ae620b37a474f0943b5b85f6788312cad40919081900360200190a360ff83166123b85760ff85166000818152600560209081526040808320548151631182b87560e01b815260048101958652602481019283528651604482015286516001600160a01b03909216958695631182b875958d958a9593949093606490910192918601918190849084905b83811015611f00578181015183820152602001611ee8565b50505050905090810190601f168015611f2d5780820380516001836020036101000a031916815260200191505b509350505050600060405180830381600087803b158015611f4d57600080fd5b505af192505050801561203157506040513d6000823e601f3d908101601f191682016040526020811015611f8057600080fd5b8101908080516040519392919084600160201b821115611f9f57600080fd5b908301906020820185811115611fb457600080fd5b8251600160201b811182820188101715611fcd57600080fd5b82525081516020918201929091019080838360005b83811015611ffa578181015183820152602001611fe2565b50505050905090810190601f1680156120275780820380516001836020036101000a031916815260200191505b5060405250505060015b612343576040516000815260443d101561204d575060006120e8565b60046000803e60005160e01c6308c379a0811461206e5760009150506120e8565b60043d036004833e81513d60248201116001600160401b0382111715612099576000925050506120e8565b80830180516001600160401b038111156120ba5760009450505050506120e8565b8060208301013d86018111156120d8576000955050505050506120e8565b601f01601f191660405250925050505b806120f35750612205565b60ff871660009081526007602052604081205461212a916001600160401b0390911690899061212590600290886113a7565b614527565b60ff8716600090815260076020908152604080832080546001600160401b038082166001011667ffffffffffffffff19909116179055805182815284518184015284516001600160a01b038716947ff91a8f63e5b3e0e89e5f93e1915a7805f3c52d9a73b3c09769785c2c7bf87acf948794849390840192918601918190849084905b838110156121c55781810151838201526020016121ad565b50505050905090810190601f1680156121f25780820380516001836020036101000a031916815260200191505b509250505060405180910390a25061233e565b3d80801561222f576040519150601f19603f3d011682016040523d82523d6000602084013e612234565b606091505b5060ff8716600090815260076020526040812054612267916001600160401b0390911690899061212590600290886113a7565b60ff8716600090815260076020908152604080832080546001600160401b038082166001011667ffffffffffffffff19909116179055805182815284518184015284516001600160a01b038716947f63ac299d6332d1cc4e61b81e59bc00c0ac7c798addadf33840f1307cd2977351948794849390840192918601918190849084905b838110156123025781810151838201526020016122ea565b50505050905090810190601f16801561232f5780820380516001836020036101000a031916815260200191505b509250505060405180910390a2505b6123b2565b8051156123b05760ff871660009081526007602052604081205461237c916001600160401b0390911690899061212590600190866113a7565b60ff8716600090815260076020526040902080546001600160401b038082166001011667ffffffffffffffff199091161790555b505b50612986565b60ff83166001141561265c5760ff8516600081815260056020908152604080832054815163831d65d160e01b815260048101958652602481019283528651604482015286516001600160a01b0390921695869563831d65d1958d958a9593949093606490910192918601918190849084905b8381101561244257818101518382015260200161242a565b50505050905090810190601f16801561246f5780820380516001836020036101000a031916815260200191505b509350505050600060405180830381600087803b15801561248f57600080fd5b505af19250505080156124a0575060015b6123b2576040516000815260443d10156124bc57506000612557565b60046000803e60005160e01c6308c379a081146124dd576000915050612557565b60043d036004833e81513d60248201116001600160401b038211171561250857600092505050612557565b80830180516001600160401b03811115612529576000945050505050612557565b8060208301013d860181111561254757600095505050505050612557565b601f01601f191660405250925050505b8061256257506125c7565b60408051602080825283518183015283516001600160a01b038616937ff91a8f63e5b3e0e89e5f93e1915a7805f3c52d9a73b3c09769785c2c7bf87acf93869390928392830191850190808383600083156121c55781810151838201526020016121ad565b3d8080156125f1576040519150601f19603f3d011682016040523d82523d6000602084013e6125f6565b606091505b5060408051602080825283518183015283516001600160a01b038616937f63ac299d6332d1cc4e61b81e59bc00c0ac7c798addadf33840f1307cd297735193869390928392830191850190808383600083156123025781810151838201526020016122ea565b60ff8316600214156129865760ff8516600081815260056020908152604080832054815163c8509d8160e01b815260048101958652602481019283528651604482015286516001600160a01b0390921695869563c8509d81958d958a9593949093606490910192918601918190849084905b838110156126e65781810151838201526020016126ce565b50505050905090810190601f1680156127135780820380516001836020036101000a031916815260200191505b509350505050600060405180830381600087803b15801561273357600080fd5b505af1925050508015612744575060015b612984576040516000815260443d1015612760575060006127fb565b60046000803e60005160e01c6308c379a081146127815760009150506127fb565b60043d036004833e81513d60248201116001600160401b03821117156127ac576000925050506127fb565b80830180516001600160401b038111156127cd5760009450505050506127fb565b8060208301013d86018111156127eb576000955050505050506127fb565b601f01601f191660405250925050505b8061280657506128af565b816001600160a01b03167ff91a8f63e5b3e0e89e5f93e1915a7805f3c52d9a73b3c09769785c2c7bf87acf826040518080602001828103825283818151815260200191508051906020019080838360005b8381101561286f578181015183820152602001612857565b50505050905090810190601f16801561289c5780820380516001836020036101000a031916815260200191505b509250505060405180910390a250612984565b3d8080156128d9576040519150601f19603f3d011682016040523d82523d6000602084013e6128de565b606091505b50816001600160a01b03167f63ac299d6332d1cc4e61b81e59bc00c0ac7c798addadf33840f1307cd2977351826040518080602001828103825283818151815260200191508051906020019080838360005b83811015612948578181015183820152602001612930565b50505050905090810190601f1680156129755780820380516001836020036101000a031916815260200191505b509250505060405180910390a2505b505b60ff80861660009081526009602052604090205461100591636f93d2e6918a913391879116806129b8575060ff881615155b604080516001600160e01b031960e088901b1681526001600160a01b039586166004820152939094166024840152604483019190915215156064820152905160848083019260209291908290030181600087803b158015612a1857600080fd5b505af1158015612a2c573d6000803e3d6000fd5b505050506040513d6020811015612a4257600080fd5b50505050505050505050505b5050505050505050505050505050565b630102ca0081565b600981565b61100781565b61100681565b60005460ff1681565b61200281565b61300081565b3361100714612acc5760405162461bcd60e51b815260040180806020018281038252602e8152602001806149b8602e913960400191505060405180910390fd5b600b5460ff1615612b10576040805162461bcd60e51b81526020600482015260096024820152681cdd5cdc195b99195960ba1b604482015290519081900360640190fd5b612b7984848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080518082019091526012815271626174636853697a65466f724f7261636c6560701b602082015291506146c29050565b15612c1457604080516020601f8401819004810282018101909252828152600091612bbc918585808385018382808284376000920191909152506147a992505050565b90506127108111158015612bd15750600a8110155b612c0c5760405162461bcd60e51b8152600401808060200182810382526032815260200180614a306032913960400191505060405180910390fd5b6001556134be565b612c7d84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601281527118591913dc955c19185d1950da185b9b995b60721b602082015291506146c29050565b15612e0557606082828080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505082519293505060169091149050612d005760405162461bcd60e51b815260040180806020018281038252605a8152602001806148d1605a913960600191505060405180910390fd5b60018101516002820151601683015160ff82161590612d1e816147ae565b612d6f576040805162461bcd60e51b815260206004820152601960248201527f61646472657373206973206e6f74206120636f6e747261637400000000000000604482015290519081900360640190fd5b60ff8416600081815260056020908152604080832080546001600160a01b0319166001600160a01b038716908117909155808452600683528184208585528352818420805460ff199081166001179091556009909352818420805490931687151517909255519092917f7e3b6af43092577ee20e60eaa1d9b114a7031305c895ee7dd3ffe17196d2e1e091a350505050506134be565b612e7284848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080518082019091526016815275195b98589b1953dc911a5cd8589b1950da185b9b995b60521b602082015291506146c29050565b15612fa357606082828080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505082519293505060029091149050612ef55760405162461bcd60e51b815260040180806020018281038252604a8152602001806149e6604a913960600191505060405180910390fd5b600181810151600283015160ff80831660009081526005602052604090205492939192908316909114906001600160a01b03168015612f99576001600160a01b038116600090815260066020908152604080832060ff881680855290835292819020805460ff1916861515908117909155815190815290517fa3132e3f9819fbddc7f0ed6d38d7feef59aa95112090b7c592f5cb5bc4aa4adc929181900390910190a25b50505050506134be565b61300784848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600d81526c73757370656e6451756f72756d60981b602082015291506146c29050565b1561313c576002811461304b5760405162461bcd60e51b815260040180806020018281038252602d81526020018061495f602d913960400191505060405180910390fd5b600061308e600284848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506147a992505050565b905060008161ffff161180156130a8575060648161ffff16105b6130f2576040805162461bcd60e51b8152602060048201526016602482015275696e76616c69642073757370656e642071756f72756d60501b604482015290519081900360640190fd5b604080516f14d554d411539117d41493d413d4d05360821b815281519081900360100190206000908152600d60205220805461ffff90921661ffff199092169190911790556134be565b61319f84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600c81526b72656f70656e51756f72756d60a01b602082015291506146c29050565b156132d257600281146131e35760405162461bcd60e51b815260040180806020018281038252602c81526020018061498c602c913960400191505060405180910390fd5b6000613226600284848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506147a992505050565b905060008161ffff16118015613240575060648161ffff16105b613289576040805162461bcd60e51b8152602060048201526015602482015274696e76616c69642072656f70656e2071756f72756d60581b604482015290519081900360640190fd5b604080516e149153d4115397d41493d413d4d053608a1b8152815190819003600f0190206000908152600d60205220805461ffff90921661ffff199092169190911790556134be565b61333d84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601481527363616e63656c5472616e7366657251756f72756d60601b602082015291506146c29050565b1561348157600281146133815760405162461bcd60e51b815260040180806020018281038252603481526020018061492b6034913960400191505060405180910390fd5b60006133c4600284848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506147a992505050565b905060008161ffff161180156133de575060648161ffff16105b61342f576040805162461bcd60e51b815260206004820152601e60248201527f696e76616c69642063616e63656c207472616e736665722071756f72756d0000604482015290519081900360640190fd5b604080517710d05390d15317d514905394d1915497d41493d413d4d05360421b815281519081900360180190206000908152600d60205220805461ffff90921661ffff199092169190911790556134be565b6040805162461bcd60e51b815260206004820152600d60248201526c756e6b6e6f776e20706172616d60981b604482015290519081900360640190fd5b7f6cdb0ac70ab7f2e2d035cca5be60d89906f2dede7648ddbd7402189c1eeed17a848484846040518080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600083820152604051601f909101601f19169092018290039850909650505050505050a150505050565b6008602052600090815260409020546001600160401b031681565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081565b61100281565b60005460ff166135da576040805162461bcd60e51b81526020600482015260196024820152600080516020614a62833981519152604482015290519081900360640190fd5b6040805163569e4ed360e11b815233600482015290516000916110009163ad3c9da691602480820192602092909190829003018186803b15801561361d57600080fd5b505afa158015613631573d6000803e3d6000fd5b505050506040513d602081101561364757600080fd5b505160408051633d42651560e11b8152905191925060009161100091637a84ca2a916004808301926020929190829003018186803b15801561368857600080fd5b505afa15801561369c573d6000803e3d6000fd5b505050506040513d60208110156136b257600080fd5b50519050806136bf575060155b6000821180156136cf5750808211155b61370e576040805162461bcd60e51b815260206004820152600b60248201526a1b9bdd0818d8589a5b995d60aa1b604482015290519081900360640190fd5b600b5460ff16613755576040805162461bcd60e51b815260206004820152600d60248201526c1b9bdd081cdd5cdc195b991959609a1b604482015290519081900360640190fd5b604080516e149153d4115397d41493d413d4d053608a1b8152905190819003600f0190206000906137a6907fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470614192565b905080156137e457600b805460ff1916905560405133907f899fe8c37dc61708a3aaa99c4bf143346c1d1da69af79be9e8920c0a6785b75290600090a25b505050565b600660209081526000928352604080842090915290825290205460ff1681565b6040518060400160405280600381526020016269626360e81b81525081565b610e1081565b61100381565b61200481565b60005460ff1615613892576040805162461bcd60e51b815260206004820152601960248201527f74686520636f6e747261637420616c726561647920696e697400000000000000604482015290519081900360640190fd5b7f1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b80546001600160a01b0319908116611008179091557f92e85d02570a8092d09a6e3a57665bc3815a2699a4074001bf1ccabf660f5a36805460ff199081169091557fd8af288fc1c8680b4f4706064cf021e264efb6828fcaf7eb5ca36818eb365bcc8054821660019081179091557f89832631fb3c3307a103ba2c84ab569c64d6182a18893dcd163f0f1c2090733a805484166110049081179091557f6cde3cea4b3a3fb2488b2808bae7556f4a405e50f65e1794383bc026131b13c38054841690557f72e4efa1513b071517c6c74dba31b5934a81aa83cddd400e7081df5529c9943680548416831790557fa9bc9a3a348c357ba16b37005d7e6b3236198c0e939f4af8c5f19b8deeb8ebc08054851690911790557fc575c31fea594a6eb97c8e9d3f9caee4c16218c6ef37e923234c0fe9014a61e78054831690557f4e523af77f034e9810f1c94057f5e931fb3d16a51511a4c3add793617d18610580548316821790557ffb33122aa9f93cc639ebe80a7bc4784c11e6053dde89c6f4f7e268c6a623da1e805484166110001790557fc7694af312c4f286114180fd0ba6a52461fcee8a381636770b19a343af92538a80548316821790557f01112dd68e482ba8d68a7e828cff8b3abcea08eab88941953c180a7e650e9cd480548316821790557fc0a4a8be475dfebc377ebef2d7c4ff47656f572a08dd92b81017efcdba0febe1805484166110071790557f87e8a52529e8ece4ef759037313542a6429ff494a9fab9027fb79db90124eba680548316821790557f4c7666bbcb22d46469f7cc282f70764a7012dca2cce630ff8d83db9a9cdd48f080548316821790557f40f28f99a40bc9f6beea1013afdbc3cdcc689eb76b82c4de06c0acf1e1932ed58054909316611001179092557f0d9cf2cd531699eed8dd34e40ff2884a14a698c4898184fba85194e6f6772d248054821683179055600b60009081527f23f68c9bd22b8a93d06adabe17481c87c016bcbd20adc8bfd707a4d813a572176020527fdf0d5d05428057f5455c2dc8e810dd86d1e9350faa72f16bda8a45443c5b39328054831684179055603283556004805467ffffffffffffffff19166001600160401b031790556002819055600381905580549091169091179055565b6007602052600090815260409020546001600160401b031681565b60005460ff16613c51576040805162461bcd60e51b81526020600482015260196024820152600080516020614a62833981519152604482015290519081900360640190fd5b6040805163569e4ed360e11b815233600482015290516000916110009163ad3c9da691602480820192602092909190829003018186803b158015613c9457600080fd5b505afa158015613ca8573d6000803e3d6000fd5b505050506040513d6020811015613cbe57600080fd5b505160408051633d42651560e11b8152905191925060009161100091637a84ca2a916004808301926020929190829003018186803b158015613cff57600080fd5b505afa158015613d13573d6000803e3d6000fd5b505050506040513d6020811015613d2957600080fd5b5051905080613d36575060155b600082118015613d465750808211155b613d85576040805162461bcd60e51b815260206004820152600b60248201526a1b9bdd0818d8589a5b995d60aa1b604482015290519081900360640190fd5b600b5460ff1615613dc9576040805162461bcd60e51b81526020600482015260096024820152681cdd5cdc195b99195960ba1b604482015290519081900360640190fd5b604080516f14d554d411539117d41493d413d4d05360821b81529051908190036010019020600090613e1b907fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470614192565b905080156137e4576137e46140c9565b601181565b60005460ff16613e75576040805162461bcd60e51b81526020600482015260196024820152600080516020614a62833981519152604482015290519081900360640190fd5b33600090815260066020908152604080832060ff8089168552925290912054859116613ed25760405162461bcd60e51b81526004018080602001828103825260318152602001806148a06031913960400191505060405180910390fd5b60ff85166000908152600760209081526040808320548151601f88018490048402810184019092528682526001600160401b031692613f379284928a9261212592909189918c908c90819084018382808284376000920191909152506113a792505050565b60ff959095166000908152600760205260409020805467ffffffffffffffff191660019096016001600160401b03169590951790945550505050565b61100081565b600381565b61100481565b60408051600e808252818301909252606091630102ca0060ff851617918391602082018180368337505050600e81810187905260068201939093529182525090505b92915050565b600085613fdb575060006140c0565b606082518451865160800101016040519080825280601f01601f191660200182016040528015614012576020820181803683370190505b5090506000614020826147b4565b60208089015182520190508660008061403889614147565b8086526020909501949092509050614051828583614151565b9283019261405e88614147565b8086526020909501949092509050614077828583614151565b9283018a81526020019261408a87614147565b909250905061409a828583614151565b5083516020016140a86147ba565b60208183886065600019fa5051600114955050505050505b95945050505050565b600b5460ff161561410d576040805162461bcd60e51b81526020600482015260096024820152681cdd5cdc195b99195960ba1b604482015290519081900360640190fd5b600b805460ff1916600117905560405133907f6f123d3d54c84a7960a573b31c221dcd86e13fd849c5adb0c6ca851468cc1ae490600090a2565b8051602090910191565b5b60208110614171578251825260209283019290910190601f1901614152565b915181516020939093036101000a6000190180199091169216919091179052565b6000828152600d602052604081205461ffff1661425b57604080516f14d554d411539117d41493d413d4d05360821b815281519081900360100181206000908152600d6020818152848320805461ffff199081166001179091556e149153d4115397d41493d413d4d053608a1b8552855194859003600f01852084528282528584208054821660029081179091557710d05390d15317d514905394d1915497d41493d413d4d05360421b8652865195869003601801909520845291905292902080549092161790555b6000838152600c6020526040902080546201000090046001600160801b03164210158061428c575082816001015414155b1561435f576000848152600d602090815260409182902054835461ffff90911661ffff199091161771ffffffffffffffffffffffffffffffff0000191662010000610e1042016001600160801b03160217835560018084018690558251918201909252338152614301916002840191906147d8565b5080546040805161ffff83168152620100009092046001600160801b0316602083015281810185905251339186917f9e109f0e55ef32e99e4880be2ec357f1ddb3469c79d0747ef4762da6e89fabe5916060908290030190a3614413565b60005b60028201548110156143ea57336001600160a01b031682600201828154811061438757fe5b6000918252602090912001546001600160a01b031614156143e2576040805162461bcd60e51b815260206004820152601060248201526f185b1c9958591e48185c1c1c9bdd995960821b604482015290519081900360640190fd5b600101614362565b50600281018054600181018255600091825260209091200180546001600160a01b031916331790555b8054600282015461ffff9091161161446d576000848152600c60205260408120805471ffffffffffffffffffffffffffffffffffff191681556001810182905590614461600283018261483d565b50506001915050613fc6565b5060009392505050565b600080600060606021855110156144a7575050604080516000808252602082019092529092508291508190614520565b600185015160218601518651604080516020198301808252601f19600119909401939093168101602001909152604189019392916060919080156144f2576020820181803683370190505b509050600061450082614147565b509050614512858260218d5103614151565b506001975091955093509150505b9193509193565b600b5460ff161561456b576040805162461bcd60e51b81526020600482015260096024820152681cdd5cdc195b99195960ba1b604482015290519081900360640190fd5b6002544311156145aa576004805467ffffffffffffffff1981166001600160401b036001600793840b810190930b1617909155600355436002556145eb565b600380546001908101918290555410156145eb576004805467ffffffffffffffff1981166001600160401b036001600793840b810190930b16179091556003555b8160ff16836001600160401b0316600460009054906101000a900460070b6001600160401b03167f3a6e0fc61675aa2a100bcba0568368bb92bcec91c97673391074f11138f0cffe6102ca85604051808361ffff1661ffff16815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561468257818101518382015260200161466a565b50505050905090810190601f1680156146af5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a4505050565b6000816040516020018082805190602001908083835b602083106146f75780518252601f1990920191602091820191016146d8565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405280519060200120836040516020018082805190602001908083835b602083106147655780518252601f199092019160209182019101614746565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040528051906020012014905092915050565b015190565b3b151590565b60200190565b60405180602001604052806001906020820280368337509192915050565b82805482825590600052602060002090810192821561482d579160200282015b8281111561482d57825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906147f8565b5061483992915061485e565b5090565b508054600082559060005260206000209081019061485b9190614885565b50565b61488291905b808211156148395780546001600160a01b0319168155600101614864565b90565b61488291905b80821115614839576000815560010161488b56fe74686520636f6e747261637420616e64206368616e6e656c2068617665206e6f74206265656e20726567697374657265646c656e677468206f662076616c756520666f72206164644f725570646174654368616e6e656c2073686f756c642062652032322c206368616e6e656c49643a697346726f6d53797374656d3a68616e646c6572416464726573736c656e677468206f662076616c756520666f722063616e63656c5472616e7366657251756f72756d2073686f756c6420626520326c656e677468206f662076616c756520666f722073757370656e6451756f72756d2073686f756c6420626520326c656e677468206f662076616c756520666f722072656f70656e51756f72756d2073686f756c642062652032746865206d6573736167652073656e646572206d75737420626520676f7665726e616e636520636f6e74726163746c656e677468206f662076616c756520666f7220656e61626c654f7244697361626c654368616e6e656c2073686f756c6420626520322c206368616e6e656c49643a6973456e61626c65746865206e6577426174636853697a65466f724f7261636c652073686f756c6420626520696e205b31302c2031303030305d74686520636f6e7472616374206e6f7420696e697420796574000000000000006c6967687420636c69656e74206e6f742073796e632074686520626c6f636b20796574a164736f6c6343000604000a", }, { ContractAddr: common.HexToAddress(StakingContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/1abdfbf3aeb86909c2220b79bf92b87ddff64b54", - Code: "6080604052600436106103d25760003560e01c8063718a8aa8116101fd578063b88a802f11610118578063dc927faf116100ab578063f45fd80b1161007a578063f45fd80b14610cdb578063f9a2bbc714610d20578063fa03f79714610d35578063fc3e5908146106d3578063fd6a687914610d4a576103d9565b8063dc927faf14610c87578063df8079e914610c9c578063edc1a5b014610cb1578063f1fad10414610cc6576103d9565b8063c81b1662116100e7578063c81b166214610bb2578063c8509d8114610bc7578063d61b9b9314610c4c578063d7ecfcb614610890576103d9565b8063b88a802f14610b38578063baaafd3b14610b4d578063bf8546ca14610b62578063c2117d8214610b9d576103d9565b80639dc0926211610190578063aad560631161015f578063aad5606314610a2e578063ab51bb9614610a43578063ac43175114610a58578063b14315df14610b23576103d9565b80639dc09262146109c6578063a1a11bf5146109db578063a78abc16146109f0578063aa82dce114610a19576103d9565b80637e434d54116101cc5780637e434d5414610917578063831d65d11461092c57806392b888a41461066a57806396713da9146109b1576103d9565b8063718a8aa8146108a557806375aca593146108ba57806375d47a0a146108ed5780637942fd0514610902576103d9565b8063413d9c3a116102ed5780635d17c8bd116102805780636bd8f8041161024f5780636bd8f804146108125780636e47b482146108485780636fb7f7eb1461085d57806370fd5bad14610890576103d9565b80635d17c8bd146107be5780635d499b1b146107d357806362b171d2146107e857806369b635b6146107fd576103d9565b80634d99dd16116102bc5780634d99dd161461075357806351b4dce31461077f57806351e8067214610794578063552aaf93146107a9576103d9565b8063413d9c3a146106e857806343756e5c146106fd578063493279b1146107125780634bf6c8821461073e576103d9565b8063151817e311610365578063333ad3e711610334578063333ad3e7146106a957806334c43354146106be5780633dffc3871461066a5780633fdfa7e4146106d3576103d9565b8063151817e31461063f57806317c9efb01461066a578063280870281461067f5780632fdeb11114610694576103d9565b80630c795715116103a15780630c795715146104cc5780630e2374a5146104e15780631182b8751461051257806311fe9ec61461060c576103d9565b8063026e402b146103de578063029859921461040c578063047636d1146104335780630bee7a671461049e576103d9565b366103d957005b600080fd5b61040a600480360360408110156103f457600080fd5b506001600160a01b038135169060200135610d5f565b005b34801561041857600080fd5b50610421610d9c565b60408051918252519081900360200190f35b34801561043f57600080fd5b506104666004803603602081101561045657600080fd5b50356001600160a01b0316610da2565b6040518082606080838360005b8381101561048b578181015183820152602001610473565b5050505090500191505060405180910390f35b3480156104aa57600080fd5b506104b3610df6565b6040805163ffffffff9092168252519081900360200190f35b3480156104d857600080fd5b50610421610dfb565b3480156104ed57600080fd5b506104f6610e01565b604080516001600160a01b039092168252519081900360200190f35b34801561051e57600080fd5b506105976004803603604081101561053557600080fd5b60ff8235169190810190604081016020820135600160201b81111561055957600080fd5b82018360208201111561056b57600080fd5b803590602001918460018302840111600160201b8311171561058c57600080fd5b509092509050610e07565b6040805160208082528351818301528351919283929083019185019080838360005b838110156105d15781810151838201526020016105b9565b50505050905090810190601f1680156105fe5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561061857600080fd5b506104216004803603602081101561062f57600080fd5b50356001600160a01b0316610fc3565b34801561064b57600080fd5b50610654610fde565b6040805160ff9092168252519081900360200190f35b34801561067657600080fd5b50610654610fe3565b34801561068b57600080fd5b506104f6610fe8565b3480156106a057600080fd5b50610421610fee565b3480156106b557600080fd5b506104b3610ff4565b3480156106ca57600080fd5b50610421610ff9565b3480156106df57600080fd5b50610654611004565b3480156106f457600080fd5b50610421611009565b34801561070957600080fd5b506104f6611010565b34801561071e57600080fd5b50610727611016565b6040805161ffff9092168252519081900360200190f35b34801561074a57600080fd5b5061065461101c565b61040a6004803603604081101561076957600080fd5b506001600160a01b038135169060200135611021565b34801561078b57600080fd5b506104f661164e565b3480156107a057600080fd5b506104f6611654565b3480156107b557600080fd5b5061065461165a565b3480156107ca57600080fd5b5061042161165f565b3480156107df57600080fd5b50610421611665565b3480156107f457600080fd5b5061042161166e565b34801561080957600080fd5b5061042161180e565b61040a6004803603606081101561082857600080fd5b506001600160a01b03813581169160208101359091169060400135610d5f565b34801561085457600080fd5b506104f6611814565b34801561086957600080fd5b506104216004803603602081101561088057600080fd5b50356001600160a01b031661181a565b34801561089c57600080fd5b50610654611835565b3480156108b157600080fd5b5061065461183a565b3480156108c657600080fd5b50610421600480360360208110156108dd57600080fd5b50356001600160a01b031661183f565b3480156108f957600080fd5b506104f661185a565b34801561090e57600080fd5b50610654611860565b34801561092357600080fd5b506104f6611865565b34801561093857600080fd5b5061040a6004803603604081101561094f57600080fd5b60ff8235169190810190604081016020820135600160201b81111561097357600080fd5b82018360208201111561098557600080fd5b803590602001918460018302840111600160201b831117156109a657600080fd5b50909250905061186b565b3480156109bd57600080fd5b50610654611b33565b3480156109d257600080fd5b506104f6611b38565b3480156109e757600080fd5b506104f6611b3e565b3480156109fc57600080fd5b50610a05611b44565b604080519115158252519081900360200190f35b348015610a2557600080fd5b506104f6611b4d565b348015610a3a57600080fd5b506104f6611b53565b348015610a4f57600080fd5b506104b361165a565b348015610a6457600080fd5b5061040a60048036036040811015610a7b57600080fd5b810190602081018135600160201b811115610a9557600080fd5b820183602082011115610aa757600080fd5b803590602001918460018302840111600160201b83111715610ac857600080fd5b919390929091602081019035600160201b811115610ae557600080fd5b820183602082011115610af757600080fd5b803590602001918460018302840111600160201b83111715610b1857600080fd5b509092509050611b59565b348015610b2f57600080fd5b506106546122eb565b348015610b4457600080fd5b506104216122f0565b348015610b5957600080fd5b5061042161248d565b348015610b6e57600080fd5b5061042160048036036040811015610b8557600080fd5b506001600160a01b0381358116916020013516612498565b348015610ba957600080fd5b506104216124c5565b348015610bbe57600080fd5b506104f66124cb565b348015610bd357600080fd5b5061040a60048036036040811015610bea57600080fd5b60ff8235169190810190604081016020820135600160201b811115610c0e57600080fd5b820183602082011115610c2057600080fd5b803590602001918460018302840111600160201b83111715610c4157600080fd5b5090925090506124d1565b348015610c5857600080fd5b5061042160048036036040811015610c6f57600080fd5b506001600160a01b03813581169160200135166126f4565b348015610c9357600080fd5b506104f661271f565b348015610ca857600080fd5b506104f6612725565b348015610cbd57600080fd5b5061042161272b565b348015610cd257600080fd5b50610654612738565b348015610ce757600080fd5b5061042160048036036060811015610cfe57600080fd5b506001600160a01b03813581169160208101358216916040909101351661273d565b348015610d2c57600080fd5b506104f6612772565b348015610d4157600080fd5b50610421612778565b348015610d5657600080fd5b506104f661277e565b6040805162461bcd60e51b815260206004820152600d60248201526c1b9bdd081cdd5c1c1bdc9d1959609a1b604482015290519081900360640190fd5b60035481565b610daa6147c4565b610db26147c4565b6001600160a01b0383166000818152600b60209081526040808320548552838352600c82528083205485830152928252600d9052819020549082015290505b919050565b606481565b6108fc81565b61200181565b60603361200014610e495760405162461bcd60e51b815260040180806020018281038252602f8152602001806149a7602f913960400191505060405180910390fd5b60005460ff16610e8c576638d7ea4c6800006001908155662386f26fc1000060025568056bc75e2d631000006003556108fc6011556000805460ff191690911790555b610e946147e2565b610edb610ed685858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061278492505050565b6127a9565b90506000610ef0610eeb836127f3565b612841565b90506000606060ff831660041415610f1557610f0b846128f8565b9092509050610f6c565b60ff831660051415610f2a57610f0b84612ad8565b6040805162461bcd60e51b8152602060048201526012602482015271756e6b6e6f776e206576656e74207479706560701b604482015290519081900360640190fd5b63ffffffff821615610fb8576040805163ffffffff84168152905160ff8516917f391d6e5ea6ab6c49b9a0abb1782cae5def8d711f973b00c729658c0b2a80b31b919081900360200190a25b979650505050505050565b6001600160a01b031660009081526006602052604090205490565b600581565b600181565b61200581565b60015481565b606581565b662386f26fc1000081565b600381565b620a8c0081565b61100181565b6102ca81565b600881565b60105460ff166002141561106d576040805162461bcd60e51b815260206004820152600e60248201526d4e6f2072652d656e7472616e637960901b604482015290519081900360640190fd5b6010805460ff19166002179055806402540be400340615801561109557506402540be4008106155b6110e6576040805162461bcd60e51b815260206004820152601c60248201527f707265636973696f6e206c6f737320696e20636f6e76657273696f6e00000000604482015290519081900360640190fd5b60005460ff16611129576638d7ea4c6800006001908155662386f26fc1000060025568056bc75e2d631000006003556108fc6011556000805460ff191690911790555b600154341015611177576040805162461bcd60e51b81526020600482015260146024820152736e6f7420656e6f7567682072656c61792066656560601b604482015290519081900360640190fd5b600354821015611232573360009081526005602090815260408083206001600160a01b038716845290915290205482146111e9576040805162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a5908185b5bdd5b9d60921b604482015290519081900360640190fd5b6002548211611232576040805162461bcd60e51b815260206004820152601060248201526f6e6f7420656e6f7567682066756e647360801b604482015290519081900360640190fd5b3360009081526007602090815260408083206001600160a01b03871684529091529020544210156112aa576040805162461bcd60e51b815260206004820152601a60248201527f70656e64696e6720756e64656c65676174696f6e206578697374000000000000604482015290519081900360640190fd5b604080518082018252601081526f6e6f7420656e6f7567682066756e647360801b602080830191909152336000908152600582528381206001600160a01b03881682529091529182205461130591859063ffffffff612dbb16565b9050801561134d57600254811161134d5760405162461bcd60e51b81526004018080602001828103825260258152602001806149826025913960400191505060405180910390fd5b6000611364846402540be40063ffffffff612e5216565b600254909150349060009061138090839063ffffffff612e9b16565b6040805160038082526080820190925291925060609190816020015b606081526020019060019003908161139c5790505090506113bc33612edd565b816000815181106113c957fe5b60200260200101819052506113e6886001600160a01b0316612edd565b816001815181106113f357fe5b602002602001018190525061140784612f00565b8160028151811061141457fe5b60200260200101819052506060611434600261142f84612f13565b612f9d565b8051602080830191909120600f80546000908152600a845260408082209390935581546001908101909255338152600c909352912080549091019055905061148542620a8c0063ffffffff61302316565b3360009081526007602090815260408083206001600160a01b038e16845290915290205561200063f7a251d76010836114c9876402540be40063ffffffff612e5216565b6040518463ffffffff1660e01b8152600401808460ff1660ff16815260200180602001838152602001828103825284818151815260200191508051906020019080838360005b8381101561152757818101518382015260200161150f565b50505050905090810190601f1680156115545780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b15801561157557600080fd5b505af1158015611589573d6000803e3d6000fd5b5050604051611004925085156108fc02915085906000818181858888f193505050501580156115bc573d6000803e3d6000fd5b506002546040516110029180156108fc02916000818181858888f193505050501580156115ed573d6000803e3d6000fd5b50604080518981526020810185905281516001600160a01b038c169233927fdf0b6ac27f3f3bb31cee3dab0f4fe40cc19c6a3f8daaec52e06b261e58a12519929081900390910190a350506010805460ff1916600117905550505050505050565b61200681565b61200081565b600081565b60025481565b6402540be40081565b60105460009060ff16600214156116bd576040805162461bcd60e51b815260206004820152600e60248201526d4e6f2072652d656e7472616e637960901b604482015290519081900360640190fd5b506010805460ff191660021790553360009081526008602052604090205480611724576040805162461bcd60e51b81526020600482015260146024820152736e6f20756e64656c6567617465642066756e647360601b604482015290519081900360640190fd5b336000818152600860205260408082208290556011549051919291849084818181858888f193505050503d806000811461177a576040519150601f19603f3d011682016040523d82523d6000602084013e61177f565b606091505b50509050806117c7576040805162461bcd60e51b815260206004820152600f60248201526e1d1c985b9cd9995c8819985a5b1959608a1b604482015290519081900360640190fd5b60408051838152905133917fc712d133b8d448221aaed2198ed1f0db6dfc860fb01bc3a630916fe6cbef946f919081900360200190a2506010805460ff1916600117905590565b60035490565b61100581565b6001600160a01b031660009081526004602052604090205490565b600281565b601081565b6001600160a01b031660009081526008602052604090205490565b61100881565b600b81565b61200381565b33612000146118ab5760405162461bcd60e51b815260040180806020018281038252602f8152602001806149a7602f913960400191505060405180910390fd5b60005460ff166118ee576638d7ea4c6800006001908155662386f26fc1000060025568056bc75e2d631000006003556108fc6011556000805460ff191690911790555b6118f66147e2565b611938610ed684848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061278492505050565b905060008060606000805b61194c8661307d565b156119b7578061196957611962610eeb876127f3565b94506119af565b80600114156119855761197e610eeb876127f3565b93506119af565b80600214156119aa5761199f61199a876127f3565b61309e565b9250600191506119af565b6119b7565b600101611943565b816119fd576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b611a068361310e565b611a49576040805162461bcd60e51b815260206004820152600f60248201526e0eee4dedcce40e0c2c6d640d0c2e6d608b1b604482015290519081900360640190fd5b611a55610ed684612784565b95506000611a65610eeb886127f3565b9050611a6f6147e2565b611a788861307d565b15611a9b57611a94610ed6611a8f61199a8b6127f3565b612784565b9050611adc565b6040805162461bcd60e51b8152602060048201526011602482015270656d7074792061636b207061636b61676560781b604482015290519081900360640190fd5b60ff821660011415611af857611af3818888613162565b611b26565b60ff821660021415611b0f57611af3818888613519565b60ff821660031415610f2a57611af38188886137e6565b5050505050505050505050565b600981565b61100781565b61100681565b60005460ff1681565b61200281565b61300081565b60005460ff16611bb0576040805162461bcd60e51b815260206004820152601960248201527f74686520636f6e7472616374206e6f7420696e69742079657400000000000000604482015290519081900360640190fd5b3361100714611bf05760405162461bcd60e51b815260040180806020018281038252602e8152602001806148f8602e913960400191505060405180910390fd5b611c5184848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600a81526972656c6179657246656560b01b60208201529150613b4b9050565b15611db75760208114611cab576040805162461bcd60e51b815260206004820152601d60248201527f6c656e677468206f662072656c61796572466565206d69736d61746368000000604482015290519081900360640190fd5b604080516020601f8401819004810282018101909252828152600091611ce991858580838501838280828437600092019190915250613c3292505050565b90506003548110611d2b5760405162461bcd60e51b815260040180806020018281038252602e815260200180614926602e913960400191505060405180910390fd5b6002548111611d6b5760405162461bcd60e51b815260040180806020018281038252602e815260200180614954602e913960400191505060405180910390fd5b6402540be400810615611daf5760405162461bcd60e51b815260040180806020018281038252602c8152602001806148cc602c913960400191505060405180910390fd5b600155612259565b611e1b84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600d81526c62534352656c6179657246656560981b60208201529150613b4b9050565b15611f7d5760208114611e75576040805162461bcd60e51b815260206004820181905260248201527f6c656e677468206f662062534352656c61796572466565206d69736d61746368604482015290519081900360640190fd5b604080516020601f8401819004810282018101909252828152600091611eb391858580838501838280828437600092019190915250613c3292505050565b905080611ef15760405162461bcd60e51b81526004018080602001828103825260228152602001806149d66022913960400191505060405180910390fd5b6001548110611f315760405162461bcd60e51b815260040180806020018281038252602e81526020018061484c602e913960400191505060405180910390fd5b6402540be400810615611f755760405162461bcd60e51b815260040180806020018281038252602f81526020018061481d602f913960400191505060405180910390fd5b600255612259565b611fe184848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600d81526c36b4b72232b632b3b0ba34b7b760991b60208201529150613b4b9050565b156120c3576020811461203b576040805162461bcd60e51b815260206004820181905260248201527f6c656e677468206f66206d696e44656c65676174696f6e206d69736d61746368604482015290519081900360640190fd5b604080516020601f840181900481028201810190925282815260009161207991858580838501838280828437600092019190915250613c3292505050565b905060015481116120bb5760405162461bcd60e51b815260040180806020018281038252603181526020018061487a6031913960400191505060405180910390fd5b600355612259565b61212584848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600b81526a7472616e7366657247617360a81b60208201529150613b4b9050565b1561221c576020811461217f576040805162461bcd60e51b815260206004820152601e60248201527f6c656e677468206f66207472616e73666572476173206d69736d617463680000604482015290519081900360640190fd5b604080516020601f84018190048102820181019092528281526000916121bd91858580838501838280828437600092019190915250613c3292505050565b905060008111612214576040805162461bcd60e51b815260206004820152601e60248201527f746865207472616e736665724761732063616e6e6f74206265207a65726f0000604482015290519081900360640190fd5b601155612259565b6040805162461bcd60e51b815260206004820152600d60248201526c756e6b6e6f776e20706172616d60981b604482015290519081900360640190fd5b7f6cdb0ac70ab7f2e2d035cca5be60d89906f2dede7648ddbd7402189c1eeed17a848484846040518080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600083820152604051601f909101601f19169092018290039850909650505050505050a150505050565b600481565b60105460009060ff166002141561233f576040805162461bcd60e51b815260206004820152600e60248201526d4e6f2072652d656e7472616e637960901b604482015290519081900360640190fd5b506010805460ff1916600217905533600090815260066020526040902054806123a3576040805162461bcd60e51b81526020600482015260116024820152701b9bc81c195b991a5b99c81c995dd85c99607a1b604482015290519081900360640190fd5b336000818152600660205260408082208290556011549051919291849084818181858888f193505050503d80600081146123f9576040519150601f19603f3d011682016040523d82523d6000602084013e6123fe565b606091505b5050905080612446576040805162461bcd60e51b815260206004820152600f60248201526e1d1c985b9cd9995c8819985a5b1959608a1b604482015290519081900360640190fd5b60408051838152905133917f83b78188b13346b2ffb484da70d42ee27de7fbf9f2bd8045269e10ed643ccd76919081900360200190a2506010805460ff1916600117905590565b6638d7ea4c68000081565b6001600160a01b038083166000908152600760209081526040808320938516835292905220545b92915050565b60015490565b61100281565b33612000146125115760405162461bcd60e51b815260040180806020018281038252602f8152602001806149a7602f913960400191505060405180910390fd5b60005460ff16612554576638d7ea4c6800006001908155662386f26fc1000060025568056bc75e2d631000006003556108fc6011556000805460ff191690911790555b61259382828080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061310e92505050565b6125d6576040805162461bcd60e51b815260206004820152600f60248201526e0eee4dedcce40e0c2c6d640d0c2e6d608b1b604482015290519081900360640190fd5b6125de6147e2565b612620610ed684848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061278492505050565b90506000612630610eeb836127f3565b905061263a6147e2565b6126438361307d565b156126615761265a610ed6611a8f61199a866127f3565b90506126a7565b6040805162461bcd60e51b8152602060048201526016602482015275656d707479206661696c2061636b207061636b61676560501b604482015290519081900360640190fd5b60ff8216600114156126c1576126bc81613c37565b6126eb565b60ff8216600214156126d6576126bc81613e51565b60ff821660031415610f2a576126bc81613f7b565b5050505b505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b61100381565b61200481565b68056bc75e2d6310000081565b601181565b6001600160a01b0392831660009081526009602090815260408083209486168352938152838220929094168152925290205490565b61100081565b60115481565b61100481565b61278c614802565b506040805180820190915281518152602082810190820152919050565b6127b16147e2565b6127ba826140e0565b6127c357600080fd5b60006127d2836020015161411a565b60208085015160408051808201909152868152920190820152915050919050565b6127fb614802565b6128048261307d565b61280d57600080fd5b6020820151600061281d8261417d565b80830160209586015260408051808201909152908152938401919091525090919050565b80516000901580159061285657508151602110155b61285f57600080fd5b600061286e836020015161411a565b905080836000015110156128c9576040805162461bcd60e51b815260206004820152601a60248201527f6c656e677468206973206c657373207468616e206f6666736574000000000000604482015290519081900360640190fd5b8251602080850151830180519284900392918310156128ef57826020036101000a820491505b50949350505050565b600060606000806000805b61290c8761307d565b1561295e578261292e57612927612922886127f3565b6142b0565b9150612953565b826001141561294e57612943610eeb886127f3565b905060019350612953565b61295e565b826001019250612903565b836129a4576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b60006110046001600160a01b031663727be1f8836040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b1580156129ee57600080fd5b505af1158015612a02573d6000803e3d6000fd5b505050506040513d6020811015612a1857600080fd5b5051905080612a3d57612a2f6004848460656142ca565b965096505050505050612ad3565b6001600160a01b038316600090815260066020526040902054612a66908363ffffffff61302316565b6001600160a01b038416600081815260066020908152604091829020939093558051858152905191927f7cc266c7b444f808013fa187f7b904d470a051a6564e78f482aa496581ba4bf892918290030190a260408051600080825260208201909252909750955050505050505b915091565b600060606000806000806000805b612aef8961307d565b15612b795784612b0c57612b056129228a6127f3565b9350612b6e565b8460011415612b2857612b216129228a6127f3565b9250612b6e565b8460021415612b4857612b3d610eeb8a6127f3565b915060019550612b6e565b8460031415612b6957612b62612b5d8a6127f3565b6143c6565b9050612b6e565b612b79565b846001019450612ae6565b85612bbf576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b60006110046001600160a01b031663727be1f8846040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b158015612c0957600080fd5b505af1158015612c1d573d6000803e3d6000fd5b505050506040513d6020811015612c3357600080fd5b5051905080612c5a57612c4a6005868560656142ca565b9850985050505050505050612ad3565b6001600160a01b038086166000818152600760209081526040808320948916835293815283822082905591815260089091522054612c9e908463ffffffff61302316565b6001600160a01b0386166000908152600860205260409020558115612d4f576001600160a01b038516600090815260046020526040902054612ce6908463ffffffff612e9b16565b6001600160a01b03808716600090815260046020908152604080832094909455600581528382209288168252919091522054612d28908463ffffffff612e9b16565b6001600160a01b038087166000908152600560209081526040808320938916835292905220555b836001600160a01b0316856001600160a01b03167f35a799836f74fac7eccf5c73902823b970543d2274d3b93d8da3d37a255772a2856040518082815260200191505060405180910390a360408051600080825260208201909252909950975050505050505050915091565b60008184841115612e4a5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612e0f578181015183820152602001612df7565b50505050905090810190601f168015612e3c5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000612e9483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061440a565b9392505050565b6000612e9483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612dbb565b60408051600560a21b8318601482015260348101909152606090612e948161446f565b60606124bf612f0e836144c5565b61446f565b6060815160001415612f345750604080516000815260208101909152610df1565b606082600081518110612f4357fe5b602002602001015190506000600190505b8351811015612f8457612f7a82858381518110612f6d57fe5b60200260200101516145ab565b9150600101612f54565b50612e94612f97825160c060ff16614628565b826145ab565b6040805160028082526060828101909352829190816020015b6060815260200190600190039081612fb6579050509050612fd98460ff16612f00565b81600081518110612fe657fe5b6020026020010181905250612ffa8361446f565b8160018151811061300757fe5b602002602001018190525061301b81612f13565b949350505050565b600082820183811015612e94576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000613087614802565b505080518051602091820151919092015191011190565b80516060906130ac57600080fd5b60006130bb836020015161411a565b83516040805191839003808352601f19601f82011683016020019091529192506060908280156130f2576020820181803683370190505b50905060008160200190506128ef848760200151018285614720565b8051602080830191909120600e546000908152600a909252604082205480821461313d57600092505050610df1565b5050600e80546000908152600a60205260408120558054600190810190915592915050565b60008060008060005b6131748861307d565b156131dd57836131915761318a612922896127f3565b92506131d2565b83600114156131ad576131a6612922896127f3565b91506131d2565b83600214156131cd576131c2610eeb896127f3565b9050600194506131d2565b6131dd565b83600101935061316b565b84613223576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b600061323a826402540be40063ffffffff61476b16565b6001600160a01b0385166000908152600b602052604090208054600019019055905060ff8816600114156133805760ff8716156132ad576040805162461bcd60e51b815260206004820152600c60248201526b77726f6e672073746174757360a01b604482015290519081900360640190fd5b6001600160a01b0384166000908152600460205260409020546132d6908263ffffffff61302316565b6001600160a01b03808616600090815260046020908152604080832094909455600581528382209287168252919091522054613318908263ffffffff61302316565b6001600160a01b038086166000818152600560209081526040808320948916808452948252918290209490945580518581529051929391927f9a57c81564ab02642f34fd87e41baa9b074c18342cec3b7268b62bf752018fd1929181900390910190a361350e565b60ff88166134d2576001600160a01b0384166000908152600860205260409020546133b1908263ffffffff61302316565b6001600160a01b0385166000908152600860209081526040808320939093558251630e4f7c3f60e31b81526004810185905292516110049363727be1f89360248083019493928390030190829087803b15801561340d57600080fd5b505af1158015613421573d6000803e3d6000fd5b505050506040513d602081101561343757600080fd5b5051613480576040805162461bcd60e51b81526020600482015260136024820152721dda5d1a191c985dc8189b988819985a5b1959606a1b604482015290519081900360640190fd5b6040805182815260ff8916602082015281516001600160a01b0380871693908816927fcbd481ae600289fad8c0484d07ce0ffe4f010d7c844ecfdeaf2a13fead52886e929081900390910190a361350e565b6040805162461bcd60e51b815260206004820152600c60248201526b77726f6e672073746174757360a01b604482015290519081900360640190fd5b505050505050505050565b60008060008060005b61352b8861307d565b15613594578361354857613541612922896127f3565b9250613589565b83600114156135645761355d612922896127f3565b9150613589565b836002141561358457613579610eeb896127f3565b905060019450613589565b613594565b836001019350613522565b846135da576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b60006135f1826402540be40063ffffffff61476b16565b6001600160a01b0385166000908152600c602052604090208054600019019055905060ff8816600114156137705760ff871615613664576040805162461bcd60e51b815260206004820152600c60248201526b77726f6e672073746174757360a01b604482015290519081900360640190fd5b6001600160a01b03841660009081526004602052604090205461368d908263ffffffff612e9b16565b6001600160a01b038086166000908152600460209081526040808320949094556005815283822092871682529190915220546136cf908263ffffffff612e9b16565b6001600160a01b0380861660009081526005602090815260408083209388168352929052205561370842620a8c0063ffffffff61302316565b6001600160a01b038086166000818152600760209081526040808320948916808452948252918290209490945580518581529051929391927fd6f878a5bcbbe79a64e6418bb0d56aaa20b9a60587d45749819df88dfc7c3c44929181900390910190a361350e565b60ff88166134d2576001600160a01b03808516600081815260076020908152604080832094881680845294825280832092909255815185815260ff8c169181019190915281517f4417d10c1e33efa83a770b8d4f47176e78c08c1298d534901ad3b16bb585fa2e929181900390910190a361350e565b6000806000806000805b6137f98961307d565b1561387e57846138165761380f6129228a6127f3565b9350613873565b84600114156138325761382b6129228a6127f3565b9250613873565b846002141561384e576138476129228a6127f3565b9150613873565b846003141561386e57613863610eeb8a6127f3565b905060019550613873565b61387e565b8460010194506137f0565b856138c4576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b60006138db826402540be40063ffffffff61476b16565b6001600160a01b0386166000908152600d602052604090208054600019019055905060ff891660011415613aae5760ff88161561394e576040805162461bcd60e51b815260206004820152600c60248201526b77726f6e672073746174757360a01b604482015290519081900360640190fd5b6001600160a01b03808616600090815260056020908152604080832093881683529290522054613984908263ffffffff612e9b16565b6001600160a01b038681166000908152600560209081526040808320898516845290915280822093909355908516815220546139c09082613023565b6001600160a01b038087166000908152600560209081526040808320938816835292905220556139f942620a8c0063ffffffff61302316565b6001600160a01b0380871660009081526009602090815260408083208985168452825280832093881683529290522055613a3c42620a8c0063ffffffff61302316565b6001600160a01b038087166000818152600960209081526040808320898616808552908352818420958b1680855295835292819020959095558451868152945191947f78bffae3f8c6691ac7fc1a3bff800cb2d612f5ad9ae5b0444cfe2eb15c189e18929081900390910190a4613b3f565b60ff89166134d2576001600160a01b038581166000818152600960209081526040808320898616808552818452828520968a16808652968452828520859055908352818420818552835281842093909355805186815260ff8e169281019290925280519293927fb93bee5c59f85ede6b074a99f4ffcd3e3fc0d5c3d8156de331de89a49e0ce77c9281900390910190a45b50505050505050505050565b6000816040516020018082805190602001908083835b60208310613b805780518252601f199092019160209182019101613b61565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405280519060200120836040516020018082805190602001908083835b60208310613bee5780518252601f199092019160209182019101613bcf565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040528051906020012014905092915050565b015190565b60008060008060005b613c498661307d565b15613cb25783613c6657613c5f612922876127f3565b9250613ca7565b8360011415613c8257613c7b612922876127f3565b9150613ca7565b8360021415613ca257613c97610eeb876127f3565b905060019450613ca7565b613cb2565b836001019350613c40565b84613cf8576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b6000613d0f826402540be40063ffffffff61476b16565b6001600160a01b0385166000908152600b6020908152604080832080546000190190556008909152902054909150613d4d908263ffffffff61302316565b6001600160a01b0385166000908152600860209081526040808320939093558251630e4f7c3f60e31b81526004810185905292516110049363727be1f89360248083019493928390030190829087803b158015613da957600080fd5b505af1158015613dbd573d6000803e3d6000fd5b505050506040513d6020811015613dd357600080fd5b5051613e1c576040805162461bcd60e51b81526020600482015260136024820152721dda5d1a191c985dc8189b988819985a5b1959606a1b604482015290519081900360640190fd5b6040516001907ff83de021914a4585482db5ca47d520a5657165b443fa2c7ef8ed4635f054da9b90600090a250505050505050565b60008060008060005b613e638661307d565b15613ecc5783613e8057613e79612922876127f3565b9250613ec1565b8360011415613e9c57613e95612922876127f3565b9150613ec1565b8360021415613ebc57613eb1610eeb876127f3565b905060019450613ec1565b613ecc565b836001019350613e5a565b84613f12576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b6001600160a01b038084166000908152600c60209081526040808320805460001901905560078252808320938616835292905281812081905590516002917ff83de021914a4585482db5ca47d520a5657165b443fa2c7ef8ed4635f054da9b91a2505050505050565b6000806000806000805b613f8e8761307d565b156140135784613fab57613fa4612922886127f3565b9350614008565b8460011415613fc757613fc0612922886127f3565b9250614008565b8460021415613fe357613fdc612922886127f3565b9150614008565b846003141561400357613ff8610eeb886127f3565b905060019550614008565b614013565b846001019450613f85565b85614059576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b6001600160a01b038481166000908152600d602090815260408083208054600019019055600982528083208785168085528184528285209588168552948352818420849055825280832093835292905281812081905590516003917ff83de021914a4585482db5ca47d520a5657165b443fa2c7ef8ed4635f054da9b91a250505050505050565b80516000906140f157506000610df1565b6020820151805160001a9060c082101561411057600092505050610df1565b5060019392505050565b8051600090811a6080811015614134576000915050610df1565b60b881108061414f575060c0811080159061414f575060f881105b1561415e576001915050610df1565b60c08110156141725760b519019050610df1565b60f519019050610df1565b80516000908190811a608081101561419857600191506142a9565b60b88110156141ad57607e19810191506142a9565b60c081101561422757600060b78203600186019550806020036101000a865104915060018101820193505080831015614221576040805162461bcd60e51b81526020600482015260116024820152706164646974696f6e206f766572666c6f7760781b604482015290519081900360640190fd5b506142a9565b60f881101561423c5760be19810191506142a9565b600060f78203600186019550806020036101000a8651049150600181018201935050808310156142a7576040805162461bcd60e51b81526020600482015260116024820152706164646974696f6e206f766572666c6f7760781b604482015290519081900360640190fd5b505b5092915050565b80516000906015146142c157600080fd5b6124bf82612841565b600060606142e3846402540be40063ffffffff612e5216565b60408051600480825260a0820190925291955060609190816020015b60608152602001906001900390816142ff5790505090506143228760ff16612f00565b8160008151811061432f57fe5b602002602001018190525061434c866001600160a01b0316612edd565b8160018151811061435957fe5b602002602001018190525061436d85612f00565b8160028151811061437a57fe5b60200260200101819052506143948463ffffffff16612f00565b816003815181106143a157fe5b602002602001018190525060606143b782612f13565b94989497509395505050505050565b80516000906001146143d757600080fd5b6020820151805160001a908115806143ef5750608082145b156143ff57600092505050610df1565b600192505050610df1565b600081836144595760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315612e0f578181015183820152602001612df7565b50600083858161446557fe5b0495945050505050565b6060815160011480156144a15750607f60f81b8260008151811061448f57fe5b01602001516001600160f81b03191611155b156144ad575080610df1565b6124bf6144bf8351608060ff16614628565b836145ab565b604080516020808252818301909252606091829190602082018180368337505050602081018490529050600067ffffffffffffffff1984166145095750601861452d565b6fffffffffffffffffffffffffffffffff1984166145295750601061452d565b5060005b60208110156145635781818151811061454257fe5b01602001516001600160f81b0319161561455b57614563565b60010161452d565b60008160200390506060816040519080825280601f01601f191660200182016040528015614598576020820181803683370190505b5080830196909652508452509192915050565b6060806040519050835180825260208201818101602087015b818310156145dc5780518352602092830192016145c4565b50855184518101855292509050808201602086015b818310156146095780518352602092830192016145f1565b508651929092011591909101601f01601f191660405250905092915050565b6060680100000000000000008310614678576040805162461bcd60e51b815260206004820152600e60248201526d696e70757420746f6f206c6f6e6760901b604482015290519081900360640190fd5b604080516001808252818301909252606091602082018180368337019050509050603784116146d25782840160f81b816000815181106146b457fe5b60200101906001600160f81b031916908160001a90535090506124bf565b60606146dd856144c5565b90508381510160370160f81b826000815181106146f657fe5b60200101906001600160f81b031916908160001a90535061471782826145ab565b95945050505050565b8061472a576126ef565b5b6020811061474a578251825260209283019290910190601f190161472b565b915181516020939093036101000a6000190180199091169216919091179052565b60008261477a575060006124bf565b8282028284828161478757fe5b0414612e945760405162461bcd60e51b81526004018080602001828103825260218152602001806148ab6021913960400191505060405180910390fd5b60405180606001604052806003906020820280368337509192915050565b60405180604001604052806147f5614802565b8152602001600081525090565b60405180604001604052806000815260200160008152509056fe7468652042534352656c61796572466565206d6f642074656e20646563696d616c73206d757374206265207a65726f7468652042534352656c61796572466565206d757374206265206c657373207468616e2072656c61796572466565746865206d696e44656c65676174696f6e206d7573742062652067726561746572207468616e2072656c61796572466565536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f777468652072656c61796572466565206d6f642074656e20646563696d616c73206d757374206265207a65726f746865206d6573736167652073656e646572206d75737420626520676f7665726e616e636520636f6e74726163747468652072656c61796572466565206d757374206265206c657373207468616e206d696e44656c65676174696f6e7468652072656c61796572466565206d757374206265206d6f7265207468616e2042534352656c61796572466565696e73756666696369656e742062616c616e636520616674657220756e64656c6567617465746865206d6573736167652073656e646572206d7573742062652063726f737320636861696e20636f6e74726163747468652042534352656c61796572466565206d757374206e6f74206265207a65726fa164736f6c6343000604000a", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/9d09d0a3d6332460a810188261ec8195e05aa218", + Code: "6080604052600436106103d25760003560e01c8063718a8aa8116101fd578063b88a802f11610118578063dc927faf116100ab578063f45fd80b1161007a578063f45fd80b14610cdb578063f9a2bbc714610d20578063fa03f79714610d35578063fc3e5908146106d3578063fd6a687914610d4a576103d9565b8063dc927faf14610c87578063df8079e914610c9c578063edc1a5b014610cb1578063f1fad10414610cc6576103d9565b8063c81b1662116100e7578063c81b166214610bb2578063c8509d8114610bc7578063d61b9b9314610c4c578063d7ecfcb614610890576103d9565b8063b88a802f14610b38578063baaafd3b14610b4d578063bf8546ca14610b62578063c2117d8214610b9d576103d9565b80639dc0926211610190578063aad560631161015f578063aad5606314610a2e578063ab51bb9614610a43578063ac43175114610a58578063b14315df14610b23576103d9565b80639dc09262146109c6578063a1a11bf5146109db578063a78abc16146109f0578063aa82dce114610a19576103d9565b80637e434d54116101cc5780637e434d5414610917578063831d65d11461092c57806392b888a41461066a57806396713da9146109b1576103d9565b8063718a8aa8146108a557806375aca593146108ba57806375d47a0a146108ed5780637942fd0514610902576103d9565b8063413d9c3a116102ed5780635d17c8bd116102805780636bd8f8041161024f5780636bd8f804146108125780636e47b482146108485780636fb7f7eb1461085d57806370fd5bad14610890576103d9565b80635d17c8bd146107be5780635d499b1b146107d357806362b171d2146107e857806369b635b6146107fd576103d9565b80634d99dd16116102bc5780634d99dd161461075357806351b4dce31461077f57806351e8067214610794578063552aaf93146107a9576103d9565b8063413d9c3a146106e857806343756e5c146106fd578063493279b1146107125780634bf6c8821461073e576103d9565b8063151817e311610365578063333ad3e711610334578063333ad3e7146106a957806334c43354146106be5780633dffc3871461066a5780633fdfa7e4146106d3576103d9565b8063151817e31461063f57806317c9efb01461066a578063280870281461067f5780632fdeb11114610694576103d9565b80630c795715116103a15780630c795715146104cc5780630e2374a5146104e15780631182b8751461051257806311fe9ec61461060c576103d9565b8063026e402b146103de578063029859921461040c578063047636d1146104335780630bee7a671461049e576103d9565b366103d957005b600080fd5b61040a600480360360408110156103f457600080fd5b506001600160a01b038135169060200135610d5f565b005b34801561041857600080fd5b50610421610d9c565b60408051918252519081900360200190f35b34801561043f57600080fd5b506104666004803603602081101561045657600080fd5b50356001600160a01b0316610da2565b6040518082606080838360005b8381101561048b578181015183820152602001610473565b5050505090500191505060405180910390f35b3480156104aa57600080fd5b506104b3610df6565b6040805163ffffffff9092168252519081900360200190f35b3480156104d857600080fd5b50610421610dfb565b3480156104ed57600080fd5b506104f6610e01565b604080516001600160a01b039092168252519081900360200190f35b34801561051e57600080fd5b506105976004803603604081101561053557600080fd5b60ff8235169190810190604081016020820135600160201b81111561055957600080fd5b82018360208201111561056b57600080fd5b803590602001918460018302840111600160201b8311171561058c57600080fd5b509092509050610e07565b6040805160208082528351818301528351919283929083019185019080838360005b838110156105d15781810151838201526020016105b9565b50505050905090810190601f1680156105fe5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561061857600080fd5b506104216004803603602081101561062f57600080fd5b50356001600160a01b0316610fc3565b34801561064b57600080fd5b50610654610fde565b6040805160ff9092168252519081900360200190f35b34801561067657600080fd5b50610654610fe3565b34801561068b57600080fd5b506104f6610fe8565b3480156106a057600080fd5b50610421610fee565b3480156106b557600080fd5b506104b3610ff4565b3480156106ca57600080fd5b50610421610ff9565b3480156106df57600080fd5b50610654611004565b3480156106f457600080fd5b50610421611009565b34801561070957600080fd5b506104f6611010565b34801561071e57600080fd5b50610727611016565b6040805161ffff9092168252519081900360200190f35b34801561074a57600080fd5b5061065461101c565b61040a6004803603604081101561076957600080fd5b506001600160a01b038135169060200135611021565b34801561078b57600080fd5b506104f661164e565b3480156107a057600080fd5b506104f6611654565b3480156107b557600080fd5b5061065461165a565b3480156107ca57600080fd5b5061042161165f565b3480156107df57600080fd5b50610421611665565b3480156107f457600080fd5b5061042161166e565b34801561080957600080fd5b5061042161180e565b61040a6004803603606081101561082857600080fd5b506001600160a01b03813581169160208101359091169060400135610d5f565b34801561085457600080fd5b506104f6611814565b34801561086957600080fd5b506104216004803603602081101561088057600080fd5b50356001600160a01b031661181a565b34801561089c57600080fd5b50610654611835565b3480156108b157600080fd5b5061065461183a565b3480156108c657600080fd5b50610421600480360360208110156108dd57600080fd5b50356001600160a01b031661183f565b3480156108f957600080fd5b506104f661185a565b34801561090e57600080fd5b50610654611860565b34801561092357600080fd5b506104f6611865565b34801561093857600080fd5b5061040a6004803603604081101561094f57600080fd5b60ff8235169190810190604081016020820135600160201b81111561097357600080fd5b82018360208201111561098557600080fd5b803590602001918460018302840111600160201b831117156109a657600080fd5b50909250905061186b565b3480156109bd57600080fd5b50610654611b33565b3480156109d257600080fd5b506104f6611b38565b3480156109e757600080fd5b506104f6611b3e565b3480156109fc57600080fd5b50610a05611b44565b604080519115158252519081900360200190f35b348015610a2557600080fd5b506104f6611b4d565b348015610a3a57600080fd5b506104f6611b53565b348015610a4f57600080fd5b506104b361165a565b348015610a6457600080fd5b5061040a60048036036040811015610a7b57600080fd5b810190602081018135600160201b811115610a9557600080fd5b820183602082011115610aa757600080fd5b803590602001918460018302840111600160201b83111715610ac857600080fd5b919390929091602081019035600160201b811115610ae557600080fd5b820183602082011115610af757600080fd5b803590602001918460018302840111600160201b83111715610b1857600080fd5b509092509050611b59565b348015610b2f57600080fd5b506106546122eb565b348015610b4457600080fd5b506104216122f0565b348015610b5957600080fd5b5061042161248d565b348015610b6e57600080fd5b5061042160048036036040811015610b8557600080fd5b506001600160a01b0381358116916020013516612498565b348015610ba957600080fd5b506104216124c5565b348015610bbe57600080fd5b506104f66124cb565b348015610bd357600080fd5b5061040a60048036036040811015610bea57600080fd5b60ff8235169190810190604081016020820135600160201b811115610c0e57600080fd5b820183602082011115610c2057600080fd5b803590602001918460018302840111600160201b83111715610c4157600080fd5b5090925090506124d1565b348015610c5857600080fd5b5061042160048036036040811015610c6f57600080fd5b506001600160a01b03813581169160200135166126f4565b348015610c9357600080fd5b506104f661271f565b348015610ca857600080fd5b506104f6612725565b348015610cbd57600080fd5b5061042161272b565b348015610cd257600080fd5b50610654612738565b348015610ce757600080fd5b5061042160048036036060811015610cfe57600080fd5b506001600160a01b03813581169160208101358216916040909101351661273d565b348015610d2c57600080fd5b506104f6612772565b348015610d4157600080fd5b50610421612778565b348015610d5657600080fd5b506104f661277e565b6040805162461bcd60e51b815260206004820152600d60248201526c1b9bdd081cdd5c1c1bdc9d1959609a1b604482015290519081900360640190fd5b60035481565b610daa614801565b610db2614801565b6001600160a01b0383166000818152600b60209081526040808320548552838352600c82528083205485830152928252600d9052819020549082015290505b919050565b606481565b6108fc81565b61200181565b60603361200014610e495760405162461bcd60e51b815260040180806020018281038252602f8152602001806149e4602f913960400191505060405180910390fd5b60005460ff16610e8c576638d7ea4c6800006001908155662386f26fc1000060025568056bc75e2d631000006003556108fc6011556000805460ff191690911790555b610e9461481f565b610edb610ed685858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061278492505050565b6127a9565b90506000610ef0610eeb836127f3565b612841565b90506000606060ff831660041415610f1557610f0b846128f8565b9092509050610f6c565b60ff831660051415610f2a57610f0b84612ad8565b6040805162461bcd60e51b8152602060048201526012602482015271756e6b6e6f776e206576656e74207479706560701b604482015290519081900360640190fd5b63ffffffff821615610fb8576040805163ffffffff84168152905160ff8516917f391d6e5ea6ab6c49b9a0abb1782cae5def8d711f973b00c729658c0b2a80b31b919081900360200190a25b979650505050505050565b6001600160a01b031660009081526006602052604090205490565b600581565b600181565b61200581565b60015481565b606581565b662386f26fc1000081565b600381565b620a8c0081565b61100181565b6102ca81565b600881565b60105460ff166002141561106d576040805162461bcd60e51b815260206004820152600e60248201526d4e6f2072652d656e7472616e637960901b604482015290519081900360640190fd5b6010805460ff19166002179055806402540be400340615801561109557506402540be4008106155b6110e6576040805162461bcd60e51b815260206004820152601c60248201527f707265636973696f6e206c6f737320696e20636f6e76657273696f6e00000000604482015290519081900360640190fd5b60005460ff16611129576638d7ea4c6800006001908155662386f26fc1000060025568056bc75e2d631000006003556108fc6011556000805460ff191690911790555b600154341015611177576040805162461bcd60e51b81526020600482015260146024820152736e6f7420656e6f7567682072656c61792066656560601b604482015290519081900360640190fd5b600354821015611232573360009081526005602090815260408083206001600160a01b038716845290915290205482146111e9576040805162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a5908185b5bdd5b9d60921b604482015290519081900360640190fd5b6002548211611232576040805162461bcd60e51b815260206004820152601060248201526f6e6f7420656e6f7567682066756e647360801b604482015290519081900360640190fd5b3360009081526007602090815260408083206001600160a01b03871684529091529020544210156112aa576040805162461bcd60e51b815260206004820152601a60248201527f70656e64696e6720756e64656c65676174696f6e206578697374000000000000604482015290519081900360640190fd5b604080518082018252601081526f6e6f7420656e6f7567682066756e647360801b602080830191909152336000908152600582528381206001600160a01b03881682529091529182205461130591859063ffffffff612df816565b9050801561134d57600254811161134d5760405162461bcd60e51b81526004018080602001828103825260258152602001806149bf6025913960400191505060405180910390fd5b6000611364846402540be40063ffffffff612e8f16565b600254909150349060009061138090839063ffffffff612ed816565b6040805160038082526080820190925291925060609190816020015b606081526020019060019003908161139c5790505090506113bc33612f1a565b816000815181106113c957fe5b60200260200101819052506113e6886001600160a01b0316612f1a565b816001815181106113f357fe5b602002602001018190525061140784612f3d565b8160028151811061141457fe5b60200260200101819052506060611434600261142f84612f50565b612fda565b8051602080830191909120600f80546000908152600a845260408082209390935581546001908101909255338152600c909352912080549091019055905061148542620a8c0063ffffffff61306016565b3360009081526007602090815260408083206001600160a01b038e16845290915290205561200063f7a251d76010836114c9876402540be40063ffffffff612e8f16565b6040518463ffffffff1660e01b8152600401808460ff1660ff16815260200180602001838152602001828103825284818151815260200191508051906020019080838360005b8381101561152757818101518382015260200161150f565b50505050905090810190601f1680156115545780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b15801561157557600080fd5b505af1158015611589573d6000803e3d6000fd5b5050604051611004925085156108fc02915085906000818181858888f193505050501580156115bc573d6000803e3d6000fd5b506002546040516110029180156108fc02916000818181858888f193505050501580156115ed573d6000803e3d6000fd5b50604080518981526020810185905281516001600160a01b038c169233927fdf0b6ac27f3f3bb31cee3dab0f4fe40cc19c6a3f8daaec52e06b261e58a12519929081900390910190a350506010805460ff1916600117905550505050505050565b61200681565b61200081565b600081565b60025481565b6402540be40081565b60105460009060ff16600214156116bd576040805162461bcd60e51b815260206004820152600e60248201526d4e6f2072652d656e7472616e637960901b604482015290519081900360640190fd5b506010805460ff191660021790553360009081526008602052604090205480611724576040805162461bcd60e51b81526020600482015260146024820152736e6f20756e64656c6567617465642066756e647360601b604482015290519081900360640190fd5b336000818152600860205260408082208290556011549051919291849084818181858888f193505050503d806000811461177a576040519150601f19603f3d011682016040523d82523d6000602084013e61177f565b606091505b50509050806117c7576040805162461bcd60e51b815260206004820152600f60248201526e1d1c985b9cd9995c8819985a5b1959608a1b604482015290519081900360640190fd5b60408051838152905133917fc712d133b8d448221aaed2198ed1f0db6dfc860fb01bc3a630916fe6cbef946f919081900360200190a2506010805460ff1916600117905590565b60035490565b61100581565b6001600160a01b031660009081526004602052604090205490565b600281565b601081565b6001600160a01b031660009081526008602052604090205490565b61100881565b600b81565b61200381565b33612000146118ab5760405162461bcd60e51b815260040180806020018281038252602f8152602001806149e4602f913960400191505060405180910390fd5b60005460ff166118ee576638d7ea4c6800006001908155662386f26fc1000060025568056bc75e2d631000006003556108fc6011556000805460ff191690911790555b6118f661481f565b611938610ed684848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061278492505050565b905060008060606000805b61194c866130ba565b156119b7578061196957611962610eeb876127f3565b94506119af565b80600114156119855761197e610eeb876127f3565b93506119af565b80600214156119aa5761199f61199a876127f3565b6130db565b9250600191506119af565b6119b7565b600101611943565b816119fd576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b611a068361314b565b611a49576040805162461bcd60e51b815260206004820152600f60248201526e0eee4dedcce40e0c2c6d640d0c2e6d608b1b604482015290519081900360640190fd5b611a55610ed684612784565b95506000611a65610eeb886127f3565b9050611a6f61481f565b611a78886130ba565b15611a9b57611a94610ed6611a8f61199a8b6127f3565b612784565b9050611adc565b6040805162461bcd60e51b8152602060048201526011602482015270656d7074792061636b207061636b61676560781b604482015290519081900360640190fd5b60ff821660011415611af857611af381888861319f565b611b26565b60ff821660021415611b0f57611af3818888613556565b60ff821660031415610f2a57611af3818888613823565b5050505050505050505050565b600981565b61100781565b61100681565b60005460ff1681565b61200281565b61300081565b60005460ff16611bb0576040805162461bcd60e51b815260206004820152601960248201527f74686520636f6e7472616374206e6f7420696e69742079657400000000000000604482015290519081900360640190fd5b3361100714611bf05760405162461bcd60e51b815260040180806020018281038252602e815260200180614935602e913960400191505060405180910390fd5b611c5184848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600a81526972656c6179657246656560b01b60208201529150613b889050565b15611db75760208114611cab576040805162461bcd60e51b815260206004820152601d60248201527f6c656e677468206f662072656c61796572466565206d69736d61746368000000604482015290519081900360640190fd5b604080516020601f8401819004810282018101909252828152600091611ce991858580838501838280828437600092019190915250613c6f92505050565b90506003548110611d2b5760405162461bcd60e51b815260040180806020018281038252602e815260200180614963602e913960400191505060405180910390fd5b6002548111611d6b5760405162461bcd60e51b815260040180806020018281038252602e815260200180614991602e913960400191505060405180910390fd5b6402540be400810615611daf5760405162461bcd60e51b815260040180806020018281038252602c815260200180614909602c913960400191505060405180910390fd5b600155612259565b611e1b84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600d81526c62534352656c6179657246656560981b60208201529150613b889050565b15611f7d5760208114611e75576040805162461bcd60e51b815260206004820181905260248201527f6c656e677468206f662062534352656c61796572466565206d69736d61746368604482015290519081900360640190fd5b604080516020601f8401819004810282018101909252828152600091611eb391858580838501838280828437600092019190915250613c6f92505050565b905080611ef15760405162461bcd60e51b8152600401808060200182810382526022815260200180614a136022913960400191505060405180910390fd5b6001548110611f315760405162461bcd60e51b815260040180806020018281038252602e815260200180614889602e913960400191505060405180910390fd5b6402540be400810615611f755760405162461bcd60e51b815260040180806020018281038252602f81526020018061485a602f913960400191505060405180910390fd5b600255612259565b611fe184848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600d81526c36b4b72232b632b3b0ba34b7b760991b60208201529150613b889050565b156120c3576020811461203b576040805162461bcd60e51b815260206004820181905260248201527f6c656e677468206f66206d696e44656c65676174696f6e206d69736d61746368604482015290519081900360640190fd5b604080516020601f840181900481028201810190925282815260009161207991858580838501838280828437600092019190915250613c6f92505050565b905060015481116120bb5760405162461bcd60e51b81526004018080602001828103825260318152602001806148b76031913960400191505060405180910390fd5b600355612259565b61212584848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600b81526a7472616e7366657247617360a81b60208201529150613b889050565b1561221c576020811461217f576040805162461bcd60e51b815260206004820152601e60248201527f6c656e677468206f66207472616e73666572476173206d69736d617463680000604482015290519081900360640190fd5b604080516020601f84018190048102820181019092528281526000916121bd91858580838501838280828437600092019190915250613c6f92505050565b905060008111612214576040805162461bcd60e51b815260206004820152601e60248201527f746865207472616e736665724761732063616e6e6f74206265207a65726f0000604482015290519081900360640190fd5b601155612259565b6040805162461bcd60e51b815260206004820152600d60248201526c756e6b6e6f776e20706172616d60981b604482015290519081900360640190fd5b7f6cdb0ac70ab7f2e2d035cca5be60d89906f2dede7648ddbd7402189c1eeed17a848484846040518080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600083820152604051601f909101601f19169092018290039850909650505050505050a150505050565b600481565b60105460009060ff166002141561233f576040805162461bcd60e51b815260206004820152600e60248201526d4e6f2072652d656e7472616e637960901b604482015290519081900360640190fd5b506010805460ff1916600217905533600090815260066020526040902054806123a3576040805162461bcd60e51b81526020600482015260116024820152701b9bc81c195b991a5b99c81c995dd85c99607a1b604482015290519081900360640190fd5b336000818152600660205260408082208290556011549051919291849084818181858888f193505050503d80600081146123f9576040519150601f19603f3d011682016040523d82523d6000602084013e6123fe565b606091505b5050905080612446576040805162461bcd60e51b815260206004820152600f60248201526e1d1c985b9cd9995c8819985a5b1959608a1b604482015290519081900360640190fd5b60408051838152905133917f83b78188b13346b2ffb484da70d42ee27de7fbf9f2bd8045269e10ed643ccd76919081900360200190a2506010805460ff1916600117905590565b6638d7ea4c68000081565b6001600160a01b038083166000908152600760209081526040808320938516835292905220545b92915050565b60015490565b61100281565b33612000146125115760405162461bcd60e51b815260040180806020018281038252602f8152602001806149e4602f913960400191505060405180910390fd5b60005460ff16612554576638d7ea4c6800006001908155662386f26fc1000060025568056bc75e2d631000006003556108fc6011556000805460ff191690911790555b61259382828080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061314b92505050565b6125d6576040805162461bcd60e51b815260206004820152600f60248201526e0eee4dedcce40e0c2c6d640d0c2e6d608b1b604482015290519081900360640190fd5b6125de61481f565b612620610ed684848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061278492505050565b90506000612630610eeb836127f3565b905061263a61481f565b612643836130ba565b156126615761265a610ed6611a8f61199a866127f3565b90506126a7565b6040805162461bcd60e51b8152602060048201526016602482015275656d707479206661696c2061636b207061636b61676560501b604482015290519081900360640190fd5b60ff8216600114156126c1576126bc81613c74565b6126eb565b60ff8216600214156126d6576126bc81613e8e565b60ff821660031415610f2a576126bc81613fb8565b5050505b505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b61100381565b61200481565b68056bc75e2d6310000081565b601181565b6001600160a01b0392831660009081526009602090815260408083209486168352938152838220929094168152925290205490565b61100081565b60115481565b61100481565b61278c61483f565b506040805180820190915281518152602082810190820152919050565b6127b161481f565b6127ba8261411d565b6127c357600080fd5b60006127d28360200151614157565b60208085015160408051808201909152868152920190820152915050919050565b6127fb61483f565b612804826130ba565b61280d57600080fd5b6020820151600061281d826141ba565b80830160209586015260408051808201909152908152938401919091525090919050565b80516000901580159061285657508151602110155b61285f57600080fd5b600061286e8360200151614157565b905080836000015110156128c9576040805162461bcd60e51b815260206004820152601a60248201527f6c656e677468206973206c657373207468616e206f6666736574000000000000604482015290519081900360640190fd5b8251602080850151830180519284900392918310156128ef57826020036101000a820491505b50949350505050565b600060606000806000805b61290c876130ba565b1561295e578261292e57612927612922886127f3565b6142ed565b9150612953565b826001141561294e57612943610eeb886127f3565b905060019350612953565b61295e565b826001019250612903565b836129a4576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b60006110046001600160a01b031663727be1f8836040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b1580156129ee57600080fd5b505af1158015612a02573d6000803e3d6000fd5b505050506040513d6020811015612a1857600080fd5b5051905080612a3d57612a2f600484846065614307565b965096505050505050612ad3565b6001600160a01b038316600090815260066020526040902054612a66908363ffffffff61306016565b6001600160a01b038416600081815260066020908152604091829020939093558051858152905191927f7cc266c7b444f808013fa187f7b904d470a051a6564e78f482aa496581ba4bf892918290030190a260408051600080825260208201909252909750955050505050505b915091565b600060606000806000806000805b612aef896130ba565b15612b795784612b0c57612b056129228a6127f3565b9350612b6e565b8460011415612b2857612b216129228a6127f3565b9250612b6e565b8460021415612b4857612b3d610eeb8a6127f3565b915060019550612b6e565b8460031415612b6957612b62612b5d8a6127f3565b614403565b9050612b6e565b612b79565b846001019450612ae6565b85612bbf576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b60006110046001600160a01b031663727be1f8846040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b158015612c0957600080fd5b505af1158015612c1d573d6000803e3d6000fd5b505050506040513d6020811015612c3357600080fd5b5051905080612c5a57612c4a600586856065614307565b9850985050505050505050612ad3565b6001600160a01b038086166000818152600760209081526040808320948916835293815283822082905591815260089091522054612c9e908463ffffffff61306016565b6001600160a01b0386166000908152600860205260409020558115612d8c576001600160a01b038516600090815260046020526040902054612ce6908463ffffffff612ed816565b6001600160a01b03808716600090815260046020908152604080832094909455600581528382209288168252919091522054612d28908463ffffffff612ed816565b6001600160a01b038087166000818152600560209081526040808320948a16808452948252918290209490945580518781529051929391927fd6f878a5bcbbe79a64e6418bb0d56aaa20b9a60587d45749819df88dfc7c3c44929181900390910190a35b836001600160a01b0316856001600160a01b03167f35a799836f74fac7eccf5c73902823b970543d2274d3b93d8da3d37a255772a2856040518082815260200191505060405180910390a360408051600080825260208201909252909950975050505050505050915091565b60008184841115612e875760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612e4c578181015183820152602001612e34565b50505050905090810190601f168015612e795780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000612ed183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614447565b9392505050565b6000612ed183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612df8565b60408051600560a21b8318601482015260348101909152606090612ed1816144ac565b60606124bf612f4b83614502565b6144ac565b6060815160001415612f715750604080516000815260208101909152610df1565b606082600081518110612f8057fe5b602002602001015190506000600190505b8351811015612fc157612fb782858381518110612faa57fe5b60200260200101516145e8565b9150600101612f91565b50612ed1612fd4825160c060ff16614665565b826145e8565b6040805160028082526060828101909352829190816020015b6060815260200190600190039081612ff35790505090506130168460ff16612f3d565b8160008151811061302357fe5b6020026020010181905250613037836144ac565b8160018151811061304457fe5b602002602001018190525061305881612f50565b949350505050565b600082820183811015612ed1576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60006130c461483f565b505080518051602091820151919092015191011190565b80516060906130e957600080fd5b60006130f88360200151614157565b83516040805191839003808352601f19601f820116830160200190915291925060609082801561312f576020820181803683370190505b50905060008160200190506128ef84876020015101828561475d565b8051602080830191909120600e546000908152600a909252604082205480821461317a57600092505050610df1565b5050600e80546000908152600a60205260408120558054600190810190915592915050565b60008060008060005b6131b1886130ba565b1561321a57836131ce576131c7612922896127f3565b925061320f565b83600114156131ea576131e3612922896127f3565b915061320f565b836002141561320a576131ff610eeb896127f3565b90506001945061320f565b61321a565b8360010193506131a8565b84613260576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b6000613277826402540be40063ffffffff6147a816565b6001600160a01b0385166000908152600b602052604090208054600019019055905060ff8816600114156133bd5760ff8716156132ea576040805162461bcd60e51b815260206004820152600c60248201526b77726f6e672073746174757360a01b604482015290519081900360640190fd5b6001600160a01b038416600090815260046020526040902054613313908263ffffffff61306016565b6001600160a01b03808616600090815260046020908152604080832094909455600581528382209287168252919091522054613355908263ffffffff61306016565b6001600160a01b038086166000818152600560209081526040808320948916808452948252918290209490945580518581529051929391927f9a57c81564ab02642f34fd87e41baa9b074c18342cec3b7268b62bf752018fd1929181900390910190a361354b565b60ff881661350f576001600160a01b0384166000908152600860205260409020546133ee908263ffffffff61306016565b6001600160a01b0385166000908152600860209081526040808320939093558251630e4f7c3f60e31b81526004810185905292516110049363727be1f89360248083019493928390030190829087803b15801561344a57600080fd5b505af115801561345e573d6000803e3d6000fd5b505050506040513d602081101561347457600080fd5b50516134bd576040805162461bcd60e51b81526020600482015260136024820152721dda5d1a191c985dc8189b988819985a5b1959606a1b604482015290519081900360640190fd5b6040805182815260ff8916602082015281516001600160a01b0380871693908816927fcbd481ae600289fad8c0484d07ce0ffe4f010d7c844ecfdeaf2a13fead52886e929081900390910190a361354b565b6040805162461bcd60e51b815260206004820152600c60248201526b77726f6e672073746174757360a01b604482015290519081900360640190fd5b505050505050505050565b60008060008060005b613568886130ba565b156135d157836135855761357e612922896127f3565b92506135c6565b83600114156135a15761359a612922896127f3565b91506135c6565b83600214156135c1576135b6610eeb896127f3565b9050600194506135c6565b6135d1565b83600101935061355f565b84613617576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b600061362e826402540be40063ffffffff6147a816565b6001600160a01b0385166000908152600c602052604090208054600019019055905060ff8816600114156137ad5760ff8716156136a1576040805162461bcd60e51b815260206004820152600c60248201526b77726f6e672073746174757360a01b604482015290519081900360640190fd5b6001600160a01b0384166000908152600460205260409020546136ca908263ffffffff612ed816565b6001600160a01b0380861660009081526004602090815260408083209490945560058152838220928716825291909152205461370c908263ffffffff612ed816565b6001600160a01b0380861660009081526005602090815260408083209388168352929052205561374542620a8c0063ffffffff61306016565b6001600160a01b038086166000818152600760209081526040808320948916808452948252918290209490945580518581529051929391927fd6f878a5bcbbe79a64e6418bb0d56aaa20b9a60587d45749819df88dfc7c3c44929181900390910190a361354b565b60ff881661350f576001600160a01b03808516600081815260076020908152604080832094881680845294825280832092909255815185815260ff8c169181019190915281517f4417d10c1e33efa83a770b8d4f47176e78c08c1298d534901ad3b16bb585fa2e929181900390910190a361354b565b6000806000806000805b613836896130ba565b156138bb57846138535761384c6129228a6127f3565b93506138b0565b846001141561386f576138686129228a6127f3565b92506138b0565b846002141561388b576138846129228a6127f3565b91506138b0565b84600314156138ab576138a0610eeb8a6127f3565b9050600195506138b0565b6138bb565b84600101945061382d565b85613901576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b6000613918826402540be40063ffffffff6147a816565b6001600160a01b0386166000908152600d602052604090208054600019019055905060ff891660011415613aeb5760ff88161561398b576040805162461bcd60e51b815260206004820152600c60248201526b77726f6e672073746174757360a01b604482015290519081900360640190fd5b6001600160a01b038086166000908152600560209081526040808320938816835292905220546139c1908263ffffffff612ed816565b6001600160a01b038681166000908152600560209081526040808320898516845290915280822093909355908516815220546139fd9082613060565b6001600160a01b03808716600090815260056020908152604080832093881683529290522055613a3642620a8c0063ffffffff61306016565b6001600160a01b0380871660009081526009602090815260408083208985168452825280832093881683529290522055613a7942620a8c0063ffffffff61306016565b6001600160a01b038087166000818152600960209081526040808320898616808552908352818420958b1680855295835292819020959095558451868152945191947f78bffae3f8c6691ac7fc1a3bff800cb2d612f5ad9ae5b0444cfe2eb15c189e18929081900390910190a4613b7c565b60ff891661350f576001600160a01b038581166000818152600960209081526040808320898616808552818452828520968a16808652968452828520859055908352818420818552835281842093909355805186815260ff8e169281019290925280519293927fb93bee5c59f85ede6b074a99f4ffcd3e3fc0d5c3d8156de331de89a49e0ce77c9281900390910190a45b50505050505050505050565b6000816040516020018082805190602001908083835b60208310613bbd5780518252601f199092019160209182019101613b9e565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405280519060200120836040516020018082805190602001908083835b60208310613c2b5780518252601f199092019160209182019101613c0c565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040528051906020012014905092915050565b015190565b60008060008060005b613c86866130ba565b15613cef5783613ca357613c9c612922876127f3565b9250613ce4565b8360011415613cbf57613cb8612922876127f3565b9150613ce4565b8360021415613cdf57613cd4610eeb876127f3565b905060019450613ce4565b613cef565b836001019350613c7d565b84613d35576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b6000613d4c826402540be40063ffffffff6147a816565b6001600160a01b0385166000908152600b6020908152604080832080546000190190556008909152902054909150613d8a908263ffffffff61306016565b6001600160a01b0385166000908152600860209081526040808320939093558251630e4f7c3f60e31b81526004810185905292516110049363727be1f89360248083019493928390030190829087803b158015613de657600080fd5b505af1158015613dfa573d6000803e3d6000fd5b505050506040513d6020811015613e1057600080fd5b5051613e59576040805162461bcd60e51b81526020600482015260136024820152721dda5d1a191c985dc8189b988819985a5b1959606a1b604482015290519081900360640190fd5b6040516001907ff83de021914a4585482db5ca47d520a5657165b443fa2c7ef8ed4635f054da9b90600090a250505050505050565b60008060008060005b613ea0866130ba565b15613f095783613ebd57613eb6612922876127f3565b9250613efe565b8360011415613ed957613ed2612922876127f3565b9150613efe565b8360021415613ef957613eee610eeb876127f3565b905060019450613efe565b613f09565b836001019350613e97565b84613f4f576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b6001600160a01b038084166000908152600c60209081526040808320805460001901905560078252808320938616835292905281812081905590516002917ff83de021914a4585482db5ca47d520a5657165b443fa2c7ef8ed4635f054da9b91a2505050505050565b6000806000806000805b613fcb876130ba565b156140505784613fe857613fe1612922886127f3565b9350614045565b846001141561400457613ffd612922886127f3565b9250614045565b846002141561402057614019612922886127f3565b9150614045565b846003141561404057614035610eeb886127f3565b905060019550614045565b614050565b846001019450613fc2565b85614096576040805162461bcd60e51b81526020600482015260116024820152701c9b1c08191958dbd9194819985a5b1959607a1b604482015290519081900360640190fd5b6001600160a01b038481166000908152600d602090815260408083208054600019019055600982528083208785168085528184528285209588168552948352818420849055825280832093835292905281812081905590516003917ff83de021914a4585482db5ca47d520a5657165b443fa2c7ef8ed4635f054da9b91a250505050505050565b805160009061412e57506000610df1565b6020820151805160001a9060c082101561414d57600092505050610df1565b5060019392505050565b8051600090811a6080811015614171576000915050610df1565b60b881108061418c575060c0811080159061418c575060f881105b1561419b576001915050610df1565b60c08110156141af5760b519019050610df1565b60f519019050610df1565b80516000908190811a60808110156141d557600191506142e6565b60b88110156141ea57607e19810191506142e6565b60c081101561426457600060b78203600186019550806020036101000a86510491506001810182019350508083101561425e576040805162461bcd60e51b81526020600482015260116024820152706164646974696f6e206f766572666c6f7760781b604482015290519081900360640190fd5b506142e6565b60f88110156142795760be19810191506142e6565b600060f78203600186019550806020036101000a8651049150600181018201935050808310156142e4576040805162461bcd60e51b81526020600482015260116024820152706164646974696f6e206f766572666c6f7760781b604482015290519081900360640190fd5b505b5092915050565b80516000906015146142fe57600080fd5b6124bf82612841565b60006060614320846402540be40063ffffffff612e8f16565b60408051600480825260a0820190925291955060609190816020015b606081526020019060019003908161433c57905050905061435f8760ff16612f3d565b8160008151811061436c57fe5b6020026020010181905250614389866001600160a01b0316612f1a565b8160018151811061439657fe5b60200260200101819052506143aa85612f3d565b816002815181106143b757fe5b60200260200101819052506143d18463ffffffff16612f3d565b816003815181106143de57fe5b602002602001018190525060606143f482612f50565b94989497509395505050505050565b805160009060011461441457600080fd5b6020820151805160001a9081158061442c5750608082145b1561443c57600092505050610df1565b600192505050610df1565b600081836144965760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315612e4c578181015183820152602001612e34565b5060008385816144a257fe5b0495945050505050565b6060815160011480156144de5750607f60f81b826000815181106144cc57fe5b01602001516001600160f81b03191611155b156144ea575080610df1565b6124bf6144fc8351608060ff16614665565b836145e8565b604080516020808252818301909252606091829190602082018180368337505050602081018490529050600067ffffffffffffffff1984166145465750601861456a565b6fffffffffffffffffffffffffffffffff1984166145665750601061456a565b5060005b60208110156145a05781818151811061457f57fe5b01602001516001600160f81b03191615614598576145a0565b60010161456a565b60008160200390506060816040519080825280601f01601f1916602001820160405280156145d5576020820181803683370190505b5080830196909652508452509192915050565b6060806040519050835180825260208201818101602087015b81831015614619578051835260209283019201614601565b50855184518101855292509050808201602086015b8183101561464657805183526020928301920161462e565b508651929092011591909101601f01601f191660405250905092915050565b60606801000000000000000083106146b5576040805162461bcd60e51b815260206004820152600e60248201526d696e70757420746f6f206c6f6e6760901b604482015290519081900360640190fd5b6040805160018082528183019092526060916020820181803683370190505090506037841161470f5782840160f81b816000815181106146f157fe5b60200101906001600160f81b031916908160001a90535090506124bf565b606061471a85614502565b90508381510160370160f81b8260008151811061473357fe5b60200101906001600160f81b031916908160001a90535061475482826145e8565b95945050505050565b80614767576126ef565b5b60208110614787578251825260209283019290910190601f1901614768565b915181516020939093036101000a6000190180199091169216919091179052565b6000826147b7575060006124bf565b828202828482816147c457fe5b0414612ed15760405162461bcd60e51b81526004018080602001828103825260218152602001806148e86021913960400191505060405180910390fd5b60405180606001604052806003906020820280368337509192915050565b604051806040016040528061483261483f565b8152602001600081525090565b60405180604001604052806000815260200160008152509056fe7468652042534352656c61796572466565206d6f642074656e20646563696d616c73206d757374206265207a65726f7468652042534352656c61796572466565206d757374206265206c657373207468616e2072656c61796572466565746865206d696e44656c65676174696f6e206d7573742062652067726561746572207468616e2072656c61796572466565536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f777468652072656c61796572466565206d6f642074656e20646563696d616c73206d757374206265207a65726f746865206d6573736167652073656e646572206d75737420626520676f7665726e616e636520636f6e74726163747468652072656c61796572466565206d757374206265206c657373207468616e206d696e44656c65676174696f6e7468652072656c61796572466565206d757374206265206d6f7265207468616e2042534352656c61796572466565696e73756666696369656e742062616c616e636520616674657220756e64656c6567617465746865206d6573736167652073656e646572206d7573742062652063726f737320636861696e20636f6e74726163747468652042534352656c61796572466565206d757374206e6f74206265207a65726fa164736f6c6343000604000a", }, { ContractAddr: common.HexToAddress(StakeHubContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/1abdfbf3aeb86909c2220b79bf92b87ddff64b54", - Code: "608060405260043610620003c35760003560e01c80638a4d3fa811620001f7578063d115a2061162000117578063e992aaf511620000ad578063f80a34021162000078578063f80a34021462000b87578063fb50b31f1462000bac578063fc0c5ff11462000bd1578063ff69ab611462000be957600080fd5b8063e992aaf51462000b04578063efdbf0e11462000b1c578063f1f74d841462000b58578063f1fad1041462000b7057600080fd5b8063d8ca511f11620000ee578063d8ca511f1462000a9a578063daacdb661462000ab2578063de88700b1462000aca578063e8f67c3b1462000aec57600080fd5b8063d115a2061462000a38578063d6ca429d1462000a50578063d7c2dfc81462000a7557600080fd5b8063baa7199e116200018d578063c38fbec81162000164578063c38fbec814620009c2578063c473318f14620009e7578063c8509d8114620007e0578063cbb04d9d14620009ff57600080fd5b8063baa7199e146200094f578063bdceadf31462000974578063bff02e20146200098c57600080fd5b8063a43569b311620001ce578063a43569b314620008b1578063aad3ec9614620008e5578063ac431751146200090a578063b187bd26146200092f57600080fd5b80638a4d3fa814620008575780638cd22b221462000875578063982ef0a7146200089a57600080fd5b80634d99dd1611620002e35780636ec01b2711620002795780638129fc1c11620002505780638129fc1c14620007c8578063831d65d114620007e05780638456cb59146200080557806386d54506146200081d57600080fd5b80636ec01b27146200073357806375cc7d89146200078b57806376e7d6d614620007b057600080fd5b80635e7cc1c911620002ba5780635e7cc1c9146200068f57806363a036b514620006b457806364028fbd14620006eb578063663706d3146200070257600080fd5b80634d99dd16146200062d5780634e6fd6c4146200065257806359491871146200066a57600080fd5b806338409988116200035957806345211bfd116200033057806345211bfd14620005745780634838d16514620005995780634a49ac4c14620005de5780634bf6c882146200060357600080fd5b8063384099881462000512578063417c73a7146200052a578063449ecfe6146200054f57600080fd5b80630e9fbf51116200039a5780630e9fbf5114620004445780631182b875146200046957806317b4f353146200049d5780631fa8882b14620004fb57600080fd5b8063046f7da214620003ea5780630661806e1462000402578063092193ab146200042d57600080fd5b36620003e5576000546301000000900460ff16600114620003e357600080fd5b005b600080fd5b348015620003f757600080fd5b50620003e362000c01565b3480156200040f57600080fd5b506200041a60025481565b6040519081526020015b60405180910390f35b620003e36200043e36600462008465565b62000c62565b3480156200045157600080fd5b50620003e362000463366004620084c9565b620011e8565b3480156200047657600080fd5b506200048e620004883660046200850e565b620014e5565b604051620004249190620085c1565b348015620004aa57600080fd5b50620004e2620004bc366004620086b7565b80516020818301810180516011825292820191909301209152546001600160a01b031681565b6040516001600160a01b03909116815260200162000424565b3480156200050857600080fd5b506200041a603c81565b3480156200051f57600080fd5b506200041a60035481565b3480156200053757600080fd5b50620003e36200054936600462008465565b620017ce565b3480156200055c57600080fd5b50620003e36200056e36600462008465565b6200181e565b3480156200058157600080fd5b50620003e36200059336600462008465565b62001a03565b348015620005a657600080fd5b50620005cd620005b836600462008465565b601a6020526000908152604090205460ff1681565b604051901515815260200162000424565b348015620005eb57600080fd5b50620003e3620005fd36600462008465565b62001bde565b3480156200061057600080fd5b506200061a600881565b60405160ff909116815260200162000424565b3480156200063a57600080fd5b50620003e36200064c36600462008704565b62001c2b565b3480156200065f57600080fd5b50620004e261dead81565b3480156200067757600080fd5b50620003e36200068936600462008742565b62002248565b3480156200069c57600080fd5b50620003e3620006ae366004620087b2565b6200302f565b348015620006c157600080fd5b50620006d9620006d3366004620087d2565b62003235565b6040516200042494939291906200883b565b620003e3620006fc366004620088f7565b620038c7565b3480156200070f57600080fd5b506200041a6200072136600462008465565b60106020526000908152604090205481565b3480156200074057600080fd5b50620007586200075236600462008465565b62003ee2565b6040805182516001600160401b039081168252602080850151821690830152928201519092169082015260600162000424565b3480156200079857600080fd5b50620003e3620007aa36600462008465565b62003f8c565b348015620007bd57600080fd5b506200041a60095481565b348015620007d557600080fd5b50620003e36200415e565b348015620007ed57600080fd5b50620003e3620007ff3660046200850e565b62004474565b3480156200081257600080fd5b50620003e3620044de565b3480156200082a57600080fd5b50620004e26200083c36600462008465565b600f602052600090815260409020546001600160a01b031681565b3480156200086457600080fd5b506200041a670de0b6b3a764000081565b3480156200088257600080fd5b506200041a6200089436600462008704565b62004544565b620003e3620008ab366004620089cf565b620045fd565b348015620008be57600080fd5b50620008d6620008d036600462008465565b62004c99565b60405162000424919062008a0d565b348015620008f257600080fd5b50620003e36200090436600462008704565b62004f86565b3480156200091757600080fd5b50620003e36200092936600462008a93565b62004ff3565b3480156200093c57600080fd5b5060005462010000900460ff16620005cd565b3480156200095c57600080fd5b50620003e36200096e36600462008b4c565b62005e62565b3480156200098157600080fd5b506200041a60085481565b3480156200099957600080fd5b50620009b1620009ab366004620087d2565b6200602f565b604051620004249392919062008ba8565b348015620009cf57600080fd5b50620003e3620009e136600462008465565b6200620b565b348015620009f457600080fd5b506200041a60045481565b34801562000a0c57600080fd5b5062000a2462000a1e36600462008465565b6200649e565b604051620004249695949392919062008be2565b34801562000a4557600080fd5b506200041a61271081565b34801562000a5d57600080fd5b50620003e362000a6f36600462008c4f565b62006911565b34801562000a8257600080fd5b50620003e362000a9436600462008d38565b62006b13565b34801562000aa757600080fd5b506200041a60075481565b34801562000abf57600080fd5b506200041a60155481565b34801562000ad757600080fd5b50601954620004e2906001600160a01b031681565b34801562000af957600080fd5b506200041a60015481565b34801562000b1157600080fd5b506200041a60065481565b34801562000b2957600080fd5b506200041a62000b3b366004620086b7565b805160208183018101805160128252928201919093012091525481565b34801562000b6557600080fd5b506200041a600a5481565b34801562000b7d57600080fd5b506200061a601181565b34801562000b9457600080fd5b506200041a62000ba636600462008704565b62006c09565b34801562000bb957600080fd5b50620003e362000bcb36600462008a93565b62006c7a565b34801562000bde57600080fd5b506200041a60055481565b34801562000bf657600080fd5b506200041a60165481565b6019546001600160a01b0316331462000c2d5760405163f2771a9960e01b815260040160405180910390fd5b6000805462ff0000191681556040517f62451d457bc659158be6e6247f56ec1df424a5c7597f71c20c2bc44e0965c8f99190a1565b336110001462000c8e57604051630f22c43960e41b815261100060048201526024015b60405180910390fd5b6001600160a01b038082166000908152600f60209081526040808320548416808452600d835281842082516101608101845281548716815260018201548716948101949094526002810154909516918301919091526003840154606083015260048401805491949160808401919062000d079062008d9e565b80601f016020809104026020016040519081016040528092919081815260200182805462000d359062008d9e565b801562000d865780601f1062000d5a5761010080835404028352916020019162000d86565b820191906000526020600020905b81548152906001019060200180831162000d6857829003601f168201915b505050505081526020016005820160405180608001604052908160008201805462000db19062008d9e565b80601f016020809104026020016040519081016040528092919081815260200182805462000ddf9062008d9e565b801562000e305780601f1062000e045761010080835404028352916020019162000e30565b820191906000526020600020905b81548152906001019060200180831162000e1257829003601f168201915b5050505050815260200160018201805462000e4b9062008d9e565b80601f016020809104026020016040519081016040528092919081815260200182805462000e799062008d9e565b801562000eca5780601f1062000e9e5761010080835404028352916020019162000eca565b820191906000526020600020905b81548152906001019060200180831162000eac57829003601f168201915b5050505050815260200160028201805462000ee59062008d9e565b80601f016020809104026020016040519081016040528092919081815260200182805462000f139062008d9e565b801562000f645780601f1062000f385761010080835404028352916020019162000f64565b820191906000526020600020905b81548152906001019060200180831162000f4657829003601f168201915b5050505050815260200160038201805462000f7f9062008d9e565b80601f016020809104026020016040519081016040528092919081815260200182805462000fad9062008d9e565b801562000ffe5780601f1062000fd25761010080835404028352916020019162000ffe565b820191906000526020600020905b81548152906001019060200180831162000fe057829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152805161028081019182905260a09092019190600d84019060149082845b8154815260200190600101908083116200108a575050509190925250505060408101519091506001600160a01b03161580620010c757508060e001515b156200113857816001600160a01b03167ffc8bff675087dd2da069cc3fb517b9ed001e19750c0865241a5542dba1ba170d6040516200112b9060208082526011908201527024a72b20a624a22fab20a624a220aa27a960791b604082015260600190565b60405180910390a2505050565b60408181015160c0830151519151632f303ebb60e11b81526001600160401b0390921660048301526001600160a01b031690635e607d769034906024016000604051808303818588803b1580156200118f57600080fd5b505af1158015620011a4573d6000803e3d6000fd5b5050505050816001600160a01b03167fe34918ff1c7084970068b53fd71ad6d8b04e9f15d3886cbf006443e6cdc52ea6346040516200112b91815260200190565b50565b33611001146200121057604051630f22c43960e41b8152611001600482015260240162000c85565b6000601183836040516200122692919062008dd4565b908152604051908190036020019020546001600160a01b031690506200124e600b8262006ec1565b6200126c5760405163fdf4600b60e01b815260040160405180910390fd5b6001600160a01b0381166000908152600d602052604081209062001292603c4262008dfa565b60165460008281526017602052604090205491925011620012c65760405163bd52fcdb60e01b815260040160405180910390fd5b6000818152601760205260408120805460019290620012e790849062008e1d565b909155505060405160129062001301908790879062008dd4565b90815260200160405180910390205460001415801562001350575042603c601287876040516200133392919062008dd4565b9081526020016040518091039020546200134e919062008e1d565b105b156200136f57604051631898eb6b60e01b815260040160405180910390fd5b6000806200137f85600262006ee4565b9150915081620013a257604051631b919bb160e11b815260040160405180910390fd5b600284015460085460405163045bc4d160e41b815260048101919091526000916001600160a01b0316906345bc4d10906024016020604051808303816000875af1158015620013f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200141b919062008e33565b905062001429858362006f6e565b856001600160a01b03167f6e9a2ee7aee95665e3a774a212eb11441b217e3e4656ab9563793094689aabb283836002604051620014699392919062008e63565b60405180910390a26002850154604051633041949b60e01b815261200591633041949b91620014a7916001600160a01b0316908a9060040162008e92565b600060405180830381600087803b158015620014c257600080fd5b505af1158015620014d7573d6000803e3d6000fd5b505050505050505050505050565b606033612000146200150f57604051630f22c43960e41b8152612000600482015260240162000c85565b6000806200155385858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250620070d592505050565b9150915080620015765760405163035ede3560e21b815260040160405180910390fd5b81606001516000036200159c5750506040805160008152602081019091529050620017c7565b6000805463ff00000019166301000000178155606083015160405163e04c83a760e01b81526110049163e04c83a791620015dd919060040190815260200190565b6020604051808303816000875af1158015620015fd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001623919062008eac565b905080620016d55782602001516001600160a01b031683600001516001600160a01b03167fa9084c89a291b43bc984e045671d394974730a159b9a826b577bb148ab504c3a856060015160016040516200167f92919062008ecc565b60405180910390a36000805463ff00000019169055604080516020601f8801819004810282018101909252868152908790879081908401838280828437600092019190915250929650620017c795505050505050565b6000805463ff00000019168155620016ed8462007238565b9050600081600381111562001706576200170662008e4d565b03620017285750506040805160008152602081019091529250620017c7915050565b83602001516001600160a01b031684600001516001600160a01b03167fa9084c89a291b43bc984e045671d394974730a159b9a826b577bb148ab504c3a8660600151846040516200177b92919062008ecc565b60405180910390a386868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929750620017c79650505050505050565b9392505050565b6019546001600160a01b03163314620017fa5760405163f2771a9960e01b815260040160405180910390fd5b6001600160a01b03166000908152601a60205260409020805460ff19166001179055565b60005462010000900460ff1615620018495760405163d7485e8f60e01b815260040160405180910390fd5b336000908152601a602052604090205460ff16156200187b5760405163b1d02c3d60e01b815260040160405180910390fd5b8062001889600b8262006ec1565b620018a75760405163fdf4600b60e01b815260040160405180910390fd5b6001600160a01b0382166000908152600d60205260409020600a81015460ff16620018e557604051634b6b857d60e01b815260040160405180910390fd5b6002805490820154604051630913db4760e01b81526001600160a01b03868116600483015290911690630913db4790602401602060405180830381865afa15801562001935573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200195b919062008e33565b10156200197b576040516317b204bf60e11b815260040160405180910390fd5b4281600b01541115620019a15760405163170cb76760e21b815260040160405180910390fd5b600a8101805460ff191690556015805460019190600090620019c590849062008ef3565b90915550506040516001600160a01b038416907f9390b453426557da5ebdc31f19a37753ca04addf656d32f35232211bb2af3f1990600090a2505050565b60005462010000900460ff161562001a2e5760405163d7485e8f60e01b815260040160405180910390fd5b336000908152601a602052604090205460ff161562001a605760405163b1d02c3d60e01b815260040160405180910390fd5b3362001a6e600b8262006ec1565b62001a8c5760405163fdf4600b60e01b815260040160405180910390fd5b6001600160a01b03821662001ab457604051636520611b60e11b815260040160405180910390fd5b6001600160a01b038281166000908152600f60205260409020541615158062001af557506001600160a01b03821660009081526013602052604090205460ff165b1562001b1457604051631e6f587560e11b815260040160405180910390fd5b336000818152600d60205260409020600c810154429062001b3890603c9062008e1d565b111562001b5857604051631f92cdbd60e11b815260040160405180910390fd5b80546001600160a01b039081166000908152601060209081526040808320429081905585548986166001600160a01b031991821681178855600c880192909255818552600f9093528184208054958816959093168517909255519092917f6e4e747ca35203f16401c69805c7dd52fff67ef60b0ebc5c7fe16890530f223591a350505050565b6019546001600160a01b0316331462001c0a5760405163f2771a9960e01b815260040160405180910390fd5b6001600160a01b03166000908152601a60205260409020805460ff19169055565b60005462010000900460ff161562001c565760405163d7485e8f60e01b815260040160405180910390fd5b336000908152601a602052604090205460ff161562001c885760405163b1d02c3d60e01b815260040160405180910390fd5b8162001c96600b8262006ec1565b62001cb45760405163fdf4600b60e01b815260040160405180910390fd5b8160000362001cd657604051639811e0c760e01b815260040160405180910390fd5b6001600160a01b038084166000908152600d60209081526040808320815161016081018352815486168152600182015486169381019390935260028101549094169082015260038301546060820152600483018054339491608084019162001d3e9062008d9e565b80601f016020809104026020016040519081016040528092919081815260200182805462001d6c9062008d9e565b801562001dbd5780601f1062001d915761010080835404028352916020019162001dbd565b820191906000526020600020905b81548152906001019060200180831162001d9f57829003601f168201915b505050505081526020016005820160405180608001604052908160008201805462001de89062008d9e565b80601f016020809104026020016040519081016040528092919081815260200182805462001e169062008d9e565b801562001e675780601f1062001e3b5761010080835404028352916020019162001e67565b820191906000526020600020905b81548152906001019060200180831162001e4957829003601f168201915b5050505050815260200160018201805462001e829062008d9e565b80601f016020809104026020016040519081016040528092919081815260200182805462001eb09062008d9e565b801562001f015780601f1062001ed55761010080835404028352916020019162001f01565b820191906000526020600020905b81548152906001019060200180831162001ee357829003601f168201915b5050505050815260200160028201805462001f1c9062008d9e565b80601f016020809104026020016040519081016040528092919081815260200182805462001f4a9062008d9e565b801562001f9b5780601f1062001f6f5761010080835404028352916020019162001f9b565b820191906000526020600020905b81548152906001019060200180831162001f7d57829003601f168201915b5050505050815260200160038201805462001fb69062008d9e565b80601f016020809104026020016040519081016040528092919081815260200182805462001fe49062008d9e565b8015620020355780601f10620020095761010080835404028352916020019162002035565b820191906000526020600020905b8154815290600101906020018083116200201757829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152805161028081019182905260a09092019190600d84019060149082845b815481526020019060010190808311620020c1575050509190925250505060408082015190516326ccee8b60e11b81526001600160a01b0385811660048301526024820188905292935060009290911690634d99dd16906044016020604051808303816000875af11580156200213b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002161919062008e33565b9050826001600160a01b0316866001600160a01b03167f3aace7340547de7b9156593a7652dc07ee900cea3fd8f82cb6c9d38b408298028784604051620021b2929190918252602082015260400190565b60405180910390a3856001600160a01b0316836001600160a01b031603620021df57620021df86620078dc565b6040808301519051633041949b60e01b815261200591633041949b916200220c9190879060040162008e92565b600060405180830381600087803b1580156200222757600080fd5b505af11580156200223c573d6000803e3d6000fd5b50505050505050505050565b60005462010000900460ff1615620022735760405163d7485e8f60e01b815260040160405180910390fd5b336000908152601a602052604090205460ff1615620022a55760405163b1d02c3d60e01b815260040160405180910390fd5b83620022b3600b8262006ec1565b620022d15760405163fdf4600b60e01b815260040160405180910390fd5b83620022df600b8262006ec1565b620022fd5760405163fdf4600b60e01b815260040160405180910390fd5b836000036200231f57604051639811e0c760e01b815260040160405180910390fd5b846001600160a01b0316866001600160a01b031603620023525760405163f0e3e62960e01b815260040160405180910390fd5b6001600160a01b038087166000908152600d602090815260408083208151610160810183528154861681526001820154861693810193909352600281015490941690820152600383015460608201526004830180543394916080840191620023ba9062008d9e565b80601f0160208091040260200160405190810160405280929190818152602001828054620023e89062008d9e565b8015620024395780601f106200240d5761010080835404028352916020019162002439565b820191906000526020600020905b8154815290600101906020018083116200241b57829003601f168201915b5050505050815260200160058201604051806080016040529081600082018054620024649062008d9e565b80601f0160208091040260200160405190810160405280929190818152602001828054620024929062008d9e565b8015620024e35780601f10620024b757610100808354040283529160200191620024e3565b820191906000526020600020905b815481529060010190602001808311620024c557829003601f168201915b50505050508152602001600182018054620024fe9062008d9e565b80601f01602080910402602001604051908101604052809291908181526020018280546200252c9062008d9e565b80156200257d5780601f1062002551576101008083540402835291602001916200257d565b820191906000526020600020905b8154815290600101906020018083116200255f57829003601f168201915b50505050508152602001600282018054620025989062008d9e565b80601f0160208091040260200160405190810160405280929190818152602001828054620025c69062008d9e565b8015620026175780601f10620025eb5761010080835404028352916020019162002617565b820191906000526020600020905b815481529060010190602001808311620025f957829003601f168201915b50505050508152602001600382018054620026329062008d9e565b80601f0160208091040260200160405190810160405280929190818152602001828054620026609062008d9e565b8015620026b15780601f106200268557610100808354040283529160200191620026b1565b820191906000526020600020905b8154815290600101906020018083116200269357829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152805161028081019182905260a09092019190600d84019060149082845b8154815260200190600101908083116200273d57505050919092525050506001600160a01b038089166000908152600d6020908152604080832081516101608101835281548616815260018201548616938101939093526002810154909416908201526003830154606082015260048301805494955091939092916080840191620027c89062008d9e565b80601f0160208091040260200160405190810160405280929190818152602001828054620027f69062008d9e565b8015620028475780601f106200281b5761010080835404028352916020019162002847565b820191906000526020600020905b8154815290600101906020018083116200282957829003601f168201915b5050505050815260200160058201604051806080016040529081600082018054620028729062008d9e565b80601f0160208091040260200160405190810160405280929190818152602001828054620028a09062008d9e565b8015620028f15780601f10620028c557610100808354040283529160200191620028f1565b820191906000526020600020905b815481529060010190602001808311620028d357829003601f168201915b505050505081526020016001820180546200290c9062008d9e565b80601f01602080910402602001604051908101604052809291908181526020018280546200293a9062008d9e565b80156200298b5780601f106200295f576101008083540402835291602001916200298b565b820191906000526020600020905b8154815290600101906020018083116200296d57829003601f168201915b50505050508152602001600282018054620029a69062008d9e565b80601f0160208091040260200160405190810160405280929190818152602001828054620029d49062008d9e565b801562002a255780601f10620029f95761010080835404028352916020019162002a25565b820191906000526020600020905b81548152906001019060200180831162002a0757829003601f168201915b5050505050815260200160038201805462002a409062008d9e565b80601f016020809104026020016040519081016040528092919081815260200182805462002a6e9062008d9e565b801562002abf5780601f1062002a935761010080835404028352916020019162002abf565b820191906000526020600020905b81548152906001019060200180831162002aa157829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152805161028081019182905260a09092019190600d84019060149082845b81548152602001906001019080831162002b4b5750505050508152505090508060e00151801562002b8e5750876001600160a01b0316836001600160a01b031614155b1562002bad57604051636468920360e01b815260040160405180910390fd5b6000805463ff0000001916630100000017815560408381015190516352e82ce560e11b81526001600160a01b038681166004830152602482018b90529091169063a5d059ca906044016020604051808303816000875af115801562002c16573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002c3c919062008e33565b905060035481101562002c625760405163dc6f0bdd60e01b815260040160405180910390fd5b896001600160a01b0316846001600160a01b031614801562002cf757506002546040808501519051630913db4760e01b81526001600160a01b038d8116600483015290911690630913db4790602401602060405180830381865afa15801562002ccf573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002cf5919062008e33565b105b1562002d16576040516317b204bf60e11b815260040160405180910390fd5b60006127106006548362002d2b919062008f09565b62002d37919062008dfa565b9050600083604001516001600160a01b03168260405160006040518083038185875af1925050503d806000811462002d8c576040519150601f19603f3d011682016040523d82523d6000602084013e62002d91565b606091505b505090508062002db4576040516312171d8360e31b815260040160405180910390fd5b62002dc0828462008ef3565b60408086015190516317066a5760e21b81526001600160a01b03898116600483015292955060009290911690635c19a95c90869060240160206040518083038185885af115801562002e16573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019062002e3d919062008e33565b905060008060036101000a81548160ff021916908360ff160217905550866001600160a01b03168c6001600160a01b03168e6001600160a01b03167ffdac6e81913996d95abcc289e90f2d8bd235487ce6fe6f821e7d21002a1915b48e858960405162002ebd939291909283526020830191909152604082015260600190565b60405180910390a460408051600280825260608201835260009260208301908036833701905050905086604001518160008151811062002f015762002f0162008f23565b60200260200101906001600160a01b031690816001600160a01b03168152505085604001518160018151811062002f3c5762002f3c62008f23565b6001600160a01b0390921660209283029190910190910152604051634484077560e01b81526120059063448407759062002f7d9084908c9060040162008f39565b600060405180830381600087803b15801562002f9857600080fd5b505af115801562002fad573d6000803e3d6000fd5b505050508a156200301f576120056001600160a01b031663e5ed5b1e898f6040518363ffffffff1660e01b815260040162002fea92919062008e92565b600060405180830381600087803b1580156200300557600080fd5b505af11580156200301a573d6000803e3d6000fd5b505050505b5050505050505050505050505050565b60005462010000900460ff16156200305a5760405163d7485e8f60e01b815260040160405180910390fd5b336000908152601a602052604090205460ff16156200308c5760405163b1d02c3d60e01b815260040160405180910390fd5b336200309a600b8262006ec1565b620030b85760405163fdf4600b60e01b815260040160405180910390fd5b336000818152600d60205260409020600c8101544290620030dc90603c9062008e1d565b1115620030fc57604051631f92cdbd60e11b815260040160405180910390fd5b60098101546001600160401b03600160401b90910481169085161115620031365760405163dc81db8560e01b815260040160405180910390fd5b60098101546000906001600160401b039081169086161015620031745760098201546200316e9086906001600160401b031662008f65565b6200318e565b60098201546200318e906001600160401b03168662008f65565b60098301546001600160401b039182169250600160801b900416811115620031c95760405163dc81db8560e01b815260040160405180910390fd5b60098201805467ffffffffffffffff19166001600160401b03871690811790915542600c8401556040519081526001600160a01b038416907f78cdd96edf59e09cfd4d26ef6ef6c92d166effe6a40970c54821206d541932cb9060200160405180910390a25050505050565b6060806060600062003248600b62007a62565b905080861015620038be57841562003261578462003263565b805b945060008562003274888462008ef3565b116200328c5762003286878362008ef3565b6200328e565b855b9050806001600160401b03811115620032ab57620032ab620085d6565b604051908082528060200260200182016040528015620032d5578160200160208202803683370190505b509450806001600160401b03811115620032f357620032f3620085d6565b6040519080825280602002602001820160405280156200331d578160200160208202803683370190505b509350806001600160401b038111156200333b576200333b620085d6565b6040519080825280602002602001820160405280156200337057816020015b60608152602001906001900390816200335a5790505b50925060005b81811015620038bb5760006200339a62003391838b62008e1d565b600b9062007a6d565b6001600160a01b038082166000908152600d6020908152604080832081516101608101835281548616815260018201548616938101939093526002810154909416908201526003830154606082015260048301805494955091939092916080840191620034079062008d9e565b80601f0160208091040260200160405190810160405280929190818152602001828054620034359062008d9e565b8015620034865780601f106200345a5761010080835404028352916020019162003486565b820191906000526020600020905b8154815290600101906020018083116200346857829003601f168201915b5050505050815260200160058201604051806080016040529081600082018054620034b19062008d9e565b80601f0160208091040260200160405190810160405280929190818152602001828054620034df9062008d9e565b8015620035305780601f10620035045761010080835404028352916020019162003530565b820191906000526020600020905b8154815290600101906020018083116200351257829003601f168201915b505050505081526020016001820180546200354b9062008d9e565b80601f0160208091040260200160405190810160405280929190818152602001828054620035799062008d9e565b8015620035ca5780601f106200359e57610100808354040283529160200191620035ca565b820191906000526020600020905b815481529060010190602001808311620035ac57829003601f168201915b50505050508152602001600282018054620035e59062008d9e565b80601f0160208091040260200160405190810160405280929190818152602001828054620036139062008d9e565b8015620036645780601f10620036385761010080835404028352916020019162003664565b820191906000526020600020905b8154815290600101906020018083116200364657829003601f168201915b505050505081526020016003820180546200367f9062008d9e565b80601f0160208091040260200160405190810160405280929190818152602001828054620036ad9062008d9e565b8015620036fe5780601f10620036d257610100808354040283529160200191620036fe565b820191906000526020600020905b815481529060010190602001808311620036e057829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152805161028081019182905260a09092019190600d84019060149082845b8154815260200190600101908083116200378a5750505050508152505090508060000151888481518110620037c357620037c362008f23565b60200260200101906001600160a01b031690816001600160a01b0316815250508060e001516200385c5780604001516001600160a01b03166315d1f8986040518163ffffffff1660e01b8152600401602060405180830381865afa15801562003830573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003856919062008e33565b6200385f565b60005b87848151811062003874576200387462008f23565b60200260200101818152505080608001518684815181106200389a576200389a62008f23565b6020026020010181905250505080620038b39062008f88565b905062003376565b50505b92959194509250565b60005462010000900460ff1615620038f25760405163d7485e8f60e01b815260040160405180910390fd5b336000908152601a602052604090205460ff1615620039245760405163b1d02c3d60e01b815260040160405180910390fd5b3362003932600b8262006ec1565b156200395157604051635f28f62b60e01b815260040160405180910390fd5b6001600160a01b038881166000908152600f6020526040902054161515806200399257506001600160a01b03881660009081526013602052604090205460ff165b15620039b157604051631e6f587560e11b815260040160405180910390fd5b60006001600160a01b031660118888604051620039d092919062008dd4565b908152604051908190036020019020546001600160a01b031614158062003a1a57506014878760405162003a0692919062008dd4565b9081526040519081900360200190205460ff165b1562003a39576040516311fdb94760e01b815260040160405180910390fd5b600062003a47838062008fa4565b60405160200162003a5a92919062008dd4565b60408051601f1981840301815291815281516020928301206000818152600e90935291205490915060ff161562003aa45760405163c0bf414360e01b815260040160405180910390fd5b600254349062003abe90670de0b6b3a76400009062008e1d565b81101562003adf576040516317b204bf60e11b815260040160405180910390fd5b6001600160a01b038a1662003b0757604051636520611b60e11b815260040160405180910390fd5b61138862003b1c6040870160208801620087b2565b6001600160401b0316118062003b62575062003b3f6040860160208701620087b2565b6001600160401b031662003b576020870187620087b2565b6001600160401b0316115b8062003ba1575062003b7b6040860160208701620087b2565b6001600160401b031662003b966060870160408801620087b2565b6001600160401b0316115b1562003bc05760405163dc81db8560e01b815260040160405180910390fd5b62003c0b62003bd0858062008fa4565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525062007a7b92505050565b62003c2957604051635dba5ad760e01b815260040160405180910390fd5b62003c378989898962007c1d565b62003c5557604051631647e3cb60e11b815260040160405180910390fd5b600062003ca38462003c68878062008fa4565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525062007d4a92505050565b905062003cb2600b8562007e4b565b506000838152600e60209081526040808320805460ff191660019081179091556001600160a01b03808916808652600d9094529190932080548f83166001600160a01b03199182161782559381018054851690931790925560028201805491851691909316179091554260038201556004810162003d328b8d836200904c565b50856005820162003d44828262009114565b508790506009820162003d5882826200924d565b505042600c8201556001600160a01b038c81166000908152600f60205260409081902080546001600160a01b0319169288169290921790915551859060119062003da6908e908e9062008dd4565b908152602001604051809103902060006101000a8154816001600160a01b0302191690836001600160a01b03160217905550816001600160a01b0316856001600160a01b03168d6001600160a01b03167faecd9fb95e79c75a3a1de93362c6be5fe6ab65770d8614be583884161cd8228d8e8e60405162003e299291906200931d565b60405180910390a460408051848152602081018590526001600160a01b0387169182917f24d7bda8602b916d64417f0dbfe2e2e88ec9b1157bd9f596dfdb91ba26624e04910160405180910390a3604051633041949b60e01b815261200590633041949b9062003ea0908590899060040162008e92565b600060405180830381600087803b15801562003ebb57600080fd5b505af115801562003ed0573d6000803e3d6000fd5b50505050505050505050505050505050565b60408051606081018252600080825260208201819052918101919091528162003f0d600b8262006ec1565b62003f2b5760405163fdf4600b60e01b815260040160405180910390fd5b6001600160a01b0383166000908152600d602090815260409182902082516060810184526009909101546001600160401b038082168352600160401b8204811693830193909352600160801b90049091169181019190915291505b50919050565b336110011462003fb457604051630f22c43960e41b8152611001600482015260240162000c85565b6001600160a01b038082166000908152600f60205260409020541662003fdc600b8262006ec1565b62003ffa5760405163fdf4600b60e01b815260040160405180910390fd5b6001600160a01b038181166000908152600d60205260408082206002810154600754925163045bc4d160e41b81526004810193909352909316906345bc4d10906024016020604051808303816000875af11580156200405d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004083919062008e33565b905060006009544262004097919062008e1d565b9050620040a5838262006f6e565b836001600160a01b03167f6e9a2ee7aee95665e3a774a212eb11441b217e3e4656ab9563793094689aabb282846001604051620040e59392919062008e63565b60405180910390a26002830154604051633041949b60e01b815261200591633041949b9162004123916001600160a01b031690889060040162008e92565b600060405180830381600087803b1580156200413e57600080fd5b505af115801562004153573d6000803e3d6000fd5b505050505050505050565b600054610100900460ff16158080156200417f5750600054600160ff909116105b806200419b5750303b1580156200419b575060005460ff166001145b620042005760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840162000c85565b6000805460ff19166001179055801562004224576000805461ff0019166101001790555b334114620042455760405163022d8c9560e31b815260040160405180910390fd5b3a1562004265576040516383f1b1d360e01b815260040160405180910390fd5b611388600155686c6b935b8bbd4000006002908155670de0b6b3a7640000600355602d600455607860058190556006829055678ac7230489e80000600755680ad78ebc5ac620000060085560095560b4600a556016556040805160c0810190915260a080825260609182916200a6096020830139806020019051810190620042ee919062009359565b9150604051806101e001604052806101c081526020016200a6a96101c09139806020019051810190620043229190620093fd565b905060005b825181101562004391576001601360008584815181106200434c576200434c62008f23565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055620043898162008f88565b905062004327565b5060005b8151811015620044025760016014838381518110620043b857620043b862008f23565b6020026020010151604051620043cf9190620094fa565b908152604051908190036020019020805491151560ff19909216919091179055620043fa8162008f88565b905062004395565b5050601980546001600160a01b03191673df87f0e2b8519ea2dd4abd8b639cdd628497ed25179055508015620011e5576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b33612000146200449c57604051630f22c43960e41b8152612000600482015260240162000c85565b7f41ce201247b6ceb957dcdb217d0b8acb50b9ea0e12af9af4f5e7f38902101605838383604051620044d19392919062009518565b60405180910390a1505050565b6019546001600160a01b031633146200450a5760405163f2771a9960e01b815260040160405180910390fd5b6000805462ff00001916620100001781556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e7529190a1565b600062004553600b8462006ec1565b620045715760405163fdf4600b60e01b815260040160405180910390fd5b6001600160a01b038381166000908152600d602052604090819020600201549051636bbf224960e01b815260048101859052911690636bbf2249906024015b602060405180830381865afa158015620045ce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620045f4919062008e33565b90505b92915050565b60005462010000900460ff1615620046285760405163d7485e8f60e01b815260040160405180910390fd5b336000908152601a602052604090205460ff16156200465a5760405163b1d02c3d60e01b815260040160405180910390fd5b8162004668600b8262006ec1565b620046865760405163fdf4600b60e01b815260040160405180910390fd5b6003543490811015620046ac5760405163dc6f0bdd60e01b815260040160405180910390fd5b6001600160a01b038085166000908152600d602090815260408083208151610160810183528154861681526001820154861693810193909352600281015490941690820152600383015460608201526004830180543394916080840191620047149062008d9e565b80601f0160208091040260200160405190810160405280929190818152602001828054620047429062008d9e565b8015620047935780601f10620047675761010080835404028352916020019162004793565b820191906000526020600020905b8154815290600101906020018083116200477557829003601f168201915b5050505050815260200160058201604051806080016040529081600082018054620047be9062008d9e565b80601f0160208091040260200160405190810160405280929190818152602001828054620047ec9062008d9e565b80156200483d5780601f1062004811576101008083540402835291602001916200483d565b820191906000526020600020905b8154815290600101906020018083116200481f57829003601f168201915b50505050508152602001600182018054620048589062008d9e565b80601f0160208091040260200160405190810160405280929190818152602001828054620048869062008d9e565b8015620048d75780601f10620048ab57610100808354040283529160200191620048d7565b820191906000526020600020905b815481529060010190602001808311620048b957829003601f168201915b50505050508152602001600282018054620048f29062008d9e565b80601f0160208091040260200160405190810160405280929190818152602001828054620049209062008d9e565b8015620049715780601f10620049455761010080835404028352916020019162004971565b820191906000526020600020905b8154815290600101906020018083116200495357829003601f168201915b505050505081526020016003820180546200498c9062008d9e565b80601f0160208091040260200160405190810160405280929190818152602001828054620049ba9062008d9e565b801562004a0b5780601f10620049df5761010080835404028352916020019162004a0b565b820191906000526020600020905b815481529060010190602001808311620049ed57829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152805161028081019182905260a09092019190600d84019060149082845b81548152602001906001019080831162004a975750505050508152505090508060e00151801562004ada5750856001600160a01b0316826001600160a01b031614155b1562004af957604051636468920360e01b815260040160405180910390fd5b60408082015190516317066a5760e21b81526001600160a01b0384811660048301526000921690635c19a95c90869060240160206040518083038185885af115801562004b4a573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019062004b71919062008e33565b9050826001600160a01b0316876001600160a01b03167f24d7bda8602b916d64417f0dbfe2e2e88ec9b1157bd9f596dfdb91ba26624e04838760405162004bc2929190918252602082015260400190565b60405180910390a36040808301519051633041949b60e01b815261200591633041949b9162004bf79190879060040162008e92565b600060405180830381600087803b15801562004c1257600080fd5b505af115801562004c27573d6000803e3d6000fd5b50505050851562004c90576040516372f6ad8f60e11b81526120059063e5ed5b1e9062004c5b9086908b9060040162008e92565b600060405180830381600087803b15801562004c7657600080fd5b505af115801562004c8b573d6000803e3d6000fd5b505050505b50505050505050565b62004cc56040518060800160405280606081526020016060815260200160608152602001606081525090565b8162004cd3600b8262006ec1565b62004cf15760405163fdf4600b60e01b815260040160405180910390fd5b6001600160a01b0383166000908152600d60205260409081902081516080810190925260050180548290829062004d289062008d9e565b80601f016020809104026020016040519081016040528092919081815260200182805462004d569062008d9e565b801562004da75780601f1062004d7b5761010080835404028352916020019162004da7565b820191906000526020600020905b81548152906001019060200180831162004d8957829003601f168201915b5050505050815260200160018201805462004dc29062008d9e565b80601f016020809104026020016040519081016040528092919081815260200182805462004df09062008d9e565b801562004e415780601f1062004e155761010080835404028352916020019162004e41565b820191906000526020600020905b81548152906001019060200180831162004e2357829003601f168201915b5050505050815260200160028201805462004e5c9062008d9e565b80601f016020809104026020016040519081016040528092919081815260200182805462004e8a9062008d9e565b801562004edb5780601f1062004eaf5761010080835404028352916020019162004edb565b820191906000526020600020905b81548152906001019060200180831162004ebd57829003601f168201915b5050505050815260200160038201805462004ef69062008d9e565b80601f016020809104026020016040519081016040528092919081815260200182805462004f249062008d9e565b801562004f755780601f1062004f495761010080835404028352916020019162004f75565b820191906000526020600020905b81548152906001019060200180831162004f5757829003601f168201915b505050505081525050915050919050565b60005462010000900460ff161562004fb15760405163d7485e8f60e01b815260040160405180910390fd5b336000908152601a602052604090205460ff161562004fe35760405163b1d02c3d60e01b815260040160405180910390fd5b62004fef828262007e62565b5050565b33611007146200501b57604051630f22c43960e41b8152611007600482015260240162000c85565b620050886040518060400160405280601081526020016f1d1c985b9cd9995c91d85cd31a5b5a5d60821b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062007f6e9050565b15620051365760208114620050ba5783838383604051630a5a604160e01b815260040162000c85949392919062009537565b604080516020601f8401819004810282018101909252828152600091620050fd91858580838501838280828437600092019190915250929392505062007fcb9050565b90506108fc8110156200512d5784848484604051630a5a604160e01b815260040162000c85949392919062009537565b60015562005e1d565b620051a76040518060400160405280601481526020017336b4b729b2b6332232b632b3b0ba34b7b721272160611b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062007f6e9050565b156200525c5760208114620051d95783838383604051630a5a604160e01b815260040162000c85949392919062009537565b604080516020601f84018190048102820181019092528281526000916200521c91858580838501838280828437600092019190915250929392505062007fcb9050565b9050683635c9adc5dea00000811015620052535784848484604051630a5a604160e01b815260040162000c85949392919062009537565b60025562005e1d565b620052cf604051806040016040528060168152602001756d696e44656c65676174696f6e424e424368616e676560501b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062007f6e9050565b15620053835760208114620053015783838383604051630a5a604160e01b815260040162000c85949392919062009537565b604080516020601f84018190048102820181019092528281526000916200534491858580838501838280828437600092019190915250929392505062007fcb9050565b905067016345785d8a00008110156200537a5784848484604051630a5a604160e01b815260040162000c85949392919062009537565b60035562005e1d565b620053f4604051806040016040528060148152602001736d6178456c656374656456616c696461746f727360601b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062007f6e9050565b15620054ae5760208114620054265783838383604051630a5a604160e01b815260040162000c85949392919062009537565b604080516020601f84018190048102820181019092528281526000916200546991858580838501838280828437600092019190915250929392505062007fcb9050565b905060018110806200547c57506101f481115b15620054a55784848484604051630a5a604160e01b815260040162000c85949392919062009537565b60045562005e1d565b620055176040518060400160405280600c81526020016b1d5b989bdb9914195c9a5bd960a21b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062007f6e9050565b15620055c65760208114620055495783838383604051630a5a604160e01b815260040162000c85949392919062009537565b604080516020601f84018190048102820181019092528281526000916200558c91858580838501838280828437600092019190915250929392505062007fcb9050565b90506203f480811015620055bd5784848484604051630a5a604160e01b815260040162000c85949392919062009537565b60055562005e1d565b6200563460405180604001604052806011815260200170726564656c65676174654665655261746560781b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062007f6e9050565b15620056e15760208114620056665783838383604051630a5a604160e01b815260040162000c85949392919062009537565b604080516020601f8401819004810282018101909252828152600091620056a991858580838501838280828437600092019190915250929392505062007fcb9050565b90506064811115620056d85784848484604051630a5a604160e01b815260040162000c85949392919062009537565b60065562005e1d565b6200575160405180604001604052806013815260200172191bdddb9d1a5b5954db185cda105b5bdd5b9d606a1b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062007f6e9050565b15620058125760208114620057835783838383604051630a5a604160e01b815260040162000c85949392919062009537565b604080516020601f8401819004810282018101909252828152600091620057c691858580838501838280828437600092019190915250929392505062007fcb9050565b9050674563918244f40000811080620057e0575060085481115b15620058095784848484604051630a5a604160e01b815260040162000c85949392919062009537565b60075562005e1d565b620058806040518060400160405280601181526020017019995b1bdb9e54db185cda105b5bdd5b9d607a1b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062007f6e9050565b15620059435760208114620058b25783838383604051630a5a604160e01b815260040162000c85949392919062009537565b604080516020601f8401819004810282018101909252828152600091620058f591858580838501838280828437600092019190915250929392505062007fcb9050565b905068056bc75e2d631000008110806200591157506007548111155b156200593a5784848484604051630a5a604160e01b815260040162000c85949392919062009537565b60085562005e1d565b620059b06040518060400160405280601081526020016f646f776e74696d654a61696c54696d6560801b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062007f6e9050565b1562005a6d5760208114620059e25783838383604051630a5a604160e01b815260040162000c85949392919062009537565b604080516020601f840181900481028201810190925282815260009162005a2591858580838501838280828437600092019190915250929392505062007fcb9050565b90506202a30081108062005a3b5750600a548110155b1562005a645784848484604051630a5a604160e01b815260040162000c85949392919062009537565b60095562005e1d565b62005ad86040518060400160405280600e81526020016d66656c6f6e794a61696c54696d6560901b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062007f6e9050565b1562005b95576020811462005b0a5783838383604051630a5a604160e01b815260040162000c85949392919062009537565b604080516020601f840181900481028201810190925282815260009162005b4d91858580838501838280828437600092019190915250929392505062007fcb9050565b9050620d2f0081108062005b6357506009548111155b1562005b8c5784848484604051630a5a604160e01b815260040162000c85949392919062009537565b600a5562005e1d565b62005c0f6040518060400160405280601c81526020017f6d617846656c6f6e794265747765656e42726561746865426c6f636b0000000081525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062007f6e9050565b1562005cbb576020811462005c415783838383604051630a5a604160e01b815260040162000c85949392919062009537565b604080516020601f840181900481028201810190925282815260009162005c8491858580838501838280828437600092019190915250929392505062007fcb9050565b90508060000362005cb25784848484604051630a5a604160e01b815260040162000c85949392919062009537565b60165562005e1d565b62005d266040518060400160405280600e81526020016d30b9b9b2ba283937ba32b1ba37b960911b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062007f6e9050565b1562005dfa576014811462005d585783838383604051630a5a604160e01b815260040162000c85949392919062009537565b600062005da0601484848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062007fcb9050565b90506001600160a01b03811662005dd45784848484604051630a5a604160e01b815260040162000c85949392919062009537565b601980546001600160a01b0319166001600160a01b039290921691909117905562005e1d565b838383836040516325ee20d560e21b815260040162000c85949392919062009537565b7ff1ce9b2cbf50eeb05769a29e2543fd350cab46894a7dd9978a12d534bb20e6338484848460405162005e54949392919062009537565b60405180910390a150505050565b60005462010000900460ff161562005e8d5760405163d7485e8f60e01b815260040160405180910390fd5b336000908152601a602052604090205460ff161562005ebf5760405163b1d02c3d60e01b815260040160405180910390fd5b816000816001600160401b0381111562005edd5762005edd620085d6565b60405190808252806020026020018201604052801562005f07578160200160208202803683370190505b5090506000805b83811015620060055762005f5087878381811062005f305762005f3062008f23565b905060200201602081019062005f47919062008465565b600b9062006ec1565b62005f6e5760405163fdf4600b60e01b815260040160405180910390fd5b600d600088888481811062005f875762005f8762008f23565b905060200201602081019062005f9e919062008465565b6001600160a01b039081168252602082019290925260400160002060020154845191169250829084908390811062005fda5762005fda62008f23565b6001600160a01b039092166020928302919091019091015262005ffd8162008f88565b905062005f0e565b50604051634484077560e01b8152612005906344840775906200220c908590889060040162008f39565b606080600062006040600b62007a62565b905080851015620062045783156200605957836200605b565b805b93506000846200606c878462008ef3565b1162006084576200607e868362008ef3565b62006086565b845b9050806001600160401b03811115620060a357620060a3620085d6565b604051908082528060200260200182016040528015620060cd578160200160208202803683370190505b509350806001600160401b03811115620060eb57620060eb620085d6565b60405190808252806020026020018201604052801562006115578160200160208202803683370190505b50925060005b8181101562006201576200613462003391828962008e1d565b85828151811062006149576200614962008f23565b60200260200101906001600160a01b031690816001600160a01b031681525050600d600086838151811062006182576200618262008f23565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060020160009054906101000a90046001600160a01b0316848281518110620061d657620061d662008f23565b6001600160a01b0390921660209283029190910190910152620061f98162008f88565b90506200611b565b50505b9250925092565b33611001146200623357604051630f22c43960e41b8152611001600482015260240162000c85565b6001600160a01b038082166000908152600f6020526040902054166200625b600b8262006ec1565b620062795760405163fdf4600b60e01b815260040160405180910390fd5b6001600160a01b0381166000908152600d60205260408120906200629f603c4262008dfa565b60165460008281526017602052604090205491925011620062d35760405163bd52fcdb60e01b815260040160405180910390fd5b6000818152601760205260408120805460019290620062f490849062008e1d565b90915550506001600160a01b038416600090815260106020526040902054158015906200634757506001600160a01b03841660009081526010602052604090205442906200634590603c9062008e1d565b105b1562006366576040516330abb81d60e21b815260040160405180910390fd5b6000806200637685600062006ee4565b91509150816200639957604051631b919bb160e11b815260040160405180910390fd5b600284015460085460405163045bc4d160e41b815260048101919091526000916001600160a01b0316906345bc4d10906024016020604051808303816000875af1158015620063ec573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062006412919062008e33565b905062006420858362006f6e565b856001600160a01b03167f6e9a2ee7aee95665e3a774a212eb11441b217e3e4656ab9563793094689aabb283836000604051620064609392919062008e63565b60405180910390a26002850154604051633041949b60e01b815261200591633041949b9162004c5b916001600160a01b0316908a9060040162008e92565b600080806060818086620064b4600b8262006ec1565b620064d25760405163fdf4600b60e01b815260040160405180910390fd5b6001600160a01b038089166000908152600d60209081526040808320815161016081018352815486168152600182015486169381019390935260028101549094169082015260038301546060820152600483018054929391926080840191906200653c9062008d9e565b80601f01602080910402602001604051908101604052809291908181526020018280546200656a9062008d9e565b8015620065bb5780601f106200658f57610100808354040283529160200191620065bb565b820191906000526020600020905b8154815290600101906020018083116200659d57829003601f168201915b5050505050815260200160058201604051806080016040529081600082018054620065e69062008d9e565b80601f0160208091040260200160405190810160405280929190818152602001828054620066149062008d9e565b8015620066655780601f10620066395761010080835404028352916020019162006665565b820191906000526020600020905b8154815290600101906020018083116200664757829003601f168201915b50505050508152602001600182018054620066809062008d9e565b80601f0160208091040260200160405190810160405280929190818152602001828054620066ae9062008d9e565b8015620066ff5780601f10620066d357610100808354040283529160200191620066ff565b820191906000526020600020905b815481529060010190602001808311620066e157829003601f168201915b505050505081526020016002820180546200671a9062008d9e565b80601f0160208091040260200160405190810160405280929190818152602001828054620067489062008d9e565b8015620067995780601f106200676d5761010080835404028352916020019162006799565b820191906000526020600020905b8154815290600101906020018083116200677b57829003601f168201915b50505050508152602001600382018054620067b49062008d9e565b80601f0160208091040260200160405190810160405280929190818152602001828054620067e29062008d9e565b8015620068335780601f10620068075761010080835404028352916020019162006833565b820191906000526020600020905b8154815290600101906020018083116200681557829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152805161028081019182905260a09092019190600d84019060149082845b815481526020019060010190808311620068bf57505050919092525050815160408301516060840151608085015160e086015161010090960151939f929e50909c509a50929850965090945050505050565b60005462010000900460ff16156200693c5760405163d7485e8f60e01b815260040160405180910390fd5b336000908152601a602052604090205460ff16156200696e5760405163b1d02c3d60e01b815260040160405180910390fd5b336200697c600b8262006ec1565b6200699a5760405163fdf4600b60e01b815260040160405180910390fd5b336000818152600d60205260409020600c8101544290620069be90603c9062008e1d565b1115620069de57604051631f92cdbd60e11b815260040160405180910390fd5b600581018054620069ef9062008d9e565b80601f016020809104026020016040519081016040528092919081815260200182805462006a1d9062008d9e565b801562006a6e5780601f1062006a425761010080835404028352916020019162006a6e565b820191906000526020600020905b81548152906001019060200180831162006a5057829003601f168201915b505050828752508591600584019150819062006a8b908262009562565b506020820151600182019062006aa2908262009562565b506040820151600282019062006ab9908262009562565b506060820151600382019062006ad0908262009562565b505042600c830155506040516001600160a01b038316907f85d6366b336ade7f106987ec7a8eac1e8799e508aeab045a39d2f63e0dc969d990600090a250505050565b60005462010000900460ff161562006b3e5760405163d7485e8f60e01b815260040160405180910390fd5b336000908152601a602052604090205460ff161562006b705760405163b1d02c3d60e01b815260040160405180910390fd5b82811462006b91576040516341abc80160e01b815260040160405180910390fd5b60005b8381101562006c025762006bef85858381811062006bb65762006bb662008f23565b905060200201602081019062006bcd919062008465565b84848481811062006be25762006be262008f23565b9050602002013562007e62565b62006bfa8162008f88565b905062006b94565b5050505050565b600062006c18600b8462006ec1565b62006c365760405163fdf4600b60e01b815260040160405180910390fd5b6001600160a01b038381166000908152600d60205260409081902060020154905163aa1966cd60e01b81526004810185905291169063aa1966cd90602401620045b0565b60005462010000900460ff161562006ca55760405163d7485e8f60e01b815260040160405180910390fd5b336000908152601a602052604090205460ff161562006cd75760405163b1d02c3d60e01b815260040160405180910390fd5b3362006ce5600b8262006ec1565b62006d035760405163fdf4600b60e01b815260040160405180910390fd5b62006d118585858562007c1d565b62006d2f57604051631647e3cb60e11b815260040160405180910390fd5b60006001600160a01b03166011868660405162006d4e92919062008dd4565b908152604051908190036020019020546001600160a01b031614158062006d9857506014858560405162006d8492919062008dd4565b9081526040519081900360200190205460ff165b1562006db7576040516311fdb94760e01b815260040160405180910390fd5b336000818152600d60205260409020600c810154429062006ddb90603c9062008e1d565b111562006dfb57604051631f92cdbd60e11b815260040160405180910390fd5b4260128260040160405162006e1191906200962a565b908152604051908190036020019020556004810162006e328789836200904c565b5042600c820155604051829060119062006e50908a908a9062008dd4565b90815260405190819003602001812080546001600160a01b039384166001600160a01b0319909116179055908316907f783156582145bd0ff7924fae6953ba054cf1233eb60739a200ddb10de068ff0d9062006eb0908a908a906200931d565b60405180910390a250505050505050565b6001600160a01b03811660009081526001830160205260408120541515620045f4565b6000806000848460405160200162006efe929190620096a8565b60408051601f198184030181529181528151602092830120600081815260189093529120549091504281111562006f3e5760008093509350505062006f67565b600a5462006f4d904262008e1d565b600092835260186020526040909220829055506001925090505b9250929050565b6000600162006f7e600b62007a62565b62006f8a919062008ef3565b6015541080159150620070485760405163d31f968d60e01b81526110006004820152600860248201526120009063d31f968d90604401602060405180830381865afa15801562006fde573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062007004919062008eac565b620070485760018301546040516001600160a01b03909116907f2afdc18061ac21cff7d9f11527ab9c8dec6fabd4edf6f894ed634bebd6a20d4590600090a2505050565b82600b01548211156200705d57600b83018290555b600a83015460ff16620070d057600a8301805460ff19166001908117909155601580546000906200709090849062008e1d565b909155505060018301546040516001600160a01b03909116907f4905ac32602da3fb8b4b7b00c285e5fc4c6c2308cc908b4a1e4e9625a29c90a390600090a25b505050565b60408051608080820183526000808352602080840182905283850182905260608085018390528551938401865282845283820183905283860183905283018290528451808601865282815281018290528451808601909552855185528581019085015291928290620071479062007fd0565b90506000805b620071588362008043565b156200722b57806000036200718d576200717c620071768462008069565b620080cd565b6001600160a01b0316845262007218565b80600103620071b957620071a5620071768462008069565b6001600160a01b0316602085015262007218565b80600203620071e557620071d1620071768462008069565b6001600160a01b0316604085015262007218565b80600303620072125762007203620071fd8462008069565b620080e5565b60608501526001915062007218565b6200722b565b620072238162008f88565b90506200714d565b5091959194509092505050565b6000805462010000900460ff1615620072645760405163d7485e8f60e01b815260040160405180910390fd5b6020808301516001600160a01b03166000908152601a909152604090205460ff16806200729c575060208201516001600160a01b0316155b15620072bb5760405163b1d02c3d60e01b815260040160405180910390fd5b8151620072cb90600b9062006ec1565b620072d857506002919050565b81516001600160a01b039081166000908152600d6020908152604080832081516101608101835281548616815260018201548616938101939093526002810154909416908201526003830154606082015260048301805492939192608084019190620073449062008d9e565b80601f0160208091040260200160405190810160405280929190818152602001828054620073729062008d9e565b8015620073c35780601f106200739757610100808354040283529160200191620073c3565b820191906000526020600020905b815481529060010190602001808311620073a557829003601f168201915b5050505050815260200160058201604051806080016040529081600082018054620073ee9062008d9e565b80601f01602080910402602001604051908101604052809291908181526020018280546200741c9062008d9e565b80156200746d5780601f1062007441576101008083540402835291602001916200746d565b820191906000526020600020905b8154815290600101906020018083116200744f57829003601f168201915b50505050508152602001600182018054620074889062008d9e565b80601f0160208091040260200160405190810160405280929190818152602001828054620074b69062008d9e565b8015620075075780601f10620074db5761010080835404028352916020019162007507565b820191906000526020600020905b815481529060010190602001808311620074e957829003601f168201915b50505050508152602001600282018054620075229062008d9e565b80601f0160208091040260200160405190810160405280929190818152602001828054620075509062008d9e565b8015620075a15780601f106200757557610100808354040283529160200191620075a1565b820191906000526020600020905b8154815290600101906020018083116200758357829003601f168201915b50505050508152602001600382018054620075bc9062008d9e565b80601f0160208091040260200160405190810160405280929190818152602001828054620075ea9062008d9e565b80156200763b5780601f106200760f576101008083540402835291602001916200763b565b820191906000526020600020905b8154815290600101906020018083116200761d57829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152805161028081019182905260a09092019190600d84019060149082845b815481526020019060010190808311620076c75750505050508152505090508060e00151801562007712575082600001516001600160a01b031683602001516001600160a01b031614155b15620077215750600392915050565b6040808201516060850151602086015192516317066a5760e21b81526001600160a01b03938416600482015260009390921691635c19a95c919060240160206040518083038185885af11580156200777d573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190620077a4919062008e33565b905083602001516001600160a01b031684600001516001600160a01b03167f24d7bda8602b916d64417f0dbfe2e2e88ec9b1157bd9f596dfdb91ba26624e0483876060015160405162007801929190918252602082015260400190565b60405180910390a383602001516001600160a01b031684600001516001600160a01b03167f607b17598da6bdca05650a2fc08bd2bc8e38c3236806a0fa8e0daabc1d6cb1d883876060015160405162007864929190918252602082015260400190565b60405180910390a360408083015160208601519151633041949b60e01b815261200592633041949b926200789e9290919060040162008e92565b600060405180830381600087803b158015620078b957600080fd5b505af1158015620078ce573d6000803e3d6000fd5b506000979650505050505050565b6001600160a01b0381166000908152600d60205260409020600a81015460ff161562007906575050565b6002805490820154604051630913db4760e01b81526001600160a01b03858116600483015290911690630913db4790602401602060405180830381865afa15801562007956573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200797c919062008e33565b101562004fef576200799e816009544262007998919062008e1d565b62006f6e565b8054604051631507fdb760e11b81526001600160a01b03909116600482015261100090632a0ffb6e90602401600060405180830381600087803b158015620079e557600080fd5b505af1158015620079fa573d6000803e3d6000fd5b505082546040516335409f7f60e01b81526001600160a01b03909116600482015261100092506335409f7f9150602401600060405180830381600087803b15801562007a4557600080fd5b505af115801562007a5a573d6000803e3d6000fd5b505050505050565b6000620045f7825490565b6000620045f48383620081bd565b60008082905060038151108062007a93575060098151115b1562007aa25750600092915050565b60418160008151811062007aba5762007aba62008f23565b016020015160f81c108062007aec5750605a8160008151811062007ae25762007ae262008f23565b016020015160f81c115b1562007afb5750600092915050565b60015b815181101562007c1357603082828151811062007b1f5762007b1f62008f23565b016020015160f81c108062007b505750603982828151811062007b465762007b4662008f23565b016020015160f81c115b801562007ba05750604182828151811062007b6f5762007b6f62008f23565b016020015160f81c108062007ba05750605a82828151811062007b965762007b9662008f23565b016020015160f81c115b801562007bf05750606182828151811062007bbf5762007bbf62008f23565b016020015160f81c108062007bf05750607a82828151811062007be65762007be662008f23565b016020015160f81c115b1562007c00575060009392505050565b62007c0b8162008f88565b905062007afe565b5060019392505050565b600060308414158062007c31575060608214155b1562007c405750600062007d42565b600085854660405160200162007c5993929190620096e6565b60408051808303601f1901815282825280516020918201208184528383019092529092506000919060208201818036833701905050905081602082015260008186868a8a60405160200162007cb3959493929190620096f8565b60408051808303601f190181526001808452838301909252925060009190602082018180368337019050509050815160016020830182602086016066600019fa62007cfd57600080fd5b5060008160008151811062007d165762007d1662008f23565b016020015160f81c90506001811462007d385760009550505050505062007d42565b6001955050505050505b949350505050565b60008061200361dead60405162007d619062008441565b6001600160a01b03928316815291166020820152606060408201819052600090820152608001604051809103906000f08015801562007da4573d6000803e3d6000fd5b509050806001600160a01b031663f399e22e3486866040518463ffffffff1660e01b815260040162007dd892919062009730565b6000604051808303818588803b15801562007df257600080fd5b505af115801562007e07573d6000803e3d6000fd5b50506040516001600160a01b038086169450881692507fd481492e4e93bb36b4c12a5af93f03be3bf04b454dfbc35dd2663fa26f44d5b09150600090a39392505050565b6000620045f4836001600160a01b038416620081ea565b8162007e70600b8262006ec1565b62007e8e5760405163fdf4600b60e01b815260040160405180910390fd5b6001600160a01b038381166000908152600d6020526040808220600201549051635569f64b60e11b8152336004820152602481018690529192169063aad3ec96906044016020604051808303816000875af115801562007ef2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062007f18919062008e33565b9050336001600160a01b0316846001600160a01b03167ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926838360405162007f6091815260200190565b60405180910390a350505050565b60008160405160200162007f839190620094fa565b604051602081830303815290604052805190602001208360405160200162007fac9190620094fa565b6040516020818303038152906040528051906020012014905092915050565b015190565b604080516080810182526000918101828152606082018390528152602081019190915262007ffe826200823c565b6200800857600080fd5b60006200801983602001516200826f565b83602001516200802a919062008e1d565b6040805180820190915293845260208401525090919050565b805180516020820151600092916200805b9162008e1d565b836020015110915050919050565b6040805180820190915260008082526020820152620080888262008043565b6200809257600080fd5b60208201516000620080a482620082f7565b9050620080b2818362008e1d565b60209485015260408051808201909152908152928301525090565b8051600090601514620080df57600080fd5b620045f7825b805160009015801590620080fb57508151602110155b6200810557600080fd5b60006200811683602001516200826f565b905080836000015110156200816e5760405162461bcd60e51b815260206004820152601a60248201527f6c656e677468206973206c657373207468616e206f6666736574000000000000604482015260640162000c85565b82516000906200818090839062008ef3565b905060008083866020015162008197919062008e1d565b9050805191506020831015620081b457826020036101000a820491505b50949350505050565b6000826000018281548110620081d757620081d762008f23565b9060005260206000200154905092915050565b60008181526001830160205260408120546200823357508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155620045f7565b506000620045f7565b805160009081036200825057506000919050565b6020820151805160001a9060c082101562007c13575060009392505050565b8051600090811a6080811015620082895750600092915050565b60b8811080620082a6575060c08110801590620082a6575060f881105b15620082b55750600192915050565b60c0811015620082e957620082cd600160b862009756565b620082dc9060ff168262008ef3565b620017c790600162008e1d565b620082cd600160f862009756565b80516000908190811a60808110156200831457600191506200843a565b60b881101562008340576200832b60808262008ef3565b6200833890600162008e1d565b91506200843a565b60c0811015620083b957600060b78203600186019550806020036101000a865104915060018101820193505080831015620083b25760405162461bcd60e51b81526020600482015260116024820152706164646974696f6e206f766572666c6f7760781b604482015260640162000c85565b506200843a565b60f8811015620083d0576200832b60c08262008ef3565b600060f78203600186019550806020036101000a865104915060018101820193505080831015620084385760405162461bcd60e51b81526020600482015260116024820152706164646974696f6e206f766572666c6f7760781b604482015260640162000c85565b505b5092915050565b610e96806200977383390190565b6001600160a01b0381168114620011e557600080fd5b6000602082840312156200847857600080fd5b8135620017c7816200844f565b60008083601f8401126200849857600080fd5b5081356001600160401b03811115620084b057600080fd5b60208301915083602082850101111562006f6757600080fd5b60008060208385031215620084dd57600080fd5b82356001600160401b03811115620084f457600080fd5b620085028582860162008485565b90969095509350505050565b6000806000604084860312156200852457600080fd5b833560ff811681146200853657600080fd5b925060208401356001600160401b038111156200855257600080fd5b620085608682870162008485565b9497909650939450505050565b60005b838110156200858a57818101518382015260200162008570565b50506000910152565b60008151808452620085ad8160208601602086016200856d565b601f01601f19169290920160200192915050565b602081526000620045f4602083018462008593565b634e487b7160e01b600052604160045260246000fd5b604051608081016001600160401b0381118282101715620086115762008611620085d6565b60405290565b604051601f8201601f191681016001600160401b0381118282101715620086425762008642620085d6565b604052919050565b60006001600160401b03821115620086665762008666620085d6565b50601f01601f191660200190565b60006200868b62008685846200864a565b62008617565b9050828152838383011115620086a057600080fd5b828260208301376000602084830101529392505050565b600060208284031215620086ca57600080fd5b81356001600160401b03811115620086e157600080fd5b8201601f81018413620086f357600080fd5b62007d428482356020840162008674565b600080604083850312156200871857600080fd5b823562008725816200844f565b946020939093013593505050565b8015158114620011e557600080fd5b600080600080608085870312156200875957600080fd5b843562008766816200844f565b9350602085013562008778816200844f565b9250604085013591506060850135620087918162008733565b939692955090935050565b6001600160401b0381168114620011e557600080fd5b600060208284031215620087c557600080fd5b8135620017c7816200879c565b60008060408385031215620087e657600080fd5b50508035926020909101359150565b600081518084526020808501945080840160005b83811015620088305781516001600160a01b03168752958201959082019060010162008809565b509495945050505050565b608081526000620088506080830187620087f5565b82810360208481019190915286518083528782019282019060005b8181101562008889578451835293830193918301916001016200886b565b5050848103604086015286518082528282019350600581901b8201830183890160005b83811015620088de57601f19858403018752620088cb83835162008593565b96860196925090850190600101620088ac565b5050809550505050505082606083015295945050505050565b600080600080600080600087890360e08112156200891457600080fd5b883562008921816200844f565b975060208901356001600160401b03808211156200893e57600080fd5b6200894c8c838d0162008485565b909950975060408b01359150808211156200896657600080fd5b620089748c838d0162008485565b90975095508591506060605f19840112156200898f57600080fd5b60608b01945060c08b0135925080831115620089aa57600080fd5b505088016080818b031215620089bf57600080fd5b8091505092959891949750929550565b60008060408385031215620089e357600080fd5b8235620089f0816200844f565b9150602083013562008a028162008733565b809150509250929050565b60208152600082516080602084015262008a2b60a084018262008593565b90506020840151601f198085840301604086015262008a4b838362008593565b9250604086015191508085840301606086015262008a6a838362008593565b925060608601519150808584030160808601525062008a8a828262008593565b95945050505050565b6000806000806040858703121562008aaa57600080fd5b84356001600160401b038082111562008ac257600080fd5b62008ad08883890162008485565b9096509450602087013591508082111562008aea57600080fd5b5062008af98782880162008485565b95989497509550505050565b60008083601f84011262008b1857600080fd5b5081356001600160401b0381111562008b3057600080fd5b6020830191508360208260051b850101111562006f6757600080fd5b60008060006040848603121562008b6257600080fd5b83356001600160401b0381111562008b7957600080fd5b62008b878682870162008b05565b909450925050602084013562008b9d816200844f565b809150509250925092565b60608152600062008bbd6060830186620087f5565b828103602084015262008bd18186620087f5565b915050826040830152949350505050565b6001600160a01b038781168252861660208201526040810185905260c06060820181905260009062008c179083018662008593565b93151560808301525060a00152949350505050565b600082601f83011262008c3e57600080fd5b620045f48383356020850162008674565b60006020828403121562008c6257600080fd5b81356001600160401b038082111562008c7a57600080fd5b908301906080828603121562008c8f57600080fd5b62008c99620085ec565b82358281111562008ca957600080fd5b62008cb78782860162008c2c565b82525060208301358281111562008ccd57600080fd5b62008cdb8782860162008c2c565b60208301525060408301358281111562008cf457600080fd5b62008d028782860162008c2c565b60408301525060608301358281111562008d1b57600080fd5b62008d298782860162008c2c565b60608301525095945050505050565b6000806000806040858703121562008d4f57600080fd5b84356001600160401b038082111562008d6757600080fd5b62008d758883890162008b05565b9096509450602087013591508082111562008d8f57600080fd5b5062008af98782880162008b05565b600181811c9082168062008db357607f821691505b60208210810362003f8657634e487b7160e01b600052602260045260246000fd5b8183823760009101908152919050565b634e487b7160e01b600052601160045260246000fd5b60008262008e1857634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115620045f757620045f762008de4565b60006020828403121562008e4657600080fd5b5051919050565b634e487b7160e01b600052602160045260246000fd5b83815260208101839052606081016003831062008e845762008e8462008e4d565b826040830152949350505050565b6001600160a01b0392831681529116602082015260400190565b60006020828403121562008ebf57600080fd5b8151620017c78162008733565b828152604081016004831062008ee65762008ee662008e4d565b8260208301529392505050565b81810381811115620045f757620045f762008de4565b8082028115828204841417620045f757620045f762008de4565b634e487b7160e01b600052603260045260246000fd5b60408152600062008f4e6040830185620087f5565b905060018060a01b03831660208301529392505050565b6001600160401b038281168282160390808211156200843a576200843a62008de4565b60006001820162008f9d5762008f9d62008de4565b5060010190565b6000808335601e1984360301811262008fbc57600080fd5b8301803591506001600160401b0382111562008fd757600080fd5b60200191503681900382131562006f6757600080fd5b601f821115620070d057600081815260208120601f850160051c81016020861015620090165750805b601f850160051c820191505b8181101562007a5a5782815560010162009022565b600019600383901b1c191660019190911b1790565b6001600160401b03831115620090665762009066620085d6565b6200907e8362009077835462008d9e565b8362008fed565b6000601f841160018114620090b157600085156200909c5750838201355b620090a8868262009037565b84555062006c02565b600083815260209020601f19861690835b82811015620090e45786850135825560209485019460019092019101620090c2565b5086821015620091025760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b62009120828362008fa4565b6001600160401b038111156200913a576200913a620085d6565b62009152816200914b855462008d9e565b8562008fed565b6000601f821160018114620091855760008315620091705750838201355b6200917c848262009037565b865550620091e2565b600085815260209020601f19841690835b82811015620091b8578685013582556020948501946001909201910162009196565b5084821015620091d65760001960f88660031b161c19848701351681555b505060018360011b0185555b50505050620091f5602083018362008fa4565b620092058183600186016200904c565b505062009216604083018362008fa4565b620092268183600286016200904c565b505062009237606083018362008fa4565b620092478183600386016200904c565b50505050565b81356200925a816200879c565b6001600160401b03811690508154816001600160401b03198216178355602084013562009287816200879c565b6fffffffffffffffff0000000000000000604091821b166fffffffffffffffffffffffffffffffff19831684178117855590850135620092c7816200879c565b6001600160c01b0319929092169092179190911760809190911b67ffffffffffffffff60801b1617905550565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60208152600062007d42602083018486620092f4565b60006001600160401b038211156200934f576200934f620085d6565b5060051b60200190565b600060208083850312156200936d57600080fd5b82516001600160401b038111156200938457600080fd5b8301601f810185136200939657600080fd5b8051620093a7620086858262009333565b81815260059190911b82018301908381019087831115620093c757600080fd5b928401925b82841015620093f2578351620093e2816200844f565b82529284019290840190620093cc565b979650505050505050565b600060208083850312156200941157600080fd5b82516001600160401b03808211156200942957600080fd5b818501915085601f8301126200943e57600080fd5b81516200944f620086858262009333565b81815260059190911b830184019084810190888311156200946f57600080fd5b8585015b83811015620094ed578051858111156200948d5760008081fd5b8601603f81018b13620094a05760008081fd5b878101516040620094b562008685836200864a565b8281528d82848601011115620094cb5760008081fd5b620094dc838c83018487016200856d565b865250505091860191860162009473565b5098975050505050505050565b600082516200950e8184602087016200856d565b9190910192915050565b60ff8416815260406020820152600062008a8a604083018486620092f4565b6040815260006200954d604083018688620092f4565b8281036020840152620093f2818587620092f4565b81516001600160401b038111156200957e576200957e620085d6565b62009596816200958f845462008d9e565b8462008fed565b602080601f831160018114620095ca5760008415620095b55750858301515b620095c1858262009037565b86555062007a5a565b600085815260208120601f198616915b82811015620095fb57888601518255948401946001909101908401620095da565b50858210156200961a5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60008083546200963a8162008d9e565b600182811680156200965557600181146200966b576200969c565b60ff19841687528215158302870194506200969c565b8760005260208060002060005b85811015620096935781548a82015290840190820162009678565b50505082870194505b50929695505050505050565b6bffffffffffffffffffffffff198360601b168152600060038310620096d257620096d262008e4d565b5060f89190911b6014820152601501919050565b82848237909101908152602001919050565b600086516200970c818460208b016200856d565b82018587823760009086019081528385823760009301928352509095945050505050565b6001600160a01b038316815260406020820181905260009062007d429083018462008593565b60ff8281168282160390811115620045f757620045f762008de456fe608060405260405162000e9638038062000e96833981016040819052620000269162000497565b828162000036828260006200004d565b50620000449050826200008a565b505050620005ca565b6200005883620000e5565b600082511180620000665750805b1562000085576200008383836200012760201b620001691760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f620000b562000156565b604080516001600160a01b03928316815291841660208301520160405180910390a1620000e2816200018f565b50565b620000f08162000244565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606200014f838360405180606001604052806027815260200162000e6f60279139620002f8565b9392505050565b60006200018060008051602062000e4f83398151915260001b6200037760201b620001951760201c565b546001600160a01b0316919050565b6001600160a01b038116620001fa5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b806200022360008051602062000e4f83398151915260001b6200037760201b620001951760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6200025a816200037a60201b620001981760201c565b620002be5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401620001f1565b80620002237f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b6200037760201b620001951760201c565b6060600080856001600160a01b03168560405162000317919062000577565b600060405180830381855af49150503d806000811462000354576040519150601f19603f3d011682016040523d82523d6000602084013e62000359565b606091505b5090925090506200036d8683838762000389565b9695505050505050565b90565b6001600160a01b03163b151590565b60608315620003fd578251600003620003f5576001600160a01b0385163b620003f55760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401620001f1565b508162000409565b62000409838362000411565b949350505050565b815115620004225781518083602001fd5b8060405162461bcd60e51b8152600401620001f1919062000595565b80516001600160a01b03811681146200045657600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200048e57818101518382015260200162000474565b50506000910152565b600080600060608486031215620004ad57600080fd5b620004b8846200043e565b9250620004c8602085016200043e565b60408501519092506001600160401b0380821115620004e657600080fd5b818601915086601f830112620004fb57600080fd5b8151818111156200051057620005106200045b565b604051601f8201601f19908116603f011681019083821181831017156200053b576200053b6200045b565b816040528281528960208487010111156200055557600080fd5b6200056883602083016020880162000471565b80955050505050509250925092565b600082516200058b81846020870162000471565b9190910192915050565b6020815260008251806020840152620005b681604085016020870162000471565b601f01601f19169190910160400192915050565b61087580620005da6000396000f3fe60806040523661001357610011610017565b005b6100115b61001f6101a7565b6001600160a01b0316330361015f5760606001600160e01b0319600035166364d3180d60e11b810161005a576100536101da565b9150610157565b63587086bd60e11b6001600160e01b031982160161007a57610053610231565b63070d7c6960e41b6001600160e01b031982160161009a57610053610277565b621eb96f60e61b6001600160e01b03198216016100b9576100536102a8565b63a39f25e560e01b6001600160e01b03198216016100d9576100536102e8565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101676102fc565b565b606061018e83836040518060600160405280602781526020016108426027913961030c565b9392505050565b90565b6001600160a01b03163b151590565b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101e4610384565b60006101f33660048184610695565b81019061020091906106db565b905061021d8160405180602001604052806000815250600061038f565b505060408051602081019091526000815290565b60606000806102433660048184610695565b810190610250919061070c565b915091506102608282600161038f565b604051806020016040528060008152509250505090565b6060610281610384565b60006102903660048184610695565b81019061029d91906106db565b905061021d816103bb565b60606102b2610384565b60006102bc6101a7565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102f2610384565b60006102bc610412565b610167610307610412565b610421565b6060600080856001600160a01b03168560405161032991906107f2565b600060405180830381855af49150503d8060008114610364576040519150601f19603f3d011682016040523d82523d6000602084013e610369565b606091505b509150915061037a86838387610445565b9695505050505050565b341561016757600080fd5b610398836104c6565b6000825111806103a55750805b156103b6576103b48383610169565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103e46101a7565b604080516001600160a01b03928316815291841660208301520160405180910390a161040f81610506565b50565b600061041c6105af565b905090565b3660008037600080366000845af43d6000803e808015610440573d6000f35b3d6000fd5b606083156104b45782516000036104ad576001600160a01b0385163b6104ad5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014e565b50816104be565b6104be83836105d7565b949350505050565b6104cf81610601565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b03811661056b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014e565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101cb565b8151156105e75781518083602001fd5b8060405162461bcd60e51b815260040161014e919061080e565b6001600160a01b0381163b61066e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014e565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61058e565b600080858511156106a557600080fd5b838611156106b257600080fd5b5050820193919092039150565b80356001600160a01b03811681146106d657600080fd5b919050565b6000602082840312156106ed57600080fd5b61018e826106bf565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561071f57600080fd5b610728836106bf565b9150602083013567ffffffffffffffff8082111561074557600080fd5b818501915085601f83011261075957600080fd5b81358181111561076b5761076b6106f6565b604051601f8201601f19908116603f01168101908382118183101715610793576107936106f6565b816040528281528860208487010111156107ac57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60005b838110156107e95781810151838201526020016107d1565b50506000910152565b600082516108048184602087016107ce565b9190910192915050565b602081526000825180602084015261082d8160408501602087016107ce565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000ab53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c656400000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000003000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c80000000000000000000000003c44cdddb6a900fa2b585dd299e03d12fa4293bc00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000030b86b3146bdd2200b1dbdb1cea5e40d3451c028cbb4fb03b1826f7f2d82bee76bbd5cd68a74a16a7eceea093fd5826b9200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003087ce273bb9b51fd69e50de7a8d9a99cfb3b1a5c6a7b85f6673d137a5a2ce7df3d6ee4e6d579a142d58b0606c4a7a1c27000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030a33ac14980d85c0d154c5909ebf7a11d455f54beb4d5d0dc1d8b3670b9c4a6b6c450ee3d623ecc48026f09ed1f0b5c1200000000000000000000000000000000a164736f6c6343000811000a", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/9d09d0a3d6332460a810188261ec8195e05aa218", + Code: "608060405260043610620003db5760003560e01c806386d545061162000203578063d115a2061162000117578063e992aaf511620000ad578063f80a34021162000078578063f80a34021462000bed578063fb50b31f1462000c12578063fc0c5ff11462000c37578063ff69ab611462000c4f57600080fd5b8063e992aaf51462000b6a578063efdbf0e11462000b82578063f1f74d841462000bbe578063f1fad1041462000bd657600080fd5b8063d8ca511f11620000ee578063d8ca511f1462000afd578063daacdb661462000b15578063dbda7fb31462000b2d578063e8f67c3b1462000b5257600080fd5b8063d115a2061462000a9b578063d6ca429d1462000ab3578063d7c2dfc81462000ad857600080fd5b8063b187bd261162000199578063c38fbec81162000164578063c38fbec81462000a1d578063c473318f1462000a42578063c8509d81146200083b578063cbb04d9d1462000a5a57600080fd5b8063b187bd26146200098a578063baa7199e14620009aa578063bdceadf314620009cf578063bff02e2014620009e757600080fd5b8063982ef0a711620001da578063982ef0a714620008f5578063a43569b3146200090c578063aad3ec961462000940578063ac431751146200096557600080fd5b806386d5450614620008785780638a4d3fa814620008b25780638cd22b2214620008d057600080fd5b80634bf6c88211620002fb578063663706d3116200029157806376e7d6d6116200025c57806376e7d6d6146200080b5780638129fc1c1462000823578063831d65d1146200083b5780638456cb59146200086057600080fd5b8063663706d314620007385780636ec01b2714620007695780636f8e2fa414620007c157806375cc7d8914620007e657600080fd5b80635949187111620002d25780635949187114620006a05780635e7cc1c914620006c557806363a036b514620006ea57806364028fbd146200072157600080fd5b80634bf6c88214620006395780634d99dd1614620006635780634e6fd6c4146200068857600080fd5b80631fa8882b1162000371578063449ecfe61162000348578063449ecfe6146200058557806345211bfd14620005aa5780634838d16514620005cf5780634a49ac4c146200061457600080fd5b80631fa8882b1462000531578063384099881462000548578063417c73a7146200056057600080fd5b8063092193ab11620003b2578063092193ab146200047c5780630e9fbf5114620004935780631182b87514620004b857806317b4f35314620004ec57600080fd5b8063046f7da214620003fb578063059ddd2214620004135780630661806e146200045557600080fd5b36620003f65760345460ff16600114620003f457600080fd5b005b600080fd5b3480156200040857600080fd5b50620003f462000c67565b3480156200042057600080fd5b506200043862000432366004620093cc565b62000cf9565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156200046257600080fd5b506200046d60365481565b6040519081526020016200044c565b620003f46200048d366004620093cc565b6200110e565b348015620004a057600080fd5b50620003f4620004b236600462009430565b6200174c565b348015620004c557600080fd5b50620004dd620004d736600462009475565b62001a74565b6040516200044c919062009528565b348015620004f957600080fd5b50620004386200050b3660046200961e565b80516020818301810180516045825292820191909301209152546001600160a01b031681565b3480156200053e57600080fd5b506200046d603c81565b3480156200055557600080fd5b506200046d60375481565b3480156200056d57600080fd5b50620003f46200057f366004620093cc565b62001d4d565b3480156200059257600080fd5b50620003f4620005a4366004620093cc565b62001dcf565b348015620005b757600080fd5b50620003f4620005c9366004620093cc565b62001fb4565b348015620005dc57600080fd5b5062000603620005ee366004620093cc565b60016020526000908152604090205460ff1681565b60405190151581526020016200044c565b3480156200062157600080fd5b50620003f462000633366004620093cc565b6200218f565b3480156200064657600080fd5b5062000650600881565b60405160ff90911681526020016200044c565b3480156200067057600080fd5b50620003f46200068236600462009673565b6200220b565b3480156200069557600080fd5b506200043861dead81565b348015620006ad57600080fd5b50620003f4620006bf366004620096b1565b62002828565b348015620006d257600080fd5b50620003f4620006e436600462009721565b620035fa565b348015620006f757600080fd5b506200070f6200070936600462009741565b62003800565b6040516200044c9493929190620097aa565b620003f46200073236600462009866565b62003e92565b3480156200074557600080fd5b506200046d62000757366004620093cc565b60446020526000908152604090205481565b3480156200077657600080fd5b506200078e62000788366004620093cc565b620044dc565b6040805182516001600160401b03908116825260208085015182169083015292820151909216908201526060016200044c565b348015620007ce57600080fd5b50620004dd620007e0366004620093cc565b62004586565b348015620007f357600080fd5b50620003f462000805366004620093cc565b6200499f565b3480156200081857600080fd5b506200046d603d5481565b3480156200083057600080fd5b50620003f462004b71565b3480156200084857600080fd5b50620003f46200085a36600462009475565b62004e83565b3480156200086d57600080fd5b50620003f462004eed565b3480156200088557600080fd5b506200043862000897366004620093cc565b6043602052600090815260409020546001600160a01b031681565b348015620008bf57600080fd5b506200046d670de0b6b3a764000081565b348015620008dd57600080fd5b506200046d620008ef36600462009673565b62004f85565b620003f4620009063660046200993e565b6200503e565b3480156200091957600080fd5b50620009316200092b366004620093cc565b620056c8565b6040516200044c91906200997c565b3480156200094d57600080fd5b50620003f46200095f36600462009673565b620059b5565b3480156200097257600080fd5b50620003f462000984366004620099f9565b62005a22565b3480156200099757600080fd5b5060005462010000900460ff1662000603565b348015620009b757600080fd5b50620003f4620009c936600462009ab2565b620068c1565b348015620009dc57600080fd5b506200046d603c5481565b348015620009f457600080fd5b5062000a0c62000a0636600462009741565b62006a8e565b6040516200044c9392919062009b0e565b34801562000a2a57600080fd5b50620003f462000a3c366004620093cc565b62006c6a565b34801562000a4f57600080fd5b506200046d60385481565b34801562000a6757600080fd5b5062000a7f62000a79366004620093cc565b62006f28565b604080519384529115156020840152908201526060016200044c565b34801562000aa857600080fd5b506200046d61271081565b34801562000ac057600080fd5b50620003f462000ad236600462009b6b565b62007358565b34801562000ae557600080fd5b50620003f462000af736600462009c54565b6200755a565b34801562000b0a57600080fd5b506200046d603b5481565b34801562000b2257600080fd5b506200046d60495481565b34801562000b3a57600080fd5b506200043862000b4c366004620093cc565b62007650565b34801562000b5f57600080fd5b506200046d60355481565b34801562000b7757600080fd5b506200046d603a5481565b34801562000b8f57600080fd5b506200046d62000ba13660046200961e565b805160208183018101805160468252928201919093012091525481565b34801562000bcb57600080fd5b506200046d603e5481565b34801562000be357600080fd5b5062000650601181565b34801562000bfa57600080fd5b506200046d62000c0c36600462009673565b62007a67565b34801562000c1f57600080fd5b50620003f462000c31366004620099f9565b62007ad8565b34801562000c4457600080fd5b506200046d60395481565b34801562000c5c57600080fd5b506200046d604a5481565b600054630100000090046001600160a01b0316331462000c9a576040516306fbb1e360e01b815260040160405180910390fd5b60005462010000900460ff1662000cc457604051636cd6020160e01b815260040160405180910390fd5b6000805462ff0000191681556040517f62451d457bc659158be6e6247f56ec1df424a5c7597f71c20c2bc44e0965c8f99190a1565b6001600160a01b038082166000908152604160209081526040808320815161016081018352815486168152600182015486169381019390935260028101549094169082015260038301546060820152600483018054929384939091608084019162000d649062009cba565b80601f016020809104026020016040519081016040528092919081815260200182805462000d929062009cba565b801562000de35780601f1062000db75761010080835404028352916020019162000de3565b820191906000526020600020905b81548152906001019060200180831162000dc557829003601f168201915b505050505081526020016005820160405180608001604052908160008201805462000e0e9062009cba565b80601f016020809104026020016040519081016040528092919081815260200182805462000e3c9062009cba565b801562000e8d5780601f1062000e615761010080835404028352916020019162000e8d565b820191906000526020600020905b81548152906001019060200180831162000e6f57829003601f168201915b5050505050815260200160018201805462000ea89062009cba565b80601f016020809104026020016040519081016040528092919081815260200182805462000ed69062009cba565b801562000f275780601f1062000efb5761010080835404028352916020019162000f27565b820191906000526020600020905b81548152906001019060200180831162000f0957829003601f168201915b5050505050815260200160028201805462000f429062009cba565b80601f016020809104026020016040519081016040528092919081815260200182805462000f709062009cba565b801562000fc15780601f1062000f955761010080835404028352916020019162000fc1565b820191906000526020600020905b81548152906001019060200180831162000fa357829003601f168201915b5050505050815260200160038201805462000fdc9062009cba565b80601f01602080910402602001604051908101604052809291908181526020018280546200100a9062009cba565b80156200105b5780601f106200102f576101008083540402835291602001916200105b565b820191906000526020600020905b8154815290600101906020018083116200103d57829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152805161028081019182905260a09092019190600d84019060149082845b815481526020019060010190808311620010e7575050509190925250509051949350505050565b33611000146200113a57604051630f22c43960e41b815261100060048201526024015b60405180910390fd5b6001600160a01b03808216600090815260436020908152604080832054841680845260418352818420825161016081018452815487168152600182015487169481019490945260028101549095169183019190915260038401546060830152600484018054919491608084019190620011b39062009cba565b80601f0160208091040260200160405190810160405280929190818152602001828054620011e19062009cba565b8015620012325780601f10620012065761010080835404028352916020019162001232565b820191906000526020600020905b8154815290600101906020018083116200121457829003601f168201915b50505050508152602001600582016040518060800160405290816000820180546200125d9062009cba565b80601f01602080910402602001604051908101604052809291908181526020018280546200128b9062009cba565b8015620012dc5780601f10620012b057610100808354040283529160200191620012dc565b820191906000526020600020905b815481529060010190602001808311620012be57829003601f168201915b50505050508152602001600182018054620012f79062009cba565b80601f0160208091040260200160405190810160405280929190818152602001828054620013259062009cba565b8015620013765780601f106200134a5761010080835404028352916020019162001376565b820191906000526020600020905b8154815290600101906020018083116200135857829003601f168201915b50505050508152602001600282018054620013919062009cba565b80601f0160208091040260200160405190810160405280929190818152602001828054620013bf9062009cba565b8015620014105780601f10620013e45761010080835404028352916020019162001410565b820191906000526020600020905b815481529060010190602001808311620013f257829003601f168201915b505050505081526020016003820180546200142b9062009cba565b80601f0160208091040260200160405190810160405280929190818152602001828054620014599062009cba565b8015620014aa5780601f106200147e57610100808354040283529160200191620014aa565b820191906000526020600020905b8154815290600101906020018083116200148c57829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152805161028081019182905260a09092019190600d84019060149082845b81548152602001906001019080831162001536575050509190925250505060408101519091506001600160a01b031615806200157357508060e001515b156200163057604051611002903490600081818185875af1925050503d8060008114620015bd576040519150601f19603f3d011682016040523d82523d6000602084013e620015c2565b606091505b505050816001600160a01b03167ffc8bff675087dd2da069cc3fb517b9ed001e19750c0865241a5542dba1ba170d604051620016239060208082526011908201527024a72b20a624a22fab20a624a220aa27a960791b604082015260600190565b60405180910390a2505050565b60408181015160c0830151519151632f303ebb60e11b81526001600160401b0390921660048301526001600160a01b031690635e607d769034906024016000604051808303818588803b1580156200168757600080fd5b505af11580156200169c573d6000803e3d6000fd5b5050505050816001600160a01b03167fe34918ff1c7084970068b53fd71ad6d8b04e9f15d3886cbf006443e6cdc52ea634604051620016dd91815260200190565b60405180910390a26040808201519051633041949b60e01b815261200591633041949b91620017129190869060040162009cf0565b600060405180830381600087803b1580156200172d57600080fd5b505af115801562001742573d6000803e3d6000fd5b5050505050505b50565b33611001146200177457604051630f22c43960e41b8152611001600482015260240162001131565b60005462010000900460ff16156200179f57604051631785c68160e01b815260040160405180910390fd5b600060458383604051620017b592919062009d0a565b908152604051908190036020019020546001600160a01b03169050620017dd603f8262007d2a565b620017fb5760405163056e881160e01b815260040160405180910390fd5b6001600160a01b03811660009081526041602052604081209062001821603c4262009d30565b604a546000828152604b602052604090205491925011620018555760405163bd52fcdb60e01b815260040160405180910390fd5b6000818152604b602052604081208054600192906200187690849062009d53565b909155505060405160469062001890908790879062009d0a565b908152602001604051809103902054600014158015620018df575042603c60468787604051620018c292919062009d0a565b908152602001604051809103902054620018dd919062009d53565b105b15620018fe57604051631898eb6b60e01b815260040160405180910390fd5b6000806200190e85600262007d4d565b91509150816200193157604051631b919bb160e11b815260040160405180910390fd5b6002840154603c5460405163045bc4d160e41b815260048101919091526000916001600160a01b0316906345bc4d10906024016020604051808303816000875af115801562001984573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620019aa919062009d69565b9050620019b8858362007dd7565b856001600160a01b03167f6e9a2ee7aee95665e3a774a212eb11441b217e3e4656ab9563793094689aabb283836002604051620019f89392919062009d99565b60405180910390a26002850154604051633041949b60e01b815261200591633041949b9162001a36916001600160a01b0316908a9060040162009cf0565b600060405180830381600087803b15801562001a5157600080fd5b505af115801562001a66573d6000803e3d6000fd5b505050505050505050505050565b6060336120001462001a9e57604051630f22c43960e41b8152612000600482015260240162001131565b6034805460ff19166001179055604080516020601f8501819004810282018101909252838152600091829162001aef91879087908190840183828082843760009201919091525062007f9e92505050565b915091508062001b125760405163035ede3560e21b815260040160405180910390fd5b816060015160000362001b38575050604080516000815260208101909152905062001d3c565b606082015160405163e04c83a760e01b81526000916110049163e04c83a79162001b689160040190815260200190565b6020604051808303816000875af115801562001b88573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001bae919062009dc8565b90508062001c555782602001516001600160a01b031683600001516001600160a01b03167fa9084c89a291b43bc984e045671d394974730a159b9a826b577bb148ab504c3a8560600151600160405162001c0a92919062009de8565b60405180910390a385858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092965062001d3c95505050505050565b600062001c628462008101565b9050600081600381111562001c7b5762001c7b62009d83565b0362001c9d575050604080516000815260208101909152925062001d3c915050565b83602001516001600160a01b031684600001516001600160a01b03167fa9084c89a291b43bc984e045671d394974730a159b9a826b577bb148ab504c3a86606001518460405162001cf092919062009de8565b60405180910390a386868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092975062001d3c9650505050505050565b6034805460ff191690559392505050565b600054630100000090046001600160a01b0316331462001d80576040516306fbb1e360e01b815260040160405180910390fd5b6001600160a01b0381166000818152600160208190526040808320805460ff1916909217909155517f7fd26be6fc92aff63f1f4409b2b2ddeb272a888031d7f55ec830485ec61941869190a250565b60005462010000900460ff161562001dfa57604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff161562001e2c5760405163b1d02c3d60e01b815260040160405180910390fd5b8062001e3a603f8262007d2a565b62001e585760405163056e881160e01b815260040160405180910390fd5b6001600160a01b0382166000908152604160205260409020600a81015460ff1662001e9657604051634b6b857d60e01b815260040160405180910390fd5b6036546002820154604051630913db4760e01b81526001600160a01b03868116600483015290911690630913db4790602401602060405180830381865afa15801562001ee6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001f0c919062009d69565b101562001f2c576040516317b204bf60e11b815260040160405180910390fd5b4281600b0154111562001f525760405163170cb76760e21b815260040160405180910390fd5b600a8101805460ff19169055604980546001919060009062001f7690849062009e0f565b90915550506040516001600160a01b038416907f9390b453426557da5ebdc31f19a37753ca04addf656d32f35232211bb2af3f1990600090a2505050565b60005462010000900460ff161562001fdf57604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff1615620020115760405163b1d02c3d60e01b815260040160405180910390fd5b336200201f603f8262007d2a565b6200203d5760405163056e881160e01b815260040160405180910390fd5b6001600160a01b0382166200206557604051636520611b60e11b815260040160405180910390fd5b6001600160a01b0382811660009081526043602052604090205416151580620020a657506001600160a01b03821660009081526047602052604090205460ff165b15620020c557604051631e6f587560e11b815260040160405180910390fd5b336000818152604160205260409020600c8101544290620020e990603c9062009d53565b11156200210957604051631f92cdbd60e11b815260040160405180910390fd5b80546001600160a01b039081166000908152604460209081526040808320429081905585548986166001600160a01b031991821681178855600c88019290925581855260439093528184208054958816959093168517909255519092917f6e4e747ca35203f16401c69805c7dd52fff67ef60b0ebc5c7fe16890530f223591a350505050565b600054630100000090046001600160a01b03163314620021c2576040516306fbb1e360e01b815260040160405180910390fd5b6001600160a01b038116600081815260016020526040808220805460ff19169055517fe0db3499b7fdc3da4cddff5f45d694549c19835e7f719fb5606d3ad1a5de40119190a250565b60005462010000900460ff16156200223657604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff1615620022685760405163b1d02c3d60e01b815260040160405180910390fd5b8162002276603f8262007d2a565b620022945760405163056e881160e01b815260040160405180910390fd5b81600003620022b657604051639811e0c760e01b815260040160405180910390fd5b6001600160a01b03808416600090815260416020908152604080832081516101608101835281548616815260018201548616938101939093526002810154909416908201526003830154606082015260048301805433949160808401916200231e9062009cba565b80601f01602080910402602001604051908101604052809291908181526020018280546200234c9062009cba565b80156200239d5780601f1062002371576101008083540402835291602001916200239d565b820191906000526020600020905b8154815290600101906020018083116200237f57829003601f168201915b5050505050815260200160058201604051806080016040529081600082018054620023c89062009cba565b80601f0160208091040260200160405190810160405280929190818152602001828054620023f69062009cba565b8015620024475780601f106200241b5761010080835404028352916020019162002447565b820191906000526020600020905b8154815290600101906020018083116200242957829003601f168201915b50505050508152602001600182018054620024629062009cba565b80601f0160208091040260200160405190810160405280929190818152602001828054620024909062009cba565b8015620024e15780601f10620024b557610100808354040283529160200191620024e1565b820191906000526020600020905b815481529060010190602001808311620024c357829003601f168201915b50505050508152602001600282018054620024fc9062009cba565b80601f01602080910402602001604051908101604052809291908181526020018280546200252a9062009cba565b80156200257b5780601f106200254f576101008083540402835291602001916200257b565b820191906000526020600020905b8154815290600101906020018083116200255d57829003601f168201915b50505050508152602001600382018054620025969062009cba565b80601f0160208091040260200160405190810160405280929190818152602001828054620025c49062009cba565b8015620026155780601f10620025e95761010080835404028352916020019162002615565b820191906000526020600020905b815481529060010190602001808311620025f757829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152805161028081019182905260a09092019190600d84019060149082845b815481526020019060010190808311620026a1575050509190925250505060408082015190516326ccee8b60e11b81526001600160a01b0385811660048301526024820188905292935060009290911690634d99dd16906044016020604051808303816000875af11580156200271b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002741919062009d69565b9050826001600160a01b0316866001600160a01b03167f3aace7340547de7b9156593a7652dc07ee900cea3fd8f82cb6c9d38b40829802878460405162002792929190918252602082015260400190565b60405180910390a3856001600160a01b0316836001600160a01b031603620027bf57620027bf8662008794565b6040808301519051633041949b60e01b815261200591633041949b91620027ec9190879060040162009cf0565b600060405180830381600087803b1580156200280757600080fd5b505af11580156200281c573d6000803e3d6000fd5b50505050505050505050565b60005462010000900460ff16156200285357604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff1615620028855760405163b1d02c3d60e01b815260040160405180910390fd5b8362002893603f8262007d2a565b620028b15760405163056e881160e01b815260040160405180910390fd5b83620028bf603f8262007d2a565b620028dd5760405163056e881160e01b815260040160405180910390fd5b6034805460ff1916600117905560008490036200290d57604051639811e0c760e01b815260040160405180910390fd5b846001600160a01b0316866001600160a01b031603620029405760405163f0e3e62960e01b815260040160405180910390fd5b6001600160a01b0380871660009081526041602090815260408083208151610160810183528154861681526001820154861693810193909352600281015490941690820152600383015460608201526004830180543394916080840191620029a89062009cba565b80601f0160208091040260200160405190810160405280929190818152602001828054620029d69062009cba565b801562002a275780601f10620029fb5761010080835404028352916020019162002a27565b820191906000526020600020905b81548152906001019060200180831162002a0957829003601f168201915b505050505081526020016005820160405180608001604052908160008201805462002a529062009cba565b80601f016020809104026020016040519081016040528092919081815260200182805462002a809062009cba565b801562002ad15780601f1062002aa55761010080835404028352916020019162002ad1565b820191906000526020600020905b81548152906001019060200180831162002ab357829003601f168201915b5050505050815260200160018201805462002aec9062009cba565b80601f016020809104026020016040519081016040528092919081815260200182805462002b1a9062009cba565b801562002b6b5780601f1062002b3f5761010080835404028352916020019162002b6b565b820191906000526020600020905b81548152906001019060200180831162002b4d57829003601f168201915b5050505050815260200160028201805462002b869062009cba565b80601f016020809104026020016040519081016040528092919081815260200182805462002bb49062009cba565b801562002c055780601f1062002bd95761010080835404028352916020019162002c05565b820191906000526020600020905b81548152906001019060200180831162002be757829003601f168201915b5050505050815260200160038201805462002c209062009cba565b80601f016020809104026020016040519081016040528092919081815260200182805462002c4e9062009cba565b801562002c9f5780601f1062002c735761010080835404028352916020019162002c9f565b820191906000526020600020905b81548152906001019060200180831162002c8157829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152805161028081019182905260a09092019190600d84019060149082845b81548152602001906001019080831162002d2b57505050919092525050506001600160a01b0380891660009081526041602090815260408083208151610160810183528154861681526001820154861693810193909352600281015490941690820152600383015460608201526004830180549495509193909291608084019162002db69062009cba565b80601f016020809104026020016040519081016040528092919081815260200182805462002de49062009cba565b801562002e355780601f1062002e095761010080835404028352916020019162002e35565b820191906000526020600020905b81548152906001019060200180831162002e1757829003601f168201915b505050505081526020016005820160405180608001604052908160008201805462002e609062009cba565b80601f016020809104026020016040519081016040528092919081815260200182805462002e8e9062009cba565b801562002edf5780601f1062002eb35761010080835404028352916020019162002edf565b820191906000526020600020905b81548152906001019060200180831162002ec157829003601f168201915b5050505050815260200160018201805462002efa9062009cba565b80601f016020809104026020016040519081016040528092919081815260200182805462002f289062009cba565b801562002f795780601f1062002f4d5761010080835404028352916020019162002f79565b820191906000526020600020905b81548152906001019060200180831162002f5b57829003601f168201915b5050505050815260200160028201805462002f949062009cba565b80601f016020809104026020016040519081016040528092919081815260200182805462002fc29062009cba565b8015620030135780601f1062002fe75761010080835404028352916020019162003013565b820191906000526020600020905b81548152906001019060200180831162002ff557829003601f168201915b505050505081526020016003820180546200302e9062009cba565b80601f01602080910402602001604051908101604052809291908181526020018280546200305c9062009cba565b8015620030ad5780601f106200308157610100808354040283529160200191620030ad565b820191906000526020600020905b8154815290600101906020018083116200308f57829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152805161028081019182905260a09092019190600d84019060149082845b815481526020019060010190808311620031395750505050508152505090508060e0015180156200317c5750876001600160a01b0316836001600160a01b031614155b156200319b57604051636468920360e01b815260040160405180910390fd5b60408083015190516352e82ce560e11b81526001600160a01b038581166004830152602482018a9052600092169063a5d059ca906044016020604051808303816000875af1158015620031f2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003218919062009d69565b90506037548110156200323e5760405163dc6f0bdd60e01b815260040160405180910390fd5b896001600160a01b0316846001600160a01b0316148015620032d357506036546040808501519051630913db4760e01b81526001600160a01b038d8116600483015290911690630913db4790602401602060405180830381865afa158015620032ab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620032d1919062009d69565b105b15620032f2576040516317b204bf60e11b815260040160405180910390fd5b6000612710603a548362003307919062009e25565b62003313919062009d30565b9050600083604001516001600160a01b03168260405160006040518083038185875af1925050503d806000811462003368576040519150601f19603f3d011682016040523d82523d6000602084013e6200336d565b606091505b505090508062003390576040516312171d8360e31b815260040160405180910390fd5b6200339c828462009e0f565b60408086015190516317066a5760e21b81526001600160a01b03898116600483015292955060009290911690635c19a95c90869060240160206040518083038185885af1158015620033f2573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019062003419919062009d69565b9050866001600160a01b03168c6001600160a01b03168e6001600160a01b03167ffdac6e81913996d95abcc289e90f2d8bd235487ce6fe6f821e7d21002a1915b48e85896040516200347e939291909283526020830191909152604082015260600190565b60405180910390a4604080516002808252606082018352600092602083019080368337019050509050866040015181600081518110620034c257620034c262009e3f565b60200260200101906001600160a01b031690816001600160a01b031681525050856040015181600181518110620034fd57620034fd62009e3f565b6001600160a01b0390921660209283029190910190910152604051634484077560e01b8152612005906344840775906200353e9084908c9060040162009e55565b600060405180830381600087803b1580156200355957600080fd5b505af11580156200356e573d6000803e3d6000fd5b505050508a15620035e0576120056001600160a01b031663e5ed5b1e898f6040518363ffffffff1660e01b8152600401620035ab92919062009cf0565b600060405180830381600087803b158015620035c657600080fd5b505af1158015620035db573d6000803e3d6000fd5b505050505b50506034805460ff19169055505050505050505050505050565b60005462010000900460ff16156200362557604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff1615620036575760405163b1d02c3d60e01b815260040160405180910390fd5b3362003665603f8262007d2a565b620036835760405163056e881160e01b815260040160405180910390fd5b336000818152604160205260409020600c8101544290620036a790603c9062009d53565b1115620036c757604051631f92cdbd60e11b815260040160405180910390fd5b60098101546001600160401b03600160401b90910481169085161115620037015760405163dc81db8560e01b815260040160405180910390fd5b60098101546000906001600160401b0390811690861610156200373f576009820154620037399086906001600160401b031662009e81565b62003759565b600982015462003759906001600160401b03168662009e81565b60098301546001600160401b039182169250600160801b900416811115620037945760405163dc81db8560e01b815260040160405180910390fd5b60098201805467ffffffffffffffff19166001600160401b03871690811790915542600c8401556040519081526001600160a01b038416907f78cdd96edf59e09cfd4d26ef6ef6c92d166effe6a40970c54821206d541932cb9060200160405180910390a25050505050565b6060806060600062003813603f620088ba565b90508086101562003e895784156200382c57846200382e565b805b94506000856200383f888462009e0f565b11620038575762003851878362009e0f565b62003859565b855b9050806001600160401b038111156200387657620038766200953d565b604051908082528060200260200182016040528015620038a0578160200160208202803683370190505b509450806001600160401b03811115620038be57620038be6200953d565b604051908082528060200260200182016040528015620038e8578160200160208202803683370190505b509350806001600160401b038111156200390657620039066200953d565b6040519080825280602002602001820160405280156200393b57816020015b6060815260200190600190039081620039255790505b50925060005b8181101562003e86576000620039656200395c838b62009d53565b603f90620088c5565b6001600160a01b03808216600090815260416020908152604080832081516101608101835281548616815260018201548616938101939093526002810154909416908201526003830154606082015260048301805494955091939092916080840191620039d29062009cba565b80601f016020809104026020016040519081016040528092919081815260200182805462003a009062009cba565b801562003a515780601f1062003a255761010080835404028352916020019162003a51565b820191906000526020600020905b81548152906001019060200180831162003a3357829003601f168201915b505050505081526020016005820160405180608001604052908160008201805462003a7c9062009cba565b80601f016020809104026020016040519081016040528092919081815260200182805462003aaa9062009cba565b801562003afb5780601f1062003acf5761010080835404028352916020019162003afb565b820191906000526020600020905b81548152906001019060200180831162003add57829003601f168201915b5050505050815260200160018201805462003b169062009cba565b80601f016020809104026020016040519081016040528092919081815260200182805462003b449062009cba565b801562003b955780601f1062003b695761010080835404028352916020019162003b95565b820191906000526020600020905b81548152906001019060200180831162003b7757829003601f168201915b5050505050815260200160028201805462003bb09062009cba565b80601f016020809104026020016040519081016040528092919081815260200182805462003bde9062009cba565b801562003c2f5780601f1062003c035761010080835404028352916020019162003c2f565b820191906000526020600020905b81548152906001019060200180831162003c1157829003601f168201915b5050505050815260200160038201805462003c4a9062009cba565b80601f016020809104026020016040519081016040528092919081815260200182805462003c789062009cba565b801562003cc95780601f1062003c9d5761010080835404028352916020019162003cc9565b820191906000526020600020905b81548152906001019060200180831162003cab57829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152805161028081019182905260a09092019190600d84019060149082845b81548152602001906001019080831162003d55575050505050815250509050806000015188848151811062003d8e5762003d8e62009e3f565b60200260200101906001600160a01b031690816001600160a01b0316815250508060e0015162003e275780604001516001600160a01b03166315d1f8986040518163ffffffff1660e01b8152600401602060405180830381865afa15801562003dfb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003e21919062009d69565b62003e2a565b60005b87848151811062003e3f5762003e3f62009e3f565b602002602001018181525050806080015186848151811062003e655762003e6562009e3f565b602002602001018190525050508062003e7e9062009ea4565b905062003941565b50505b92959194509250565b60005462010000900460ff161562003ebd57604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff161562003eef5760405163b1d02c3d60e01b815260040160405180910390fd5b3362003efd603f8262007d2a565b1562003f1c57604051635f28f62b60e01b815260040160405180910390fd5b6001600160a01b038881166000908152604360205260409020541615158062003f5d57506001600160a01b03881660009081526047602052604090205460ff165b1562003f7c57604051631e6f587560e11b815260040160405180910390fd5b60006001600160a01b03166045888860405162003f9b92919062009d0a565b908152604051908190036020019020546001600160a01b031614158062003fe557506048878760405162003fd192919062009d0a565b9081526040519081900360200190205460ff165b1562004004576040516311fdb94760e01b815260040160405180910390fd5b600062004012838062009ec0565b6040516020016200402592919062009d0a565b60408051601f1981840301815291815281516020928301206000818152604290935291205490915060ff16156200406f5760405163c0bf414360e01b815260040160405180910390fd5b600062004085670de0b6b3a76400003462009e0f565b9050603654811015620040ab576040516317b204bf60e11b815260040160405180910390fd5b6001600160a01b038a16620040d357604051636520611b60e11b815260040160405180910390fd5b611388620040e8604087016020880162009721565b6001600160401b031611806200412e57506200410b604086016020870162009721565b6001600160401b031662004123602087018762009721565b6001600160401b0316115b806200416d575062004147604086016020870162009721565b6001600160401b031662004162606087016040880162009721565b6001600160401b0316115b156200418c5760405163dc81db8560e01b815260040160405180910390fd5b620041d76200419c858062009ec0565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250620088d392505050565b620041f557604051635dba5ad760e01b815260040160405180910390fd5b62004204838a8a8a8a62008a75565b6200422257604051631647e3cb60e11b815260040160405180910390fd5b6000620042708462004235878062009ec0565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525062008ba592505050565b90506200427f603f8562008ca6565b506000838152604260209081526040808320805460ff191660019081179091556001600160a01b0380891680865260419094529190932080548f83166001600160a01b031991821617825593810180548516909317909255600282018054918516919093161790915542600382015560048101620042ff8b8d8362009f68565b5085600582016200431182826200a030565b50879050600982016200432582826200a169565b505042600c8201556001600160a01b038c81166000908152604360205260409081902080546001600160a01b0319169288169290921790915551859060459062004373908e908e9062009d0a565b908152602001604051809103902060006101000a8154816001600160a01b0302191690836001600160a01b03160217905550816001600160a01b0316856001600160a01b03168d6001600160a01b03167faecd9fb95e79c75a3a1de93362c6be5fe6ab65770d8614be583884161cd8228d8e8e604051620043f69291906200a239565b60405180910390a460408051848152602081018590526001600160a01b0387169182916000805160206200b540833981519152910160405180910390a360408051670de0b6b3a7640000808252602082015261dead916001600160a01b038816916000805160206200b540833981519152910160405180910390a3604051633041949b60e01b815261200590633041949b906200449a908590899060040162009cf0565b600060405180830381600087803b158015620044b557600080fd5b505af1158015620044ca573d6000803e3d6000fd5b50505050505050505050505050505050565b60408051606081018252600080825260208201819052918101919091528162004507603f8262007d2a565b620045255760405163056e881160e01b815260040160405180910390fd5b6001600160a01b03831660009081526041602090815260409182902082516060810184526009909101546001600160401b038082168352600160401b8204811693830193909352600160801b90049091169181019190915291505b50919050565b6001600160a01b03808216600090815260416020908152604080832081516101608101835281548616815260018201548616938101939093526002810154909416908201526003830154606082810191909152600484018054919491608084019190620045f39062009cba565b80601f0160208091040260200160405190810160405280929190818152602001828054620046219062009cba565b8015620046725780601f10620046465761010080835404028352916020019162004672565b820191906000526020600020905b8154815290600101906020018083116200465457829003601f168201915b50505050508152602001600582016040518060800160405290816000820180546200469d9062009cba565b80601f0160208091040260200160405190810160405280929190818152602001828054620046cb9062009cba565b80156200471c5780601f10620046f0576101008083540402835291602001916200471c565b820191906000526020600020905b815481529060010190602001808311620046fe57829003601f168201915b50505050508152602001600182018054620047379062009cba565b80601f0160208091040260200160405190810160405280929190818152602001828054620047659062009cba565b8015620047b65780601f106200478a57610100808354040283529160200191620047b6565b820191906000526020600020905b8154815290600101906020018083116200479857829003601f168201915b50505050508152602001600282018054620047d19062009cba565b80601f0160208091040260200160405190810160405280929190818152602001828054620047ff9062009cba565b8015620048505780601f10620048245761010080835404028352916020019162004850565b820191906000526020600020905b8154815290600101906020018083116200483257829003601f168201915b505050505081526020016003820180546200486b9062009cba565b80601f0160208091040260200160405190810160405280929190818152602001828054620048999062009cba565b8015620048ea5780601f10620048be57610100808354040283529160200191620048ea565b820191906000526020600020905b815481529060010190602001808311620048cc57829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152805161028081019182905260a09092019190600d84019060149082845b815481526020019060010190808311620049765750505091909252505050608001519392505050565b3361100114620049c757604051630f22c43960e41b8152611001600482015260240162001131565b6001600160a01b0380821660009081526043602052604090205416620049ef603f8262007d2a565b62004a0d5760405163056e881160e01b815260040160405180910390fd5b6001600160a01b038181166000908152604160205260408082206002810154603b54925163045bc4d160e41b81526004810193909352909316906345bc4d10906024016020604051808303816000875af115801562004a70573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062004a96919062009d69565b90506000603d544262004aaa919062009d53565b905062004ab8838262007dd7565b836001600160a01b03167f6e9a2ee7aee95665e3a774a212eb11441b217e3e4656ab9563793094689aabb28284600160405162004af89392919062009d99565b60405180910390a26002830154604051633041949b60e01b815261200591633041949b9162004b36916001600160a01b031690889060040162009cf0565b600060405180830381600087803b15801562004b5157600080fd5b505af115801562004b66573d6000803e3d6000fd5b505050505050505050565b600054610100900460ff161580801562004b925750600054600160ff909116105b8062004bae5750303b15801562004bae575060005460ff166001145b62004c135760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840162001131565b6000805460ff19166001179055801562004c37576000805461ff0019166101001790555b33411462004c585760405163022d8c9560e31b815260040160405180910390fd5b3a1562004c78576040516383f1b1d360e01b815260040160405180910390fd5b611388603555686c6b935b8bbd400000603655670de0b6b3a7640000603755602d603855607860398190556002603a819055678ac7230489e80000603b55680ad78ebc5ac6200000603c55603d9190915560b4603e55604a556040805160c0810190915260a080825260609182916200b560602083013980602001905181019062004d0491906200a275565b9150604051806101e001604052806101c081526020016200b6006101c0913980602001905181019062004d3891906200a319565b905060005b825181101562004da75760016047600085848151811062004d625762004d6262009e3f565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905562004d9f8162009ea4565b905062004d3d565b5060005b815181101562004e18576001604883838151811062004dce5762004dce62009e3f565b602002602001015160405162004de591906200a416565b908152604051908190036020019020805491151560ff1990921691909117905562004e108162009ea4565b905062004dab565b5062004e3873df87f0e2b8519ea2dd4abd8b639cdd628497ed2562008cbd565b5050801562001749576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b336120001462004eab57604051630f22c43960e41b8152612000600482015260240162001131565b7faa5ba621c8b3d7d05bb9e51a7506108251d4d5dbe542ca66fc7bb52aacb02b6583838360405162004ee0939291906200a434565b60405180910390a1505050565b600054630100000090046001600160a01b0316331462004f20576040516306fbb1e360e01b815260040160405180910390fd5b60005462010000900460ff161562004f4b57604051631785c68160e01b815260040160405180910390fd5b6000805462ff00001916620100001781556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e7529190a1565b600062004f94603f8462007d2a565b62004fb25760405163056e881160e01b815260040160405180910390fd5b6001600160a01b0383811660009081526041602052604090819020600201549051636bbf224960e01b815260048101859052911690636bbf2249906024015b602060405180830381865afa1580156200500f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062005035919062009d69565b90505b92915050565b60005462010000900460ff16156200506957604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff16156200509b5760405163b1d02c3d60e01b815260040160405180910390fd5b81620050a9603f8262007d2a565b620050c75760405163056e881160e01b815260040160405180910390fd5b6037543490811015620050ed5760405163dc6f0bdd60e01b815260040160405180910390fd5b6001600160a01b0380851660009081526041602090815260408083208151610160810183528154861681526001820154861693810193909352600281015490941690820152600383015460608201526004830180543394916080840191620051559062009cba565b80601f0160208091040260200160405190810160405280929190818152602001828054620051839062009cba565b8015620051d45780601f10620051a857610100808354040283529160200191620051d4565b820191906000526020600020905b815481529060010190602001808311620051b657829003601f168201915b5050505050815260200160058201604051806080016040529081600082018054620051ff9062009cba565b80601f01602080910402602001604051908101604052809291908181526020018280546200522d9062009cba565b80156200527e5780601f1062005252576101008083540402835291602001916200527e565b820191906000526020600020905b8154815290600101906020018083116200526057829003601f168201915b50505050508152602001600182018054620052999062009cba565b80601f0160208091040260200160405190810160405280929190818152602001828054620052c79062009cba565b8015620053185780601f10620052ec5761010080835404028352916020019162005318565b820191906000526020600020905b815481529060010190602001808311620052fa57829003601f168201915b50505050508152602001600282018054620053339062009cba565b80601f0160208091040260200160405190810160405280929190818152602001828054620053619062009cba565b8015620053b25780601f106200538657610100808354040283529160200191620053b2565b820191906000526020600020905b8154815290600101906020018083116200539457829003601f168201915b50505050508152602001600382018054620053cd9062009cba565b80601f0160208091040260200160405190810160405280929190818152602001828054620053fb9062009cba565b80156200544c5780601f1062005420576101008083540402835291602001916200544c565b820191906000526020600020905b8154815290600101906020018083116200542e57829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152805161028081019182905260a09092019190600d84019060149082845b815481526020019060010190808311620054d85750505050508152505090508060e0015180156200551b5750856001600160a01b0316826001600160a01b031614155b156200553a57604051636468920360e01b815260040160405180910390fd5b60408082015190516317066a5760e21b81526001600160a01b0384811660048301526000921690635c19a95c90869060240160206040518083038185885af11580156200558b573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190620055b2919062009d69565b9050826001600160a01b0316876001600160a01b03166000805160206200b5408339815191528387604051620055f2929190918252602082015260400190565b60405180910390a36040808301519051633041949b60e01b815261200591633041949b91620056279190879060040162009cf0565b600060405180830381600087803b1580156200564257600080fd5b505af115801562005657573d6000803e3d6000fd5b50505050851562001742576040516372f6ad8f60e11b81526120059063e5ed5b1e906200568b9086908b9060040162009cf0565b600060405180830381600087803b158015620056a657600080fd5b505af1158015620056bb573d6000803e3d6000fd5b5050505050505050505050565b620056f46040518060800160405280606081526020016060815260200160608152602001606081525090565b8162005702603f8262007d2a565b620057205760405163056e881160e01b815260040160405180910390fd5b6001600160a01b03831660009081526041602052604090819020815160808101909252600501805482908290620057579062009cba565b80601f0160208091040260200160405190810160405280929190818152602001828054620057859062009cba565b8015620057d65780601f10620057aa57610100808354040283529160200191620057d6565b820191906000526020600020905b815481529060010190602001808311620057b857829003601f168201915b50505050508152602001600182018054620057f19062009cba565b80601f01602080910402602001604051908101604052809291908181526020018280546200581f9062009cba565b8015620058705780601f10620058445761010080835404028352916020019162005870565b820191906000526020600020905b8154815290600101906020018083116200585257829003601f168201915b505050505081526020016002820180546200588b9062009cba565b80601f0160208091040260200160405190810160405280929190818152602001828054620058b99062009cba565b80156200590a5780601f10620058de576101008083540402835291602001916200590a565b820191906000526020600020905b815481529060010190602001808311620058ec57829003601f168201915b50505050508152602001600382018054620059259062009cba565b80601f0160208091040260200160405190810160405280929190818152602001828054620059539062009cba565b8015620059a45780601f106200597857610100808354040283529160200191620059a4565b820191906000526020600020905b8154815290600101906020018083116200598657829003601f168201915b505050505081525050915050919050565b60005462010000900460ff1615620059e057604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff161562005a125760405163b1d02c3d60e01b815260040160405180910390fd5b62005a1e828262008d56565b5050565b336110071462005a4a57604051630f22c43960e41b8152611007600482015260240162001131565b62005ab76040518060400160405280601081526020016f1d1c985b9cd9995c91d85cd31a5b5a5d60821b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062008e629050565b1562005b72576020811462005ae95783838383604051630a5a604160e01b81526004016200113194939291906200a453565b604080516020601f840181900481028201810190925282815260009162005b2c91858580838501838280828437600092019190915250929392505062008ebf9050565b90506108fc81108062005b40575061271081115b1562005b695784848484604051630a5a604160e01b81526004016200113194939291906200a453565b6035556200687c565b62005be36040518060400160405280601481526020017336b4b729b2b6332232b632b3b0ba34b7b721272160611b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062008e629050565b1562005cad576020811462005c155783838383604051630a5a604160e01b81526004016200113194939291906200a453565b604080516020601f840181900481028201810190925282815260009162005c5891858580838501838280828437600092019190915250929392505062008ebf9050565b9050683635c9adc5dea0000081108062005c7b575069152d02c7e14af680000081115b1562005ca45784848484604051630a5a604160e01b81526004016200113194939291906200a453565b6036556200687c565b62005d20604051806040016040528060168152602001756d696e44656c65676174696f6e424e424368616e676560501b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062008e629050565b1562005de7576020811462005d525783838383604051630a5a604160e01b81526004016200113194939291906200a453565b604080516020601f840181900481028201810190925282815260009162005d9591858580838501838280828437600092019190915250929392505062008ebf9050565b905067016345785d8a000081108062005db55750678ac7230489e8000081115b1562005dde5784848484604051630a5a604160e01b81526004016200113194939291906200a453565b6037556200687c565b62005e58604051806040016040528060148152602001736d6178456c656374656456616c696461746f727360601b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062008e629050565b1562005f10576020811462005e8a5783838383604051630a5a604160e01b81526004016200113194939291906200a453565b604080516020601f840181900481028201810190925282815260009162005ecd91858580838501838280828437600092019190915250929392505062008ebf9050565b905080158062005ede57506101f481115b1562005f075784848484604051630a5a604160e01b81526004016200113194939291906200a453565b6038556200687c565b62005f796040518060400160405280600c81526020016b1d5b989bdb9914195c9a5bd960a21b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062008e629050565b1562006036576020811462005fab5783838383604051630a5a604160e01b81526004016200113194939291906200a453565b604080516020601f840181900481028201810190925282815260009162005fee91858580838501838280828437600092019190915250929392505062008ebf9050565b90506203f48081108062006004575062278d0081115b156200602d5784848484604051630a5a604160e01b81526004016200113194939291906200a453565b6039556200687c565b620060a460405180604001604052806011815260200170726564656c65676174654665655261746560781b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062008e629050565b15620061515760208114620060d65783838383604051630a5a604160e01b81526004016200113194939291906200a453565b604080516020601f84018190048102820181019092528281526000916200611991858580838501838280828437600092019190915250929392505062008ebf9050565b90506064811115620061485784848484604051630a5a604160e01b81526004016200113194939291906200a453565b603a556200687c565b620061c160405180604001604052806013815260200172191bdddb9d1a5b5954db185cda105b5bdd5b9d606a1b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062008e629050565b15620062825760208114620061f35783838383604051630a5a604160e01b81526004016200113194939291906200a453565b604080516020601f84018190048102820181019092528281526000916200623691858580838501838280828437600092019190915250929392505062008ebf9050565b9050674563918244f40000811080620062505750603c5481115b15620062795784848484604051630a5a604160e01b81526004016200113194939291906200a453565b603b556200687c565b620062f06040518060400160405280601181526020017019995b1bdb9e54db185cda105b5bdd5b9d607a1b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062008e629050565b15620063b35760208114620063225783838383604051630a5a604160e01b81526004016200113194939291906200a453565b604080516020601f84018190048102820181019092528281526000916200636591858580838501838280828437600092019190915250929392505062008ebf9050565b905068056bc75e2d63100000811080620063815750603b548111155b15620063aa5784848484604051630a5a604160e01b81526004016200113194939291906200a453565b603c556200687c565b620064206040518060400160405280601081526020016f646f776e74696d654a61696c54696d6560801b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062008e629050565b15620064dd5760208114620064525783838383604051630a5a604160e01b81526004016200113194939291906200a453565b604080516020601f84018190048102820181019092528281526000916200649591858580838501838280828437600092019190915250929392505062008ebf9050565b90506202a300811080620064ab5750603e548110155b15620064d45784848484604051630a5a604160e01b81526004016200113194939291906200a453565b603d556200687c565b620065486040518060400160405280600e81526020016d66656c6f6e794a61696c54696d6560901b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062008e629050565b156200660557602081146200657a5783838383604051630a5a604160e01b81526004016200113194939291906200a453565b604080516020601f8401819004810282018101909252828152600091620065bd91858580838501838280828437600092019190915250929392505062008ebf9050565b9050620d2f00811080620065d35750603d548111155b15620065fc5784848484604051630a5a604160e01b81526004016200113194939291906200a453565b603e556200687c565b6200667f6040518060400160405280601c81526020017f6d617846656c6f6e794265747765656e42726561746865426c6f636b0000000081525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062008e629050565b156200672b5760208114620066b15783838383604051630a5a604160e01b81526004016200113194939291906200a453565b604080516020601f8401819004810282018101909252828152600091620066f491858580838501838280828437600092019190915250929392505062008ebf9050565b905080600003620067225784848484604051630a5a604160e01b81526004016200113194939291906200a453565b604a556200687c565b620067996040518060400160405280601181526020017039ba30b5b2a43ab1283937ba32b1ba37b960791b81525085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062008e629050565b15620068595760148114620067cb5783838383604051630a5a604160e01b81526004016200113194939291906200a453565b600062006813601484848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505062008ebf9050565b90506001600160a01b038116620068475784848484604051630a5a604160e01b81526004016200113194939291906200a453565b620068528162008ec4565b506200687c565b838383836040516325ee20d560e21b81526004016200113194939291906200a453565b7ff1ce9b2cbf50eeb05769a29e2543fd350cab46894a7dd9978a12d534bb20e63384848484604051620068b394939291906200a453565b60405180910390a150505050565b60005462010000900460ff1615620068ec57604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff16156200691e5760405163b1d02c3d60e01b815260040160405180910390fd5b816000816001600160401b038111156200693c576200693c6200953d565b60405190808252806020026020018201604052801562006966578160200160208202803683370190505b5090506000805b8381101562006a6457620069af8787838181106200698f576200698f62009e3f565b9050602002016020810190620069a69190620093cc565b603f9062007d2a565b620069cd5760405163056e881160e01b815260040160405180910390fd5b60416000888884818110620069e657620069e662009e3f565b9050602002016020810190620069fd9190620093cc565b6001600160a01b039081168252602082019290925260400160002060020154845191169250829084908390811062006a395762006a3962009e3f565b6001600160a01b039092166020928302919091019091015262006a5c8162009ea4565b90506200696d565b50604051634484077560e01b815261200590634484077590620027ec908590889060040162009e55565b606080600062006a9f603f620088ba565b90508085101562006c6357831562006ab8578362006aba565b805b935060008462006acb878462009e0f565b1162006ae35762006add868362009e0f565b62006ae5565b845b9050806001600160401b0381111562006b025762006b026200953d565b60405190808252806020026020018201604052801562006b2c578160200160208202803683370190505b509350806001600160401b0381111562006b4a5762006b4a6200953d565b60405190808252806020026020018201604052801562006b74578160200160208202803683370190505b50925060005b8181101562006c605762006b936200395c828962009d53565b85828151811062006ba85762006ba862009e3f565b60200260200101906001600160a01b031690816001600160a01b0316815250506041600086838151811062006be15762006be162009e3f565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060020160009054906101000a90046001600160a01b031684828151811062006c355762006c3562009e3f565b6001600160a01b039092166020928302919091019091015262006c588162009ea4565b905062006b7a565b50505b9250925092565b336110011462006c9257604051630f22c43960e41b8152611001600482015260240162001131565b60005462010000900460ff161562006cbd57604051631785c68160e01b815260040160405180910390fd5b6001600160a01b038082166000908152604360205260409020541662006ce5603f8262007d2a565b62006d035760405163056e881160e01b815260040160405180910390fd5b6001600160a01b03811660009081526041602052604081209062006d29603c4262009d30565b604a546000828152604b60205260409020549192501162006d5d5760405163bd52fcdb60e01b815260040160405180910390fd5b6000818152604b6020526040812080546001929062006d7e90849062009d53565b90915550506001600160a01b0384166000908152604460205260409020541580159062006dd157506001600160a01b038416600090815260446020526040902054429062006dcf90603c9062009d53565b105b1562006df0576040516330abb81d60e21b815260040160405180910390fd5b60008062006e0085600062007d4d565b915091508162006e2357604051631b919bb160e11b815260040160405180910390fd5b6002840154603c5460405163045bc4d160e41b815260048101919091526000916001600160a01b0316906345bc4d10906024016020604051808303816000875af115801562006e76573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062006e9c919062009d69565b905062006eaa858362007dd7565b856001600160a01b03167f6e9a2ee7aee95665e3a774a212eb11441b217e3e4656ab9563793094689aabb28383600060405162006eea9392919062009d99565b60405180910390a26002850154604051633041949b60e01b815261200591633041949b916200568b916001600160a01b0316908a9060040162009cf0565b6001600160a01b038082166000908152604160209081526040808320815161016081018352815486168152600182015486169381019390935260028101549094169082015260038301546060820152600483018054929384938493849390929160808401919062006f999062009cba565b80601f016020809104026020016040519081016040528092919081815260200182805462006fc79062009cba565b8015620070185780601f1062006fec5761010080835404028352916020019162007018565b820191906000526020600020905b81548152906001019060200180831162006ffa57829003601f168201915b5050505050815260200160058201604051806080016040529081600082018054620070439062009cba565b80601f0160208091040260200160405190810160405280929190818152602001828054620070719062009cba565b8015620070c25780601f106200709657610100808354040283529160200191620070c2565b820191906000526020600020905b815481529060010190602001808311620070a457829003601f168201915b50505050508152602001600182018054620070dd9062009cba565b80601f01602080910402602001604051908101604052809291908181526020018280546200710b9062009cba565b80156200715c5780601f1062007130576101008083540402835291602001916200715c565b820191906000526020600020905b8154815290600101906020018083116200713e57829003601f168201915b50505050508152602001600282018054620071779062009cba565b80601f0160208091040260200160405190810160405280929190818152602001828054620071a59062009cba565b8015620071f65780601f10620071ca57610100808354040283529160200191620071f6565b820191906000526020600020905b815481529060010190602001808311620071d857829003601f168201915b50505050508152602001600382018054620072119062009cba565b80601f01602080910402602001604051908101604052809291908181526020018280546200723f9062009cba565b8015620072905780601f10620072645761010080835404028352916020019162007290565b820191906000526020600020905b8154815290600101906020018083116200727257829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152805161028081019182905260a09092019190600d84019060149082845b8154815260200190600101908083116200731c5750505091909252505050606081015160e0820151610100909201519097919650945092505050565b60005462010000900460ff16156200738357604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff1615620073b55760405163b1d02c3d60e01b815260040160405180910390fd5b33620073c3603f8262007d2a565b620073e15760405163056e881160e01b815260040160405180910390fd5b336000818152604160205260409020600c81015442906200740590603c9062009d53565b11156200742557604051631f92cdbd60e11b815260040160405180910390fd5b600581018054620074369062009cba565b80601f0160208091040260200160405190810160405280929190818152602001828054620074649062009cba565b8015620074b55780601f106200748957610100808354040283529160200191620074b5565b820191906000526020600020905b8154815290600101906020018083116200749757829003601f168201915b5050508287525085916005840191508190620074d290826200a47e565b5060208201516001820190620074e990826200a47e565b50604082015160028201906200750090826200a47e565b50606082015160038201906200751790826200a47e565b505042600c830155506040516001600160a01b038316907f85d6366b336ade7f106987ec7a8eac1e8799e508aeab045a39d2f63e0dc969d990600090a250505050565b60005462010000900460ff16156200758557604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff1615620075b75760405163b1d02c3d60e01b815260040160405180910390fd5b828114620075d8576040516341abc80160e01b815260040160405180910390fd5b60005b83811015620076495762007636858583818110620075fd57620075fd62009e3f565b9050602002016020810190620076149190620093cc565b84848481811062007629576200762962009e3f565b9050602002013562008d56565b620076418162009ea4565b9050620075db565b5050505050565b6001600160a01b0380821660009081526041602090815260408083208151610160810183528154861681526001820154861693810193909352600281015490941690820152600383015460608201526004830180549293849390916080840191620076bb9062009cba565b80601f0160208091040260200160405190810160405280929190818152602001828054620076e99062009cba565b80156200773a5780601f106200770e576101008083540402835291602001916200773a565b820191906000526020600020905b8154815290600101906020018083116200771c57829003601f168201915b5050505050815260200160058201604051806080016040529081600082018054620077659062009cba565b80601f0160208091040260200160405190810160405280929190818152602001828054620077939062009cba565b8015620077e45780601f10620077b857610100808354040283529160200191620077e4565b820191906000526020600020905b815481529060010190602001808311620077c657829003601f168201915b50505050508152602001600182018054620077ff9062009cba565b80601f01602080910402602001604051908101604052809291908181526020018280546200782d9062009cba565b80156200787e5780601f1062007852576101008083540402835291602001916200787e565b820191906000526020600020905b8154815290600101906020018083116200786057829003601f168201915b50505050508152602001600282018054620078999062009cba565b80601f0160208091040260200160405190810160405280929190818152602001828054620078c79062009cba565b8015620079185780601f10620078ec5761010080835404028352916020019162007918565b820191906000526020600020905b815481529060010190602001808311620078fa57829003601f168201915b50505050508152602001600382018054620079339062009cba565b80601f0160208091040260200160405190810160405280929190818152602001828054620079619062009cba565b8015620079b25780601f106200798657610100808354040283529160200191620079b2565b820191906000526020600020905b8154815290600101906020018083116200799457829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152805161028081019182905260a09092019190600d84019060149082845b81548152602001906001019080831162007a3e5750505091909252505050604001519392505050565b600062007a76603f8462007d2a565b62007a945760405163056e881160e01b815260040160405180910390fd5b6001600160a01b038381166000908152604160205260409081902060020154905163aa1966cd60e01b81526004810185905291169063aa1966cd9060240162004ff1565b60005462010000900460ff161562007b0357604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff161562007b355760405163b1d02c3d60e01b815260040160405180910390fd5b3362007b43603f8262007d2a565b62007b615760405163056e881160e01b815260040160405180910390fd5b3362007b71818787878762008a75565b62007b8f57604051631647e3cb60e11b815260040160405180910390fd5b60006001600160a01b03166045878760405162007bae92919062009d0a565b908152604051908190036020019020546001600160a01b031614158062007bf857506048868660405162007be492919062009d0a565b9081526040519081900360200190205460ff165b1562007c17576040516311fdb94760e01b815260040160405180910390fd5b6001600160a01b0381166000908152604160205260409020600c810154429062007c4490603c9062009d53565b111562007c6457604051631f92cdbd60e11b815260040160405180910390fd5b4260468260040160405162007c7a91906200a546565b908152604051908190036020019020556004810162007c9b87898362009f68565b5042600c820155604051829060459062007cb9908a908a9062009d0a565b90815260405190819003602001812080546001600160a01b039384166001600160a01b0319909116179055908316907f783156582145bd0ff7924fae6953ba054cf1233eb60739a200ddb10de068ff0d9062007d19908a908a906200a239565b60405180910390a250505050505050565b6001600160a01b0381166000908152600183016020526040812054151562005035565b6000806000848460405160200162007d679291906200a5c4565b60408051601f1981840301815291815281516020928301206000818152604c9093529120549091504281111562007da75760008093509350505062007dd0565b603e5462007db6904262009d53565b6000928352604c6020526040909220829055506001925090505b9250929050565b8154604051631507fdb760e11b81526001600160a01b03909116600482015261100090632a0ffb6e90602401600060405180830381600087803b15801562007e1e57600080fd5b505af115801562007e33573d6000803e3d6000fd5b505050506000600162007e47603f620088ba565b62007e53919062009e0f565b604954108015915062007f115760405163d31f968d60e01b81526110006004820152600860248201526120009063d31f968d90604401602060405180830381865afa15801562007ea7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062007ecd919062009dc8565b62007f115760018301546040516001600160a01b03909116907f2afdc18061ac21cff7d9f11527ab9c8dec6fabd4edf6f894ed634bebd6a20d4590600090a2505050565b82600b015482111562007f2657600b83018290555b600a83015460ff1662007f9957600a8301805460ff191660019081179091556049805460009062007f5990849062009d53565b909155505060018301546040516001600160a01b03909116907f4905ac32602da3fb8b4b7b00c285e5fc4c6c2308cc908b4a1e4e9625a29c90a390600090a25b505050565b60408051608080820183526000808352602080840182905283850182905260608085018390528551938401865282845283820183905283860183905283018290528451808601865282815281018290528451808601909552855185528581019085015291928290620080109062008f30565b90506000805b620080218362008fa3565b15620080f457806000036200805657620080456200803f8462008fc9565b6200902d565b6001600160a01b03168452620080e1565b8060010362008082576200806e6200803f8462008fc9565b6001600160a01b03166020850152620080e1565b80600203620080ae576200809a6200803f8462008fc9565b6001600160a01b03166040850152620080e1565b80600303620080db57620080cc620080c68462008fc9565b62009045565b606085015260019150620080e1565b620080f4565b620080ec8162009ea4565b905062008016565b5091959194509092505050565b6000805462010000900460ff16156200812d57604051631785c68160e01b815260040160405180910390fd5b6020808301516001600160a01b031660009081526001909152604090205460ff168062008165575060208201516001600160a01b0316155b15620081845760405163b1d02c3d60e01b815260040160405180910390fd5b81516200819490603f9062007d2a565b620081a157506002919050565b81516001600160a01b039081166000908152604160209081526040808320815161016081018352815486168152600182015486169381019390935260028101549094169082015260038301546060820152600483018054929391926080840191906200820d9062009cba565b80601f01602080910402602001604051908101604052809291908181526020018280546200823b9062009cba565b80156200828c5780601f1062008260576101008083540402835291602001916200828c565b820191906000526020600020905b8154815290600101906020018083116200826e57829003601f168201915b5050505050815260200160058201604051806080016040529081600082018054620082b79062009cba565b80601f0160208091040260200160405190810160405280929190818152602001828054620082e59062009cba565b8015620083365780601f106200830a5761010080835404028352916020019162008336565b820191906000526020600020905b8154815290600101906020018083116200831857829003601f168201915b50505050508152602001600182018054620083519062009cba565b80601f01602080910402602001604051908101604052809291908181526020018280546200837f9062009cba565b8015620083d05780601f10620083a457610100808354040283529160200191620083d0565b820191906000526020600020905b815481529060010190602001808311620083b257829003601f168201915b50505050508152602001600282018054620083eb9062009cba565b80601f0160208091040260200160405190810160405280929190818152602001828054620084199062009cba565b80156200846a5780601f106200843e576101008083540402835291602001916200846a565b820191906000526020600020905b8154815290600101906020018083116200844c57829003601f168201915b50505050508152602001600382018054620084859062009cba565b80601f0160208091040260200160405190810160405280929190818152602001828054620084b39062009cba565b8015620085045780601f10620084d85761010080835404028352916020019162008504565b820191906000526020600020905b815481529060010190602001808311620084e657829003601f168201915b505050919092525050508152604080516060808201835260098501546001600160401b038082168452600160401b82048116602080860191909152600160801b9092041683850152840191909152600a84015460ff16151582840152600b84015490830152600c8301546080830152805161028081019182905260a09092019190600d84019060149082845b815481526020019060010190808311620085905750505050508152505090508060e001518015620085db575082600001516001600160a01b031683602001516001600160a01b031614155b15620085ea5750600392915050565b6040808201516060850151602086015192516317066a5760e21b81526001600160a01b03938416600482015260009390921691635c19a95c919060240160206040518083038185885af115801562008646573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906200866d919062009d69565b905083602001516001600160a01b031684600001516001600160a01b03166000805160206200b540833981519152838760600151604051620086b9929190918252602082015260400190565b60405180910390a383602001516001600160a01b031684600001516001600160a01b03167f607b17598da6bdca05650a2fc08bd2bc8e38c3236806a0fa8e0daabc1d6cb1d88387606001516040516200871c929190918252602082015260400190565b60405180910390a360408083015160208601519151633041949b60e01b815261200592633041949b92620087569290919060040162009cf0565b600060405180830381600087803b1580156200877157600080fd5b505af115801562008786573d6000803e3d6000fd5b506000979650505050505050565b6001600160a01b0381166000908152604160205260409020600a81015460ff1615620087be575050565b6036546002820154604051630913db4760e01b81526001600160a01b03858116600483015290911690630913db4790602401602060405180830381865afa1580156200880e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062008834919062009d69565b101562005a1e576200885681603d544262008850919062009d53565b62007dd7565b80546040516335409f7f60e01b81526001600160a01b039091166004820152611000906335409f7f90602401600060405180830381600087803b1580156200889d57600080fd5b505af1158015620088b2573d6000803e3d6000fd5b505050505050565b600062005038825490565b60006200503583836200911d565b600080829050600381511080620088eb575060098151115b15620088fa5750600092915050565b60418160008151811062008912576200891262009e3f565b016020015160f81c1080620089445750605a816000815181106200893a576200893a62009e3f565b016020015160f81c115b15620089535750600092915050565b60015b815181101562008a6b57603082828151811062008977576200897762009e3f565b016020015160f81c1080620089a8575060398282815181106200899e576200899e62009e3f565b016020015160f81c115b8015620089f857506041828281518110620089c757620089c762009e3f565b016020015160f81c1080620089f85750605a828281518110620089ee57620089ee62009e3f565b016020015160f81c115b801562008a485750606182828151811062008a175762008a1762009e3f565b016020015160f81c108062008a485750607a82828151811062008a3e5762008a3e62009e3f565b016020015160f81c115b1562008a58575060009392505050565b62008a638162009ea4565b905062008956565b5060019392505050565b600060308414158062008a89575060608214155b1562008a985750600062008b9c565b60008686864660405160200162008ab394939291906200a602565b60408051808303601f1901815282825280516020918201208184528383019092529092506000919060208201818036833701905050905081602082015260008186868a8a60405160200162008b0d9594939291906200a62f565b60408051808303601f190181526001808452838301909252925060009190602082018180368337019050509050815160016020830182602086016066600019fa62008b5757600080fd5b5060008160008151811062008b705762008b7062009e3f565b016020015160f81c90506001811462008b925760009550505050505062008b9c565b6001955050505050505b95945050505050565b60008061200361dead60405162008bbc90620093a8565b6001600160a01b03928316815291166020820152606060408201819052600090820152608001604051809103906000f08015801562008bff573d6000803e3d6000fd5b509050806001600160a01b031663f399e22e3486866040518463ffffffff1660e01b815260040162008c339291906200a667565b6000604051808303818588803b15801562008c4d57600080fd5b505af115801562008c62573d6000803e3d6000fd5b50506040516001600160a01b038086169450881692507fd481492e4e93bb36b4c12a5af93f03be3bf04b454dfbc35dd2663fa26f44d5b09150600090a39392505050565b600062005035836001600160a01b0384166200914a565b600054610100900460ff1662008d2a5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840162001131565b600080546001600160a01b039092166301000000026301000000600160b81b0319909216919091179055565b8162008d64603f8262007d2a565b62008d825760405163056e881160e01b815260040160405180910390fd5b6001600160a01b03838116600090815260416020526040808220600201549051635569f64b60e11b8152336004820152602481018690529192169063aad3ec96906044016020604051808303816000875af115801562008de6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062008e0c919062009d69565b9050336001600160a01b0316846001600160a01b03167ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926838360405162008e5491815260200190565b60405180910390a350505050565b60008160405160200162008e7791906200a416565b604051602081830303815290604052805190602001208360405160200162008ea091906200a416565b6040516020818303038152906040528051906020012014905092915050565b015190565b600080546040516001600160a01b0380851693630100000090930416917f44fc1b38a4abaa91ebd1b628a5b259a698f86238c8217d68f516e87769c60c0b91a3600080546001600160a01b039092166301000000026301000000600160b81b0319909216919091179055565b604080516080810182526000918101828152606082018390528152602081019190915262008f5e826200919c565b62008f6857600080fd5b600062008f798360200151620091cf565b836020015162008f8a919062009d53565b6040805180820190915293845260208401525090919050565b8051805160208201516000929162008fbb9162009d53565b836020015110915050919050565b604080518082019091526000808252602082015262008fe88262008fa3565b62008ff257600080fd5b6020820151600062009004826200925e565b905062009012818362009d53565b60209485015260408051808201909152908152928301525090565b80516000906015146200903f57600080fd5b62005038825b8051600090158015906200905b57508151602110155b6200906557600080fd5b6000620090768360200151620091cf565b90508083600001511015620090ce5760405162461bcd60e51b815260206004820152601a60248201527f6c656e677468206973206c657373207468616e206f6666736574000000000000604482015260640162001131565b8251600090620090e090839062009e0f565b9050600080838660200151620090f7919062009d53565b90508051915060208310156200911457826020036101000a820491505b50949350505050565b600082600001828154811062009137576200913762009e3f565b9060005260206000200154905092915050565b6000818152600183016020526040812054620091935750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915562005038565b50600062005038565b80516000908103620091b057506000919050565b6020820151805160001a9060c082101562008a6b575060009392505050565b8051600090811a6080811015620091e95750600092915050565b60b881108062009206575060c0811080159062009206575060f881105b15620092155750600192915050565b60c081101562009250576200922d600160b86200a68d565b6200923c9060ff168262009e0f565b6200924990600162009d53565b9392505050565b6200922d600160f86200a68d565b80516000908190811a60808110156200927b5760019150620093a1565b60b8811015620092a7576200929260808262009e0f565b6200929f90600162009d53565b9150620093a1565b60c08110156200932057600060b78203600186019550806020036101000a865104915060018101820193505080831015620093195760405162461bcd60e51b81526020600482015260116024820152706164646974696f6e206f766572666c6f7760781b604482015260640162001131565b50620093a1565b60f881101562009337576200929260c08262009e0f565b600060f78203600186019550806020036101000a8651049150600181018201935050808310156200939f5760405162461bcd60e51b81526020600482015260116024820152706164646974696f6e206f766572666c6f7760781b604482015260640162001131565b505b5092915050565b610e96806200a6aa83390190565b6001600160a01b03811681146200174957600080fd5b600060208284031215620093df57600080fd5b81356200924981620093b6565b60008083601f840112620093ff57600080fd5b5081356001600160401b038111156200941757600080fd5b60208301915083602082850101111562007dd057600080fd5b600080602083850312156200944457600080fd5b82356001600160401b038111156200945b57600080fd5b6200946985828601620093ec565b90969095509350505050565b6000806000604084860312156200948b57600080fd5b833560ff811681146200949d57600080fd5b925060208401356001600160401b03811115620094b957600080fd5b620094c786828701620093ec565b9497909650939450505050565b60005b83811015620094f1578181015183820152602001620094d7565b50506000910152565b6000815180845262009514816020860160208601620094d4565b601f01601f19169290920160200192915050565b602081526000620050356020830184620094fa565b634e487b7160e01b600052604160045260246000fd5b604051608081016001600160401b03811182821017156200957857620095786200953d565b60405290565b604051601f8201601f191681016001600160401b0381118282101715620095a957620095a96200953d565b604052919050565b60006001600160401b03821115620095cd57620095cd6200953d565b50601f01601f191660200190565b6000620095f2620095ec84620095b1565b6200957e565b90508281528383830111156200960757600080fd5b828260208301376000602084830101529392505050565b6000602082840312156200963157600080fd5b81356001600160401b038111156200964857600080fd5b8201601f810184136200965a57600080fd5b6200966b84823560208401620095db565b949350505050565b600080604083850312156200968757600080fd5b82356200969481620093b6565b946020939093013593505050565b80151581146200174957600080fd5b60008060008060808587031215620096c857600080fd5b8435620096d581620093b6565b93506020850135620096e781620093b6565b92506040850135915060608501356200970081620096a2565b939692955090935050565b6001600160401b03811681146200174957600080fd5b6000602082840312156200973457600080fd5b813562009249816200970b565b600080604083850312156200975557600080fd5b50508035926020909101359150565b600081518084526020808501945080840160005b838110156200979f5781516001600160a01b03168752958201959082019060010162009778565b509495945050505050565b608081526000620097bf608083018762009764565b82810360208481019190915286518083528782019282019060005b81811015620097f857845183529383019391830191600101620097da565b5050848103604086015286518082528282019350600581901b8201830183890160005b838110156200984d57601f198584030187526200983a838351620094fa565b968601969250908501906001016200981b565b5050809550505050505082606083015295945050505050565b600080600080600080600087890360e08112156200988357600080fd5b88356200989081620093b6565b975060208901356001600160401b0380821115620098ad57600080fd5b620098bb8c838d01620093ec565b909950975060408b0135915080821115620098d557600080fd5b620098e38c838d01620093ec565b90975095508591506060605f1984011215620098fe57600080fd5b60608b01945060c08b01359250808311156200991957600080fd5b505088016080818b0312156200992e57600080fd5b8091505092959891949750929550565b600080604083850312156200995257600080fd5b82356200995f81620093b6565b915060208301356200997181620096a2565b809150509250929050565b6020815260008251608060208401526200999a60a0840182620094fa565b90506020840151601f1980858403016040860152620099ba8383620094fa565b92506040860151915080858403016060860152620099d98383620094fa565b925060608601519150808584030160808601525062008b9c8282620094fa565b6000806000806040858703121562009a1057600080fd5b84356001600160401b038082111562009a2857600080fd5b62009a3688838901620093ec565b9096509450602087013591508082111562009a5057600080fd5b5062009a5f87828801620093ec565b95989497509550505050565b60008083601f84011262009a7e57600080fd5b5081356001600160401b0381111562009a9657600080fd5b6020830191508360208260051b850101111562007dd057600080fd5b60008060006040848603121562009ac857600080fd5b83356001600160401b0381111562009adf57600080fd5b62009aed8682870162009a6b565b909450925050602084013562009b0381620093b6565b809150509250925092565b60608152600062009b23606083018662009764565b828103602084015262009b37818662009764565b915050826040830152949350505050565b600082601f83011262009b5a57600080fd5b6200503583833560208501620095db565b60006020828403121562009b7e57600080fd5b81356001600160401b038082111562009b9657600080fd5b908301906080828603121562009bab57600080fd5b62009bb562009553565b82358281111562009bc557600080fd5b62009bd38782860162009b48565b82525060208301358281111562009be957600080fd5b62009bf78782860162009b48565b60208301525060408301358281111562009c1057600080fd5b62009c1e8782860162009b48565b60408301525060608301358281111562009c3757600080fd5b62009c458782860162009b48565b60608301525095945050505050565b6000806000806040858703121562009c6b57600080fd5b84356001600160401b038082111562009c8357600080fd5b62009c918883890162009a6b565b9096509450602087013591508082111562009cab57600080fd5b5062009a5f8782880162009a6b565b600181811c9082168062009ccf57607f821691505b6020821081036200458057634e487b7160e01b600052602260045260246000fd5b6001600160a01b0392831681529116602082015260400190565b8183823760009101908152919050565b634e487b7160e01b600052601160045260246000fd5b60008262009d4e57634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111562005038576200503862009d1a565b60006020828403121562009d7c57600080fd5b5051919050565b634e487b7160e01b600052602160045260246000fd5b83815260208101839052606081016003831062009dba5762009dba62009d83565b826040830152949350505050565b60006020828403121562009ddb57600080fd5b81516200924981620096a2565b828152604081016004831062009e025762009e0262009d83565b8260208301529392505050565b8181038181111562005038576200503862009d1a565b808202811582820484141762005038576200503862009d1a565b634e487b7160e01b600052603260045260246000fd5b60408152600062009e6a604083018562009764565b905060018060a01b03831660208301529392505050565b6001600160401b03828116828216039080821115620093a157620093a162009d1a565b60006001820162009eb95762009eb962009d1a565b5060010190565b6000808335601e1984360301811262009ed857600080fd5b8301803591506001600160401b0382111562009ef357600080fd5b60200191503681900382131562007dd057600080fd5b601f82111562007f9957600081815260208120601f850160051c8101602086101562009f325750805b601f850160051c820191505b81811015620088b25782815560010162009f3e565b600019600383901b1c191660019190911b1790565b6001600160401b0383111562009f825762009f826200953d565b62009f9a8362009f93835462009cba565b8362009f09565b6000601f84116001811462009fcd576000851562009fb85750838201355b62009fc4868262009f53565b84555062007649565b600083815260209020601f19861690835b828110156200a000578685013582556020948501946001909201910162009fde565b50868210156200a01e5760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b6200a03c828362009ec0565b6001600160401b038111156200a056576200a0566200953d565b6200a06e816200a067855462009cba565b8562009f09565b6000601f8211600181146200a0a157600083156200a08c5750838201355b6200a098848262009f53565b8655506200a0fe565b600085815260209020601f19841690835b828110156200a0d457868501358255602094850194600190920191016200a0b2565b50848210156200a0f25760001960f88660031b161c19848701351681555b505060018360011b0185555b505050506200a111602083018362009ec0565b6200a12181836001860162009f68565b50506200a132604083018362009ec0565b6200a14281836002860162009f68565b50506200a153606083018362009ec0565b6200a16381836003860162009f68565b50505050565b81356200a176816200970b565b6001600160401b03811690508154816001600160401b0319821617835560208401356200a1a3816200970b565b6fffffffffffffffff0000000000000000604091821b166fffffffffffffffffffffffffffffffff198316841781178555908501356200a1e3816200970b565b6001600160c01b0319929092169092179190911760809190911b67ffffffffffffffff60801b1617905550565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6020815260006200966b6020830184866200a210565b60006001600160401b038211156200a26b576200a26b6200953d565b5060051b60200190565b600060208083850312156200a28957600080fd5b82516001600160401b038111156200a2a057600080fd5b8301601f810185136200a2b257600080fd5b80516200a2c3620095ec826200a24f565b81815260059190911b820183019083810190878311156200a2e357600080fd5b928401925b828410156200a30e5783516200a2fe81620093b6565b825292840192908401906200a2e8565b979650505050505050565b600060208083850312156200a32d57600080fd5b82516001600160401b03808211156200a34557600080fd5b818501915085601f8301126200a35a57600080fd5b81516200a36b620095ec826200a24f565b81815260059190911b830184019084810190888311156200a38b57600080fd5b8585015b838110156200a409578051858111156200a3a95760008081fd5b8601603f81018b136200a3bc5760008081fd5b8781015160406200a3d1620095ec83620095b1565b8281528d828486010111156200a3e75760008081fd5b6200a3f8838c8301848701620094d4565b86525050509186019186016200a38f565b5098975050505050505050565b600082516200a42a818460208701620094d4565b9190910192915050565b60ff8416815260406020820152600062008b9c6040830184866200a210565b6040815260006200a4696040830186886200a210565b82810360208401526200a30e8185876200a210565b81516001600160401b038111156200a49a576200a49a6200953d565b6200a4b2816200a4ab845462009cba565b8462009f09565b602080601f8311600181146200a4e657600084156200a4d15750858301515b6200a4dd858262009f53565b865550620088b2565b600085815260208120601f198616915b828110156200a517578886015182559484019460019091019084016200a4f6565b50858210156200a5365787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60008083546200a5568162009cba565b600182811680156200a57157600181146200a587576200a5b8565b60ff19841687528215158302870194506200a5b8565b8760005260208060002060005b858110156200a5af5781548a8201529084019082016200a594565b50505082870194505b50929695505050505050565b6bffffffffffffffffffffffff198360601b1681526000600383106200a5ee576200a5ee62009d83565b5060f89190911b6014820152601501919050565b6bffffffffffffffffffffffff198560601b16815282846014830137601492019182015260340192915050565b600086516200a643818460208b01620094d4565b82018587823760009086019081528385823760009301928352509095945050505050565b6001600160a01b03831681526040602082018190526000906200966b90830184620094fa565b60ff828116828216039081111562005038576200503862009d1a56fe608060405260405162000e9638038062000e96833981016040819052620000269162000497565b828162000036828260006200004d565b50620000449050826200008a565b505050620005ca565b6200005883620000e5565b600082511180620000665750805b1562000085576200008383836200012760201b620001691760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f620000b562000156565b604080516001600160a01b03928316815291841660208301520160405180910390a1620000e2816200018f565b50565b620000f08162000244565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606200014f838360405180606001604052806027815260200162000e6f60279139620002f8565b9392505050565b60006200018060008051602062000e4f83398151915260001b6200037760201b620001951760201c565b546001600160a01b0316919050565b6001600160a01b038116620001fa5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b806200022360008051602062000e4f83398151915260001b6200037760201b620001951760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6200025a816200037a60201b620001981760201c565b620002be5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401620001f1565b80620002237f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b6200037760201b620001951760201c565b6060600080856001600160a01b03168560405162000317919062000577565b600060405180830381855af49150503d806000811462000354576040519150601f19603f3d011682016040523d82523d6000602084013e62000359565b606091505b5090925090506200036d8683838762000389565b9695505050505050565b90565b6001600160a01b03163b151590565b60608315620003fd578251600003620003f5576001600160a01b0385163b620003f55760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401620001f1565b508162000409565b62000409838362000411565b949350505050565b815115620004225781518083602001fd5b8060405162461bcd60e51b8152600401620001f1919062000595565b80516001600160a01b03811681146200045657600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200048e57818101518382015260200162000474565b50506000910152565b600080600060608486031215620004ad57600080fd5b620004b8846200043e565b9250620004c8602085016200043e565b60408501519092506001600160401b0380821115620004e657600080fd5b818601915086601f830112620004fb57600080fd5b8151818111156200051057620005106200045b565b604051601f8201601f19908116603f011681019083821181831017156200053b576200053b6200045b565b816040528281528960208487010111156200055557600080fd5b6200056883602083016020880162000471565b80955050505050509250925092565b600082516200058b81846020870162000471565b9190910192915050565b6020815260008251806020840152620005b681604085016020870162000471565b601f01601f19169190910160400192915050565b61087580620005da6000396000f3fe60806040523661001357610011610017565b005b6100115b61001f6101a7565b6001600160a01b0316330361015f5760606001600160e01b0319600035166364d3180d60e11b810161005a576100536101da565b9150610157565b63587086bd60e11b6001600160e01b031982160161007a57610053610231565b63070d7c6960e41b6001600160e01b031982160161009a57610053610277565b621eb96f60e61b6001600160e01b03198216016100b9576100536102a8565b63a39f25e560e01b6001600160e01b03198216016100d9576100536102e8565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101676102fc565b565b606061018e83836040518060600160405280602781526020016108426027913961030c565b9392505050565b90565b6001600160a01b03163b151590565b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101e4610384565b60006101f33660048184610695565b81019061020091906106db565b905061021d8160405180602001604052806000815250600061038f565b505060408051602081019091526000815290565b60606000806102433660048184610695565b810190610250919061070c565b915091506102608282600161038f565b604051806020016040528060008152509250505090565b6060610281610384565b60006102903660048184610695565b81019061029d91906106db565b905061021d816103bb565b60606102b2610384565b60006102bc6101a7565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102f2610384565b60006102bc610412565b610167610307610412565b610421565b6060600080856001600160a01b03168560405161032991906107f2565b600060405180830381855af49150503d8060008114610364576040519150601f19603f3d011682016040523d82523d6000602084013e610369565b606091505b509150915061037a86838387610445565b9695505050505050565b341561016757600080fd5b610398836104c6565b6000825111806103a55750805b156103b6576103b48383610169565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103e46101a7565b604080516001600160a01b03928316815291841660208301520160405180910390a161040f81610506565b50565b600061041c6105af565b905090565b3660008037600080366000845af43d6000803e808015610440573d6000f35b3d6000fd5b606083156104b45782516000036104ad576001600160a01b0385163b6104ad5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014e565b50816104be565b6104be83836105d7565b949350505050565b6104cf81610601565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b03811661056b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014e565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101cb565b8151156105e75781518083602001fd5b8060405162461bcd60e51b815260040161014e919061080e565b6001600160a01b0381163b61066e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014e565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61058e565b600080858511156106a557600080fd5b838611156106b257600080fd5b5050820193919092039150565b80356001600160a01b03811681146106d657600080fd5b919050565b6000602082840312156106ed57600080fd5b61018e826106bf565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561071f57600080fd5b610728836106bf565b9150602083013567ffffffffffffffff8082111561074557600080fd5b818501915085601f83011261075957600080fd5b81358181111561076b5761076b6106f6565b604051601f8201601f19908116603f01168101908382118183101715610793576107936106f6565b816040528281528860208487010111156107ac57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60005b838110156107e95781810151838201526020016107d1565b50506000910152565b600082516108048184602087016107ce565b9190910192915050565b602081526000825180602084015261082d8160408501602087016107ce565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000811000ab53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c656424d7bda8602b916d64417f0dbfe2e2e88ec9b1157bd9f596dfdb91ba26624e0400000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000003000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c80000000000000000000000003c44cdddb6a900fa2b585dd299e03d12fa4293bc00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000030b86b3146bdd2200b1dbdb1cea5e40d3451c028cbb4fb03b1826f7f2d82bee76bbd5cd68a74a16a7eceea093fd5826b9200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003087ce273bb9b51fd69e50de7a8d9a99cfb3b1a5c6a7b85f6673d137a5a2ce7df3d6ee4e6d579a142d58b0606c4a7a1c27000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030a33ac14980d85c0d154c5909ebf7a11d455f54beb4d5d0dc1d8b3670b9c4a6b6c450ee3d623ecc48026f09ed1f0b5c1200000000000000000000000000000000a164736f6c6343000811000a", }, { ContractAddr: common.HexToAddress(StakeCreditContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/1abdfbf3aeb86909c2220b79bf92b87ddff64b54", - Code: "6080604052600436106101e75760003560e01c8063647df75911610102578063a9664feb11610095578063d241c1ea11610064578063d241c1ea1461068d578063dd62ed3e146106cf578063f1fad104146106ef578063f399e22e1461070457600080fd5b8063a9664feb14610600578063aa1966cd14610620578063aad3ec961461064d578063c2cde2b21461066d57600080fd5b806395d89b41116100d157806395d89b411461058b578063a457c2d7146105a0578063a5d059ca146105c0578063a9059cbb146105e057600080fd5b8063647df759146104e85780636bbf22491461050857806370a082311461053557806391faf0b41461056b57600080fd5b8063313ce5671161017a5780634bf6c882116101495780634bf6c8821461048b5780634d99dd16146104a05780635c19a95c146104c05780635e607d76146104d357600080fd5b8063313ce567146103f157806339509351146104135780633a5381b51461043357806345bc4d101461046b57600080fd5b806315d1f898116101b657806315d1f8981461038657806318160ddd1461039c57806323b872dd146103b15780632f2d448a146103d157600080fd5b8063038c0023146102e157806306fdde03146103145780630913db4714610336578063095ea7b31461035657600080fd5b366102dc57336120021461021757604051630f22c43960e41b815261200260048201526024015b60405180910390fd5b60006120026001600160a01b0316631fa8882b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610259573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061027d9190611daf565b6102879042611dde565b6098546000828152609d6020908152604080832093909355609c9052908120805492935034929091906102bb908490611e00565b9250508190555034609860008282546102d49190611e00565b925050819055005b600080fd5b3480156102ed57600080fd5b506103016102fc366004611e2b565b610717565b6040519081526020015b60405180910390f35b34801561032057600080fd5b50610329610747565b60405161030b9190611e4f565b34801561034257600080fd5b50610301610351366004611e2b565b6107d9565b34801561036257600080fd5b50610376610371366004611e9d565b6107fb565b604051901515815260200161030b565b34801561039257600080fd5b5061030160985481565b3480156103a857600080fd5b50606754610301565b3480156103bd57600080fd5b506103766103cc366004611ec9565b610813565b3480156103dd57600080fd5b506103016103ec366004611e2b565b610837565b3480156103fd57600080fd5b5060125b60405160ff909116815260200161030b565b34801561041f57600080fd5b5061037661042e366004611e9d565b6108fc565b34801561043f57600080fd5b50609754610453906001600160a01b031681565b6040516001600160a01b03909116815260200161030b565b34801561047757600080fd5b50610301610486366004611f0a565b61091e565b34801561049757600080fd5b50610401600881565b3480156104ac57600080fd5b506103016104bb366004611e9d565b610a11565b6103016104ce366004611e2b565b610c28565b6104e66104e1366004611f23565b610c9e565b005b3480156104f457600080fd5b50610301610503366004611f0a565b610e11565b34801561051457600080fd5b50610301610523366004611f0a565b609d6020526000908152604090205481565b34801561054157600080fd5b50610301610550366004611e2b565b6001600160a01b031660009081526065602052604090205490565b34801561057757600080fd5b50610301610586366004611f0a565b610e50565b34801561059757600080fd5b50610329610e8b565b3480156105ac57600080fd5b506103766105bb366004611e9d565b610e9a565b3480156105cc57600080fd5b506103016105db366004611e9d565b610f15565b3480156105ec57600080fd5b506103766105fb366004611e9d565b611016565b34801561060c57600080fd5b5061030161061b366004611e9d565b611024565b34801561062c57600080fd5b5061030161063b366004611f0a565b609c6020526000908152604090205481565b34801561065957600080fd5b50610301610668366004611e9d565b61114d565b34801561067957600080fd5b50610301610688366004611e2b565b6113f0565b34801561069957600080fd5b506106ad6106a8366004611e9d565b61140e565b604080518251815260208084015190820152918101519082015260600161030b565b3480156106db57600080fd5b506103016106ea366004611f4d565b611491565b3480156106fb57600080fd5b50610401601181565b6104e6610712366004611f86565b6114bc565b6001600160a01b0381166000908152609a6020526040812054600f81810b600160801b909204900b035b92915050565b6060606880546107569061200b565b80601f01602080910402602001604051908101604052809291908181526020018280546107829061200b565b80156107cf5780601f106107a4576101008083540402835291602001916107cf565b820191906000526020600020905b8154815290600101906020018083116107b257829003601f168201915b5050505050905090565b6001600160a01b03811660009081526065602052604081205461074190610e50565b60003361080981858561166a565b5060019392505050565b600033610821858285611683565b61082c8585856116f7565b506001949350505050565b6001600160a01b0381166000908152609a6020526040812054600f81810b600160801b909204900b0381805b828110156108f4576001600160a01b0385166000908152609a6020526040812061088d9083611710565b6000818152609960209081526040918290208251606081018452815481526001820154928101929092526002015491810182905291925042106108da576108d38461203f565b93506108e1565b50506108f4565b5050806108ed9061203f565b9050610863565b509392505050565b60003361080981858561090f8383611491565b6109199190611e00565b61166a565b6000336120021461094657604051630f22c43960e41b8152612002600482015260240161020e565b6097546001600160a01b03166000908152606560205260408120549061096b84610e11565b905081811161097a578061097c565b815b609754909150600090610998906001600160a01b031683611781565b6040519091506000906110029083908381818185875af1925050503d80600081146109df576040519150601f19603f3d011682016040523d82523d6000602084013e6109e4565b606091505b5050905080610a06576040516312171d8360e31b815260040160405180910390fd5b50925050505b919050565b60003361200214610a3957604051630f22c43960e41b8152612002600482015260240161020e565b81600003610a5a57604051639811e0c760e01b815260040160405180910390fd5b6001600160a01b038316600090815260656020526040902054821115610a9357604051631e9acf1760e31b815260040160405180910390fd5b610a9d8383611781565b905060006120026001600160a01b031663fc0c5ff16040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ae1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b059190611daf565b610b0f9042611e00565b6040805160608101825285815260208101859052908101829052909150600085610b38816117b6565b60405160609290921b6bffffffffffffffffffffffff19166020830152603482015260540160408051601f1981840301815291815281516020928301206000818152609990935291205490915015610ba35760405163b19e911560e01b815260040160405180910390fd5b600081815260996020908152604080832085518155828601516001820155818601516002909101556001600160a01b0389168352609a9091529020610c1f90828154600160801b90819004600f0b6000818152600180860160205260409091209390935583546001600160801b03908116939091011602179055565b50505092915050565b60003361200214610c5057604051630f22c43960e41b8152612002600482015260240161020e565b34600003610c7157604051631f2a200560e01b815260040160405180910390fd5b610c7b82346117de565b905080600003610a0c57604051639811e0c760e01b815260040160405180910390fd5b3361200214610cc457604051630f22c43960e41b8152612002600482015260240161020e565b346000612710610cde67ffffffffffffffff851684612058565b610ce89190611dde565b90506000610cf6828461206f565b905060006120026001600160a01b0316631fa8882b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d5e9190611daf565b610d689042611dde565b6098546000828152609d6020908152604080832093909355609c905290812080549293508492909190610d9c908490611e00565b925050819055508160986000828254610db59190611e00565b9091555050609754610dd0906001600160a01b0316846117de565b5060408051838152602081018590527ffb0e1482d62102ab9594f69d4c6d693749e3e2bf1c21af272f5456b2d5a4f6b5910160405180910390a15050505050565b6000609854600003610e36576040516307b76ce760e51b815260040160405180910390fd5b609854606754610e469084612058565b6107419190611dde565b6000610e5b60675490565b600003610e7b57604051632fe8dae960e01b815260040160405180910390fd5b606754609854610e469084612058565b6060606980546107569061200b565b60003381610ea88286611491565b905083811015610f085760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161020e565b61082c828686840361166a565b60003361200214610f3d57604051630f22c43960e41b8152612002600482015260240161020e565b81600003610f5e57604051639811e0c760e01b815260040160405180910390fd5b6001600160a01b038316600090815260656020526040902054821115610f9757604051631e9acf1760e31b815260040160405180910390fd5b610fa18383611781565b6040519091506000906120029083908381818185875af1925050503d8060008114610fe8576040519150601f19603f3d011682016040523d82523d6000602084013e610fed565b606091505b505090508061100f576040516312171d8360e31b815260040160405180910390fd5b5092915050565b6000336108098185856116f7565b6001600160a01b0382166000908152609a6020526040812054600f81810b600160801b909204900b0360000361105c57506000610741565b81158061109057506001600160a01b0383166000908152609a6020526040902054600f81810b600160801b909204900b0382115b61109a57816110c4565b6001600160a01b0383166000908152609a6020526040902054600f81810b600160801b909204900b035b91506000805b838110156108f4576001600160a01b0385166000908152609a602052604081206110f49083611710565b600081815260996020908152604091829020825160608101845281548152600182015492810183905260029091015492810192909252919250906111389085611e00565b93505050806111469061203f565b90506110ca565b6000336120021461117557604051630f22c43960e41b8152612002600482015260240161020e565b61117d611807565b6001600160a01b0383166000908152609a6020526040902054600f81810b600160801b909204900b036000036111c65760405163ad41893760e01b815260040160405180910390fd5b8115806111fa57506001600160a01b0383166000908152609a6020526040902054600f81810b600160801b909204900b0382115b611204578161122e565b6001600160a01b0383166000908152609a6020526040902054600f81810b600160801b909204900b035b915060005b82156112e4576001600160a01b0384166000908152609a6020526040812061125a90611860565b6000818152609960209081526040918290208251606081018452815481526001820154928101929092526002015491810182905291925042101561129f5750506112e4565b6001600160a01b0386166000908152609a602052604090206112c0906118b4565b5060208101516112d09084611e00565b92506112db85612082565b94505050611233565b80600003611305576040516303cd8e0960e21b815260040160405180910390fd5b60006120026001600160a01b031663e8f67c3b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611347573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061136b9190611daf565b90506000856001600160a01b03168284604051600060405180830381858888f193505050503d80600081146113bc576040519150601f19603f3d011682016040523d82523d6000602084013e6113c1565b606091505b50509050806113e3576040516312171d8360e31b815260040160405180910390fd5b5050600180559050610741565b6001600160a01b0381166000908152609b6020526040812054610741565b61143260405180606001604052806000815260200160008152602001600081525090565b6001600160a01b0383166000908152609a602052604081206114549084611710565b6000908152609960209081526040918290208251606081018452815481526001820154928101929092526002015491810191909152949350505050565b6001600160a01b03918216600090815260666020908152604080832093909416825291909152205490565b600054610100900460ff16158080156114dc5750600054600160ff909116105b806114f65750303b1580156114f6575060005460ff166001145b6115595760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161020e565b6000805460ff19166001179055801561157c576000805461ff0019166101001790555b33612002146115a257604051630f22c43960e41b8152612002600482015260240161020e565b600083836040516020016115b7929190612099565b6040516020818303038152906040529050600084846040516020016115dd9291906120c9565b60405160208183030381529060405290506115f88282611933565b609780546001600160a01b0319166001600160a01b03881617905561161c34611978565b50508015611664576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b604051632028747160e01b815260040160405180910390fd5b600061168f8484611491565b9050600019811461166457818110156116ea5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161020e565b611664848484840361166a565b604051638cd22d1960e01b815260040160405180910390fd5b60008061173361171f84611ae8565b855461172e9190600f0b6120e7565b611b56565b8454909150600160801b9004600f90810b9082900b1261176657604051632d0483c560e21b815260040160405180910390fd5b600f0b60009081526001939093016020525050604090205490565b600061178c82610e50565b90506117988383611bba565b80609860008282546117aa919061206f565b90915550909392505050565b6001600160a01b0381166000908152609b602052604090208054600181018255905b50919050565b60006117e982610e11565b90506117f58382611cee565b81609860008282546117aa9190611e00565b6002600154036118595760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161020e565b6002600155565b600061187b8254600f81810b600160801b909204900b131590565b1561189957604051631ed9509560e11b815260040160405180910390fd5b508054600f0b60009081526001909101602052604090205490565b60006118cf8254600f81810b600160801b909204900b131590565b156118ed57604051631ed9509560e11b815260040160405180910390fd5b508054600f0b6000818152600180840160205260408220805492905583546fffffffffffffffffffffffffffffffff191692016001600160801b03169190911790915590565b600054610100900460ff1661195a5760405162461bcd60e51b815260040161020e9061210f565b606861196683826121be565b50606961197382826121be565b505050565b600054610100900460ff1661199f5760405162461bcd60e51b815260040161020e9061210f565b60006120026001600160a01b0316638a4d3fa86040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119e1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a059190611daf565b90508082111580611a1f57506097546001600160a01b0316155b80611a2b575060675415155b15611a4957604051632163e6b960e21b815260040160405180910390fd5b60006120026001600160a01b0316634e6fd6c46040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aaf919061227e565b9050611abb8183611cee565b6000611ac7838561206f565b609754909150611ae0906001600160a01b031682611cee565b505050609855565b60006001600160ff1b03821115611b525760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b606482015260840161020e565b5090565b80600f81900b8114610a0c5760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20316044820152663238206269747360c81b606482015260840161020e565b6001600160a01b038216611c1a5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161020e565b6001600160a01b03821660009081526065602052604090205481811015611c8e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161020e565b6001600160a01b03831660008181526065602090815260408083208686039055606780548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b6001600160a01b038216611d445760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161020e565b8060676000828254611d569190611e00565b90915550506001600160a01b0382166000818152606560209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b600060208284031215611dc157600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b600082611dfb57634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111561074157610741611dc8565b6001600160a01b0381168114611e2857600080fd5b50565b600060208284031215611e3d57600080fd5b8135611e4881611e13565b9392505050565b600060208083528351808285015260005b81811015611e7c57858101830151858201604001528201611e60565b506000604082860101526040601f19601f8301168501019250505092915050565b60008060408385031215611eb057600080fd5b8235611ebb81611e13565b946020939093013593505050565b600080600060608486031215611ede57600080fd5b8335611ee981611e13565b92506020840135611ef981611e13565b929592945050506040919091013590565b600060208284031215611f1c57600080fd5b5035919050565b600060208284031215611f3557600080fd5b813567ffffffffffffffff81168114611e4857600080fd5b60008060408385031215611f6057600080fd5b8235611f6b81611e13565b91506020830135611f7b81611e13565b809150509250929050565b600080600060408486031215611f9b57600080fd5b8335611fa681611e13565b9250602084013567ffffffffffffffff80821115611fc357600080fd5b818601915086601f830112611fd757600080fd5b813581811115611fe657600080fd5b876020828501011115611ff857600080fd5b6020830194508093505050509250925092565b600181811c9082168061201f57607f821691505b6020821081036117d857634e487b7160e01b600052602260045260246000fd5b60006001820161205157612051611dc8565b5060010190565b808202811582820484141761074157610741611dc8565b8181038181111561074157610741611dc8565b60008161209157612091611dc8565b506000190190565b65029ba30b5b2960d51b815281836006830137660810dc99591a5d60ca1b91016006810191909152600d01919050565b611cdd60f21b81528183600283013760009101600201908152919050565b808201828112600083128015821682158216171561210757612107611dc8565b505092915050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b634e487b7160e01b600052604160045260246000fd5b601f82111561197357600081815260208120601f850160051c810160208610156121975750805b601f850160051c820191505b818110156121b6578281556001016121a3565b505050505050565b815167ffffffffffffffff8111156121d8576121d861215a565b6121ec816121e6845461200b565b84612170565b602080601f83116001811461222157600084156122095750858301515b600019600386901b1c1916600185901b1785556121b6565b600085815260208120601f198616915b8281101561225057888601518255948401946001909101908401612231565b508582101561226e5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006020828403121561229057600080fd5b8151611e4881611e1356fea164736f6c6343000811000a", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/9d09d0a3d6332460a810188261ec8195e05aa218", + Code: "6080604052600436106101e75760003560e01c8063647df75911610102578063a9664feb11610095578063d241c1ea11610064578063d241c1ea1461068d578063dd62ed3e146106cf578063f1fad104146106ef578063f399e22e1461070457600080fd5b8063a9664feb14610600578063aa1966cd14610620578063aad3ec961461064d578063c2cde2b21461066d57600080fd5b806395d89b41116100d157806395d89b411461058b578063a457c2d7146105a0578063a5d059ca146105c0578063a9059cbb146105e057600080fd5b8063647df759146104e85780636bbf22491461050857806370a082311461053557806391faf0b41461056b57600080fd5b8063313ce5671161017a5780634bf6c882116101495780634bf6c8821461048b5780634d99dd16146104a05780635c19a95c146104c05780635e607d76146104d357600080fd5b8063313ce567146103f157806339509351146104135780633a5381b51461043357806345bc4d101461046b57600080fd5b806315d1f898116101b657806315d1f8981461038657806318160ddd1461039c57806323b872dd146103b15780632f2d448a146103d157600080fd5b8063038c0023146102e157806306fdde03146103145780630913db4714610336578063095ea7b31461035657600080fd5b366102dc57336120021461021757604051630f22c43960e41b815261200260048201526024015b60405180910390fd5b60006120026001600160a01b0316631fa8882b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610259573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061027d9190611de4565b6102879042611e13565b6098546000828152609d6020908152604080832093909355609c9052908120805492935034929091906102bb908490611e35565b9250508190555034609860008282546102d49190611e35565b925050819055005b600080fd5b3480156102ed57600080fd5b506103016102fc366004611e60565b610717565b6040519081526020015b60405180910390f35b34801561032057600080fd5b50610329610747565b60405161030b9190611e84565b34801561034257600080fd5b50610301610351366004611e60565b6107d9565b34801561036257600080fd5b50610376610371366004611ed2565b6107fb565b604051901515815260200161030b565b34801561039257600080fd5b5061030160985481565b3480156103a857600080fd5b50606754610301565b3480156103bd57600080fd5b506103766103cc366004611efe565b610813565b3480156103dd57600080fd5b506103016103ec366004611e60565b610837565b3480156103fd57600080fd5b5060125b60405160ff909116815260200161030b565b34801561041f57600080fd5b5061037661042e366004611ed2565b6108fc565b34801561043f57600080fd5b50609754610453906001600160a01b031681565b6040516001600160a01b03909116815260200161030b565b34801561047757600080fd5b50610301610486366004611f3f565b61091e565b34801561049757600080fd5b50610401600881565b3480156104ac57600080fd5b506103016104bb366004611ed2565b610a11565b6103016104ce366004611e60565b610c28565b6104e66104e1366004611f58565b610c9e565b005b3480156104f457600080fd5b50610301610503366004611f3f565b610e11565b34801561051457600080fd5b50610301610523366004611f3f565b609d6020526000908152604090205481565b34801561054157600080fd5b50610301610550366004611e60565b6001600160a01b031660009081526065602052604090205490565b34801561057757600080fd5b50610301610586366004611f3f565b610e50565b34801561059757600080fd5b50610329610e8b565b3480156105ac57600080fd5b506103766105bb366004611ed2565b610e9a565b3480156105cc57600080fd5b506103016105db366004611ed2565b610f15565b3480156105ec57600080fd5b506103766105fb366004611ed2565b611016565b34801561060c57600080fd5b5061030161061b366004611ed2565b611024565b34801561062c57600080fd5b5061030161063b366004611f3f565b609c6020526000908152604090205481565b34801561065957600080fd5b50610301610668366004611ed2565b61114d565b34801561067957600080fd5b50610301610688366004611e60565b6113f0565b34801561069957600080fd5b506106ad6106a8366004611ed2565b61140e565b604080518251815260208084015190820152918101519082015260600161030b565b3480156106db57600080fd5b506103016106ea366004611f82565b611491565b3480156106fb57600080fd5b50610401601181565b6104e6610712366004611fbb565b6114bc565b6001600160a01b0381166000908152609a6020526040812054600f81810b600160801b909204900b035b92915050565b60606068805461075690612040565b80601f016020809104026020016040519081016040528092919081815260200182805461078290612040565b80156107cf5780601f106107a4576101008083540402835291602001916107cf565b820191906000526020600020905b8154815290600101906020018083116107b257829003601f168201915b5050505050905090565b6001600160a01b03811660009081526065602052604081205461074190610e50565b600033610809818585611672565b5060019392505050565b60003361082185828561168b565b61082c8585856116ff565b506001949350505050565b6001600160a01b0381166000908152609a6020526040812054600f81810b600160801b909204900b0381805b828110156108f4576001600160a01b0385166000908152609a6020526040812061088d9083611718565b6000818152609960209081526040918290208251606081018452815481526001820154928101929092526002015491810182905291925042106108da576108d384612074565b93506108e1565b50506108f4565b5050806108ed90612074565b9050610863565b509392505050565b60003361080981858561090f8383611491565b6109199190611e35565b611672565b6000336120021461094657604051630f22c43960e41b8152612002600482015260240161020e565b6097546001600160a01b03166000908152606560205260408120549061096b84610e11565b905081811161097a578061097c565b815b609754909150600090610998906001600160a01b031683611789565b6040519091506000906110029083908381818185875af1925050503d80600081146109df576040519150601f19603f3d011682016040523d82523d6000602084013e6109e4565b606091505b5050905080610a06576040516312171d8360e31b815260040160405180910390fd5b50925050505b919050565b60003361200214610a3957604051630f22c43960e41b8152612002600482015260240161020e565b81600003610a5a57604051639811e0c760e01b815260040160405180910390fd5b6001600160a01b038316600090815260656020526040902054821115610a9357604051631e9acf1760e31b815260040160405180910390fd5b610a9d8383611789565b905060006120026001600160a01b031663fc0c5ff16040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ae1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b059190611de4565b610b0f9042611e35565b6040805160608101825285815260208101859052908101829052909150600085610b38816117be565b60405160609290921b6bffffffffffffffffffffffff19166020830152603482015260540160408051601f1981840301815291815281516020928301206000818152609990935291205490915015610ba35760405163b19e911560e01b815260040160405180910390fd5b600081815260996020908152604080832085518155828601516001820155818601516002909101556001600160a01b0389168352609a9091529020610c1f90828154600160801b90819004600f0b6000818152600180860160205260409091209390935583546001600160801b03908116939091011602179055565b50505092915050565b60003361200214610c5057604051630f22c43960e41b8152612002600482015260240161020e565b34600003610c7157604051631f2a200560e01b815260040160405180910390fd5b610c7b82346117e6565b905080600003610a0c57604051639811e0c760e01b815260040160405180910390fd5b3361200214610cc457604051630f22c43960e41b8152612002600482015260240161020e565b346000612710610cde67ffffffffffffffff85168461208d565b610ce89190611e13565b90506000610cf682846120a4565b905060006120026001600160a01b0316631fa8882b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d5e9190611de4565b610d689042611e13565b6098546000828152609d6020908152604080832093909355609c905290812080549293508492909190610d9c908490611e35565b925050819055508160986000828254610db59190611e35565b9091555050609754610dd0906001600160a01b0316846117e6565b5060408051838152602081018590527ffb0e1482d62102ab9594f69d4c6d693749e3e2bf1c21af272f5456b2d5a4f6b5910160405180910390a15050505050565b6000609854600003610e36576040516307b76ce760e51b815260040160405180910390fd5b609854606754610e46908461208d565b6107419190611e13565b6000610e5b60675490565b600003610e7b57604051632fe8dae960e01b815260040160405180910390fd5b606754609854610e46908461208d565b60606069805461075690612040565b60003381610ea88286611491565b905083811015610f085760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161020e565b61082c8286868403611672565b60003361200214610f3d57604051630f22c43960e41b8152612002600482015260240161020e565b81600003610f5e57604051639811e0c760e01b815260040160405180910390fd5b6001600160a01b038316600090815260656020526040902054821115610f9757604051631e9acf1760e31b815260040160405180910390fd5b610fa18383611789565b6040519091506000906120029083908381818185875af1925050503d8060008114610fe8576040519150601f19603f3d011682016040523d82523d6000602084013e610fed565b606091505b505090508061100f576040516312171d8360e31b815260040160405180910390fd5b5092915050565b6000336108098185856116ff565b6001600160a01b0382166000908152609a6020526040812054600f81810b600160801b909204900b0360000361105c57506000610741565b81158061109057506001600160a01b0383166000908152609a6020526040902054600f81810b600160801b909204900b0382115b61109a57816110c4565b6001600160a01b0383166000908152609a6020526040902054600f81810b600160801b909204900b035b91506000805b838110156108f4576001600160a01b0385166000908152609a602052604081206110f49083611718565b600081815260996020908152604091829020825160608101845281548152600182015492810183905260029091015492810192909252919250906111389085611e35565b935050508061114690612074565b90506110ca565b6000336120021461117557604051630f22c43960e41b8152612002600482015260240161020e565b61117d61180f565b6001600160a01b0383166000908152609a6020526040902054600f81810b600160801b909204900b036000036111c65760405163ad41893760e01b815260040160405180910390fd5b8115806111fa57506001600160a01b0383166000908152609a6020526040902054600f81810b600160801b909204900b0382115b611204578161122e565b6001600160a01b0383166000908152609a6020526040902054600f81810b600160801b909204900b035b915060005b82156112e4576001600160a01b0384166000908152609a6020526040812061125a90611868565b6000818152609960209081526040918290208251606081018452815481526001820154928101929092526002015491810182905291925042101561129f5750506112e4565b6001600160a01b0386166000908152609a602052604090206112c0906118bc565b5060208101516112d09084611e35565b92506112db856120b7565b94505050611233565b80600003611305576040516303cd8e0960e21b815260040160405180910390fd5b60006120026001600160a01b031663e8f67c3b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611347573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061136b9190611de4565b90506000856001600160a01b03168284604051600060405180830381858888f193505050503d80600081146113bc576040519150601f19603f3d011682016040523d82523d6000602084013e6113c1565b606091505b50509050806113e3576040516312171d8360e31b815260040160405180910390fd5b5050600180559050610741565b6001600160a01b0381166000908152609b6020526040812054610741565b61143260405180606001604052806000815260200160008152602001600081525090565b6001600160a01b0383166000908152609a602052604081206114549084611718565b6000908152609960209081526040918290208251606081018452815481526001820154928101929092526002015491810191909152949350505050565b6001600160a01b03918216600090815260666020908152604080832093909416825291909152205490565b600054610100900460ff16158080156114dc5750600054600160ff909116105b806114f65750303b1580156114f6575060005460ff166001145b6115595760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161020e565b6000805460ff19166001179055801561157c576000805461ff0019166101001790555b33612002146115a257604051630f22c43960e41b8152612002600482015260240161020e565b600083836040516020016115b79291906120ce565b6040516020818303038152906040529050600084846040516020016115dd9291906120fe565b60405160208183030381529060405290506115f88282611941565b611600611986565b609780546001600160a01b0319166001600160a01b038816179055611624346119ad565b5050801561166c576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b604051632028747160e01b815260040160405180910390fd5b60006116978484611491565b9050600019811461166c57818110156116f25760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161020e565b61166c8484848403611672565b604051638cd22d1960e01b815260040160405180910390fd5b60008061173b61172784611b1d565b85546117369190600f0b61211c565b611b8b565b8454909150600160801b9004600f90810b9082900b1261176e57604051632d0483c560e21b815260040160405180910390fd5b600f0b60009081526001939093016020525050604090205490565b600061179482610e50565b90506117a08383611bef565b80609860008282546117b291906120a4565b90915550909392505050565b6001600160a01b0381166000908152609b602052604090208054600181018255905b50919050565b60006117f182610e11565b90506117fd8382611d23565b81609860008282546117b29190611e35565b6002600154036118615760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161020e565b6002600155565b60006118838254600f81810b600160801b909204900b131590565b156118a157604051631ed9509560e11b815260040160405180910390fd5b508054600f0b60009081526001909101602052604090205490565b60006118d78254600f81810b600160801b909204900b131590565b156118f557604051631ed9509560e11b815260040160405180910390fd5b508054600f0b6000818152600180840160205260408220805492905583546fffffffffffffffffffffffffffffffff191692016001600160801b03169190911790915590565b60018055565b600054610100900460ff166119685760405162461bcd60e51b815260040161020e90612144565b606861197483826121f3565b50606961198182826121f3565b505050565b600054610100900460ff1661193b5760405162461bcd60e51b815260040161020e90612144565b600054610100900460ff166119d45760405162461bcd60e51b815260040161020e90612144565b60006120026001600160a01b0316638a4d3fa86040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a3a9190611de4565b90508082111580611a5457506097546001600160a01b0316155b80611a60575060675415155b15611a7e57604051632163e6b960e21b815260040160405180910390fd5b60006120026001600160a01b0316634e6fd6c46040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ac0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ae491906122b3565b9050611af08183611d23565b6000611afc83856120a4565b609754909150611b15906001600160a01b031682611d23565b505050609855565b60006001600160ff1b03821115611b875760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b606482015260840161020e565b5090565b80600f81900b8114610a0c5760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20316044820152663238206269747360c81b606482015260840161020e565b6001600160a01b038216611c4f5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161020e565b6001600160a01b03821660009081526065602052604090205481811015611cc35760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161020e565b6001600160a01b03831660008181526065602090815260408083208686039055606780548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b6001600160a01b038216611d795760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161020e565b8060676000828254611d8b9190611e35565b90915550506001600160a01b0382166000818152606560209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b600060208284031215611df657600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b600082611e3057634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111561074157610741611dfd565b6001600160a01b0381168114611e5d57600080fd5b50565b600060208284031215611e7257600080fd5b8135611e7d81611e48565b9392505050565b600060208083528351808285015260005b81811015611eb157858101830151858201604001528201611e95565b506000604082860101526040601f19601f8301168501019250505092915050565b60008060408385031215611ee557600080fd5b8235611ef081611e48565b946020939093013593505050565b600080600060608486031215611f1357600080fd5b8335611f1e81611e48565b92506020840135611f2e81611e48565b929592945050506040919091013590565b600060208284031215611f5157600080fd5b5035919050565b600060208284031215611f6a57600080fd5b813567ffffffffffffffff81168114611e7d57600080fd5b60008060408385031215611f9557600080fd5b8235611fa081611e48565b91506020830135611fb081611e48565b809150509250929050565b600080600060408486031215611fd057600080fd5b8335611fdb81611e48565b9250602084013567ffffffffffffffff80821115611ff857600080fd5b818601915086601f83011261200c57600080fd5b81358181111561201b57600080fd5b87602082850101111561202d57600080fd5b6020830194508093505050509250925092565b600181811c9082168061205457607f821691505b6020821081036117e057634e487b7160e01b600052602260045260246000fd5b60006001820161208657612086611dfd565b5060010190565b808202811582820484141761074157610741611dfd565b8181038181111561074157610741611dfd565b6000816120c6576120c6611dfd565b506000190190565b65029ba30b5b2960d51b815281836006830137660810dc99591a5d60ca1b91016006810191909152600d01919050565b611cdd60f21b81528183600283013760009101600201908152919050565b808201828112600083128015821682158216171561213c5761213c611dfd565b505092915050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b634e487b7160e01b600052604160045260246000fd5b601f82111561198157600081815260208120601f850160051c810160208610156121cc5750805b601f850160051c820191505b818110156121eb578281556001016121d8565b505050505050565b815167ffffffffffffffff81111561220d5761220d61218f565b6122218161221b8454612040565b846121a5565b602080601f831160018114612256576000841561223e5750858301515b600019600386901b1c1916600185901b1785556121eb565b600085815260208120601f198616915b8281101561228557888601518255948401946001909101908401612266565b50858210156122a35787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000602082840312156122c557600080fd5b8151611e7d81611e4856fea164736f6c6343000811000a", }, { ContractAddr: common.HexToAddress(GovernorContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/1abdfbf3aeb86909c2220b79bf92b87ddff64b54", - Code: "6080604052600436106103d25760003560e01c80637b3c71d3116101fd578063c28bc2fa11610118578063e23a9a52116100ab578063f1fad1041161007a578063f1fad10414610db0578063f23a6e6114610dc5578063f8ce560a14610df1578063fc0c546a14610e11578063fe0d94c114610e3257600080fd5b8063e23a9a5214610c85578063ea0217cf14610d50578063eb9019d414610d70578063ece40cc114610d9057600080fd5b8063da95691a116100e7578063da95691a14610bcb578063dd4e2ba514610beb578063ddf0b00914610c31578063deaaa7cc14610c5157600080fd5b8063c28bc2fa14610b59578063c59057e414610b6c578063d07f91e914610b8c578063d33219b414610bac57600080fd5b8063a7713a7011610190578063b58131b01161015f578063b58131b014610add578063bc197c8114610af2578063c01f9e3714610b1e578063c170ec0b14610b3e57600080fd5b8063a7713a7014610a68578063a890c91014610a7d578063ab58fb8e14610a9d578063ac43175114610abd57600080fd5b806384b0196e116101cc57806384b0196e146109e057806391ddadf414610a0857806397c3d33414610a345780639a802a6d14610a4857600080fd5b80637b3c71d3146109765780637d5e81e2146109965780638129fc1c146109b65780638456cb59146109cb57600080fd5b80633932abb1116102ed578063533ddd14116102805780635f398a141161024f5780635f398a14146108ef57806360c4247f1461090f57806363d42b381461092f57806370b0f6601461095657600080fd5b8063533ddd141461085457806354fd4d501461088557806356781388146108af5780635c975abb146108cf57600080fd5b806343859632116102bc57806343859632146107ad578063452115d6146107f85780634bf5d7e9146108185780634bf6c8821461082d57600080fd5b80633932abb11461072a5780633bccf4fd146107405780633e4f49e61461076057806340e58ee51461078d57600080fd5b8063150b7a02116103655780632d63f693116103345780632d63f693146106665780632fe3e2611461069d578063328dd982146106d157806332b8113e1461070157600080fd5b8063150b7a02146105da578063160cbed71461061e57806324bc1a641461063e5780632656227d1461065357600080fd5b8063046f7da2116103a1578063046f7da21461052d57806306f3f9e61461054257806306fdde0314610562578063143489d01461058457600080fd5b8063013cf08b1461044257806301ffc9a7146104bd57806302a251a3146104ed578063034201811461050d57600080fd5b3661043d57306103e0610e45565b6001600160a01b03161461043b5760405162461bcd60e51b815260206004820152601f60248201527f476f7665726e6f723a206d7573742073656e6420746f206578656375746f720060448201526064015b60405180910390fd5b005b600080fd5b34801561044e57600080fd5b5061046261045d3660046156d1565b610e5f565b604080519a8b526001600160a01b0390991660208b0152978901969096526060880194909452608087019290925260a086015260c085015260e084015215156101008301521515610120820152610140015b60405180910390f35b3480156104c957600080fd5b506104dd6104d83660046156ea565b610f1a565b60405190151581526020016104b4565b3480156104f957600080fd5b50610162545b6040519081526020016104b4565b34801561051957600080fd5b506104ff610528366004615830565b610f2b565b34801561053957600080fd5b5061043b611023565b34801561054e57600080fd5b5061043b61055d3660046156d1565b61108c565b34801561056e57600080fd5b50610577611117565b6040516104b49190615926565b34801561059057600080fd5b506105c261059f3660046156d1565b60009081526101306020526040902054600160401b90046001600160a01b031690565b6040516001600160a01b0390911681526020016104b4565b3480156105e657600080fd5b506106056105f536600461594e565b630a85bd0160e11b949350505050565b6040516001600160e01b031990911681526020016104b4565b34801561062a57600080fd5b506104ff610639366004615b25565b6111aa565b34801561064a57600080fd5b506104ff6111ec565b6104ff610661366004615b25565b611212565b34801561067257600080fd5b506104ff6106813660046156d1565b600090815261013060205260409020546001600160401b031690565b3480156106a957600080fd5b506104ff7fb3b3f3b703cd84ce352197dcff232b1b5d3cfb2025ce47cf04742d0651f1af8881565b3480156106dd57600080fd5b506106f16106ec3660046156d1565b611305565b6040516104b49493929190615c7d565b34801561070d57600080fd5b5061025c546040516001600160401b0390911681526020016104b4565b34801561073657600080fd5b50610161546104ff565b34801561074c57600080fd5b506104ff61075b366004615cca565b611597565b34801561076c57600080fd5b5061078061077b3660046156d1565b61160d565b6040516104b49190615d2e565b34801561079957600080fd5b5061043b6107a83660046156d1565b611618565b3480156107b957600080fd5b506104dd6107c8366004615d56565b6000828152610193602090815260408083206001600160a01b038516845260080190915290205460ff1692915050565b34801561080457600080fd5b506104ff610813366004615b25565b611643565b34801561082457600080fd5b50610577611651565b34801561083957600080fd5b50610842600881565b60405160ff90911681526020016104b4565b34801561086057600080fd5b506104dd61086f366004615d86565b61028e6020526000908152604090205460ff1681565b34801561089157600080fd5b506040805180820190915260018152603160f81b6020820152610577565b3480156108bb57600080fd5b506104ff6108ca366004615da3565b6116fe565b3480156108db57600080fd5b5061028f546104dd90610100900460ff1681565b3480156108fb57600080fd5b506104ff61090a366004615dcf565b611727565b34801561091b57600080fd5b506104ff61092a3660046156d1565b611771565b34801561093b57600080fd5b5061028f546105c2906201000090046001600160a01b031681565b34801561096257600080fd5b5061043b6109713660046156d1565b611826565b34801561098257600080fd5b506104ff610991366004615e52565b6118ae565b3480156109a257600080fd5b506104ff6109b1366004615eab565b611900565b3480156109c257600080fd5b5061043b611990565b3480156109d757600080fd5b5061043b611bce565b3480156109ec57600080fd5b506109f5611c3b565b6040516104b49796959493929190615f4b565b348015610a1457600080fd5b50610a1d611cd9565b60405165ffffffffffff90911681526020016104b4565b348015610a4057600080fd5b5060646104ff565b348015610a5457600080fd5b506104ff610a63366004615fad565b611d4d565b348015610a7457600080fd5b506104ff611d64565b348015610a8957600080fd5b5061043b610a98366004615d86565b611d91565b348015610aa957600080fd5b506104ff610ab83660046156d1565b611e19565b348015610ac957600080fd5b5061043b610ad8366004616005565b611eb5565b348015610ae957600080fd5b506104ff612494565b348015610afe57600080fd5b50610605610b0d366004616064565b63bc197c8160e01b95945050505050565b348015610b2a57600080fd5b506104ff610b393660046156d1565b6124a0565b348015610b4a57600080fd5b5061028f546104dd9060ff1681565b61043b610b673660046160f7565b6124ab565b348015610b7857600080fd5b506104ff610b87366004615b25565b6125bb565b348015610b9857600080fd5b5061043b610ba736600461613a565b6125f5565b348015610bb857600080fd5b506101f8546001600160a01b03166105c2565b348015610bd757600080fd5b506104ff610be6366004616163565b61267d565b348015610bf757600080fd5b5060408051808201909152601a81527f737570706f72743d627261766f2671756f72756d3d627261766f0000000000006020820152610577565b348015610c3d57600080fd5b5061043b610c4c3660046156d1565b612704565b348015610c5d57600080fd5b506104ff7f150214d74d59b7d1e90c73fc22ef3d991dd0a76b046543d4d80ab92d2a50328f81565b348015610c9157600080fd5b50610d20610ca0366004615d56565b6040805160608101825260008082526020820181905291810191909152506000918252610193602090815260408084206001600160a01b0393909316845260089092018152918190208151606081018352905460ff8082161515835261010082041693820193909352620100009092046001600160601b03169082015290565b6040805182511515815260208084015160ff1690820152918101516001600160601b0316908201526060016104b4565b348015610d5c57600080fd5b5061043b610d6b3660046156d1565b612727565b348015610d7c57600080fd5b506104ff610d8b366004616204565b6127af565b348015610d9c57600080fd5b5061043b610dab3660046156d1565b6127d0565b348015610dbc57600080fd5b50610842601181565b348015610dd157600080fd5b50610605610de0366004616230565b63f23a6e6160e01b95945050505050565b348015610dfd57600080fd5b506104ff610e0c3660046156d1565b612858565b348015610e1d57600080fd5b506101c5546105c2906001600160a01b031681565b61043b610e403660046156d1565b6128e7565b6000610e5a6101f8546001600160a01b031690565b905090565b8060008080808080808080610e738a611e19565b60008c815261013060205260409020549098506001600160401b03169650610e9a8b6124a0565b60008c81526101936020526040812080546005820154600683015460078401546001600160a01b039093169e50949a509850929650919450610edb8d61160d565b90506002816007811115610ef157610ef1615d18565b1493506007816007811115610f0857610f08615d18565b14925050509193959799509193959799565b6000610f258261290a565b92915050565b600080610fcf610fc77fb3b3f3b703cd84ce352197dcff232b1b5d3cfb2025ce47cf04742d0651f1af888c8c8c8c604051610f67929190616298565b60405180910390208b80519060200120604051602001610fac959493929190948552602085019390935260ff9190911660408401526060830152608082015260a00190565b6040516020818303038152906040528051906020012061292f565b86868661295c565b90506110158a828b8b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508d925061297a915050565b9a9950505050505050505050565b61028f546201000090046001600160a01b0316331461105557604051631431806f60e11b815260040160405180910390fd5b61028f805461ff00191690556040517f62451d457bc659158be6e6247f56ec1df424a5c7597f71c20c2bc44e0965c8f990600090a1565b611094610e45565b6001600160a01b0316336001600160a01b0316146110c45760405162461bcd60e51b8152600401610432906162a8565b306110cd610e45565b6001600160a01b03161461110b57600080366040516110ed929190616298565b604051809103902090505b80611104610131612989565b036110f857505b61111481612a08565b50565b606061012f8054611127906162df565b80601f0160208091040260200160405190810160405280929190818152602001828054611153906162df565b80156111a05780601f10611175576101008083540402835291602001916111a0565b820191906000526020600020905b81548152906001019060200180831161118357829003601f168201915b5050505050905090565b61028f54600090610100900460ff16156111d75760405163e96776bf60e01b815260040160405180910390fd5b6111e385858585612b79565b95945050505050565b6000610e5a60016111fb611cd9565b611205919061632f565b65ffffffffffff16612858565b600080611221868686866125bb565b9050600061122e8261160d565b9050600481600781111561124457611244615d18565b14806112615750600581600781111561125f5761125f615d18565b145b61127d5760405162461bcd60e51b815260040161043290616355565b6000828152610130602052604090819020600201805460ff19166001179055517f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f906112cc9084815260200190565b60405180910390a16112e18288888888612d7e565b6112ee8288888888612e1f565b6112fb8288888888612ed0565b5095945050505050565b606080606080600061019360008781526020019081526020016000209050806001018160020182600301836004018380548060200260200160405190810160405280929190818152602001828054801561138857602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161136a575b50505050509350828054806020026020016040519081016040528092919081815260200182805480156113da57602002820191906000526020600020905b8154815260200190600101908083116113c6575b5050505050925081805480602002602001604051908101604052809291908181526020016000905b828210156114ae578382906000526020600020018054611421906162df565b80601f016020809104026020016040519081016040528092919081815260200182805461144d906162df565b801561149a5780601f1061146f5761010080835404028352916020019161149a565b820191906000526020600020905b81548152906001019060200180831161147d57829003601f168201915b505050505081526020019060010190611402565b50505050915080805480602002602001604051908101604052809291908181526020016000905b828210156115815783829060005260206000200180546114f4906162df565b80601f0160208091040260200160405190810160405280929190818152602001828054611520906162df565b801561156d5780601f106115425761010080835404028352916020019161156d565b820191906000526020600020905b81548152906001019060200180831161155057829003601f168201915b5050505050815260200190600101906114d5565b5050505090509450945094509450509193509193565b604080517f150214d74d59b7d1e90c73fc22ef3d991dd0a76b046543d4d80ab92d2a50328f602082015290810186905260ff8516606082015260009081906115e590610fc790608001610fac565b905061160287828860405180602001604052806000815250612f0b565b979650505050505050565b6000610f2582612f2e565b6000806000806116278561307b565b935093509350935061163b84848484611643565b505050505050565b60006111e38585858561330c565b6101c55460408051634bf5d7e960e01b815290516060926001600160a01b031691634bf5d7e99160048083019260009291908290030181865afa9250505080156116bd57506040513d6000823e601f3d908101601f191682016040526116ba9190810190616396565b60015b6116f9575060408051808201909152601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c74000000602082015290565b919050565b60008033905061171f84828560405180602001604052806000815250612f0b565b949350505050565b60008033905061160287828888888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a925061297a915050565b61022b5460009080820361178a57505061022a54919050565b600061022b61179a600184616403565b815481106117aa576117aa616416565b60009182526020918290206040805180820190915291015463ffffffff8116808352600160201b9091046001600160e01b0316928201929092529150841061180057602001516001600160e01b03169392505050565b61181561180c856133d7565b61022b90613440565b6001600160e01b0316949350505050565b61182e610e45565b6001600160a01b0316336001600160a01b03161461185e5760405162461bcd60e51b8152600401610432906162a8565b30611867610e45565b6001600160a01b0316146118a55760008036604051611887929190616298565b604051809103902090505b8061189e610131612989565b0361189257505b611114816134f3565b6000803390506118f686828787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612f0b92505050565b9695505050505050565b600061190a613536565b60005b85518110156119835761028e600087838151811061192d5761192d616416565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff1661197157604051630b094f2760e31b815260040160405180910390fd5b8061197b8161642c565b91505061190d565b506111e3858585856135e1565b600054610100900460ff16158080156119b05750600054600160ff909116105b806119ca5750303b1580156119ca575060005460ff166001145b611a2d5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610432565b6000805460ff191660011790558015611a50576000805461ff0019166101001790555b334114611a705760405163022d8c9560e31b815260040160405180910390fd5b3a15611a8f576040516383f1b1d360e01b815260040160405180910390fd5b611abb6040518060400160405280600b81526020016a2129a1a3b7bb32b93737b960a91b815250613649565b611ae5611aca6003603c61645b565b611ad66003607861645b565b68056bc75e2d631000006136a0565b611aed6136d7565b611af86120056136fe565b611b0361200661372e565b611b0d600a61375e565b611b21611b1c6003603c61645b565b61378e565b61100760005261028e6020527f4cdb1a6c4b56f62f27f7202d75e865c2405f138cb32ec45019c0f2ca8f91e472805460ff1916600117905561028f805475df87f0e2b8519ea2dd4abd8b639cdd628497ed25000062010000600160b01b03199091161790558015611114576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b61028f546201000090046001600160a01b03163314611c0057604051631431806f60e11b815260040160405180910390fd5b61028f805461ff0019166101001790556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e75290600090a1565b6000606080600080600060606065546000801b148015611c5b5750606654155b611c9f5760405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b6044820152606401610432565b611ca76137be565b611caf6137cd565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b6101c554604080516324776b7d60e21b815290516000926001600160a01b0316916391ddadf49160048083019260209291908290030181865afa925050508015611d40575060408051601f3d908101601f19168201909252611d3d9181019061647d565b60015b6116f957610e5a436137dc565b6000611d5a848484613843565b90505b9392505050565b61022b5460009015611d8957611d7b61022b6138ba565b6001600160e01b0316905090565b5061022a5490565b611d99610e45565b6001600160a01b0316336001600160a01b031614611dc95760405162461bcd60e51b8152600401610432906162a8565b30611dd2610e45565b6001600160a01b031614611e105760008036604051611df2929190616298565b604051809103902090505b80611e09610131612989565b03611dfd57505b611114816138ea565b6101f85460008281526101f9602052604080822054905163d45c443560e01b81526004810191909152909182916001600160a01b039091169063d45c443590602401602060405180830381865afa158015611e78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e9c91906164a5565b905080600114611eac5780611d5d565b60009392505050565b3361100714611edb57604051630f22c43960e41b81526110076004820152602401610432565b611f416040518060400160405280600b81526020016a766f74696e6744656c617960a81b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506139559050565b15611fea5760208114611f6f5783838383604051630a5a604160e01b815260040161043294939291906164e7565b604080516020601f8401819004810282018101909252828152600091611fb09185858083850183828082843760009201919091525092939250506139ae9050565b905080600003611fdb5784848484604051630a5a604160e01b815260040161043294939291906164e7565b611fe4816134f3565b50612451565b6120516040518060400160405280600c81526020016b1d9bdd1a5b99d4195c9a5bd960a21b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506139559050565b156120f4576020811461207f5783838383604051630a5a604160e01b815260040161043294939291906164e7565b604080516020601f84018190048102820181019092528281526000916120c09185858083850183828082843760009201919091525092939250506139ae9050565b9050806000036120eb5784848484604051630a5a604160e01b815260040161043294939291906164e7565b611fe4816139b3565b612160604051806040016040528060118152602001701c1c9bdc1bdcd85b151a1c995cda1bdb19607a1b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506139559050565b15612203576020811461218e5783838383604051630a5a604160e01b815260040161043294939291906164e7565b604080516020601f84018190048102820181019092528281526000916121cf9185858083850183828082843760009201919091525092939250506139ae9050565b9050806000036121fa5784848484604051630a5a604160e01b815260040161043294939291906164e7565b611fe481613a56565b61226d6040518060400160405280600f81526020016e38bab7b93ab6a73ab6b2b930ba37b960891b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506139559050565b15612310576020811461229b5783838383604051630a5a604160e01b815260040161043294939291906164e7565b604080516020601f84018190048102820181019092528281526000916122dc9185858083850183828082843760009201919091525092939250506139ae9050565b9050806000036123075784848484604051630a5a604160e01b815260040161043294939291906164e7565b611fe481612a08565b61237f604051806040016040528060148152602001736d696e506572696f64416674657251756f72756d60601b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506139559050565b1561243057600881146123ad5783838383604051630a5a604160e01b815260040161043294939291906164e7565b60006123f3600884848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506139ae9050565b9050806001600160401b03166000036124275784848484604051630a5a604160e01b815260040161043294939291906164e7565b611fe481613a99565b838383836040516325ee20d560e21b815260040161043294939291906164e7565b7ff1ce9b2cbf50eeb05769a29e2543fd350cab46894a7dd9978a12d534bb20e6338484848460405161248694939291906164e7565b60405180910390a150505050565b6000610e5a6101635490565b6000610f2582613b05565b6124b3610e45565b6001600160a01b0316336001600160a01b0316146124e35760405162461bcd60e51b8152600401610432906162a8565b306124ec610e45565b6001600160a01b03161461252a576000803660405161250c929190616298565b604051809103902090505b80612523610131612989565b0361251757505b600080856001600160a01b0316858585604051612548929190616298565b60006040518083038185875af1925050503d8060008114612585576040519150601f19603f3d011682016040523d82523d6000602084013e61258a565b606091505b50915091506125b2828260405180606001604052806028815260200161695060289139613b43565b50505050505050565b6000848484846040516020016125d4949392919061650e565b60408051601f19818403018152919052805160209091012095945050505050565b6125fd610e45565b6001600160a01b0316336001600160a01b03161461262d5760405162461bcd60e51b8152600401610432906162a8565b30612636610e45565b6001600160a01b0316146126745760008036604051612656929190616298565b604051809103902090505b8061266d610131612989565b0361266157505b61111481613a99565b600082518451146126e15760405162461bcd60e51b815260206004820152602860248201527f476f7665726e6f72427261766f3a20696e76616c6964207369676e61747572656044820152670e640d8cadccee8d60c31b6064820152608401610432565b6126ef338787878787613b5c565b6118f686866126fe8787613c1a565b85611900565b6000806000806127138561307b565b935093509350935061163b848484846111aa565b61272f610e45565b6001600160a01b0316336001600160a01b03161461275f5760405162461bcd60e51b8152600401610432906162a8565b30612768610e45565b6001600160a01b0316146127a65760008036604051612788929190616298565b604051809103902090505b8061279f610131612989565b0361279357505b611114816139b3565b6000611d5d83836127cb60408051602081019091526000815290565b613843565b6127d8610e45565b6001600160a01b0316336001600160a01b0316146128085760405162461bcd60e51b8152600401610432906162a8565b30612811610e45565b6001600160a01b03161461284f5760008036604051612831929190616298565b604051809103902090505b80612848610131612989565b0361283c57505b61111481613a56565b6000606461286583611771565b6101c554604051632394e7a360e21b8152600481018690526001600160a01b0390911690638e539e8c90602401602060405180830381865afa1580156128af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128d391906164a5565b6128dd9190616559565b610f25919061645b565b6000806000806128f68561307b565b935093509350935061163b84848484611212565b60006001600160e01b03198216636e665ced60e01b1480610f255750610f2582613d4c565b6000610f2561293c613de8565b8360405161190160f01b8152600281019290925260228201526042902090565b600080600061296d87878787613df2565b915091506112fb81613eb6565b60006118f68686868686614000565b60006129a48254600f81810b600160801b909204900b131590565b156129c257604051631ed9509560e11b815260040160405180910390fd5b508054600f0b6000818152600180840160205260408220805492905583546fffffffffffffffffffffffffffffffff191692016001600160801b03169190911790915590565b6064811115612a8b5760405162461bcd60e51b815260206004820152604360248201527f476f7665726e6f72566f74657351756f72756d4672616374696f6e3a2071756f60448201527f72756d4e756d657261746f72206f7665722071756f72756d44656e6f6d696e616064820152623a37b960e91b608482015260a401610432565b6000612a95611d64565b90508015801590612aa7575061022b54155b15612b0c57604080518082019091526000815261022b9060208101612acb84614103565b6001600160e01b039081169091528254600181018455600093845260209384902083519490930151909116600160201b0263ffffffff909316929092179101555b612b3a612b27612b1a611cd9565b65ffffffffffff166133d7565b612b3084614103565b61022b919061416c565b505060408051828152602081018490527f0553476bf02ef2726e8ce5ced78d63e26e602e4a2257b1f559418e24b4633997910160405180910390a15050565b600080612b88868686866125bb565b90506004612b958261160d565b6007811115612ba657612ba6615d18565b14612bc35760405162461bcd60e51b815260040161043290616355565b6101f8546040805163793d064960e11b815290516000926001600160a01b03169163f27a0c929160048083019260209291908290030181865afa158015612c0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c3291906164a5565b6101f85460405163b1c5f42760e01b81529192506001600160a01b03169063b1c5f42790612c6d908a908a908a906000908b90600401616570565b602060405180830381865afa158015612c8a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cae91906164a5565b60008381526101f96020526040808220929092556101f85491516308f2a0bb60e41b81526001600160a01b0390921691638f2a0bb091612cfb918b918b918b91908b9089906004016165be565b600060405180830381600087803b158015612d1557600080fd5b505af1158015612d29573d6000803e3d6000fd5b505050507f9a2e42fd6722813d69113e7d0079d3d940171428df7373df9c7f7617cfda2892828242612d5b9190616616565b604080519283526020830191909152015b60405180910390a15095945050505050565b30612d87610e45565b6001600160a01b031614612e185760005b845181101561163b57306001600160a01b0316858281518110612dbd57612dbd616416565b60200260200101516001600160a01b031603612e0857612e08838281518110612de857612de8616416565b60200260200101518051906020012061013161418790919063ffffffff16565b612e118161642c565b9050612d98565b5050505050565b61028f54610100900460ff1615612e495760405163e96776bf60e01b815260040160405180910390fd5b60005b8451811015612ec25761028e6000868381518110612e6c57612e6c616416565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16612eb057604051630b094f2760e31b815260040160405180910390fd5b80612eba8161642c565b915050612e4c565b50612e1885858585856141c3565b30612ed9610e45565b6001600160a01b031614612e185761013154600f81810b600160801b909204900b1315612e1857600061013155612e18565b60006111e385858585612f2960408051602081019091526000815290565b61297a565b600080612f3a83614238565b90506004816007811115612f5057612f50615d18565b14612f5b5792915050565b60008381526101f9602052604090205480612f77575092915050565b6101f854604051632ab0f52960e01b8152600481018390526001600160a01b0390911690632ab0f52990602401602060405180830381865afa158015612fc1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fe59190616629565b15612ff4575060079392505050565b6101f854604051632c258a9f60e11b8152600481018390526001600160a01b039091169063584b153e90602401602060405180830381865afa15801561303e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130629190616629565b15613071575060059392505050565b5060029392505050565b606080606060008061019360008781526020019081526020016000209050806001018160020161324d83600301805480602002602001604051908101604052809291908181526020016000905b828210156131745783829060005260206000200180546130e7906162df565b80601f0160208091040260200160405190810160405280929190818152602001828054613113906162df565b80156131605780601f1061313557610100808354040283529160200191613160565b820191906000526020600020905b81548152906001019060200180831161314357829003601f168201915b5050505050815260200190600101906130c8565b50505060048601805460408051602080840282018101909252828152935060009084015b828210156132445783829060005260206000200180546131b7906162df565b80601f01602080910402602001604051908101604052809291908181526020018280546131e3906162df565b80156132305780601f1061320557610100808354040283529160200191613230565b820191906000526020600020905b81548152906001019060200180831161321357829003601f168201915b505050505081526020019060010190613198565b50505050613c1a565b60098401548354604080516020808402820181019092528281529186918301828280156132a357602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311613285575b50505050509350828054806020026020016040519081016040528092919081815260200182805480156132f557602002820191906000526020600020905b8154815260200190600101908083116132e1575b505050505092509450945094509450509193509193565b60008061331b868686866125bb565b600081815261019360205260409020549091506001600160a01b03163381148061336f5750613348612494565b61336d826001613356611cd9565b613360919061632f565b65ffffffffffff166127af565b105b6133cb5760405162461bcd60e51b815260206004820152602760248201527f476f7665726e6f72427261766f3a2070726f706f7365722061626f76652074686044820152661c995cda1bdb1960ca1b6064820152608401610432565b61160287878787614370565b600063ffffffff82111561343c5760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201526532206269747360d01b6064820152608401610432565b5090565b81546000908181600581111561349d57600061345b8461437e565b6134659085616403565b60008881526020902090915081015463ffffffff908116908716101561348d5780915061349b565b613498816001616616565b92505b505b60006134ab87878585614466565b905080156134e6576134d0876134c2600184616403565b600091825260209091200190565b54600160201b90046001600160e01b0316611602565b6000979650505050505050565b6101615460408051918252602082018390527fc565b045403dc03c2eea82b81a0465edad9e2e7fc4d97e11421c209da93d7a93910160405180910390a161016155565b61028f5460ff166135df576a084595161401484a0000006120056001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561358d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135b191906164a5565b10156135d0576040516311b6707f60e01b815260040160405180910390fd5b61028f805460ff191660011790555b565b600061363d33868686516001600160401b038111156136025761360261576d565b60405190808252806020026020018201604052801561363557816020015b60608152602001906001900390816136205790505b508787613b5c565b6111e3858585856144bc565b600054610100900460ff166136705760405162461bcd60e51b81526004016104329061664b565b613697816136926040805180820190915260018152603160f81b602082015290565b61489b565b611114816148ea565b600054610100900460ff166136c75760405162461bcd60e51b81526004016104329061664b565b6136d2838383614922565b505050565b600054610100900460ff166135df5760405162461bcd60e51b81526004016104329061664b565b600054610100900460ff166137255760405162461bcd60e51b81526004016104329061664b565b61111481614964565b600054610100900460ff166137555760405162461bcd60e51b81526004016104329061664b565b611114816149ae565b600054610100900460ff166137855760405162461bcd60e51b81526004016104329061664b565b611114816149d5565b600054610100900460ff166137b55760405162461bcd60e51b81526004016104329061664b565b611114816149fc565b606060678054611127906162df565b606060688054611127906162df565b600065ffffffffffff82111561343c5760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203460448201526538206269747360d01b6064820152608401610432565b6101c554604051630748d63560e31b81526001600160a01b038581166004830152602482018590526000921690633a46b1a890604401602060405180830381865afa158015613896573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d5a91906164a5565b80546000908015611eac576138d4836134c2600184616403565b54600160201b90046001600160e01b0316611d5d565b6101f854604080516001600160a01b03928316815291831660208301527f08f74ea46ef7894f65eabfb5e6e695de773a000b47c529ab559178069b226401910160405180910390a16101f880546001600160a01b0319166001600160a01b0392909216919091179055565b6000816040516020016139689190616696565b604051602081830303815290604052805190602001208360405160200161398f9190616696565b6040516020818303038152906040528051906020012014905092915050565b015190565b60008111613a135760405162461bcd60e51b815260206004820152602760248201527f476f7665726e6f7253657474696e67733a20766f74696e6720706572696f6420604482015266746f6f206c6f7760c81b6064820152608401610432565b6101625460408051918252602082018390527f7e3f7f0708a84de9203036abaa450dccc85ad5ff52f78c170f3edb55cf5e8828910160405180910390a161016255565b6101635460408051918252602082018390527fccb45da8d5717e6c4544694297c4ba5cf151d455c9bb0ed4fc7a38411bc05461910160405180910390a161016355565b61025c54604080516001600160401b03928316815291831660208301527f7ca4ac117ed3cdce75c1161d8207c440389b1a15d69d096831664657c07dafc2910160405180910390a161025c805467ffffffffffffffff19166001600160401b0392909216919091179055565b60008181526101306020526040812060010154610f25906001600160401b0316600084815261025d60205260409020546001600160401b0316614a23565b60608315613b52575081611d5d565b611d5d8383614a39565b805160208201206000613b7a8787613b748888613c1a565b856125bb565b600081815261019360205260409020600981015491925090613c0f5780546001600160a01b0319166001600160a01b038a161781558751613bc490600183019060208b0190615508565b508651613bda90600283019060208a0190615569565b508551613bf090600383019060208901906155a4565b508451613c0690600483019060208801906155f6565b50600981018390555b505050505050505050565b6060600082516001600160401b03811115613c3757613c3761576d565b604051908082528060200260200182016040528015613c6a57816020015b6060815260200190600190039081613c555790505b50905060005b8151811015613d4457848181518110613c8b57613c8b616416565b602002602001015151600014613cfb57848181518110613cad57613cad616416565b602002602001015180519060200120848281518110613cce57613cce616416565b6020026020010151604051602001613ce79291906166b2565b604051602081830303815290604052613d16565b838181518110613d0d57613d0d616416565b60200260200101515b828281518110613d2857613d28616416565b602002602001018190525080613d3d9061642c565b9050613c70565b509392505050565b600063288ace0360e11b6318df743f60e31b63bf26d89760e01b6379dd796f60e01b6001600160e01b03198616821480613d9257506001600160e01b0319868116908216145b80613da957506001600160e01b0319868116908516145b80613dc457506001600160e01b03198616630271189760e51b145b806118f657506301ffc9a760e01b6001600160e01b03198716149695505050505050565b6000610e5a614a63565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115613e295750600090506003613ead565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015613e7d573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116613ea657600060019250925050613ead565b9150600090505b94509492505050565b6000816004811115613eca57613eca615d18565b03613ed25750565b6001816004811115613ee657613ee6615d18565b03613f335760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610432565b6002816004811115613f4757613f47615d18565b03613f945760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610432565b6003816004811115613fa857613fa8615d18565b036111145760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610432565b6000806140108787878787614ad7565b600088815261025d60205260409020549091506001600160401b031615801561403d575061403d87614c2d565b156118f657600061405761025c546001600160401b031690565b61405f611cd9565b65ffffffffffff1661407191906166e3565b905061407c886124a0565b816001600160401b031611156140cb576040516001600160401b038216815288907f541f725fb9f7c98a30cc9c0ff32fbb14358cd7159c847a3aa20a2bdc442ba5119060200160405180910390a25b600088815261025d60205260409020805467ffffffffffffffff19166001600160401b03929092169190911790559695505050505050565b60006001600160e01b0382111561343c5760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20326044820152663234206269747360c81b6064820152608401610432565b60008061417a858585614c6d565b915091505b935093915050565b8154600160801b90819004600f0b6000818152600180860160205260409091209390935583546001600160801b03908116939091011602179055565b6101f85460405163e38335e560e01b81526001600160a01b039091169063e38335e59034906141ff908890889088906000908990600401616570565b6000604051808303818588803b15801561421857600080fd5b505af115801561422c573d6000803e3d6000fd5b50505050505050505050565b600081815261013060205260408120600281015460ff161561425d5750600792915050565b6002810154610100900460ff16156142785750600292915050565b600083815261013060205260408120546001600160401b0316908190036142e15760405162461bcd60e51b815260206004820152601d60248201527f476f7665726e6f723a20756e6b6e6f776e2070726f706f73616c2069640000006044820152606401610432565b60006142eb611cd9565b65ffffffffffff16905080821061430757506000949350505050565b6000614312866124a0565b90508181106143275750600195945050505050565b61433086614c2d565b801561435357506000868152610193602052604090206006810154600590910154115b156143645750600495945050505050565b50600395945050505050565b60006111e385858585614e0c565b60008160000361439057506000919050565b6000600161439d84614ec2565b901c6001901b905060018184816143b6576143b6616445565b048201901c905060018184816143ce576143ce616445565b048201901c905060018184816143e6576143e6616445565b048201901c905060018184816143fe576143fe616445565b048201901c9050600181848161441657614416616445565b048201901c9050600181848161442e5761442e616445565b048201901c9050600181848161444657614446616445565b048201901c9050611d5d8182858161446057614460616445565b04614f56565b60005b81831015613d4457600061447d8484614f65565b60008781526020902090915063ffffffff86169082015463ffffffff1611156144a8578092506144b6565b6144b3816001616616565b93505b50614469565b6000336144c98184614f80565b6145155760405162461bcd60e51b815260206004820152601d60248201527f476f7665726e6f723a2070726f706f73657220726573747269637465640000006044820152606401610432565b600061451f611cd9565b65ffffffffffff169050614531612494565b61454083610d8b600185616403565b10156145a85760405162461bcd60e51b815260206004820152603160248201527f476f7665726e6f723a2070726f706f73657220766f7465732062656c6f7720706044820152701c9bdc1bdcd85b081d1a1c995cda1bdb19607a1b6064820152608401610432565b60006145bd88888888805190602001206125bb565b905086518851146145e05760405162461bcd60e51b815260040161043290616703565b85518851146146015760405162461bcd60e51b815260040161043290616703565b60008851116146525760405162461bcd60e51b815260206004820152601860248201527f476f7665726e6f723a20656d7074792070726f706f73616c00000000000000006044820152606401610432565b600081815261013060205260409020546001600160401b0316156146c25760405162461bcd60e51b815260206004820152602160248201527f476f7665726e6f723a2070726f706f73616c20616c72656164792065786973746044820152607360f81b6064820152608401610432565b60006146ce6101615490565b6146d89084616616565b905060006146e66101625490565b6146f09083616616565b90506040518060e0016040528061470684615071565b6001600160401b031681526001600160a01b03871660208201526000604082015260600161473383615071565b6001600160401b03908116825260006020808401829052604080850183905260609485018390528883526101308252918290208551815492870151878501519186166001600160e01b031990941693909317600160401b6001600160a01b039094168402176001600160e01b0316600160e01b60e09290921c91909102178155938501516080860151908416921c0217600183015560a08301516002909201805460c09094015161ffff1990941692151561ff00191692909217610100931515939093029290921790558a517f7d84a6263ae0d98d3329bd7b46bb4e8d6f98cd35a7adb45c274c8b7fd5ebd5e091859188918e918e918111156148385761483861576d565b60405190808252806020026020018201604052801561486b57816020015b60608152602001906001900390816148565790505b508d88888f60405161488599989796959493929190616744565b60405180910390a1509098975050505050505050565b600054610100900460ff166148c25760405162461bcd60e51b81526004016104329061664b565b60676148ce8382616822565b5060686148db8282616822565b50506000606581905560665550565b600054610100900460ff166149115760405162461bcd60e51b81526004016104329061664b565b61012f61491e8282616822565b5050565b600054610100900460ff166149495760405162461bcd60e51b81526004016104329061664b565b614952836134f3565b61495b826139b3565b6136d281613a56565b600054610100900460ff1661498b5760405162461bcd60e51b81526004016104329061664b565b6101c580546001600160a01b0319166001600160a01b0392909216919091179055565b600054610100900460ff16611e105760405162461bcd60e51b81526004016104329061664b565b600054610100900460ff1661110b5760405162461bcd60e51b81526004016104329061664b565b600054610100900460ff166126745760405162461bcd60e51b81526004016104329061664b565b6000818311614a325781611d5d565b5090919050565b815115614a495781518083602001fd5b8060405162461bcd60e51b81526004016104329190615926565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f614a8e6150d9565b614a96615132565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b6000858152610130602052604081206001614af18861160d565b6007811115614b0257614b02615d18565b14614b5b5760405162461bcd60e51b815260206004820152602360248201527f476f7665726e6f723a20766f7465206e6f742063757272656e746c792061637460448201526269766560e81b6064820152608401610432565b8054600090614b759088906001600160401b031686613843565b9050614b848888888488615163565b8351600003614bd957866001600160a01b03167fb8e138887d0aa13bab447e82de9d5c1777041ecd21ca36ba824ff1e6c07ddda489888489604051614bcc94939291906168e1565b60405180910390a2611602565b866001600160a01b03167fe2babfbac5889a709b63bb7f598b324e08bc5a4fb9ec647fb3cbc9ec07eb87128988848989604051614c1a959493929190616909565b60405180910390a2979650505050505050565b6000818152610193602052604081206005810154614c64610e0c85600090815261013060205260409020546001600160401b031690565b11159392505050565b825460009081908015614db3576000614c8b876134c2600185616403565b60408051808201909152905463ffffffff808216808452600160201b9092046001600160e01b031660208401529192509087161015614d0c5760405162461bcd60e51b815260206004820152601b60248201527f436865636b706f696e743a2064656372656173696e67206b65797300000000006044820152606401610432565b805163ffffffff808816911603614d545784614d2d886134c2600186616403565b80546001600160e01b0392909216600160201b0263ffffffff909216919091179055614da3565b6040805180820190915263ffffffff80881682526001600160e01b0380881660208085019182528b54600181018d5560008d81529190912094519151909216600160201b029216919091179101555b60200151925083915061417f9050565b50506040805180820190915263ffffffff80851682526001600160e01b0380851660208085019182528854600181018a5560008a815291822095519251909316600160201b02919093161792019190915590508161417f565b600080614e1b86868686615301565b60008181526101f96020526040902054909150156111e3576101f85460008281526101f960205260409081902054905163c4d252f560e01b81526001600160a01b039092169163c4d252f591614e779160040190815260200190565b600060405180830381600087803b158015614e9157600080fd5b505af1158015614ea5573d6000803e3d6000fd5b50505060008281526101f960205260408120555095945050505050565b600080608083901c15614ed757608092831c92015b604083901c15614ee957604092831c92015b602083901c15614efb57602092831c92015b601083901c15614f0d57601092831c92015b600883901c15614f1f57600892831c92015b600483901c15614f3157600492831c92015b600283901c15614f4357600292831c92015b600183901c15610f255760010192915050565b6000818310614a325781611d5d565b6000614f74600284841861645b565b611d5d90848416616616565b80516000906034811015614f98576001915050610f25565b82810160131901516001600160a01b031981166b046e0e4dee0dee6cae47a60f60a31b14614fcb57600192505050610f25565b600080614fd9602885616403565b90505b8381101561505057600080615010888481518110614ffc57614ffc616416565b01602001516001600160f81b03191661540e565b91509150816150285760019650505050505050610f25565b8060ff166004856001600160a01b0316901b1793505050806150499061642c565b9050614fdc565b50856001600160a01b0316816001600160a01b031614935050505092915050565b60006001600160401b0382111561343c5760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203660448201526534206269747360d01b6064820152608401610432565b6000806150e46137be565b8051909150156150fb578051602090910120919050565b606554801561510a5792915050565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4709250505090565b60008061513d6137cd565b805190915015615154578051602090910120919050565b606654801561510a5792915050565b6000858152610193602090815260408083206001600160a01b038816845260088101909252909120805460ff16156151f35760405162461bcd60e51b815260206004820152602d60248201527f476f7665726e6f72436f6d7061746962696c697479427261766f3a20766f746560448201526c08185b1c9958591e4818d85cdd609a1b6064820152608401610432565b805460ff86166101000261ffff19909116176001178155615213846154a0565b81546001600160601b039190911662010000026dffffffffffffffffffffffff00001990911617815560ff851661526357838260060160008282546152589190616616565b909155506125b29050565b60001960ff86160161528357838260050160008282546152589190616616565b60011960ff8616016152a357838260070160008282546152589190616616565b60405162461bcd60e51b815260206004820152602d60248201527f476f7665726e6f72436f6d7061746962696c697479427261766f3a20696e766160448201526c6c696420766f7465207479706560981b6064820152608401610432565b600080615310868686866125bb565b9050600061531d8261160d565b9050600281600781111561533357615333615d18565b141580156153535750600681600781111561535057615350615d18565b14155b80156153715750600781600781111561536e5761536e615d18565b14155b6153bd5760405162461bcd60e51b815260206004820152601d60248201527f476f7665726e6f723a2070726f706f73616c206e6f74206163746976650000006044820152606401610432565b6000828152610130602052604090819020600201805461ff001916610100179055517f789cf55be980739dad1d0699b93b58e806b51c9d96619bfa8fe0a28abaa7b30c90612d6c9084815260200190565b60008060f883901c602f811180156154295750603a8160ff16105b1561543e57600194602f199091019350915050565b8060ff166040108015615454575060478160ff16105b15615469576001946036199091019350915050565b8060ff16606010801561547f575060678160ff16105b15615494576001946056199091019350915050565b50600093849350915050565b60006001600160601b0382111561343c5760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203960448201526536206269747360d01b6064820152608401610432565b82805482825590600052602060002090810192821561555d579160200282015b8281111561555d57825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190615528565b5061343c929150615648565b82805482825590600052602060002090810192821561555d579160200282015b8281111561555d578251825591602001919060010190615589565b8280548282559060005260206000209081019282156155ea579160200282015b828111156155ea57825182906155da9082616822565b50916020019190600101906155c4565b5061343c92915061565d565b82805482825590600052602060002090810192821561563c579160200282015b8281111561563c578251829061562c9082616822565b5091602001919060010190615616565b5061343c92915061567a565b5b8082111561343c5760008155600101615649565b8082111561343c5760006156718282615697565b5060010161565d565b8082111561343c57600061568e8282615697565b5060010161567a565b5080546156a3906162df565b6000825580601f106156b3575050565b601f0160209004906000526020600020908101906111149190615648565b6000602082840312156156e357600080fd5b5035919050565b6000602082840312156156fc57600080fd5b81356001600160e01b031981168114611d5d57600080fd5b803560ff811681146116f957600080fd5b60008083601f84011261573757600080fd5b5081356001600160401b0381111561574e57600080fd5b60208301915083602082850101111561576657600080fd5b9250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156157ab576157ab61576d565b604052919050565b60006001600160401b038211156157cc576157cc61576d565b50601f01601f191660200190565b600082601f8301126157eb57600080fd5b81356157fe6157f9826157b3565b615783565b81815284602083860101111561581357600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060008060008060e0898b03121561584c57600080fd5b8835975061585c60208a01615714565b965060408901356001600160401b038082111561587857600080fd5b6158848c838d01615725565b909850965060608b013591508082111561589d57600080fd5b506158aa8b828c016157da565b9450506158b960808a01615714565b925060a0890135915060c089013590509295985092959890939650565b60005b838110156158f15781810151838201526020016158d9565b50506000910152565b600081518084526159128160208601602086016158d6565b601f01601f19169290920160200192915050565b602081526000611d5d60208301846158fa565b6001600160a01b038116811461111457600080fd5b6000806000806080858703121561596457600080fd5b843561596f81615939565b9350602085013561597f81615939565b92506040850135915060608501356001600160401b038111156159a157600080fd5b6159ad878288016157da565b91505092959194509250565b60006001600160401b038211156159d2576159d261576d565b5060051b60200190565b600082601f8301126159ed57600080fd5b813560206159fd6157f9836159b9565b82815260059290921b84018101918181019086841115615a1c57600080fd5b8286015b84811015615a40578035615a3381615939565b8352918301918301615a20565b509695505050505050565b600082601f830112615a5c57600080fd5b81356020615a6c6157f9836159b9565b82815260059290921b84018101918181019086841115615a8b57600080fd5b8286015b84811015615a405780358352918301918301615a8f565b600082601f830112615ab757600080fd5b81356020615ac76157f9836159b9565b82815260059290921b84018101918181019086841115615ae657600080fd5b8286015b84811015615a405780356001600160401b03811115615b095760008081fd5b615b178986838b01016157da565b845250918301918301615aea565b60008060008060808587031215615b3b57600080fd5b84356001600160401b0380821115615b5257600080fd5b615b5e888389016159dc565b95506020870135915080821115615b7457600080fd5b615b8088838901615a4b565b94506040870135915080821115615b9657600080fd5b50615ba387828801615aa6565b949793965093946060013593505050565b600081518084526020808501945080840160005b83811015615bed5781516001600160a01b031687529582019590820190600101615bc8565b509495945050505050565b600081518084526020808501945080840160005b83811015615bed57815187529582019590820190600101615c0c565b600081518084526020808501808196508360051b8101915082860160005b85811015615c70578284038952615c5e8483516158fa565b98850198935090840190600101615c46565b5091979650505050505050565b608081526000615c906080830187615bb4565b8281036020840152615ca28187615bf8565b90508281036040840152615cb68186615c28565b905082810360608401526116028185615c28565b600080600080600060a08688031215615ce257600080fd5b85359450615cf260208701615714565b9350615d0060408701615714565b94979396509394606081013594506080013592915050565b634e487b7160e01b600052602160045260246000fd5b6020810160088310615d5057634e487b7160e01b600052602160045260246000fd5b91905290565b60008060408385031215615d6957600080fd5b823591506020830135615d7b81615939565b809150509250929050565b600060208284031215615d9857600080fd5b8135611d5d81615939565b60008060408385031215615db657600080fd5b82359150615dc660208401615714565b90509250929050565b600080600080600060808688031215615de757600080fd5b85359450615df760208701615714565b935060408601356001600160401b0380821115615e1357600080fd5b615e1f89838a01615725565b90955093506060880135915080821115615e3857600080fd5b50615e45888289016157da565b9150509295509295909350565b60008060008060608587031215615e6857600080fd5b84359350615e7860208601615714565b925060408501356001600160401b03811115615e9357600080fd5b615e9f87828801615725565b95989497509550505050565b60008060008060808587031215615ec157600080fd5b84356001600160401b0380821115615ed857600080fd5b615ee4888389016159dc565b95506020870135915080821115615efa57600080fd5b615f0688838901615a4b565b94506040870135915080821115615f1c57600080fd5b615f2888838901615aa6565b93506060870135915080821115615f3e57600080fd5b506159ad878288016157da565b60ff60f81b8816815260e060208201526000615f6a60e08301896158fa565b8281036040840152615f7c81896158fa565b606084018890526001600160a01b038716608085015260a0840186905283810360c085015290506110158185615bf8565b600080600060608486031215615fc257600080fd5b8335615fcd81615939565b92506020840135915060408401356001600160401b03811115615fef57600080fd5b615ffb868287016157da565b9150509250925092565b6000806000806040858703121561601b57600080fd5b84356001600160401b038082111561603257600080fd5b61603e88838901615725565b9096509450602087013591508082111561605757600080fd5b50615e9f87828801615725565b600080600080600060a0868803121561607c57600080fd5b853561608781615939565b9450602086013561609781615939565b935060408601356001600160401b03808211156160b357600080fd5b6160bf89838a01615a4b565b945060608801359150808211156160d557600080fd5b6160e189838a01615a4b565b93506080880135915080821115615e3857600080fd5b6000806000806060858703121561610d57600080fd5b843561611881615939565b93506020850135925060408501356001600160401b03811115615e9357600080fd5b60006020828403121561614c57600080fd5b81356001600160401b0381168114611d5d57600080fd5b600080600080600060a0868803121561617b57600080fd5b85356001600160401b038082111561619257600080fd5b61619e89838a016159dc565b965060208801359150808211156161b457600080fd5b6161c089838a01615a4b565b955060408801359150808211156161d657600080fd5b6161e289838a01615aa6565b945060608801359150808211156161f857600080fd5b6160e189838a01615aa6565b6000806040838503121561621757600080fd5b823561622281615939565b946020939093013593505050565b600080600080600060a0868803121561624857600080fd5b853561625381615939565b9450602086013561626381615939565b9350604086013592506060860135915060808601356001600160401b0381111561628c57600080fd5b615e45888289016157da565b8183823760009101908152919050565b60208082526018908201527f476f7665726e6f723a206f6e6c79476f7665726e616e63650000000000000000604082015260600190565b600181811c908216806162f357607f821691505b60208210810361631357634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b65ffffffffffff82811682821603908082111561634e5761634e616319565b5092915050565b60208082526021908201527f476f7665726e6f723a2070726f706f73616c206e6f74207375636365737366756040820152601b60fa1b606082015260800190565b6000602082840312156163a857600080fd5b81516001600160401b038111156163be57600080fd5b8201601f810184136163cf57600080fd5b80516163dd6157f9826157b3565b8181528560208385010111156163f257600080fd5b6111e38260208301602086016158d6565b81810381811115610f2557610f25616319565b634e487b7160e01b600052603260045260246000fd5b60006001820161643e5761643e616319565b5060010190565b634e487b7160e01b600052601260045260246000fd5b60008261647857634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561648f57600080fd5b815165ffffffffffff81168114611d5d57600080fd5b6000602082840312156164b757600080fd5b5051919050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6040815260006164fb6040830186886164be565b82810360208401526116028185876164be565b6080815260006165216080830187615bb4565b82810360208401526165338187615bf8565b905082810360408401526165478186615c28565b91505082606083015295945050505050565b8082028115828204841417610f2557610f25616319565b60a08152600061658360a0830188615bb4565b82810360208401526165958188615bf8565b905082810360408401526165a98187615c28565b60608401959095525050608001529392505050565b60c0815260006165d160c0830189615bb4565b82810360208401526165e38189615bf8565b905082810360408401526165f78188615c28565b60608401969096525050608081019290925260a0909101529392505050565b80820180821115610f2557610f25616319565b60006020828403121561663b57600080fd5b81518015158114611d5d57600080fd5b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b600082516166a88184602087016158d6565b9190910192915050565b6001600160e01b03198316815281516000906166d58160048501602087016158d6565b919091016004019392505050565b6001600160401b0381811683821601908082111561634e5761634e616319565b60208082526021908201527f476f7665726e6f723a20696e76616c69642070726f706f73616c206c656e67746040820152600d60fb1b606082015260800190565b8981526001600160a01b03891660208201526101206040820181905260009061676f8382018b615bb4565b90508281036060840152616783818a615bf8565b905082810360808401526167978189615c28565b905082810360a08401526167ab8188615c28565b90508560c08401528460e08401528281036101008401526167cc81856158fa565b9c9b505050505050505050505050565b601f8211156136d257600081815260208120601f850160051c810160208610156168035750805b601f850160051c820191505b8181101561163b5782815560010161680f565b81516001600160401b0381111561683b5761683b61576d565b61684f8161684984546162df565b846167dc565b602080601f831160018114616884576000841561686c5750858301515b600019600386901b1c1916600185901b17855561163b565b600085815260208120601f198616915b828110156168b357888601518255948401946001909101908401616894565b50858210156168d15787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b84815260ff841660208201528260408201526080606082015260006118f660808301846158fa565b85815260ff8516602082015283604082015260a06060820152600061693160a08301856158fa565b828103608084015261694381856158fa565b9897505050505050505056fe476f7665726e6f723a2072656c617920726576657274656420776974686f7574206d657373616765a164736f6c6343000811000a", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/9d09d0a3d6332460a810188261ec8195e05aa218", + Code: "6080604052600436106103f35760003560e01c80637b3c71d311610208578063c28bc2fa11610118578063e23a9a52116100ab578063f1fad1041161007a578063f1fad10414610e46578063f23a6e6114610e5b578063f8ce560a14610e87578063fc0c546a14610ea7578063fe0d94c114610ec857600080fd5b8063e23a9a5214610d1b578063ea0217cf14610de6578063eb9019d414610e06578063ece40cc114610e2657600080fd5b8063da95691a116100e7578063da95691a14610c61578063dd4e2ba514610c81578063ddf0b00914610cc7578063deaaa7cc14610ce757600080fd5b8063c28bc2fa14610bef578063c59057e414610c02578063d07f91e914610c22578063d33219b414610c4257600080fd5b8063a7713a701161019b578063b187bd261161016a578063b187bd2614610b55578063b58131b014610b73578063bc197c8114610b88578063c01f9e3714610bb4578063c170ec0b14610bd457600080fd5b8063a7713a7014610ae0578063a890c91014610af5578063ab58fb8e14610b15578063ac43175114610b3557600080fd5b806384b0196e116101d757806384b0196e14610a5857806391ddadf414610a8057806397c3d33414610aac5780639a802a6d14610ac057600080fd5b80637b3c71d3146109ee5780637d5e81e214610a0e5780638129fc1c14610a2e5780638456cb5914610a4357600080fd5b80633932abb1116103035780634a49ac4c1161029657806354fd4d501161026557806354fd4d5014610944578063567813881461096e5780635f398a141461098e57806360c4247f146109ae57806370b0f660146109ce57600080fd5b80634a49ac4c146108b75780634bf5d7e9146108d75780634bf6c882146108ec578063533ddd141461091357600080fd5b8063417c73a7116102d2578063417c73a7146107fc578063438596321461081c578063452115d6146108675780634838d1651461088757600080fd5b80633932abb1146107795780633bccf4fd1461078f5780633e4f49e6146107af57806340e58ee5146107dc57600080fd5b8063150b7a02116103865780632656227d116103555780632656227d146106a25780632d63f693146106b55780632fe3e261146106ec578063328dd9821461072057806332b8113e1461075057600080fd5b8063150b7a02146105fb578063160cbed71461063f57806317977c611461065f57806324bc1a641461068d57600080fd5b8063046f7da2116103c2578063046f7da21461054e57806306f3f9e61461056357806306fdde0314610583578063143489d0146105a557600080fd5b8063013cf08b1461046357806301ffc9a7146104de57806302a251a31461050e578063034201811461052e57600080fd5b3661045e5730610401610edb565b6001600160a01b03161461045c5760405162461bcd60e51b815260206004820152601f60248201527f476f7665726e6f723a206d7573742073656e6420746f206578656375746f720060448201526064015b60405180910390fd5b005b600080fd5b34801561046f57600080fd5b5061048361047e366004615c87565b610ef5565b604080519a8b526001600160a01b0390991660208b0152978901969096526060880194909452608087019290925260a086015260c085015260e084015215156101008301521515610120820152610140015b60405180910390f35b3480156104ea57600080fd5b506104fe6104f9366004615ca0565b610fb0565b60405190151581526020016104d5565b34801561051a57600080fd5b50610195545b6040519081526020016104d5565b34801561053a57600080fd5b50610520610549366004615de6565b610fc1565b34801561055a57600080fd5b5061045c6110b9565b34801561056f57600080fd5b5061045c61057e366004615c87565b611149565b34801561058f57600080fd5b506105986111d4565b6040516104d59190615edc565b3480156105b157600080fd5b506105e36105c0366004615c87565b60009081526101636020526040902054600160401b90046001600160a01b031690565b6040516001600160a01b0390911681526020016104d5565b34801561060757600080fd5b50610626610616366004615f04565b630a85bd0160e11b949350505050565b6040516001600160e01b031990911681526020016104d5565b34801561064b57600080fd5b5061052061065a3660046160db565b611267565b34801561066b57600080fd5b5061052061067a36600461616a565b6102c36020526000908152604090205481565b34801561069957600080fd5b50610520611352565b6105206106b03660046160db565b611378565b3480156106c157600080fd5b506105206106d0366004615c87565b600090815261016360205260409020546001600160401b031690565b3480156106f857600080fd5b506105207fb3b3f3b703cd84ce352197dcff232b1b5d3cfb2025ce47cf04742d0651f1af8881565b34801561072c57600080fd5b5061074061073b366004615c87565b61146b565b6040516104d59493929190616250565b34801561075c57600080fd5b5061028f546040516001600160401b0390911681526020016104d5565b34801561078557600080fd5b5061019454610520565b34801561079b57600080fd5b506105206107aa36600461629d565b6116fd565b3480156107bb57600080fd5b506107cf6107ca366004615c87565b611773565b6040516104d59190616301565b3480156107e857600080fd5b5061045c6107f7366004615c87565b61177e565b34801561080857600080fd5b5061045c61081736600461616a565b6117a9565b34801561082857600080fd5b506104fe610837366004616329565b60008281526101c6602090815260408083206001600160a01b038516845260080190915290205460ff1692915050565b34801561087357600080fd5b506105206108823660046160db565b61182a565b34801561089357600080fd5b506104fe6108a236600461616a565b60016020526000908152604090205460ff1681565b3480156108c357600080fd5b5061045c6108d236600461616a565b611838565b3480156108e357600080fd5b506105986118b3565b3480156108f857600080fd5b50610901600881565b60405160ff90911681526020016104d5565b34801561091f57600080fd5b506104fe61092e36600461616a565b6102c16020526000908152604090205460ff1681565b34801561095057600080fd5b506040805180820190915260018152603160f81b6020820152610598565b34801561097a57600080fd5b50610520610989366004616359565b611960565b34801561099a57600080fd5b506105206109a9366004616385565b611989565b3480156109ba57600080fd5b506105206109c9366004615c87565b6119d3565b3480156109da57600080fd5b5061045c6109e9366004615c87565b611a88565b3480156109fa57600080fd5b50610520610a09366004616408565b611b10565b348015610a1a57600080fd5b50610520610a29366004616461565b611b62565b348015610a3a57600080fd5b5061045c611c7d565b348015610a4f57600080fd5b5061045c611eab565b348015610a6457600080fd5b50610a6d611f41565b6040516104d59796959493929190616501565b348015610a8c57600080fd5b50610a95611fdf565b60405165ffffffffffff90911681526020016104d5565b348015610ab857600080fd5b506064610520565b348015610acc57600080fd5b50610520610adb366004616563565b612053565b348015610aec57600080fd5b5061052061206a565b348015610b0157600080fd5b5061045c610b1036600461616a565b612097565b348015610b2157600080fd5b50610520610b30366004615c87565b61211f565b348015610b4157600080fd5b5061045c610b503660046165bb565b6121bb565b348015610b6157600080fd5b5060005462010000900460ff166104fe565b348015610b7f57600080fd5b50610520612900565b348015610b9457600080fd5b50610626610ba336600461661a565b63bc197c8160e01b95945050505050565b348015610bc057600080fd5b50610520610bcf366004615c87565b61290c565b348015610be057600080fd5b506102c2546104fe9060ff1681565b61045c610bfd3660046166ad565b612917565b348015610c0e57600080fd5b50610520610c1d3660046160db565b612a27565b348015610c2e57600080fd5b5061045c610c3d3660046166f0565b612a61565b348015610c4e57600080fd5b5061022b546001600160a01b03166105e3565b348015610c6d57600080fd5b50610520610c7c366004616719565b612ae9565b348015610c8d57600080fd5b5060408051808201909152601a81527f737570706f72743d627261766f2671756f72756d3d627261766f0000000000006020820152610598565b348015610cd357600080fd5b5061045c610ce2366004615c87565b612b70565b348015610cf357600080fd5b506105207f150214d74d59b7d1e90c73fc22ef3d991dd0a76b046543d4d80ab92d2a50328f81565b348015610d2757600080fd5b50610db6610d36366004616329565b60408051606081018252600080825260208201819052918101919091525060009182526101c6602090815260408084206001600160a01b0393909316845260089092018152918190208151606081018352905460ff8082161515835261010082041693820193909352620100009092046001600160601b03169082015290565b6040805182511515815260208084015160ff1690820152918101516001600160601b0316908201526060016104d5565b348015610df257600080fd5b5061045c610e01366004615c87565b612b93565b348015610e1257600080fd5b50610520610e213660046167ba565b612c1b565b348015610e3257600080fd5b5061045c610e41366004615c87565b612c3c565b348015610e5257600080fd5b50610901601181565b348015610e6757600080fd5b50610626610e763660046167e6565b63f23a6e6160e01b95945050505050565b348015610e9357600080fd5b50610520610ea2366004615c87565b612cc4565b348015610eb357600080fd5b506101f8546105e3906001600160a01b031681565b61045c610ed6366004615c87565b612d53565b6000610ef061022b546001600160a01b031690565b905090565b8060008080808080808080610f098a61211f565b60008c815261016360205260409020549098506001600160401b03169650610f308b61290c565b60008c81526101c66020526040812080546005820154600683015460078401546001600160a01b039093169e50949a509850929650919450610f718d611773565b90506002816007811115610f8757610f876162eb565b1493506007816007811115610f9e57610f9e6162eb565b14925050509193959799509193959799565b6000610fbb82612d76565b92915050565b60008061106561105d7fb3b3f3b703cd84ce352197dcff232b1b5d3cfb2025ce47cf04742d0651f1af888c8c8c8c604051610ffd92919061684e565b60405180910390208b80519060200120604051602001611042959493929190948552602085019390935260ff9190911660408401526060830152608082015260a00190565b60405160208183030381529060405280519060200120612d9b565b868686612dc8565b90506110ab8a828b8b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508d9250612de6915050565b9a9950505050505050505050565b600054630100000090046001600160a01b031633146110eb576040516306fbb1e360e01b815260040160405180910390fd5b60005462010000900460ff1661111457604051636cd6020160e01b815260040160405180910390fd5b6000805462ff0000191681556040517f62451d457bc659158be6e6247f56ec1df424a5c7597f71c20c2bc44e0965c8f99190a1565b611151610edb565b6001600160a01b0316336001600160a01b0316146111815760405162461bcd60e51b81526004016104539061685e565b3061118a610edb565b6001600160a01b0316146111c857600080366040516111aa92919061684e565b604051809103902090505b806111c1610164612e4f565b036111b557505b6111d181612ece565b50565b606061016280546111e490616895565b80601f016020809104026020016040519081016040528092919081815260200182805461121090616895565b801561125d5780601f106112325761010080835404028352916020019161125d565b820191906000526020600020905b81548152906001019060200180831161124057829003601f168201915b5050505050905090565b6000805462010000900460ff161561129257604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff16156112c35760405163b1d02c3d60e01b815260040160405180910390fd5b60005b855181101561133c576102c160008783815181106112e6576112e66168cf565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff1661132a57604051630b094f2760e31b815260040160405180910390fd5b80611334816168fb565b9150506112c6565b506113498585858561303f565b95945050505050565b6000610ef06001611361611fdf565b61136b9190616914565b65ffffffffffff16612cc4565b60008061138786868686612a27565b9050600061139482611773565b905060048160078111156113aa576113aa6162eb565b14806113c7575060058160078111156113c5576113c56162eb565b145b6113e35760405162461bcd60e51b81526004016104539061693a565b6000828152610163602052604090819020600201805460ff19166001179055517f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f906114329084815260200190565b60405180910390a16114478288888888613244565b61145482888888886132e5565b61146182888888886133c7565b5095945050505050565b60608060608060006101c66000878152602001908152602001600020905080600101816002018260030183600401838054806020026020016040519081016040528092919081815260200182805480156114ee57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116114d0575b505050505093508280548060200260200160405190810160405280929190818152602001828054801561154057602002820191906000526020600020905b81548152602001906001019080831161152c575b5050505050925081805480602002602001604051908101604052809291908181526020016000905b8282101561161457838290600052602060002001805461158790616895565b80601f01602080910402602001604051908101604052809291908181526020018280546115b390616895565b80156116005780601f106115d557610100808354040283529160200191611600565b820191906000526020600020905b8154815290600101906020018083116115e357829003601f168201915b505050505081526020019060010190611568565b50505050915080805480602002602001604051908101604052809291908181526020016000905b828210156116e757838290600052602060002001805461165a90616895565b80601f016020809104026020016040519081016040528092919081815260200182805461168690616895565b80156116d35780601f106116a8576101008083540402835291602001916116d3565b820191906000526020600020905b8154815290600101906020018083116116b657829003601f168201915b50505050508152602001906001019061163b565b5050505090509450945094509450509193509193565b604080517f150214d74d59b7d1e90c73fc22ef3d991dd0a76b046543d4d80ab92d2a50328f602082015290810186905260ff85166060820152600090819061174b9061105d90608001611042565b905061176887828860405180602001604052806000815250613402565b979650505050505050565b6000610fbb82613425565b60008060008061178d85613572565b93509350935093506117a18484848461182a565b505050505050565b600054630100000090046001600160a01b031633146117db576040516306fbb1e360e01b815260040160405180910390fd5b6001600160a01b0381166000818152600160208190526040808320805460ff1916909217909155517f7fd26be6fc92aff63f1f4409b2b2ddeb272a888031d7f55ec830485ec61941869190a250565b600061134985858585613803565b600054630100000090046001600160a01b0316331461186a576040516306fbb1e360e01b815260040160405180910390fd5b6001600160a01b038116600081815260016020526040808220805460ff19169055517fe0db3499b7fdc3da4cddff5f45d694549c19835e7f719fb5606d3ad1a5de40119190a250565b6101f85460408051634bf5d7e960e01b815290516060926001600160a01b031691634bf5d7e99160048083019260009291908290030181865afa92505050801561191f57506040513d6000823e601f3d908101601f1916820160405261191c919081019061697b565b60015b61195b575060408051808201909152601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c74000000602082015290565b919050565b60008033905061198184828560405180602001604052806000815250613402565b949350505050565b60008033905061176887828888888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a9250612de6915050565b61025e546000908082036119ec57505061025d54919050565b600061025e6119fc6001846169e8565b81548110611a0c57611a0c6168cf565b60009182526020918290206040805180820190915291015463ffffffff8116808352600160201b9091046001600160e01b03169282019290925291508410611a6257602001516001600160e01b03169392505050565b611a77611a6e856138ce565b61025e90613937565b6001600160e01b0316949350505050565b611a90610edb565b6001600160a01b0316336001600160a01b031614611ac05760405162461bcd60e51b81526004016104539061685e565b30611ac9610edb565b6001600160a01b031614611b075760008036604051611ae992919061684e565b604051809103902090505b80611b00610164612e4f565b03611af457505b6111d1816139ea565b600080339050611b5886828787878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061340292505050565b9695505050505050565b6000805462010000900460ff1615611b8d57604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff1615611bbe5760405163b1d02c3d60e01b815260040160405180910390fd5b611bc6613a2d565b3360009081526102c360205260409020548015611c3b576000611be882611773565b90506001816007811115611bfe57611bfe6162eb565b1480611c1b57506000816007811115611c1957611c196162eb565b145b15611c395760405163867f3ee560e01b815260040160405180910390fd5b505b825160208401206000611c5088888885612a27565b3360009081526102c3602052604090208190559050611c7188888888613ad8565b98975050505050505050565b600054610100900460ff1615808015611c9d5750600054600160ff909116105b80611cb75750303b158015611cb7575060005460ff166001145b611d1a5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610453565b6000805460ff191660011790558015611d3d576000805461ff0019166101001790555b334114611d5d5760405163022d8c9560e31b815260040160405180910390fd5b3a15611d7c576040516383f1b1d360e01b815260040160405180910390fd5b611da86040518060400160405280600b81526020016a2129a1a3b7bb32b93737b960a91b815250613b40565b611dd2611db76003603c616a11565b611dc360036078616a11565b680ad78ebc5ac6200000613b97565b611dda613bce565b611de5612005613bf5565b611df0612006613c25565b611dfa600a613c55565b611e0e611e096003603c616a11565b613c85565b6110076000526102c16020527f2f832952f0ef896b8c8edd6d16a2e4f2591a90375e33021e3b9ff197f3793fc0805460ff19166001179055611e6373df87f0e2b8519ea2dd4abd8b639cdd628497ed25613cb5565b80156111d1576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b600054630100000090046001600160a01b03163314611edd576040516306fbb1e360e01b815260040160405180910390fd5b60005462010000900460ff1615611f0757604051631785c68160e01b815260040160405180910390fd5b6000805462ff00001916620100001781556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e7529190a1565b6000606080600080600060606098546000801b148015611f615750609954155b611fa55760405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b6044820152606401610453565b611fad613d08565b611fb5613d17565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b6101f854604080516324776b7d60e21b815290516000926001600160a01b0316916391ddadf49160048083019260209291908290030181865afa925050508015612046575060408051601f3d908101601f1916820190925261204391810190616a33565b60015b61195b57610ef043613d26565b6000612060848484613d8d565b90505b9392505050565b61025e546000901561208f5761208161025e613e04565b6001600160e01b0316905090565b5061025d5490565b61209f610edb565b6001600160a01b0316336001600160a01b0316146120cf5760405162461bcd60e51b81526004016104539061685e565b306120d8610edb565b6001600160a01b03161461211657600080366040516120f892919061684e565b604051809103902090505b8061210f610164612e4f565b0361210357505b6111d181613e34565b61022b54600082815261022c602052604080822054905163d45c443560e01b81526004810191909152909182916001600160a01b039091169063d45c443590602401602060405180830381865afa15801561217e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121a29190616a5b565b9050806001146121b25780612063565b60009392505050565b33611007146121e157604051630f22c43960e41b81526110076004820152602401610453565b6122476040518060400160405280600b81526020016a766f74696e6744656c617960a81b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613e9f9050565b156122fc57602081146122755783838383604051630a5a604160e01b81526004016104539493929190616a9d565b604080516020601f84018190048102820181019092528281526000916122b6918585808385018382808284376000920191909152509293925050613ef89050565b90508015806122c757506201518081115b156122ed5784848484604051630a5a604160e01b81526004016104539493929190616a9d565b6122f6816139ea565b506128bd565b6123636040518060400160405280600c81526020016b1d9bdd1a5b99d4195c9a5bd960a21b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613e9f9050565b1561241257602081146123915783838383604051630a5a604160e01b81526004016104539493929190616a9d565b604080516020601f84018190048102820181019092528281526000916123d2918585808385018382808284376000920191909152509293925050613ef89050565b90508015806123e3575062278d0081115b156124095784848484604051630a5a604160e01b81526004016104539493929190616a9d565b6122f681613efd565b61247e604051806040016040528060118152602001701c1c9bdc1bdcd85b151a1c995cda1bdb19607a1b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613e9f9050565b1561253457602081146124ac5783838383604051630a5a604160e01b81526004016104539493929190616a9d565b604080516020601f84018190048102820181019092528281526000916124ed918585808385018382808284376000920191909152509293925050613ef89050565b9050801580612505575069021e19e0c9bab240000081115b1561252b5784848484604051630a5a604160e01b81526004016104539493929190616a9d565b6122f681613fa0565b61259e6040518060400160405280600f81526020016e38bab7b93ab6a73ab6b2b930ba37b960891b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613e9f9050565b1561264d57602081146125cc5783838383604051630a5a604160e01b81526004016104539493929190616a9d565b604080516020601f840181900481028201810190925282815260009161260d918585808385018382808284376000920191909152509293925050613ef89050565b9050600581108061261e5750601481115b156126445784848484604051630a5a604160e01b81526004016104539493929190616a9d565b6122f681612ece565b6126bc604051806040016040528060148152602001736d696e506572696f64416674657251756f72756d60601b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613e9f9050565b1561278257600881146126ea5783838383604051630a5a604160e01b81526004016104539493929190616a9d565b6000612730600884848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613ef89050565b90506001600160401b038116158061275357506202a300816001600160401b0316115b156127795784848484604051630a5a604160e01b81526004016104539493929190616a9d565b6122f681613fe3565b6127ee6040518060400160405280601181526020017033b7bb32b93737b9283937ba32b1ba37b960791b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613e9f9050565b1561289c576014811461281c5783838383604051630a5a604160e01b81526004016104539493929190616a9d565b6000612862601484848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050613ef89050565b90506001600160a01b0381166128935784848484604051630a5a604160e01b81526004016104539493929190616a9d565b6122f68161404f565b838383836040516325ee20d560e21b81526004016104539493929190616a9d565b7ff1ce9b2cbf50eeb05769a29e2543fd350cab46894a7dd9978a12d534bb20e633848484846040516128f29493929190616a9d565b60405180910390a150505050565b6000610ef06101965490565b6000610fbb826140bb565b61291f610edb565b6001600160a01b0316336001600160a01b03161461294f5760405162461bcd60e51b81526004016104539061685e565b30612958610edb565b6001600160a01b031614612996576000803660405161297892919061684e565b604051809103902090505b8061298f610164612e4f565b0361298357505b600080856001600160a01b03168585856040516129b492919061684e565b60006040518083038185875af1925050503d80600081146129f1576040519150601f19603f3d011682016040523d82523d6000602084013e6129f6565b606091505b5091509150612a1e8282604051806060016040528060288152602001616efa602891396140f9565b50505050505050565b600084848484604051602001612a409493929190616ac4565b60408051601f19818403018152919052805160209091012095945050505050565b612a69610edb565b6001600160a01b0316336001600160a01b031614612a995760405162461bcd60e51b81526004016104539061685e565b30612aa2610edb565b6001600160a01b031614612ae05760008036604051612ac292919061684e565b604051809103902090505b80612ad9610164612e4f565b03612acd57505b6111d181613fe3565b60008251845114612b4d5760405162461bcd60e51b815260206004820152602860248201527f476f7665726e6f72427261766f3a20696e76616c6964207369676e61747572656044820152670e640d8cadccee8d60c31b6064820152608401610453565b612b5b338787878787614112565b611b588686612b6a87876141d0565b85611b62565b600080600080612b7f85613572565b93509350935093506117a184848484611267565b612b9b610edb565b6001600160a01b0316336001600160a01b031614612bcb5760405162461bcd60e51b81526004016104539061685e565b30612bd4610edb565b6001600160a01b031614612c125760008036604051612bf492919061684e565b604051809103902090505b80612c0b610164612e4f565b03612bff57505b6111d181613efd565b60006120638383612c3760408051602081019091526000815290565b613d8d565b612c44610edb565b6001600160a01b0316336001600160a01b031614612c745760405162461bcd60e51b81526004016104539061685e565b30612c7d610edb565b6001600160a01b031614612cbb5760008036604051612c9d92919061684e565b604051809103902090505b80612cb4610164612e4f565b03612ca857505b6111d181613fa0565b60006064612cd1836119d3565b6101f854604051632394e7a360e21b8152600481018690526001600160a01b0390911690638e539e8c90602401602060405180830381865afa158015612d1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d3f9190616a5b565b612d499190616b0f565b610fbb9190616a11565b600080600080612d6285613572565b93509350935093506117a184848484611378565b60006001600160e01b03198216636e665ced60e01b1480610fbb5750610fbb82614302565b6000610fbb612da861439e565b8360405161190160f01b8152600281019290925260228201526042902090565b6000806000612dd9878787876143a8565b915091506114618161446c565b6000805462010000900460ff1615612e1157604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff1615612e425760405163b1d02c3d60e01b815260040160405180910390fd5b611b5886868686866145b6565b6000612e6a8254600f81810b600160801b909204900b131590565b15612e8857604051631ed9509560e11b815260040160405180910390fd5b508054600f0b6000818152600180840160205260408220805492905583546fffffffffffffffffffffffffffffffff191692016001600160801b03169190911790915590565b6064811115612f515760405162461bcd60e51b815260206004820152604360248201527f476f7665726e6f72566f74657351756f72756d4672616374696f6e3a2071756f60448201527f72756d4e756d657261746f72206f7665722071756f72756d44656e6f6d696e616064820152623a37b960e91b608482015260a401610453565b6000612f5b61206a565b90508015801590612f6d575061025e54155b15612fd257604080518082019091526000815261025e9060208101612f91846146b9565b6001600160e01b039081169091528254600181018455600093845260209384902083519490930151909116600160201b0263ffffffff909316929092179101555b613000612fed612fe0611fdf565b65ffffffffffff166138ce565b612ff6846146b9565b61025e9190614722565b505060408051828152602081018490527f0553476bf02ef2726e8ce5ced78d63e26e602e4a2257b1f559418e24b4633997910160405180910390a15050565b60008061304e86868686612a27565b9050600461305b82611773565b600781111561306c5761306c6162eb565b146130895760405162461bcd60e51b81526004016104539061693a565b61022b546040805163793d064960e11b815290516000926001600160a01b03169163f27a0c929160048083019260209291908290030181865afa1580156130d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130f89190616a5b565b61022b5460405163b1c5f42760e01b81529192506001600160a01b03169063b1c5f42790613133908a908a908a906000908b90600401616b26565b602060405180830381865afa158015613150573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131749190616a5b565b600083815261022c60205260408082209290925561022b5491516308f2a0bb60e41b81526001600160a01b0390921691638f2a0bb0916131c1918b918b918b91908b908990600401616b74565b600060405180830381600087803b1580156131db57600080fd5b505af11580156131ef573d6000803e3d6000fd5b505050507f9a2e42fd6722813d69113e7d0079d3d940171428df7373df9c7f7617cfda28928282426132219190616bcc565b604080519283526020830191909152015b60405180910390a15095945050505050565b3061324d610edb565b6001600160a01b0316146132de5760005b84518110156117a157306001600160a01b0316858281518110613283576132836168cf565b60200260200101516001600160a01b0316036132ce576132ce8382815181106132ae576132ae6168cf565b60200260200101518051906020012061016461473d90919063ffffffff16565b6132d7816168fb565b905061325e565b5050505050565b60005462010000900460ff161561330f57604051631785c68160e01b815260040160405180910390fd5b3360009081526001602052604090205460ff16156133405760405163b1d02c3d60e01b815260040160405180910390fd5b60005b84518110156133b9576102c16000868381518110613363576133636168cf565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff166133a757604051630b094f2760e31b815260040160405180910390fd5b806133b1816168fb565b915050613343565b506132de8585858585614779565b306133d0610edb565b6001600160a01b0316146132de5761016454600f81810b600160801b909204900b13156132de576000610164556132de565b60006113498585858561342060408051602081019091526000815290565b612de6565b600080613431836147ee565b90506004816007811115613447576134476162eb565b146134525792915050565b600083815261022c60205260409020548061346e575092915050565b61022b54604051632ab0f52960e01b8152600481018390526001600160a01b0390911690632ab0f52990602401602060405180830381865afa1580156134b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134dc9190616bdf565b156134eb575060079392505050565b61022b54604051632c258a9f60e11b8152600481018390526001600160a01b039091169063584b153e90602401602060405180830381865afa158015613535573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135599190616bdf565b15613568575060059392505050565b5060029392505050565b60608060606000806101c660008781526020019081526020016000209050806001018160020161374483600301805480602002602001604051908101604052809291908181526020016000905b8282101561366b5783829060005260206000200180546135de90616895565b80601f016020809104026020016040519081016040528092919081815260200182805461360a90616895565b80156136575780601f1061362c57610100808354040283529160200191613657565b820191906000526020600020905b81548152906001019060200180831161363a57829003601f168201915b5050505050815260200190600101906135bf565b50505060048601805460408051602080840282018101909252828152935060009084015b8282101561373b5783829060005260206000200180546136ae90616895565b80601f01602080910402602001604051908101604052809291908181526020018280546136da90616895565b80156137275780601f106136fc57610100808354040283529160200191613727565b820191906000526020600020905b81548152906001019060200180831161370a57829003601f168201915b50505050508152602001906001019061368f565b505050506141d0565b600984015483546040805160208084028201810190925282815291869183018282801561379a57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161377c575b50505050509350828054806020026020016040519081016040528092919081815260200182805480156137ec57602002820191906000526020600020905b8154815260200190600101908083116137d8575b505050505092509450945094509450509193509193565b60008061381286868686612a27565b60008181526101c660205260409020549091506001600160a01b031633811480613866575061383f612900565b61386482600161384d611fdf565b6138579190616914565b65ffffffffffff16612c1b565b105b6138c25760405162461bcd60e51b815260206004820152602760248201527f476f7665726e6f72427261766f3a2070726f706f7365722061626f76652074686044820152661c995cda1bdb1960ca1b6064820152608401610453565b61176887878787614926565b600063ffffffff8211156139335760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201526532206269747360d01b6064820152608401610453565b5090565b81546000908181600581111561399457600061395284614934565b61395c90856169e8565b60008881526020902090915081015463ffffffff908116908716101561398457809150613992565b61398f816001616bcc565b92505b505b60006139a287878585614a1c565b905080156139dd576139c7876139b96001846169e8565b600091825260209091200190565b54600160201b90046001600160e01b0316611768565b6000979650505050505050565b6101945460408051918252602082018390527fc565b045403dc03c2eea82b81a0465edad9e2e7fc4d97e11421c209da93d7a93910160405180910390a161019455565b6102c25460ff16613ad6576a084595161401484a0000006120056001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613a84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613aa89190616a5b565b1015613ac7576040516311b6707f60e01b815260040160405180910390fd5b6102c2805460ff191660011790555b565b6000613b3433868686516001600160401b03811115613af957613af9615d23565b604051908082528060200260200182016040528015613b2c57816020015b6060815260200190600190039081613b175790505b508787614112565b61134985858585614a72565b600054610100900460ff16613b675760405162461bcd60e51b815260040161045390616c01565b613b8e81613b896040805180820190915260018152603160f81b602082015290565b614e51565b6111d181614ea0565b600054610100900460ff16613bbe5760405162461bcd60e51b815260040161045390616c01565b613bc9838383614ed8565b505050565b600054610100900460ff16613ad65760405162461bcd60e51b815260040161045390616c01565b600054610100900460ff16613c1c5760405162461bcd60e51b815260040161045390616c01565b6111d181614f1a565b600054610100900460ff16613c4c5760405162461bcd60e51b815260040161045390616c01565b6111d181614f64565b600054610100900460ff16613c7c5760405162461bcd60e51b815260040161045390616c01565b6111d181614f8b565b600054610100900460ff16613cac5760405162461bcd60e51b815260040161045390616c01565b6111d181614fb2565b600054610100900460ff16613cdc5760405162461bcd60e51b815260040161045390616c01565b600080546001600160a01b039092166301000000026301000000600160b81b0319909216919091179055565b6060609a80546111e490616895565b6060609b80546111e490616895565b600065ffffffffffff8211156139335760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203460448201526538206269747360d01b6064820152608401610453565b6101f854604051630748d63560e31b81526001600160a01b038581166004830152602482018590526000921690633a46b1a890604401602060405180830381865afa158015613de0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120609190616a5b565b805460009080156121b257613e1e836139b96001846169e8565b54600160201b90046001600160e01b0316612063565b61022b54604080516001600160a01b03928316815291831660208301527f08f74ea46ef7894f65eabfb5e6e695de773a000b47c529ab559178069b226401910160405180910390a161022b80546001600160a01b0319166001600160a01b0392909216919091179055565b600081604051602001613eb29190616c4c565b6040516020818303038152906040528051906020012083604051602001613ed99190616c4c565b6040516020818303038152906040528051906020012014905092915050565b015190565b60008111613f5d5760405162461bcd60e51b815260206004820152602760248201527f476f7665726e6f7253657474696e67733a20766f74696e6720706572696f6420604482015266746f6f206c6f7760c81b6064820152608401610453565b6101955460408051918252602082018390527f7e3f7f0708a84de9203036abaa450dccc85ad5ff52f78c170f3edb55cf5e8828910160405180910390a161019555565b6101965460408051918252602082018390527fccb45da8d5717e6c4544694297c4ba5cf151d455c9bb0ed4fc7a38411bc05461910160405180910390a161019655565b61028f54604080516001600160401b03928316815291831660208301527f7ca4ac117ed3cdce75c1161d8207c440389b1a15d69d096831664657c07dafc2910160405180910390a161028f805467ffffffffffffffff19166001600160401b0392909216919091179055565b600080546040516001600160a01b0380851693630100000090930416917f44fc1b38a4abaa91ebd1b628a5b259a698f86238c8217d68f516e87769c60c0b91a3600080546001600160a01b039092166301000000026301000000600160b81b0319909216919091179055565b60008181526101636020526040812060010154610fbb906001600160401b0316600084815261029060205260409020546001600160401b0316614fd9565b60608315614108575081612063565b6120638383614fef565b805160208201206000614130878761412a88886141d0565b85612a27565b60008181526101c6602052604090206009810154919250906141c55780546001600160a01b0319166001600160a01b038a16178155875161417a90600183019060208b0190615abe565b50865161419090600283019060208a0190615b1f565b5085516141a69060038301906020890190615b5a565b5084516141bc9060048301906020880190615bac565b50600981018390555b505050505050505050565b6060600082516001600160401b038111156141ed576141ed615d23565b60405190808252806020026020018201604052801561422057816020015b606081526020019060019003908161420b5790505b50905060005b81518110156142fa57848181518110614241576142416168cf565b6020026020010151516000146142b157848181518110614263576142636168cf565b602002602001015180519060200120848281518110614284576142846168cf565b602002602001015160405160200161429d929190616c68565b6040516020818303038152906040526142cc565b8381815181106142c3576142c36168cf565b60200260200101515b8282815181106142de576142de6168cf565b6020026020010181905250806142f3906168fb565b9050614226565b509392505050565b600063288ace0360e11b6318df743f60e31b63bf26d89760e01b6379dd796f60e01b6001600160e01b0319861682148061434857506001600160e01b0319868116908216145b8061435f57506001600160e01b0319868116908516145b8061437a57506001600160e01b03198616630271189760e51b145b80611b5857506301ffc9a760e01b6001600160e01b03198716149695505050505050565b6000610ef0615019565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156143df5750600090506003614463565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614433573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661445c57600060019250925050614463565b9150600090505b94509492505050565b6000816004811115614480576144806162eb565b036144885750565b600181600481111561449c5761449c6162eb565b036144e95760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610453565b60028160048111156144fd576144fd6162eb565b0361454a5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610453565b600381600481111561455e5761455e6162eb565b036111d15760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610453565b6000806145c6878787878761508d565b600088815261029060205260409020549091506001600160401b03161580156145f357506145f3876151e3565b15611b5857600061460d61028f546001600160401b031690565b614615611fdf565b65ffffffffffff166146279190616c99565b90506146328861290c565b816001600160401b03161115614681576040516001600160401b038216815288907f541f725fb9f7c98a30cc9c0ff32fbb14358cd7159c847a3aa20a2bdc442ba5119060200160405180910390a25b600088815261029060205260409020805467ffffffffffffffff19166001600160401b03929092169190911790559695505050505050565b60006001600160e01b038211156139335760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20326044820152663234206269747360c81b6064820152608401610453565b600080614730858585615223565b915091505b935093915050565b8154600160801b90819004600f0b6000818152600180860160205260409091209390935583546001600160801b03908116939091011602179055565b61022b5460405163e38335e560e01b81526001600160a01b039091169063e38335e59034906147b5908890889088906000908990600401616b26565b6000604051808303818588803b1580156147ce57600080fd5b505af11580156147e2573d6000803e3d6000fd5b50505050505050505050565b600081815261016360205260408120600281015460ff16156148135750600792915050565b6002810154610100900460ff161561482e5750600292915050565b600083815261016360205260408120546001600160401b0316908190036148975760405162461bcd60e51b815260206004820152601d60248201527f476f7665726e6f723a20756e6b6e6f776e2070726f706f73616c2069640000006044820152606401610453565b60006148a1611fdf565b65ffffffffffff1690508082106148bd57506000949350505050565b60006148c88661290c565b90508181106148dd5750600195945050505050565b6148e6866151e3565b8015614909575060008681526101c6602052604090206006810154600590910154115b1561491a5750600495945050505050565b50600395945050505050565b6000611349858585856153c2565b60008160000361494657506000919050565b6000600161495384615478565b901c6001901b9050600181848161496c5761496c6169fb565b048201901c90506001818481614984576149846169fb565b048201901c9050600181848161499c5761499c6169fb565b048201901c905060018184816149b4576149b46169fb565b048201901c905060018184816149cc576149cc6169fb565b048201901c905060018184816149e4576149e46169fb565b048201901c905060018184816149fc576149fc6169fb565b048201901c905061206381828581614a1657614a166169fb565b0461550c565b60005b818310156142fa576000614a33848461551b565b60008781526020902090915063ffffffff86169082015463ffffffff161115614a5e57809250614a6c565b614a69816001616bcc565b93505b50614a1f565b600033614a7f8184615536565b614acb5760405162461bcd60e51b815260206004820152601d60248201527f476f7665726e6f723a2070726f706f73657220726573747269637465640000006044820152606401610453565b6000614ad5611fdf565b65ffffffffffff169050614ae7612900565b614af683610e216001856169e8565b1015614b5e5760405162461bcd60e51b815260206004820152603160248201527f476f7665726e6f723a2070726f706f73657220766f7465732062656c6f7720706044820152701c9bdc1bdcd85b081d1a1c995cda1bdb19607a1b6064820152608401610453565b6000614b738888888880519060200120612a27565b90508651885114614b965760405162461bcd60e51b815260040161045390616cb9565b8551885114614bb75760405162461bcd60e51b815260040161045390616cb9565b6000885111614c085760405162461bcd60e51b815260206004820152601860248201527f476f7665726e6f723a20656d7074792070726f706f73616c00000000000000006044820152606401610453565b600081815261016360205260409020546001600160401b031615614c785760405162461bcd60e51b815260206004820152602160248201527f476f7665726e6f723a2070726f706f73616c20616c72656164792065786973746044820152607360f81b6064820152608401610453565b6000614c846101945490565b614c8e9084616bcc565b90506000614c9c6101955490565b614ca69083616bcc565b90506040518060e00160405280614cbc84615627565b6001600160401b031681526001600160a01b038716602082015260006040820152606001614ce983615627565b6001600160401b03908116825260006020808401829052604080850183905260609485018390528883526101638252918290208551815492870151878501519186166001600160e01b031990941693909317600160401b6001600160a01b039094168402176001600160e01b0316600160e01b60e09290921c91909102178155938501516080860151908416921c0217600183015560a08301516002909201805460c09094015161ffff1990941692151561ff00191692909217610100931515939093029290921790558a517f7d84a6263ae0d98d3329bd7b46bb4e8d6f98cd35a7adb45c274c8b7fd5ebd5e091859188918e918e91811115614dee57614dee615d23565b604051908082528060200260200182016040528015614e2157816020015b6060815260200190600190039081614e0c5790505b508d88888f604051614e3b99989796959493929190616cfa565b60405180910390a1509098975050505050505050565b600054610100900460ff16614e785760405162461bcd60e51b815260040161045390616c01565b609a614e848382616dd8565b50609b614e918282616dd8565b50506000609881905560995550565b600054610100900460ff16614ec75760405162461bcd60e51b815260040161045390616c01565b610162614ed48282616dd8565b5050565b600054610100900460ff16614eff5760405162461bcd60e51b815260040161045390616c01565b614f08836139ea565b614f1182613efd565b613bc981613fa0565b600054610100900460ff16614f415760405162461bcd60e51b815260040161045390616c01565b6101f880546001600160a01b0319166001600160a01b0392909216919091179055565b600054610100900460ff166121165760405162461bcd60e51b815260040161045390616c01565b600054610100900460ff166111c85760405162461bcd60e51b815260040161045390616c01565b600054610100900460ff16612ae05760405162461bcd60e51b815260040161045390616c01565b6000818311614fe85781612063565b5090919050565b815115614fff5781518083602001fd5b8060405162461bcd60e51b81526004016104539190615edc565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f61504461568f565b61504c6156e8565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b60008581526101636020526040812060016150a788611773565b60078111156150b8576150b86162eb565b146151115760405162461bcd60e51b815260206004820152602360248201527f476f7665726e6f723a20766f7465206e6f742063757272656e746c792061637460448201526269766560e81b6064820152608401610453565b805460009061512b9088906001600160401b031686613d8d565b905061513a8888888488615719565b835160000361518f57866001600160a01b03167fb8e138887d0aa13bab447e82de9d5c1777041ecd21ca36ba824ff1e6c07ddda4898884896040516151829493929190616e97565b60405180910390a2611768565b866001600160a01b03167fe2babfbac5889a709b63bb7f598b324e08bc5a4fb9ec647fb3cbc9ec07eb871289888489896040516151d0959493929190616ebf565b60405180910390a2979650505050505050565b60008181526101c660205260408120600581015461521a610ea285600090815261016360205260409020546001600160401b031690565b11159392505050565b825460009081908015615369576000615241876139b96001856169e8565b60408051808201909152905463ffffffff808216808452600160201b9092046001600160e01b0316602084015291925090871610156152c25760405162461bcd60e51b815260206004820152601b60248201527f436865636b706f696e743a2064656372656173696e67206b65797300000000006044820152606401610453565b805163ffffffff80881691160361530a57846152e3886139b96001866169e8565b80546001600160e01b0392909216600160201b0263ffffffff909216919091179055615359565b6040805180820190915263ffffffff80881682526001600160e01b0380881660208085019182528b54600181018d5560008d81529190912094519151909216600160201b029216919091179101555b6020015192508391506147359050565b50506040805180820190915263ffffffff80851682526001600160e01b0380851660208085019182528854600181018a5560008a815291822095519251909316600160201b029190931617920191909155905081614735565b6000806153d1868686866158b7565b600081815261022c6020526040902054909150156113495761022b54600082815261022c60205260409081902054905163c4d252f560e01b81526001600160a01b039092169163c4d252f59161542d9160040190815260200190565b600060405180830381600087803b15801561544757600080fd5b505af115801561545b573d6000803e3d6000fd5b505050600082815261022c60205260408120555095945050505050565b600080608083901c1561548d57608092831c92015b604083901c1561549f57604092831c92015b602083901c156154b157602092831c92015b601083901c156154c357601092831c92015b600883901c156154d557600892831c92015b600483901c156154e757600492831c92015b600283901c156154f957600292831c92015b600183901c15610fbb5760010192915050565b6000818310614fe85781612063565b600061552a6002848418616a11565b61206390848416616bcc565b8051600090603481101561554e576001915050610fbb565b82810160131901516001600160a01b031981166b046e0e4dee0dee6cae47a60f60a31b1461558157600192505050610fbb565b60008061558f6028856169e8565b90505b83811015615606576000806155c68884815181106155b2576155b26168cf565b01602001516001600160f81b0319166159c4565b91509150816155de5760019650505050505050610fbb565b8060ff166004856001600160a01b0316901b1793505050806155ff906168fb565b9050615592565b50856001600160a01b0316816001600160a01b031614935050505092915050565b60006001600160401b038211156139335760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203660448201526534206269747360d01b6064820152608401610453565b60008061569a613d08565b8051909150156156b1578051602090910120919050565b60985480156156c05792915050565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4709250505090565b6000806156f3613d17565b80519091501561570a578051602090910120919050565b60995480156156c05792915050565b60008581526101c6602090815260408083206001600160a01b038816845260088101909252909120805460ff16156157a95760405162461bcd60e51b815260206004820152602d60248201527f476f7665726e6f72436f6d7061746962696c697479427261766f3a20766f746560448201526c08185b1c9958591e4818d85cdd609a1b6064820152608401610453565b805460ff86166101000261ffff199091161760011781556157c984615a56565b81546001600160601b039190911662010000026dffffffffffffffffffffffff00001990911617815560ff8516615819578382600601600082825461580e9190616bcc565b90915550612a1e9050565b60001960ff861601615839578382600501600082825461580e9190616bcc565b60011960ff861601615859578382600701600082825461580e9190616bcc565b60405162461bcd60e51b815260206004820152602d60248201527f476f7665726e6f72436f6d7061746962696c697479427261766f3a20696e766160448201526c6c696420766f7465207479706560981b6064820152608401610453565b6000806158c686868686612a27565b905060006158d382611773565b905060028160078111156158e9576158e96162eb565b1415801561590957506006816007811115615906576159066162eb565b14155b801561592757506007816007811115615924576159246162eb565b14155b6159735760405162461bcd60e51b815260206004820152601d60248201527f476f7665726e6f723a2070726f706f73616c206e6f74206163746976650000006044820152606401610453565b6000828152610163602052604090819020600201805461ff001916610100179055517f789cf55be980739dad1d0699b93b58e806b51c9d96619bfa8fe0a28abaa7b30c906132329084815260200190565b60008060f883901c602f811180156159df5750603a8160ff16105b156159f457600194602f199091019350915050565b8060ff166040108015615a0a575060478160ff16105b15615a1f576001946036199091019350915050565b8060ff166060108015615a35575060678160ff16105b15615a4a576001946056199091019350915050565b50600093849350915050565b60006001600160601b038211156139335760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203960448201526536206269747360d01b6064820152608401610453565b828054828255906000526020600020908101928215615b13579160200282015b82811115615b1357825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190615ade565b50613933929150615bfe565b828054828255906000526020600020908101928215615b13579160200282015b82811115615b13578251825591602001919060010190615b3f565b828054828255906000526020600020908101928215615ba0579160200282015b82811115615ba05782518290615b909082616dd8565b5091602001919060010190615b7a565b50613933929150615c13565b828054828255906000526020600020908101928215615bf2579160200282015b82811115615bf25782518290615be29082616dd8565b5091602001919060010190615bcc565b50613933929150615c30565b5b808211156139335760008155600101615bff565b80821115613933576000615c278282615c4d565b50600101615c13565b80821115613933576000615c448282615c4d565b50600101615c30565b508054615c5990616895565b6000825580601f10615c69575050565b601f0160209004906000526020600020908101906111d19190615bfe565b600060208284031215615c9957600080fd5b5035919050565b600060208284031215615cb257600080fd5b81356001600160e01b03198116811461206357600080fd5b803560ff8116811461195b57600080fd5b60008083601f840112615ced57600080fd5b5081356001600160401b03811115615d0457600080fd5b602083019150836020828501011115615d1c57600080fd5b9250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715615d6157615d61615d23565b604052919050565b60006001600160401b03821115615d8257615d82615d23565b50601f01601f191660200190565b600082601f830112615da157600080fd5b8135615db4615daf82615d69565b615d39565b818152846020838601011115615dc957600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060008060008060e0898b031215615e0257600080fd5b88359750615e1260208a01615cca565b965060408901356001600160401b0380821115615e2e57600080fd5b615e3a8c838d01615cdb565b909850965060608b0135915080821115615e5357600080fd5b50615e608b828c01615d90565b945050615e6f60808a01615cca565b925060a0890135915060c089013590509295985092959890939650565b60005b83811015615ea7578181015183820152602001615e8f565b50506000910152565b60008151808452615ec8816020860160208601615e8c565b601f01601f19169290920160200192915050565b6020815260006120636020830184615eb0565b6001600160a01b03811681146111d157600080fd5b60008060008060808587031215615f1a57600080fd5b8435615f2581615eef565b93506020850135615f3581615eef565b92506040850135915060608501356001600160401b03811115615f5757600080fd5b615f6387828801615d90565b91505092959194509250565b60006001600160401b03821115615f8857615f88615d23565b5060051b60200190565b600082601f830112615fa357600080fd5b81356020615fb3615daf83615f6f565b82815260059290921b84018101918181019086841115615fd257600080fd5b8286015b84811015615ff6578035615fe981615eef565b8352918301918301615fd6565b509695505050505050565b600082601f83011261601257600080fd5b81356020616022615daf83615f6f565b82815260059290921b8401810191818101908684111561604157600080fd5b8286015b84811015615ff65780358352918301918301616045565b600082601f83011261606d57600080fd5b8135602061607d615daf83615f6f565b82815260059290921b8401810191818101908684111561609c57600080fd5b8286015b84811015615ff65780356001600160401b038111156160bf5760008081fd5b6160cd8986838b0101615d90565b8452509183019183016160a0565b600080600080608085870312156160f157600080fd5b84356001600160401b038082111561610857600080fd5b61611488838901615f92565b9550602087013591508082111561612a57600080fd5b61613688838901616001565b9450604087013591508082111561614c57600080fd5b506161598782880161605c565b949793965093946060013593505050565b60006020828403121561617c57600080fd5b813561206381615eef565b600081518084526020808501945080840160005b838110156161c05781516001600160a01b03168752958201959082019060010161619b565b509495945050505050565b600081518084526020808501945080840160005b838110156161c0578151875295820195908201906001016161df565b600081518084526020808501808196508360051b8101915082860160005b85811015616243578284038952616231848351615eb0565b98850198935090840190600101616219565b5091979650505050505050565b6080815260006162636080830187616187565b828103602084015261627581876161cb565b9050828103604084015261628981866161fb565b9050828103606084015261176881856161fb565b600080600080600060a086880312156162b557600080fd5b853594506162c560208701615cca565b93506162d360408701615cca565b94979396509394606081013594506080013592915050565b634e487b7160e01b600052602160045260246000fd5b602081016008831061632357634e487b7160e01b600052602160045260246000fd5b91905290565b6000806040838503121561633c57600080fd5b82359150602083013561634e81615eef565b809150509250929050565b6000806040838503121561636c57600080fd5b8235915061637c60208401615cca565b90509250929050565b60008060008060006080868803121561639d57600080fd5b853594506163ad60208701615cca565b935060408601356001600160401b03808211156163c957600080fd5b6163d589838a01615cdb565b909550935060608801359150808211156163ee57600080fd5b506163fb88828901615d90565b9150509295509295909350565b6000806000806060858703121561641e57600080fd5b8435935061642e60208601615cca565b925060408501356001600160401b0381111561644957600080fd5b61645587828801615cdb565b95989497509550505050565b6000806000806080858703121561647757600080fd5b84356001600160401b038082111561648e57600080fd5b61649a88838901615f92565b955060208701359150808211156164b057600080fd5b6164bc88838901616001565b945060408701359150808211156164d257600080fd5b6164de8883890161605c565b935060608701359150808211156164f457600080fd5b50615f6387828801615d90565b60ff60f81b8816815260e06020820152600061652060e0830189615eb0565b82810360408401526165328189615eb0565b606084018890526001600160a01b038716608085015260a0840186905283810360c085015290506110ab81856161cb565b60008060006060848603121561657857600080fd5b833561658381615eef565b92506020840135915060408401356001600160401b038111156165a557600080fd5b6165b186828701615d90565b9150509250925092565b600080600080604085870312156165d157600080fd5b84356001600160401b03808211156165e857600080fd5b6165f488838901615cdb565b9096509450602087013591508082111561660d57600080fd5b5061645587828801615cdb565b600080600080600060a0868803121561663257600080fd5b853561663d81615eef565b9450602086013561664d81615eef565b935060408601356001600160401b038082111561666957600080fd5b61667589838a01616001565b9450606088013591508082111561668b57600080fd5b61669789838a01616001565b935060808801359150808211156163ee57600080fd5b600080600080606085870312156166c357600080fd5b84356166ce81615eef565b93506020850135925060408501356001600160401b0381111561644957600080fd5b60006020828403121561670257600080fd5b81356001600160401b038116811461206357600080fd5b600080600080600060a0868803121561673157600080fd5b85356001600160401b038082111561674857600080fd5b61675489838a01615f92565b9650602088013591508082111561676a57600080fd5b61677689838a01616001565b9550604088013591508082111561678c57600080fd5b61679889838a0161605c565b945060608801359150808211156167ae57600080fd5b61669789838a0161605c565b600080604083850312156167cd57600080fd5b82356167d881615eef565b946020939093013593505050565b600080600080600060a086880312156167fe57600080fd5b853561680981615eef565b9450602086013561681981615eef565b9350604086013592506060860135915060808601356001600160401b0381111561684257600080fd5b6163fb88828901615d90565b8183823760009101908152919050565b60208082526018908201527f476f7665726e6f723a206f6e6c79476f7665726e616e63650000000000000000604082015260600190565b600181811c908216806168a957607f821691505b6020821081036168c957634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161690d5761690d6168e5565b5060010190565b65ffffffffffff828116828216039080821115616933576169336168e5565b5092915050565b60208082526021908201527f476f7665726e6f723a2070726f706f73616c206e6f74207375636365737366756040820152601b60fa1b606082015260800190565b60006020828403121561698d57600080fd5b81516001600160401b038111156169a357600080fd5b8201601f810184136169b457600080fd5b80516169c2615daf82615d69565b8181528560208385010111156169d757600080fd5b611349826020830160208601615e8c565b81810381811115610fbb57610fbb6168e5565b634e487b7160e01b600052601260045260246000fd5b600082616a2e57634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215616a4557600080fd5b815165ffffffffffff8116811461206357600080fd5b600060208284031215616a6d57600080fd5b5051919050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b604081526000616ab1604083018688616a74565b8281036020840152611768818587616a74565b608081526000616ad76080830187616187565b8281036020840152616ae981876161cb565b90508281036040840152616afd81866161fb565b91505082606083015295945050505050565b8082028115828204841417610fbb57610fbb6168e5565b60a081526000616b3960a0830188616187565b8281036020840152616b4b81886161cb565b90508281036040840152616b5f81876161fb565b60608401959095525050608001529392505050565b60c081526000616b8760c0830189616187565b8281036020840152616b9981896161cb565b90508281036040840152616bad81886161fb565b60608401969096525050608081019290925260a0909101529392505050565b80820180821115610fbb57610fbb6168e5565b600060208284031215616bf157600080fd5b8151801515811461206357600080fd5b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60008251616c5e818460208701615e8c565b9190910192915050565b6001600160e01b0319831681528151600090616c8b816004850160208701615e8c565b919091016004019392505050565b6001600160401b03818116838216019080821115616933576169336168e5565b60208082526021908201527f476f7665726e6f723a20696e76616c69642070726f706f73616c206c656e67746040820152600d60fb1b606082015260800190565b8981526001600160a01b038916602082015261012060408201819052600090616d258382018b616187565b90508281036060840152616d39818a6161cb565b90508281036080840152616d4d81896161fb565b905082810360a0840152616d6181886161fb565b90508560c08401528460e0840152828103610100840152616d828185615eb0565b9c9b505050505050505050505050565b601f821115613bc957600081815260208120601f850160051c81016020861015616db95750805b601f850160051c820191505b818110156117a157828155600101616dc5565b81516001600160401b03811115616df157616df1615d23565b616e0581616dff8454616895565b84616d92565b602080601f831160018114616e3a5760008415616e225750858301515b600019600386901b1c1916600185901b1785556117a1565b600085815260208120601f198616915b82811015616e6957888601518255948401946001909101908401616e4a565b5085821015616e875787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b84815260ff84166020820152826040820152608060608201526000611b586080830184615eb0565b85815260ff8516602082015283604082015260a060608201526000616ee760a0830185615eb0565b8281036080840152611c718185615eb056fe476f7665726e6f723a2072656c617920726576657274656420776974686f7574206d657373616765a164736f6c6343000811000a", }, { ContractAddr: common.HexToAddress(GovTokenContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/1abdfbf3aeb86909c2220b79bf92b87ddff64b54", - Code: "608060405234801561001057600080fd5b50600436106102065760003560e01c806370a082311161011a5780639ab24eb0116100ad578063d505accf1161007c578063d505accf146104a2578063dd62ed3e146104b5578063e5ed5b1e146104c8578063f1127ed8146104db578063f1fad1041461051857600080fd5b80639ab24eb014610456578063a457c2d714610469578063a9059cbb1461047c578063c3cda5201461048f57600080fd5b806384b0196e116100e957806384b0196e146104015780638e539e8c1461041c57806391ddadf41461042f57806395d89b411461044e57600080fd5b806370a08231146103aa57806379cc6790146103d35780637ecebe00146103e65780638129fc1c146103f957600080fd5b8063395093511161019d5780634bf5d7e91161016c5780634bf5d7e91461031b5780634bf6c88214610323578063587cde1e1461032b5780635c19a95c1461036f5780636fcfff451461038257600080fd5b806339509351146102cf5780633a46b1a8146102e257806342966c68146102f5578063448407751461030857600080fd5b806323b872dd116101d957806323b872dd1461028a5780633041949b1461029d578063313ce567146102b25780633644e515146102c757600080fd5b8063039c91fc1461020b57806306fdde031461024a578063095ea7b31461025f57806318160ddd14610282575b600080fd5b6102376102193660046120c5565b61013060209081526000928352604080842090915290825290205481565b6040519081526020015b60405180910390f35b610252610520565b604051610241919061213e565b61027261026d366004612151565b6105b2565b6040519015158152602001610241565b603554610237565b61027261029836600461217b565b6105cc565b6102b06102ab3660046120c5565b6105f0565b005b60125b60405160ff9091168152602001610241565b610237610629565b6102726102dd366004612151565b610638565b6102376102f0366004612151565b61065a565b6102b06103033660046121b7565b6106df565b6102b06103163660046121d0565b6106ec565b610252610765565b6102b5600881565b610357610339366004612254565b6001600160a01b03908116600090815260fe60205260409020541690565b6040516001600160a01b039091168152602001610241565b6102b061037d366004612254565b6107fd565b610395610390366004612254565b610807565b60405163ffffffff9091168152602001610241565b6102376103b8366004612254565b6001600160a01b031660009081526033602052604090205490565b6102b06103e1366004612151565b610829565b6102376103f4366004612254565b61083e565b6102b061085c565b610409610a3c565b604051610241979695949392919061226f565b61023761042a3660046121b7565b610ada565b610437610b42565b60405165ffffffffffff9091168152602001610241565b610252610b4d565b610237610464366004612254565b610b5c565b610272610477366004612151565b610bde565b61027261048a366004612151565b610c59565b6102b061049d366004612316565b610c67565b6102b06104b036600461236e565b610d9d565b6102376104c33660046120c5565b610f01565b6102b06104d63660046120c5565b610f2c565b6104ee6104e93660046123d8565b610f5c565b60408051825163ffffffff1681526020928301516001600160e01b03169281019290925201610241565b6102b5601181565b60606036805461052f90612418565b80601f016020809104026020016040519081016040528092919081815260200182805461055b90612418565b80156105a85780601f1061057d576101008083540402835291602001916105a8565b820191906000526020600020905b81548152906001019060200180831161058b57829003601f168201915b5050505050905090565b6000336105c0818585610fe0565b60019150505b92915050565b6000336105da858285610ff9565b6105e5858585611073565b506001949350505050565b336120021461061b57604051630f22c43960e41b815261200260048201526024015b60405180910390fd5b610625828261108c565b5050565b60006106336111bc565b905090565b6000336105c081858561064b8383610f01565b6106559190612462565b610fe0565b6000610664610b42565b65ffffffffffff1682106106b65760405162461bcd60e51b815260206004820152601960248201527804552433230566f7465733a20667574757265206c6f6f6b757603c1b6044820152606401610612565b6001600160a01b038316600090815260ff602052604090206106d890836111c6565b9392505050565b6106e933826112af565b50565b336120021461071257604051630f22c43960e41b81526120026004820152602401610612565b8160005b8181101561075e5761074e85858381811061073357610733612475565b90506020020160208101906107489190612254565b8461108c565b6107578161248b565b9050610716565b5050505050565b606043610770610b42565b65ffffffffffff16146107c55760405162461bcd60e51b815260206004820152601d60248201527f4552433230566f7465733a2062726f6b656e20636c6f636b206d6f64650000006044820152606401610612565b5060408051808201909152601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c74000000602082015290565b6106e933826112b9565b6001600160a01b038116600090815260ff60205260408120546105c690611333565b610834823383610ff9565b61062582826112af565b6001600160a01b038116600090815260cb60205260408120546105c6565b600054610100900460ff161580801561087c5750600054600160ff909116105b806108965750303b158015610896575060005460ff166001145b6108f95760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610612565b6000805460ff19166001179055801561091c576000805461ff0019166101001790555b33411461093c5760405163022d8c9560e31b815260040160405180910390fd5b3a1561095b576040516383f1b1d360e01b815260040160405180910390fd5b6109af604051806040016040528060148152602001732129a19023b7bb32b93730b731b2902a37b5b2b760611b8152506040518060400160405280600681526020016533b7bb21272160d11b81525061139c565b6109b76113cd565b6109ec604051806040016040528060148152602001732129a19023b7bb32b93730b731b2902a37b5b2b760611b8152506113f6565b6109f46113cd565b80156106e9576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b6000606080600080600060606097546000801b148015610a5c5750609854155b610aa05760405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b6044820152606401610612565b610aa8611440565b610ab061144f565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b6000610ae4610b42565b65ffffffffffff168210610b365760405162461bcd60e51b815260206004820152601960248201527804552433230566f7465733a20667574757265206c6f6f6b757603c1b6044820152606401610612565b6105c6610100836111c6565b60006106334361145e565b60606037805461052f90612418565b6001600160a01b038116600090815260ff60205260408120548015610bcb576001600160a01b038316600090815260ff6020526040902080546000198301908110610ba957610ba9612475565b60009182526020909120015464010000000090046001600160e01b0316610bce565b60005b6001600160e01b03169392505050565b60003381610bec8286610f01565b905083811015610c4c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610612565b6105e58286868403610fe0565b6000336105c0818585611073565b83421115610cb75760405162461bcd60e51b815260206004820152601d60248201527f4552433230566f7465733a207369676e617475726520657870697265640000006044820152606401610612565b604080517fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60208201526001600160a01b038816918101919091526060810186905260808101859052600090610d3190610d299060a001604051602081830303815290604052805190602001206114c5565b8585856114f2565b9050610d3c8161151a565b8614610d8a5760405162461bcd60e51b815260206004820152601960248201527f4552433230566f7465733a20696e76616c6964206e6f6e6365000000000000006044820152606401610612565b610d9481886112b9565b50505050505050565b83421115610ded5760405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606401610612565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9888888610e1c8c61151a565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090506000610e77826114c5565b90506000610e87828787876114f2565b9050896001600160a01b0316816001600160a01b031614610eea5760405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606401610612565b610ef58a8a8a610fe0565b50505050505050505050565b6001600160a01b03918216600090815260346020908152604080832093909416825291909152205490565b3361200214610f5257604051630f22c43960e41b81526120026004820152602401610612565b61062582826112b9565b60408051808201909152600080825260208201526001600160a01b038316600090815260ff60205260409020805463ffffffff8416908110610fa057610fa0612475565b60009182526020918290206040805180820190915291015463ffffffff8116825264010000000090046001600160e01b0316918101919091529392505050565b604051632028747160e01b815260040160405180910390fd5b60006110058484610f01565b9050600019811461106d57818110156110605760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610612565b61106d8484848403610fe0565b50505050565b604051638cd22d1960e01b815260040160405180910390fd5b604051630913db4760e01b81526001600160a01b03828116600483015260009190841690630913db4790602401602060405180830381865afa1580156110d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110fa91906124ba565b6001600160a01b03808516600090815261013060209081526040808320938716835292905220549091508181101561117357600061113882846124d3565b6001600160a01b03808716600090815261013060209081526040808320938916835292905220849055905061116d8482611542565b5061106d565b8181111561106d57600061118783836124d3565b6001600160a01b03808716600090815261013060209081526040808320938916835292905220849055905061075e84826112af565b600061063361154c565b8154600090818160058111156112205760006111e1846115c0565b6111eb90856124d3565b600088815260209020909150869082015463ffffffff1611156112105780915061121e565b61121b816001612462565b92505b505b8082101561126d57600061123483836116a8565b600088815260209020909150869082015463ffffffff16111561125957809150611267565b611264816001612462565b92505b50611220565b8015611299576000868152602090208101600019015464010000000090046001600160e01b031661129c565b60005b6001600160e01b03169695505050505050565b61062582826116c3565b6001600160a01b03828116600081815260fe6020818152604080842080546033845282862054949093528787166001600160a01b03198416811790915590519190951694919391928592917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a461106d8284836116dc565b600063ffffffff8211156113985760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201526532206269747360d01b6064820152608401610612565b5090565b600054610100900460ff166113c35760405162461bcd60e51b8152600401610612906124e6565b610625828261181a565b600054610100900460ff166113f45760405162461bcd60e51b8152600401610612906124e6565b565b600054610100900460ff1661141d5760405162461bcd60e51b8152600401610612906124e6565b6106e981604051806040016040528060018152602001603160f81b81525061185a565b60606099805461052f90612418565b6060609a805461052f90612418565b600065ffffffffffff8211156113985760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203460448201526538206269747360d01b6064820152608401610612565b60006105c66114d26111bc565b8360405161190160f01b8152600281019290925260228201526042902090565b6000806000611503878787876118a9565b915091506115108161196d565b5095945050505050565b6001600160a01b038116600090815260cb602052604090208054600181018255905b50919050565b6106258282611ab7565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f611577611b42565b61157f611b9b565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b6000816000036115d257506000919050565b600060016115df84611bcc565b901c6001901b905060018184816115f8576115f8612531565b048201901c9050600181848161161057611610612531565b048201901c9050600181848161162857611628612531565b048201901c9050600181848161164057611640612531565b048201901c9050600181848161165857611658612531565b048201901c9050600181848161167057611670612531565b048201901c9050600181848161168857611688612531565b048201901c90506106d8818285816116a2576116a2612531565b04611c60565b60006116b76002848418612547565b6106d890848416612462565b6116cd8282611c76565b61106d610100611db183611dbd565b816001600160a01b0316836001600160a01b0316141580156116fe5750600081115b15611815576001600160a01b0383161561178c576001600160a01b038316600090815260ff60205260408120819061173990611db185611dbd565b91509150846001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248383604051611781929190918252602082015260400190565b60405180910390a250505b6001600160a01b03821615611815576001600160a01b038216600090815260ff6020526040812081906117c290611f3285611dbd565b91509150836001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724838360405161180a929190918252602082015260400190565b60405180910390a250505b505050565b600054610100900460ff166118415760405162461bcd60e51b8152600401610612906124e6565b603661184d83826125b7565b50603761181582826125b7565b600054610100900460ff166118815760405162461bcd60e51b8152600401610612906124e6565b609961188d83826125b7565b50609a61189a82826125b7565b50506000609781905560985550565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156118e05750600090506003611964565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611934573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661195d57600060019250925050611964565b9150600090505b94509492505050565b600081600481111561198157611981612677565b036119895750565b600181600481111561199d5761199d612677565b036119ea5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610612565b60028160048111156119fe576119fe612677565b03611a4b5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610612565b6003816004811115611a5f57611a5f612677565b036106e95760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610612565b611ac18282611f3e565b6035546001600160e01b031015611b335760405162461bcd60e51b815260206004820152603060248201527f4552433230566f7465733a20746f74616c20737570706c79207269736b73206f60448201526f766572666c6f77696e6720766f74657360801b6064820152608401610612565b61106d610100611f3283611dbd565b600080611b4d611440565b805190915015611b64578051602090910120919050565b6097548015611b735792915050565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4709250505090565b600080611ba661144f565b805190915015611bbd578051602090910120919050565b6098548015611b735792915050565b600080608083901c15611be157608092831c92015b604083901c15611bf357604092831c92015b602083901c15611c0557602092831c92015b601083901c15611c1757601092831c92015b600883901c15611c2957600892831c92015b600483901c15611c3b57600492831c92015b600283901c15611c4d57600292831c92015b600183901c156105c65760010192915050565b6000818310611c6f57816106d8565b5090919050565b6001600160a01b038216611cd65760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610612565b6001600160a01b03821660009081526033602052604090205481811015611d4a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610612565b6001600160a01b03831660008181526033602090815260408083208686039055603580548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a361181583600084612003565b60006106d882846124d3565b82546000908190818115611e0a5760008781526020902082016000190160408051808201909152905463ffffffff8116825264010000000090046001600160e01b03166020820152611e1f565b60408051808201909152600080825260208201525b905080602001516001600160e01b03169350611e3f84868863ffffffff16565b9250600082118015611e695750611e54610b42565b65ffffffffffff16816000015163ffffffff16145b15611eae57611e778361200e565b60008881526020902083016000190180546001600160e01b03929092166401000000000263ffffffff909216919091179055611f28565b866040518060400160405280611ed2611ec5610b42565b65ffffffffffff16611333565b63ffffffff168152602001611ee68661200e565b6001600160e01b0390811690915282546001810184556000938452602093849020835194909301519091166401000000000263ffffffff909316929092179101555b5050935093915050565b60006106d88284612462565b6001600160a01b038216611f945760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610612565b8060356000828254611fa69190612462565b90915550506001600160a01b0382166000818152603360209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610625600083835b611815838383612077565b60006001600160e01b038211156113985760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20326044820152663234206269747360c81b6064820152608401610612565b6001600160a01b03838116600090815260fe6020526040808220548584168352912054611815929182169116836116dc565b80356001600160a01b03811681146120c057600080fd5b919050565b600080604083850312156120d857600080fd5b6120e1836120a9565b91506120ef602084016120a9565b90509250929050565b6000815180845260005b8181101561211e57602081850181015186830182015201612102565b506000602082860101526020601f19601f83011685010191505092915050565b6020815260006106d860208301846120f8565b6000806040838503121561216457600080fd5b61216d836120a9565b946020939093013593505050565b60008060006060848603121561219057600080fd5b612199846120a9565b92506121a7602085016120a9565b9150604084013590509250925092565b6000602082840312156121c957600080fd5b5035919050565b6000806000604084860312156121e557600080fd5b833567ffffffffffffffff808211156121fd57600080fd5b818601915086601f83011261221157600080fd5b81358181111561222057600080fd5b8760208260051b850101111561223557600080fd5b60209283019550935061224b91860190506120a9565b90509250925092565b60006020828403121561226657600080fd5b6106d8826120a9565b60ff60f81b881681526000602060e08184015261228f60e084018a6120f8565b83810360408501526122a1818a6120f8565b606085018990526001600160a01b038816608086015260a0850187905284810360c0860152855180825283870192509083019060005b818110156122f3578351835292840192918401916001016122d7565b50909c9b505050505050505050505050565b803560ff811681146120c057600080fd5b60008060008060008060c0878903121561232f57600080fd5b612338876120a9565b9550602087013594506040870135935061235460608801612305565b92506080870135915060a087013590509295509295509295565b600080600080600080600060e0888a03121561238957600080fd5b612392886120a9565b96506123a0602089016120a9565b955060408801359450606088013593506123bc60808901612305565b925060a0880135915060c0880135905092959891949750929550565b600080604083850312156123eb57600080fd5b6123f4836120a9565b9150602083013563ffffffff8116811461240d57600080fd5b809150509250929050565b600181811c9082168061242c57607f821691505b60208210810361153c57634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b808201808211156105c6576105c661244c565b634e487b7160e01b600052603260045260246000fd5b60006001820161249d5761249d61244c565b5060010190565b634e487b7160e01b600052604160045260246000fd5b6000602082840312156124cc57600080fd5b5051919050565b818103818111156105c6576105c661244c565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b634e487b7160e01b600052601260045260246000fd5b60008261256457634e487b7160e01b600052601260045260246000fd5b500490565b601f82111561181557600081815260208120601f850160051c810160208610156125905750805b601f850160051c820191505b818110156125af5782815560010161259c565b505050505050565b815167ffffffffffffffff8111156125d1576125d16124a4565b6125e5816125df8454612418565b84612569565b602080601f83116001811461261a57600084156126025750858301515b600019600386901b1c1916600185901b1785556125af565b600085815260208120601f198616915b828110156126495788860151825594840194600190910190840161262a565b50858210156126675787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052602160045260246000fdfea164736f6c6343000811000a", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/9d09d0a3d6332460a810188261ec8195e05aa218", + Code: "608060405234801561001057600080fd5b50600436106102065760003560e01c806370a082311161011a5780639ab24eb0116100ad578063d505accf1161007c578063d505accf1461049d578063dd62ed3e146104b0578063e5ed5b1e146104c3578063f1127ed8146104d6578063f1fad1041461051357600080fd5b80639ab24eb014610451578063a457c2d714610464578063a9059cbb14610477578063c3cda5201461048a57600080fd5b806384b0196e116100e957806384b0196e146103fc5780638e539e8c1461041757806391ddadf41461042a57806395d89b411461044957600080fd5b806370a08231146103aa57806379cc6790146103d35780637ecebe00146103e15780638129fc1c146103f457600080fd5b8063395093511161019d5780634bf5d7e91161016c5780634bf5d7e91461031b5780634bf6c88214610323578063587cde1e1461032b5780635c19a95c1461036f5780636fcfff451461038257600080fd5b806339509351146102cf5780633a46b1a8146102e257806342966c68146102f5578063448407751461030857600080fd5b806323b872dd116101d957806323b872dd1461028a5780633041949b1461029d578063313ce567146102b25780633644e515146102c757600080fd5b8063039c91fc1461020b57806306fdde031461024a578063095ea7b31461025f57806318160ddd14610282575b600080fd5b6102376102193660046120c7565b61013060209081526000928352604080842090915290825290205481565b6040519081526020015b60405180910390f35b61025261051b565b6040516102419190612140565b61027261026d366004612153565b6105ad565b6040519015158152602001610241565b603554610237565b61027261029836600461217d565b6105c7565b6102b06102ab3660046120c7565b6105eb565b005b60125b60405160ff9091168152602001610241565b610237610624565b6102726102dd366004612153565b610633565b6102376102f0366004612153565b610655565b6102b06103033660046121b9565b6106da565b6102b06103163660046121d2565b6106f3565b61025261076c565b6102b5600881565b610357610339366004612256565b6001600160a01b03908116600090815260fe60205260409020541690565b6040516001600160a01b039091168152602001610241565b6102b061037d366004612256565b610804565b610395610390366004612256565b610811565b60405163ffffffff9091168152602001610241565b6102376103b8366004612256565b6001600160a01b031660009081526033602052604090205490565b6102b0610303366004612153565b6102376103ef366004612256565b610833565b6102b0610851565b610404610a31565b6040516102419796959493929190612271565b6102376104253660046121b9565b610acf565b610432610b37565b60405165ffffffffffff9091168152602001610241565b610252610b42565b61023761045f366004612256565b610b51565b610272610472366004612153565b610bd3565b610272610485366004612153565b610c4e565b6102b0610498366004612318565b610c5c565b6102b06104ab366004612370565b610d92565b6102376104be3660046120c7565b610ef6565b6102b06104d13660046120c7565b610f21565b6104e96104e43660046123da565b610f51565b60408051825163ffffffff1681526020928301516001600160e01b03169281019290925201610241565b6102b5601181565b60606036805461052a9061241a565b80601f01602080910402602001604051908101604052809291908181526020018280546105569061241a565b80156105a35780601f10610578576101008083540402835291602001916105a3565b820191906000526020600020905b81548152906001019060200180831161058657829003601f168201915b5050505050905090565b6000336105bb818585610fd5565b60019150505b92915050565b6000336105d5858285610fee565b6105e0858585611068565b506001949350505050565b336120021461061657604051630f22c43960e41b815261200260048201526024015b60405180910390fd5b6106208282611081565b5050565b600061062e6111b1565b905090565b6000336105bb8185856106468383610ef6565b6106509190612464565b610fd5565b600061065f610b37565b65ffffffffffff1682106106b15760405162461bcd60e51b815260206004820152601960248201527804552433230566f7465733a20667574757265206c6f6f6b757603c1b604482015260640161060d565b6001600160a01b038316600090815260ff602052604090206106d390836111bb565b9392505050565b60405163e5d8776760e01b815260040160405180910390fd5b336120021461071957604051630f22c43960e41b8152612002600482015260240161060d565b8160005b818110156107655761075585858381811061073a5761073a612477565b905060200201602081019061074f9190612256565b84611081565b61075e8161248d565b905061071d565b5050505050565b606043610777610b37565b65ffffffffffff16146107cc5760405162461bcd60e51b815260206004820152601d60248201527f4552433230566f7465733a2062726f6b656e20636c6f636b206d6f6465000000604482015260640161060d565b5060408051808201909152601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c74000000602082015290565b61080e33826112a4565b50565b6001600160a01b038116600090815260ff60205260408120546105c19061131e565b6001600160a01b038116600090815260cb60205260408120546105c1565b600054610100900460ff16158080156108715750600054600160ff909116105b8061088b5750303b15801561088b575060005460ff166001145b6108ee5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161060d565b6000805460ff191660011790558015610911576000805461ff0019166101001790555b3341146109315760405163022d8c9560e31b815260040160405180910390fd5b3a15610950576040516383f1b1d360e01b815260040160405180910390fd5b6109a4604051806040016040528060148152602001732129a19023b7bb32b93730b731b2902a37b5b2b760611b8152506040518060400160405280600681526020016533b7bb21272160d11b815250611387565b6109ac6113b8565b6109e1604051806040016040528060148152602001732129a19023b7bb32b93730b731b2902a37b5b2b760611b8152506113e1565b6109e96113b8565b801561080e576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b6000606080600080600060606097546000801b148015610a515750609854155b610a955760405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b604482015260640161060d565b610a9d61142b565b610aa561143a565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b6000610ad9610b37565b65ffffffffffff168210610b2b5760405162461bcd60e51b815260206004820152601960248201527804552433230566f7465733a20667574757265206c6f6f6b757603c1b604482015260640161060d565b6105c1610100836111bb565b600061062e43611449565b60606037805461052a9061241a565b6001600160a01b038116600090815260ff60205260408120548015610bc0576001600160a01b038316600090815260ff6020526040902080546000198301908110610b9e57610b9e612477565b60009182526020909120015464010000000090046001600160e01b0316610bc3565b60005b6001600160e01b03169392505050565b60003381610be18286610ef6565b905083811015610c415760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161060d565b6105e08286868403610fd5565b6000336105bb818585611068565b83421115610cac5760405162461bcd60e51b815260206004820152601d60248201527f4552433230566f7465733a207369676e61747572652065787069726564000000604482015260640161060d565b604080517fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60208201526001600160a01b038816918101919091526060810186905260808101859052600090610d2690610d1e9060a001604051602081830303815290604052805190602001206114b0565b8585856114dd565b9050610d3181611505565b8614610d7f5760405162461bcd60e51b815260206004820152601960248201527f4552433230566f7465733a20696e76616c6964206e6f6e636500000000000000604482015260640161060d565b610d8981886112a4565b50505050505050565b83421115610de25760405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e65000000604482015260640161060d565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9888888610e118c611505565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090506000610e6c826114b0565b90506000610e7c828787876114dd565b9050896001600160a01b0316816001600160a01b031614610edf5760405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e61747572650000604482015260640161060d565b610eea8a8a8a610fd5565b50505050505050505050565b6001600160a01b03918216600090815260346020908152604080832093909416825291909152205490565b3361200214610f4757604051630f22c43960e41b8152612002600482015260240161060d565b61062082826112a4565b60408051808201909152600080825260208201526001600160a01b038316600090815260ff60205260409020805463ffffffff8416908110610f9557610f95612477565b60009182526020918290206040805180820190915291015463ffffffff8116825264010000000090046001600160e01b0316918101919091529392505050565b604051632028747160e01b815260040160405180910390fd5b6000610ffa8484610ef6565b9050600019811461106257818110156110555760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161060d565b6110628484848403610fd5565b50505050565b604051638cd22d1960e01b815260040160405180910390fd5b604051630913db4760e01b81526001600160a01b03828116600483015260009190841690630913db4790602401602060405180830381865afa1580156110cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110ef91906124bc565b6001600160a01b03808516600090815261013060209081526040808320938716835292905220549091508181101561116857600061112d82846124d5565b6001600160a01b038087166000908152610130602090815260408083209389168352929052208490559050611162848261152d565b50611062565b8181111561106257600061117c83836124d5565b6001600160a01b0380871660009081526101306020908152604080832093891683529290522084905590506107658482611537565b600061062e611541565b8154600090818160058111156112155760006111d6846115b5565b6111e090856124d5565b600088815260209020909150869082015463ffffffff16111561120557809150611213565b611210816001612464565b92505b505b80821015611262576000611229838361169d565b600088815260209020909150869082015463ffffffff16111561124e5780915061125c565b611259816001612464565b92505b50611215565b801561128e576000868152602090208101600019015464010000000090046001600160e01b0316611291565b60005b6001600160e01b03169695505050505050565b6001600160a01b03828116600081815260fe6020818152604080842080546033845282862054949093528787166001600160a01b03198416811790915590519190951694919391928592917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a46110628284836116b8565b600063ffffffff8211156113835760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201526532206269747360d01b606482015260840161060d565b5090565b600054610100900460ff166113ae5760405162461bcd60e51b815260040161060d906124e8565b61062082826117f6565b600054610100900460ff166113df5760405162461bcd60e51b815260040161060d906124e8565b565b600054610100900460ff166114085760405162461bcd60e51b815260040161060d906124e8565b61080e81604051806040016040528060018152602001603160f81b815250611836565b60606099805461052a9061241a565b6060609a805461052a9061241a565b600065ffffffffffff8211156113835760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203460448201526538206269747360d01b606482015260840161060d565b60006105c16114bd6111b1565b8360405161190160f01b8152600281019290925260228201526042902090565b60008060006114ee87878787611885565b915091506114fb81611949565b5095945050505050565b6001600160a01b038116600090815260cb602052604090208054600181018255905b50919050565b6106208282611a93565b6106208282611b1e565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f61156c611b37565b611574611b90565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b6000816000036115c757506000919050565b600060016115d484611bc1565b901c6001901b905060018184816115ed576115ed612533565b048201901c9050600181848161160557611605612533565b048201901c9050600181848161161d5761161d612533565b048201901c9050600181848161163557611635612533565b048201901c9050600181848161164d5761164d612533565b048201901c9050600181848161166557611665612533565b048201901c9050600181848161167d5761167d612533565b048201901c90506106d38182858161169757611697612533565b04611c55565b60006116ac6002848418612549565b6106d390848416612464565b816001600160a01b0316836001600160a01b0316141580156116da5750600081115b156117f1576001600160a01b03831615611768576001600160a01b038316600090815260ff60205260408120819061171590611c6b85611c77565b91509150846001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724838360405161175d929190918252602082015260400190565b60405180910390a250505b6001600160a01b038216156117f1576001600160a01b038216600090815260ff60205260408120819061179e90611dec85611c77565b91509150836001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72483836040516117e6929190918252602082015260400190565b60405180910390a250505b505050565b600054610100900460ff1661181d5760405162461bcd60e51b815260040161060d906124e8565b603661182983826125b9565b5060376117f182826125b9565b600054610100900460ff1661185d5760405162461bcd60e51b815260040161060d906124e8565b609961186983826125b9565b50609a61187682826125b9565b50506000609781905560985550565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156118bc5750600090506003611940565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611910573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661193957600060019250925050611940565b9150600090505b94509492505050565b600081600481111561195d5761195d612679565b036119655750565b600181600481111561197957611979612679565b036119c65760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640161060d565b60028160048111156119da576119da612679565b03611a275760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161060d565b6003816004811115611a3b57611a3b612679565b0361080e5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b606482015260840161060d565b611a9d8282611df8565b6035546001600160e01b031015611b0f5760405162461bcd60e51b815260206004820152603060248201527f4552433230566f7465733a20746f74616c20737570706c79207269736b73206f60448201526f766572666c6f77696e6720766f74657360801b606482015260840161060d565b611062610100611dec83611c77565b611b288282611ec1565b611062610100611c6b83611c77565b600080611b4261142b565b805190915015611b59578051602090910120919050565b6097548015611b685792915050565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4709250505090565b600080611b9b61143a565b805190915015611bb2578051602090910120919050565b6098548015611b685792915050565b600080608083901c15611bd657608092831c92015b604083901c15611be857604092831c92015b602083901c15611bfa57602092831c92015b601083901c15611c0c57601092831c92015b600883901c15611c1e57600892831c92015b600483901c15611c3057600492831c92015b600283901c15611c4257600292831c92015b600183901c156105c15760010192915050565b6000818310611c6457816106d3565b5090919050565b60006106d382846124d5565b82546000908190818115611cc45760008781526020902082016000190160408051808201909152905463ffffffff8116825264010000000090046001600160e01b03166020820152611cd9565b60408051808201909152600080825260208201525b905080602001516001600160e01b03169350611cf984868863ffffffff16565b9250600082118015611d235750611d0e610b37565b65ffffffffffff16816000015163ffffffff16145b15611d6857611d3183611ffc565b60008881526020902083016000190180546001600160e01b03929092166401000000000263ffffffff909216919091179055611de2565b866040518060400160405280611d8c611d7f610b37565b65ffffffffffff1661131e565b63ffffffff168152602001611da086611ffc565b6001600160e01b0390811690915282546001810184556000938452602093849020835194909301519091166401000000000263ffffffff909316929092179101555b5050935093915050565b60006106d38284612464565b6001600160a01b038216611e4e5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161060d565b8060356000828254611e609190612464565b90915550506001600160a01b0382166000818152603360209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a361062060008383612065565b6001600160a01b038216611f215760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161060d565b6001600160a01b03821660009081526033602052604090205481811015611f955760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161060d565b6001600160a01b03831660008181526033602090815260408083208686039055603580548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36117f183600084612065565b60006001600160e01b038211156113835760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20326044820152663234206269747360c81b606482015260840161060d565b6117f18383836001600160a01b03808416600090815260fe60205260409020546117f191166001600160a01b03808516600090815260fe602052604090205416836116b8565b80356001600160a01b03811681146120c257600080fd5b919050565b600080604083850312156120da57600080fd5b6120e3836120ab565b91506120f1602084016120ab565b90509250929050565b6000815180845260005b8181101561212057602081850181015186830182015201612104565b506000602082860101526020601f19601f83011685010191505092915050565b6020815260006106d360208301846120fa565b6000806040838503121561216657600080fd5b61216f836120ab565b946020939093013593505050565b60008060006060848603121561219257600080fd5b61219b846120ab565b92506121a9602085016120ab565b9150604084013590509250925092565b6000602082840312156121cb57600080fd5b5035919050565b6000806000604084860312156121e757600080fd5b833567ffffffffffffffff808211156121ff57600080fd5b818601915086601f83011261221357600080fd5b81358181111561222257600080fd5b8760208260051b850101111561223757600080fd5b60209283019550935061224d91860190506120ab565b90509250925092565b60006020828403121561226857600080fd5b6106d3826120ab565b60ff60f81b881681526000602060e08184015261229160e084018a6120fa565b83810360408501526122a3818a6120fa565b606085018990526001600160a01b038816608086015260a0850187905284810360c0860152855180825283870192509083019060005b818110156122f5578351835292840192918401916001016122d9565b50909c9b505050505050505050505050565b803560ff811681146120c257600080fd5b60008060008060008060c0878903121561233157600080fd5b61233a876120ab565b9550602087013594506040870135935061235660608801612307565b92506080870135915060a087013590509295509295509295565b600080600080600080600060e0888a03121561238b57600080fd5b612394886120ab565b96506123a2602089016120ab565b955060408801359450606088013593506123be60808901612307565b925060a0880135915060c0880135905092959891949750929550565b600080604083850312156123ed57600080fd5b6123f6836120ab565b9150602083013563ffffffff8116811461240f57600080fd5b809150509250929050565b600181811c9082168061242e57607f821691505b60208210810361152757634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b808201808211156105c1576105c161244e565b634e487b7160e01b600052603260045260246000fd5b60006001820161249f5761249f61244e565b5060010190565b634e487b7160e01b600052604160045260246000fd5b6000602082840312156124ce57600080fd5b5051919050565b818103818111156105c1576105c161244e565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b634e487b7160e01b600052601260045260246000fd5b60008261256657634e487b7160e01b600052601260045260246000fd5b500490565b601f8211156117f157600081815260208120601f850160051c810160208610156125925750805b601f850160051c820191505b818110156125b15782815560010161259e565b505050505050565b815167ffffffffffffffff8111156125d3576125d36124a6565b6125e7816125e1845461241a565b8461256b565b602080601f83116001811461261c57600084156126045750858301515b600019600386901b1c1916600185901b1785556125b1565b600085815260208120601f198616915b8281101561264b5788860151825594840194600190910190840161262c565b50858210156126695787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052602160045260246000fdfea164736f6c6343000811000a", }, { ContractAddr: common.HexToAddress(TimelockContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/1abdfbf3aeb86909c2220b79bf92b87ddff64b54", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/9d09d0a3d6332460a810188261ec8195e05aa218", Code: "6080604052600436106101e75760003560e01c80638129fc1c11610102578063bc197c8111610095578063e38335e511610064578063e38335e5146105e1578063f1fad104146105f4578063f23a6e6114610609578063f27a0c921461063557600080fd5b8063bc197c8114610548578063c4d252f514610574578063d45c443514610594578063d547741f146105c157600080fd5b8063a217fddf116100d1578063a217fddf146104d1578063ac431751146104e6578063b08e51c014610506578063b1c5f4271461052857600080fd5b80638129fc1c1461045a5780638f2a0bb01461046f5780638f61f4f51461048f57806391d14854146104b157600080fd5b80632ab0f5291161017a5780634bf6c882116101495780634bf6c882146103d3578063584b153e146103fa57806364d623531461041a5780638065657f1461043a57600080fd5b80632ab0f529146103435780632f2ff15d1461037357806331d507501461039357806336568abe146103b357600080fd5b8063134008d3116101b6578063134008d31461029c57806313bc9f20146102af578063150b7a02146102cf578063248a9ca31461031357600080fd5b806301d5062a146101f357806301ffc9a71461021557806307bd02651461024a5780630d3cf6fc1461027a57600080fd5b366101ee57005b600080fd5b3480156101ff57600080fd5b5061021361020e366004611aa4565b61064a565b005b34801561022157600080fd5b50610235610230366004611b18565b61070e565b60405190151581526020015b60405180910390f35b34801561025657600080fd5b5061026c60008051602061258883398151915281565b604051908152602001610241565b34801561028657600080fd5b5061026c60008051602061254883398151915281565b6102136102aa366004611b42565b610739565b3480156102bb57600080fd5b506102356102ca366004611bad565b6107dc565b3480156102db57600080fd5b506102fa6102ea366004611c7b565b630a85bd0160e11b949350505050565b6040516001600160e01b03199091168152602001610241565b34801561031f57600080fd5b5061026c61032e366004611bad565b60009081526065602052604090206001015490565b34801561034f57600080fd5b5061023561035e366004611bad565b60009081526097602052604090205460011490565b34801561037f57600080fd5b5061021361038e366004611ce2565b610802565b34801561039f57600080fd5b506102356103ae366004611bad565b61082c565b3480156103bf57600080fd5b506102136103ce366004611ce2565b610845565b3480156103df57600080fd5b506103e8600881565b60405160ff9091168152602001610241565b34801561040657600080fd5b50610235610415366004611bad565b6108c8565b34801561042657600080fd5b50610213610435366004611bad565b6108df565b34801561044657600080fd5b5061026c610455366004611b42565b610983565b34801561046657600080fd5b506102136109c2565b34801561047b57600080fd5b5061021361048a366004611d52565b610b72565b34801561049b57600080fd5b5061026c60008051602061256883398151915281565b3480156104bd57600080fd5b506102356104cc366004611ce2565b610cf3565b3480156104dd57600080fd5b5061026c600081565b3480156104f257600080fd5b50610213610501366004611e03565b610d1e565b34801561051257600080fd5b5061026c6000805160206125a883398151915281565b34801561053457600080fd5b5061026c610543366004611e6e565b610f08565b34801561055457600080fd5b506102fa610563366004611f95565b63bc197c8160e01b95945050505050565b34801561058057600080fd5b5061021361058f366004611bad565b610f4d565b3480156105a057600080fd5b5061026c6105af366004611bad565b60009081526097602052604090205490565b3480156105cd57600080fd5b506102136105dc366004611ce2565b611010565b6102136105ef366004611e6e565b611035565b34801561060057600080fd5b506103e8601181565b34801561061557600080fd5b506102fa61062436600461203e565b63f23a6e6160e01b95945050505050565b34801561064157600080fd5b5060985461026c565b600080516020612568833981519152610662816111ad565b6000610672898989898989610983565b905061067e81846111b7565b6000817f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8b8b8b8b8b8a6040516106ba969594939291906120cb565b60405180910390a3831561070357807f20fda5fd27a1ea7bf5b9567f143ac5470bb059374a27e8f67cb44f946f6d0387856040516106fa91815260200190565b60405180910390a25b505050505050505050565b60006001600160e01b03198216630271189760e51b14806107335750610733826112a6565b92915050565b600080516020612588833981519152610753816000610cf3565b6107615761076181336112db565b6000610771888888888888610983565b905061077d8185611334565b610789888888886113cf565b6000817fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b588a8a8a8a6040516107c19493929190612108565b60405180910390a36107d2816114a2565b5050505050505050565b6000818152609760205260408120546001811180156107fb5750428111155b9392505050565b60008281526065602052604090206001015461081d816111ad565b61082783836114db565b505050565b60008181526097602052604081205481905b1192915050565b6001600160a01b03811633146108ba5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b6108c48282611561565b5050565b60008181526097602052604081205460019061083e565b3330146109425760405162461bcd60e51b815260206004820152602b60248201527f54696d656c6f636b436f6e74726f6c6c65723a2063616c6c6572206d7573742060448201526a62652074696d656c6f636b60a81b60648201526084016108b1565b60985460408051918252602082018390527f11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d5910160405180910390a1609855565b60008686868686866040516020016109a0969594939291906120cb565b6040516020818303038152906040528051906020012090509695505050505050565b600054610100900460ff16158080156109e25750600054600160ff909116105b806109fc5750303b1580156109fc575060005460ff166001145b610a5f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016108b1565b6000805460ff191660011790558015610a82576000805461ff0019166101001790555b334114610aa25760405163022d8c9560e31b815260040160405180910390fd5b3a15610ac1576040516383f1b1d360e01b815260040160405180910390fd5b6040805160018082528183019092526000916020808301908036833701905050905061200481600081518110610af957610af961213a565b60200260200101906001600160a01b031690816001600160a01b031681525050610b28603c82836120046115c8565b508015610b6f576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b600080516020612568833981519152610b8a816111ad565b888714610ba95760405162461bcd60e51b81526004016108b190612150565b888514610bc85760405162461bcd60e51b81526004016108b190612150565b6000610bda8b8b8b8b8b8b8b8b610f08565b9050610be681846111b7565b60005b8a811015610ca45780827f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8e8e85818110610c2657610c2661213a565b9050602002016020810190610c3b9190612193565b8d8d86818110610c4d57610c4d61213a565b905060200201358c8c87818110610c6657610c6661213a565b9050602002810190610c7891906121ae565b8c8b604051610c8c969594939291906120cb565b60405180910390a3610c9d8161220a565b9050610be9565b508315610ce657807f20fda5fd27a1ea7bf5b9567f143ac5470bb059374a27e8f67cb44f946f6d038785604051610cdd91815260200190565b60405180910390a25b5050505050505050505050565b60009182526065602090815260408084206001600160a01b0393909316845291905290205460ff1690565b3361100714610d4457604051630f22c43960e41b815261100760048201526024016108b1565b610da7604051806040016040528060088152602001676d696e44656c617960c01b81525085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506116019050565b15610ea45760208114610dd55783838383604051630a5a604160e01b81526004016108b19493929190612223565b604080516020601f8401819004810282018101909252828152600091610e1691858580838501838280828437600092019190915250929392505061165a9050565b9050801580610e2757506212750081115b15610e4d5784848484604051630a5a604160e01b81526004016108b19493929190612223565b6040516364d6235360e01b81526004810182905230906364d6235390602401600060405180830381600087803b158015610e8657600080fd5b505af1158015610e9a573d6000803e3d6000fd5b5050505050610ec5565b838383836040516325ee20d560e21b81526004016108b19493929190612223565b7ff1ce9b2cbf50eeb05769a29e2543fd350cab46894a7dd9978a12d534bb20e63384848484604051610efa9493929190612223565b60405180910390a150505050565b60008888888888888888604051602001610f299897969594939291906122d8565b60405160208183030381529060405280519060200120905098975050505050505050565b6000805160206125a8833981519152610f65816111ad565b610f6e826108c8565b610fd45760405162461bcd60e51b815260206004820152603160248201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e2063616044820152701b9b9bdd0818994818d85b98d95b1b1959607a1b60648201526084016108b1565b6000828152609760205260408082208290555183917fbaa1eb22f2a492ba1a5fea61b8df4d27c6c8b5f3971e63bb58fa14ff72eedb7091a25050565b60008281526065602052604090206001015461102b816111ad565b6108278383611561565b60008051602061258883398151915261104f816000610cf3565b61105d5761105d81336112db565b87861461107c5760405162461bcd60e51b81526004016108b190612150565b87841461109b5760405162461bcd60e51b81526004016108b190612150565b60006110ad8a8a8a8a8a8a8a8a610f08565b90506110b98185611334565b60005b898110156111975760008b8b838181106110d8576110d861213a565b90506020020160208101906110ed9190612193565b905060008a8a848181106111035761110361213a565b9050602002013590503660008a8a868181106111215761112161213a565b905060200281019061113391906121ae565b91509150611143848484846113cf565b84867fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b588686868660405161117a9493929190612108565b60405180910390a350505050806111909061220a565b90506110bc565b506111a1816114a2565b50505050505050505050565b610b6f81336112db565b6111c08261082c565b156112255760405162461bcd60e51b815260206004820152602f60248201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e20616c60448201526e1c9958591e481cd8da19591d5b1959608a1b60648201526084016108b1565b6098548110156112865760405162461bcd60e51b815260206004820152602660248201527f54696d656c6f636b436f6e74726f6c6c65723a20696e73756666696369656e746044820152652064656c617960d01b60648201526084016108b1565b6112908142612379565b6000928352609760205260409092209190915550565b60006001600160e01b03198216637965db0b60e01b148061073357506301ffc9a760e01b6001600160e01b0319831614610733565b6112e58282610cf3565b6108c4576112f28161165f565b6112fd836020611671565b60405160200161130e9291906123b0565b60408051601f198184030181529082905262461bcd60e51b82526108b191600401612425565b61133d826107dc565b6113595760405162461bcd60e51b81526004016108b190612458565b80158061137457506000818152609760205260409020546001145b6108c45760405162461bcd60e51b815260206004820152602660248201527f54696d656c6f636b436f6e74726f6c6c65723a206d697373696e6720646570656044820152656e64656e637960d01b60648201526084016108b1565b6000846001600160a01b03168484846040516113ec9291906124a2565b60006040518083038185875af1925050503d8060008114611429576040519150601f19603f3d011682016040523d82523d6000602084013e61142e565b606091505b505090508061149b5760405162461bcd60e51b815260206004820152603360248201527f54696d656c6f636b436f6e74726f6c6c65723a20756e6465726c79696e6720746044820152721c985b9cd858dd1a5bdb881c995d995c9d1959606a1b60648201526084016108b1565b5050505050565b6114ab816107dc565b6114c75760405162461bcd60e51b81526004016108b190612458565b600090815260976020526040902060019055565b6114e58282610cf3565b6108c45760008281526065602090815260408083206001600160a01b03851684529091529020805460ff1916600117905561151d3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b61156b8282610cf3565b156108c45760008281526065602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b600054610100900460ff166115ef5760405162461bcd60e51b81526004016108b1906124b2565b6115fb8484848461180c565b50505050565b60008160405160200161161491906124fd565b604051602081830303815290604052805190602001208360405160200161163b91906124fd565b6040516020818303038152906040528051906020012014905092915050565b015190565b60606107336001600160a01b03831660145b60606000611680836002612519565b61168b906002612379565b6001600160401b038111156116a2576116a2611bc6565b6040519080825280601f01601f1916602001820160405280156116cc576020820181803683370190505b509050600360fc1b816000815181106116e7576116e761213a565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106117165761171661213a565b60200101906001600160f81b031916908160001a905350600061173a846002612519565b611745906001612379565b90505b60018111156117bd576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106117795761177961213a565b1a60f81b82828151811061178f5761178f61213a565b60200101906001600160f81b031916908160001a90535060049490941c936117b681612530565b9050611748565b5083156107fb5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016108b1565b600054610100900460ff166118335760405162461bcd60e51b81526004016108b1906124b2565b61184b600080516020612548833981519152806119eb565b6118716000805160206125688339815191526000805160206125488339815191526119eb565b6118976000805160206125888339815191526000805160206125488339815191526119eb565b6118bd6000805160206125a88339815191526000805160206125488339815191526119eb565b6118d560008051602061254883398151915230611a36565b6001600160a01b038116156118fc576118fc60008051602061254883398151915282611a36565b60005b835181101561196d5761193960008051602061256883398151915285838151811061192c5761192c61213a565b6020026020010151611a36565b61195d6000805160206125a883398151915285838151811061192c5761192c61213a565b6119668161220a565b90506118ff565b5060005b82518110156119ae5761199e60008051602061258883398151915284838151811061192c5761192c61213a565b6119a78161220a565b9050611971565b5060988490556040805160008152602081018690527f11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d59101610efa565b600082815260656020526040808220600101805490849055905190918391839186917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a4505050565b6108c482826114db565b80356001600160a01b0381168114611a5757600080fd5b919050565b60008083601f840112611a6e57600080fd5b5081356001600160401b03811115611a8557600080fd5b602083019150836020828501011115611a9d57600080fd5b9250929050565b600080600080600080600060c0888a031215611abf57600080fd5b611ac888611a40565b96506020880135955060408801356001600160401b03811115611aea57600080fd5b611af68a828b01611a5c565b989b979a50986060810135976080820135975060a09091013595509350505050565b600060208284031215611b2a57600080fd5b81356001600160e01b0319811681146107fb57600080fd5b60008060008060008060a08789031215611b5b57600080fd5b611b6487611a40565b95506020870135945060408701356001600160401b03811115611b8657600080fd5b611b9289828a01611a5c565b979a9699509760608101359660809091013595509350505050565b600060208284031215611bbf57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715611c0457611c04611bc6565b604052919050565b600082601f830112611c1d57600080fd5b81356001600160401b03811115611c3657611c36611bc6565b611c49601f8201601f1916602001611bdc565b818152846020838601011115611c5e57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060808587031215611c9157600080fd5b611c9a85611a40565b9350611ca860208601611a40565b92506040850135915060608501356001600160401b03811115611cca57600080fd5b611cd687828801611c0c565b91505092959194509250565b60008060408385031215611cf557600080fd5b82359150611d0560208401611a40565b90509250929050565b60008083601f840112611d2057600080fd5b5081356001600160401b03811115611d3757600080fd5b6020830191508360208260051b8501011115611a9d57600080fd5b600080600080600080600080600060c08a8c031215611d7057600080fd5b89356001600160401b0380821115611d8757600080fd5b611d938d838e01611d0e565b909b50995060208c0135915080821115611dac57600080fd5b611db88d838e01611d0e565b909950975060408c0135915080821115611dd157600080fd5b50611dde8c828d01611d0e565b9a9d999c50979a969997986060880135976080810135975060a0013595509350505050565b60008060008060408587031215611e1957600080fd5b84356001600160401b0380821115611e3057600080fd5b611e3c88838901611a5c565b90965094506020870135915080821115611e5557600080fd5b50611e6287828801611a5c565b95989497509550505050565b60008060008060008060008060a0898b031215611e8a57600080fd5b88356001600160401b0380821115611ea157600080fd5b611ead8c838d01611d0e565b909a50985060208b0135915080821115611ec657600080fd5b611ed28c838d01611d0e565b909850965060408b0135915080821115611eeb57600080fd5b50611ef88b828c01611d0e565b999c989b509699959896976060870135966080013595509350505050565b600082601f830112611f2757600080fd5b813560206001600160401b03821115611f4257611f42611bc6565b8160051b611f51828201611bdc565b9283528481018201928281019087851115611f6b57600080fd5b83870192505b84831015611f8a57823582529183019190830190611f71565b979650505050505050565b600080600080600060a08688031215611fad57600080fd5b611fb686611a40565b9450611fc460208701611a40565b935060408601356001600160401b0380821115611fe057600080fd5b611fec89838a01611f16565b9450606088013591508082111561200257600080fd5b61200e89838a01611f16565b9350608088013591508082111561202457600080fd5b5061203188828901611c0c565b9150509295509295909350565b600080600080600060a0868803121561205657600080fd5b61205f86611a40565b945061206d60208701611a40565b9350604086013592506060860135915060808601356001600160401b0381111561209657600080fd5b61203188828901611c0c565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60018060a01b038716815285602082015260a0604082015260006120f360a0830186886120a2565b60608301949094525060800152949350505050565b60018060a01b03851681528360208201526060604082015260006121306060830184866120a2565b9695505050505050565b634e487b7160e01b600052603260045260246000fd5b60208082526023908201527f54696d656c6f636b436f6e74726f6c6c65723a206c656e677468206d69736d616040820152620e8c6d60eb1b606082015260800190565b6000602082840312156121a557600080fd5b6107fb82611a40565b6000808335601e198436030181126121c557600080fd5b8301803591506001600160401b038211156121df57600080fd5b602001915036819003821315611a9d57600080fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161221c5761221c6121f4565b5060010190565b6040815260006122376040830186886120a2565b8281036020840152611f8a8185876120a2565b818352600060208085019450848460051b86018460005b878110156122cb5783830389528135601e1988360301811261228257600080fd5b870185810190356001600160401b0381111561229d57600080fd5b8036038213156122ac57600080fd5b6122b78582846120a2565b9a87019a9450505090840190600101612261565b5090979650505050505050565b60a0808252810188905260008960c08301825b8b811015612319576001600160a01b0361230484611a40565b168252602092830192909101906001016122eb565b5083810360208501528881526001600160fb1b0389111561233957600080fd5b8860051b9150818a60208301370182810360209081016040850152612361908201878961224a565b60608401959095525050608001529695505050505050565b80820180821115610733576107336121f4565b60005b838110156123a757818101518382015260200161238f565b50506000910152565b7f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008152600083516123e881601785016020880161238c565b7001034b99036b4b9b9b4b733903937b6329607d1b601791840191820152835161241981602884016020880161238c565b01602801949350505050565b602081526000825180602084015261244481604085016020870161238c565b601f01601f19169190910160400192915050565b6020808252602a908201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e206973604082015269206e6f7420726561647960b01b606082015260800190565b8183823760009101908152919050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6000825161250f81846020870161238c565b9190910192915050565b8082028115828204841417610733576107336121f4565b60008161253f5761253f6121f4565b50600019019056fe5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca5b09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc1d8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e63fd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f783a164736f6c6343000811000a", }, { ContractAddr: common.HexToAddress(TokenRecoverPortalContract), - CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/1abdfbf3aeb86909c2220b79bf92b87ddff64b54", - Code: "608060405234801561001057600080fd5b50600436106100cf5760003560e01c80639fcb50121161008c578063de88700b11610066578063de88700b146101b2578063e33f8d32146101dd578063e842426a14610200578063f1fad1041461021357600080fd5b80639fcb50121461016f578063ac4317511461018c578063bfb5a6a11461019f57600080fd5b8063046f7da2146100d45780632eb4a7ab146100de5780634bf6c882146100fa578063572c99801461011457806374be2150146101275780638456cb5914610167575b600080fd5b6100dc61021b565b005b6100e760345481565b6040519081526020015b60405180910390f35b610102600881565b60405160ff90911681526020016100f1565b6100dc61012236600461125e565b61027e565b61015a6040518060400160405280601481526020017342696e616e63652d436861696e2d47616e67657360601b81525081565b6040516100f191906112be565b6100dc61030f565b60355461017c9060ff1681565b60405190151581526020016100f1565b6100dc61019a36600461133a565b610378565b6100dc6101ad3660046113eb565b6107a3565b6037546101c5906001600160a01b031681565b6040516001600160a01b0390911681526020016100f1565b61017c6101eb3660046114c5565b60009081526036602052604090205460ff1690565b6033546101c5906001600160a01b031681565b610102601181565b6037546001600160a01b031633146102465760405163f2771a9960e01b815260040160405180910390fd5b6037805460ff60a01b191690556040517f62451d457bc659158be6e6247f56ec1df424a5c7597f71c20c2bc44e0965c8f990600090a1565b6037546001600160a01b031633146102a95760405163f2771a9960e01b815260040160405180910390fd5b604051638525db0360e01b8152600481018390526001600160a01b038216602482015261100490638525db0390604401600060405180830381600087803b1580156102f357600080fd5b505af1158015610307573d6000803e3d6000fd5b505050505050565b6037546001600160a01b0316331461033a5760405163f2771a9960e01b815260040160405180910390fd5b6037805460ff60a01b1916600160a01b1790556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e75290600090a1565b33611007146103a357604051630f22c43960e41b815261100760048201526024015b60405180910390fd5b61040d6040518060400160405280600f81526020016e617070726f76616c4164647265737360881b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610ae59050565b156104d7576014811461043b5783838383604051630a5a604160e01b815260040161039a9493929190611507565b6000610481601484848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610b3f9050565b90506001600160a01b0381166104b25784848484604051630a5a604160e01b815260040161039a9493929190611507565b603380546001600160a01b0319166001600160a01b0392909216919091179055610760565b61053c6040518060400160405280600a8152602001691b595c9adb19549bdbdd60b21b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610ae59050565b1561060c5760355460ff1615610565576040516379b3306f60e11b815260040160405180910390fd5b6020811461058e5783838383604051630a5a604160e01b815260040161039a9493929190611507565b604080516020601f84018190048102820181019092528281526000916105cf918585808385018382808284376000920191909152509293925050610b3f9050565b9050806105f75784848484604051630a5a604160e01b815260040161039a9493929190611507565b6034556035805460ff19166001179055610760565b6106756040518060400160405280600e81526020016d30b9b9b2ba283937ba32b1ba37b960911b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610ae59050565b1561073f57601481146106a35783838383604051630a5a604160e01b815260040161039a9493929190611507565b60006106e9601484848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610b3f9050565b90506001600160a01b03811661071a5784848484604051630a5a604160e01b815260040161039a9493929190611507565b603780546001600160a01b0319166001600160a01b0392909216919091179055610760565b838383836040516325ee20d560e21b815260040161039a9493929190611507565b7ff1ce9b2cbf50eeb05769a29e2543fd350cab46894a7dd9978a12d534bb20e633848484846040516107959493929190611507565b60405180910390a150505050565b60355460ff166107c657604051635740729760e01b815260040160405180910390fd5b6034546107e657604051635740729760e01b815260040160405180910390fd5b603754600160a01b900460ff16156108115760405163c629ac8160e01b815260040160405180910390fd5b610819610b44565b60006108a789898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8d018190048102820181019092528b815292508b91508a9081908401838280828437600081840152601f19601f820116905080830192505050505050506108a28e8e33610b9d565b610cbe565b90506000818c8c6040516020016108c093929190611539565b6040516020818303038152906040528051906020012090506108f18160009081526036602052604090205460ff1690565b1561090e57604051623e493160e81b815260040160405180910390fd5b6109b63389898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8d018190048102820181019092528b815292508b91508a908190840183828082843760009201919091525050604080516020808c0282810182019093528b82528994509092508b918b91829190850190849080828437600092019190915250610d9692505050565b6109f7848480806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250506034549150849050610ea1565b610a14576040516309bde33960e01b815260040160405180910390fd5b60008181526036602052604090819020805460ff191660011790555163799758b960e01b8152600481018d9052336024820152604481018c90526110049063799758b990606401600060405180830381600087803b158015610a7557600080fd5b505af1158015610a89573d6000803e3d6000fd5b5050604080518f81523360208201529081018e90527f717c40d7a8dbe67bb6371e964c24423645711d1624980e1c74e6956fc21088059250606001905060405180910390a15050610ad960018055565b50505050505050505050565b600081604051602001610af89190611560565b6040516020818303038152906040528051906020012083604051602001610b1f9190611560565b604051602081830303815290604052805190602001201490505b92915050565b015190565b600260015403610b965760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161039a565b6002600155565b600060026040518060400160405280601481526020017342696e616e63652d436861696e2d47616e67657360601b815250610bfa85604051602001610be491815260200190565b6040516020818303038152906040526000610eb7565b6040516bffffffffffffffffffffffff19606087901b166020820152610c33906034016040516020818303038152906040526001610eb7565b610c4988604051602001610be491815260200190565b604051602001610c5c949392919061157c565b60408051601f1981840301815290829052610c7691611560565b602060405180830381855afa158015610c93573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610cb691906116ab565b949350505050565b60608351602114610ce257604051638152ea1b60e01b815260040160405180910390fd5b8251604014610d0457604051635e4bd79760e11b815260040160405180910390fd5b6040805160208082528183019092526000916020820181803683370190505090508260208201526000858583604051602001610d42939291906116da565b60408051808303601f190181526014808452838301909252925060009190602082018180368337019050509050815160146020830182602086016069600019fa610d8b57600080fd5b509695505050505050565b606060005b8251811015610df45781838281518110610db757610db761171d565b6020026020010151604051602001610dd0929190611733565b60405160208183030381529060405291508080610dec9061176b565b915050610d9b565b5060006040518060400160405280601481526020017342696e616e63652d436861696e2d47616e67657360601b81525087878660345486604051602001610e4096959493929190611784565b60408051601f1981840301815291905280516020909101206033549091506001600160a01b0316610e718683611089565b6001600160a01b031614610e98576040516356b00a4f60e11b815260040160405180910390fd5b50505050505050565b600082610eae8584611123565b14949350505050565b6060600083516002610ec991906117f5565b67ffffffffffffffff811115610ee157610ee16116c4565b6040519080825280601f01601f191660200182016040528015610f0b576020820181803683370190505b5060408051808201909152601081526f181899199a1a9b1b9c1cb0b131b232b360811b602082015290915060005b855181101561105157818251878381518110610f5757610f5761171d565b0160200151610f69919060f81c611822565b81518110610f7957610f7961171d565b01602001516001600160f81b03191683610f948360026117f5565b81518110610fa457610fa461171d565b60200101906001600160f81b031916908160001a905350818251878381518110610fd057610fd061171d565b0160200151610fe2919060f81c611836565b81518110610ff257610ff261171d565b01602001516001600160f81b0319168361100d8360026117f5565b61101890600161184a565b815181106110285761102861171d565b60200101906001600160f81b031916908160001a905350806110498161176b565b915050610f39565b5083156110815781604051602001611069919061185d565b60405160208183030381529060405292505050610b39565b509392505050565b600082516041146110ad576040516356b00a4f60e11b815260040160405180910390fd5b60208301516040840151606085015160001a601b8110156110d6576110d3601b82611887565b90505b601b8160ff1610806110eb5750601c8160ff16115b15611109576040516356b00a4f60e11b815260040160405180910390fd5b600061111786838686611168565b50979650505050505050565b600081815b845181101561108157611154828683815181106111475761114761171d565b602002602001015161122c565b9150806111608161176b565b915050611128565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561119f5750600090506003611223565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156111f3573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661121c57600060019250925050611223565b9150600090505b94509492505050565b6000818310611248576000828152602084905260409020611257565b60008381526020839052604090205b9392505050565b6000806040838503121561127157600080fd5b8235915060208301356001600160a01b038116811461128f57600080fd5b809150509250929050565b60005b838110156112b557818101518382015260200161129d565b50506000910152565b60208152600082518060208401526112dd81604085016020870161129a565b601f01601f19169190910160400192915050565b60008083601f84011261130357600080fd5b50813567ffffffffffffffff81111561131b57600080fd5b60208301915083602082850101111561133357600080fd5b9250929050565b6000806000806040858703121561135057600080fd5b843567ffffffffffffffff8082111561136857600080fd5b611374888389016112f1565b9096509450602087013591508082111561138d57600080fd5b5061139a878288016112f1565b95989497509550505050565b60008083601f8401126113b857600080fd5b50813567ffffffffffffffff8111156113d057600080fd5b6020830191508360208260051b850101111561133357600080fd5b60008060008060008060008060008060c08b8d03121561140a57600080fd5b8a35995060208b0135985060408b013567ffffffffffffffff8082111561143057600080fd5b61143c8e838f016112f1565b909a50985060608d013591508082111561145557600080fd5b6114618e838f016112f1565b909850965060808d013591508082111561147a57600080fd5b6114868e838f016112f1565b909650945060a08d013591508082111561149f57600080fd5b506114ac8d828e016113a6565b915080935050809150509295989b9194979a5092959850565b6000602082840312156114d757600080fd5b5035919050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60408152600061151b6040830186886114de565b828103602084015261152e8185876114de565b979650505050505050565b6000845161154b81846020890161129a565b91909101928352506020820152604001919050565b6000825161157281846020870161129a565b9190910192915050565b7f7b226163636f756e745f6e756d626572223a2230222c22636861696e5f6964228152611d1160f11b6020820152600085516115bf816022850160208a0161129a565b7f222c2264617461223a6e756c6c2c226d656d6f223a22222c226d736773223a5b6022918401918201526a3d9130b6b7bab73a111d1160a91b6042820152855161161081604d840160208a0161129a565b6e1116113932b1b4b834b2b73a111d1160891b604d9290910191820152845161164081605c84016020890161129a565b711116113a37b5b2b72fb9bcb6b137b6111d1160711b605c9290910191820152835161167381606e84016020880161129a565b7f227d5d2c2273657175656e6365223a2230222c22736f75726365223a2230227d606e9290910191820152608e019695505050505050565b6000602082840312156116bd57600080fd5b5051919050565b634e487b7160e01b600052604160045260246000fd5b600084516116ec81846020890161129a565b84519083019061170081836020890161129a565b845191019061171381836020880161129a565b0195945050505050565b634e487b7160e01b600052603260045260246000fd5b6000835161174581846020880161129a565b9190910191825250602001919050565b634e487b7160e01b600052601160045260246000fd5b60006001820161177d5761177d611755565b5060010190565b60008751611796818460208c0161129a565b606088901b6bffffffffffffffffffffffff191690830190815286516117c3816014840160208b0161129a565b01601481018690526034810185905283516117e581605484016020880161129a565b0160540198975050505050505050565b8082028115828204841417610b3957610b39611755565b634e487b7160e01b600052601260045260246000fd5b6000826118315761183161180c565b500490565b6000826118455761184561180c565b500690565b80820180821115610b3957610b39611755565b61060f60f31b81526000825161187a81600285016020870161129a565b9190910160020192915050565b60ff8181168382160190811115610b3957610b3961175556fea164736f6c6343000811000a", + CommitUrl: "https://github.com/bnb-chain/bsc-genesis-contract/commit/9d09d0a3d6332460a810188261ec8195e05aa218", + Code: "608060405234801561001057600080fd5b506004361061010b5760003560e01c80638129fc1c116100a2578063b187bd2611610071578063b187bd261461022c578063bfb5a6a114610237578063e33f8d321461024a578063e842426a1461026d578063f1fad1041461029857600080fd5b80638129fc1c146101fc5780638456cb59146102045780639fcb50121461020c578063ac4317511461021957600080fd5b80634a49ac4c116100de5780634a49ac4c1461017c5780634bf6c8821461018f578063572c9980146101a957806374be2150146101bc57600080fd5b8063046f7da2146101105780632eb4a7ab1461011a578063417c73a7146101365780634838d16514610149575b600080fd5b6101186102a0565b005b61012360685481565b6040519081526020015b60405180910390f35b610118610144366004611696565b610328565b61016c610157366004611696565b60346020526000908152604090205460ff1681565b604051901515815260200161012d565b61011861018a366004611696565b6103a4565b610197600881565b60405160ff909116815260200161012d565b6101186101b73660046116b1565b61041d565b6101ef6040518060400160405280601481526020017342696e616e63652d436861696e2d47616e67657360601b81525081565b60405161012d919061172d565b6101186104b3565b610118610613565b60695461016c9060ff1681565b610118610227366004611789565b61069f565b60335460ff1661016c565b61011861024536600461183a565b610abe565b61016c610258366004611914565b6000908152606a602052604090205460ff1690565b606754610280906001600160a01b031681565b6040516001600160a01b03909116815260200161012d565b610197601181565b60335461010090046001600160a01b031633146102d0576040516306fbb1e360e01b815260040160405180910390fd5b60335460ff166102f357604051636cd6020160e01b815260040160405180910390fd5b6033805460ff191690556040517f62451d457bc659158be6e6247f56ec1df424a5c7597f71c20c2bc44e0965c8f990600090a1565b60335461010090046001600160a01b03163314610358576040516306fbb1e360e01b815260040160405180910390fd5b6001600160a01b038116600081815260346020526040808220805460ff19166001179055517f7fd26be6fc92aff63f1f4409b2b2ddeb272a888031d7f55ec830485ec61941869190a250565b60335461010090046001600160a01b031633146103d4576040516306fbb1e360e01b815260040160405180910390fd5b6001600160a01b038116600081815260346020526040808220805460ff19169055517fe0db3499b7fdc3da4cddff5f45d694549c19835e7f719fb5606d3ad1a5de40119190a250565b60335461010090046001600160a01b0316331461044d576040516306fbb1e360e01b815260040160405180910390fd5b604051638525db0360e01b8152600481018390526001600160a01b038216602482015261100490638525db0390604401600060405180830381600087803b15801561049757600080fd5b505af11580156104ab573d6000803e3d6000fd5b505050505050565b600054610100900460ff16158080156104d35750600054600160ff909116105b806104ed5750303b1580156104ed575060005460ff166001145b6105555760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff191660011790558015610578576000805461ff0019166101001790555b3341146105985760405163022d8c9560e31b815260040160405180910390fd5b3a156105b7576040516383f1b1d360e01b815260040160405180910390fd5b6105bf610e1e565b6105ca61dead610e4b565b8015610610576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b60335461010090046001600160a01b03163314610643576040516306fbb1e360e01b815260040160405180910390fd5b60335460ff161561066757604051631785c68160e01b815260040160405180910390fd5b6033805460ff191660011790556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e75290600090a1565b33611007146106c557604051630f22c43960e41b8152611007600482015260240161054c565b61072f6040518060400160405280600f81526020016e617070726f76616c4164647265737360881b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610e9a9050565b156107f9576014811461075d5783838383604051630a5a604160e01b815260040161054c9493929190611956565b60006107a3601484848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610ef49050565b90506001600160a01b0381166107d45784848484604051630a5a604160e01b815260040161054c9493929190611956565b606780546001600160a01b0319166001600160a01b0392909216919091179055610a7b565b61085e6040518060400160405280600a8152602001691b595c9adb19549bdbdd60b21b81525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610e9a9050565b1561092e5760695460ff1615610887576040516379b3306f60e11b815260040160405180910390fd5b602081146108b05783838383604051630a5a604160e01b815260040161054c9493929190611956565b604080516020601f84018190048102820181019092528281526000916108f1918585808385018382808284376000920191909152509293925050610ef49050565b9050806109195784848484604051630a5a604160e01b815260040161054c9493929190611956565b6068556069805460ff19166001179055610a7b565b6109a66040518060400160405280601b81526020017f746f6b656e5265636f766572506f7274616c50726f746563746f72000000000081525085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610e9a9050565b15610a5a57601481146109d45783838383604051630a5a604160e01b815260040161054c9493929190611956565b6000610a1a601484848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050610ef49050565b90506001600160a01b038116610a4b5784848484604051630a5a604160e01b815260040161054c9493929190611956565b610a5481610ef9565b50610a7b565b838383836040516325ee20d560e21b815260040161054c9493929190611956565b7ff1ce9b2cbf50eeb05769a29e2543fd350cab46894a7dd9978a12d534bb20e63384848484604051610ab09493929190611956565b60405180910390a150505050565b60695460ff16610ae15760405163678f619760e11b815260040160405180910390fd5b606854610b015760405163678f619760e11b815260040160405180910390fd5b6067546001600160a01b0316610b2a57604051631a1b977b60e31b815260040160405180910390fd5b60335460ff1615610b4e57604051631785c68160e01b815260040160405180910390fd5b610b56610f60565b6000610be489898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8d018190048102820181019092528b815292508b91508a9081908401838280828437600081840152601f19601f82011690508083019250505050505050610bdf8e8e33610fb9565b6110da565b90506000818c8c604051602001610bfd93929190611988565b604051602081830303815290604052805190602001209050610c2e816000908152606a602052604090205460ff1690565b15610c4b57604051623e493160e81b815260040160405180910390fd5b610cf33389898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8d018190048102820181019092528b815292508b91508a908190840183828082843760009201919091525050604080516020808c0282810182019093528b82528994509092508b918b918291908501908490808284376000920191909152506111b292505050565b610d348484808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152505060685491508490506112bd565b610d51576040516309bde33960e01b815260040160405180910390fd5b6000818152606a602052604090819020805460ff191660011790555163799758b960e01b8152600481018d9052336024820152604481018c90526110049063799758b990606401600060405180830381600087803b158015610db257600080fd5b505af1158015610dc6573d6000803e3d6000fd5b505050507f39cc0b7297a0ef9102d75ebc4919ffec0347d50008c2b865eda4125d5812cb64828d338e604051610dff94939291906119af565b60405180910390a15050610e1260018055565b50505050505050505050565b600054610100900460ff16610e455760405162461bcd60e51b815260040161054c906119e7565b60018055565b600054610100900460ff16610e725760405162461bcd60e51b815260040161054c906119e7565b603380546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b600081604051602001610ead9190611a32565b6040516020818303038152906040528051906020012083604051602001610ed49190611a32565b604051602081830303815290604052805190602001201490505b92915050565b015190565b6033546040516001600160a01b0380841692610100900416907f44fc1b38a4abaa91ebd1b628a5b259a698f86238c8217d68f516e87769c60c0b90600090a3603380546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b600260015403610fb25760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161054c565b6002600155565b600060026040518060400160405280601481526020017342696e616e63652d436861696e2d47616e67657360601b8152506110168560405160200161100091815260200190565b60405160208183030381529060405260006112d3565b6040516bffffffffffffffffffffffff19606087901b16602082015261104f9060340160405160208183030381529060405260016112d3565b6110658860405160200161100091815260200190565b6040516020016110789493929190611a4e565b60408051601f198184030181529082905261109291611a32565b602060405180830381855afa1580156110af573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906110d29190611b7d565b949350505050565b606083516021146110fe57604051638152ea1b60e01b815260040160405180910390fd5b825160401461112057604051635e4bd79760e11b815260040160405180910390fd5b604080516020808252818301909252600091602082018180368337019050509050826020820152600085858360405160200161115e93929190611bac565b60408051808303601f190181526014808452838301909252925060009190602082018180368337019050509050815160146020830182602086016069600019fa6111a757600080fd5b509695505050505050565b606060005b825181101561121057818382815181106111d3576111d3611bef565b60200260200101516040516020016111ec929190611c05565b6040516020818303038152906040529150808061120890611c3d565b9150506111b7565b5060006040518060400160405280601481526020017342696e616e63652d436861696e2d47616e67657360601b8152508787866068548660405160200161125c96959493929190611c56565b60408051601f1981840301815291905280516020909101206067549091506001600160a01b031661128d86836114a5565b6001600160a01b0316146112b4576040516356b00a4f60e11b815260040160405180910390fd5b50505050505050565b6000826112ca858461153f565b14949350505050565b60606000835160026112e59190611cc7565b67ffffffffffffffff8111156112fd576112fd611b96565b6040519080825280601f01601f191660200182016040528015611327576020820181803683370190505b5060408051808201909152601081526f181899199a1a9b1b9c1cb0b131b232b360811b602082015290915060005b855181101561146d5781825187838151811061137357611373611bef565b0160200151611385919060f81c611cf4565b8151811061139557611395611bef565b01602001516001600160f81b031916836113b0836002611cc7565b815181106113c0576113c0611bef565b60200101906001600160f81b031916908160001a9053508182518783815181106113ec576113ec611bef565b01602001516113fe919060f81c611d08565b8151811061140e5761140e611bef565b01602001516001600160f81b03191683611429836002611cc7565b611434906001611d1c565b8151811061144457611444611bef565b60200101906001600160f81b031916908160001a9053508061146581611c3d565b915050611355565b50831561149d57816040516020016114859190611d2f565b60405160208183030381529060405292505050610eee565b509392505050565b600082516041146114c9576040516356b00a4f60e11b815260040160405180910390fd5b60208301516040840151606085015160001a601b8110156114f2576114ef601b82611d59565b90505b601b8160ff1610806115075750601c8160ff16115b15611525576040516356b00a4f60e11b815260040160405180910390fd5b600061153386838686611584565b50979650505050505050565b600081815b845181101561149d576115708286838151811061156357611563611bef565b6020026020010151611648565b91508061157c81611c3d565b915050611544565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156115bb575060009050600361163f565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa15801561160f573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166116385760006001925092505061163f565b9150600090505b94509492505050565b6000818310611664576000828152602084905260409020611673565b60008381526020839052604090205b9392505050565b80356001600160a01b038116811461169157600080fd5b919050565b6000602082840312156116a857600080fd5b6116738261167a565b600080604083850312156116c457600080fd5b823591506116d46020840161167a565b90509250929050565b60005b838110156116f85781810151838201526020016116e0565b50506000910152565b600081518084526117198160208601602086016116dd565b601f01601f19169290920160200192915050565b6020815260006116736020830184611701565b60008083601f84011261175257600080fd5b50813567ffffffffffffffff81111561176a57600080fd5b60208301915083602082850101111561178257600080fd5b9250929050565b6000806000806040858703121561179f57600080fd5b843567ffffffffffffffff808211156117b757600080fd5b6117c388838901611740565b909650945060208701359150808211156117dc57600080fd5b506117e987828801611740565b95989497509550505050565b60008083601f84011261180757600080fd5b50813567ffffffffffffffff81111561181f57600080fd5b6020830191508360208260051b850101111561178257600080fd5b60008060008060008060008060008060c08b8d03121561185957600080fd5b8a35995060208b0135985060408b013567ffffffffffffffff8082111561187f57600080fd5b61188b8e838f01611740565b909a50985060608d01359150808211156118a457600080fd5b6118b08e838f01611740565b909850965060808d01359150808211156118c957600080fd5b6118d58e838f01611740565b909650945060a08d01359150808211156118ee57600080fd5b506118fb8d828e016117f5565b915080935050809150509295989b9194979a5092959850565b60006020828403121561192657600080fd5b5035919050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60408152600061196a60408301868861192d565b828103602084015261197d81858761192d565b979650505050505050565b6000845161199a8184602089016116dd565b91909101928352506020820152604001919050565b6080815260006119c26080830187611701565b6020830195909552506001600160a01b03929092166040830152606090910152919050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60008251611a448184602087016116dd565b9190910192915050565b7f7b226163636f756e745f6e756d626572223a2230222c22636861696e5f6964228152611d1160f11b602082015260008551611a91816022850160208a016116dd565b7f222c2264617461223a6e756c6c2c226d656d6f223a22222c226d736773223a5b6022918401918201526a3d9130b6b7bab73a111d1160a91b60428201528551611ae281604d840160208a016116dd565b6e1116113932b1b4b834b2b73a111d1160891b604d92909101918201528451611b1281605c8401602089016116dd565b711116113a37b5b2b72fb9bcb6b137b6111d1160711b605c92909101918201528351611b4581606e8401602088016116dd565b7f227d5d2c2273657175656e6365223a2230222c22736f75726365223a2230227d606e9290910191820152608e019695505050505050565b600060208284031215611b8f57600080fd5b5051919050565b634e487b7160e01b600052604160045260246000fd5b60008451611bbe8184602089016116dd565b845190830190611bd28183602089016116dd565b8451910190611be58183602088016116dd565b0195945050505050565b634e487b7160e01b600052603260045260246000fd5b60008351611c178184602088016116dd565b9190910191825250602001919050565b634e487b7160e01b600052601160045260246000fd5b600060018201611c4f57611c4f611c27565b5060010190565b60008751611c68818460208c016116dd565b606088901b6bffffffffffffffffffffffff19169083019081528651611c95816014840160208b016116dd565b0160148101869052603481018590528351611cb78160548401602088016116dd565b0160540198975050505050505050565b8082028115828204841417610eee57610eee611c27565b634e487b7160e01b600052601260045260246000fd5b600082611d0357611d03611cde565b500490565b600082611d1757611d17611cde565b500690565b80820180821115610eee57610eee611c27565b61060f60f31b815260008251611d4c8160028501602087016116dd565b9190910160020192915050565b60ff8181168382160190811115610eee57610eee611c2756fea164736f6c6343000811000a", }, }, } diff --git a/params/config.go b/params/config.go index b6a63b3ff3..d7ae179868 100644 --- a/params/config.go +++ b/params/config.go @@ -186,9 +186,7 @@ var ( // UnixTime: 1702972800 is December 19, 2023 8:00:00 AM UTC ShanghaiTime: newUint64(1702972800), KeplerTime: newUint64(1702972800), - - // TODO - FeynmanTime: nil, + FeynmanTime: newUint64(1710136800), Parlia: &ParliaConfig{ Period: 3,